using PadApplication.DB; using PadApplication.Entites.DbModels; using PadApplication.Entites.Dto; using SqlSugar; namespace PadApplication.Services; public class MesQaItemsDetect02Manager : Repository { //当前类已经继承了 Repository 增、删、查、改的方法 //根据工单号查首检 public MesQaItemsDetect02 FindSJByOrderNo(OrderMachineDto query) { var list = Db.Queryable() .LeftJoin((sj, staff) => sj.FcheckBy == staff.StaffNo) .Where((sj, staff) => sj.Ftype == "首检" && sj.Aufnr == query.orderNo && sj.FcheckDate != null) .Select((sj, staff) => new MesQaItemsDetect02 { Id = sj.Id, FcheckDate = sj.FcheckDate, FcheckResu = sj.FcheckResu, // FcheckBy与StaffName组合,如 "工号-姓名" FcheckBy = sj.FcheckBy + (staff.StaffName != null ? "-" + staff.StaffName : "") }) .OrderBy(sj => sj.FcheckDate, OrderByType.Desc); if (list == null || list.Count() == 0) { var empty = new MesQaItemsDetect02(); empty.xjCount = 0; // 可改为 sjCount,更语义化 return empty; } var entity = list.First(); entity.xjCount = list.Count(); // 可改为 sjCount,更语义化 return entity; } //根据工单号查巡检 public MesQaItemsDetect02 FindXJByOrderNo(OrderMachineDto query) { var list = Db.Queryable() .LeftJoin((xj, staff) => xj.FcheckBy == staff.StaffNo) .Where((xj, staff) => xj.Ftype == "巡检" && xj.Aufnr == query.orderNo && xj.FcheckDate != null) .Select((xj, staff) => new MesQaItemsDetect02 { Id = xj.Id, FcheckDate = xj.FcheckDate, FcheckResu = xj.FcheckResu, // FcheckBy与StaffName组合,如 "工号-姓名" FcheckBy = xj.FcheckBy + (staff.StaffName != null ? "-" + staff.StaffName : "") }) .OrderBy(xj => xj.FcheckDate, OrderByType.Desc); if (list == null || list.Count() == 0) { var empty = new MesQaItemsDetect02(); empty.xjCount = 0; return empty; } var entity = list.First(); entity.xjCount = list.Count(); return entity; } /// /// 自动生成首检单 /// /// 工单号 /// 是否成功 public bool AutomaticIpqcFirstCheck(string billNo) { // 获取工单信息 var womdaa = Db.Queryable().Where(a => a.Daa001 == billNo) .First(); if (womdaa == null) return false; // 获取产品信息 var mesItems = Db.Queryable() .Where(a => a.AddressCode == "ALL" && a.ItemNo == womdaa.Daa002) .First(); if (mesItems == null) return false; // 获取部门信息 var departmentNo = womdaa.DepartmentNo; // 获取产品标准型号 // string qcModel; // try // { // qcModel = Db.Queryable() // .Where(a => a.ItemNo == womdaa.Daa002 && a.AddressCode == "HK") // .Select(a => a.QcModel) // .First(); // } // catch // { // qcModel = "Q1"; // } return UseTransaction(db => { // 工单处理 //if (departmentNo == "XS0101") if (departmentNo == "MS0102" || departmentNo == "MS01" || departmentNo == "MS0103")//部门兼容 { // 检查是否已存在首检单 // var existingCheck = Db.Queryable() // .Where(a => a.Aufnr == billNo && a.Ftype == "首检") // .First(); // if (existingCheck == null) // { // 生成首检单号 var orderNo = GetBillCode(); // 创建首检单头信息 var detect = new MesQaItemsDetect02 { ReleaseNo = orderNo, Aufnr = billNo, LineNo = womdaa.MachineNo, Fsubmit = 0, LotNo = DateTime.Now.ToString("yyyyMMdd"), Ftype = "首检", ItemNo = womdaa.Daa002, CreateBy = "Admin", CreateDate = DateTime.Now, Ismodify1 = 0, Factory = "1000", Fversion = 0, MenuId = 101, Company = "1000", FprodType = "量产", FprodDate = womdaa.Daa006, PlanQty = womdaa.Daa008, Remeke = womdaa.Daa009, DepartmentNo = womdaa.DepartmentNo }; // 插入首检单 Db.Insertable(detect).IgnoreColumns(true).ExecuteCommand(); // 插入检验项目 var checkItems = Db.Queryable() .LeftJoin((t, t2) => t.Pid == t2.Id) .LeftJoin((t, t2, b) => t2.ItemNo == b.ItemNo) .Where((t, t2, b) => b.QcItem == womdaa.Daa002) .OrderBy(t => t.Forder) .Select((t, t2, b) => new { t.FcheckItem, t.FcheckTool, t.Fstand, t.FupAllow, t.FdownAllow, t.Forder, t.CheckQty, t.FacQty, t.FspecRequ }) .ToList(); foreach (var item in checkItems) { var detail = new MesQaItemsDetectDetail6 { FcheckItem = item.FcheckItem, FcheckTool = item.FcheckTool, Fstand = item.Fstand, FupAllow = item.FupAllow, FdownAllow = item.FdownAllow, ForderNo = item.Forder, ReleaseNo = orderNo, CheckQty = item.CheckQty, AcceptableQty = item.FacQty, Company = "1000", Factory = "1000", FspecRequ = item.FspecRequ }; Db.Insertable(detail).IgnoreColumns(true).ExecuteCommand(); } // } // 更新工单状态表 var orderSta = Db.Queryable() .Where(a => a.OrderId == womdaa.Id) .First(); if (orderSta != null) return 1; var newSta = new MesOrderSta { OrderId = womdaa.Id, OrderNo = womdaa.Daa001, // StartTime = // DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), MachineNo = womdaa.MachineNo }; Db.Insertable(newSta).IgnoreColumns(true).ExecuteCommand(); // else // { // Db.Updateable() // .SetColumns(a => // a.StartTime == // DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")) // .Where(a => a.OrderId == womdaa.Id) // .ExecuteCommand(); // } return 1; } return 0; }) > 0; } /// /// 获取单据编号 /// /// 公司代码 /// 工厂代码 /// 单据前缀 /// 生成的单据编号 private string GetBillCode() { // 获取当前日期 var date = DateTime.Now.ToString("yyMMdd"); // 查询当天最大流水号 var maxCode = Db.Queryable() .Where(s => s.Company == "1000" && s.Factory == "1000") .Where(s => s.ReleaseNo.StartsWith("QCSN" + date)) .OrderBy(s => s.ReleaseNo, OrderByType.Desc) .Select(s => s.ReleaseNo) .First(); // 生成新的流水号 var sequence = 1; if (!string.IsNullOrEmpty(maxCode)) sequence = int.Parse(maxCode.Substring(10)) + 1; // 组装单据编号 QCSN + 年月日 + 5位流水号 return $"QCSN{date}{sequence:D5}"; } }