Merge branch 'main' of https://gitee.com/doan-tech/shanghaigangxiangtuzhuangMES
This commit is contained in:
@@ -124,14 +124,27 @@ namespace ZR.Service.MES.carouselBoard
|
||||
|
||||
public List<QualityStatisticsCarouseDto> GetQualityStatisticsCarouselBoardData(CarouselBoardQuery query)
|
||||
{
|
||||
// 获取今日日期
|
||||
DateTime today = DateTime.Today;
|
||||
DateTime tomorrow = today.AddDays(1);
|
||||
// 确定查询时间范围
|
||||
DateTime startTime, endTime;
|
||||
if (query != null && query.StartTime.HasValue && query.EndTime.HasValue)
|
||||
{
|
||||
// 使用传入的时间范围
|
||||
startTime = query.StartTime.Value;
|
||||
endTime = query.EndTime.Value;
|
||||
}
|
||||
else
|
||||
{
|
||||
// 默认使用前一天和当天的数据
|
||||
DateTime yesterday = DateTime.Today.AddDays(-1);
|
||||
DateTime todayEnd = DateTime.Today.AddDays(1).AddMilliseconds(-1);
|
||||
startTime = yesterday;
|
||||
endTime = todayEnd;
|
||||
}
|
||||
|
||||
List<QualityStatisticsCarouseDto> qualityStatistics = Context
|
||||
.Queryable<QcQualityStatisticsFirst>()
|
||||
.Where(it => it.Remark2 == 1) // 只获取有效的记录
|
||||
.Where(it => it.StartTime >= today && it.StartTime < tomorrow) // 筛选今日内的数据
|
||||
.Where(it => it.StartTime >= startTime && it.StartTime <= endTime) // 筛选时间范围内的数据
|
||||
.Select(it => new QualityStatisticsCarouseDto
|
||||
{
|
||||
Id = it.Id, // id
|
||||
@@ -155,30 +168,80 @@ namespace ZR.Service.MES.carouselBoard
|
||||
|
||||
public List<WorkOrderCarouseDto> GetWorkOrderCarouselBoardData(CarouselBoardQuery query)
|
||||
{
|
||||
// 获取当前日期信息
|
||||
DateTime now = DateTime.Now;
|
||||
int currentYear = now.Year;
|
||||
|
||||
// 计算当前是本年的第几周(周一为一周的开始)
|
||||
int currentWeek = CultureInfo.InvariantCulture.Calendar.GetWeekOfYear(
|
||||
now,
|
||||
CalendarWeekRule.FirstFourDayWeek,
|
||||
DayOfWeek.Monday
|
||||
);
|
||||
|
||||
// 计算当前是星期几(1-7,周一=1,周日=7)
|
||||
int currentDay = (int)now.DayOfWeek;
|
||||
if (currentDay == 0) // 如果是周日
|
||||
// 查询条件构建
|
||||
var queryable = Context.Queryable<ProWorkorder_v2>()
|
||||
.Where(it => it.Remark3 == "是"); // 只获取有效的工单
|
||||
|
||||
if (query != null && query.StartTime.HasValue && query.EndTime.HasValue)
|
||||
{
|
||||
currentDay = 7;
|
||||
// 使用传入的时间范围进行查询
|
||||
// 由于工单曲线上使用Year、Week、Date存储日期,需要进行转换处理
|
||||
// 这里假设工单曲线上的Year、Week、Date组合可以映射到具体日期
|
||||
|
||||
// 找出时间范围内的所有日期
|
||||
var dateRange = new List<DateTime>();
|
||||
DateTime currentDate = query.StartTime.Value.Date;
|
||||
DateTime endDate = query.EndTime.Value.Date;
|
||||
|
||||
while (currentDate <= endDate)
|
||||
{
|
||||
dateRange.Add(currentDate);
|
||||
currentDate = currentDate.AddDays(1);
|
||||
}
|
||||
|
||||
// 构建日期条件
|
||||
var yearWeekDayConditions = dateRange.Select(date => new
|
||||
{
|
||||
Year = date.Year,
|
||||
Week = CultureInfo.InvariantCulture.Calendar.GetWeekOfYear(
|
||||
date,
|
||||
CalendarWeekRule.FirstFourDayWeek,
|
||||
DayOfWeek.Monday
|
||||
),
|
||||
Day = ((int)date.DayOfWeek == 0) ? 7 : (int)date.DayOfWeek
|
||||
}).ToList();
|
||||
|
||||
// 使用OR条件连接不同日期的工单
|
||||
var conditions = Expressionable.Create<ProWorkorder_v2>();
|
||||
foreach (var yw in yearWeekDayConditions)
|
||||
{
|
||||
conditions.Or(it => it.Year == yw.Year && it.Week == yw.Week && it.Date == yw.Day);
|
||||
}
|
||||
|
||||
queryable = queryable.Where(conditions.ToExpression());
|
||||
}
|
||||
else
|
||||
{
|
||||
// 默认使用前一天和当天的数据
|
||||
DateTime yesterday = DateTime.Today.AddDays(-1);
|
||||
DateTime today = DateTime.Today;
|
||||
|
||||
// 计算昨天的年、周、日信息
|
||||
int yesterdayYear = yesterday.Year;
|
||||
int yesterdayWeek = CultureInfo.InvariantCulture.Calendar.GetWeekOfYear(
|
||||
yesterday,
|
||||
CalendarWeekRule.FirstFourDayWeek,
|
||||
DayOfWeek.Monday
|
||||
);
|
||||
int yesterdayDay = ((int)yesterday.DayOfWeek == 0) ? 7 : (int)yesterday.DayOfWeek;
|
||||
|
||||
// 计算今天的年、周、日信息
|
||||
int todayYear = today.Year;
|
||||
int todayWeek = CultureInfo.InvariantCulture.Calendar.GetWeekOfYear(
|
||||
today,
|
||||
CalendarWeekRule.FirstFourDayWeek,
|
||||
DayOfWeek.Monday
|
||||
);
|
||||
int todayDay = ((int)today.DayOfWeek == 0) ? 7 : (int)today.DayOfWeek;
|
||||
|
||||
// 使用OR条件查询昨天和今天的工单
|
||||
queryable = queryable.Where(it =>
|
||||
(it.Year == yesterdayYear && it.Week == yesterdayWeek && it.Date == yesterdayDay) ||
|
||||
(it.Year == todayYear && it.Week == todayWeek && it.Date == todayDay)
|
||||
);
|
||||
}
|
||||
|
||||
List<WorkOrderCarouseDto> workorders = Context
|
||||
.Queryable<ProWorkorder_v2>()
|
||||
.Where(it => it.Remark3 == "是") // 只获取有效的工单
|
||||
.Where(it => it.Year == currentYear) // 筛选当前年份
|
||||
.Where(it => it.Week == currentWeek) // 筛选当前周
|
||||
.Where(it => it.Date == currentDay) // 筛选当前日
|
||||
List<WorkOrderCarouseDto> workorders = queryable
|
||||
.OrderBy(it => it.Sort) // 按序号排序
|
||||
.Select(it => new WorkOrderCarouseDto
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user