Merge branch 'main' of https://gitee.com/doan-tech/shanghaigangxiangtuzhuangMES
This commit is contained in:
@@ -10,6 +10,8 @@ namespace ZR.Model.mes.carouselBoard
|
|||||||
{
|
{
|
||||||
public string Text { get; set; } = string.Empty;
|
public string Text { get; set; } = string.Empty;
|
||||||
public string SubText { get; set; } = string.Empty;
|
public string SubText { get; set; } = string.Empty;
|
||||||
|
public DateTime? StartTime { get; set; }
|
||||||
|
public DateTime? EndTime { get; set; }
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|||||||
@@ -124,14 +124,27 @@ namespace ZR.Service.MES.carouselBoard
|
|||||||
|
|
||||||
public List<QualityStatisticsCarouseDto> GetQualityStatisticsCarouselBoardData(CarouselBoardQuery query)
|
public List<QualityStatisticsCarouseDto> GetQualityStatisticsCarouselBoardData(CarouselBoardQuery query)
|
||||||
{
|
{
|
||||||
// 获取今日日期
|
// 确定查询时间范围
|
||||||
DateTime today = DateTime.Today;
|
DateTime startTime, endTime;
|
||||||
DateTime tomorrow = today.AddDays(1);
|
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
|
List<QualityStatisticsCarouseDto> qualityStatistics = Context
|
||||||
.Queryable<QcQualityStatisticsFirst>()
|
.Queryable<QcQualityStatisticsFirst>()
|
||||||
.Where(it => it.Remark2 == 1) // 只获取有效的记录
|
.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
|
.Select(it => new QualityStatisticsCarouseDto
|
||||||
{
|
{
|
||||||
Id = it.Id, // id
|
Id = it.Id, // id
|
||||||
@@ -155,30 +168,80 @@ namespace ZR.Service.MES.carouselBoard
|
|||||||
|
|
||||||
public List<WorkOrderCarouseDto> GetWorkOrderCarouselBoardData(CarouselBoardQuery query)
|
public List<WorkOrderCarouseDto> GetWorkOrderCarouselBoardData(CarouselBoardQuery query)
|
||||||
{
|
{
|
||||||
// 获取当前日期信息
|
// 查询条件构建
|
||||||
DateTime now = DateTime.Now;
|
var queryable = Context.Queryable<ProWorkorder_v2>()
|
||||||
int currentYear = now.Year;
|
.Where(it => it.Remark3 == "是"); // 只获取有效的工单
|
||||||
|
|
||||||
// 计算当前是本年的第几周(周一为一周的开始)
|
if (query != null && query.StartTime.HasValue && query.EndTime.HasValue)
|
||||||
int currentWeek = CultureInfo.InvariantCulture.Calendar.GetWeekOfYear(
|
|
||||||
now,
|
|
||||||
CalendarWeekRule.FirstFourDayWeek,
|
|
||||||
DayOfWeek.Monday
|
|
||||||
);
|
|
||||||
|
|
||||||
// 计算当前是星期几(1-7,周一=1,周日=7)
|
|
||||||
int currentDay = (int)now.DayOfWeek;
|
|
||||||
if (currentDay == 0) // 如果是周日
|
|
||||||
{
|
{
|
||||||
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
|
List<WorkOrderCarouseDto> workorders = queryable
|
||||||
.Queryable<ProWorkorder_v2>()
|
|
||||||
.Where(it => it.Remark3 == "是") // 只获取有效的工单
|
|
||||||
.Where(it => it.Year == currentYear) // 筛选当前年份
|
|
||||||
.Where(it => it.Week == currentWeek) // 筛选当前周
|
|
||||||
.Where(it => it.Date == currentDay) // 筛选当前日
|
|
||||||
.OrderBy(it => it.Sort) // 按序号排序
|
.OrderBy(it => it.Sort) // 按序号排序
|
||||||
.Select(it => new WorkOrderCarouseDto
|
.Select(it => new WorkOrderCarouseDto
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user