From 8276722de62e0be1e68adf65f150686a236268bd Mon Sep 17 00:00:00 2001 From: zjh <2207896513@qq.com> Date: 星期五, 18 七月 2025 10:08:44 +0800 Subject: [PATCH] 产测接口代码提交 --- StandardPda/MES.Service/service/QC/SJService.cs | 456 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 456 insertions(+), 0 deletions(-) diff --git a/StandardPda/MES.Service/service/QC/SJService.cs b/StandardPda/MES.Service/service/QC/SJService.cs new file mode 100644 index 0000000..fcc93ec --- /dev/null +++ b/StandardPda/MES.Service/service/QC/SJService.cs @@ -0,0 +1,456 @@ +锘縰sing MES.Service.DB; +using MES.Service.Dto.service; +using MES.Service.Modes; +using MES.Service.util; +using SqlSugar; + +namespace MES.Service.service.QC; + +public class SJService +{ + private readonly BaseService _baseService = new(); + + //鑾峰彇鏈�澶у崟鍙� + public string getMaxBillNo() + { + var db = SqlSugarHelper.GetInstance(); + var date = DateTime.Now.ToString("yyyy-MM-dd"); + var sql = + "select max(BILL_NO) from QS_ITEM_IPI_REQ where to_char(CREATE_TIME,'yyyy-mm-dd') = '" + + date + "'"; + + var maxBillNo = db.Ado.SqlQuerySingle<string>(sql); + + var number = "0001"; + if (maxBillNo != null) + { + maxBillNo = maxBillNo.Substring(12); + var no = Convert.ToInt32(maxBillNo); + no++; + number = no.ToString().PadLeft(4, '0'); + } + + return "SJN" + date.Replace("-", "") + number; + } + + //鑾峰彇鎵�鏈夋暟鎹垎椤� + public List<SJPageResult> getPage(SJPageResult queryObj) + { + var db = SqlSugarHelper.GetInstance(); + + string[]? lineNo = null; + + if (StringUtil.IsNotNullOrEmpty(queryObj.StatusUser)) + lineNo = _baseService.getUserLineNo(queryObj.StatusUser); + + var data = db.Queryable<SJPageResult>() + .WhereIF(lineNo != null && lineNo.Length > 0, + a => lineNo.Contains(a.line)) + .WhereIF(queryObj.Id != null, a => a.Id == queryObj.Id) + .WhereIF(StringUtil.IsNotNullOrEmpty(queryObj.BillNo), + a => a.BillNo == queryObj.BillNo) + .WhereIF( + StringUtil.IsNotNullOrEmpty(queryObj.Result) && + "鏈畬鎴�".Equals(queryObj.Result), + a => a.Result == queryObj.Result) + .WhereIF( + StringUtil.IsNotNullOrEmpty(queryObj.Result) && + !"鏈畬鎴�".Equals(queryObj.Result), + a => a.Result != "鏈畬鎴�") + .OrderBy(a => a.BillNo, OrderByType.Desc) + .ToPageList(queryObj.PageIndex, queryObj.Limit); + + return data; + } + + + //SetQSItem + // public List<QsItemIpiItem> SetQSItems(string itemNo) + // { + // var db = SqlSugarHelper.GetInstance(); + // return db + // .Queryable<MoidToItem, MesQualityStandard>((a, b) => + // new JoinQueryInfos(JoinType.Inner, a.MoidNum == b.MoidNum)) + // .Where((a, b) => b.QsType == "1" && a.Fsubmit == 1 && a.ItemNo == itemNo).Select( + // (a, b) => new QsItemIpiItem + // { + // ProjName = b.ProjName, + // ItemMod = b.ItemMod, + // InspectionMethod = b.InspectionMethod, + // UsingInstruments = b.UsingInstruments, + // LevelNum = SqlFunc.IsNull( + // SqlFunc.IsNull(b.LevelNum * b.InspectionLevel, 1), + // b.InspectionLevel), + // MaxValue = b.MaxValue, + // StandardValue = b.StandardValue, + // MinValue = b.MinValue, + // Notes = b.Notes, + // FcheckLevel = b.FcheckLevel, + // FacLevel = b.FacLevel, + // QsCode = b.QsCode, + // QsName = b.QsName, + // result = "鏈娴�" + // }).ToList(); + // } + public List<QsItemIpiItem> SetQSItems(string itemNo) + { + var db = SqlSugarHelper.GetInstance(); + + var count = db.Queryable<MesQa>().Where(s => s.QsType == "1" + && s.ItemNo == itemNo && s.Fsubmit == 1).Count(); + + if (count <= 0) return []; + + return db + .Queryable<MesQualityStandard>() + .Where(b => b.QsType == "1" && b.ItemNo == itemNo).Select(b => + new QsItemIpiItem + { + ProjName = b.ProjName, + ItemMod = b.ItemMod, + InspectionMethod = b.InspectionMethod, + UsingInstruments = b.UsingInstruments, + LevelNum = SqlFunc.IsNull( + SqlFunc.IsNull(b.LevelNum * b.InspectionLevel, 1), + b.InspectionLevel), + MaxValue = b.MaxValue, + StandardValue = b.StandardValue, + MinValue = b.MinValue, + Notes = b.Notes, + FcheckLevel = b.FcheckLevel, + FacLevel = b.FacLevel, + QsCode = b.QsCode, + QsName = b.QsName, + Picture = b.Picture, + Picturename = b.Picturename, + result = "鏈娴�", + isCheck = 0 + }).ToList(); + } + + public List<QsItemIpiItem> getQSItems(decimal? pid, decimal? id) + { + var db = SqlSugarHelper.GetInstance(); + var qsItemIpiItems = db + .Queryable<QsItemIpiItem>() + .WhereIF(pid > 0, a => a.Pid == pid) + .WhereIF(id > 0, a => a.Id == id).ToList(); + + var array = qsItemIpiItems.Select(s => s.Id).ToArray(); + var qsItemIpiItemDetails = db.Queryable<QsItemIpiItemDetail>() + .Where(s => array.Contains(s.Pid)) + .GroupBy(s => s.Pid) + .Select(s => new + { + s.Pid, + count = SqlFunc.AggregateCount(s.Id) + }).ToList(); + + qsItemIpiItems.ForEach(s => + { + var find = qsItemIpiItemDetails.Find(a => s.Id == a.Pid); + if (find == null) + { + s.isCheck = 0; + s.result = "鏈畬鎴�"; + } + else + { + s.isCheck = find.count; + if (find.count == s.LevelNum && s.IsPass == 1) + s.result = "鍚堟牸"; + else if (find.count == s.LevelNum && s.IsPass == 0) + s.result = "涓嶅悎鏍�"; + else + s.result = "鏈畬鎴�"; + } + }); + + //浣跨敤linq琛ㄨ揪寮忚繃婊ゅ嚭鍥剧墖id涓嶄负绌虹殑鏁版嵁 + var itemIpiItems = + qsItemIpiItems.Where(s => s.Picture is { Length: > 0 }) + .ToList(); + if (itemIpiItems.Count > 0) + itemIpiItems.ForEach(s => + { + var qsItemIpiItem = qsItemIpiItems.Find(t => t.Id == s.Id); + //灏嗗瓧鑺傛暟缁勮浆鎹负Base64缂栫爜鐨勫瓧绗︿覆 + qsItemIpiItem.imageData = Convert.ToBase64String(s.Picture); + }); + + //鎺掑簭锛屾湭瀹屾垚鐨勬帓鍦ㄥ墠闈� + qsItemIpiItems = qsItemIpiItems.OrderBy(s => s.isCheck).ToList(); + + return qsItemIpiItems; + } + + public QsItem Save(QsItem item) + { + var qsItemIpiReq = item.From; + var qsItemIpiItems = item.Items; + SqlSugarHelper.UseTransactionWithOracle(db => + { + qsItemIpiReq.StatusDate = DateTime.Now; + var pid = db.Insertable(qsItemIpiReq) + .ExecuteReturnIdentity(); + qsItemIpiReq.Id = pid; + + item.gid = pid; + + qsItemIpiItems.ForEach(s => s.Pid = pid); + + return db.Insertable(qsItemIpiItems) + .ExecuteCommand(); + }); + item.Items = getQSItems(qsItemIpiReq.Id, null); + + //娌℃湁涓婁笅闄愮殑妫�楠岄」鐩嚜鍔ㄧ洏鐐逛负鍚堟牸 + item.Items.ForEach(s => + { + if (s.MaxValue != null || s.StandardValue != null || + s.MinValue != null) return; + var detail = new QsItemIpiItemDetail(); + detail.Pid = s.Id; + detail.Gid = item.gid; + detail.Fstand = "鈭�"; + detail.FcheckResu = "1"; + detail.UpdateBy = item.From.StatusUser; + detail.count = (int?)s.LevelNum; + SetQSItemDetail(detail); + }); + + item.Items = getQSItems(qsItemIpiReq.Id, null); + var sjPageResult = new SJPageResult + { Id = item.From.Id, Limit = 1, PageIndex = 1 }; + item.Result = getPage(sjPageResult)[0]; + + return item; + } + + public QsItem SaveItem(QsItem item) + { + var qsItemIpiItems = item.Items; + SqlSugarHelper.UseTransactionWithOracle(db => + { + qsItemIpiItems.ForEach(s => s.Pid = item.gid); + + return db.Insertable(qsItemIpiItems) + .ExecuteCommand(); + }); + item.Items = getQSItems(item.gid, null); + + //娌℃湁涓婁笅闄愮殑妫�楠岄」鐩嚜鍔ㄧ洏鐐逛负鍚堟牸 + item.Items.ForEach(s => + { + if (s.MaxValue != null || s.StandardValue != null || + s.MinValue != null) return; + var detail = new QsItemIpiItemDetail(); + detail.Pid = s.Id; + detail.Gid = item.gid; + detail.Fstand = "鈭�"; + detail.FcheckResu = "1"; + detail.UpdateBy = item.StatusUser; + detail.count = (int?)s.LevelNum; + SetQSItemDetail(detail); + }); + + item.Items = getQSItems(item.gid, null); + + return item; + } + + public int SetQSItemDetail(QsItemIpiItemDetail detail) + { + var oracle = SqlSugarHelper.UseTransactionWithOracle(db => + { + List<QsItemIpiItemDetail> result = new(); + for (var i = 0; i < detail.count; i++) + { + var item = new QsItemIpiItemDetail(); + item.Gid = detail.Gid; + item.Pid = detail.Pid; + item.Fstand = detail.Fstand; + item.FcheckResu = detail.FcheckResu; + item.CreateBy = detail.UpdateBy; + item.CreateDate = DateTime.Now; + result.Add(item); + } + + return db.Insertable(result).ExecuteCommand(); + }); + + detail.CreateBy = detail.UpdateBy; + + autoResult(detail); + + return oracle; + } + + public List<QsItemIpiItemDetail> getQSItemDetail(decimal? pid, decimal? gid) + { + var db = SqlSugarHelper.GetInstance(); + return db.Queryable<QsItemIpiItemDetail>() + .Where(s => s.Pid == pid) + .WhereIF(gid > 0, s => s.Gid == gid) + .ToList(); + } + + + //鑷姩鍒ゅ畾鏄惁鍚堟牸 + private int autoResult(QsItemIpiItemDetail detail) + { + var db = SqlSugarHelper.GetInstance(); + + // Single 娌℃湁鏌ヨ鍒扮粨鏋滄椂杩斿洖Null锛屽鏋滅粨鏋滃ぇ浜�1鏉′細鎶涘嚭閿欒 + var qsItemIpiItem = db.Queryable<QsItemIpiItem>() + .Single(s => s.Id == detail.Pid); + + if (qsItemIpiItem == null) return 0; + + var count = db.Queryable<QsItemIpiItemDetail>() + .Where(s => s.Pid == detail.Pid).Count(); + + + var result = 0; + + if (qsItemIpiItem.LevelNum != count) return 0; + + var passCount = db.Queryable<QsItemIpiItemDetail>() + .Where(s => s.Pid == detail.Pid && s.Fstand == "鈭�").Count(); + + if (count == passCount) result = 1; + + var useTransactionWithOracle = + SqlSugarHelper.UseTransactionWithOracle(db => + { + var commit = 0; + commit += db.Updateable<QsItemIpiItem>() + .SetColumns(s => s.IsPass == result) + .Where(s => s.Id == detail.Pid) + .ExecuteCommand(); + return commit; + }); + + + //鑷姩鍒ゅ畾鏄惁鍚堟牸 + //鑾峰彇妫�楠屽崟鐨勬楠岄」鐩悊璁轰釜鏁� + var sum = db.Queryable<QsItemIpiItem>() + .Where(s => s.Pid == detail.Gid).Sum(it => it.LevelNum); + if (sum == null || sum == 0) return 1; + + //鑾峰彇妫�楠屽崟涓嬬殑妫�楠岄」鐩疄闄呬釜鏁� + var icount = db.Queryable<QsItemIpiItemDetail>() + .Where(s => s.Gid == detail.Gid).Count(); + + if (icount == 0) return 1; + + //瀹為檯涓暟绛変簬鐞嗚涓暟鏃跺妫�楠屽崟杩涜鍒ゅ畾 + if (sum == icount) + { + result = 0; + + //鑾峰彇杩欎釜妫�楠屽崟涓嬬殑鎵�鏈夊悎鏍肩殑妫�楠岀粨鏋� + passCount = db.Queryable<QsItemIpiItemDetail>() + .Where(s => s.Gid == detail.Gid && s.Fstand == "鈭�").Count(); + + //鍚堟牸鐨勬楠岀粨鏋滅瓑浜庢�绘楠屾暟瑙嗕负鍚堟牸 + if (icount == passCount) result = 1; + + useTransactionWithOracle += + SqlSugarHelper.UseTransactionWithOracle(db => + { + return db.Updateable<QsItemIpiReq>() + .SetColumns(s => s.IsPass == result) + .SetColumns(s => s.StatusUser == detail.CreateBy) + .SetColumns(s => s.CompleteTime == DateTime.Now) + .Where(s => s.Id == detail.Gid) + .ExecuteCommand(); + }); + } + + return useTransactionWithOracle; + } + + public int UpdateQSItemDetail(QsItemIpiItemDetail detail) + { + var withOracle = SqlSugarHelper.UseTransactionWithOracle(db => + { + return db.Updateable<QsItemIpiItemDetail>() + .SetColumns(s => s.UpdateBy == detail.UpdateBy) + .SetColumns(s => s.UpdateDate == DateTime.Now) + .SetColumnsIF(StringUtil.IsNotNullOrEmpty(detail.Fstand), + s => s.Fstand == detail.Fstand) + .SetColumnsIF(StringUtil.IsNotNullOrEmpty(detail.FcheckResu), + s => s.FcheckResu == detail.FcheckResu) + .Where(s => s.Id == detail.Id) + .ExecuteCommand(); + }); + + detail.CreateBy = detail.UpdateBy; + + withOracle += autoResult(detail); + + return withOracle; + } + + + //涓昏〃淇敼澶囨敞瀛楁 + public int saveRemarksGid(QsItem dto) + { + return SqlSugarHelper.UseTransactionWithOracle(db => + { + return db.Updateable<QsItemIpiReq>() + .SetColumns(it => + it.Remarks == dto.Remarks) //SetColumns鏄彲浠ュ彔鍔犵殑 鍐�2涓氨2涓瓧娈佃祴鍊� + .Where(it => it.Id == dto.gid) + .ExecuteCommand(); + }); + } + + //瀛愯〃淇敼澶囨敞瀛楁 + public int saveRemarksPid(QsItem dto) + { + return SqlSugarHelper.UseTransactionWithOracle(db => + { + return db.Updateable<QsItemIpiItem>() + .SetColumns(it => + it.Remarks == dto.Remarks) //SetColumns鏄彲浠ュ彔鍔犵殑 鍐�2涓氨2涓瓧娈佃祴鍊� + .Where(it => it.Id == dto.pid) + .ExecuteCommand(); + }); + } + + //瀛欒〃淇敼澶囨敞瀛楁 + public int saveRemarksById(QsItem dto) + { + return SqlSugarHelper.UseTransactionWithOracle(db => + { + return db.Updateable<QsItemIpiItemDetail>() + .SetColumns(it => + it.Remarks == dto.Remarks) //SetColumns鏄彲浠ュ彔鍔犵殑 鍐�2涓氨2涓瓧娈佃祴鍊� + .Where(it => it.Id == dto.id) + .ExecuteCommand(); + }); + } + + public int removeXJ(decimal? id) + { + var withOracle = SqlSugarHelper.UseTransactionWithOracle(db => + { + var commit = 0; + //鍒犻櫎涓昏〃 + commit += db.Deleteable<QsItemIpiReq>().Where(s => s.Id == id) + .ExecuteCommand(); + //鍒犻櫎瀛愯〃 + commit += db.Deleteable<QsItemIpiItem>().Where(s => s.Pid == id) + .ExecuteCommand(); + //鍒犻櫎瀛欒〃 + commit += db.Deleteable<QsItemIpiItemDetail>() + .Where(s => s.Gid == id) + .ExecuteCommand(); + return commit; + }); + + return withOracle; + } +} \ No newline at end of file -- Gitblit v1.9.3