快乐的昕的电脑
2025-10-17 c50a908b430f2f17eefe0dff33f7bffb4349d961
逻辑修改
已修改1个文件
28 ■■■■■ 文件已修改
Services/WomdaaManager.cs 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Services/WomdaaManager.cs
@@ -171,23 +171,31 @@
        var sqlQuerySingle = Db.Ado.SqlQuerySingle<string>(sql);
        VOrdrerBycl.finalResult = sqlQuerySingle;
        // 新增:查询最早与最新数采记录(按采集时间排序)
        // 新增:查询数采记录(处理同一CjNum在不同时间重复的情况)
        var baseQuery = Db.Queryable<MesNumericalBycl>()
            .Where(n => n.OrderId == Convert.ToDecimal(query.OrderId) && n.MachineNo == VOrdrerBycl.MachineNo);
            .Where(n => n.OrderId == Convert.ToDecimal(query.OrderId)
                        && n.MachineNo == VOrdrerBycl.MachineNo
                        && !string.IsNullOrEmpty(n.CjTiem));
        // 修复后代码(精确时间排序,Oracle数据库下字符串转时间)
        var startCjNum = baseQuery.OrderBy(n => SqlFunc.Oracle_ToDate(n.CjTiem, "yyyy-MM-dd HH24:mi:ss")).Select(n => n.CjNum).First();
        // 修复后(取最新时间点对应的CjNum,确保取到最新一条的CjNum)
        var latest = baseQuery
            .Where(n => !string.IsNullOrEmpty(n.CjTiem))
        // 最早一条记录(按采集时间升序)
        var startRecord = baseQuery
            .OrderBy(n => SqlFunc.Oracle_ToDate(n.CjTiem, "yyyy-MM-dd HH24:mi:ss"))
            .Select(n => new { n.CjNum, n.CjTiem })
            .First();
        // 最新时间点的记录(按采集时间降序取整条)
        var latestRecord = baseQuery
            .OrderBy(n => SqlFunc.Oracle_ToDate(n.CjTiem, "yyyy-MM-dd HH24:mi:ss"), OrderByType.Desc)
            .Select(n => new { n.CjNum, n.CjTiem })
            .First();
        long? currentCjNum = latest?.CjNum;
        // 所有记录中的最大CjNum(如果需要“当前累计最大值”)
        var maxCjNum = baseQuery.Max(n => n.CjNum);
        VOrdrerBycl.StartCjNum = startCjNum;
        VOrdrerBycl.CurrentCjNum = currentCjNum;
        // 如果希望“当前数采”显示最新时间对应的CjNum,用 latestRecord.CjNum
        // 如果希望显示累计最大值(处理同一编号多次出现),用 maxCjNum
        VOrdrerBycl.StartCjNum = startRecord?.CjNum;
        VOrdrerBycl.CurrentCjNum = latestRecord?.CjNum; // 或替换为 maxCjNum 根据业务定义
        return VOrdrerBycl;
    }