From 250ae3deeabd8e0818f4adf57f747b71fefd5ef3 Mon Sep 17 00:00:00 2001 From: 啊鑫 <t2856754968@163.com> Date: 星期一, 30 十二月 2024 16:54:56 +0800 Subject: [PATCH] 11 --- entity/TransferOut.cs | 199 ++++++++ service/Warehouse/TransferOutManager.cs | 381 +++++++++++++++ entity/MesInvItemMovesCDetails.cs | 250 ++++++++++ entity/MesInvItemMoves.cs | 172 +++++++ entity/TransferOutEtail.cs | 67 ++ service/Warehouse/MesItemQtManager.cs | 108 --- Controllers/Warehouse/TransferOutController.cs | 169 +++++++ Controllers/Warehouse/MesItemQtController.cs | 65 +- 8 files changed, 1,285 insertions(+), 126 deletions(-) diff --git a/Controllers/Warehouse/MesItemQtController.cs b/Controllers/Warehouse/MesItemQtController.cs index a3ab253..7daac28 100644 --- a/Controllers/Warehouse/MesItemQtController.cs +++ b/Controllers/Warehouse/MesItemQtController.cs @@ -7,7 +7,7 @@ namespace NewPdaSqlServer.Controllers.Warehouse; /// <summary> -/// 鍏朵粬鍑哄簱鐩稿叧鎺ュ彛 +/// 鍏朵粬鍑哄簱鐩稿叧鎺ュ彛 /// </summary> [Route("api/[controller]")] [ApiController] @@ -18,7 +18,7 @@ #region 鍩虹CRUD /// <summary> - /// 鑾峰彇鎵�鏈� + /// 鑾峰彇鎵�鏈� /// </summary> /// <returns>鍏朵粬鍑哄簱鍗曞垪琛�</returns> [HttpPost("GetList")] @@ -46,11 +46,11 @@ #region 鍏朵粬鍑哄簱涓氬姟 /// <summary> - /// 鑾峰彇鏈畬鎴愮殑閫�鏂欏崟鍙峰垪琛� + /// 鑾峰彇鏈畬鎴愮殑閫�鏂欏崟鍙峰垪琛� /// </summary> /// <returns>閫�鏂欏崟鍙峰垪琛�</returns> /// <remarks> - /// 鑾峰彇鐘舵�佷负宸插鏍�(Qt015=true)涓旀湭瀹岀粨(Qt014=false)鐨勯��鏂欏崟鍙峰垪琛� + /// 鑾峰彇鐘舵�佷负宸插鏍�(Qt015=true)涓旀湭瀹岀粨(Qt014=false)鐨勯��鏂欏崟鍙峰垪琛� /// </remarks> /// <response code="200">鎴愬姛鑾峰彇閫�鏂欏崟鍙峰垪琛�</response> /// <response code="400">鑾峰彇澶辫触</response> @@ -75,25 +75,24 @@ } /// <summary> - /// 鑾峰彇寰呭鐞嗙殑閫�鏂欏崟鏄庣粏鍒楄〃 + /// 鑾峰彇寰呭鐞嗙殑閫�鏂欏崟鏄庣粏鍒楄〃 /// </summary> /// <param name="query">鏌ヨ鍙傛暟</param> /// <returns>寰呭鐞嗙殑閫�鏂欏崟鏄庣粏鍒楄〃</returns> /// <remarks> - /// 璇锋眰绀轰緥: - /// + /// 璇锋眰绀轰緥: /// POST /api/MesItemQt/GetPendingQtList /// { - /// "userName": "admin", // 鐢ㄦ埛鍚�(蹇呭~) - /// "billNo": "QT20240101001" // 閫�鏂欏崟鍙�(蹇呭~) + /// "userName": "admin", // 鐢ㄦ埛鍚�(蹇呭~) + /// "billNo": "QT20240101001" // 閫�鏂欏崟鍙�(蹇呭~) /// } - /// - /// 杩斿洖鏈畬鎴愮殑鏄庣粏璁板綍(Qd007-Qd008>0) + /// 杩斿洖鏈畬鎴愮殑鏄庣粏璁板綍(Qd007-Qd008>0) /// </remarks> /// <response code="200">鎴愬姛鑾峰彇閫�鏂欏崟鏄庣粏</response> /// <response code="400">鑾峰彇澶辫触锛岃繑鍥炲叿浣撻敊璇俊鎭�</response> [HttpPost("GetPendingQtDetailList")] - public ResponseResult GetPendingQtDetailList([FromBody] WarehouseQuery query) + public ResponseResult GetPendingQtDetailList( + [FromBody] WarehouseQuery query) { try { @@ -113,24 +112,22 @@ } /// <summary> - /// 鎵弿鏉$爜鍑哄簱 + /// 鎵弿鏉$爜鍑哄簱 /// </summary> /// <param name="query">鏌ヨ鍙傛暟</param> /// <returns>鍑哄簱缁撴灉銆佸緟澶勭悊鏄庣粏鍜屾彁绀烘秷鎭�</returns> /// <remarks> - /// 璇锋眰绀轰緥: - /// + /// 璇锋眰绀轰緥: /// POST /api/MesItemQt/OutScanBarcode /// { - /// "billNo": "QT20240101001", // 閫�鏂欏崟鍙�(蹇呭~) - /// "barcode": "BC001", // 鏉$爜鍙�(蹇呭~) - /// "userName": "admin" // 鐢ㄦ埛鍚�(蹇呭~) + /// "billNo": "QT20240101001", // 閫�鏂欏崟鍙�(蹇呭~) + /// "barcode": "BC001", // 鏉$爜鍙�(蹇呭~) + /// "userName": "admin" // 鐢ㄦ埛鍚�(蹇呭~) /// } - /// - /// 杩斿洖鏁版嵁鍖呭惈: - /// - form: 澶勭悊缁撴灉琛ㄥ崟 - /// - item: 寰呭鐞嗘槑缁嗗垪琛� - /// - message: 澶勭悊缁撴灉娑堟伅 + /// 杩斿洖鏁版嵁鍖呭惈: + /// - form: 澶勭悊缁撴灉琛ㄥ崟 + /// - item: 寰呭鐞嗘槑缁嗗垪琛� + /// - message: 澶勭悊缁撴灉娑堟伅 /// </remarks> /// <response code="200">鎵弿鎴愬姛</response> /// <response code="400">鎵弿澶辫触锛岃繑鍥炲叿浣撻敊璇俊鎭�</response> @@ -158,25 +155,23 @@ } /// <summary> - /// 鎵撳嵃鏉$爜鍑哄簱 + /// 鎵撳嵃鏉$爜鍑哄簱 /// </summary> /// <param name="query">鏌ヨ鍙傛暟</param> /// <returns>鍑哄簱缁撴灉銆佸緟澶勭悊鏄庣粏鍜屾彁绀烘秷鎭�</returns> /// <remarks> - /// 璇锋眰绀轰緥: - /// + /// 璇锋眰绀轰緥: /// POST /api/MesItemQt/PrintQtckBarcode /// { - /// "userName": "admin", // 鐢ㄦ埛鍚�(蹇呭~) - /// "billNo": "QT20240101001", // 閫�鏂欏崟鍙�(蹇呭~) - /// "barcode": "BC001", // 鏉$爜鍙�(蹇呭~) - /// "Fum": 10 // 鍙戞枡鏁伴噺(蹇呭~,蹇呴』澶т簬0) + /// "userName": "admin", // 鐢ㄦ埛鍚�(蹇呭~) + /// "billNo": "QT20240101001", // 閫�鏂欏崟鍙�(蹇呭~) + /// "barcode": "BC001", // 鏉$爜鍙�(蹇呭~) + /// "Fum": 10 // 鍙戞枡鏁伴噺(蹇呭~,蹇呴』澶т簬0) /// } - /// - /// 杩斿洖鏁版嵁鍖呭惈: - /// - form: 澶勭悊缁撴灉琛ㄥ崟 - /// - item: 寰呭鐞嗘槑缁嗗垪琛� - /// - message: 澶勭悊缁撴灉娑堟伅 + /// 杩斿洖鏁版嵁鍖呭惈: + /// - form: 澶勭悊缁撴灉琛ㄥ崟 + /// - item: 寰呭鐞嗘槑缁嗗垪琛� + /// - message: 澶勭悊缁撴灉娑堟伅 /// </remarks> /// <response code="200">鎵撳嵃鎴愬姛</response> /// <response code="400">鎵撳嵃澶辫触锛岃繑鍥炲叿浣撻敊璇俊鎭�</response> diff --git a/Controllers/Warehouse/TransferOutController.cs b/Controllers/Warehouse/TransferOutController.cs new file mode 100644 index 0000000..b826b2b --- /dev/null +++ b/Controllers/Warehouse/TransferOutController.cs @@ -0,0 +1,169 @@ +锘縰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 TransferOutController : ControllerBase +{ + private readonly TransferOutManager _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); + } + } + + #endregion + + #region 璋冩嫧鍑哄簱涓氬姟 + + /// <summary> + /// 鑾峰彇鏈畬鎴愮殑璋冩嫧鍑哄簱鍗曞彿鍒楄〃 + /// </summary> + /// <returns>鏈畬鎴愮殑璋冩嫧鍑哄簱鍗曞彿鍒楄〃</returns> + /// <remarks> + /// 鑾峰彇鐢宠鏁伴噺(sq)涓嶇瓑浜庡凡鎵暟閲�(ys)鐨勮皟鎷ㄥ嚭搴撳崟鍙峰垪琛� + /// </remarks> + /// <response code="200">鎴愬姛鑾峰彇璋冩嫧鍑哄簱鍗曞彿鍒楄〃</response> + /// <response code="400">鑾峰彇澶辫触</response> + [HttpPost("GetTransferOutNoList")] + public ResponseResult GetTransferOutNoList() + { + try + { + dynamic resultInfos = new ExpandoObject(); + resultInfos.tbBillList = _manager.GetTransferOutNoList(); + 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/TransferOut/GetTransferOutDetailListByBillNo + /// { + /// "billNo": "DB202401010001" // 璋冩嫧鍗曞彿(蹇呭~) + /// } + /// + /// 杩斿洖鏈畬鎴愮殑鏄庣粏璁板綍(ShNum-YsNum>0)锛屽寘鍚細 + /// - ItemNo: 鐗╂枡缂栧彿 + /// - ItemModel: 鐗╂枡瑙勬牸 + /// - ShNum: 鐢宠鏁伴噺 + /// - YsNum: 宸叉壂鏁伴噺 + /// </remarks> + /// <response code="200">鎴愬姛鑾峰彇璋冩嫧鍑哄簱鏄庣粏</response> + /// <response code="400">鑾峰彇澶辫触锛岃繑鍥炲叿浣撻敊璇俊鎭�</response> + [HttpPost("GetTransferOutDetailListByBillNo")] + public ResponseResult GetTransferOutDetailListByBillNo([FromBody] WarehouseQuery query) + { + try + { + dynamic resultInfos = new ExpandoObject(); + resultInfos.tbBillList = _manager.GetTransferOutDetailListByBillNo(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/TransferOut/ScanMoveBarcode + /// { + /// "billNo": "DB202401010001", // 璋冩嫧鍗曞彿(蹇呭~) + /// "userName": "admin", // 鐢ㄦ埛鍚�(蹇呭~) + /// "barcode": "BC001" // 鏉$爜鍙�(蹇呭~) + /// } + /// + /// 涓氬姟澶勭悊锛� + /// - 楠岃瘉璋冩嫧鍗曠姸鎬� + /// - 楠岃瘉鏉$爜搴撳瓨淇℃伅 + /// - 楠岃瘉浠撳簱涓�鑷存�� + /// - 楠岃瘉鏁伴噺鏄惁瓒呭嚭鏈壂鏁伴噺 + /// - 鎵ц璋冩嫧鍑哄簱浜嬪姟澶勭悊 + /// + /// 杩斿洖鏁版嵁鍖呭惈锛� + /// - form: 澶勭悊缁撴灉琛ㄥ崟 + /// - items: 寰呭鐞嗘槑缁嗗垪琛� + /// </remarks> + /// <response code="200">鎵弿鎴愬姛</response> + /// <response code="400">鎵弿澶辫触锛岃繑鍥炲叿浣撻敊璇俊鎭�</response> + [HttpPost("ScanMoveBarcode")] + public ResponseResult ScanMoveBarcode([FromBody] WarehouseQuery query) + { + try + { + dynamic resultInfos = new ExpandoObject(); + var (form, items) = _manager.ScanMoveBarcode(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/entity/MesInvItemMoves.cs b/entity/MesInvItemMoves.cs new file mode 100644 index 0000000..b17070a --- /dev/null +++ b/entity/MesInvItemMoves.cs @@ -0,0 +1,172 @@ +锘縰sing SqlSugar; + +namespace NewPdaSqlServer.entity; + +/// <summary> +/// </summary> +[SugarTable("MES_INV_ITEM_MOVES")] +public class MesInvItemMoves +{ + /// <summary> + /// 榛樿鍊�: (newid()) + /// </summary> + [SugarColumn(ColumnName = "guid", IsPrimaryKey = true)] + public Guid Guid { get; set; } + + /// <summary> + /// 绉诲簱鍗曞彿 + /// </summary> + [SugarColumn(ColumnName = "bill_no")] + public string? BillNo { get; set; } + + /// <summary> + /// 绉诲叆瀛愬簱id + /// </summary> + [SugarColumn(ColumnName = "inv_depots_id")] + public int? InvDepotsId { get; set; } + + /// <summary> + /// 绉诲叆璐т綅id + /// </summary> + [SugarColumn(ColumnName = "inv_depot_sections_id")] + public int? InvDepotSectionsId { get; set; } + + /// <summary> + /// 鍒涘缓浜� + /// </summary> + [SugarColumn(ColumnName = "create_by")] + public string? CreateBy { get; set; } + + /// <summary> + /// 鍒涘缓鏃堕棿 + /// </summary> + [SugarColumn(ColumnName = "create_date")] + public DateTime? CreateDate { get; set; } + + /// <summary> + /// 鏈�鍚庢洿鏂颁汉 + /// </summary> + [SugarColumn(ColumnName = "lastupdate_by")] + public string? LastupdateBy { get; set; } + + /// <summary> + /// 鏈�鍚庢洿鏂版椂闂� + /// </summary> + [SugarColumn(ColumnName = "lastupdate_date")] + public DateTime? LastupdateDate { get; set; } + + /// <summary> + /// 鐘舵�亅0-鍒跺崟1-杩囪处 + /// </summary> + [SugarColumn(ColumnName = "status")] + public int? Status { get; set; } + + /// <summary> + /// 澶囨敞 + /// </summary> + [SugarColumn(ColumnName = "remark")] + public string? Remark { get; set; } + + /// <summary> + /// 鍗曟嵁绫诲瀷ID + /// </summary> + [SugarColumn(ColumnName = "bill_type_id")] + public int? BillTypeId { get; set; } + + /// <summary> + /// 浜嬪姟绫诲瀷ID + /// </summary> + [SugarColumn(ColumnName = "transaction_id")] + public int? TransactionId { get; set; } + + /// <summary> + /// 瀹℃牳浜� + /// </summary> + [SugarColumn(ColumnName = "checkuser")] + public string? Checkuser { get; set; } + + /// <summary> + /// 瀹℃牳鏃ユ湡 + /// </summary> + [SugarColumn(ColumnName = "checkdate")] + public DateTime? Checkdate { get; set; } + + /// <summary> + /// 浜嬪姟绫诲瀷缂栫爜 + /// </summary> + [SugarColumn(ColumnName = "transaction_no")] + public int? TransactionNo { get; set; } + + /// <summary> + /// 绉诲嚭瀛愬簱id + /// </summary> + [SugarColumn(ColumnName = "from_depots_id")] + public string? FromDepotsId { get; set; } + + /// <summary> + /// 宸ュ巶缂栫爜 + /// </summary> + [SugarColumn(ColumnName = "factory_code")] + public string? FactoryCode { get; set; } + + /// <summary> + /// SAP杩斿洖鍗曟嵁 + /// </summary> + [SugarColumn(ColumnName = "sapno")] + public string? Sapno { get; set; } + + /// <summary> + /// 宸插洖鍐橲AP + /// 榛樿鍊�: ((0)) + /// </summary> + [SugarColumn(ColumnName = "sapstatus")] + public int? Sapstatus { get; set; } + + /// <summary> + /// SAP杩斿洖骞翠唤 + /// </summary> + [SugarColumn(ColumnName = "sapyear")] + public int? Sapyear { get; set; } + + /// <summary> + /// SAP杩斿洖淇℃伅 + /// </summary> + [SugarColumn(ColumnName = "saptext")] + public string? Saptext { get; set; } + + /// <summary> + /// 鍒嗗巶缂栫爜 + /// </summary> + [SugarColumn(ColumnName = "factory")] + public string? Factory { get; set; } + + /// <summary> + /// 鍏徃浠g爜 + /// </summary> + [SugarColumn(ColumnName = "company")] + public string? Company { get; set; } + + /// <summary> + /// 鍙嶅鏍镐簨鍔$被鍨嬬紪鐮� + /// </summary> + [SugarColumn(ColumnName = "mtransaction_no")] + public int? MtransactionNo { get; set; } + + /// <summary> + /// 鑷姩淇濆瓨瀛楁 + /// </summary> + [SugarColumn(ColumnName = "zd_num")] + public int? ZdNum { get; set; } + + /// <summary> + /// 鏄惁鎺ㄩ�丒RP1-鏄紝2-鍚� + /// </summary> + [SugarColumn(ColumnName = "ts")] + public int? Ts { get; set; } + + /// <summary> + /// 璋冩嫧鍑哄簱鐢宠鍗� + /// </summary> + [SugarColumn(ColumnName = "TASK_NO")] + public string? TaskNo { get; set; } +} \ No newline at end of file diff --git a/entity/MesInvItemMovesCDetails.cs b/entity/MesInvItemMovesCDetails.cs new file mode 100644 index 0000000..3ac4eef --- /dev/null +++ b/entity/MesInvItemMovesCDetails.cs @@ -0,0 +1,250 @@ +锘縰sing SqlSugar; + +namespace NewPdaSqlServer.entity; + +/// <summary> +/// </summary> +[SugarTable("MES_INV_ITEM_MOVES_C_DETAILS")] +public class MesInvItemMovesCDetails +{ + /// <summary> + /// </summary> + [SugarColumn(ColumnName = "guid", IsPrimaryKey = true)] + public Guid Guid { get; set; } + + /// <summary> + /// </summary> + [SugarColumn(ColumnName = "item_move_guid")] + public Guid? ItemMoveGuid { get; set; } + + /// <summary> + /// 鐗╂枡鏉$爜 + /// </summary> + [SugarColumn(ColumnName = "item_barcode")] + public string? ItemBarcode { get; set; } + + /// <summary> + /// 瀹㈡埛鐗╂枡缂栫爜锛堟棤鏉$爜鎵嬪伐褰曞叆锛屾湁鏉$爜涓哄啑浣欏瓧娈碉級 + /// </summary> + [SugarColumn(ColumnName = "c_item_code")] + public string? CItemCode { get; set; } + + /// <summary> + /// 淇″崕鐗╂枡缂栫爜锛堟棤鏉$爜鎵嬪伐褰曞叆锛屾湁鏉$爜涓哄啑浣欏瓧娈碉級 + /// </summary> + [SugarColumn(ColumnName = "item_no")] + public string? ItemNo { get; set; } + + /// <summary> + /// 鍘傚鎵规 + /// </summary> + [SugarColumn(ColumnName = "lot_no")] + public string? LotNo { get; set; } + + /// <summary> + /// 鏁伴噺锛堟棤鏉$爜鎵嬪伐褰曞叆锛屾湁鏉$爜涓哄啑浣欏瓧娈碉級 + /// </summary> + [SugarColumn(ColumnName = "quantity")] + public decimal? Quantity { get; set; } + + /// <summary> + /// 鍑哄簱鏂瑰紡(1:鏈夋潯鐮�,0:鏃犳潯鐮�) + /// 榛樿鍊�: ((1)) + /// </summary> + [SugarColumn(ColumnName = "barcode_flag")] + public int? BarcodeFlag { get; set; } + + /// <summary> + /// 鐜繚鏍囧織锛堟棤鏉$爜鎵嬪伐褰曞叆锛屾湁鏉$爜涓哄啑浣欏瓧娈碉級 + /// 榛樿鍊�: ((1)) + /// </summary> + [SugarColumn(ColumnName = "ep_flag")] + public int? EpFlag { get; set; } + + /// <summary> + /// 鍒涘缓浜� + /// </summary> + [SugarColumn(ColumnName = "create_by")] + public string? CreateBy { get; set; } + + /// <summary> + /// 鍒涘缓鏃堕棿 + /// </summary> + [SugarColumn(ColumnName = "create_date")] + public DateTime? CreateDate { get; set; } + + /// <summary> + /// 鏈�鍚庢洿鏂颁汉 + /// </summary> + [SugarColumn(ColumnName = "lastupdate_by")] + public string? LastupdateBy { get; set; } + + /// <summary> + /// 鏈�鍚庢洿鏂版椂闂� + /// </summary> + [SugarColumn(ColumnName = "lastupdate_date")] + public DateTime? LastupdateDate { get; set; } + + /// <summary> + /// 瀛愬簱id + /// </summary> + [SugarColumn(ColumnName = "inv_depots_id")] + public int? InvDepotsId { get; set; } + + /// <summary> + /// 璐т綅id + /// </summary> + [SugarColumn(ColumnName = "inv_depot_sections_id")] + public int? InvDepotSectionsId { get; set; } + + /// <summary> + /// 瀹㈡埛缂栫爜 + /// </summary> + [SugarColumn(ColumnName = "cust_no")] + public string? CustNo { get; set; } + + /// <summary> + /// 浠诲姟浠ゅ彿 + /// </summary> + [SugarColumn(ColumnName = "task_no")] + public string? TaskNo { get; set; } + + /// <summary> + /// 绉诲嚭浠撳簱缂栧彿 + /// </summary> + [SugarColumn(ColumnName = "from_depots_code")] + public string? FromDepotsCode { get; set; } + + /// <summary> + /// 绉诲嚭搴撲綅缂栧彿 + /// </summary> + [SugarColumn(ColumnName = "from_depot_sections_code")] + public string? FromDepotSectionsCode { get; set; } + + /// <summary> + /// 鏉$爜澶囨敞 + /// </summary> + [SugarColumn(ColumnName = "remark")] + public string? Remark { get; set; } + + /// <summary> + /// 鍒嗗巶缂栫爜 + /// </summary> + [SugarColumn(ColumnName = "factory")] + public string? Factory { get; set; } + + /// <summary> + /// 鍏徃浠g爜 + /// </summary> + [SugarColumn(ColumnName = "company")] + public string? Company { get; set; } + + /// <summary> + /// 绠卞彿 + /// </summary> + [SugarColumn(ColumnName = "box_no")] + public string? BoxNo { get; set; } + + /// <summary> + /// 鍗℃澘鍙� + /// </summary> + [SugarColumn(ColumnName = "ko_no")] + public string? KoNo { get; set; } + + /// <summary> + /// 绉诲叆浠撳簱缂栧彿 + /// </summary> + [SugarColumn(ColumnName = "inv_depots_code")] + public string? InvDepotsCode { get; set; } + + /// <summary> + /// 绉诲叆搴撲綅缂栧彿 + /// </summary> + [SugarColumn(ColumnName = "inv_depot_sections_code")] + public string? InvDepotSectionsCode { get; set; } + + /// <summary> + /// 璐ㄦ缁撴灉 + /// </summary> + [SugarColumn(ColumnName = "iqc_status")] + public string? IqcStatus { get; set; } + + /// <summary> + /// 灏忚溅缂栧彿 + /// </summary> + [SugarColumn(ColumnName = "fcar")] + public string? Fcar { get; set; } + + /// <summary> + /// 鍏ュ簱鏃ユ湡 + /// </summary> + [SugarColumn(ColumnName = "indep_date")] + public DateTime? IndepDate { get; set; } + + /// <summary> + /// 鍐荤粨鎻愪氦閲嶆锛�0锛氬喕缁撴湭鎻愪氦閲嶆锛�1锛氬喕缁撳苟鎻愪氦閲嶆 + /// 榛樿鍊�: ((0)) + /// </summary> + [SugarColumn(ColumnName = "visable_submit")] + public int? VisableSubmit { get; set; } + + /// <summary> + /// 鎻愪氦閲嶆浜� + /// </summary> + [SugarColumn(ColumnName = "visable_submit_by")] + public string? VisableSubmitBy { get; set; } + + /// <summary> + /// 鎻愪氦閲嶆鏃堕棿 + /// </summary> + [SugarColumn(ColumnName = "visable_submit_date")] + public DateTime? VisableSubmitDate { get; set; } + + /// <summary> + /// 浜у搧鍨嬪彿 + /// </summary> + [SugarColumn(ColumnName = "board_style")] + public string? BoardStyle { get; set; } + + /// <summary> + /// 浠诲姟鍗曞彿 + /// </summary> + [SugarColumn(ColumnName = "work_no")] + public string? WorkNo { get; set; } + + /// <summary> + /// 浠诲姟鍗曡鍙� + /// </summary> + [SugarColumn(ColumnName = "work_line")] + public int? WorkLine { get; set; } + + /// <summary> + /// 渚涘簲鍟嗙紪鍙� + /// </summary> + [SugarColumn(ColumnName = "supp_no")] + public string? SuppNo { get; set; } + + /// <summary> + /// 璋冨叆 + /// </summary> + [SugarColumn(ColumnName = "move_ok")] + public int? MoveOk { get; set; } + + /// <summary> + /// 鐗╂枡ID + /// </summary> + [SugarColumn(ColumnName = "item_id")] + public int? ItemId { get; set; } + + /// <summary> + /// K3ID + /// </summary> + [SugarColumn(ColumnName = "EBELN_K3ID")] + public long? EbelnK3id { get; set; } + + /// <summary> + /// 琛孠3ID + /// </summary> + [SugarColumn(ColumnName = "LINE_K3ID")] + public long? LineK3id { get; set; } +} \ No newline at end of file diff --git a/entity/TransferOut.cs b/entity/TransferOut.cs new file mode 100644 index 0000000..be97376 --- /dev/null +++ b/entity/TransferOut.cs @@ -0,0 +1,199 @@ +锘縰sing SqlSugar; + +namespace NewPdaSqlServer.entity; + +/// <summary> +/// 璋冩嫧鍑哄簱涓昏〃 +/// </summary> +[SugarTable("Transfer_Out")] +public class TransferOut +{ + /// <summary> + /// 涓婚敭 + /// 榛樿鍊�: (newid()) + /// </summary> + [SugarColumn(ColumnName = "guid", IsPrimaryKey = true)] + public Guid Guid { get; set; } + + /// <summary> + /// 鍗曟嵁绫诲瀷 + /// </summary> + [SugarColumn(ColumnName = "bill_type_id")] + public string BillTypeId { get; set; } + + /// <summary> + /// 璋冩嫧鏂瑰悜 + /// </summary> + [SugarColumn(ColumnName = "transfer_direct")] + public string TransferDirect { get; set; } + + /// <summary> + /// 璋冩嫧绫诲瀷 + /// </summary> + [SugarColumn(ColumnName = "transfer_biz_type")] + public string TransferBizType { get; set; } + + /// <summary> + /// 璋冨嚭搴撳瓨缁勭粐 + /// </summary> + [SugarColumn(ColumnName = "stockoutorg_id")] + public string StockoutorgId { get; set; } + + /// <summary> + /// 璋冨叆搴撳瓨缁勭粐 + /// </summary> + [SugarColumn(ColumnName = "stockorg_id")] + public string StockorgId { get; set; } + + /// <summary> + /// 璋冨嚭璐т富绫诲瀷 + /// </summary> + [SugarColumn(ColumnName = "owner_type_out_id_head")] + public string OwnerTypeOutIdHead { get; set; } + + /// <summary> + /// 璋冨嚭璐т富 + /// </summary> + [SugarColumn(ColumnName = "owner_out_id_head")] + public string OwnerOutIdHead { get; set; } + + /// <summary> + /// 璋冨叆璐т富绫诲瀷 + /// </summary> + [SugarColumn(ColumnName = "owner_type_id_head")] + public string OwnerTypeIdHead { get; set; } + + /// <summary> + /// 璋冨叆璐т富 + /// </summary> + [SugarColumn(ColumnName = "owner_id_head")] + public string OwnerIdHead { get; set; } + + /// <summary> + /// 閿�鍞粍缁� + /// </summary> + [SugarColumn(ColumnName = "saleorg_id")] + public string SaleorgId { get; set; } + + /// <summary> + /// 鍒涘缓浜� + /// </summary> + [SugarColumn(ColumnName = "create_by")] + public string CreateBy { get; set; } + + /// <summary> + /// 鍒涘缓鏃堕棿 + /// </summary> + [SugarColumn(ColumnName = "cteate_data")] + public DateTime? CteateData { get; set; } + + /// <summary> + /// 鏈�鍚庢洿鏂颁汉 + /// </summary> + [SugarColumn(ColumnName = "lastupdate_by")] + public string LastupdateBy { get; set; } + + /// <summary> + /// 鏈�鍚庢洿鏂版椂闂� + /// </summary> + [SugarColumn(ColumnName = "lastupdate_date")] + public DateTime? LastupdateDate { get; set; } + + /// <summary> + /// 瀹℃牳浜� + /// </summary> + [SugarColumn(ColumnName = "CHECK_USER")] + public string CheckUser { get; set; } + + /// <summary> + /// 瀹℃牳鏃堕棿 + /// </summary> + [SugarColumn(ColumnName = "CHECK_DATE")] + public DateTime? CheckDate { get; set; } + + /// <summary> + /// 瀹℃牳鐘舵�� + /// 榛樿鍊�: ((0)) + /// </summary> + [SugarColumn(ColumnName = "STATUS")] + public int? Status { get; set; } + + /// <summary> + /// 璋冩嫧绫诲瀷缂栫爜 + /// </summary> + [SugarColumn(ColumnName = "transferbiztype_no")] + public string TransferbiztypeNo { get; set; } + + /// <summary> + /// 璋冩嫧鏂瑰悜缂栫爜 + /// </summary> + [SugarColumn(ColumnName = "transferdirect_no")] + public string TransferdirectNo { get; set; } + + /// <summary> + /// 璋冨嚭浠撳簱 + /// </summary> + [SugarColumn(ColumnName = "inv_code")] + public string InvCode { get; set; } + + /// <summary> + /// 璋冨嚭浠撳簱鍚嶇О + /// </summary> + [SugarColumn(ColumnName = "inv_name")] + public string InvName { get; set; } + + /// <summary> + /// 璋冨叆浠撳簱 + /// </summary> + [SugarColumn(ColumnName = "from_code")] + public string FromCode { get; set; } + + /// <summary> + /// 璋冨叆浠撳簱鍚嶇О + /// </summary> + [SugarColumn(ColumnName = "from_name")] + public string FromName { get; set; } + + /// <summary> + /// 璋冨嚭搴撳瓨缁勭粐ID + /// </summary> + [SugarColumn(ColumnName = "stockoutorgid_no")] + public int? StockoutorgidNo { get; set; } + + /// <summary> + /// 璋冨叆搴撳瓨缁勭粐ID + /// </summary> + [SugarColumn(ColumnName = "stockorgid_no")] + public int? StockorgidNo { get; set; } + + /// <summary> + /// 璋冩嫧鐢宠鍗� + /// </summary> + [SugarColumn(ColumnName = "bill_no")] + public string BillNo { get; set; } + + /// <summary> + /// 鍗曟嵁绫诲瀷缂栫爜 + /// </summary> + [SugarColumn(ColumnName = "billtypeid_no")] + public string BilltypeidNo { get; set; } + + /// <summary> + /// 鍑哄簱浠撳簱 + /// </summary> + [SugarColumn(ColumnName = "ck_depot")] + public int? CkDepot { get; set; } + + /// <summary> + /// 鍏ュ簱浠撳簱 + /// </summary> + [SugarColumn(ColumnName = "rk_depot")] + public int? RkDepot { get; set; } + + /// <summary> + /// 瀹岀粨鏍囪瘑 + /// 榛樿鍊�: ((0)) + /// </summary> + [SugarColumn(ColumnName = "is_wc")] + public int? IsWc { get; set; } +} \ No newline at end of file diff --git a/entity/TransferOutEtail.cs b/entity/TransferOutEtail.cs new file mode 100644 index 0000000..0bbe03c --- /dev/null +++ b/entity/TransferOutEtail.cs @@ -0,0 +1,67 @@ +锘縰sing SqlSugar; + +namespace NewPdaSqlServer.entity; + +/// <summary> +/// 璋冩嫧鍑哄簱鐢宠鏄庣粏 +/// </summary> +[SugarTable("Transfer_Out_DETAIL")] +public class TransferOutDetail +{ + /// <summary> + /// 榛樿鍊�: (newid()) + /// </summary> + [SugarColumn(ColumnName = "guid", IsPrimaryKey = true)] + public Guid Guid { get; set; } + + /// <summary> + /// </summary> + [SugarColumn(ColumnName = "pid")] + public Guid? Pid { get; set; } + + /// <summary> + /// </summary> + [SugarColumn(ColumnName = "item_id")] + public int? ItemId { get; set; } + + /// <summary> + /// 鐢宠鏁伴噺 + /// </summary> + [SugarColumn(ColumnName = "sh_num")] + public int? ShNum { get; set; } + + /// <summary> + /// 宸叉壂鏁伴噺 + /// </summary> + [SugarColumn(ColumnName = "ys_num")] + public int? YsNum { get; set; } + + /// <summary> + /// </summary> + [SugarColumn(ColumnName = "item_unit")] + public string? ItemUnit { get; set; } + + /// <summary> + /// 鐗╂枡鍚嶇О + /// </summary> + [SugarColumn(ColumnName = "item_name")] + public string? ItemName { get; set; } + + /// <summary> + /// 鐗╂枡缂栫爜 + /// </summary> + [SugarColumn(ColumnName = "item_no")] + public string? ItemNo { get; set; } + + /// <summary> + /// 瑙勬牸鍨嬪彿 + /// </summary> + [SugarColumn(ColumnName = "item_model")] + public string? ItemModel { get; set; } + + /// <summary> + /// 褰撳墠搴撳瓨鏁� + /// </summary> + [SugarColumn(ColumnName = "kc")] + public int? Kc { get; set; } +} \ No newline at end of file diff --git a/service/Warehouse/MesItemQtManager.cs b/service/Warehouse/MesItemQtManager.cs index 01ce4e1..83730c5 100644 --- a/service/Warehouse/MesItemQtManager.cs +++ b/service/Warehouse/MesItemQtManager.cs @@ -24,7 +24,7 @@ } /// <summary> - /// 鑾峰彇寰呭鐞嗙殑閫�鏂欏崟鏄庣粏鍒楄〃 + /// 鑾峰彇寰呭鐞嗙殑閫�鏂欏崟鏄庣粏鍒楄〃 /// </summary> /// <param name="query">浠撳簱鏌ヨ鍙傛暟锛屽寘鍚敤鎴峰悕鍜屽崟鎹彿</param> /// <returns>寰呭鐞嗙殑閫�鏂欏崟鏄庣粏鍒楄〃</returns> @@ -40,22 +40,15 @@ .First(); // 濡傛灉鏈壘鍒伴��鏂欏崟锛屾姏鍑哄紓甯� - if (mesItemQt == null) - { - throw new Exception($"鏈煡璇㈠埌姝ゅ叾浠栧叆搴撶敵璇峰崟 {p_bill_no}"); - } + if (mesItemQt == null) throw new Exception($"鏈煡璇㈠埌姝ゅ叾浠栧叆搴撶敵璇峰崟 {p_bill_no}"); // 妫�鏌ラ��鏂欏崟鐨勫鏍哥姸鎬�(Qt015)锛屾湭瀹℃牳鍒欐姏鍑哄紓甯� if (mesItemQt.Qt015 == false) - { throw new Exception($"鍏朵粬鍑哄簱鐢宠鍗� {p_bill_no} 鏈鏍革紝璇风‘璁わ紒"); - } // 妫�鏌ラ��鏂欏崟鐨勫畬缁撶姸鎬�(Qt014)锛屽凡瀹岀粨鍒欐姏鍑哄紓甯� if (mesItemQt.Qt014 == true) - { throw new Exception($"鍏朵粬鍑哄簱鐢宠鍗� {p_bill_no} 宸插畬缁擄紝璇风‘璁わ紒"); - } // 鑱旇〃鏌ヨ鑾峰彇鏈畬鎴愮殑鏄庣粏鍒楄〃 // 鍏宠仈琛細 @@ -97,10 +90,7 @@ var p_transaction_no = 202; // 妫�鏌ュ崟鎹彿鏄惁涓虹┖ - if (string.IsNullOrEmpty(p_bill_no)) - { - throw new Exception("璇烽�夊彇鍗曟嵁鍙凤紒"); - } + if (string.IsNullOrEmpty(p_bill_no)) throw new Exception("璇烽�夊彇鍗曟嵁鍙凤紒"); // 妫�鏌ユ槸鍚﹂噸澶嶆壂鎻� var existingBarcode = Db.Queryable<MesInvItemOutCDetails>() @@ -108,10 +98,7 @@ it.ItemBarcode == p_item_barcode && it.PbillNo == p_bill_no) .Any(); - if (existingBarcode) - { - throw new Exception("姝ゆ潯鐮佸凡缁忔壂鐮佸嚭搴�,鍕块噸澶嶆壂鎻忥紒"); - } + if (existingBarcode) throw new Exception("姝ゆ潯鐮佸凡缁忔壂鐮佸嚭搴�,鍕块噸澶嶆壂鎻忥紒"); // 鑾峰彇鏉$爜淇℃伅 var barcode = Db.Queryable<MesInvItemBarcodes>() @@ -119,9 +106,7 @@ .First(); if (barcode == null) - { throw new Exception($"mes涓笉瀛樺湪姝ゆ潯鐮�,璇锋牳瀵癸紒{p_item_barcode}"); - } // 鑾峰彇搴撳瓨淇℃伅 var stock = Db.Queryable<MesInvItemStocks>() @@ -129,20 +114,14 @@ .First(); if (stock == null) - { throw new Exception($"搴撳瓨涓棤姝ゆ潯鐮侊紝璇锋鏌ユ潯鐮佹槸鍚︽湭鍏ュ簱鎴栧凡鍑哄簱锛亄p_item_barcode}"); - } if (string.IsNullOrEmpty(stock.DepotsCode)) - { throw new Exception($"璋冩嫧涓殑鏉$爜涓嶅彲鍙戞枡,璇峰厛瀹屾垚璋冩嫧鍗曟嵁{p_item_barcode}"); - } if (stock.DepotsCode is "S006" or "S005") - { throw new Exception($"鏉$爜鍦ㄤ笉鑹搧浠撲笅 涓嶅彲鍙戞枡{p_item_barcode}"); - } // 妫�鏌ユ槸鍚﹀湪瀵勫瓨浠撲綅 // var isDepotSection = Db.Queryable<MesJcDepot>() @@ -160,16 +139,12 @@ .First(); if (mesItemQt == null) - { throw new Exception($"鍏朵粬鍑哄簱鐢宠鍗� {p_bill_no} 涓嶅瓨鍦紝璇风‘璁わ紒"); - } // 妫�鏌ヤ粨搴撴槸鍚︿竴鑷� if (mesItemQt.Qt011 != stock.DepotsCode) - { throw new Exception( $"鎵爜鍑鸿揣浠撳簱{stock.DepotsCode}涓庡叾浠栧嚭搴撶敵璇蜂粨搴搟mesItemQt.Qt011}涓嶄竴鑷达紝璇锋牳瀵癸紒"); - } // 鑾峰彇鍑哄簱鍗曟槑缁� var qtDetail = Db.Queryable<MesItemQtDatall>() @@ -178,17 +153,12 @@ it.ItemId == stock.ItemId.ToString()) .First(); - if (qtDetail == null) - { - throw new Exception("鎵爜鐗╂枡闈炴湰娆″嚭搴撶敵璇风墿鏂欙紝璇锋牳瀵癸紒"); - } + if (qtDetail == null) throw new Exception("鎵爜鐗╂枡闈炴湰娆″嚭搴撶敵璇风墿鏂欙紝璇锋牳瀵癸紒"); // 妫�鏌ュ墿浣欐暟閲� var remainingQty = (qtDetail.Qd007 ?? 0) - (qtDetail.Qd008 ?? 0); if (remainingQty <= 0) - { throw new Exception($"鐢宠鐗╂枡 {barcode.ItemNo} 宸插嚭搴撳畬鎴愶紒"); - } // 妫�鏌ユ暟閲忔槸鍚﹁秴鍑� if (stock.Quantity > remainingQty) @@ -295,10 +265,7 @@ it.ItemId == stock.ItemId.ToString()) .First(); - if (qtDetail == null) - { - throw new Exception($"鏈壘鍒板搴旂殑閫�鏂欏崟鏄庣粏淇℃伅"); - } + if (qtDetail == null) throw new Exception("鏈壘鍒板搴旂殑閫�鏂欏崟鏄庣粏淇℃伅"); // 妫�鏌ユ槸鍚﹀凡瀛樺湪鍑哄簱鐗╂枡璁板綍 var existingOutItem = Db.Queryable<MesInvItemOutItems>() @@ -329,7 +296,7 @@ ItemId = !string.IsNullOrEmpty(qtDetail.ItemId) ? long.Parse(qtDetail.ItemId) : null, - FType = 0, + FType = 0 // Unit = qtDetail.Qd009 }; @@ -429,12 +396,10 @@ // 妫�鏌ユ槑缁嗘槸鍚﹀畬鎴�,濡傛灉瀹屾垚鍒欐洿鏂扮姸鎬� if ((qtDetail.Qd007 ?? 0) - (qtDetail.Qd008 ?? 0) == stock.Quantity) - { commit += db.Updateable<MesItemQtDatall>() .SetColumns(it => it.Qd011 == 1) .Where(it => it.Guid == qtDetail.Guid) .ExecuteCommand(); - } mesItemQtDatalls = Db .Queryable<MesItemQt, MesItemQtDatall, MesItems>( @@ -456,12 +421,10 @@ // 濡傛灉娌℃湁寰呭鐞嗘槑缁嗭紝鏇存柊閫�鏂欏崟鐘舵�佷负宸插畬鎴� if (CollectionUtil.IsNullOrEmpty(mesItemQtDatalls)) - { db.Updateable<MesItemQt>() .SetColumns(it => it.Qt014 == true) .Where(it => it.Qtck == p_bill_no) .ExecuteCommand(); - } // 鏋勫缓杩斿洖娑堟伅 mess = $"鎵爜鎴愬姛锛佹潯鐮� {p_item_barcode} 鏁伴噺 {stock.Quantity} 宸插嚭搴�"; @@ -471,10 +434,7 @@ query.Num = stock.Quantity; query.Fum = null; - if (commit < 5) - { - throw new Exception("鏇存柊澶辫触"); - } + if (commit < 5) throw new Exception("鏇存柊澶辫触"); return commit; }); @@ -494,16 +454,10 @@ var p_transaction_no = 202; // 妫�鏌ュ崟鎹彿鏄惁涓虹┖ - if (string.IsNullOrEmpty(p_bill_no)) - { - throw new Exception("璇烽�夊彇鍗曟嵁鍙凤紒"); - } + if (string.IsNullOrEmpty(p_bill_no)) throw new Exception("璇烽�夊彇鍗曟嵁鍙凤紒"); // 妫�鏌ユ暟閲忔槸鍚︽湁鏁� - if (p_qty <= 0) - { - throw new Exception("璇疯緭鍏ユ纭殑鍙戞枡鏁伴噺锛�"); - } + if (p_qty <= 0) throw new Exception("璇疯緭鍏ユ纭殑鍙戞枡鏁伴噺锛�"); // 鑾峰彇搴撳瓨鏉$爜淇℃伅 var stock = Db.Queryable<MesInvItemStocks>() @@ -511,19 +465,13 @@ .First(); if (stock == null) - { throw new Exception($"搴撳瓨涓棤姝ゆ潯鐮侊紝璇锋鏌ユ潯鐮佹槸鍚︽湭鍏ュ簱鎴栧凡鍑哄簱锛亄p_old_barcode}"); - } if (string.IsNullOrEmpty(stock.DepotsCode)) - { throw new Exception($"璋冩嫧涓殑鏉$爜涓嶅彲鍙戞枡,璇峰厛瀹屾垚璋冩嫧鍗曟嵁{p_old_barcode}"); - } if (stock.DepotsCode is "S006" or "S005") - { throw new Exception($"鏉$爜鍦ㄤ笉鑹搧浠撲笅 涓嶅彲鍙戞枡{p_old_barcode}"); - } // 鑾峰彇鏉$爜淇℃伅 var barcode = Db.Queryable<MesInvItemBarcodes>() @@ -531,9 +479,7 @@ .First(); if (barcode == null) - { throw new Exception($"mes涓笉瀛樺湪姝ゆ潯鐮侊紝璇锋牳瀵癸紒{p_old_barcode}"); - } // 鑾峰彇閫�鏂欏崟淇℃伅 var mesItemQt = Db.Queryable<MesItemQt>() @@ -541,15 +487,11 @@ .First(); if (mesItemQt == null) - { throw new Exception($"鍏朵粬鍑哄簱鐢宠鍗� {p_bill_no} 涓嶅瓨鍦紝璇风‘璁わ紒"); - } if (mesItemQt.Qt011 != stock.DepotsCode) - { throw new Exception( $"鎵爜鍑鸿揣浠撳簱{stock.DepotsCode}涓庡叾浠栧嚭搴撶敵璇蜂粨搴搟mesItemQt.Qt011}涓嶄竴鑷达紝璇锋牳瀵癸紒"); - } // 鑾峰彇閫�鏂欏崟鏄庣粏 var qtDetail = Db.Queryable<MesItemQtDatall>() @@ -558,32 +500,23 @@ it.ItemId == stock.ItemId.ToString()) .First(); - if (qtDetail == null) - { - throw new Exception("鎵爜鐗╂枡闈炴湰娆″嚭搴撶敵璇风墿鏂欙紝璇锋牳瀵癸紒"); - } + if (qtDetail == null) throw new Exception("鎵爜鐗╂枡闈炴湰娆″嚭搴撶敵璇风墿鏂欙紝璇锋牳瀵癸紒"); var remainingQty = (qtDetail.Qd007 ?? 0) - (qtDetail.Qd008 ?? 0); if (remainingQty <= 0) - { throw new Exception($"鐢宠鐗╂枡 {barcode.ItemNo} 宸插嚭搴撳畬鎴愶紒"); - } if (p_qty > remainingQty) - { throw new Exception( $"杈撳叆鐨勬媶鍒嗘暟閲� {p_qty} 涓嶅彲澶т簬鍓╀綑闇�鍙戞暟閲� {remainingQty} 璇蜂慨鏀�"); - } var totalQty = Db.Queryable<MesInvItemStocks>() .Where(it => it.ItemBarcode == p_old_barcode && it.Quantity > 0) .Sum(it => it.Quantity); if (totalQty < p_qty) - { throw new Exception($"杈撳叆鐨勫彂鏂欐暟閲� {p_qty} 涓嶅彲澶т簬鏉$爜鏁伴噺 {totalQty} 璇蜂慨鏀�"); - } var message = string.Empty; var mesItemQtDatalls = new List<MesItemQtDatall>(); @@ -633,7 +566,7 @@ ComeFlg = 5, EbelnK3id = barcode.EbelnK3id, LineK3id = barcode.LineK3id, - ItemId = barcode.ItemId, + ItemId = barcode.ItemId }).IgnoreColumns(true).ExecuteCommand(); // 鏇存柊鍘熸潯鐮佹暟閲� @@ -667,7 +600,7 @@ BillNo = stock.BillNo, EbelnK3id = stock.EbelnK3id, LineK3id = stock.LineK3id, - ItemId = stock.ItemId, + ItemId = stock.ItemId }).IgnoreColumns(true).ExecuteCommand(); @@ -702,7 +635,7 @@ LineK3id = stock.LineK3id, SuppId = stock.SuppId, SuppNo = stock.SuppNo, - ItemId = stock.ItemId, + ItemId = stock.ItemId }).IgnoreColumns(true).ExecuteCommand(); } else @@ -733,7 +666,7 @@ commit += db.Insertable(new MesInvItemOuts { Guid = outId, - ItemOutNo = $"OUT-{DateTime.Now:yyyyMMddHHmmss}", + ItemOutNo = outNo, TaskNo = p_bill_no, Status = 0, CreateBy = c_user, @@ -751,9 +684,8 @@ PbillNo = p_bill_no, OutDate = DateTime.Now, Nflag = 0, - Reason = mesItemQt.Qt010, + Reason = mesItemQt.Qt010 }).ExecuteReturnIdentity(); - outNo = $"OUT-{DateTime.Now:yyyyMMddHHmmss}"; } else { @@ -768,7 +700,6 @@ .First(); if (outItem == null) - { // 鎻掑叆鏂版槑缁� db.Insertable(new MesInvItemOutItems { @@ -789,12 +720,10 @@ ItemId = !string.IsNullOrEmpty(qtDetail.ItemId) ? long.Parse(qtDetail.ItemId) : null, - FType = 0, + FType = 0 // Unit = qtDetail.Qd009 }).ExecuteCommand(); - } else - { // 鏇存柊鏄庣粏鏁伴噺 db.Updateable<MesInvItemOutItems>() .SetColumns(it => @@ -804,7 +733,6 @@ it.ItemId == stock.ItemId && it.QtOutId == qtDetail.Guid) .ExecuteCommand(); - } // 鎻掑叆鍑哄簱鏄庣粏 db.Insertable(new MesInvItemOutCDetails @@ -887,12 +815,10 @@ // 濡傛灉鎵�鏈夋槑缁嗗畬鎴愶紝鏇存柊閫�鏂欏崟鐘舵�� if (!hasUnfinished) - { db.Updateable<MesItemQt>() .SetColumns(it => it.Qt014 == true) .Where(it => it.Qtck == p_bill_no) .ExecuteCommand(); - } // 鑾峰彇鍓╀綑寰呭鐞嗘槑缁� mesItemQtDatalls = db diff --git a/service/Warehouse/TransferOutManager.cs b/service/Warehouse/TransferOutManager.cs new file mode 100644 index 0000000..2788646 --- /dev/null +++ b/service/Warehouse/TransferOutManager.cs @@ -0,0 +1,381 @@ +锘縰sing NewPdaSqlServer.DB; +using NewPdaSqlServer.Dto.service; +using NewPdaSqlServer.entity; +using NewPdaSqlServer.util; +using SqlSugar; + +namespace NewPdaSqlServer.service.Warehouse; + +/// <summary> +/// 璋冩嫧鍑哄簱绠$悊绫� +/// 璐熻矗澶勭悊璋冩嫧鍑哄簱鐩稿叧鐨勪笟鍔¢�昏緫 +/// </summary> +public class TransferOutManager : Repository<TransferOut> +{ + /// <summary> + /// 鑾峰彇鏈畬鎴愮殑璋冩嫧鍑哄簱鍗曞彿鍒楄〃 + /// </summary> + /// <returns>鏈畬鎴愮殑璋冩嫧鍑哄簱鍗曞彿鍒楄〃</returns> + public List<string> GetTransferOutNoList() + { + // 鍏堜粠鏁版嵁搴撹幏鍙朤ransfer_Out_ETAIL琛ㄧ殑鏁版嵁 + var transferOutDetails = Db.Queryable<TransferOutDetail>().ToList(); + + // 浣跨敤LINQ瀵硅幏鍙栫殑鏁版嵁杩涜鍒嗙粍鍜岀瓫閫� + // 绛涢�夋潯浠�:鐢宠鏁伴噺(sq)涓嶇瓑浜庡凡鎵暟閲�(ys)鐨勮褰� + var result = transferOutDetails + .GroupBy(x => x.Pid) + .Select(g => new + { + pid = g.Key, + sq = g.Sum(x => x.ShNum), // 鐢宠鏁伴噺鍚堣 + ys = g.Sum(x => x.YsNum) // 宸叉壂鏁伴噺鍚堣 + }) + .Where(x => (x.sq ?? 0) != (x.ys ?? 0)) + .Select(x => x.pid) + .ToList(); + + // 鏍规嵁pid鏌ヨ瀵瑰簲鐨勫嚭搴撳崟鍙� + var billNos = Db.Queryable<TransferOut>() + .Where(x => result.Contains(x.Guid)) + .Select(x => x.BillNo) + .ToList(); + + return billNos; + } + + /// <summary> + /// 鏍规嵁鍗曟嵁鍙疯幏鍙栧緟澶勭悊鐨勮皟鎷ㄥ嚭搴撴槑缁嗗垪琛� + /// </summary> + /// <param name="query">鏌ヨ鍙傛暟,鍖呭惈鍗曟嵁鍙�</param> + /// <returns>寰呭鐞嗙殑璋冩嫧鍑哄簱鏄庣粏鍒楄〃</returns> + public List<TransferOutDetail> GetTransferOutDetailListByBillNo( + WarehouseQuery query) + { + var p_bill_no = query.billNo; + + // 鏍规嵁SQL鏌ヨ鏉′欢鑾峰彇寰呭鐞嗙殑鍑哄簱鏄庣粏 + // 鍏宠仈鏌ヨTransferOutDetail銆乀ransferOut鍜孧esItems涓夊紶琛� + // 绛涢�夋潯浠�:鏈畬鎴愭暟閲忓ぇ浜�0涓斿崟鎹凡瀹℃牳 + var result = Db.Queryable<TransferOutDetail, TransferOut, MesItems>( + (b, a, s) => new JoinQueryInfos( + JoinType.Left, b.Pid == a.Guid, + JoinType.Left, b.ItemId == s.Id)) + .Where((b, a, s) => + (b.ShNum ?? 0) - (b.YsNum ?? 0) > 0 // 鏈畬鎴愭暟閲忓ぇ浜�0 + && a.BillNo == p_bill_no // 鍖归厤鍗曟嵁鍙� + && a.Status == 1) // 鍗曟嵁宸插鏍� + .OrderBy((b, a, s) => s.ItemNo) + .Select((b, a, s) => new TransferOutDetail + { + ItemNo = s.ItemNo, + ItemModel = s.ItemModel, + ShNum = b.ShNum, // 鐢宠鏁伴噺 + YsNum = b.YsNum, // 宸叉壂鏁伴噺 + // 淇濈暀鍏朵粬蹇呰瀛楁... + Pid = b.Pid, + ItemId = b.ItemId, + Guid = b.Guid + }) + .ToList(); + + return result; + } + + /// <summary> + /// 鎵弿鏉$爜杩涜璋冩嫧鍑哄簱澶勭悊 + /// </summary> + /// <param name="query">鍖呭惈鍗曟嵁鍙枫�佺敤鎴峰悕鍜屾潯鐮佷俊鎭殑鏌ヨ鍙傛暟</param> + /// <returns>澶勭悊鍚庣殑琛ㄥ崟鍜屽緟澶勭悊鏄庣粏鍒楄〃</returns> + public (WarehouseQuery form, List<TransferOutDetail> items) + ScanMoveBarcode(WarehouseQuery query) + { + var p_bill_no = query.billNo; + var c_user = query.userName; + var p_item_barcode = query.barcode; + + var p_bill_type_id = 300; // 鍗曟嵁绫诲瀷ID + var p_transaction_no = 301; // 浜ゆ槗缂栧彿 + + // 楠岃瘉鍗曟嵁鍙� + if (string.IsNullOrEmpty(p_bill_no)) + { + throw new Exception("璇烽�夊彇鍗曟嵁鍙凤紒"); + } + + // 鏌ヨ鍑哄簱鍗曞苟楠岃瘉鐘舵�� + var transferOut = Db.Queryable<TransferOut>() + .Where(x => x.BillNo == p_bill_no && x.Status == 1) + .First(); + if (transferOut == null) + { + throw new Exception("鏈壘鍒拌皟鎷ㄧ敵璇峰崟鎴栬�呰皟鎷ㄧ敵璇峰崟娌″鏍�"); + } + + // 鏌ヨ鏉$爜搴撳瓨淇℃伅骞堕獙璇� + var stock = Db.Queryable<MesInvItemStocks>() + .Where(x => x.ItemBarcode == p_item_barcode + && x.Quantity > 0 + && !string.IsNullOrEmpty(x.DepotsCode)) + .First(); + if (stock == null) + { + throw new Exception($"搴撳瓨涓棤姝ゆ潯鐮侊紝璇锋牳瀵癸紒{p_item_barcode}"); + } + + // 楠岃瘉浠撳簱涓�鑷存�� + if (stock.DepotsCode != transferOut.InvCode) + { + throw new Exception( + $"鏉$爜搴撳瓨浠撳簱{stock.DepotsCode}鍜岀敵璇蜂粨搴撲笉涓�鑷磠transferOut.InvCode}"); + } + + // 鏌ヨ鐗╂枡淇℃伅 + var item = Db.Queryable<MesItems>() + .Where(x => x.Id == stock.ItemId) + .First(); + if (item == null) + { + throw new Exception("鏈壘鍒扮墿鏂�"); + } + + // 鏌ヨ璋冩嫧鏄庣粏骞堕獙璇� + var detail = Db.Queryable<TransferOutDetail>() + .Where(x => x.ItemId == stock.ItemId && x.Pid == transferOut.Guid) + .First(); + if (detail == null) + { + throw new Exception("鏈壘鍒版潯鐮佺墿鏂欑浉搴旂殑璋冩嫧鐢宠"); + } + + // 楠岃瘉鏁伴噺鏄惁瓒呭嚭鏈壂鏁伴噺 + if ((detail.ShNum ?? 0) - (detail.YsNum ?? 0) < stock.Quantity) + { + throw new Exception("鏉$爜鏁伴噺澶т簬鐢宠鏈壂鏁伴噺锛岃鎷嗗垎浜嗗啀鎵爜"); + } + + // 浣跨敤浜嬪姟澶勭悊鏁版嵁鏇存柊 + UseTransaction(db => + { + // 鏌ヨ鐜版湁绉诲簱璁板綍 + var existingMove = db.Queryable<MesInvItemMoves>() + .Where(x => x.TaskNo == p_bill_no + && x.TransactionNo == p_transaction_no + && (x.Status ?? 0) == 0) + .First(); + + var commit = 0; // 璁板綍鏇存柊鎿嶄綔娆℃暟 + var c_id = Guid.Empty; + + // 澶勭悊绉诲簱涓昏〃璁板綍 + if (existingMove != null) + { + // 鏇存柊鐜版湁璁板綍鐨勬渶鍚庝慨鏀逛俊鎭� + commit += db.Updateable<MesInvItemMoves>() + .SetColumns(s => s.LastupdateDate == DateTime.Now) + .SetColumns(s => s.LastupdateBy == c_user) + .Where(s => s.Guid == existingMove.Guid) + .ExecuteCommand(); + + c_id = existingMove.Guid; + } + else + { + // 鏌ヨ鐩稿叧浠撳簱淇℃伅 + var mesDepots = db.Queryable<MesDepots>() + .Where(s => s.DepotCode == transferOut.FromCode) + .First(); + + var invMesDepots = db.Queryable<MesDepots>() + .Where(s => s.DepotCode == transferOut.InvCode) + .First(); + + c_id = Guid.NewGuid(); + + // 鍒涘缓鏂扮殑绉诲簱璁板綍 + var newMove = new MesInvItemMoves + { + Guid = c_id, + BillNo = BillNo.GetBillNo("DBCKD"), + CreateBy = c_user, + CreateDate = DateTime.Now, + BillTypeId = p_bill_type_id, + TransactionNo = p_transaction_no, + InvDepotSectionsId = mesDepots.DepotId, + // InvDepotSectionsCode = transferOut.FromCode, + // FromDepotsCode = transferOut.InvCode, + FromDepotsId = invMesDepots.DepotId.ToString(), + TaskNo = p_bill_no + }; + commit += db.Insertable(newMove).IgnoreColumns(true) + .ExecuteCommand(); + } + + // 鍐欏叆鑰佹潯鐮佷氦鏄撴槑缁� + var business = new MesInvBusiness2 + { + Guid = Guid.NewGuid(), + Status = 1, + BillTypeId = p_bill_type_id, + TransactionCode = p_transaction_no.ToString(), + BusinessType = -1, + ItemBarcode = p_item_barcode, + ItemNo = item.ItemNo, + LotNo = stock.LotNo, + EpFlag = true, + Quantity = stock.Quantity, + FromInvDepotsCode = stock.DepotsCode, + FromInvDepotSectionsCode = stock.DepotSectionsCode, + ToInvDepotsCode = transferOut.FromCode, + ToInvDepotSectionsCode = stock.DepotSectionsCode, + CreateBy = c_user, + CreateDate = DateTime.Now, + LastupdateBy = c_user, + LastupdateDate = DateTime.Now, + Factory = stock.Factory, + Company = stock.Company, + TaskNo = stock.TaskNo, + BillNo = p_bill_no, + WorkNo = stock.WorkNo, + WorkLine = stock.WorkLine, + SuppNo = stock.SuppNo, + ItemId = stock.ItemId, + EbelnK3id = stock.EbelnK3id, + LineK3id = stock.LineK3id, + // RkDepot = transferOut.RkDepot, + // CkDepot = transferOut.CkDepot + }; + + commit += db.Insertable(business).IgnoreColumns(true) + .ExecuteCommand(); + + // 鍐欏叆鏂版潯鐮佷氦鏄撴槑缁� + var moveDetail = new MesInvItemMovesCDetails + { + Guid = Guid.NewGuid(), + ItemMoveGuid = c_id, + ItemBarcode = p_item_barcode, + CItemCode = stock.CItemCode, + ItemNo = item.ItemNo, + LotNo = stock.LotNo, + Quantity = stock.Quantity, + EpFlag = stock.EpFlag, + CreateBy = c_user, + CreateDate = DateTime.Now, + LastupdateBy = c_user, + LastupdateDate = DateTime.Now, + // CustomerNo = stock.CustomerNo, + TaskNo = stock.TaskNo, + FromDepotsCode = stock.DepotsCode, + FromDepotSectionsCode = stock.DepotSectionsCode, + Factory = stock.Factory, + Company = stock.Company, + InvDepotsCode = transferOut.FromCode, + // InvDepotSectionsCode = p_sectioncode, + IqcStatus = stock.IqcStatus, + Fcar = stock.Fcar, + IndepDate = stock.IndepDate, + VisableSubmit = stock.VisableSubmit, + VisableSubmitBy = stock.VisableSubmitBy, + VisableSubmitDate = stock.VisableSubmitDate, + BoardStyle = stock.BoardStyle, + WorkNo = stock.WorkNo, + WorkLine = stock.WorkLine, + SuppNo = stock.SuppNo, + ItemId = (int)stock.ItemId, + EbelnK3id = stock.EbelnK3id, + LineK3id = stock.LineK3id, + // RkDepot = transferOut.RkDepot, + // CkDepot = transferOut.CkDepot + }; + + commit += db.Insertable(moveDetail).IgnoreColumns(true) + .ExecuteCommand(); + + // 鏇存柊鎴栨彃鍏ュ嚭搴撴槑缁嗚褰� + var outItem = db.Queryable<MesInvItemOutItems>() + .Where(x => x.ItemOutId == c_id && x.ItemId == stock.ItemId) + .First(); + + if (outItem != null) + { + // 鏇存柊鐜版湁璁板綍鐨勬暟閲� + outItem.Quantity += stock.Quantity; + commit += db.Updateable<MesInvItemOutItems>() + .SetColumns(x => x.Quantity == outItem.Quantity) + .Where(x => x.Guid == outItem.Guid) + .ExecuteCommand(); + } + else + { + // 鎻掑叆鏂拌褰� + var newOutItem = new MesInvItemOutItems + { + Guid = Guid.NewGuid(), + ItemOutId = c_id, + ItemId = stock.ItemId, + CreateBy = c_user, + CreateDate = DateTime.Now, + TaskNo = stock.TaskNo, + WorkNo = stock.WorkNo, + WorkLine = stock.WorkLine, + EbelnK3id = (int)stock.EbelnK3id, + LineK3id = (int)stock.LineK3id, + Quantity = stock.Quantity, + // Unit = stock.ItemUnit + }; + + commit += db.Insertable(newOutItem).IgnoreColumns(true) + .ExecuteCommand(); + } + + // 鏇存柊璋冩嫧鐢宠宸叉壂鏁伴噺 + detail = db.Queryable<TransferOutDetail>() + .Where(x => x.Guid == detail.Guid) + .First(); + + if (detail != null) + { + detail.YsNum = (detail.YsNum ?? 0) + stock.Quantity as int?; + commit += db.Updateable<TransferOutDetail>() + .SetColumns(x => x.YsNum == detail.YsNum) + .Where(x => x.Guid == detail.Guid) + .ExecuteCommand(); + } + + // 妫�鏌ユ槸鍚︽墍鏈夋槑缁嗛兘宸插畬鎴� + var totals = db.Queryable<TransferOutDetail, TransferOut>((b, a) => + new JoinQueryInfos(JoinType.Left, b.Pid == a.Guid)) + .Where((b, a) => a.BillNo == p_bill_no) + .Select((b, a) => new { + ShNum = SqlFunc.AggregateSum(b.ShNum), // 鐢宠鎬绘暟閲� + YsNum = SqlFunc.AggregateSum(b.YsNum) // 宸叉壂鎬绘暟閲� + }) + .First(); + + // 濡傛灉鐢宠鏁伴噺绛変簬宸叉壂鏁伴噺锛屾洿鏂板崟鎹畬鎴愮姸鎬� + if (totals.ShNum == totals.YsNum) + { + commit += db.Updateable<TransferOut>() + .SetColumns(x => x.IsWc == 1) + .Where(x => x.BillNo == p_bill_no) + .ExecuteCommand(); + } + + // 鏇存柊杩斿洖鍙傛暟 + query.itemNo = item.ItemNo; + query.Num = stock.Quantity; + + // 楠岃瘉鏇存柊鎿嶄綔鏄惁鍏ㄩ儴鎴愬姛 + if (commit < 4) + { + throw new Exception("鏇存柊澶辫触"); + } + + return commit; + }); + + // 杩斿洖鏇存柊鍚庣殑琛ㄥ崟鍜屽緟澶勭悊鏄庣粏 + return (query, GetTransferOutDetailListByBillNo(query)); + } +} \ No newline at end of file -- Gitblit v1.9.3