From c53a461aef16902ca78cdb7bd0c62305e2fee809 Mon Sep 17 00:00:00 2001 From: 啊鑫 <t2856754968@163.com> Date: 星期二, 29 七月 2025 19:23:04 +0800 Subject: [PATCH] Update OQC search API functionality --- MES.Service/service/QC/MesOqcItemsDetect02Manager.cs | 523 +++++++++++++++++++++++++++++++++++++++++++++++++++++----- 1 files changed, 477 insertions(+), 46 deletions(-) diff --git a/MES.Service/service/QC/MesOqcItemsDetect02Manager.cs b/MES.Service/service/QC/MesOqcItemsDetect02Manager.cs index a461509..881ee92 100644 --- a/MES.Service/service/QC/MesOqcItemsDetect02Manager.cs +++ b/MES.Service/service/QC/MesOqcItemsDetect02Manager.cs @@ -1,10 +1,11 @@ -锘縰sing Masuit.Tools; +锘縰sing System.Data; +using Masuit.Tools; using MES.Service.DB; using MES.Service.Dto.service; using MES.Service.Modes; using MES.Service.util; -using Microsoft.CSharp.RuntimeBinder; using SqlSugar; +using DbType = System.Data.DbType; namespace MES.Service.service.QC; @@ -29,45 +30,55 @@ var totalCount = 0; - //var itemIds = GetQaItem(db, queryObj.createUser); + var pageList = Db.Queryable<MesOqcItemsDetect02, MesItems + , SysUser, SysUser, MesDepots>((a, b, c, d, e) => + new JoinQueryInfos(JoinType.Left, a.ItemId == b.Id, + JoinType.Left, a.CreateBy == c.Fcode, + JoinType.Left, a.FcheckBy == d.Fcode, + JoinType.Left, a.DepotId == e.DepotId + )) + .WhereIF( + StringUtil.IsNotNullOrEmpty(queryObj.result) && + "鏈畬鎴�".Equals(queryObj.result), + (a, b, c, d, e) => a.FcheckResu == null || a.Fsubmit == 0) + .WhereIF( + StringUtil.IsNotNullOrEmpty(queryObj.result) && + !"鏈畬鎴�".Equals(queryObj.result), + (a, b, c, d, e) => a.FcheckResu != null && a.Fsubmit == 1) + .WhereIF(id > 0, (a, b, c, d, e) => a.Id == id) + .WhereIF(StringUtil.IsNotNullOrEmpty(queryObj.createUser), + (a, b, c, d, e) => c.Fname.Contains(queryObj.createUser)) + .WhereIF(StringUtil.IsNotNullOrEmpty(queryObj.ItemNo), + (a, b, c, d, e) => b.ItemNo.Contains(queryObj.ItemNo)) + .WhereIF(StringUtil.IsNotNullOrEmpty(queryObj.ItemName), + (a, b, c, d, e) => b.ItemName.Contains(queryObj.ItemName)) + .OrderByDescending((a, b, c, d, e) => a.Id) + .Select((a, b, c, d, e) => new MesOqcItemsDetect02() + { + ItemNo = b.ItemNo, + ItemName = b.ItemName, + ItemModel = b.ItemModel, + CreateUser = c.Fname, + FcheckUser = d.Fname, + DepotName = e.DepotName + }, true) + .ToPageList(queryObj.PageIndex, queryObj.Limit, ref totalCount); + return (pageList, totalCount); + } - // var pageList = db.Queryable<LtsLlj>() - // .WhereIF( - // StringUtil.IsNotNullOrEmpty(queryObj.result) && - // "鏈畬鎴�".Equals(queryObj.result), - // a => a.FcheckResu == null) - // .WhereIF( - // StringUtil.IsNotNullOrEmpty(queryObj.result) && - // !"鏈畬鎴�".Equals(queryObj.result), - // a => a.FcheckResu != null) - // .WhereIF(id > 0, a => a.Id == id) + public List<MesOqcItemsDetectDetail5> GetDetail5(OQCDto dto) + { + return Db.Queryable<MesOqcItemsDetectDetail5>() + .Where(s => s.ReleaseNo == dto.ReleaseNo) + .ToList(); + } - //鍔犵瓫閫夋潯浠�,鏍规嵁渚涘簲鍟嗭紝鐗╂枡缂栫爜锛岀墿鏂欏悕绉版悳绱� - //.WhereIF(queryObj.SearchValue!=null && queryObj.SearchValue!="", (a) => a.SuppName == queryObj.SearchValue|| a.ItemName == queryObj.SearchValue || a.ItemNo == queryObj.SearchValue ) - // .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); - // return (pageList, totalCount); - return (new List<MesOqcItemsDetect02>(), totalCount); + public List<MesOqcItemsDetectDetail12> GetDetail12(OQCDto dto) + { + return Db.Queryable<MesOqcItemsDetectDetail12>() + .Where(s => s.ReleaseNo == dto.ReleaseNo + && s.MainId == dto.MainId) + .ToList(); } public MesInvItemStocks GetItemBarCode(XJPageResult queryObj) @@ -86,6 +97,16 @@ throw new NotImplementedException("鏉$爜涓嶅瓨鍦ㄤ簬搴撳瓨涓�"); } + // 妫�鏌ユ潯鐮佹槸鍚﹀凡缁忓瓨鍦ㄤ簬MesOqcBarcode琛ㄤ腑锛堝凡妫�楠岃繃锛� + var existingBarcode = Db.Queryable<MesOqcBarcode>() + .Where(a => a.ItemBarcode == queryObj.ItemCode) + .First(); + + if (existingBarcode != null) + { + throw new NotImplementedException("璇ユ潯鐮佸凡缁忔楠岃繃锛屼笉鑳介噸澶嶆楠�"); + } + var mesDepots = Db.Queryable<MesDepots>() .Where(s => s.DepotId == 121163).First(); @@ -94,21 +115,431 @@ throw new NotImplementedException("鍙兘鎵弿" + mesDepots.DepotCode + "浠撳簱鐨勭爜"); } - + if (mesInvItemStocks.ItemId is null or 0) { throw new NotImplementedException("鐗╂枡鏄潪娉曠殑"); } var mesItems = Db.Queryable<MesItems>() - .Where(b=>b.Id == mesInvItemStocks.ItemId) + .Where(b => b.Id == mesInvItemStocks.ItemId) + .Select<MesItems>(b => new MesItems + { + ItemName = b.ItemName, + ItemModel = b.ItemModel, + }) .First(); - - // mesInvItemStocks.ItemName = mesItems.ItemName; - // mesInvItemStocks.ItemModel = mesItems.ItemModel; + + mesInvItemStocks.ItemName = mesItems.ItemName; + mesInvItemStocks.ItemModel = mesItems.ItemModel; return mesInvItemStocks; } - - + + //OQCDto + public int ItemBarCodeSubmit(OQCDto dto) + { + //getbillcode1 + var billNo = Db.Ado.GetString( + "SELECT getbillcode1('1000', '1000', 'OQC') FROM DUAL"); + + var dtoItemBarCodeData = dto.ItemBarCodeData; + + var sum = dtoItemBarCodeData.Sum(s => s.Quantity); + + MesOqcItemsDetect02 from = new MesOqcItemsDetect02 + { + CreateBy = dto.CreateUser, + CreateDate = DateTime.Now, + ReleaseNo = billNo, + Fsubmit = 0, + Ismodify1 = 0, + FcheckBy = dto.CreateUser, + FcheckDate = DateTime.Now, + ItemNo = dtoItemBarCodeData[0].ItemNo, + ItemId = dtoItemBarCodeData[0].ItemId, + PlanQty = sum, + SaleOrderNo = dtoItemBarCodeData[0].TaskNo, + DepotId = 121163 + }; + + var id = Db.Insertable(from) + .IgnoreColumns(ignoreNullColumn: true) + .ExecuteReturnIdentity(); + + //璁板綍鏉$爜 + List<MesOqcBarcode> oqcBarcodes = new List<MesOqcBarcode>(); + + foreach (var mesInvItemStockse in dtoItemBarCodeData) + { + MesOqcBarcode entity = new MesOqcBarcode() + { + CreateBy = dto.CreateUser, + CreateDate = DateTime.Now, + ItemBarcode = mesInvItemStockse.ItemBarcode, + ItemId = mesInvItemStockse.ItemId, + ItemNo = mesInvItemStockse.ItemNo, + Qty = mesInvItemStockse.Quantity, + Pid = id, + SaleOrderNo = mesInvItemStockse.TaskNo, + }; + oqcBarcodes.Add(entity); + } + + var executeCommand = Db.Insertable(oqcBarcodes).PageSize(1) + .IgnoreColumnsNull() + .ExecuteCommand(); + + //PRC_OQC_ITEM_INSERT_BTN + if (executeCommand > 0 && id > 0) + { + // 瀹氫箟杈撳嚭鍙傛暟 + var outputResult = new SugarParameter("PO_RESULT", null, + DbType.Int32, ParameterDirection.Output, 4000); + var outputMessage = new SugarParameter("PO_TEXT", null, + DbType.String, + ParameterDirection.Output, 4000); + + // 瀹氫箟杈撳叆鍙傛暟 + var parameters = new List<SugarParameter> + { + new("P_RELEASE_NO", from.ReleaseNo, DbType.String, + ParameterDirection.Input), + new("P_ITEM_ID", from.ItemId, DbType.Int32, + ParameterDirection.Input), + new("P_BILL_NO ", "", DbType.String, + ParameterDirection.Input), + outputResult, + outputMessage + }; + + var db = SqlSugarHelper.GetInstance(); + + // 浣跨敤 SqlSugar 鎵ц瀛樺偍杩囩▼ + db.Ado.ExecuteCommand( + "BEGIN PRC_OQC_ITEM_INSERT_BTN(:P_RELEASE_NO,:P_ITEM_ID,:P_BILL_NO,:PO_RESULT, :PO_TEXT); END;", + parameters.ToArray()); + + // 鑾峰彇杈撳嚭鍙傛暟鐨勫�� + var resultValue = outputResult.Value?.ToString(); + var messageValue = outputMessage.Value?.ToString(); + + if ("1".Equals(resultValue)) + // 澶勭悊澶辫触鎯呭喌锛岃繑鍥為敊璇俊鎭� + throw new Exception($"鎿嶄綔澶辫触: {messageValue}"); + + // 褰� resultValue 涓� "0" 鏃惰繑鍥炴垚鍔熺姸鎬� + return id; + } + + return 0; + } + + public bool Regenerate(MesOqcItemsDetect02 from) + { + // 瀹氫箟杈撳嚭鍙傛暟 + var outputResult = new SugarParameter("PO_RESULT", null, + DbType.Int32, ParameterDirection.Output, 4000); + var outputMessage = new SugarParameter("PO_TEXT", null, + DbType.String, + ParameterDirection.Output, 4000); + + // 瀹氫箟杈撳叆鍙傛暟 + var parameters = new List<SugarParameter> + { + new("P_RELEASE_NO", from.ReleaseNo, DbType.String, + ParameterDirection.Input), + new("P_ITEM_ID", from.ItemId, DbType.Int32, + ParameterDirection.Input), + new("P_BILL_NO ", "", DbType.String, + ParameterDirection.Input), + outputResult, + outputMessage + }; + + var db = SqlSugarHelper.GetInstance(); + + // 浣跨敤 SqlSugar 鎵ц瀛樺偍杩囩▼ + db.Ado.ExecuteCommand( + "BEGIN PRC_OQC_ITEM_INSERT_BTN(:P_RELEASE_NO,:P_ITEM_ID,:P_BILL_NO,:PO_RESULT, :PO_TEXT); END;", + parameters.ToArray()); + + // 鑾峰彇杈撳嚭鍙傛暟鐨勫�� + var resultValue = outputResult.Value?.ToString(); + var messageValue = outputMessage.Value?.ToString(); + + if ("1".Equals(resultValue)) + // 澶勭悊澶辫触鎯呭喌锛岃繑鍥為敊璇俊鎭� + throw new Exception($"鎿嶄綔澶辫触: {messageValue}"); + + // 褰� resultValue 涓� "0" 鏃惰繑鍥炴垚鍔熺姸鎬� + return true; + } + + public OQCDto getXjDetail02ById(decimal? id) + { + var rkjDto = new OQCDto(); + + var qsItemOqcItem = + Db.Queryable<MesOqcItemsDetectDetail5>().Single(s => s.Id == id); + + /* if (qsItemOqcItem.IsPass == 0) + qsItemOqcItem.Result = "涓嶅悎鏍�"; + else if (qsItemOqcItem.IsPass == 1) + qsItemOqcItem.Result = "鍚堟牸"; + else + qsItemOqcItem.Result = "鏈畬鎴�"; + + if (qsItemOqcItem.Picture is { Length: > 0 }) + qsItemOqcItem.imageData = + Convert.ToBase64String(qsItemOqcItem.Picture); + */ + //鑾峰彇涓嶅悎鏍兼暟 + var count = Db.Queryable<MesOqcItemsDetectDetail12>() + .Where(s => s.Fstand == "脳" && s.MainId == id).Count(); + + qsItemOqcItem.Unqualified = count; + + rkjDto.ItemXj01 = qsItemOqcItem; + + + rkjDto.ItemXj02s = Db.Queryable<MesOqcItemsDetectDetail12>() + .Where(s => s.MainId == id) + .ToList(); + + return rkjDto; + } + + public int UpdateQSItemDetail(MesOqcItemsDetectDetail12 detail) + { + var withOracle = SqlSugarHelper.UseTransactionWithOracle(db => + { + return db.Updateable<MesOqcItemsDetectDetail12>() + .SetColumns(s => s.LastupdateBy == detail.LastupdateBy) + // .SetColumns(s => s.LastupdateDate == 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.MainId == detail.MainId && s.Id == detail.Id) + .ExecuteCommand(); + }); + + detail.CreateBy = detail.LastupdateBy; + + withOracle += autoResult(detail); + + return withOracle; + } + + private int autoResult(MesOqcItemsDetectDetail12 detail) + { + var db = SqlSugarHelper.GetInstance(); + + // Single 娌℃湁鏌ヨ鍒扮粨鏋滄椂杩斿洖Null锛屽鏋滅粨鏋滃ぇ浜�1鏉′細鎶涘嚭閿欒 + var QsItemOqcItem = db.Queryable<MesOqcItemsDetectDetail5>() + .Single(s => s.Id == detail.MainId); + + if (QsItemOqcItem == null) return 0; + + //鏌ヨ杩欎釜妫�楠岄」鐩笅鐨勬楠岀粨鏋� + var count = db.Queryable<MesOqcItemsDetectDetail12>() + .Where(s => s.MainId == detail.MainId).Count(); + + updateDetail5(detail); + var result = ""; + + //妫�楠屽疄闄呯粨鏋滀笉绛変簬搴旇妫�楠岀殑涓暟鏃剁洿鎺ユ帹鍑� + if (QsItemOqcItem.CheckQyt != count) return 0; + + //鍚堟牸鐨勬湁澶氬皯涓� + var passCount = db.Queryable<MesOqcItemsDetectDetail12>() + .Where(s => s.MainId == detail.MainId && s.Fstand == "鈭�").Count(); + //涓嶅悎鏍肩殑鏈夊灏戜釜 + var noCount = db.Queryable<MesOqcItemsDetectDetail12>() + .Where(s => s.MainId == detail.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<MesOqcItemsDetectDetail5>() + .SetColumns(s => s.FcheckResu == result) + .SetColumns(s => s.FenterQty == count) + .Where(s => s.Id == detail.MainId) + .ExecuteCommand(); + + return commit; + }); + + var isNull = db.Queryable<MesOqcItemsDetectDetail5>() + .Where(s => s.ReleaseNo == detail.ReleaseNo && s.FcheckResu == null) + .Count(); + + if (isNull > 0) return 1; + //鑾峰彇妫�楠屽崟鐨勬楠岄」鐩殑涓暟 + var sum = db.Queryable<MesOqcItemsDetectDetail5>() + .Where(s => s.ReleaseNo == detail.ReleaseNo).Count(); + + if (sum == 0) return 1; + + //鑾峰彇妫�楠屽崟涓嬬殑鍚堟牸鐨勬楠岄」鐩釜鏁� + var icount = db.Queryable<MesOqcItemsDetectDetail5>() + .Where(s => s.ReleaseNo == detail.ReleaseNo && s.FcheckResu == "鍚堟牸") + .Count(); + + var FcheckResu = "涓嶅悎鏍�"; + + //瀹為檯涓暟绛変簬鐞嗚涓暟鏃跺妫�楠屽崟杩涜鍒ゅ畾 + if (sum == icount) + //鍚堟牸鐨勬楠岀粨鏋滅瓑浜庢�绘楠屾暟瑙嗕负鍚堟牸 + FcheckResu = "鍚堟牸"; + var sysUser = db.Queryable<SysUser>() + .Where(s => s.Fcode == detail.CreateBy).First(); + + SqlSugarHelper.UseTransactionWithOracle(db => + { + return db.Updateable<MesOqcItemsDetect02>() + .SetColumns(s => s.FcheckResu == FcheckResu) + .SetColumns(s => s.FcheckDate == DateTime.Now) + //.SetColumns(s => s.FcheckBy == sysUser.Fname) + .SetColumns(s => s.LastupdateBy == detail.CreateBy) + .SetColumns(s => s.LastupdateDate == DateTime.Now) + .Where(s => s.ReleaseNo == detail.ReleaseNo) + .ExecuteCommand(); + }); + // if (FcheckResu.Equals("涓嶅悎鏍�")) + //鑷姩鐢熸垚鍏ュ簱妫�寮傚父瀵圭瓥 + /// saveDetect02(detail.Id, detail.CreateBy); + + return useTransactionWithOracle; + } + + private int updateDetail5(MesOqcItemsDetectDetail12 detail) + { + var db = SqlSugarHelper.GetInstance(); + + //鏌ヨ杩欎釜妫�楠岄」鐩笅鐨勬楠屾暟閲� + var count = db.Queryable<MesOqcItemsDetectDetail12>() + .Where(s => s.MainId == detail.MainId).Count(); + + //鑾峰彇涓嶅悎鏍兼暟 + var countNo = db.Queryable<MesOqcItemsDetectDetail12>() + .Where(s => s.MainId == detail.MainId && s.Fstand == "脳").Count(); + //鏇存柊妫�楠屾槑缁嗗凡妫�鏁伴噺 + var withOracle = SqlSugarHelper.UseTransactionWithOracle(db => + { + return db.Updateable<MesOqcItemsDetectDetail5>() + .SetColumns(s => s.FenterQty == count) + .SetColumns(s => s.FngQty == countNo) + .Where(s => s.Id == detail.MainId) + .ExecuteCommand(); + }); + + return withOracle; + } + + public int saveRemarksPid(LLJDto dto) + { + return SqlSugarHelper.UseTransactionWithOracle(db => + { + return db.Updateable<MesOqcItemsDetectDetail5>() + .SetColumns(it => + it.Remarks == dto.Remarks) //SetColumns鏄彲浠ュ彔鍔犵殑 鍐�2涓氨2涓瓧娈佃祴鍊� + .Where(it => it.Id == dto.pid) + .ExecuteCommand(); + }); + } + + public bool IqcQaSubmit(LLJDto dto) + { + try + { + // 瀹氫箟杈撳嚭鍙傛暟 + var outputResult = new SugarParameter("o_Result", null, + DbType.Int32, ParameterDirection.Output, + 4000); + + var outputMessage = new SugarParameter("o_Msg", null, + DbType.String, + ParameterDirection.Output, 4000); + + // 瀹氫箟杈撳叆鍙傛暟 + var parameters = new List<SugarParameter> + { + new("p_Release_No", dto.releaseNo, DbType.String, + ParameterDirection.Input), + new("p_User", dto.userNo, DbType.String, + ParameterDirection.Input), + outputResult, + outputMessage + }; + + var db = SqlSugarHelper.GetInstance(); + + // 浣跨敤 SqlSugar 鎵ц瀛樺偍杩囩▼ + db.Ado.ExecuteCommand( + "BEGIN PRC_MES_OQC_QA_SUBMIT82(:p_Release_No, :p_User, :o_Result, :o_Msg); END;", + parameters.ToArray()); + + // 鑾峰彇杈撳嚭鍙傛暟鐨勫�� + var resultValue = outputResult.Value?.ToString(); + var messageValue = outputMessage.Value?.ToString(); + + if ("1".Equals(resultValue)) throw new Exception(messageValue); + + return true; + } + catch (Exception ex) + { + throw new Exception(ex.Message); + } + } + + public int saveRemarksGid(LLJDto dto) + { + return SqlSugarHelper.UseTransactionWithOracle(db => + { + return db.Updateable<MesOqcItemsDetect02>() + .SetColumns(it => + it.Remeke == dto.Remarks) //SetColumns鏄彲浠ュ彔鍔犵殑 鍐�2涓氨2涓瓧娈佃祴鍊� + .Where(it => it.ReleaseNo == dto.releaseNo) + .ExecuteCommand(); + }); + } + + public int SetQSItemDetail(MesOqcItemsDetectDetail12 detail) + { + var oracle = SqlSugarHelper.UseTransactionWithOracle(db => + { + List<MesOqcItemsDetectDetail12> result = new(); + for (var i = 0; i < detail.count; i++) + { + var item = new MesOqcItemsDetectDetail12(); + item.MainId = detail.MainId; + item.ReleaseNo = detail.ReleaseNo; + item.Fstand = detail.Fstand; + item.FcheckResu = detail.FcheckResu; + item.CreateBy = detail.LastupdateBy; + item.CreateDate = DateTime.Now; + item.Factory = "1000"; + item.Company = "1000"; + result.Add(item); + } + + return db.Insertable(result).ExecuteCommand(); + }); + + detail.CreateBy = detail.LastupdateBy; + + autoResult(detail); + + return oracle; + } } \ No newline at end of file -- Gitblit v1.9.3