From 59af98c2aeb6c40d820e8d5c2f9f6764f57721bd Mon Sep 17 00:00:00 2001 From: 啊鑫 <t2856754968@163.com> Date: 星期三, 10 九月 2025 17:11:23 +0800 Subject: [PATCH] 覆盖祈禧的代码 --- service/Wom/MesWorkProdManager.cs | 758 +++++++++++++++++++++------------------------------------- 1 files changed, 275 insertions(+), 483 deletions(-) diff --git a/service/Wom/MesWorkProdManager.cs b/service/Wom/MesWorkProdManager.cs index c1352bf..07d18e1 100644 --- a/service/Wom/MesWorkProdManager.cs +++ b/service/Wom/MesWorkProdManager.cs @@ -1,12 +1,8 @@ 锘縰sing NewPdaSqlServer.DB; using NewPdaSqlServer.Dto.service; using NewPdaSqlServer.entity; -using NewPdaSqlServer.entity.Base; using NewPdaSqlServer.util; using SqlSugar; -using System.Data; -using System.Data.SqlClient; -using static Microsoft.EntityFrameworkCore.DbLoggerCategory; namespace NewPdaSqlServer.service.Wom; @@ -46,212 +42,10 @@ /// </exception> public ScanWorkResult ScanWorkAsync(ScanWorkRequest request) { - // // 1. 楠岃瘉鍛樺伐淇℃伅 - // var staff = Db.Queryable<MesStaff>() - // .Where(x => x.StaffNo == request.StaffNo) - // .First(); - // if (staff == null) - // throw new Exception("璇峰厛閫夋嫨浜哄憳"); - - // // 2. 楠岃瘉鏉$爜淇℃伅 - // var barcode = Db.Queryable<MesInvItemBarcodes>() - // .Where(x => x.ItemBarcode == request.ItemBarcode) - // .First(); - // if (barcode == null) - // throw new Exception($"鏃犳鏉$爜锛岃鏍稿锛亄request.ItemBarcode}"); - - // // 3. 楠岃瘉鐗╂枡淇℃伅 - // var item = Db.Queryable<MesItems>() - // .Where(x => x.Id == barcode.ItemId) - // .First(); - // if (item == null) - // throw new Exception($"鏃犳鐗╂枡锛岃鏍稿锛亄request.ItemBarcode}"); - - // // 4. 鏍规嵁鏉$爜澶囨敞纭畾鍗曟嵁绫诲瀷鍜屼氦鏄撳彿 - // var billTypeId = 900; // 榛樿鍗曟嵁绫诲瀷 - // var transactionNo = 902; // 榛樿浜ゆ槗鍙� - // switch (barcode.Memo?.Trim() ?? "0") - // { - // case "涓濆嵃": - // transactionNo = 901; // 涓濆嵃宸ュ簭 - // break; - // case "鍗婃垚鍝�": - // transactionNo = 902; // 鍗婃垚鍝佸伐搴� - // break; - // case "鍖呰": - // case "鎴愬搧": - // transactionNo = 903; // 鎴愬搧/鍖呰宸ュ簭 - // break; - // } - - // // 5. 妫�鏌ユ潯鐮佹槸鍚﹂噸澶嶆壂鎻� - // var exists = Db.Queryable<MesWorkProd, MesWorkProdCDetails>( - // (a, b) => - // new JoinQueryInfos(JoinType.Inner, - // a.Id == b.MesWorkProdId)) - // .Where((a, b) => b.ItemBarcode == request.ItemBarcode - // && a.BillTypeId == billTypeId - // && a.TransactionNo == transactionNo) - // .Any(); - - // if (exists) - // throw new Exception("鏉$爜閲嶅鎵弿锛岃鏍稿锛�"); - - // // 6. 鑾峰彇宸叉姤宸ユ暟閲� - // var reportedQty = Db.Queryable<MesWorkProd, MesWorkProdCDetails>( - // (a, b) => - // new JoinQueryInfos(JoinType.Inner, - // a.BillNo == b.BillNo)) - // .Where((a, b) => a.BillTypeId == billTypeId - // && a.TransactionNo == transactionNo - // && a.TaskNo == barcode.BillNo) - // .Sum((a, b) => b.Quantity); - - // // 7. 鑾峰彇宸ュ崟璁″垝鏁伴噺鍜屽瀷鍙� - // var workOrder = Db.Queryable<Womdaa>() - // .Where(x => x.Daa001 == barcode.BillNo) - // .First(); - // if (workOrder == null) - // throw new Exception($"鏃犲伐鍗曟槑缁嗭紝璇锋牳瀵癸紒{request.ItemBarcode}"); - - // var planQty = workOrder.Daa008; - // var itemModel = workOrder.Daa004; - - // // 8. 浣跨敤浜嬪姟澶勭悊鎶ュ伐鏁版嵁 - // UseTransaction(db => - // { - // // 9. 澶勭悊鏈夋暟閲忔潯鐮佺殑鑷姩鎶ュ伐 - // if (barcode.Quantity > 0) - // { - // var reportQty = barcode.Quantity; - // if (reportQty <= 0) - // throw new Exception( - // $"鎶ュ伐鏁伴噺涓嶈兘灏忎簬绛変簬0锛岃鏍稿锛亄request.ItemBarcode}"); - - // var totalQty = (reportedQty ?? 0) + reportQty; - // if (totalQty > workOrder.Daa008) - // throw new Exception( - // $"鏈鎶ュ伐鏁伴噺锛歿reportQty} 澶т簬鍓╀綑鎶ュ伐鏁伴噺锛歿workOrder.Daa008 - reportedQty ?? 0}锛岃鏍稿锛�"); - - // // 10. 鏇存柊鏉$爜鐘舵�� - // db.Updateable<MesInvItemBarcodes>() - // .SetColumns(x => new MesInvItemBarcodes - // { - // WorkFlg = true - // //Quantity = reportQty - // }) - // .Where(x => x.Guid == barcode.Guid) - // .ExecuteCommand(); - - // // 11. 鑾峰彇鎴栧垱寤烘姤宸ュ崟 - // var workProd = db.Queryable<MesWorkProd>() - // .Where(x => x.TaskNo == barcode.BillNo - // && x.CreateDate.Value.Date.ToString( - // "yyyy-MM-dd") == - // DateTime.Now.Date.ToString("yyyy-MM-dd") - // && x.BillTypeId == billTypeId - // && x.TransactionNo == transactionNo - // && x.ReportBy == request.StaffNo) - // .First(); - - // var id = Guid.Empty; - // var billNo = ""; - // if (workProd == null) - // { - // id = Guid.NewGuid(); - // billNo = BillNo.GetBillNo("BG(鎶ュ伐)"); - - // workProd = new MesWorkProd - // { - // Id = id, - // BillNo = billNo, - // LineNo = barcode.LineNo, - // Company = barcode.Company, - // Factory = barcode.Factory, - // CreateBy = request.UserNo, - // CreateDate = DateTime.Now, - // LastupdateBy = request.UserNo, - // LastupdateDate = DateTime.Now, - // BillTypeId = billTypeId, - // TransactionNo = transactionNo, - // TaskNo = barcode.BillNo, - // ReportBy = request.StaffNo, - // ReportDate = DateTime.Now - // }; - - // db.Insertable(workProd).IgnoreColumns(true) - // .ExecuteCommand(); - // } - // else - // { - // id = workProd.Id; - // billNo = workProd.BillNo; - // } - - // // 12. 鎻掑叆鎶ュ伐鏄庣粏 - // var detailId = Guid.NewGuid(); - // db.Insertable(new MesWorkProdCDetails - // { - // Id = detailId, - // MesWorkProdId = id, - // BillNo = billNo, - // ItemBarcode = request.ItemBarcode, - // Quantity = (int)reportQty, - // Company = barcode.Company, - // Factory = barcode.Factory, - // CreateBy = request.UserNo, - // CreateDate = DateTime.Now, - // LastupdateBy = request.UserNo, - // LastupdateDate = DateTime.Now, - // ItemNo = item.ItemNo, - // WorkLast = barcode.WorkLast, - // SilkPqty = barcode.SilkPqty, - // SilkId = barcode.SilkId, - // Silk = barcode.Silk, - // BgYg = request.StaffNo - // }).IgnoreColumns(true).ExecuteCommand(); - - // // 13. 鏇存柊宸ュ崟宸叉姤宸ユ暟閲� - // db.Updateable<Womdaa>() - // .SetColumns(x => new Womdaa - // { - // Daa011 = (x.Daa011 ?? 0) + (int)barcode.Quantity - // }) - // .Where(x => x.Daa001 == barcode.BillNo) - // .ExecuteCommand(); - - // // 14. 閲嶆柊鑾峰彇鏈�鏂板凡鎶ュ伐鏁伴噺 - // reportedQty = db.Queryable<MesWorkProd, MesWorkProdCDetails>( - // (a, b) => - // new JoinQueryInfos(JoinType.Inner, - // a.BillNo == b.BillNo)) - // .Where((a, b) => a.BillTypeId == billTypeId - // && a.TransactionNo == transactionNo - // && a.TaskNo == barcode.BillNo) - // .Sum((a, b) => b.Quantity); - // } - - // return 1; - // }); - - // // 15. 杩斿洖澶勭悊缁撴灉 - // return new ScanWorkResult - // { - // TaskNo = barcode.BillNo, - // ItemNo = item.ItemNo, - // PlanQty = planQty ?? 0, - // ReportedQty = reportedQty ?? 0, - // CurrentQty = barcode.Quantity.Value, - // BarcodeQty = barcode.Quantity.Value, - // ItemName = item.ItemName, - // ItemModel = itemModel, - // Message = "鎵爜鎴愬姛锛�" - // }; - - //1.楠岃瘉鍛樺伐淇℃伅 - var staff = Db.Queryable<MesStaff>() - .Where(x => x.StaffNo == request.StaffNo) - .First(); + // 1. 楠岃瘉鍛樺伐淇℃伅 + var staff = Db.Queryable<MesStaff>() + .Where(x => x.StaffNo == request.StaffNo) + .First(); if (staff == null) throw new Exception("璇峰厛閫夋嫨浜哄憳"); @@ -269,6 +63,46 @@ if (item == null) throw new Exception($"鏃犳鐗╂枡锛岃鏍稿锛亄request.ItemBarcode}"); + // 4. 鏍规嵁鏉$爜澶囨敞纭畾鍗曟嵁绫诲瀷鍜屼氦鏄撳彿 + var billTypeId = 900; // 榛樿鍗曟嵁绫诲瀷 + var transactionNo = 902; // 榛樿浜ゆ槗鍙� + switch (barcode.Memo?.Trim() ?? "0") + { + case "涓濆嵃": + transactionNo = 901; // 涓濆嵃宸ュ簭 + break; + case "鍗婃垚鍝�": + transactionNo = 902; // 鍗婃垚鍝佸伐搴� + break; + case "鍖呰": + case "鎴愬搧": + transactionNo = 903; // 鎴愬搧/鍖呰宸ュ簭 + break; + } + + // 5. 妫�鏌ユ潯鐮佹槸鍚﹂噸澶嶆壂鎻� + var exists = Db.Queryable<MesWorkProd, MesWorkProdCDetails>( + (a, b) => + new JoinQueryInfos(JoinType.Inner, + a.Id == b.MesWorkProdId)) + .Where((a, b) => b.ItemBarcode == request.ItemBarcode + && a.BillTypeId == billTypeId + && a.TransactionNo == transactionNo) + .Any(); + + if (exists) + throw new Exception("鏉$爜閲嶅鎵弿锛岃鏍稿锛�"); + + // 6. 鑾峰彇宸叉姤宸ユ暟閲� + var reportedQty = Db.Queryable<MesWorkProd, MesWorkProdCDetails>( + (a, b) => + new JoinQueryInfos(JoinType.Inner, + a.BillNo == b.BillNo)) + .Where((a, b) => a.BillTypeId == billTypeId + && a.TransactionNo == transactionNo + && a.TaskNo == barcode.BillNo) + .Sum((a, b) => b.Quantity); + // 7. 鑾峰彇宸ュ崟璁″垝鏁伴噺鍜屽瀷鍙� var workOrder = Db.Queryable<Womdaa>() .Where(x => x.Daa001 == barcode.BillNo) @@ -276,85 +110,139 @@ if (workOrder == null) throw new Exception($"鏃犲伐鍗曟槑缁嗭紝璇锋牳瀵癸紒{request.ItemBarcode}"); - // 浣跨敤瀛樺偍杩囩▼澶勭悊鐢熶骇鎶ュ伐 - var parameters = new SqlParameter[] + var planQty = workOrder.Daa008; + var itemModel = workOrder.Daa004; + + // 8. 浣跨敤浜嬪姟澶勭悊鎶ュ伐鏁版嵁 + UseTransaction(db => { - new SqlParameter("@pi_user", request.StaffNo), - new SqlParameter("@pi_barcode", request.ItemBarcode), - new SqlParameter("@po_outMsg", SqlDbType.NVarChar, 200) { Direction = ParameterDirection.Output }, - new SqlParameter("@po_outSum", SqlDbType.Int) { Direction = ParameterDirection.Output }, - new SqlParameter("@po_womInBarSum", SqlDbType.Decimal) { Direction = ParameterDirection.Output } - }; - - string procedureName = "prc_pda_scbg"; - int res = DbHelperSQL.RunProcedure_NonQuery(procedureName, parameters); - - // Retrieve output parameters with proper type conversion - var po_outMsg = parameters[2].Value?.ToString() ?? string.Empty; - var po_outSum = parameters[3].Value != DBNull.Value ? Convert.ToInt32(parameters[3].Value) : -1; - var po_womInBarSum = parameters[4].Value != DBNull.Value ? Convert.ToDecimal(parameters[4].Value) : 0m; - - - // 澹版槑鍙橀噺鍦ㄥ灞傦紝纭繚鍦ㄦ墍鏈夊垎鏀腑閮藉彲璁块棶 - MesInvItemIns rksqOrder = null; - List<MesInvItemInRksqDetails> rksqDetails = new List<MesInvItemInRksqDetails>(); - - if (po_outSum == 1) - { - rksqOrder = Db.Queryable<MesInvItemIns>() - .Where(x => x.RbillNo == barcode.BillNo && x.TransctionNo == "181" && x.CreateBy == request.StaffNo) - .First(); - - if (rksqOrder != null) + // 9. 澶勭悊鏈夋暟閲忔潯鐮佺殑鑷姩鎶ュ伐 + if (barcode.Quantity > 0) { - var sql = string.Format(@"SELECT A.item_barcode ItemBarcode,B.QUANTITY BgQuantity,c.item_no ItemNo,c.item_name ItemName,c.item_model ItemModel -FROM MES_INV_ITEM_IN_RKSQ_DETAILS A -LEFT JOIN MES_INV_ITEM_BARCODES B ON A.item_barcode = B.ITEM_BARCODE -LEFT JOIN MES_ITEMS C ON B.ITEM_ID = C.item_id -WHERE A.bill_no= '{0}' ORDER BY A.create_date DESC", rksqOrder.BillNo); + var reportQty = barcode.Quantity; + if (reportQty <= 0) + throw new Exception( + $"鎶ュ伐鏁伴噺涓嶈兘灏忎簬绛変簬0锛岃鏍稿锛亄request.ItemBarcode}"); - rksqDetails = Db.Ado.SqlQuery<MesInvItemInRksqDetails>(sql).ToList(); - } - } - else if (po_outSum == 2) - { - rksqOrder = Db.Queryable<MesInvItemIns>() - .Where(x => x.RbillNo == barcode.BillNo && x.TransctionNo == "181" && x.CreateBy == request.StaffNo) - .First(); + var totalQty = (reportedQty ?? 0) + reportQty; + if (totalQty > workOrder.Daa008) + throw new Exception( + $"鏈鎶ュ伐鏁伴噺锛歿reportQty} 澶т簬鍓╀綑鎶ュ伐鏁伴噺锛歿workOrder.Daa008 - reportedQty ?? 0}锛岃鏍稿锛�"); - if (rksqOrder != null) - { - rksqOrder.BillNo = ""; + // 10. 鏇存柊鏉$爜鐘舵�� + db.Updateable<MesInvItemBarcodes>() + .SetColumns(x => new MesInvItemBarcodes + { + WorkFlg = true + //Quantity = reportQty + }) + .Where(x => x.Guid == barcode.Guid) + .ExecuteCommand(); + + // 11. 鑾峰彇鎴栧垱寤烘姤宸ュ崟 + var workProd = db.Queryable<MesWorkProd>() + .Where(x => x.TaskNo == barcode.BillNo + && x.CreateDate.Value.Date.ToString( + "yyyy-MM-dd") == + DateTime.Now.Date.ToString("yyyy-MM-dd") + && x.BillTypeId == billTypeId + && x.TransactionNo == transactionNo + && x.ReportBy == request.StaffNo) + .First(); + + var id = Guid.Empty; + var billNo = ""; + if (workProd == null) + { + id = Guid.NewGuid(); + billNo = BillNo.GetBillNo("BG(鎶ュ伐)"); + + workProd = new MesWorkProd + { + Id = id, + BillNo = billNo, + LineNo = barcode.LineNo, + Company = barcode.Company, + Factory = barcode.Factory, + CreateBy = request.UserNo, + CreateDate = DateTime.Now, + LastupdateBy = request.UserNo, + LastupdateDate = DateTime.Now, + BillTypeId = billTypeId, + TransactionNo = transactionNo, + TaskNo = barcode.BillNo, + ReportBy = request.StaffNo, + ReportDate = DateTime.Now + }; + + db.Insertable(workProd).IgnoreColumns(true) + .ExecuteCommand(); + } + else + { + id = workProd.Id; + billNo = workProd.BillNo; + } + + // 12. 鎻掑叆鎶ュ伐鏄庣粏 + var detailId = Guid.NewGuid(); + db.Insertable(new MesWorkProdCDetails + { + Id = detailId, + MesWorkProdId = id, + BillNo = billNo, + ItemBarcode = request.ItemBarcode, + Quantity = (int)reportQty, + Company = barcode.Company, + Factory = barcode.Factory, + CreateBy = request.UserNo, + CreateDate = DateTime.Now, + LastupdateBy = request.UserNo, + LastupdateDate = DateTime.Now, + ItemNo = item.ItemNo, + WorkLast = barcode.WorkLast, + SilkPqty = barcode.SilkPqty, + SilkId = barcode.SilkId, + Silk = barcode.Silk, + BgYg = request.StaffNo + }).IgnoreColumns(true).ExecuteCommand(); + + // 13. 鏇存柊宸ュ崟宸叉姤宸ユ暟閲� + db.Updateable<Womdaa>() + .SetColumns(x => new Womdaa + { + Daa011 = (x.Daa011 ?? 0) + (int)barcode.Quantity + }) + .Where(x => x.Daa001 == barcode.BillNo) + .ExecuteCommand(); + + // 14. 閲嶆柊鑾峰彇鏈�鏂板凡鎶ュ伐鏁伴噺 + reportedQty = db.Queryable<MesWorkProd, MesWorkProdCDetails>( + (a, b) => + new JoinQueryInfos(JoinType.Inner, + a.BillNo == b.BillNo)) + .Where((a, b) => a.BillTypeId == billTypeId + && a.TransactionNo == transactionNo + && a.TaskNo == barcode.BillNo) + .Sum((a, b) => b.Quantity); } - rksqDetails = new List<MesInvItemInRksqDetails>(); - } + return 1; + }); - // Check if the procedure failed - if (po_outSum == -1) - { - throw new Exception(po_outMsg); - } - - // 澶勭悊rksqOrder涓簄ull鐨勬儏鍐� - string sjBillNo = rksqOrder?.BillNo ?? ""; - - // 15. Return processing result + // 15. 杩斿洖澶勭悊缁撴灉 return new ScanWorkResult { TaskNo = barcode.BillNo, ItemNo = item.ItemNo, - PlanQty = workOrder.Daa008 ?? 0, - ReportedQty = po_womInBarSum, + PlanQty = planQty ?? 0, + ReportedQty = reportedQty ?? 0, CurrentQty = barcode.Quantity.Value, BarcodeQty = barcode.Quantity.Value, ItemName = item.ItemName, - ItemModel = workOrder.Daa004, - Message = po_outMsg, - sjBillNo = sjBillNo, - BarcodesDetail = rksqDetails, + ItemModel = itemModel, + Message = "鎵爜鎴愬姛锛�" }; - } @@ -376,220 +264,124 @@ /// </exception> public bool ScanWorkProdAsync(ScanWorkRequest request) { - //// 1. 楠岃瘉鎶ュ伐鏁伴噺鏄惁澶т簬0 - //if (request.Quantity <= 0) - // throw new Exception("鎶ュ伐鏁伴噺涓嶈兘灏忎簬绛変簬 0锛岃鏍稿锛�"); + // 1. 楠岃瘉鎶ュ伐鏁伴噺鏄惁澶т簬0 + if (request.Quantity <= 0) + throw new Exception("鎶ュ伐鏁伴噺涓嶈兘灏忎簬绛変簬 0锛岃鏍稿锛�"); - //// 2. 鏌ヨ鏉$爜淇℃伅锛岄獙璇佹潯鐮佹槸鍚﹀瓨鍦� - //var barcode = Db.Queryable<MesInvItemBarcodes>() - // .Where(x => x.ItemBarcode == request.ItemBarcode) - // .First(); - //if (barcode == null) - // throw new Exception($"搴撳瓨涓棤姝ゆ潯鐮侊紝璇锋牳瀵癸紒{request.ItemBarcode}"); + // 2. 鏌ヨ鏉$爜淇℃伅锛岄獙璇佹潯鐮佹槸鍚﹀瓨鍦� + var barcode = Db.Queryable<MesInvItemBarcodes>() + .Where(x => x.ItemBarcode == request.ItemBarcode) + .First(); + if (barcode == null) + throw new Exception($"搴撳瓨涓棤姝ゆ潯鐮侊紝璇锋牳瀵癸紒{request.ItemBarcode}"); - //// 3. 鏌ヨ宸ュ崟淇℃伅锛岄獙璇佸伐鍗曟槸鍚﹀瓨鍦� - //var womdaa = Db.Queryable<Womdaa>() - // .Where(x => x.Daa001 == barcode.BillNo) - // .First(); - //if (womdaa == null) - // throw new Exception($"鏉$爜涓嶆槸鎶ュ伐鏉$爜/鏃犲搴斿伐鍗曪紝璇锋牳瀵癸紒{request.ItemBarcode}"); + // 3. 鏌ヨ宸ュ崟淇℃伅锛岄獙璇佸伐鍗曟槸鍚﹀瓨鍦� + var womdaa = Db.Queryable<Womdaa>() + .Where(x => x.Daa001 == barcode.BillNo) + .First(); + if (womdaa == null) + throw new Exception($"鏉$爜涓嶆槸鎶ュ伐鏉$爜/鏃犲搴斿伐鍗曪紝璇锋牳瀵癸紒{request.ItemBarcode}"); - //// 4. 鏍规嵁鏉$爜澶囨敞纭畾鍗曟嵁绫诲瀷鍜屼氦鏄撳彿 - //var billTypeId = 900; // 榛樿鍗曟嵁绫诲瀷 - //var transactionNo = 902; // 榛樿浜ゆ槗鍙�(鍗婃垚鍝佸伐搴�) - //switch (barcode.Memo?.Trim() ?? "0") - //{ - // case "涓濆嵃": - // transactionNo = 901; // 涓濆嵃宸ュ簭 - // break; - // case "鍗婃垚鍝�": - // transactionNo = 902; // 鍗婃垚鍝佸伐搴� - // break; - // case "鎴愬搧": - // case "鍖呰": - // transactionNo = 903; // 鎴愬搧/鍖呰宸ュ簭 - // break; - //} - - //// 5. 姹囨�诲凡鎵潯鐮佹暟閲忥紝楠岃瘉鏄惁瓒呭嚭璁″垝鏁伴噺 - //var sumQty = Db.Queryable<MesWorkProd, MesWorkProdCDetails>((a, b) => - // new JoinQueryInfos(JoinType.Inner, a.BillNo == b.BillNo)) - // .Where((a, b) => a.BillTypeId == billTypeId - // && a.TransactionNo == transactionNo - // && b.SilkId == barcode.SilkId - // && a.TaskNo == barcode.BillNo) - // .Sum((a, b) => b.Quantity); - - //sumQty = (sumQty ?? 0) + (int)request.Quantity; - - //if (sumQty > womdaa.Daa008) - // throw new Exception( - // $"鏈鎶ュ伐鏁伴噺锛歿request.Quantity} 澶т簬鍓╀綑鎶ュ伐鏁伴噺锛歿womdaa.Daa008 - (sumQty - request.Quantity)}锛岃鏍稿锛�"); - - //// 6. 寮�鍚簨鍔″鐞嗘姤宸ユ暟鎹� - //return UseTransaction(db => - //{ - // // 6.1 鏇存柊鏉$爜淇℃伅锛岃缃凡鎶ュ伐鏍囪鍜屾暟閲� - // db.Updateable<MesInvItemBarcodes>() - // .SetColumns(x => x.WorkFlg == true) - // .SetColumns(x => x.Quantity == request.Quantity) - // .Where(x => x.Guid == barcode.Guid) - // .ExecuteCommand(); - - // // 6.2 鑾峰彇鎴栧垱寤烘姤宸ュ崟 - // var workProd = db.Queryable<MesWorkProd>() - // .Where(x => x.TaskNo == barcode.BillNo - // && x.CreateDate.Value.Date.ToString("yyyy-MM-dd") == - // DateTime.Now.Date.ToString("yyyy-MM-dd") - // && x.BillTypeId == billTypeId - // && x.TransactionNo == transactionNo - // && x.Status == 0) - // .First(); - - // // 6.3 濡傛灉鎶ュ伐鍗曚笉瀛樺湪鍒欏垱寤烘柊鐨勬姤宸ュ崟 - // if (workProd == null) - // { - // var billNo = BillNo.GetBillNo("BG(鎶ュ伐缂栧彿)"); - // workProd = new MesWorkProd - // { - // Id = Guid.NewGuid(), - // BillNo = billNo, - // LineNo = barcode.LineNo, - // Company = barcode.Company, - // Factory = barcode.Factory, - // CreateBy = request.UserNo, - // CreateDate = DateTime.Now, - // LastupdateBy = request.UserNo, - // LastupdateDate = DateTime.Now, - // PbillNo = barcode.BillNo, - // BillTypeId = billTypeId, - // TransactionNo = transactionNo, - // TaskNo = barcode.BillNo - // }; - - // db.Insertable(workProd).IgnoreColumns(true).ExecuteCommand(); - // } - - // // 6.4 鎻掑叆鎶ュ伐鏄庣粏璁板綍 - // var detail = new MesWorkProdCDetails - // { - // Id = Guid.NewGuid(), - // BillNo = workProd.BillNo, - // ItemBarcode = request.ItemBarcode, - // Quantity = (int)request.Quantity, - // Company = barcode.Company, - // Factory = barcode.Factory, - // CreateBy = request.UserNo, - // CreateDate = DateTime.Now, - // LastupdateBy = request.UserNo, - // LastupdateDate = DateTime.Now, - // ItemNo = barcode.ItemNo, - // PbillNo = barcode.BillNo, - // WorkLast = barcode.WorkLast, - // SilkPqty = barcode.SilkPqty, - // SilkId = barcode.SilkId, - // Silk = barcode.Silk - // }; - - // db.Insertable(detail).IgnoreColumns(true).ExecuteCommand(); - - // return 1; - //}) > 0; - - // 璋冪敤瀛樺偍杩囩▼澶勭悊鐢熶骇鎶ュ伐瀹℃牳 - var parameters = new SqlParameter[] + // 4. 鏍规嵁鏉$爜澶囨敞纭畾鍗曟嵁绫诲瀷鍜屼氦鏄撳彿 + var billTypeId = 900; // 榛樿鍗曟嵁绫诲瀷 + var transactionNo = 902; // 榛樿浜ゆ槗鍙�(鍗婃垚鍝佸伐搴�) + switch (barcode.Memo?.Trim() ?? "0") { - // 杈撳嚭鍙傛暟锛氳繑鍥炴秷鎭紙鏈�澶ч暱搴�2500瀛楃锛� - new SqlParameter("@outMsg", SqlDbType.NVarChar, 2500) { Direction = ParameterDirection.Output }, - // 杈撳嚭鍙傛暟锛氳繑鍥炲奖鍝嶈鏁� - new SqlParameter("@outSum", SqlDbType.Int) { Direction = ParameterDirection.Output }, - // 杈撳叆鍙傛暟锛氭搷浣滀汉宸ュ彿 - new SqlParameter("@userno", request.UserNo), - // 杈撳叆鍙傛暟锛氬崟鎹紪鍙凤紙杩欓噷浼犲叆浜嗘潯鐮佸�硷級 - new SqlParameter("@inorder", request.sjBillNo), - // 杈撳叆鍙傛暟锛氭搷浣滅被鍨嬶紙1涓哄鏍革紝0涓哄弽瀹℃牳锛� - new SqlParameter("@inFieldValue", 1) - // 娉細浠ヤ笅鍙傛暟鍦ㄥ瓨鍌ㄨ繃绋嬩腑鏈夐粯璁ゅ�硷紝鍙牴鎹渶瑕佹坊鍔� - // @inFieldName nvarchar(20)=null, // 鎵╁睍瀛楁鍚� - // @in1 nvarchar(20)=null, // 鎵╁睍瀛楁1 - // @in2 nvarchar(20)=null // 鎵╁睍瀛楁2 - }; - - // 瀛樺偍杩囩▼鍚嶇О - string procedureName = "prc_pda_scbg_submit"; - // 鎵ц瀛樺偍杩囩▼ - int res = DbHelperSQL.RunProcedure_NonQuery(procedureName, parameters); - - // 鑾峰彇杈撳嚭鍙傛暟鍊硷紙甯︾被鍨嬭浆鎹級 - var outMsg = parameters[0].Value?.ToString() ?? string.Empty; // 杩斿洖娑堟伅 - var outSum = parameters[1].Value != DBNull.Value ? Convert.ToInt32(parameters[1].Value) : -1; // 褰卞搷琛屾暟 - - if (outSum == -1) - { - throw new Exception(outMsg); + case "涓濆嵃": + transactionNo = 901; // 涓濆嵃宸ュ簭 + break; + case "鍗婃垚鍝�": + transactionNo = 902; // 鍗婃垚鍝佸伐搴� + break; + case "鎴愬搧": + case "鍖呰": + transactionNo = 903; // 鎴愬搧/鍖呰宸ュ簭 + break; } - else + + // 5. 姹囨�诲凡鎵潯鐮佹暟閲忥紝楠岃瘉鏄惁瓒呭嚭璁″垝鏁伴噺 + var sumQty = Db.Queryable<MesWorkProd, MesWorkProdCDetails>((a, b) => + new JoinQueryInfos(JoinType.Inner, a.BillNo == b.BillNo)) + .Where((a, b) => a.BillTypeId == billTypeId + && a.TransactionNo == transactionNo + && b.SilkId == barcode.SilkId + && a.TaskNo == barcode.BillNo) + .Sum((a, b) => b.Quantity); + + sumQty = (sumQty ?? 0) + (int)request.Quantity; + + if (sumQty > womdaa.Daa008) + throw new Exception( + $"鏈鎶ュ伐鏁伴噺锛歿request.Quantity} 澶т簬鍓╀綑鎶ュ伐鏁伴噺锛歿womdaa.Daa008 - (sumQty - request.Quantity)}锛岃鏍稿锛�"); + + // 6. 寮�鍚簨鍔″鐞嗘姤宸ユ暟鎹� + return UseTransaction(db => { - return true; - } + // 6.1 鏇存柊鏉$爜淇℃伅锛岃缃凡鎶ュ伐鏍囪鍜屾暟閲� + db.Updateable<MesInvItemBarcodes>() + .SetColumns(x => x.WorkFlg == true) + .SetColumns(x => x.Quantity == request.Quantity) + .Where(x => x.Guid == barcode.Guid) + .ExecuteCommand(); + + // 6.2 鑾峰彇鎴栧垱寤烘姤宸ュ崟 + var workProd = db.Queryable<MesWorkProd>() + .Where(x => x.TaskNo == barcode.BillNo + && x.CreateDate.Value.Date.ToString("yyyy-MM-dd") == + DateTime.Now.Date.ToString("yyyy-MM-dd") + && x.BillTypeId == billTypeId + && x.TransactionNo == transactionNo + && x.Status == 0) + .First(); + + // 6.3 濡傛灉鎶ュ伐鍗曚笉瀛樺湪鍒欏垱寤烘柊鐨勬姤宸ュ崟 + if (workProd == null) + { + var billNo = BillNo.GetBillNo("BG(鎶ュ伐缂栧彿)"); + workProd = new MesWorkProd + { + Id = Guid.NewGuid(), + BillNo = billNo, + LineNo = barcode.LineNo, + Company = barcode.Company, + Factory = barcode.Factory, + CreateBy = request.UserNo, + CreateDate = DateTime.Now, + LastupdateBy = request.UserNo, + LastupdateDate = DateTime.Now, + PbillNo = barcode.BillNo, + BillTypeId = billTypeId, + TransactionNo = transactionNo, + TaskNo = barcode.BillNo + }; + + db.Insertable(workProd).IgnoreColumns(true).ExecuteCommand(); + } + + // 6.4 鎻掑叆鎶ュ伐鏄庣粏璁板綍 + var detail = new MesWorkProdCDetails + { + Id = Guid.NewGuid(), + BillNo = workProd.BillNo, + ItemBarcode = request.ItemBarcode, + Quantity = (int)request.Quantity, + Company = barcode.Company, + Factory = barcode.Factory, + CreateBy = request.UserNo, + CreateDate = DateTime.Now, + LastupdateBy = request.UserNo, + LastupdateDate = DateTime.Now, + ItemNo = barcode.ItemNo, + PbillNo = barcode.BillNo, + WorkLast = barcode.WorkLast, + SilkPqty = barcode.SilkPqty, + SilkId = barcode.SilkId, + Silk = barcode.Silk + }; + + db.Insertable(detail).IgnoreColumns(true).ExecuteCommand(); + + return 1; + }) > 0; } - - public ScanWorkResult GetRksqList(ScanWorkRequest request) - { - - //1.楠岃瘉鍛樺伐淇℃伅 - var staff = Db.Queryable<MesStaff>() - .Where(x => x.StaffNo == request.StaffNo) - .First(); - if (staff == null) - throw new Exception("璇峰厛閫夋嫨浜哄憳"); - - var rksqOrder = Db.Queryable<MesInvItemIns>() - .Where(x => x.BillNo == request.sjBillNo && x.Status == 0) - .First(); - if (rksqOrder == null) - throw new Exception("璇ユ楠屽崟宸叉彁浜ら�佹"); - - var sql = string.Format(@"SELECT A.item_barcode ItemBarcode,B.QUANTITY BgQuantity,c.item_no ItemNo,c.item_name ItemName,c.item_model ItemModel - FROM MES_INV_ITEM_IN_RKSQ_DETAILS A - LEFT JOIN MES_INV_ITEM_BARCODES B ON A.item_barcode = B.ITEM_BARCODE - LEFT JOIN MES_ITEMS C ON B.ITEM_ID = C.item_id - WHERE A.bill_no= '{0}'ORDER BY A.create_date DESC", rksqOrder.BillNo); - - var RKSQ = Db.Ado.SqlQuery<MesInvItemInRksqDetails>(sql); - - - var rksqDetails = RKSQ.ToList(); - - - //var rksqDetails = Db.Queryable<MesInvItemInRksqDetails>() - // .Where(x => x.BillNo == ) - // .ToList(); - - // 15. Return processing result - return new ScanWorkResult - { - BarcodesDetail = rksqDetails, - }; - } - - public ScanWorkResult GetRksqSelect(ScanWorkRequest request) - { - //1.楠岃瘉鍛樺伐淇℃伅 - var staff = Db.Queryable<MesStaff>() - .Where(x => x.StaffNo == request.StaffNo) - .First(); - if (staff == null) - throw new Exception("璇峰厛閫夋嫨浜哄憳"); - - var rksqOrder = Db.Queryable<MesInvItemIns>() - .Where(x => x.TransctionNo=="181"&& x.Status == 0 && x.CreateBy== request.StaffNo) - .ToList(); - - return new ScanWorkResult - { - rksqOrderList = rksqOrder, - }; - } - } \ No newline at end of file -- Gitblit v1.9.3