| | |
| | | } |
| | | else |
| | | { |
| | | // 有报工记录,初始采集数为上一次报工时间后最近一条齿轮数采表的采集数量 |
| | | // 1. 精确匹配报工时间 |
| | | var exactMatch = numericalList |
| | | // 有报工记录,初始采集数为报工时间点前(含)最近一条齿轮数采表的采集数量 |
| | | var beforeOrEqualReportNum = numericalList |
| | | .Select(x => new { Item = x, ParsedTime = DateTime.TryParse(x.CjTiem, out var dt) ? dt : (DateTime?)null }) |
| | | .Where(x => x.ParsedTime.HasValue && x.ParsedTime.Value == lastReport.BgDate.Value) |
| | | .OrderBy(x => x.ParsedTime) |
| | | .Where(x => x.ParsedTime.HasValue && x.ParsedTime.Value <= lastReport.BgDate.Value) |
| | | .OrderByDescending(x => x.ParsedTime) // 降序,取第一条 |
| | | .Select(x => x.Item) |
| | | .FirstOrDefault(); |
| | | |
| | | if (exactMatch != null) |
| | | { |
| | | vOrderBycl.InitCjNum = exactMatch.CjNum ?? vOrderBycl.StartCjNum; |
| | | } |
| | | else |
| | | { |
| | | // 2. 找报工时间之后的第一条(采集时间升序,取第一条) |
| | | var afterReportNum = numericalList |
| | | .Select(x => new { Item = x, ParsedTime = DateTime.TryParse(x.CjTiem, out var dt) ? dt : (DateTime?)null }) |
| | | .Where(x => x.ParsedTime.HasValue && x.ParsedTime.Value > lastReport.BgDate.Value) |
| | | .OrderBy(x => x.ParsedTime) // 升序,取第一条 |
| | | .Select(x => x.Item) |
| | | .FirstOrDefault(); |
| | | |
| | | vOrderBycl.InitCjNum = afterReportNum?.CjNum ?? vOrderBycl.StartCjNum; |
| | | } |
| | | vOrderBycl.InitCjNum = beforeOrEqualReportNum?.CjNum ?? vOrderBycl.StartCjNum; |
| | | } |
| | | |
| | | var startCjNum = vOrderBycl.StartCjNum; |
| | |
| | | } |
| | | else |
| | | { |
| | | // 有报工记录,初始采集数为上一次报工时间后最近一条齿轮数采表的采集数量 |
| | | var afterReportNum = numericalList |
| | | // 有报工记录,初始采集数为报工时间点前(含)最近一条齿轮数采表的采集数量 |
| | | var beforeOrEqualReportNum = numericalList |
| | | .Select(x => new { Item = x, ParsedTime = DateTime.TryParse(x.CjTiem, out var dt) ? dt : (DateTime?)null }) |
| | | .Where(x => x.ParsedTime.HasValue && x.ParsedTime.Value > lastReport.BgDate.Value) |
| | | .OrderBy(x => x.ParsedTime) // 升序,取第一条 |
| | | .Where(x => x.ParsedTime.HasValue && x.ParsedTime.Value <= lastReport.BgDate.Value) |
| | | .OrderByDescending(x => x.ParsedTime) // 降序,取第一条 |
| | | .Select(x => x.Item) |
| | | .FirstOrDefault(); |
| | | |
| | | VOrdrerBycl.InitCjNum = afterReportNum?.CjNum ?? VOrdrerBycl.StartCjNum; |
| | | VOrdrerBycl.InitCjNum = beforeOrEqualReportNum?.CjNum ?? VOrdrerBycl.StartCjNum; |
| | | } |
| | | |
| | | // 报工时采集数就是主界面的当前采数 |