using MES.Service.DB; using MES.Service.Dto.webApi.QcIssueResult; using MES.Service.Modes.QcIssueResult; using MES.Service.Modes.SentLaboratory; using Newtonsoft.Json; using SqlSugar; using System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Security.Cryptography; using System.Text; using System.Threading.Tasks; namespace MES.Service.service.SentLaboratory; public class SaveLaboratoryManager:Repository { public class ResultObject { public string? SjReleaseNo { get; set; } public decimal? IS_SJ { get; set; } public string? DEPARTMENTNAME { get; set; } public string? DEPARTMENTCODE { get; set; } public DateTime? CREATE_DATE { get; set; } public DateTime? CompleteDate { get; set; } public string? REMARKS { get; set; } public string? SIM_REQ { get; set; } public string? Test_REQ { get; set; } //磁铁拉力 public decimal? Check01 { get; set; } //磁铁承重 public decimal? Check02 { get; set; } //盐雾 public decimal? Check03 { get; set; } //IP public decimal? Check04 { get; set; } //老化测试 public decimal? Check05 { get; set; } //传导辐射 public decimal? Check06 { get; set; } public decimal? Check07 { get; set; } //电线拉力 public decimal? Check08 { get; set; } //接口插拔 public decimal? Check09 { get; set; } //光谱测试 public decimal? Check10 { get; set; } //ROHS public decimal? Check11 { get; set; } //电池充放电 public decimal? Check12 { get; set; } //高温 public decimal? Check13 { get; set; } //低温 public decimal? Check14 { get; set; } //IK public decimal? Check15 { get; set; } //温升测试 public decimal? Check16 { get; set; } //寿命 public decimal? Check17 { get; set; } //其它 public decimal? Check18 { get; set; } //其它的内容 public string? Line04 { get; set; } public List? allItem { get; set; } } public class AllItem { public decimal? Pid { get; set; } public string? sj_no { get; set; } public string? release_no { get; set; } public decimal? ITEM_ID { get; set; } public string? ITEM_NO { get; set; } public string? QUANTITY { get; set; } public decimal? URGENT_FLAG { get; set; } public DateTime? CREATE_DATE { get; set; } public string? SUPP_NAME { get; set; } public string? DECISION_OUTCOMES { get; set; } } public ResultObject GetListAll(string RELEASE_NO) { // 假设你有一个数据库上下文或数据访问层 // 这里用模拟数据代替实际数据库查询 var mainTable = GetMainTableData(RELEASE_NO); var subTable = GetSubTableData(RELEASE_NO); // 创建返回对象 var result = new ResultObject { SjReleaseNo = mainTable.ReleaseNo, IS_SJ = mainTable.IsSubmit, DEPARTMENTNAME = mainTable.DEPARTMENTNAME, DEPARTMENTCODE=mainTable.DEPARTMENTCODE, REMARKS = mainTable.REMARKS, SIM_REQ = mainTable.SimReq, CompleteDate=mainTable.CompleteDate, Test_REQ=mainTable.TestReq, Check01 = mainTable.Check01, Check02 = mainTable.Check02, Check03 = mainTable.Check03, Check04 = mainTable.Check04, Check05 = mainTable.Check05, Check06 = mainTable.Check06, Check07 = mainTable.Check07, Check08 = mainTable.Check08, Check09 = mainTable.Check09, Check10 = mainTable.Check10, Check11 = mainTable.Check11, Check12 = mainTable.Check12, Check13 = mainTable.Check13, Check14 = mainTable.Check14, Check15 = mainTable.Check15, Check16 = mainTable.Check16, Check17 = mainTable.Check17, Check18 = mainTable.Check18, Line04 = mainTable.Line04, allItem = subTable.Select(item => new AllItem { Pid=item.PID, sj_no = item.SJ_NO, CREATE_DATE = item.CREATE_DATE, ITEM_ID = item.ITEM_ID, release_no=item.RELEASE_NO, ITEM_NO = item.ITEM_NO, SUPP_NAME = item.SUPP_NAME, QUANTITY=item.QUANTITY, URGENT_FLAG=item.URGENT_FLAG, DECISION_OUTCOMES=item.DECISION_OUTCOMES, }).ToList() }; return result; } // 模拟主表数据查询 private UpdateMesQmsSample GetMainTableData(string RELEASE_NO) { var db = SqlSugarHelper.GetInstance(); var map = db.Queryable() .Where(t => t.ReleaseNo == RELEASE_NO) .First(); // 这里应该是实际的数据库查询逻辑 // 例如:return db.MainTable.FirstOrDefault(m => m.RELEASE_NO == RELEASE_NO); return new UpdateMesQmsSample { ReleaseNo = map.ReleaseNo, DEPARTMENTNAME = map.DEPARTMENTNAME, CreateDate = map.CreateDate, QUANTITY = map.QUANTITY, CompleteDate = map.CompleteDate, TestReq = map.TestReq, SimReq = map.SimReq, ItemNo = map.ItemNo, UrgentFlag = map.UrgentFlag, JYDH = map.JYDH, REMARKS = map.REMARKS, ItemName = map.ItemName, DEPARTMENTCODE = map.DEPARTMENTCODE, PAPERBILLNO = map.PAPERBILLNO, IsSubmit = map.IsSubmit, ZHBS = map.ZHBS, Check01 = map.Check01, Check02 = map.Check02, Check03 = map.Check03, Check04 = map.Check04, Check05 = map.Check05, Check06 = map.Check06, Check07 = map.Check07, Check08 = map.Check08, Check09 = map.Check09, Check10 = map.Check10, Check11 = map.Check11, Check12 = map.Check12, Check13 = map.Check13, Check14 = map.Check14, Check15 = map.Check15, Check16 = map.Check16, Check17 = map.Check17, Check18 = map.Check18, Line04=map.Line04 }; } // 模拟子表数据查询 private List GetSubTableData(string RELEASE_NO) { var db = SqlSugarHelper.GetInstance(); var mapping = db.Queryable() .Where(t => t.SJ_NO == RELEASE_NO) .ToList(); // 如果查询结果为空,返回空列表 if (mapping == null || mapping.Count == 0) { return new List(); } // 返回查询结果 return mapping; } public dynamic Save(GetLaboratoryDetails getLaboratoryDetails) { var mesUpdateMesQmsSample = GetMesQcIssueResults(getLaboratoryDetails); return UseTransaction(db => { return SaveOrUpdateData(db, mesUpdateMesQmsSample,getLaboratoryDetails) ? 1 : 0; }) > 0; } public UpdateMesQmsSample GetMesQcIssueResults(GetLaboratoryDetails getLaboratoryDetails) { if (getLaboratoryDetails.URGENT_FLAG == null) { getLaboratoryDetails.URGENT_FLAG = 0; } var mesUpdateMesQmsSample = new UpdateMesQmsSample { ReleaseNo = getLaboratoryDetails.RELEASE_NO, DEPARTMENTNAME = getLaboratoryDetails.DEPARTMENTNAME, CreateDate = getLaboratoryDetails.CREATE_DATE1, QUANTITY = getLaboratoryDetails.QUANTITY, CompleteDate = getLaboratoryDetails.COMPLETE_DATE, TestReq=getLaboratoryDetails.TEST_REQ, SimReq = getLaboratoryDetails.SIM_REQ, ItemNo = getLaboratoryDetails.ITEM_NO, UrgentFlag = getLaboratoryDetails.URGENT_FLAG, JYDH = getLaboratoryDetails.JYDH, REMARKS = getLaboratoryDetails.REMARKS, ItemName = getLaboratoryDetails.ITEM_NAME, DEPARTMENTCODE = getLaboratoryDetails.DEPARTMENTCODE, PAPERBILLNO = getLaboratoryDetails.LOT_NO, IsSubmit = getLaboratoryDetails.IS_SUBMIT, ZHBS = getLaboratoryDetails.ZH_BS }; mesUpdateMesQmsSample.Check01 = 0; mesUpdateMesQmsSample.Check02 = 0; mesUpdateMesQmsSample.Check03 = 0; mesUpdateMesQmsSample.Check04 = 0; mesUpdateMesQmsSample.Check05 = 0; mesUpdateMesQmsSample.Check06 = 0; mesUpdateMesQmsSample.Check07 = 0; mesUpdateMesQmsSample.Check08 = 0; mesUpdateMesQmsSample.Check09 = 0; mesUpdateMesQmsSample.Check10 = 0; mesUpdateMesQmsSample.Check11 = 0; mesUpdateMesQmsSample.Check12 = 0; mesUpdateMesQmsSample.Check13 = 0; mesUpdateMesQmsSample.Check14 = 0; mesUpdateMesQmsSample.Check15 = 0; mesUpdateMesQmsSample.Check16 = 0; mesUpdateMesQmsSample.Check17 = 0; mesUpdateMesQmsSample.Check18 = 0; // 遍历 CHECKBOX 并赋值 foreach (var item in getLaboratoryDetails.CHECKBOX) { switch (item.InspectionItems) { case "磁铁拉力": mesUpdateMesQmsSample.Check01 = 1; break; case "磁铁承重": mesUpdateMesQmsSample.Check02 = 1; break; case "盐雾": mesUpdateMesQmsSample.Check03 = 1; break; case "IP": mesUpdateMesQmsSample.Check04 = 1; break; case "老化测试": mesUpdateMesQmsSample.Check05 = 1; break; case "传导辐射": mesUpdateMesQmsSample.Check06 = 1; break; case "跌落测试": mesUpdateMesQmsSample.Check07 = 1; break; case "电线拉力": mesUpdateMesQmsSample.Check08 = 1; break; case "接口插拔": mesUpdateMesQmsSample.Check09 = 1; break; case "光谱测试": mesUpdateMesQmsSample.Check10 = 1; break; case "ROHS": mesUpdateMesQmsSample.Check11 = 1; break; case "电池充放电": mesUpdateMesQmsSample.Check12 = 1; break; case "高温": mesUpdateMesQmsSample.Check13 = 1; break; case "低温": mesUpdateMesQmsSample.Check14 = 1; break; case "IK": mesUpdateMesQmsSample.Check15 = 1; break; case "温升测试": mesUpdateMesQmsSample.Check16 = 1; break; case "寿命": mesUpdateMesQmsSample.Check17 = 1; break; case "其它": mesUpdateMesQmsSample.Check18 = 1; mesUpdateMesQmsSample.Line04 = getLaboratoryDetails.Line04; break; default: // 如果 InspectionItems 不匹配任何条件,可以选择忽略或记录日志 break; } } return mesUpdateMesQmsSample; } /** * 插入数据库表 */ private bool SaveOrUpdateData(SqlSugarScope db, UpdateMesQmsSample updateMesQmsSample, GetLaboratoryDetails getLaboratoryDetails) { // 查询 MES_QMS_SAMPLE 表中是否存在匹配的记录 var existingRecord = db.Queryable() .Where(t => t.ReleaseNo == updateMesQmsSample.ReleaseNo) .First(); // 使用 First 获取第一条记录 if (existingRecord != null) { Debug.WriteLine("hhhhhhhhh!"); // 更新 UpdateMesQaItems 表中的字段 updateMesQmsSample.Id = existingRecord.Id; // 执行更新操作 var updateResult = db.Updateable(updateMesQmsSample).ExecuteCommand(); var mapping = db.Queryable() .Where(t => t.RELEASE_NO == updateMesQmsSample.JYDH && t.PID == updateMesQmsSample.Id) .Select(t => new UpdateMesQmsSamplePjt { PID=t.PID }) .ToList(); Debug.WriteLine(updateMesQmsSample.JYDH); if (mapping.Any()) { updateResult = db.Updateable() .SetColumns(t => new UpdateMesQmsSamplePjt { SJ_NO = updateMesQmsSample.ReleaseNo, RELEASE_NO = updateMesQmsSample.JYDH, ITEM_NO = updateMesQmsSample.ItemNo, QUANTITY = updateMesQmsSample.QUANTITY, URGENT_FLAG = updateMesQmsSample.UrgentFlag, CREATE_DATE = System.DateTime.Now, ITEM_ID = getLaboratoryDetails.ITEM_ID, SUPP_NAME = getLaboratoryDetails.SUPP_NAME }) .Where(t => t.RELEASE_NO == updateMesQmsSample.JYDH && t.PID == updateMesQmsSample.Id) // 显式指定更新条件 .ExecuteCommand(); } else { Debug.WriteLine("hhhhhhhhaddadah!"); var mesUpdateMesQmsSamplePjt = new UpdateMesQmsSamplePjt { PID = updateMesQmsSample.Id, SJ_NO = updateMesQmsSample.ReleaseNo, RELEASE_NO = updateMesQmsSample.JYDH, ITEM_NO = updateMesQmsSample.ItemNo, QUANTITY = updateMesQmsSample.QUANTITY, URGENT_FLAG = updateMesQmsSample.UrgentFlag, CREATE_DATE = System.DateTime.Now, ITEM_ID = getLaboratoryDetails.ITEM_ID, SUPP_NAME = getLaboratoryDetails.SUPP_NAME }; updateResult = db.Insertable(mesUpdateMesQmsSamplePjt).ExecuteCommand(); } var maping = db.Queryable() .Where(t => t.ReleaseNo == updateMesQmsSample.JYDH) .Select(t => new UpdateMesQaItems { ISSJ = t.ISSJ, SJ_NO = t.SJ_NO }) .ToList(); if (maping.Any()) { updateResult = db.Updateable() .SetColumns(t => new UpdateMesQaItems { ISSJ = updateMesQmsSample.IsSubmit, SJ_NO = updateMesQmsSample.ReleaseNo }) .Where(t => t.ReleaseNo == updateMesQmsSample.JYDH) // 显式指定更新条件 .ExecuteCommand(); } else { throw new NotImplementedException("未找到对应来料检验申请单"); } return updateResult > 0; // 如果更新成功,返回 true } else { //Debug.WriteLine("插入"); //如果 mapping 为空,插入新记录到 QcIssueResults 表 var orUpdate = base.Insert(updateMesQmsSample); var insertedId = 0; if (orUpdate) { // 使用 RELEASE_NO 查询刚刚插入的记录的 id insertedId =(int) db.Queryable() .Where(it => it.ReleaseNo == updateMesQmsSample.ReleaseNo) .Select(it => it.Id) .Single(); // 如果 RELEASE_NO 是唯一字段,可以使用 Single() }; var mesUpdateMesQmsSamplePjt = new UpdateMesQmsSamplePjt { PID= insertedId, SJ_NO= updateMesQmsSample.ReleaseNo, RELEASE_NO= updateMesQmsSample.JYDH, ITEM_NO= updateMesQmsSample.ItemNo, QUANTITY= updateMesQmsSample.QUANTITY, URGENT_FLAG= updateMesQmsSample.UrgentFlag, CREATE_DATE = System.DateTime.Now, ITEM_ID= getLaboratoryDetails.ITEM_ID, SUPP_NAME=getLaboratoryDetails.SUPP_NAME }; var updateResult = db.Insertable(mesUpdateMesQmsSamplePjt).ExecuteCommand(); var mapping = db.Queryable() .Where(t => t.ReleaseNo == updateMesQmsSample.JYDH) .Select(t => new UpdateMesQaItems { ISSJ = t.ISSJ, SJ_NO= t.SJ_NO }) .ToList(); if (mapping.Any()) { updateResult = db.Updateable() .SetColumns(t => new UpdateMesQaItems { ISSJ= updateMesQmsSample.IsSubmit, SJ_NO = updateMesQmsSample.ReleaseNo }) .Where(t => t.ReleaseNo == updateMesQmsSample.JYDH) // 显式指定更新条件 .ExecuteCommand(); } else { throw new NotImplementedException("未找到对应来料检验申请单"); } if (orUpdate) return true; throw new NotImplementedException("插入或更新失败"); } } public string DeleteLaboratory(string JYDH) { try { var db = SqlSugarHelper.GetInstance(); // 假设 db 是 SQLSugar 的 SqlSugarClient 实例 var result = db.Updateable() .SetColumns(t => new UpdateMesQmsSample { IsSubmit = 2, }) .Where(t => t.JYDH == JYDH) // 显式指定更新条件 .ExecuteCommand(); Debug.WriteLine(result); var mapping = db.Queryable() .Where(t => t.ReleaseNo ==JYDH) .Select(t => new UpdateMesQaItems { ISSJ = t.ISSJ, }) .ToList(); if (mapping.Any()) { var updateResult = db.Updateable() .SetColumns(t => new UpdateMesQaItems { ISSJ = 2, SJ_NO=null }) .Where(t => t.ReleaseNo == JYDH) // 显式指定更新条件 .ExecuteCommand(); } else { throw new NotImplementedException("未找到对应来料检验申请单"); } if (result > 0) { return "撤回成功!"; } else { return "未找到匹配的记录,撤回失败。"; } } catch (Exception ex) { return "撤回失败,错误信息:" + ex.Message; } } }