快乐的昕的电脑
2025-10-17 c339254fddf2ed432dc34af2e50939d8bb0fec26
逻辑修改
已修改1个文件
48 ■■■■■ 文件已修改
Services/WomdaaManager.cs 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Services/WomdaaManager.cs
@@ -171,38 +171,24 @@
        var sqlQuerySingle = Db.Ado.SqlQuerySingle<string>(sql);
        VOrdrerBycl.finalResult = sqlQuerySingle;
        // 修复后(确保类型一致,避免参数绑定错误,并防止ID为null时异常)
        var numericalQuery = Db.Queryable<MesNumericalBycl>()
            .Where(n => n.MachineNo == VOrdrerBycl.MachineNo
                        && n.OrderId == (VOrdrerBycl.ID == null ? 0 : VOrdrerBycl.ID)
                        && n.CjNum != null);
        // 查询MES_NUMERICAL_BYCL表,获取开工数采和当前数采
        var numericalList = Db.Queryable<MesNumericalBycl>()
            .Where(x => x.OrderId == VOrdrerBycl.ID)
            .OrderBy(x => x.CjTiem)
            .ToList();
        // 开工采集值=第一条记录(按ID最小)
        var startCjNum = numericalQuery
            .OrderBy(n => n.Id)
            .Select(n => n.CjNum)
            .First();
        // 最大采集数(累计当前值)
        var maxCjNum = numericalQuery.Max(n => n.CjNum);
        // 达到最大值的第一次时间(如需展示可后续新增字段)
        var firstReachMaxTime = numericalQuery
            .Where(n => n.CjNum == maxCjNum)
            .OrderBy(n => n.Id)
            .Select(n => n.CjTiem)
            .First();
        // 达到最大值的最后一次时间(若需要判断是否仍在增长,可对比 first 与 last)
        var lastReachMaxTime = numericalQuery
            .Where(n => n.CjNum == maxCjNum)
            .OrderBy(n => n.Id, OrderByType.Desc)
            .Select(n => n.CjTiem)
            .First();
        // 赋值(CurrentCjNum 采用累计最大值,避免 plateau 重复记录导致误解)
        VOrdrerBycl.StartCjNum = startCjNum ?? 0;
        VOrdrerBycl.CurrentCjNum = maxCjNum ?? 0;
        if (numericalList.Count > 0)
        {
            // 开工数采:最早一条
            VOrdrerBycl.StartCjNum = numericalList.First().CjNum ?? 0;
            // 当前数采:最新一条
            VOrdrerBycl.CurrentCjNum = numericalList.Last().CjNum ?? 0;
        }
        else
        {
            VOrdrerBycl.StartCjNum = 0;
            VOrdrerBycl.CurrentCjNum = 0;
        }
        return VOrdrerBycl;
    }