From 36fdf1c876e5b9daa4446b9c33e9c532d725798b Mon Sep 17 00:00:00 2001 From: 啊鑫 <t2856754968@163.com> Date: 星期二, 08 七月 2025 16:50:53 +0800 Subject: [PATCH] 重构代码质量和安全性改进 --- MES.Service/service/QC/LljService.cs | 271 +++++++++++++++++++++++++++++++++++++++--------------- 1 files changed, 195 insertions(+), 76 deletions(-) diff --git a/MES.Service/service/QC/LljService.cs b/MES.Service/service/QC/LljService.cs index 7eef5e6..790f525 100644 --- a/MES.Service/service/QC/LljService.cs +++ b/MES.Service/service/QC/LljService.cs @@ -14,11 +14,19 @@ { public (List<LtsLlj> item, int TotalCount) GetPage(XJPageResult queryObj) { + if (queryObj == null) + throw new ArgumentNullException(nameof(queryObj)); + + if (string.IsNullOrEmpty(queryObj.createUser)) + return (new List<LtsLlj>(), 0); + if (queryObj.createUser.IsNullOrEmpty()) return ([], 0); var db = SqlSugarHelper.GetInstance(); - var id = Convert.ToDecimal(queryObj.id); + //瀹夊叏鐨勭被鍨嬭浆鎹� + if (!decimal.TryParse(queryObj.id, out var id)) + id = 0; var totalCount = 0; @@ -37,13 +45,26 @@ //鍔犵瓫閫夋潯浠�,鏍规嵁渚涘簲鍟嗭紝鐗╂枡缂栫爜锛岀墿鏂欏悕绉版悳绱� //.WhereIF(queryObj.SearchValue!=null && queryObj.SearchValue!="", (a) => a.SuppName == queryObj.SearchValue|| a.ItemName == queryObj.SearchValue || a.ItemNo == queryObj.SearchValue ) - .WhereIF(!string.IsNullOrEmpty(queryObj.SearchValue), - a => a.SuppName.ToLower() - .Contains(queryObj.SearchValue.ToLower()) - || a.ItemName.ToLower() - .Contains(queryObj.SearchValue.ToLower()) - || a.ItemNo.ToLower() - .Contains(queryObj.SearchValue.ToLower())) + .WhereIF( + queryObj.SelectedIndex == "0" && + !string.IsNullOrEmpty(queryObj.SearchValue), + a => (a.ItemNo.ToLower() + .Contains(queryObj.SearchValue.ToLower()))) + .WhereIF( + queryObj.SelectedIndex == "1" && + !string.IsNullOrEmpty(queryObj.SearchValue), + a => (a.ItemName.ToLower() + .Contains(queryObj.SearchValue.ToLower()))) + .WhereIF( + queryObj.SelectedIndex == "2" && + !string.IsNullOrEmpty(queryObj.SearchValue), + a => (a.SuppName.ToLower() + .Contains(queryObj.SearchValue.ToLower()))) + .WhereIF(queryObj.result == "宸插畬鎴�", + a => (a.IqcDate >= queryObj.startDate.ToDateTime() && + a.IqcDate <= queryObj.endDate.ToDateTime().AddDays(1))) + .WhereIF(queryObj.result == "宸插畬鎴�" && queryObj.state != "鎵�鏈夌姸鎬�", + a => a.FcheckResu == queryObj.state) .OrderByDescending(a => a.Id) .ToPageList(queryObj.PageIndex, queryObj.Limit, ref totalCount); @@ -74,7 +95,7 @@ // FcheckItem = b.FcheckItem, // FdownAllow = b.FdownAllow, // FcheckLevel = b.Frequency, - // Fstand = b.Fstand, + // Fstand = decimal.Parse(b.Fstand), // FupAllow = b.FupAllow, // SampleSizeNo = b.SampleSizeNo, // FenterQty = 0, @@ -248,9 +269,10 @@ { var db = SqlSugarHelper.GetInstance(); - return db.Queryable<MesQaItemsDetectDetail5, MesQaItemsDetectDetail12>( - (a, b) => - new JoinQueryInfos(JoinType.Left, a.Id == b.MainId)) + return db + .Queryable<MesQaItemsDetectDetail5, + MesQaItemsDetectDetail12>((a, b) => + new JoinQueryInfos(JoinType.Left, a.Id == b.MainId)) .Where((a, b) => a.ReleaseNo == releaseNo) // .WhereIF(id > 0, (a, b) => a.Id == id) .GroupBy((a, b) => new @@ -325,96 +347,193 @@ } + /// <summary> + /// 鑷姩澶勭悊妫�楠岀粨鏋滅殑涓绘柟娉� + /// </summary> private int autoResult(MesQaItemsDetectDetail12 detail) { - var db = SqlSugarHelper.GetInstance(); + // 鑾峰彇妫�楠岄」鐩俊鎭� + var inspectionItem = GetInspectionItem(detail.MainId); + if (inspectionItem == null) return 0; - // Single 娌℃湁鏌ヨ鍒扮粨鏋滄椂杩斿洖Null锛屽鏋滅粨鏋滃ぇ浜�1鏉′細鎶涘嚭閿欒 - var QsItemOqcItem = db.Queryable<MesQaItemsDetectDetail5>() - .Single(s => s.Id == detail.MainId); - - if (QsItemOqcItem == null) return 0; - - //鏌ヨ杩欎釜妫�楠岄」鐩笅鐨勬楠岀粨鏋� - var count = db.Queryable<MesQaItemsDetectDetail12>() - .Where(s => s.MainId == detail.MainId).Count(); - + // 鑾峰彇妫�楠岃鏁颁俊鎭� + var inspectionCounts = GetInspectionCounts(detail.MainId); + + // 鏇存柊妫�楠屾槑缁� updateDetail5(detail); - var result = ""; - //妫�楠屽疄闄呯粨鏋滀笉绛変簬搴旇妫�楠岀殑涓暟鏃剁洿鎺ユ帹鍑� - if (QsItemOqcItem.CheckQyt != count) return 0; + // 妫�鏌ユ槸鍚︽楠屽畬鎴� + if (!IsInspectionItemComplete(inspectionItem, inspectionCounts.TotalCount)) + return 0; - //鍚堟牸鐨勬湁澶氬皯涓� + // 纭畾妫�楠岀粨鏋� + var itemResult = DetermineInspectionItemResult(inspectionCounts, inspectionItem); + + // 鏇存柊妫�楠岄」鐩粨鏋� + var updateResult = UpdateInspectionItemResult(detail.MainId, itemResult, inspectionCounts.TotalCount); + + // 妫�鏌ユ暣涓楠屽崟鏄惁瀹屾垚 + if (IsInspectionOrderComplete(detail.ReleaseNo)) + { + ProcessCompleteInspectionOrder(detail); + } + + return updateResult; + } + + /// <summary> + /// 鑾峰彇妫�楠岄」鐩俊鎭� + /// </summary> + private MesQaItemsDetectDetail5? GetInspectionItem(decimal? mainId) + { + var db = SqlSugarHelper.GetInstance(); + return db.Queryable<MesQaItemsDetectDetail5>() + .Single(s => s.Id == mainId); + } + + /// <summary> + /// 鑾峰彇妫�楠岃鏁颁俊鎭� + /// </summary> + private (int TotalCount, int PassCount, int FailCount) GetInspectionCounts(decimal? mainId) + { + var db = SqlSugarHelper.GetInstance(); + + var totalCount = db.Queryable<MesQaItemsDetectDetail12>() + .Where(s => s.MainId == mainId).Count(); + var passCount = db.Queryable<MesQaItemsDetectDetail12>() - .Where(s => s.MainId == detail.MainId && s.Fstand == "鈭�").Count(); - //涓嶅悎鏍肩殑鏈夊灏戜釜 - var noCount = db.Queryable<MesQaItemsDetectDetail12>() - .Where(s => s.MainId == detail.MainId && s.Fstand == "脳").Count(); + .Where(s => s.MainId == mainId && s.Fstand == "鈭�").Count(); + + var failCount = db.Queryable<MesQaItemsDetectDetail12>() + .Where(s => s.MainId == mainId && s.Fstand == "脳").Count(); - if (count == passCount) - result = "鍚堟牸"; - //else if (count - passCount < QsItemOqcItem.FreQty) - // result = "涓嶅悎鏍�"; - else if (noCount >= QsItemOqcItem.FreQty) - result = "涓嶅悎鏍�"; - var useTransactionWithOracle = SqlSugarHelper.UseTransactionWithOracle( - db => - { - var commit = 0; - commit += db.Updateable<MesQaItemsDetectDetail5>() - .SetColumns(s => s.FcheckResu == result) - .SetColumns(s => s.FenterQty == count) - .Where(s => s.Id == detail.MainId) - .ExecuteCommand(); + return (totalCount, passCount, failCount); + } - return commit; - }); + /// <summary> + /// 妫�鏌ユ楠岄」鐩槸鍚﹀畬鎴� + /// </summary> + private bool IsInspectionItemComplete(MesQaItemsDetectDetail5 inspectionItem, int actualCount) + { + return inspectionItem.CheckQyt == actualCount; + } - var isNull = db.Queryable<MesQaItemsDetectDetail5>() - .Where(s => s.ReleaseNo == detail.ReleaseNo && s.FcheckResu == null) + /// <summary> + /// 纭畾妫�楠岄」鐩粨鏋� + /// </summary> + private string DetermineInspectionItemResult((int TotalCount, int PassCount, int FailCount) counts, + MesQaItemsDetectDetail5 inspectionItem) + { + if (counts.TotalCount == counts.PassCount) + return "鍚堟牸"; + else if (counts.FailCount >= inspectionItem.FreQty) + return "涓嶅悎鏍�"; + else + return string.Empty; // 鏈畬鎴愮姸鎬� + } + + /// <summary> + /// 鏇存柊妫�楠岄」鐩粨鏋� + /// </summary> + private int UpdateInspectionItemResult(decimal? mainId, string result, int count) + { + return SqlSugarHelper.UseTransactionWithOracle(db => + { + return db.Updateable<MesQaItemsDetectDetail5>() + .SetColumns(s => s.FcheckResu == result) + .SetColumns(s => s.FenterQty == count) + .Where(s => s.Id == mainId) + .ExecuteCommand(); + }); + } + + /// <summary> + /// 妫�鏌ユ暣涓楠屽崟鏄惁瀹屾垚 + /// </summary> + private bool IsInspectionOrderComplete(string? releaseNo) + { + var db = SqlSugarHelper.GetInstance(); + + // 妫�鏌ユ槸鍚﹁繕鏈夋湭瀹屾垚鐨勬楠岄」鐩� + var incompleteCount = db.Queryable<MesQaItemsDetectDetail5>() + .Where(s => s.ReleaseNo == releaseNo && s.FcheckResu == null) .Count(); - if (isNull > 0) return 1; + return incompleteCount == 0; + } + /// <summary> + /// 澶勭悊瀹屾垚鐨勬楠屽崟 + /// </summary> + private void ProcessCompleteInspectionOrder(MesQaItemsDetectDetail12 detail) + { + var db = SqlSugarHelper.GetInstance(); + + // 鑾峰彇妫�楠屽崟涓嬬殑鎵�鏈夋楠岄」鐩� + var inspectionCounts = GetInspectionOrderCounts(detail.ReleaseNo); + + // 纭畾鏁翠釜妫�楠屽崟鐨勭粨鏋� + var orderResult = DetermineInspectionOrderResult(inspectionCounts); + + // 鑾峰彇鐢ㄦ埛淇℃伅 + var sysUser = GetUserInfo(detail.CreateBy); + + // 鏇存柊妫�楠屽崟缁撴灉 + UpdateInspectionOrderResult(detail.ReleaseNo, orderResult, sysUser?.Fname, detail.CreateBy); + } - //鑾峰彇妫�楠屽崟鐨勬楠岄」鐩殑涓暟 - var sum = db.Queryable<MesQaItemsDetectDetail5>() - .Where(s => s.ReleaseNo == detail.ReleaseNo).Count(); - - if (sum == 0) return 1; - - //鑾峰彇妫�楠屽崟涓嬬殑鍚堟牸鐨勬楠岄」鐩釜鏁� - var icount = db.Queryable<MesQaItemsDetectDetail5>() - .Where(s => s.ReleaseNo == detail.ReleaseNo && s.FcheckResu == "鍚堟牸") + /// <summary> + /// 鑾峰彇妫�楠屽崟缁熻淇℃伅 + /// </summary> + private (int TotalItems, int PassedItems) GetInspectionOrderCounts(string? releaseNo) + { + var db = SqlSugarHelper.GetInstance(); + + var totalItems = db.Queryable<MesQaItemsDetectDetail5>() + .Where(s => s.ReleaseNo == releaseNo).Count(); + + var passedItems = db.Queryable<MesQaItemsDetectDetail5>() + .Where(s => s.ReleaseNo == releaseNo && s.FcheckResu == "鍚堟牸") .Count(); - var FcheckResu = "涓嶅悎鏍�"; + return (totalItems, passedItems); + } - //瀹為檯涓暟绛変簬鐞嗚涓暟鏃跺妫�楠屽崟杩涜鍒ゅ畾 - if (sum == icount) - //鍚堟牸鐨勬楠岀粨鏋滅瓑浜庢�绘楠屾暟瑙嗕负鍚堟牸 - FcheckResu = "鍚堟牸"; + /// <summary> + /// 纭畾妫�楠屽崟缁撴灉 + /// </summary> + private string DetermineInspectionOrderResult((int TotalItems, int PassedItems) counts) + { + // 鎵�鏈夋楠岄」鐩兘鍚堟牸鏃讹紝鏁翠釜妫�楠屽崟鎵嶅悎鏍� + return counts.TotalItems == counts.PassedItems ? "鍚堟牸" : "涓嶅悎鏍�"; + } - var sysUser = db.Queryable<SysUser>() - .Where(s => s.Fcode == detail.CreateBy).First(); + /// <summary> + /// 鑾峰彇鐢ㄦ埛淇℃伅 + /// </summary> + private SysUser? GetUserInfo(string? userCode) + { + var db = SqlSugarHelper.GetInstance(); + return db.Queryable<SysUser>() + .Where(s => s.Fcode == userCode).First(); + } + /// <summary> + /// 鏇存柊妫�楠屽崟缁撴灉 + /// </summary> + private void UpdateInspectionOrderResult(string? releaseNo, string result, string? checkedBy, string? updatedBy) + { SqlSugarHelper.UseTransactionWithOracle(db => { return db.Updateable<MesQaItemsDetect01>() - .SetColumns(s => s.FcheckResu == FcheckResu) + .SetColumns(s => s.FcheckResu == result) .SetColumns(s => s.FcheckDate == DateTime.Now) - .SetColumns(s => s.FcheckBy == sysUser.Fname) - .SetColumns(s => s.LastupdateBy == detail.CreateBy) + .SetColumns(s => s.FcheckBy == checkedBy) + .SetColumns(s => s.LastupdateBy == updatedBy) .SetColumns(s => s.LastupdateDate == DateTime.Now) - .Where(s => s.ReleaseNo == detail.ReleaseNo) + .Where(s => s.ReleaseNo == releaseNo) .ExecuteCommand(); }); - // if (FcheckResu.Equals("涓嶅悎鏍�")) - //鑷姩鐢熸垚鍏ュ簱妫�寮傚父瀵圭瓥 - /// saveDetect02(detail.Id, detail.CreateBy); - - return useTransactionWithOracle; } /* public int saveDetect02(decimal? gid, string? createBy) { -- Gitblit v1.9.3