using PadApplication.DB; using PadApplication.Entites.DbModels; using PadApplication.Entites.Dto; namespace PadApplication.Services; /// /// 工单选择管理类,负责工单选择相关的数据操作 /// 继承自Repository基类,包含基础的CRUD操作 /// public class MesOrderSelectManager : Repository { 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() .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; } /// /// 添加工单选择记录 /// /// 工单选择数据传输对象,包含工单列表和基础信息 /// 添加是否成功 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() .Where(s => s.OrderId == mesOrderSelect.OrderId && s.EditDate == dto.EditDate).Count(); if (count > 0) { Db.Updateable() .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() .Where(s => s.Daa001 == mesOrderSelect.OrderNo).First(); if (womdaa == null) continue; var equals = womdaa.Daa018.Equals("暂停"); //// 更新工单状态表中的换模开始时间 //Db.Updateable() // .SetColumnsIF(equals, s => s.MaShoutTime == null) // .SetColumnsIF(equals, s => s.MaEndTime == null) // .Where(s => s.OrderNo == mesOrderSelect.OrderNo) // .ExecuteCommand(); } return isN; } /// /// 删除指定机器的工单选择记录 /// /// 包含机器编号的数据传输对象 /// 删除的记录数 public int Remove(OrderSelectDto dto) { // 删除该机器所有未显示的工单选择记录 return Db.Deleteable() .Where(s => s.MachineNo == dto.MachineNo && s.IsShow == 0) .ExecuteCommand(); } /// /// 检查是否为新工单 /// /// 包含工单号的查询条件 /// true表示是新工单,false表示已存在 public bool isNew(OrderMachineDto query) { // 获取当前日期 var date = DateTime.Now.ToString("yyyy-MM-dd"); // 查询当天是否存在该工单的选择记录 var count = Db.Queryable() .Where(s => s.OrderNo == query.orderNo && s.EditDate == date).Count(); // 如果记录数为0,则为新工单 return count <= 0; } }