快乐的昕的电脑
2025-10-17 a199fbe0f72b83ca1b9b5e668d83ee0d40db01ac
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
using PadApplication.DB;
using PadApplication.Entites.DbModels;
using PadApplication.Entites.Dto;
 
namespace PadApplication.Services;
 
/// <summary>
///     工单选择管理类,负责工单选择相关的数据操作
///     继承自Repository<MesOrderSelect>基类,包含基础的CRUD操作
/// </summary>
public class MesOrderSelectManager : Repository<MesOrderSelect>
{
    private readonly WomdaaManager _womdaaManager = new();
 
 
    public bool AddMesOrderSelect(OrderSelectDto dto)
    {
        var query = new OrderMachineDto
        {
            machineNo = dto.MachineNo
        };
        var womdaasByShow = _womdaaManager.GetWomdaasByShow(query);
        var date = DateTime.Now.ToString("yyyy-MM-dd");
        foreach (var vOrder in womdaasByShow)
        {
            var count = Db.Queryable<MesOrderSelect>()
                .Where(s => s.OrderId == vOrder.ID
                            && s.EditDate == date).Count();
 
            if (count > 0) continue;
 
            // 设置基础信息
            var mesOrderSelect = new MesOrderSelect
            {
                OrderId = vOrder.ID,
                OrderNo = vOrder.Daa001,
                EditDate = date,
                MachineNo = dto.MachineNo,
                IsShow = 0,
                TjCount = 0,
                TjTime = 0
            };
 
            // 插入记录,如果失败则返回false
            if (!Insert(mesOrderSelect)) return false;
        }
 
        return true;
    }
 
    /// <summary>
    ///     添加工单选择记录
    /// </summary>
    /// <param name="dto">工单选择数据传输对象,包含工单列表和基础信息</param>
    /// <returns>添加是否成功</returns>
    public bool Add(OrderSelectDto dto)
    {
        // 先删除该机器的现有选择记录
        Remove(dto);
 
        // 获取第一个工单的工单号
        var orderNo = dto.Item[0].OrderNo;
        var query = new OrderMachineDto();
        query.orderNo = orderNo;
 
        // 检查是否为新工单
        var isN = isNew(query);
 
        // 遍历工单列表,添加每个工单的选择记录
        foreach (var mesOrderSelect in dto.Item)
        {
            var count = Db.Queryable<MesOrderSelect>()
                .Where(s => s.OrderId == mesOrderSelect.OrderId
                            && s.EditDate == dto.EditDate).Count();
 
            if (count > 0)
            {
                Db.Updateable<MesOrderSelect>()
                    .SetColumns(s => s.IsShow == 0)
                    .Where(s => s.OrderId == mesOrderSelect.OrderId
                                && s.EditDate == dto.EditDate)
                    .ExecuteCommand();
            }
            else
            {
                // 设置基础信息
                mesOrderSelect.EditDate = dto.EditDate;
                mesOrderSelect.MachineNo = dto.MachineNo;
                mesOrderSelect.IsShow = 0;
                mesOrderSelect.TjCount = 0;
                mesOrderSelect.TjTime = 0;
 
                // 插入记录,如果失败则返回false
                if (!Insert(mesOrderSelect)) return false;
            }
 
            var womdaa = Db.Queryable<Womdaa>()
                .Where(s => s.Daa001 == mesOrderSelect.OrderNo).First();
 
            if (womdaa == null) continue;
 
            var equals = womdaa.Daa018.Equals("暂停");
 
            //// 更新工单状态表中的换模开始时间
            //Db.Updateable<MesOrderSta>()
            //    .SetColumnsIF(equals, s => s.MaShoutTime == null)
            //    .SetColumnsIF(equals, s => s.MaEndTime == null)
            //    .Where(s => s.OrderNo == mesOrderSelect.OrderNo)
            //    .ExecuteCommand();
        }
 
        return isN;
    }
 
    /// <summary>
    ///     删除指定机器的工单选择记录
    /// </summary>
    /// <param name="dto">包含机器编号的数据传输对象</param>
    /// <returns>删除的记录数</returns>
    public int Remove(OrderSelectDto dto)
    {
        // 删除该机器所有未显示的工单选择记录
        return Db.Deleteable<MesOrderSelect>()
            .Where(s => s.MachineNo == dto.MachineNo
                        && s.IsShow == 0)
            .ExecuteCommand();
    }
 
    /// <summary>
    ///     检查是否为新工单
    /// </summary>
    /// <param name="query">包含工单号的查询条件</param>
    /// <returns>true表示是新工单,false表示已存在</returns>
    public bool isNew(OrderMachineDto query)
    {
        // 获取当前日期
        var date = DateTime.Now.ToString("yyyy-MM-dd");
 
        // 查询当天是否存在该工单的选择记录
        var count = Db.Queryable<MesOrderSelect>()
            .Where(s => s.OrderNo == query.orderNo
                        && s.EditDate == date).Count();
 
        // 如果记录数为0,则为新工单
        return count <= 0;
    }
}