快乐的昕的电脑
2025-10-20 38eef5ea4b8391a2444af56cfdfd528a58184336
计算日停机次数
已修改2个文件
35 ■■■■■ 文件已修改
Entites/DbModels/VOrderBycl.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Services/WomdaaManager.cs 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Entites/DbModels/VOrderBycl.cs
@@ -202,4 +202,5 @@
    [SugarColumn(IsIgnore = true)] public long? StartCjNum { get; set; }//开工数采(最早采集值)
    [SugarColumn(IsIgnore = true)] public long? CurrentCjNum { get; set; }//当前数采(最新采集值)
    [SugarColumn(IsIgnore = true)] public long? InitCjNum { get; set; }//初始采集数
    [SugarColumn(IsIgnore = true)] public int TodayDowntimeCount { get; set; }//今日停机次数
}
Services/WomdaaManager.cs
@@ -256,6 +256,9 @@
            VOrdrerBycl.CurrentCjNum = 0;
        }
        // 计算当天停机次数
        VOrdrerBycl.TodayDowntimeCount = GetTodayDowntimeCount(numericalList);
        Console.WriteLine($"orderNo: [{query.orderNo}]");
        // 查询报工记录,获取最后一条报工记录
@@ -282,13 +285,38 @@
            VOrdrerBycl.InitCjNum = beforeOrEqualReportNum?.CjNum ?? VOrdrerBycl.StartCjNum;
        }
        // 报工时采集数就是主界面的当前采数
        // VOrdrerBycl.CurrentCjNum 已赋值,无需额外处理
        return VOrdrerBycl;
    }
    /// <summary>
    /// 计算日停机次数
    /// </summary>
    /// <param name="numericalList"></param>
    /// <returns></returns>
    public int GetTodayDowntimeCount(List<MesNumericalBycl> numericalList)
    {
        var today = DateTime.Now.Date;
        // 1. 只保留当天数据,并转换为 DateTime
        var todayTimes = numericalList
            .Where(x => DateTime.TryParse(x.CjTiem, out var dt) && dt.Date == today)
            .Select(x => DateTime.Parse(x.CjTiem))
            .OrderBy(x => x)
            .ToList();
        if (todayTimes.Count < 2)
            return 0;
        int downtimeCount = 0;
        for (int i = 1; i < todayTimes.Count; i++)
        {
            var diff = (todayTimes[i] - todayTimes[i - 1]).TotalMinutes;
            if (diff > 3)
                downtimeCount++;
        }
        return downtimeCount;
    }
    /// <summary>
    ///     根据工单ID获取报工信息
    /// </summary>
    /// <param name="query">包含工单ID的查询条件</param>