From e3355fba66b7f23bfca7dc213b27ad5f6721763e Mon Sep 17 00:00:00 2001 From: 啊鑫 <t2856754968@163.com> Date: 星期五, 27 十二月 2024 12:58:03 +0800 Subject: [PATCH] 111 --- Controllers/Wom/MesWorkProdController.cs | 34 Dto/service/ScanWorkResult.cs | 3 entity/MesItemQtrk.cs | 144 +++++++ service/Warehouse/MesItemBlManager.cs | 21 service/Warehouse/MesItemTblManager.cs | 2 service/Wom/MesWorkProdManager.cs | 121 ++++- entity/MesItemQtrrDetail.cs | 124 ++++++ Controllers/Warehouse/MesItemQtrkController.cs | 222 +++++++++++ service/Warehouse/MesItemQtrkManager.cs | 473 +++++++++++++++++++++++ 9 files changed, 1,073 insertions(+), 71 deletions(-) diff --git a/Controllers/Warehouse/MesItemQtrkController.cs b/Controllers/Warehouse/MesItemQtrkController.cs new file mode 100644 index 0000000..d60c3bb --- /dev/null +++ b/Controllers/Warehouse/MesItemQtrkController.cs @@ -0,0 +1,222 @@ +锘縰sing System.Dynamic; +using Microsoft.AspNetCore.Mvc; +using NewPdaSqlServer.Dto.service; +using NewPdaSqlServer.service.Warehouse; +using NewPdaSqlServer.util; + +namespace NewPdaSqlServer.Controllers.Warehouse; + +/// <summary> +/// 鍏朵粬鍏ュ簱鐩稿叧鎺ュ彛 +/// </summary> +[Route("api/[controller]")] +[ApiController] +public class MesItemQtrkController : ControllerBase +{ + private readonly MesItemQtrkManager _manager = new(); + + #region 鍩虹CRUD + + /// <summary> + /// 鑾峰彇鎵�鏈� + /// </summary> + /// <returns>鍏朵粬鍏ュ簱鍗曞垪琛�</returns> + [HttpPost("GetList")] + public ResponseResult GetList() + { + try + { + dynamic resultInfos = new ExpandoObject(); + resultInfos.tbBillList = _manager.GetList(); + return new ResponseResult + { + status = 0, + message = "OK", + data = resultInfos + }; + } + catch (Exception ex) + { + return ResponseResult.ResponseError(ex); + } + } + + /// <summary> + /// 鏍规嵁涓婚敭鑾峰彇 + /// </summary> + /// <returns>鍏朵粬鍏ュ簱鍗曚俊鎭�</returns> + [HttpPost("GetById")] + public ResponseResult GetById(int id) + { + try + { + dynamic resultInfos = new ExpandoObject(); + resultInfos.tbBillList = _manager.GetById(id); + return new ResponseResult + { + status = 0, + message = "OK", + data = resultInfos + }; + } + catch (Exception ex) + { + return ResponseResult.ResponseError(ex); + } + } + + #endregion + + #region 鍏朵粬鍏ュ簱涓氬姟 + + /// <summary> + /// 鑾峰彇鍏朵粬鍏ュ簱鍗曞彿鍒楄〃 + /// </summary> + /// <returns>鍏朵粬鍏ュ簱鍗曞彿鍒楄〃</returns> + /// <remarks> + /// 鑾峰彇鐘舵�佷负宸插鏍�(Qt015=1)涓旀湭瀹岀粨(Qt014=0)鐨勫叾浠栧叆搴撳崟鍙峰垪琛� + /// </remarks> + /// <response code="200">鎴愬姛鑾峰彇鍏ュ簱鍗曞彿鍒楄〃</response> + /// <response code="400">鑾峰彇澶辫触</response> + [HttpPost("GetQtckList")] + public ResponseResult GetQtckList() + { + try + { + dynamic resultInfos = new ExpandoObject(); + resultInfos.tbBillList = _manager.GetQtckList(); + return new ResponseResult + { + status = 0, + message = "OK", + data = resultInfos + }; + } + catch (Exception ex) + { + return ResponseResult.ResponseError(ex); + } + } + + /// <summary> + /// 鑾峰彇鍏朵粬鍏ュ簱鍗曟槑缁嗗垪琛� + /// </summary> + /// <param name="query">鏌ヨ鍙傛暟锛屽繀椤诲寘鍚玝illNo(鍏ュ簱鍗曞彿)</param> + /// <returns>鍏ュ簱鍗曟槑缁嗗垪琛�</returns> + /// <remarks> + /// 璇锋眰绀轰緥: + /// + /// POST /api/MesItemQtrk/GetQtckDetailList + /// { + /// "billNo": "QT202401010001" + /// } + /// + /// 杩斿洖鏈畬鎴愬叆搴撶殑鏄庣粏璁板綍(Qd007-Qd008>0) + /// </remarks> + /// <response code="200">鎴愬姛鑾峰彇鍏ュ簱鍗曟槑缁�</response> + /// <response code="400">鑾峰彇澶辫触锛岃繑鍥炲叿浣撻敊璇俊鎭�</response> + [HttpPost("GetQtckDetailList")] + public ResponseResult GetQtckDetailList([FromBody] WarehouseQuery query) + { + try + { + dynamic resultInfos = new ExpandoObject(); + resultInfos.tbBillList = _manager.GetQtckDetailList(query); + return new ResponseResult + { + status = 0, + message = "OK", + data = resultInfos + }; + } + catch (Exception ex) + { + return ResponseResult.ResponseError(ex); + } + } + + /// <summary> + /// 鎵弿搴撲綅 + /// </summary> + /// <param name="query">鏌ヨ鍙傛暟</param> + /// <returns>搴撲綅淇℃伅</returns> + /// <remarks> + /// 璇锋眰绀轰緥: + /// + /// POST /api/MesItemQtrk/ScanInDepotsQT + /// { + /// "sectionCode": "A01-01-01", + /// "billNo": "QT202401010001" + /// } + /// + /// 楠岃瘉搴撲綅鏄惁灞炰簬鐢宠鍗曟寚瀹氱殑浠撳簱 + /// </remarks> + /// <response code="200">鎵弿鎴愬姛</response> + /// <response code="400">鎵弿澶辫触锛岃繑鍥炲叿浣撻敊璇俊鎭�</response> + [HttpPost("ScanInDepotsQT")] + public ResponseResult ScanInDepotsQT([FromBody] WarehouseQuery query) + { + try + { + dynamic resultInfos = new ExpandoObject(); + resultInfos.message = _manager.ScanInDepotsQT(query); + return new ResponseResult + { + status = 0, + message = "OK", + data = resultInfos + }; + } + catch (Exception ex) + { + return ResponseResult.ResponseError(ex); + } + } + + /// <summary> + /// 鎵弿鏉$爜鍏ュ簱 + /// </summary> + /// <param name="query">鏌ヨ鍙傛暟</param> + /// <returns>鍏ュ簱缁撴灉鍜屽緟澶勭悊鏄庣粏</returns> + /// <remarks> + /// 璇锋眰绀轰緥: + /// + /// POST /api/MesItemQtrk/ScanInBcodeQtrk + /// { + /// "userName": "admin", + /// "sectionCode": "A01-01-01", + /// "barcode": "BC001", + /// "billNo": "QT202401010001" + /// } + /// + /// - 楠岃瘉鏉$爜鏄惁宸插叆搴� + /// - 楠岃瘉鏉$爜鏄惁涓哄叾浠栧叆搴撴潯鐮� + /// - 楠岃瘉鍏ュ簱鏁伴噺鏄惁瓒呰繃鐢宠鏁伴噺 + /// - 鎵ц鍏ュ簱浜嬪姟澶勭悊 + /// </remarks> + /// <response code="200">鎵弿鎴愬姛</response> + /// <response code="400">鎵弿澶辫触锛岃繑鍥炲叿浣撻敊璇俊鎭�</response> + [HttpPost("ScanInBcodeQtrk")] + public ResponseResult ScanInBcodeQtrk([FromBody] WarehouseQuery query) + { + try + { + dynamic resultInfos = new ExpandoObject(); + var (form, items) = _manager.ScanInBcodeQtrk(query); + resultInfos.form = form; + resultInfos.items = items; + return new ResponseResult + { + status = 0, + message = "OK", + data = resultInfos + }; + } + catch (Exception ex) + { + return ResponseResult.ResponseError(ex); + } + } + + #endregion +} \ No newline at end of file diff --git a/Controllers/Wom/MesWorkProdController.cs b/Controllers/Wom/MesWorkProdController.cs index d10af04..92b1a8e 100644 --- a/Controllers/Wom/MesWorkProdController.cs +++ b/Controllers/Wom/MesWorkProdController.cs @@ -8,7 +8,7 @@ namespace NewPdaSqlServer.Controllers.Wom; /// <summary> -/// 鐢熶骇鎶ュ伐鐩稿叧鎺ュ彛 +/// 鐢熶骇鎶ュ伐鐩稿叧鎺ュ彛 /// </summary> [Route("api/[controller]")] [ApiController] @@ -19,7 +19,7 @@ #region 鍩虹CRUD /// <summary> - /// 鑾峰彇鎵�鏈� + /// 鑾峰彇鎵�鏈� /// </summary> /// <returns>鎶ュ伐鍗曞垪琛�</returns> [HttpPost("GetList")] @@ -43,7 +43,7 @@ } /// <summary> - /// 鏍规嵁涓婚敭鑾峰彇 + /// 鏍规嵁涓婚敭鑾峰彇 /// </summary> /// <returns>鎶ュ伐鍗曚俊鎭�</returns> [HttpPost("GetById")] @@ -67,7 +67,7 @@ } /// <summary> - /// 鏍规嵁涓婚敭鍒犻櫎 + /// 鏍规嵁涓婚敭鍒犻櫎 /// </summary> /// <returns>鍒犻櫎缁撴灉</returns> [HttpPost("DeleteByIds")] @@ -91,7 +91,7 @@ } /// <summary> - /// 娣诲姞 + /// 娣诲姞 /// </summary> /// <returns>娣诲姞缁撴灉</returns> [HttpPost("Insert")] @@ -115,7 +115,7 @@ } /// <summary> - /// 淇敼 + /// 淇敼 /// </summary> /// <returns>淇敼缁撴灉</returns> [HttpPost("Update")] @@ -143,18 +143,17 @@ #region 鐢熶骇鎶ュ伐 /// <summary> - /// PDA鎵弿鐢熶骇鎶ュ伐 + /// PDA鎵弿鐢熶骇鎶ュ伐 /// </summary> /// <param name="request">鎶ュ伐璇锋眰鍙傛暟</param> /// <returns>鎶ュ伐缁撴灉</returns> /// <remarks> - /// 璇锋眰绀轰緥: - /// + /// 璇锋眰绀轰緥: /// POST /api/MesWorkProd/ScanWork /// { - /// "staffNo": "ST001", - /// "itemBarcode": "BC001", - /// "userNo": "admin" + /// "staffNo": "ST001", + /// "itemBarcode": "BC001", + /// "userNo": "admin" /// } /// </remarks> /// <response code="200">鎵弿鎴愬姛</response> @@ -180,18 +179,17 @@ } /// <summary> - /// PDA鎵弿鐢熶骇鎶ュ伐(甯︽暟閲�) + /// PDA鎵弿鐢熶骇鎶ュ伐(甯︽暟閲�) /// </summary> /// <param name="request">鎶ュ伐璇锋眰鍙傛暟</param> /// <returns>鎶ュ伐缁撴灉</returns> /// <remarks> - /// 璇锋眰绀轰緥: - /// + /// 璇锋眰绀轰緥: /// POST /api/MesWorkProd/ScanWorkProd /// { - /// "itemBarcode": "BC001", - /// "quantity": 10, - /// "userNo": "admin" + /// "itemBarcode": "BC001", + /// "quantity": 10, + /// "userNo": "admin" /// } /// </remarks> /// <response code="200">鎵弿鎴愬姛</response> diff --git a/Dto/service/ScanWorkResult.cs b/Dto/service/ScanWorkResult.cs index cda78d6..ff8bb47 100644 --- a/Dto/service/ScanWorkResult.cs +++ b/Dto/service/ScanWorkResult.cs @@ -1,8 +1,7 @@ 锘縩amespace NewPdaSqlServer.Dto.service; - /// <summary> -/// 鐢熶骇鎶ュ伐鎵弿缁撴灉 +/// 鐢熶骇鎶ュ伐鎵弿缁撴灉 /// </summary> public class ScanWorkResult { diff --git a/entity/MesItemQtrk.cs b/entity/MesItemQtrk.cs new file mode 100644 index 0000000..4421a99 --- /dev/null +++ b/entity/MesItemQtrk.cs @@ -0,0 +1,144 @@ +锘縰sing SqlSugar; + +namespace NewPdaSqlServer.entity; + +/// <summary> +/// 鍏朵粬鍏ュ簱鐢宠 +/// </summary> +[SugarTable("MES_ITEM_QTRK")] +public class MesItemQtrk +{ + /// <summary> + /// 榛樿鍊�: (newid()) + /// </summary> + [SugarColumn(ColumnName = "guid", IsPrimaryKey = true)] + public Guid Guid { get; set; } + + /// <summary> + /// 鐢宠鍗曞彿 + /// </summary> + [SugarColumn(ColumnName = "qtck")] + public string? Qtck { get; set; } + + /// <summary> + /// 鐢宠鏃ユ湡 + /// </summary> + [SugarColumn(ColumnName = "qt001")] + public DateTime? Qt001 { get; set; } + + /// <summary> + /// 瀹℃牳鏃ユ湡 + /// </summary> + [SugarColumn(ColumnName = "qt002")] + public DateTime? Qt002 { get; set; } + + /// <summary> + /// 鍏ュ簱绫诲埆 + /// </summary> + [SugarColumn(ColumnName = "qt003")] + public string? Qt003 { get; set; } + + /// <summary> + /// 涓氬姟绫诲瀷 + /// </summary> + [SugarColumn(ColumnName = "qt004")] + public string? Qt004 { get; set; } + + /// <summary> + /// 鍒跺崟浜� + /// </summary> + [SugarColumn(ColumnName = "qt005")] + public string? Qt005 { get; set; } + + /// <summary> + /// 鐢熶骇宸ュ崟 + /// </summary> + [SugarColumn(ColumnName = "qt006")] + public string? Qt006 { get; set; } + + /// <summary> + /// 鍙戞枡浠撳簱id + /// </summary> + [SugarColumn(ColumnName = "qt008")] + public string? Qt008 { get; set; } + + /// <summary> + /// 鐢宠閮ㄩ棬id + /// </summary> + [SugarColumn(ColumnName = "qt009")] + public string? Qt009 { get; set; } + + /// <summary> + /// 鍏ュ簱鍘熷洜 + /// </summary> + [SugarColumn(ColumnName = "qt010")] + public string? Qt010 { get; set; } + + /// <summary> + /// 浠撳簱缂栫爜 + /// </summary> + [SugarColumn(ColumnName = "qt011")] + public string? Qt011 { get; set; } + + /// <summary> + /// 閮ㄩ棬缂栫爜 + /// </summary> + [SugarColumn(ColumnName = "qt012")] + public string? Qt012 { get; set; } + + /// <summary> + /// 鏁伴噺 + /// </summary> + [SugarColumn(ColumnName = "qt013")] + public int? Qt013 { get; set; } + + /// <summary> + /// 瀹岀粨鏍囪瘑 + /// 榛樿鍊�: ((0)) + /// </summary> + [SugarColumn(ColumnName = "qt014")] + public int? Qt014 { get; set; } + + /// <summary> + /// 瀹℃牳鐘舵�� + /// 榛樿鍊�: ((0)) + /// </summary> + [SugarColumn(ColumnName = "qt015")] + public int? Qt015 { get; set; } + + /// <summary> + /// 瀹℃牳浜� + /// </summary> + [SugarColumn(ColumnName = "qt016")] + public string? Qt016 { get; set; } + + /// <summary> + /// 浠诲姟鍗曞彿 + /// </summary> + [SugarColumn(ColumnName = "qt017")] + public string? Qt017 { get; set; } + + /// <summary> + /// 渚涘簲鍟唅d + /// </summary> + [SugarColumn(ColumnName = "qt018")] + public string? Qt018 { get; set; } + + /// <summary> + /// 鍏ュ簱鏂瑰悜锛堥��璐э紝鏅�氾級 + /// </summary> + [SugarColumn(ColumnName = "qt019")] + public string? Qt019 { get; set; } + + /// <summary> + /// 鍏ュ簱绫诲瀷 1鐩樼泩 2妯″叿 3杈呭姪 4鎵撴牱 5鍥炴枡 6閲囪喘 + /// </summary> + [SugarColumn(ColumnName = "qt020")] + public string? Qt020 { get; set; } + + /// <summary> + /// 閿�鍞鍗曞彿 + /// </summary> + [SugarColumn(ColumnName = "qt021")] + public string? Qt021 { get; set; } +} \ No newline at end of file diff --git a/entity/MesItemQtrrDetail.cs b/entity/MesItemQtrrDetail.cs new file mode 100644 index 0000000..7536467 --- /dev/null +++ b/entity/MesItemQtrrDetail.cs @@ -0,0 +1,124 @@ +锘縰sing SqlSugar; + +namespace NewPdaSqlServer.entity; + +/// <summary> +/// </summary> +[SugarTable("MES_ITEM_QTRR_DETAIL")] +public class MesItemQtrrDetail +{ + /// <summary> + /// 榛樿鍊�: (newid()) + /// </summary> + [SugarColumn(ColumnName = "guid", IsPrimaryKey = true)] + public Guid Guid { get; set; } + + /// <summary> + /// 涓昏〃guid + /// </summary> + [SugarColumn(ColumnName = "qtrkGuid")] + public Guid? QtrkGuid { get; set; } + + /// <summary> + /// 宸ュ崟鍙� + /// </summary> + [SugarColumn(ColumnName = "qd001")] + public string? Qd001 { get; set; } + + /// <summary> + /// 鐗╂枡缂栧彿 + /// </summary> + [SugarColumn(ColumnName = "qd002")] + public string? Qd002 { get; set; } + + /// <summary> + /// 鐗╂枡鍚嶇О + /// </summary> + [SugarColumn(ColumnName = "qd003")] + public string? Qd003 { get; set; } + + /// <summary> + /// 瑙勬牸鍨嬪彿 + /// </summary> + [SugarColumn(ColumnName = "qd004")] + public string? Qd004 { get; set; } + + /// <summary> + /// 棰滆壊 + /// </summary> + [SugarColumn(ColumnName = "qd005")] + public string? Qd005 { get; set; } + + /// <summary> + /// 璁″垝鏁伴噺 + /// </summary> + [SugarColumn(ColumnName = "qd006")] + public int? Qd006 { get; set; } + + /// <summary> + /// 鐢宠鏁伴噺 + /// </summary> + [SugarColumn(ColumnName = "qd007")] + public int? Qd007 { get; set; } + + /// <summary> + /// 宸插叆鏁伴噺 + /// </summary> + [SugarColumn(ColumnName = "qd008")] + public int? Qd008 { get; set; } + + /// <summary> + /// 鍗曚綅 + /// </summary> + [SugarColumn(ColumnName = "qd009")] + public string? Qd009 { get; set; } + + /// <summary> + /// 澶囨敞 + /// </summary> + [SugarColumn(ColumnName = "qd010")] + public string? Qd010 { get; set; } + + /// <summary> + /// 瀹岀粨鏍囪瘑 + /// </summary> + [SugarColumn(ColumnName = "qd011")] + public int? Qd011 { get; set; } + + /// <summary> + /// 鐗╂枡ID + /// </summary> + [SugarColumn(ColumnName = "itemId")] + public string? ItemId { get; set; } + + /// <summary> + /// YDYNUM + /// </summary> + [SugarColumn(ColumnName = "YDYNUM")] + public string? Ydynum { get; set; } + + /// <summary> + /// 鍙墦鍗版暟閲� + /// </summary> + [SugarColumn(ColumnName = "KDYNUM")] + public string? Kdynum { get; set; } + + + /// <summary> + /// 鐢宠鍗曞彿 + /// </summary> + [SugarColumn(IsIgnore = true)] + public string? Qtck { get; set; } + + /// <summary> + /// 鐗╂枡缂栫爜 = ERP鐗╂枡缂栧彿||棰滆壊缂栧彿 + /// </summary> + [SugarColumn(IsIgnore = true)] + public string? ItemNo { get; set; } + + /// <summary> + /// 鐗╂枡鍚嶇О + /// </summary> + [SugarColumn(IsIgnore = true)] + public string? ItemName { get; set; } +} \ No newline at end of file diff --git a/service/Warehouse/MesItemBlManager.cs b/service/Warehouse/MesItemBlManager.cs index 46d86b9..2d70ca7 100644 --- a/service/Warehouse/MesItemBlManager.cs +++ b/service/Warehouse/MesItemBlManager.cs @@ -186,7 +186,7 @@ { // 鑾峰彇鎴栧垱寤哄嚭搴撳崟 var outId = Guid.NewGuid(); - var outNo = BillNo.GetBillNo("SCBL"); + var outNo = BillNo.GetBillNo("BL(宸ュ崟琛ユ枡)"); var existingOut = db.Queryable<MesInvItemOuts>() .Where(a => a.BbillNo == query.blNo @@ -239,7 +239,6 @@ .Count(); if (itemCount > 0) - { // 鏇存柊宸插瓨鍦ㄧ殑鐗╂枡鏄庣粏鏁伴噺 db.Updateable<MesInvItemOutItems>() .SetColumns(i => @@ -247,9 +246,7 @@ .Where(i => i.ItemOutId == outId && i.ItemId == stockBarcode.ItemId) .ExecuteCommand(); - } else - { // 鎻掑叆鏂扮殑鐗╂枡鏄庣粏璁板綍 db.Insertable(new MesInvItemOutItems { @@ -275,8 +272,7 @@ // Unit = blDetail.Bld009, // DepotId = (int)stockBarcode.DepotsId }).IgnoreColumns(true).ExecuteCommand(); - } - + // 鎻掑叆鍑哄簱鍗曟潯鐮佹槑缁� db.Insertable(new MesInvItemOutCDetails { @@ -682,7 +678,7 @@ { // 鍒涘缓鏂扮殑鍑哄簱鍗� var outId = Guid.NewGuid(); - var outNo = BillNo.GetBillNo("SCBL"); + var outNo = BillNo.GetBillNo("BL(宸ュ崟琛ユ枡)"); // 鎻掑叆鍑哄簱鍗曚富琛� executeCommand += db.Insertable(new MesInvItemOuts @@ -911,8 +907,9 @@ /// </summary> /// <param name="query">鏌ヨ鍙傛暟</param> /// <returns>鐢熶骇瓒呴鍗曟槑缁嗗垪琛�</returns> - public (string bl001,List<MesItemBlDetail> item) GetMesItemBlDetailBySccBillNo( - WarehouseQuery query) + public (string bl001, List<MesItemBlDetail> item) + GetMesItemBlDetailBySccBillNo( + WarehouseQuery query) { if (string.IsNullOrEmpty(query.billNo)) throw new Exception("璇烽�夊崟鎹彿锛�"); @@ -959,7 +956,7 @@ }) .ToList(); - return (mesItemBl.Bl001,pendingDetails); + return (mesItemBl.Bl001, pendingDetails); } /// <summary> @@ -1113,7 +1110,7 @@ if (outRecord == null) { outId = Guid.NewGuid(); - outNo = BillNo.GetBillNo("SCBL"); // 闇�瑕佸疄鐜扮敓鎴愬崟鍙风殑鏂规硶 + outNo = BillNo.GetBillNo("BL(宸ュ崟琛ユ枡)"); // 闇�瑕佸疄鐜扮敓鎴愬崟鍙风殑鏂规硶 // 鎻掑叆鍑哄簱鍗曚富琛� db.Insertable(new MesInvItemOuts @@ -1517,7 +1514,7 @@ itemOut = new MesInvItemOuts { Guid = Guid.NewGuid(), - ItemOutNo = BillNo.GetBillNo("SCBL"), // 闇�瑕佸疄鐜扮敓鎴愬崟鍙风殑鏂规硶 + ItemOutNo = BillNo.GetBillNo("BL(宸ュ崟琛ユ枡)"), // 闇�瑕佸疄鐜扮敓鎴愬崟鍙风殑鏂规硶 TaskNo = query.blNo, CreateBy = query.userName, CreateDate = DateTime.Now, diff --git a/service/Warehouse/MesItemQtrkManager.cs b/service/Warehouse/MesItemQtrkManager.cs new file mode 100644 index 0000000..c6baffe --- /dev/null +++ b/service/Warehouse/MesItemQtrkManager.cs @@ -0,0 +1,473 @@ +锘縰sing NewPdaSqlServer.DB; +using NewPdaSqlServer.Dto.service; +using NewPdaSqlServer.entity; +using NewPdaSqlServer.util; +using SqlSugar; + +namespace NewPdaSqlServer.service.Warehouse; + +public class MesItemQtrkManager : Repository<MesItemQtrk> +{ + public List<string> GetQtckList() + { + return Db.Queryable<MesItemQtrk>() + .Where(x => (x.Qt015 ?? 0) == 1 && (x.Qt014 ?? 0) == 0) + .Select(x => x.Qtck) + .ToList(); + } + + public List<MesItemQtrrDetail> GetQtckDetailList(WarehouseQuery query) + { + // 1. 楠岃瘉鐢宠鍗曟槸鍚﹀瓨鍦� + var qtrk = Db.Queryable<MesItemQtrk>() + .Where(x => x.Qtck == query.billNo) + .First(); + if (qtrk == null) + throw new Exception($"鏈煡璇㈠埌姝ゅ叾浠栧叆搴撶敵璇峰崟 {query.billNo}"); + + // 2. 楠岃瘉鐢宠鍗曠姸鎬� + if (qtrk.Qt015 != 1) + throw new Exception($"鍏朵粬鍏ュ簱鐢宠鍗� {query.billNo} 鏈鏍革紝璇风‘璁わ紒"); + + if (qtrk.Qt014 == 1) + throw new Exception($"鍏朵粬鍏ュ簱鐢宠鍗� {query.billNo} 宸插畬缁擄紝璇风‘璁わ紒"); + + // 3. 鏌ヨ鐢宠鍗曟槑缁� + var details = Db.Queryable<MesItemQtrk, MesItemQtrrDetail, MesItems>( + (a, b, c) => new JoinQueryInfos( + JoinType.Left, a.Guid == b.QtrkGuid, + JoinType.Left, c.Id.ToString() == b.ItemId)) + .Where((a, b, c) => + a.Qtck == query.billNo && + (b.Qd007 ?? 0) - (b.Qd008 ?? 0) > 0) + .OrderBy((a, b, c) => b.Qd002) + .Select((a, b, c) => new MesItemQtrrDetail + { + Qtck = a.Qtck, + ItemNo = c.ItemNo, + ItemName = c.ItemName, + Qd007 = b.Qd007 ?? 0, + Qd008 = b.Qd008 ?? 0 + }) + .ToList(); + + return details; + } + + public String ScanInDepotsQT(WarehouseQuery query) + { + var sectionCode = query.sectionCode; + var billNo = query.billNo; + + // 1. 楠岃瘉搴撲綅鏉$爜鏄惁涓虹┖ + if (string.IsNullOrEmpty(sectionCode)) + { + throw new Exception("璇锋壂搴撲綅鏉$爜锛�"); + } + + // 2. 鏌ヨ搴撲綅瀵瑰簲鐨勪粨搴撶紪鐮� + var depotCode = Db.Queryable<MesDepotSections, MesDepots>( + (a, b) => new JoinQueryInfos( + JoinType.Inner, a.DepotGuid == b.Guid)) + .Where((a, b) => a.DepotSectionCode == sectionCode) + .Select((a, b) => b.DepotCode) + .First(); + + if (depotCode == null) + { + throw new Exception($"搴撲綅缂栫爜 {sectionCode} 涓嶅瓨鍦紝璇风‘璁わ紒"); + } + + // 3. 鏌ヨ鐢宠鍗曞搴旂殑浠撳簱 + var qtrk = Db.Queryable<MesItemQtrk>() + .Where(x => x.Qtck == billNo) + .Select(x => x.Qt011) + .First(); + + if (qtrk == null) + { + throw new Exception($"搴撲綅缂栫爜 {sectionCode} 涓嶅瓨鍦紝璇风‘璁わ紒"); + } + + // 4. 楠岃瘉搴撲綅鏄惁灞炰簬鐢宠浠撳簱 + if (depotCode != qtrk) + { + throw new Exception($"鎵爜搴撲綅 {sectionCode} 涓嶅睘浜庣敵璇锋浠撳簱!"); + } + + // 5. 杩斿洖鎴愬姛淇℃伅 + return $"浠撳簱锛歿qtrk} 搴撲綅锛歿sectionCode}"; + } + + public (WarehouseQuery form, List<MesItemQtrrDetail> item) + ScanInBcodeQtrk(WarehouseQuery query) + { + var c_user = query.userName; + var p_section_code = query.sectionCode; + var p_item_barcode = query.barcode; + var p_bill_no = query.billNo; + + var billTypeId = 100; + var transactionNo = 102; + + // 1. 楠岃瘉搴撲綅鏉$爜鏄惁涓虹┖ + if (string.IsNullOrEmpty(p_section_code)) + { + throw new Exception("璇锋壂搴撲綅鏉$爜锛�"); + } + + // 2. 鏌ヨ搴撲綅瀵瑰簲鐨勪粨搴撶紪鐮佸拰浠撳簱ID + var depotInfo = Db.Queryable<MesDepotSections, MesDepots>( + (a, b) => + new JoinQueryInfos(JoinType.Inner, a.DepotGuid == b.Guid)) + .Where((a, b) => a.DepotSectionCode == p_section_code) + .Select((a, b) => new { b.DepotCode, b.DepotId }) + .First(); + + if (depotInfo == null) + { + throw new Exception($"搴撲綅缂栫爜 {p_section_code} 涓嶅瓨鍦紝璇风‘璁わ紒"); + } + + var c_depot_code = depotInfo.DepotCode; + var c_depot_id = depotInfo.DepotId; + + // 3. 楠岃瘉鏉$爜鏄惁宸插叆搴� + var existsInStock = Db.Queryable<MesInvItemInCDetails>() + .Any(x => x.ItemBarcode == p_item_barcode); + + if (existsInStock) + { + throw new Exception("姝ゆ潯鐮佸凡鎵爜鍏ュ簱瀹屾垚,璇锋牳瀵癸紒"); + } + + // 4. 鏌ヨ鏉$爜淇℃伅 + var barcode = Db.Queryable<MesInvItemBarcodes>() + .Where(x => x.ItemBarcode == p_item_barcode) + .First(); + + if (barcode == null) + { + throw new Exception("鏉$爜涓嶅瓨鍦�,璇锋牳瀵癸紒"); + } + + if (barcode.ComeFlg != 3) + { + throw new Exception("鏉$爜涓嶆槸鍏朵粬鍏ュ簱鏉$爜,鏃犳硶鐢ㄥ叾浠栧叆搴擄紒"); + } + + // 楠岃瘉鏉$爜鏄惁宸插湪搴撳瓨涓� + var stockCount = Db.Queryable<MesInvItemStocks>() + .Where(x => x.ItemBarcode == p_item_barcode) + .Count(); + + if (stockCount > 0) + { + throw new Exception("姝ゆ潯鐮佸凡鎵爜鍏ュ簱瀹屾垚,璇锋牳瀵癸紒"); + } + + // 5. 鏌ヨ鍏朵粬鍏ュ簱鐢宠鍗� + var qtrk = Db.Queryable<MesItemQtrk>() + .Where(x => x.Qtck == p_bill_no) + .First(); + + if (qtrk == null) + { + throw new Exception("鍏朵粬鍏ュ簱鐢宠鍗曚笉瀛樺湪锛�"); + } + + // 6. 鏌ヨ鐢宠鍗曟槑缁� + var detail = Db.Queryable<MesItemQtrrDetail>() + .Where(x => + x.QtrkGuid == qtrk.Guid && + x.ItemId == barcode.ItemId.ToString()) + .First(); + + if (detail == null) + { + throw new Exception($"鍏朵粬鍏ュ簱鐢宠鍗晎p_bill_no}鏃犳鐗╂枡{barcode.ItemNo} 璇锋牳瀵癸紒"); + } + + // 7. 楠岃瘉鏁伴噺 + if (barcode.Quantity > (detail.Qd007 ?? 0) - (detail.Qd008 ?? 0)) + { + throw new Exception("鏉$爜鏁伴噺瓒呰繃鐢宠鏁伴噺,璇锋牳瀵癸紒"); + } + + var details = new List<MesItemQtrrDetail>(); + + // 8. 鎵ц鍏ュ簱浜嬪姟 + UseTransaction(db => + { + var res = 0; + // 鏌ヨ鏄惁瀛樺湪鏈叆搴撶殑鍏ュ簱鍗� + var existingInv = db.Queryable<MesInvItemIns>() + .Where(x => x.Status == 0 + && x.TransctionNo == transactionNo.ToString() + && x.CbillNo == p_bill_no + && x.SuppNo == barcode.SuppNo + // && x.DepotsCode == c_depot_code) + && x.DepotsId == c_depot_id) + .First(); + + var newId = Guid.Empty; + var billNo = ""; + // 濡傛灉涓嶅瓨鍦ㄥ垯鍒涘缓鏂板叆搴撳崟 + if (existingInv == null) + { + newId = Guid.NewGuid(); + billNo = BillNo.GetBillNo("INV_IN_OTHER"); + + barcode.UrgentFlag ??= false; + + res += db.Insertable(new MesInvItemIns + { + Guid = newId, + BillNo = billNo, + BillTypeId = billTypeId, + InsDate = DateTime.Now, + DepotsCode = c_depot_code, + TransctionNo = transactionNo.ToString(), + SuppNo = barcode.SuppNo, + CreateBy = c_user, + CreateDate = DateTime.Now, + LastupdateBy = c_user, + LastupdateDate = DateTime.Now, + UrgentFlag = barcode.UrgentFlag.Value ? (byte)1 : (byte)0, + CbillNo = p_bill_no, + Fstatus = 0, + Status = 0, + Reason = qtrk.Qt010 + }).IgnoreColumns(true).ExecuteCommand(); + } + else + { + newId = existingInv.Guid; + billNo = existingInv.BillNo; + } + + // 鏌ヨ鏄惁瀛樺湪鐩稿悓鐗╂枡鍜屽伐鍗曡鐨勫叆搴撴槑缁� + var existingItem = db.Queryable<MesInvItemInCItems>() + .Where(x => x.ItemInId == newId + && x.ItemId == barcode.ItemId + && x.WorkNo == barcode.WorkNo + && x.WorkLine == barcode.WorkLine) + .First(); + + if (existingItem == null) + { + // 涓嶅瓨鍦ㄥ垯鏂板鍏ュ簱鏄庣粏 + res += db.Insertable(new MesInvItemInCItems + { + Guid = Guid.NewGuid(), + ItemInId = newId, + Quantity = barcode.Quantity, + CreateBy = c_user, + CreateDate = DateTime.Now, + ItemNo = barcode.ItemNo, + DepotCode = c_depot_code, + ItemSname = barcode.ItemSname, + Unit = barcode.Unit, + Ebeln = barcode.WorkNo, + BillNo = billNo, + Factory = barcode.Factory, + Company = barcode.Company, + WorkNo = barcode.WorkNo, + EbelnLineNo = barcode.WorkLine, + CbillNo = barcode.BillNo, + WorkLine = barcode.WorkLine, + SuppNo = barcode.SuppNo, + Remark = barcode.Memo, + EbelnK3id = barcode.EbelnK3id, + LineK3id = barcode.LineK3id, + ItemId = barcode.ItemId + }).IgnoreColumns(true).ExecuteCommand(); + } + else + { + // 瀛樺湪鍒欐洿鏂版暟閲� + res += db.Updateable<MesInvItemInCItems>() + .SetColumns( + x => x.Quantity == x.Quantity + barcode.Quantity) + .Where(x => x.ItemInId == newId + && x.ItemId == barcode.ItemId + && x.WorkNo == barcode.WorkNo + && x.WorkLine == barcode.WorkLine) + .ExecuteCommand(); + } + + + // 鎻掑叆鍏ュ簱鏄庣粏璁板綍 + res += db.Insertable(new MesInvItemInCDetails + { + ItemInId = newId, + BillNo = billNo, + ItemBarcode = barcode.ItemBarcode, + Quantity = barcode.Quantity, + BarcodeFlag = true, + EpFlag = true, + WorkType = 1, + ItemNo = barcode.ItemNo, + LotNo = barcode.LotNo, + SuppId = barcode.SuppId, + SuppNo = barcode.SuppNo, + DepotId = c_depot_id, + DepotCode = c_depot_code, + DepotSectionCode = p_section_code, + ItemSname = barcode.ItemSname, + Unit = barcode.Unit, + CreateBy = c_user, + CreateDate = DateTime.Now, + LastupdateBy = c_user, + LastupdateDate = DateTime.Now, + Remark = barcode.Memo, + Factory = barcode.Factory, + Company = barcode.Company, + Ebeln = barcode.Mblnr, + EbelnLineNo = barcode.Zeile, + WorkNo = barcode.WorkNo, + WorkLine = barcode.WorkLine, + CbillNo = barcode.BillNo, + UrgentFlag = barcode.UrgentFlag, + BoardStyle = barcode.BoardStyle, + TaskNo = barcode.TaskNo, + EbelnK3id = barcode.EbelnK3id, + LineK3id = barcode.LineK3id, + ItemId = barcode.ItemId, + Ischeck = true + }).IgnoreColumns(true).ExecuteCommand(); + + // 鎻掑叆搴撳瓨涓氬姟娴佹按璁板綍 + res += db.Insertable(new MesInvBusiness2 + { + Guid = Guid.NewGuid(), + Status = 1, + BillTypeId = billTypeId, + TransactionCode = transactionNo.ToString(), + BusinessType = 1, + ItemBarcode = barcode.ItemBarcode, + ItemNo = barcode.ItemNo, + LotNo = barcode.LotNo, + EpFlag = true, + Quantity = barcode.Quantity, + InvDepotId = c_depot_id, + ToInvDepotsCode = c_depot_code, + ToInvDepotSectionsCode = p_section_code, + Description = "鍏朵粬鍏ュ簱", + CreateBy = c_user, + CreateDate = DateTime.Now, + LastupdateBy = c_user, + LastupdateDate = DateTime.Now, + TaskNo = barcode.BillNo, + BillNo = billNo, + WorkNo = barcode.WorkNo, + WorkLine = barcode.WorkLine, + SuppId = barcode.SuppId, + SuppNo = barcode.SuppNo, + EbelnK3id = barcode.EbelnK3id, + LineK3id = barcode.LineK3id, + ItemId = barcode.ItemId, + // SalesOrder = barcode.SalesOrder, + // IsZy = barcode.IsZy, + // OuterBarcode = barcode.OuterBarcode + }).IgnoreColumns(true).ExecuteCommand(); + + barcode.EpFlag ??= false; + + // 鎻掑叆搴撳瓨璁板綍 + res += db.Insertable(new MesInvItemStocks + { + TaskNo = barcode.TaskNo, + ItemBarcode = p_item_barcode, + ItemNo = barcode.ItemNo, + LotNo = barcode.LotNo, + Quantity = barcode.Quantity, + EpFlag = barcode.EpFlag.Value ? (byte)1 : (byte)0, + DepotId = c_depot_id, + DepotsCode = c_depot_code, + DepotSectionsCode = p_section_code, + CheckDate = DateTime.Now, + IndepDate = DateTime.Now, + Factory = barcode.Factory, + Company = barcode.Company, + BoardStyle = barcode.BoardStyle, + WorkNo = barcode.WorkNo, + WorkLine = barcode.WorkLine, + SuppId = barcode.SuppId, + SuppNo = barcode.SuppNo, + EbelnK3id = barcode.EbelnK3id, + LineK3id = barcode.LineK3id, + ItemId = barcode.ItemId, + BillNo = barcode.BillNo, + // SalesOrder = barcode.SalesOrder, + // IsZy = barcode.IsZy, + // Visable = 0, + // OuterBarcode = barcode.OuterBarcode + }).IgnoreColumns(true).ExecuteCommand(); + + // 鏇存柊鏉$爜鍏ュ簱鏍囧織 + // db.Updateable<MesInvItemBarcodes>() + // .SetColumns(x => x.rkf == 1) + // .Where(x => x.ItemBarcode == p_item_barcode) + // .ExecuteCommand(); + + // 鏇存柊鐢宠鍗曟槑缁嗗凡鍏ュ簱鏁伴噺 + res += db.Updateable<MesItemQtrrDetail>() + .SetColumns(x => x.Qd008 == (x.Qd008 ?? 0) + barcode.Quantity) + .Where(x => x.Guid == barcode.Guid) + .ExecuteCommand(); + + // 妫�鏌ユ槸鍚﹀畬鍏ㄥ叆搴撳苟鏇存柊鐘舵�� + var detail1 = db.Queryable<MesItemQtrrDetail>() + .Where(x => x.Guid == detail.Guid) + .First(); + + if ((detail1.Qd007 ?? 0) - (detail1.Qd008 ?? 0) == barcode.Quantity) + { + res += db.Updateable<MesItemQtrrDetail>() + .SetColumns(x => x.Qd011 == 1) + .Where(x => x.Guid == detail1.Guid) + .ExecuteCommand(); + } + + details = Db.Queryable<MesItemQtrk, MesItemQtrrDetail, MesItems>( + (a, b, c) => new JoinQueryInfos( + JoinType.Left, a.Guid == b.QtrkGuid, + JoinType.Left, c.Id.ToString() == b.ItemId)) + .Where((a, b, c) => + a.Qtck == p_bill_no && + (b.Qd007 ?? 0) - (b.Qd008 ?? 0) > 0) + .OrderBy((a, b, c) => b.Qd002) + .Select((a, b, c) => new MesItemQtrrDetail + { + Qtck = a.Qtck, + ItemNo = c.ItemNo, + ItemName = c.ItemName, + Qd007 = b.Qd007 ?? 0, + Qd008 = b.Qd008 ?? 0 + }) + .ToList(); + + if (CollectionUtil.IsNullOrEmpty(details)) + { + res += db.Updateable<MesItemQtrk>() + .SetColumns(s => s.Qt014 == 1) + .Where(x => x.Qtck == p_bill_no) + .ExecuteCommand(); + } + + if (res < 5) + { + throw new Exception("鎻掑叆鎴栨洿鏂板け璐�"); + } + + return res; + }); + + query.itemNo = barcode.ItemNo; + query.Num = barcode.Quantity; + + return (query, details); + } + // End of Selection +} \ No newline at end of file diff --git a/service/Warehouse/MesItemTblManager.cs b/service/Warehouse/MesItemTblManager.cs index 75ee6e3..d0284e4 100644 --- a/service/Warehouse/MesItemTblManager.cs +++ b/service/Warehouse/MesItemTblManager.cs @@ -406,7 +406,7 @@ return totalResult; }); - + query.itemNo = c_mes_inv_item_barcodes.ItemNo; query.Num = c_quantity.Value; return query; 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