From e3355fba66b7f23bfca7dc213b27ad5f6721763e Mon Sep 17 00:00:00 2001 From: 啊鑫 <t2856754968@163.com> Date: 星期五, 27 十二月 2024 12:58:03 +0800 Subject: [PATCH] 111 --- service/Wom/MesWorkProdManager.cs | 121 +++++++++++++++++++++++++++------------ 1 files changed, 83 insertions(+), 38 deletions(-) diff --git a/service/Wom/MesWorkProdManager.cs b/service/Wom/MesWorkProdManager.cs index 04a170c..3d88cb7 100644 --- a/service/Wom/MesWorkProdManager.cs +++ b/service/Wom/MesWorkProdManager.cs @@ -11,49 +11,76 @@ //褰撳墠绫诲凡缁忕户鎵夸簡 Repository 澧炪�佸垹銆佹煡銆佹敼鐨勬柟娉� /// <summary> - /// PDA鎵弿鐢熶骇鎶ュ伐 + /// PDA鎵弿鐢熶骇鎶ュ伐 /// </summary> + /// <param name="request"> + /// 鎶ュ伐璇锋眰鍙傛暟锛屽寘鍚�: + /// - StaffNo: 鍛樺伐宸ュ彿锛屽繀濉� + /// - ItemBarcode: 鐗╂枡鏉$爜锛屽繀濉� + /// - UserNo: 鎿嶄綔鐢ㄦ埛璐﹀彿锛屽繀濉� + /// </param> + /// <returns> + /// 杩斿洖鎶ュ伐缁撴灉瀵硅薄锛屽寘鍚�: + /// - TaskNo: 宸ュ崟鍙� + /// - ItemNo: 鐗╂枡缂栧彿 + /// - PlanQty: 璁″垝鏁伴噺 + /// - ReportedQty: 宸叉姤宸ユ暟閲� + /// - CurrentQty: 鏈鎶ュ伐鏁伴噺 + /// - BarcodeQty: 鏉$爜鏁伴噺 + /// - ItemName: 鐗╂枡鍚嶇О + /// - ItemModel: 鐗╂枡鍨嬪彿 + /// - Message: 澶勭悊缁撴灉娑堟伅 + /// </returns> + /// <exception cref="Exception"> + /// - 褰撳憳宸ヤ笉瀛樺湪鏃舵姏鍑哄紓甯� + /// - 褰撴潯鐮佷笉瀛樺湪鏃舵姏鍑哄紓甯� + /// - 褰撶墿鏂欎笉瀛樺湪鏃舵姏鍑哄紓甯� + /// - 褰撴潯鐮侀噸澶嶆壂鎻忔椂鎶涘嚭寮傚父 + /// - 褰撳伐鍗曚笉瀛樺湪鏃舵姏鍑哄紓甯� + /// - 褰撴姤宸ユ暟閲忓皬浜庣瓑浜�0鏃舵姏鍑哄紓甯� + /// - 褰撴姤宸ユ�绘暟閲忚秴杩囪鍒掓暟閲忔椂鎶涘嚭寮傚父 + /// </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}"); - // 纭畾鍗曟嵁绫诲瀷 - int billTypeId = 900; - int transactionNo = 902; + // 4. 鏍规嵁鏉$爜澶囨敞纭畾鍗曟嵁绫诲瀷鍜屼氦鏄撳彿 + var billTypeId = 900; // 榛樿鍗曟嵁绫诲瀷 + var transactionNo = 902; // 榛樿浜ゆ槗鍙� switch (barcode.Memo?.Trim() ?? "0") { case "涓濆嵃": - transactionNo = 901; + transactionNo = 901; // 涓濆嵃宸ュ簭 break; case "鍗婃垚鍝�": - transactionNo = 902; + transactionNo = 902; // 鍗婃垚鍝佸伐搴� break; case "鍖呰": case "鎴愬搧": - transactionNo = 903; + transactionNo = 903; // 鎴愬搧/鍖呰宸ュ簭 break; } - // 妫�鏌ユ潯鐮佹槸鍚﹂噸澶嶆壂鎻� + // 5. 妫�鏌ユ潯鐮佹槸鍚﹂噸澶嶆壂鎻� var exists = Db.Queryable<MesWorkProd, MesWorkProdCDetails>( (a, b) => new JoinQueryInfos(JoinType.Inner, @@ -66,7 +93,7 @@ if (exists) throw new Exception("鏉$爜閲嶅鎵弿锛岃鏍稿锛�"); - // 鑾峰彇宸叉姤宸ユ暟閲� + // 6. 鑾峰彇宸叉姤宸ユ暟閲� var reportedQty = Db.Queryable<MesWorkProd, MesWorkProdCDetails>( (a, b) => new JoinQueryInfos(JoinType.Inner, @@ -76,7 +103,7 @@ && a.TaskNo == barcode.BillNo) .Sum((a, b) => b.Quantity); - // 鑾峰彇宸ュ崟璁″垝鏁伴噺鍜屽瀷鍙� + // 7. 鑾峰彇宸ュ崟璁″垝鏁伴噺鍜屽瀷鍙� var workOrder = Db.Queryable<Womdaa>() .Where(x => x.Daa001 == barcode.BillNo) .First(); @@ -86,9 +113,10 @@ var planQty = workOrder.Daa008; var itemModel = workOrder.Daa004; + // 8. 浣跨敤浜嬪姟澶勭悊鎶ュ伐鏁版嵁 UseTransaction(db => { - // 鏈夋暟閲忔潯鐮佽嚜鍔ㄦ姤宸� + // 9. 澶勭悊鏈夋暟閲忔潯鐮佺殑鑷姩鎶ュ伐 if (barcode.Quantity > 0) { var reportQty = barcode.Quantity; @@ -101,7 +129,7 @@ throw new Exception( $"鏈鎶ュ伐鏁伴噺锛歿reportQty} 澶т簬鍓╀綑鎶ュ伐鏁伴噺锛歿workOrder.Daa008 - reportedQty ?? 0}锛岃鏍稿锛�"); - // 鏇存柊鏉$爜鐘舵�� + // 10. 鏇存柊鏉$爜鐘舵�� db.Updateable<MesInvItemBarcodes>() .SetColumns(x => new MesInvItemBarcodes { @@ -111,7 +139,7 @@ .Where(x => x.Guid == barcode.Guid) .ExecuteCommandAsync(); - // 鑾峰彇鎴栧垱寤烘姤宸ュ崟 + // 11. 鑾峰彇鎴栧垱寤烘姤宸ュ崟 var workProd = db.Queryable<MesWorkProd>() .Where(x => x.TaskNo == barcode.BillNo && x.CreateDate.Value.Date.ToString( @@ -125,7 +153,7 @@ if (workProd == null) { var id = Guid.NewGuid(); - var billNo = BillNo.GetBillNo("MES_WORK"); + var billNo = BillNo.GetBillNo("BG(鎶ュ伐缂栧彿)"); workProd = new MesWorkProd { @@ -147,7 +175,7 @@ .ExecuteCommand(); } - // 鎻掑叆鎶ュ伐鏄庣粏 + // 12. 鎻掑叆鎶ュ伐鏄庣粏 var detailId = Guid.NewGuid(); db.Insertable(new MesWorkProdCDetails { @@ -169,7 +197,7 @@ BgYg = staff.Id }).IgnoreColumns(true).ExecuteCommand(); - // 鏇存柊宸ュ崟宸叉姤宸ユ暟閲� + // 13. 鏇存柊宸ュ崟宸叉姤宸ユ暟閲� db.Updateable<Womdaa>() .SetColumns(x => x.Daa011 == (x.Daa011 ?? 0) + (int)barcode.Quantity @@ -177,7 +205,7 @@ .Where(x => x.Daa001 == barcode.BillNo) .ExecuteCommandAsync(); - // 閲嶆柊鑾峰彇宸叉姤宸ユ暟閲� + // 14. 閲嶆柊鑾峰彇鏈�鏂板凡鎶ュ伐鏁伴噺 reportedQty = db.Queryable<MesWorkProd, MesWorkProdCDetails>( (a, b) => new JoinQueryInfos(JoinType.Inner, @@ -191,6 +219,7 @@ return 1; }); + // 15. 杩斿洖澶勭悊缁撴灉 return new ScanWorkResult { TaskNo = barcode.TaskNo, @@ -207,45 +236,59 @@ /// <summary> - /// PDA鎵弿鐢熶骇鎶ュ伐 prc_rf_pda_scan_work_prod + /// PDA鎵弿鐢熶骇鎶ュ伐 prc_rf_pda_scan_work_prod /// </summary> + /// <param name="request"> + /// 鎶ュ伐璇锋眰鍙傛暟锛屽寘鍚�: + /// - ItemBarcode: 鐗╂枡鏉$爜锛屽繀濉� + /// - Quantity: 鎶ュ伐鏁伴噺锛屽繀濉笖澶т簬0 + /// - UserNo: 鎿嶄綔鐢ㄦ埛璐﹀彿锛屽繀濉� + /// </param> + /// <returns>杩斿洖甯冨皵鍊硷紝true琛ㄧず鎶ュ伐鎴愬姛锛宖alse琛ㄧず鎶ュ伐澶辫触</returns> + /// <exception cref="Exception"> + /// - 褰撴姤宸ユ暟閲忓皬浜庣瓑浜�0鏃舵姏鍑哄紓甯� + /// - 褰撴潯鐮佷笉瀛樺湪鏃舵姏鍑哄紓甯� + /// - 褰撳伐鍗曚笉瀛樺湪鏃舵姏鍑哄紓甯� + /// - 褰撴姤宸ユ�绘暟閲忚秴杩囪鍒掓暟閲忔椂鎶涘嚭寮傚父 + /// </exception> public bool ScanWorkProdAsync(ScanWorkRequest request) { + // 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}"); - // 鏌ヨ宸ュ崟淇℃伅 + // 3. 鏌ヨ宸ュ崟淇℃伅锛岄獙璇佸伐鍗曟槸鍚﹀瓨鍦� var womdaa = Db.Queryable<Womdaa>() .Where(x => x.Daa001 == barcode.BillNo) .First(); if (womdaa == null) throw new Exception($"鏉$爜涓嶆槸鎶ュ伐鏉$爜/鏃犲搴斿伐鍗曪紝璇锋牳瀵癸紒{request.ItemBarcode}"); - // 纭畾鍗曟嵁绫诲瀷 - int billTypeId = 900; - int transactionNo = 902; + // 4. 鏍规嵁鏉$爜澶囨敞纭畾鍗曟嵁绫诲瀷鍜屼氦鏄撳彿 + var billTypeId = 900; // 榛樿鍗曟嵁绫诲瀷 + var transactionNo = 902; // 榛樿浜ゆ槗鍙�(鍗婃垚鍝佸伐搴�) switch (barcode.Memo?.Trim() ?? "0") { case "涓濆嵃": - transactionNo = 901; + transactionNo = 901; // 涓濆嵃宸ュ簭 break; case "鍗婃垚鍝�": - transactionNo = 902; + transactionNo = 902; // 鍗婃垚鍝佸伐搴� break; case "鎴愬搧": case "鍖呰": - transactionNo = 903; + 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 @@ -260,16 +303,17 @@ 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") == @@ -279,12 +323,13 @@ && x.Status == 0) .First(); + // 6.3 濡傛灉鎶ュ伐鍗曚笉瀛樺湪鍒欏垱寤烘柊鐨勬姤宸ュ崟 if (workProd == null) { - var billNo = BillNo.GetBillNo("MES_WORK"); + var billNo = BillNo.GetBillNo("BG(鎶ュ伐缂栧彿)"); workProd = new MesWorkProd { - Id = Guid.NewGuid(), + Id = Guid.NewGuid(), BillNo = billNo, LineNo = barcode.LineNo, Company = barcode.Company, @@ -293,7 +338,7 @@ CreateDate = DateTime.Now, LastupdateBy = request.UserNo, LastupdateDate = DateTime.Now, - PbillNo = barcode.BillNo, // Added PbillNo field + PbillNo = barcode.BillNo, BillTypeId = billTypeId, TransactionNo = transactionNo, TaskNo = barcode.BillNo @@ -302,10 +347,10 @@ db.Insertable(workProd).IgnoreColumns(true).ExecuteCommand(); } - // 鎻掑叆鎶ュ伐鏄庣粏 + // 6.4 鎻掑叆鎶ュ伐鏄庣粏璁板綍 var detail = new MesWorkProdCDetails { - Id = Guid.NewGuid(), + Id = Guid.NewGuid(), BillNo = workProd.BillNo, ItemBarcode = request.ItemBarcode, Quantity = (int)request.Quantity, @@ -316,7 +361,7 @@ LastupdateBy = request.UserNo, LastupdateDate = DateTime.Now, ItemNo = barcode.ItemNo, - PbillNo = barcode.BillNo, // Added PbillNo from barcode + PbillNo = barcode.BillNo, WorkLast = barcode.WorkLast, SilkPqty = barcode.SilkPqty, SilkId = barcode.SilkId, -- Gitblit v1.9.3