快乐的昕的电脑
2025-10-08 f135ce6cfd1eae56c3ce16d55b5e675f9ba7b278
Services/WomdaaManager.cs
@@ -10,21 +10,26 @@
public class WomdaaManager : Repository<Womdaa>
{
    /// <summary>
    ///     根据工程编号获取工单列表
    ///     根据工程编号和工单状态获取工单列表
    /// </summary>
    /// <param name="query">包含机器编号的查询条件</param>
    /// <returns>工单列表,按模具ID分组后的第一条记录</returns>
    public List<VOrdreBycl> GetWomdaasByEngineeringNo(OrderMachineDto query)
    /// <param name="query">包含机器编号和工单状态的查询条件</param>
    /// <returns>工单列表</returns>
    public List<VOrderBycl> GetWomdaasByEngineeringNo(OrderMachineDto query)
    {
        var list = VOrders(query);
        // 增加状态筛选
        // 按工单状态筛选
        if (query.OrderStatus != null && query.OrderStatus.Any())
        {
            list = list.Where(p => p.Daa018 != null && query.OrderStatus.Contains(p.Daa018)).ToList();
        }
        // 去掉模具分组,直接返回筛选结果
        //// 分组逻辑(如需分组,按刀具ID分组取第一条)
        //var vOrders = list.GroupBy(p => p.cutterId)
        //    .Select(g => g.First()).ToList();
        //return vOrders;
        // 如需分组可加分组逻辑,否则直接返回
        return list;
    }
@@ -33,31 +38,16 @@
    /// </summary>
    /// <param name="query">包含机器编号的查询条件</param>
    /// <returns>合并后的工单列表</returns>
    private List<VOrdreBycl> VOrders(OrderMachineDto query)
    private List<VOrderBycl> VOrders(OrderMachineDto query)
    {
        var list = Db.Queryable<VOrdreBycl>()
        var list = Db.Queryable<VOrderBycl>()
            .Where(s => s.Daa018 != "完工" &&
                        s.MachineNo == query.machineNo
            )
            .Select(s => new VOrdreBycl
            {
                ID = s.ID,
                cutterId = s.cutterId,
                cutterName = s.cutterName,
                cutterModel = s.cutterModel
            })
                        s.MachineNo == query.machineNo)
            .ToList();
        // 查询指定机器的工单
        var orders = Db.Queryable<VOrderABycl>()
            .Where(s => s.MachineNo == query.machineNo)
            .Select<VOrdreBycl>(s => new VOrdreBycl
            {
                ID = s.ID,
                cutterId = s.cutterId,
                cutterName = s.cutterName,
                cutterModel = s.cutterModel
            })
            .Select<VOrderBycl>()
            .ToList();
        list.AddRange(orders);
@@ -73,7 +63,7 @@
    /// <returns>
    ///     返回符合条件的工单(VOrdreBycl)列表
    /// </returns>
    public List<VOrdreBycl> GetWomdaasByMachine(OrderMachineDto query)
    public List<VOrderBycl> GetWomdaasByMachine(OrderMachineDto query)
    {
        // 获取当前日期字符串,格式为 yyyy-MM-dd
        var date = DateTime.Now.ToString("yyyy-MM-dd");
@@ -89,7 +79,7 @@
        // 1. 机台编号等于传入的machineNo
        // 2. 编辑日期为今天或为空
        // 3. 工单ID在ids集合中
        return Db.Queryable<VOrdreBycl>()
        return Db.Queryable<VOrderBycl>()
            .Where(s =>
                s.MachineNo == query.machineNo
                && (s.EditDate == date || s.EditDate == null)
@@ -102,7 +92,7 @@
    /// </summary>
    /// <param name="query">包含机器编号的查询条件</param>
    /// <returns>需要显示的工单列表</returns>
    public List<VOrdreBycl> GetWomdaasByShow(OrderMachineDto query)
    public List<VOrderBycl> GetWomdaasByShow(OrderMachineDto query)
    {
        // 查询需要显示的工单ID
        var ids = Db.Queryable<MesOrderSelect>()
@@ -117,10 +107,10 @@
        // 如果没有工单ID,直接返回空列表
        if (decimals.Count == 0)
            return new List<VOrdreBycl>();
            return new List<VOrderBycl>();
        // 查询工单视图,筛选出需要显示的工单
        return Db.Queryable<VOrdreBycl>()
        return Db.Queryable<VOrderBycl>()
            .Where(c =>
                decimals.Contains(c.ID) &&
                (c.EditDate == date || c.EditDate == null))
@@ -132,7 +122,7 @@
    /// </summary>
    /// <param name="query">包含工单ID和工单号的查询条件</param>
    /// <returns>工单详细信息</returns>
    public VOrder GetWomdaaById(OrderMachineDto query)
    public VOrderBycl GetWomdaaById(OrderMachineDto query)
    {
        var date = DateTime.Now.ToString("yyyy-MM-dd");
@@ -140,44 +130,44 @@
            .Where(b => b.OrderNo == query.orderNo && b.EditDate == date)
            .Count();
        var vOrder = Db.Queryable<VOrder>()
        var VOrdrerBycl = Db.Queryable<VOrderBycl>()
            .Where(s => s.ID == query.OrderId)
            .WhereIF(count > 0, s => s.EditDate == date)
            .OrderByDescending(s => s.workStartDate).First();
        if (vOrder == null) return null;
        if (VOrdrerBycl == null) return null;
        vOrder.YJQTY ??= 0;
        VOrdrerBycl.YJQTY ??= 0;
        var mesOrderSelect = Db.Queryable<MesOrderSelect>()
            .Where(a => a.OrderId == vOrder.ID
            .Where(a => a.OrderId == VOrdrerBycl.ID
                        && a.IsShow == 0).First();
        vOrder.todayRunTime = 0;
        vOrder.TodayFaultNum = 0;
        VOrdrerBycl.todayRunTime = 0;
        VOrdrerBycl.TodayFaultNum = 0;
        if (mesOrderSelect != null)
        {
            vOrder.todayRunTime = mesOrderSelect.TjTime;
            vOrder.TodayFaultNum = mesOrderSelect.TjCount;
            VOrdrerBycl.todayRunTime = mesOrderSelect.TjTime;
            VOrdrerBycl.TodayFaultNum = mesOrderSelect.TjCount;
            if (mesOrderSelect.TjTime is null or 0)
            {
                vOrder.JDL = 100;
                VOrdrerBycl.JDL = 100;
            }
            else
            {
                var round = Math.Round(mesOrderSelect.TjTime.Value / 1440, 2);
                var round1 = (1 - round) * 100;
                vOrder.JDL = round1;
                VOrdrerBycl.JDL = round1;
            }
        }
        vOrder.wjQty = vOrder.Daa008 - vOrder.Daa011;
        VOrdrerBycl.wjQty = VOrdrerBycl.Daa008 - VOrdrerBycl.Daa011;
        //DevMachine
        var devMachine = Db.Queryable<DevMacBycl>()
            .Where(s => s.MachineNo == vOrder.MachineNo)
            .Where(s => s.MachineNo == VOrdrerBycl.MachineNo)
            .First();
@@ -187,9 +177,9 @@
        var sqlQuerySingle = Db.Ado.SqlQuerySingle<string>(sql);
        vOrder.finalResult = sqlQuerySingle;
        VOrdrerBycl.finalResult = sqlQuerySingle;
        return vOrder;
        return VOrdrerBycl;
    }
    /// <summary>