From b3bd860758d33a47964087f3ee7333b646fe443d Mon Sep 17 00:00:00 2001 From: 南骏 池 <chiffly@163.com> Date: 星期五, 28 二月 2025 13:13:13 +0800 Subject: [PATCH] 1.销售出库功能开发,拆分未实现。 --- entity/SalesDeliverDetail.cs | 52 + service/Warehouse/TransferOutManager.cs | 12 entity/SalesOrder.cs | 137 +++ service/Warehouse/MesXsckManager.cs | 1489 +++++++++++++++++++++++++++++++++++ Controllers/Warehouse/MesXsckController.cs | 461 ++++++++++ entity/SalesOrderDetail.cs | 251 +++++ entity/MesDbModel.cs | 2 entity/SalesDeliver.cs | 106 ++ 8 files changed, 2,503 insertions(+), 7 deletions(-) diff --git a/Controllers/Warehouse/MesXsckController.cs b/Controllers/Warehouse/MesXsckController.cs new file mode 100644 index 0000000..4368ba0 --- /dev/null +++ b/Controllers/Warehouse/MesXsckController.cs @@ -0,0 +1,461 @@ +锘縰sing System.Dynamic; +using Microsoft.AspNetCore.Mvc; +using NewPdaSqlServer.Dto.service; +using NewPdaSqlServer.entity; +using NewPdaSqlServer.service.Warehouse; +using NewPdaSqlServer.util; + +namespace NewPdaSqlServer.Controllers.Warehouse; + +/// <summary> +/// 鐢熶骇琛ユ枡鐩稿叧鎺ュ彛 +/// </summary> +[Route("api/[controller]")] +[ApiController] +public class MesXsckController : ControllerBase +{ + private readonly MesXsckManager _manager = new(); + + /***杩涘叆妯$増绠$悊鍙互淇敼妯$増***/ + + /// <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); + } + } + + /// <summary> + /// 鏍规嵁涓婚敭鍒犻櫎 + /// </summary> + /// <returns></returns> + [HttpPost("DeleteByIds")] + public ResponseResult DeleteByIds([FromBody] object[] ids) + { + try + { + dynamic resultInfos = new ExpandoObject(); + resultInfos.tbBillList = _manager.DeleteByIds(ids); + return new ResponseResult + { + status = 0, + message = "OK", + data = resultInfos + }; + } + catch (Exception ex) + { + return ResponseResult.ResponseError(ex); + } + } + + /// <summary> + /// 娣诲姞 + /// </summary> + /// <returns></returns> + [HttpPost("Insert")] + public ResponseResult Add([FromBody] MesItemBl data) + { + try + { + dynamic resultInfos = new ExpandoObject(); + resultInfos.tbBillList = _manager.Insert(data); + return new ResponseResult + { + status = 0, + message = "OK", + data = resultInfos + }; + } + catch (Exception ex) + { + return ResponseResult.ResponseError(ex); + } + } + + /// <summary> + /// 娣诲姞杩斿洖鑷 + /// </summary> + /// <returns></returns> + [HttpPost("InsertReturnIdentity")] + public ResponseResult InsertReturnIdentity([FromBody] MesItemBl data) + { + try + { + dynamic resultInfos = new ExpandoObject(); + resultInfos.tbBillList = _manager.InsertReturnIdentity(data); + return new ResponseResult + { + status = 0, + message = "OK", + data = resultInfos + }; + } + catch (Exception ex) + { + return ResponseResult.ResponseError(ex); + } + } + + /// <summary> + /// 淇敼 + /// </summary> + /// <returns></returns> + [HttpPost("Update")] + public ResponseResult Update([FromBody] MesItemBl data) + { + try + { + dynamic resultInfos = new ExpandoObject(); + resultInfos.tbBillList = _manager.Update(data); + 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/MesItemBl/SplitBarcode + /// { + /// "billNo": "WO202401010001", // 宸ュ崟鍙�(蹇呭~) + /// "barcode": "BC001", // 鏉$爜鍙�(蹇呭~) + /// "userName": "admin", // 鐢ㄦ埛鍚�(蹇呭~) + /// "blNo": "BL202401010001", // 琛ユ枡鍗曞彿(蹇呭~) + /// "Num": 10 // 鎷嗗垎鏁伴噺(蹇呭~,蹇呴』澶т簬0) + /// } + /// 涓氬姟澶勭悊锛� + /// - 楠岃瘉琛ユ枡鍗曠姸鎬� + /// - 楠岃瘉鏉$爜搴撳瓨淇℃伅 + /// - 楠岃瘉鎷嗗垎鏁伴噺鏄惁鍚堢悊 + /// - 鎵ц鏉$爜鎷嗗垎浜嬪姟澶勭悊 + /// - 鏇存柊宸ュ崟鍜岃ˉ鏂欏崟鐩稿叧鏁伴噺 + /// 杩斿洖鏁版嵁鍖呭惈锛� + /// - success: 鎷嗗垎鏄惁鎴愬姛 + /// - pendingList: 寰呭鐞嗘槑缁嗗垪琛紝鍖呭惈锛� + /// * Bld012: 鐗╂枡ID + /// * Bld002: 鐗╂枡缂栧彿 + /// * Bld003: 鐗╂枡鍚嶇О + /// * Bld004: 鐗╂枡瑙勬牸 + /// * Bld007: 璁″垝鏁伴噺 + /// * Bld008: 宸茶ˉ鏁伴噺 + /// </remarks> + /// <response code="200">鎷嗗垎鎴愬姛</response> + /// <response code="400">鎷嗗垎澶辫触锛岃繑鍥炲叿浣撻敊璇俊鎭�</response> + [HttpPost("SplitBarcode")] + public ResponseResult SplitBarcode([FromBody] WarehouseQuery query) + { + try + { + dynamic resultInfos = new ExpandoObject(); + var (success, pendingList) = _manager.SplitBarcode(query); + resultInfos.success = success; + resultInfos.pendingList = pendingList; + return new ResponseResult + { + status = 0, + message = "OK", + data = resultInfos + }; + } + catch (Exception ex) + { + return ResponseResult.ResponseError(ex); + } + } + + #region 鐢熶骇琛ユ枡 + + /// <summary> + /// 鑾峰彇鐢熶骇琛ユ枡鍗曞彿鍒楄〃 + /// </summary> + /// <returns>琛ユ枡鍗曞彿鍒楄〃</returns> + /// <response code="200">鎴愬姛鑾峰彇琛ユ枡鍗曞彿鍒楄〃</response> + /// <response code="400">鑾峰彇澶辫触</response> + [HttpPost("GetFHTZBillNo")] + public ResponseResult GetFHTZBillNo(WarehouseQuery query) + { + try + { + dynamic resultInfos = new ExpandoObject(); + resultInfos.tbBillList = _manager.GetFHTZBillNo(query); + 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/MesItemBl/GetMesItemBlDetailByBillNo + /// { + /// "billNo": "BL202401010001" + /// } + /// </remarks> + /// <response code="200">鎴愬姛鑾峰彇琛ユ枡鍗曟槑缁�</response> + /// <response code="400">鑾峰彇澶辫触锛屽彲鑳芥槸鍗曟嵁鍙蜂笉瀛樺湪鎴栧凡瀹屾垚</response> + [HttpPost("GetMesItemFHTZetailByBillNo")] + public ResponseResult GetMesItemFHTZetailByBillNo( + [FromBody] WarehouseQuery query) + { + try + { + dynamic resultInfos = new ExpandoObject(); + resultInfos.tbBillList = _manager.GetMesItemFHTZetailByBillNo(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/MesItemBl/SctlScanBarcode + /// { + /// "billNo": "WO202401010001", + /// "barcode": "1234567890", + /// "userName": "admin", + /// "blNo": "BL202401010001" + /// } + /// </remarks> + /// <response code="200">鎵弿鎴愬姛</response> + /// <response code="400">鎵弿澶辫触锛岃繑鍥炲叿浣撻敊璇俊鎭�</response> + [HttpPost("XSCKScanBarcode")] + public ResponseResult XSCKScanBarcode([FromBody] WarehouseQuery query) + { + try + { + dynamic resultInfos = new ExpandoObject(); + resultInfos.tbBillList = _manager.XSCKScanBarcode(query); + if (resultInfos.tbBillList.result == "2") + { + return new ResponseResult + { + status = Convert.ToInt32(resultInfos.tbBillList.result), + message = resultInfos.tbBillList.strMsg, + data = resultInfos + }; + } + return new ResponseResult + { + status = 0, + message = "OK", + data = resultInfos + }; + } + catch (Exception ex) + { + return ResponseResult.ResponseError(ex); + } + } + + #endregion + + #region 鐢熶骇瓒呴 + + /// <summary> + /// 鑾峰彇鐢熶骇瓒呴鍗曞彿鍒楄〃 + /// </summary> + /// <returns>瓒呴鍗曞彿鍒楄〃</returns> + /// <response code="200">鎴愬姛鑾峰彇瓒呴鍗曞彿鍒楄〃</response> + /// <response code="400">鑾峰彇澶辫触</response> + [HttpPost("GetSccList")] + public ResponseResult GetSccList(WarehouseQuery query) + { + try + { + dynamic resultInfos = new ExpandoObject(); + resultInfos.tbBillList = _manager.GetSccList(query); + 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/MesItemBl/GetMesItemBlDetailBySccBillNo + /// { + /// "billNo": "SC202401010001" + /// } + /// </remarks> + /// <response code="200">鎴愬姛鑾峰彇瓒呴鍗曟槑缁�</response> + /// <response code="400">鑾峰彇澶辫触锛岃繑鍥炲叿浣撻敊璇俊鎭�</response> + [HttpPost("GetMesItemBlDetailBySccBillNo")] + public ResponseResult GetMesItemBlDetailBySccBillNo( + [FromBody] WarehouseQuery query) + { + try + { + dynamic resultInfos = new ExpandoObject(); + resultInfos.tbBillList = + _manager.GetMesItemBlDetailBySccBillNo(query); + return new ResponseResult + { + status = 0, + message = "OK", + data = resultInfos + }; + } + catch (Exception ex) + { + return ResponseResult.ResponseError(ex); + } + } + + /// <summary> + /// 鐢熶骇瓒呴鎵弿鏉$爜1 + /// </summary> + /// <param name="query">鏌ヨ鍙傛暟</param> + /// <returns>鎵弿缁撴灉鍜屽緟澶勭悊鍒楄〃</returns> + /// <remarks> + /// 璇锋眰绀轰緥: + /// POST /api/MesItemBl/ScanBarcodeForOverPicking + /// { + /// "billNo": "WO202401010001", + /// "barcode": "1234567890", + /// "userName": "admin", + /// "blNo": "SC202401010001" + /// } + /// </remarks> + /// <response code="200">鎵弿鎴愬姛</response> + /// <response code="400">鎵弿澶辫触锛岃繑鍥炲叿浣撻敊璇俊鎭�</response> + [HttpPost("ScanBarcodeForOverPicking")] + public ResponseResult ScanBarcodeForOverPicking( + [FromBody] WarehouseQuery query) + { + try + { + dynamic resultInfos = new ExpandoObject(); + var (success, pendingList) = + _manager.ScanBarcodeForOverPicking(query); + resultInfos.success = success; + resultInfos.pendingList = pendingList; + return new ResponseResult + { + status = 0, + message = "OK", + data = resultInfos + }; + } + catch (Exception ex) + { + return ResponseResult.ResponseError(ex); + } + } + + + [HttpPost("PrintBarcodeForOverPicking")] + public ResponseResult PrintForOverPicking(WarehouseQuery query) + { + try + { + dynamic resultInfos = new ExpandoObject(); + var (success, pendingList) = + _manager.PrintBarcodeForOverPicking(query); + resultInfos.success = success; + resultInfos.pendingList = pendingList; + 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/MesDbModel.cs b/entity/MesDbModel.cs index 8f510ae..79ced70 100644 --- a/entity/MesDbModel.cs +++ b/entity/MesDbModel.cs @@ -3,7 +3,7 @@ namespace MES.Service.Modes; //璋冩嫧鍑哄叆搴撳崟閫氱敤绫� -public class TransferOutDetailModel +public class ItemDetailModel { public string ItemNo { get; set; } // 鐗╁搧缂栧彿 public string ItemName { get; set; } // 鐗╁搧鍚嶇О diff --git a/entity/SalesDeliver.cs b/entity/SalesDeliver.cs new file mode 100644 index 0000000..b32c46b --- /dev/null +++ b/entity/SalesDeliver.cs @@ -0,0 +1,106 @@ +锘縰sing SqlSugar; + +namespace MES.Service.Modes; + +/// <summary> +/// 鍙戣揣閫氱煡鐢宠鍗� +/// </summary> +[SugarTable("SALES_DELIVER")] +public class SalesDeliver +{ + /// <summary> + /// 涓婚敭 + /// </summary> + [SugarColumn(ColumnName = "id", IsPrimaryKey = true)] + public Guid? Id { get; set; } + + /// <summary> + /// 鍗曟嵁缂栧彿 + /// </summary> + [SugarColumn(ColumnName = "bill_no")] + public string? BillNo { get; set; } + + /// <summary> + /// 鍗曟嵁绫诲瀷 + /// </summary> + [SugarColumn(ColumnName = "FBillTypeID")] + public string? FBillTypeId { get; set; } + + /// <summary> + /// 閿�鍞粍缁� + /// </summary> + [SugarColumn(ColumnName = "FSaleOrgId")] + public string? FSaleOrgId { get; set; } + + /// <summary> + /// 鍙戣揣缁勭粐 + /// </summary> + [SugarColumn(ColumnName = "FStockOrgId")] + public string? FStockOrgId { get; set; } + + /// <summary> + /// 鍒涘缓浜� + /// </summary> + [SugarColumn(ColumnName = "FCreatorId")] + public string? FCreatorId { get; set; } + + /// <summary> + /// 瀹℃牳浜� + /// </summary> + [SugarColumn(ColumnName = "FApproverID")] + public string? FApproverId { get; set; } + + /// <summary> + /// 鍒涘缓鏃ユ湡 + /// </summary> + [SugarColumn(ColumnName = "FCreateDate")] + public DateTime? FCreateDate { get; set; } + + /// <summary> + /// 瀹℃牳鏃ユ湡 + /// </summary> + [SugarColumn(ColumnName = "FApproveDate")] + public DateTime? FApproveDate { get; set; } + + /// <summary> + /// 閿�鍞憳 + /// </summary> + [SugarColumn(ColumnName = "FSalesManID")] + public string? FSalesManId { get; set; } + + /// <summary> + /// 瀹㈡埛 + /// </summary> + [SugarColumn(ColumnName = "FCustomerID")] + public string? FCustomerId { get; set; } + + /// <summary> + /// 鏃ユ湡 + /// </summary> + [SugarColumn(ColumnName = "FDate")] + public DateTime? FDate { get; set; } + + /// <summary> + /// 澶囨敞 + /// </summary> + [SugarColumn(ColumnName = "FNote")] + public string? FNote { get; set; } + + /// <summary> + /// 瀹℃牳鐘舵�� + /// </summary> + [SugarColumn(ColumnName = "FApproverStaus")] + public bool? FApproverStatus { get; set; } + + /// <summary> + /// 鏄惁瀹岀粨 + /// </summary> + [SugarColumn(ColumnName = "FINISHSTATUS")] + public bool? FinishStatus { get; set; } + + /// <summary> + /// 閿�鍞鍗曞彿 + /// </summary> + [SugarColumn(ColumnName = "SalesId")] + public Guid? SalesId { get; set; } +} \ No newline at end of file diff --git a/entity/SalesDeliverDetail.cs b/entity/SalesDeliverDetail.cs new file mode 100644 index 0000000..1278cb5 --- /dev/null +++ b/entity/SalesDeliverDetail.cs @@ -0,0 +1,52 @@ +锘縰sing SqlSugar; + +namespace MES.Service.Modes; + +/// <summary> +/// 鍙戣揣閫氱煡鍗曟槑缁� +/// </summary> +[SugarTable("SALES_DELIVER_DETAIL")] +public class SalesDeliverDetail +{ + /// <summary> + /// 涓婚敭 + /// </summary> + [SugarColumn(ColumnName = "id", IsPrimaryKey = true)] + public Guid? Id { get; set; } + + /// <summary> + /// 涓昏〃GUID + /// </summary> + [SugarColumn(ColumnName = "pid")] + public Guid? Pid { get; set; } + + /// <summary> + /// 閿�鍞鍗曟槑缁咷UID + /// </summary> + [SugarColumn(ColumnName = "SalesDetailId")] + public Guid? SalesDetailId { get; set; } + + /// <summary> + /// 搴斿彂鏁伴噺 + /// </summary> + [SugarColumn(ColumnName = "FMustQty")] + public decimal? FMustQty { get; set; } + + /// <summary> + /// 瀹炲彂鏁伴噺 + /// </summary> + [SugarColumn(ColumnName = "FRealQty")] + public decimal? FRealQty { get; set; } + + /// <summary> + /// 澶囨敞 + /// </summary> + [SugarColumn(ColumnName = "FEntrynote")] + public string? FEntryNote { get; set; } + + /// <summary> + /// 鎺掑簭 + /// </summary> + [SugarColumn(ColumnName = "FSEQ")] + public int? FSeq { get; set; } +} \ No newline at end of file diff --git a/entity/SalesOrder.cs b/entity/SalesOrder.cs new file mode 100644 index 0000000..2ce2dd9 --- /dev/null +++ b/entity/SalesOrder.cs @@ -0,0 +1,137 @@ +锘縰sing SqlSugar; + +namespace MES.Service.Modes; + +/// <summary> +/// 閿�鍞鍗曡〃 +/// </summary> +[SugarTable("SALES_ORDER")] +public class SalesOrder +{ + /// <summary> + /// SEQ_sales搴忓垪 + /// </summary> + [SugarColumn(ColumnName = "ID", IsPrimaryKey = true)] + public Guid? Id { get; set; } + + [SugarColumn(ColumnName = "ERP_ID")] + public decimal? ErpID { get; set; } // ERPID + + [SugarColumn(ColumnName = "BILL_NO")] + public string? BillNo { get; set; } // 鍗曟嵁缂栧彿 + + [SugarColumn(ColumnName = "BILL_TYPE_ID")] + public string? BillTypeId { get; set; } // 鍗曟嵁绫诲瀷 + + [SugarColumn(ColumnName = "DOCUMENT_STATUS")] + public string? DocumentStatus { get; set; } // 鍗曟嵁鐘舵�� + + [SugarColumn(ColumnName = "F_DATE")] + public DateTime? FDate { get; set; } // 鏃ユ湡 + + [SugarColumn(ColumnName = "BUSINESS_TYPE")] + public string? BusinessType { get; set; } // 涓氬姟绫诲瀷 + + [SugarColumn(ColumnName = "HEAD_DELIVERY_WAY")] + public string? HeadDeliveryWay { get; set; } // 浜よ揣鏂瑰紡 + + [SugarColumn(ColumnName = "HEAD_LOC_ID")] + public string? HeadLocId { get; set; } // 浜よ揣鍦扮偣 + + [SugarColumn(ColumnName = "SALE_ORG_ID")] + public string? SaleOrgId { get; set; } // 閿�鍞粍缁� + + //[SugarColumn(ColumnName = "UNW_TEXT_KHDD")] + //public string? UnWTextKhdd { get; set; } // 瀹㈡埛璁㈠崟 + + //[SugarColumn(ColumnName = "UNW_DATE_KHXQ")] + //public DateTime? UnWDateKhxq { get; set; } // 瀹㈡埛闇�姹備氦鏈� + + //[SugarColumn(ColumnName = "UNW_BASE_PROPERTY_KHDJ")] + //public string? UnWBasePropertyKhdj { get; set; } // 瀹㈡埛绛夌骇 + + [SugarColumn(ColumnName = "CUST_ID")] + public string? CustId { get; set; } // 瀹㈡埛 + + //[SugarColumn(ColumnName = "UNW_LARGE_TEXT_TBKHBZ")] + //public string? UnWLargetextTbkhbz { get; set; } // 娣樺疂瀹㈡埛澶囨敞 + + [SugarColumn(ColumnName = "CLOSE_STATUS")] + public string? CloseStatus { get; set; } // 鍏抽棴鐘舵�� + + [SugarColumn(ColumnName = "SALE_DEPT_ID")] + public string? SaleDeptId { get; set; } // 閿�鍞儴闂� + + [SugarColumn(ColumnName = "SALER_ID")] + public string? SalerId { get; set; } // 閿�鍞憳 + + [SugarColumn(ColumnName = "NOTE")] + public string? Note { get; set; } // 澶囨敞 + + //[SugarColumn(ColumnName = "UNW_REMARKS_KHJHDD")] + //public string? UnWRemarksKhjHdd { get; set; } // 瀹㈡埛浜よ揣鍦扮偣 + [SugarColumn(ColumnName = "RECEIVE_ID")] + public string? ReceiveId { get; set; } // 鏀惰揣鏂� + + [SugarColumn(ColumnName = "RECEIVE_CONTACT")] + public string? ReceiveContact { get; set; } // 鏀惰揣鏂硅仈绯讳汉 + + [SugarColumn(ColumnName = "SETTLE_ID")] + public string? SettleId { get; set; } // 缁撶畻鏂� + + [SugarColumn(ColumnName = "APPROVER_ID")] + public string? ApproverId { get; set; } // 瀹℃牳浜� + + [SugarColumn(ColumnName = "LINK_MAN")] + public string? LinkMan { get; set; } // 鏀惰揣浜哄鍚� + + [SugarColumn(ColumnName = "CHARGE_ID")] + public string? ChargeId { get; set; } // 浠樻鏂� + + [SugarColumn(ColumnName = "LINK_PHONE")] + public string? LinkPhone { get; set; } // 鑱旂郴鐢佃瘽 + + [SugarColumn(ColumnName = "CREATOR_ID")] + public string? CreatorId { get; set; } // 鍒涘缓浜� + + [SugarColumn(ColumnName = "CREATE_DATE")] + public DateTime? CreateDate { get; set; } // 鍒涘缓鏃ユ湡 + + [SugarColumn(ColumnName = "MODIFIER_ID")] + public string? ModifierId { get; set; } // 鏈�鍚庝慨鏀逛汉 + + [SugarColumn(ColumnName = "MODIFY_DATE")] + public DateTime? ModifyDate { get; set; } // 鏈�鍚庝慨鏀规棩鏈� + + [SugarColumn(ColumnName = "APPROVE_DATE")] + public DateTime? ApproveDate { get; set; } // 瀹℃牳鏃ユ湡 + + [SugarColumn(ColumnName = "CLOSER_ID")] + public string? CloserId { get; set; } // 鍏抽棴浜� + + [SugarColumn(ColumnName = "CLOSE_DATE")] + public DateTime? CloseDate { get; set; } // 鍏抽棴鏃ユ湡 + + [SugarColumn(ColumnName = "CHANGE_DATE")] + public DateTime? ChangeDate { get; set; } // 鍙樻洿鏃ユ湡 + + [SugarColumn(ColumnName = "CANCEL_STATUS")] + public string? CancelStatus { get; set; } // 浣滃簾鐘舵�� + + [SugarColumn(ColumnName = "CANCELLER_ID")] + public string? CancellerId { get; set; } // 浣滃簾浜� + + [SugarColumn(ColumnName = "VERSION_NO")] + public double? VersionNo { get; set; } // 鐗堟湰鍙� + + [SugarColumn(ColumnName = "CHANGE_REASON")] + public string? ChangeReason { get; set; } // 鍙樻洿鍘熷洜 + + [SugarColumn(ColumnName = "CHANGER_ID")] + public string? ChangerId { get; set; } // 鍙樻洿浜� + + [SugarColumn(ColumnName = "ENTRY_NOTE")] + public string? EntryNote { get; set; } // 澶囨敞 + + +} \ No newline at end of file diff --git a/entity/SalesOrderDetail.cs b/entity/SalesOrderDetail.cs new file mode 100644 index 0000000..0cce5a2 --- /dev/null +++ b/entity/SalesOrderDetail.cs @@ -0,0 +1,251 @@ +锘縰sing SqlSugar; + +namespace MES.Service.Modes; + +/// <summary> +/// 閿�鍞鍗曟槑缁嗚〃 +/// </summary> +[SugarTable("SALES_ORDER_DETAIL")] +public class SalesOrderDetail +{ + /// <summary> + /// SEQ_sales搴忓垪 + /// </summary> + [SugarColumn(ColumnName = "ID", IsPrimaryKey = true)] + public Guid Id { get; set; } + + /// <summary> + /// SEQ_sales搴忓垪 + /// </summary> + [SugarColumn(ColumnName = "pid")] + public Guid? Pid { get; set; } + + /// <summary> + /// ERPID + /// </summary> + [SugarColumn(ColumnName = "ERP_ID")] + public decimal? ErpID { get; set; } + + /// <summary> + /// ERP澶碔D + /// </summary> + [SugarColumn(ColumnName = "E_HID")] + public decimal? EHID { get; set; } + + /// <summary> + /// 鐗╂枡缂栫爜 + /// </summary> + [SugarColumn(ColumnName = "MATERIAL_ID")] + public string? MaterialId { get; set; } + + /// <summary> + /// 瀹㈡埛鐗╂枡缂栫爜 + /// </summary> + [SugarColumn(ColumnName = "MAP_ID")] + public string? MapId { get; set; } + + /// <summary> + /// 瀹㈡埛鐗╂枡鍚嶇О + /// </summary> + [SugarColumn(ColumnName = "MAP_NAME")] + public string? MapName { get; set; } + + /// <summary> + /// 瀹㈡埛鐗╂枡瑙勬牸 + /// </summary> + [SugarColumn(ColumnName = "MAP_SPEC")] + public string? MapSpec { get; set; } + + /// <summary> + /// 搴忓彿 + /// </summary> + [SugarColumn(ColumnName = "Seq")] + public int? Seq { get; set; } + + /// <summary> + /// 閿�鍞崟浣� + /// </summary> + [SugarColumn(ColumnName = "UNIT_ID")] + public string? UnitId { get; set; } + + /// <summary> + /// 閿�鍞暟閲� + /// </summary> + [SugarColumn(ColumnName = "QTY")] + public decimal? Qty { get; set; } + + /// <summary> + /// 璁′环鍗曚綅 + /// </summary> + [SugarColumn(ColumnName = "PRICE_UNIT_ID")] + public string? PriceUnitId { get; set; } + + /// <summary> + /// 璁′环鏁伴噺 + /// </summary> + [SugarColumn(ColumnName = "PRICE_UNIT_QTY")] + public decimal? PriceUnitQty { get; set; } + + /// <summary> + /// 瑕佽揣鏃ユ湡 + /// </summary> + [SugarColumn(ColumnName = "DELIVERY_DATE")] + public DateTime? DeliveryDate { get; set; } + + /// <summary> + /// 鏄惁璧犲搧 + /// </summary> + [SugarColumn(ColumnName = "IS_FREE")] + public string? IsFree { get; set; } + + ///// <summary> + ///// 閿�鍞鍗曞彿 + ///// </summary> + //[SugarColumn(ColumnName = "UNW_TEXT_XSDDH")] + //public string? SalesOrderNo { get; set; } + + /// <summary> + /// 渚涘簲缁勭粐 + /// </summary> + [SugarColumn(ColumnName = "SUPPLY_ORG_ID")] + public string? SupplyOrgId { get; set; } + + /// <summary> + /// 搴撳瓨缁勭粐 + /// </summary> + [SugarColumn(ColumnName = "STOCK_ORG_ID")] + public string? StockOrgId { get; set; } + + /// <summary> + /// 缁撶畻缁勭粐 + /// </summary> + [SugarColumn(ColumnName = "SETTLE_ORG_IDS")] + public string? SettleOrgIds { get; set; } + + + ///// <summary> + ///// 璺熷崟鍛� + ///// </summary> + //[SugarColumn(ColumnName = "UNW_BASE_GDY")] + //public string? SalesFollowUp { get; set; } + + /// <summary> + /// 璐т富绫诲瀷 + /// </summary> + [SugarColumn(ColumnName = "OWNER_TYPE_ID")] + public string? OwnerTypeId { get; set; } + + /// <summary> + /// 璐т富 + /// </summary> + [SugarColumn(ColumnName = "OWNER_ID")] + public string? OwnerId { get; set; } + + /// <summary> + /// 澶囨敞 + /// </summary> + [SugarColumn(ColumnName = "ENTRY_NOTE")] + public string? EntryNote { get; set; } + + /// <summary> + /// 璁″垝璺熻釜鍙� + /// </summary> + [SugarColumn(ColumnName = "MTO_NO")] + public string? MtoNo { get; set; } + + /// <summary> + /// 鎵瑰彿 + /// </summary> + [SugarColumn(ColumnName = "LOT")] + public string? Lot { get; set; } + + /// <summary> + /// 鍙戣揣涓婇檺 + /// </summary> + [SugarColumn(ColumnName = "DELIVERY_MAX_QTY")] + public decimal? DeliveryMaxQty { get; set; } + + /// <summary> + /// 鍙戣揣涓嬮檺 + /// </summary> + [SugarColumn(ColumnName = "DELIVERY_MIN_QTY")] + public decimal? DeliveryMinQty { get; set; } + + /// <summary> + /// 瓒呭彂鎺у埗鍗曚綅 + /// </summary> + [SugarColumn(ColumnName = "OUT_LMT_UNIT_ID")] + public string? OutLmtUnitId { get; set; } + + /// <summary> + /// 涓氬姟鍏抽棴 + /// </summary> + [SugarColumn(ColumnName = "MRP_CLOSE_STATUS")] + public string? MrpCloseStatus { get; set; } + + /// <summary> + /// 涓氬姟缁堟 + /// </summary> + [SugarColumn(ColumnName = "MRP_TERMINATE_STATUS")] + public string? MrpTerminateStatus { get; set; } + + /// <summary> + /// 缁堟鏃ユ湡 + /// </summary> + [SugarColumn(ColumnName = "TERMINATE_DATE")] + public DateTime? TerminateDate { get; set; } + + /// <summary> + /// 缁堟浜� + /// </summary> + [SugarColumn(ColumnName = "TERMINATER_ID")] + public string? TerminaterId { get; set; } + + /// <summary> + /// 婧愬崟绫诲瀷 + /// </summary> + [SugarColumn(ColumnName = "SRC_TYPE")] + public string? SrcType { get; set; } + + /// <summary> + /// 婧愬崟鍗曞彿 + /// </summary> + [SugarColumn(ColumnName = "SRC_BILL_NO")] + public string? SrcBillNo { get; set; } + + /// <summary> + /// 绱鍙戣揣閫氱煡鏁伴噺 + /// </summary> + [SugarColumn(ColumnName = "DELI_QTY")] + public decimal? DeliQty { get; set; } + + /// <summary> + /// 绱鍑哄簱鏁伴噺 + /// </summary> + [SugarColumn(ColumnName = "STOCK_OUT_QTY")] + public decimal? StockOutQty { get; set; } + + /// <summary> + /// 绱閫�璐ч�氱煡鏁伴噺锛堥攢鍞熀鏈級 + [SugarColumn(ColumnName = "BASE_RET_NOTICE_QTY")] + public decimal? BaseRetNoticeQty { get; set; } /// </summary> + + /// <summary> + /// 绱閫�璐ф暟閲忥紙閿�鍞熀鏈級 + /// </summary> + [SugarColumn(ColumnName = "BASE_RETURN_QTY")] + public decimal? BaseReturnQty { get; set; } + + /// <summary> + /// 鍓╀綑鏈嚭鏁伴噺锛堥攢鍞熀鏈級 + /// </summary> + [SugarColumn(ColumnName = "BASE_REMAIN_OUT_QTY")] + public decimal? BaseRemainOutQty { get; set; } + + /// <summary> + /// 绱搴旀敹鏁伴噺锛堥攢鍞熀鏈級 + /// </summary> + [SugarColumn(ColumnName = "BASEARQTY")] + public decimal? BASEARQTY { get; set; } + +} \ No newline at end of file diff --git a/service/Warehouse/MesXsckManager.cs b/service/Warehouse/MesXsckManager.cs new file mode 100644 index 0000000..e097e57 --- /dev/null +++ b/service/Warehouse/MesXsckManager.cs @@ -0,0 +1,1489 @@ +锘縰sing Masuit.Tools; +using MES.Service.Modes; +using NewPdaSqlServer.DB; +using NewPdaSqlServer.Dto.service; +using NewPdaSqlServer.entity; +using NewPdaSqlServer.util; +using SqlSugar; +using SqlSugar.Extensions; +using System.Data; +using System.Data.SqlClient; + +namespace NewPdaSqlServer.service.Warehouse; + +public class MesXsckManager : Repository<MesItemBl> +{ + #region 鐢熶骇琛ユ枡 + + /// <summary> + /// 鑾峰彇鐢熶骇鍙戣揣閫氱煡鍗曞彿鍒楄〃 + /// </summary> + /// <returns>鍙戣揣閫氱煡鍗曞彿鍒楄〃</returns> + public List<string> GetFHTZBillNo(WarehouseQuery query) + { + var list = Db.Queryable<SalesDeliver>() + .Where(s => (s.FApproverStatus ?? false) == true) + .Select(s => s.BillNo) + .ToList(); + return list; + } + + /// <summary> + /// 鏍规嵁鍙戣揣閫氱煡鍗曡幏鍙栧搴斾唬鍙戣揣鏄庣粏 prc_rf_pda_scan_zout_showbl + /// </summary> + /// <returns>鍙戣揣閫氱煡鍗曟槑缁嗗垪琛�</returns> + public List<ItemDetailModel> GetMesItemFHTZetailByBillNo( + WarehouseQuery query) + { + if (string.IsNullOrEmpty(query.billNo)) + throw new Exception("璇烽�夊崟鎹彿锛�"); + + // 妫�鏌ュ彂璐ч�氱煡鍗曟槸鍚﹀瓨鍦ㄤ笖瀹℃牳 + var mesItem = Db.Queryable<SalesDeliver>() + .Where(a => a.BillNo == query.billNo && a.FApproverStatus == true) + .First(); + + if (mesItem == null) + throw new Exception("鍗曟嵁鍙蜂笉瀛樺湪鎴栨湭瀹℃牳锛�"); + + if (mesItem.FinishStatus == true) + throw new Exception("鍗曟嵁鍙峰凡瀹岀粨锛�"); + + // 鑾峰彇鏈畬鎴愮殑鍙戣揣閫氱煡鍗曟槑缁� + var blDetails = Db.Queryable<SalesDeliver, SalesDeliverDetail, SalesOrderDetail,MesItems>((a, b, c, d) => + new JoinQueryInfos(JoinType.Left, a.Id == b.Pid, + JoinType.Left, b.SalesDetailId == c.Id, + JoinType.Left, c.MaterialId == d.ItemId.ToString())) + .Where((a, b) => a.BillNo == query.billNo + && (b.FMustQty ?? 0) - (b.FRealQty ?? 0) > 0) + .Select((a, b, c, d) => new ItemDetailModel + { + ItemNo = d.ItemNo, + ItemName = d.ItemName, + ItemModel = d.ItemModel, + FQty = b.FMustQty, + SQty = b.FRealQty, + FMaterialId = d.ItemId.ToString(), + Id = b.Id.ToString() + + }) + .ToList(); + + return blDetails; + } + + /// <summary> + /// 鐢熶骇宸ュ崟琛ユ枡鎵爜 + /// 鎵弿鏉$爜 prc_rf_pda_scan_zout_barcode3 + /// </summary> + /// <param name="query">鏌ヨ鍙傛暟</param> + /// <returns>鎵弿缁撴灉</returns> + /// <remarks> + /// 鍙傛暟璇存槑: + /// - billNo: 鍗曟嵁鍙�(蹇呭~) + /// - barcode: 鏉$爜(蹇呭~) + /// - userName: 鐢ㄦ埛鍚� + /// - blNo: 鍙戣揣閫氱煡鍗曞彿(蹇呭~) + /// </remarks> + public ProductionPickDto XSCKScanBarcode( WarehouseQuery query) + { + var _strMsg = ""; + var _intSum = ""; + using (var conn = new SqlConnection(DbHelperSQL.strConn)) + { + if (query.userName.IsNullOrEmpty()) throw new Exception("鐢ㄦ埛鍚嶄笉鍏佽涓虹┖"); + if (query.daa001.IsNullOrEmpty()) throw new Exception("鍙戣揣閫氱煡鍗曞彿涓嶅厑璁镐负绌�"); + if (query.barcode.IsNullOrEmpty()) throw new Exception("鏉$爜涓嶅厑璁镐负绌�"); + + using (var cmd = new SqlCommand("[prc_pda_XSCK]", conn)) + { + try + { + conn.Open(); + cmd.CommandType = CommandType.StoredProcedure; + SqlParameter[] parameters = + { + new("@outMsg", SqlDbType.NVarChar, 300), + new("@outSum", SqlDbType.NVarChar, 300), + new("@barcode_num", SqlDbType.NVarChar, 300), + new("@split_num", SqlDbType.NVarChar, 300), + new("@c_User", query.userName), + new("@p_biLL_no", query.daa001), + new("@p_item_barcode", query.barcode) + }; + parameters[0].Direction = ParameterDirection.Output; + parameters[1].Direction = ParameterDirection.Output; + parameters[2].Direction = ParameterDirection.Output; + parameters[3].Direction = ParameterDirection.Output; + foreach (var parameter in parameters) + cmd.Parameters.Add(parameter); + cmd.ExecuteNonQuery(); + _strMsg = parameters[0].Value.ToString(); + _intSum = parameters[1].Value.ToString(); + + var barcodeNum = parameters[2].Value.ToString(); + var splitNum = parameters[3].Value.ToString(); + + var result = Convert.ToInt32(_intSum); + if (result <= 0) throw new Exception(_strMsg); + + var dto = new ProductionPickDto + { + daa001 = query.daa001, + barcodeNum = barcodeNum, + splitNum = splitNum, + barcode = query.barcode, + strMsg = _strMsg, + result = _intSum + }; + + return dto; + } + catch (Exception ex) + { + throw new Exception(ex.Message); + } + finally + { + conn.Close(); + } + } + } + } + + /// <summary> + /// 鐢熶骇鍙戣揣閫氱煡鍗曟潯鐮佹媶鍒� prc_rf_pda_prnt_zout_barcode2 + /// </summary> + /// <param name="query">鏌ヨ鍙傛暟</param> + /// <returns>(鎴愬姛鏍囧織, 寰呭鐞嗗垪琛�)</returns> + /// <remarks> + /// 鍓嶅彴闇�瑕佷紶鍏ョ殑鍙傛暟: + /// - userName: 鐢ㄦ埛鍚�(蹇呭~) + /// - billNo: 宸ュ崟鍙�(蹇呭~) + /// - barcode: 鐗╂枡鏉$爜(蹇呭~) + /// - Num: 鍙戞枡鏁伴噺(蹇呭~,蹇呴』澶т簬0) + /// - blNo: 鍙戣揣閫氱煡鍗曞彿(蹇呭~) + /// </remarks> + public (bool success, List<MesItemBlDetail> pendingList) SplitBarcode( + WarehouseQuery query) + { + if (string.IsNullOrEmpty(query.userName)) + throw new Exception("鐢ㄦ埛鍚嶄笉鑳戒负绌猴紒"); + + if (string.IsNullOrEmpty(query.billNo)) + throw new Exception("璇烽�夊彇鍗曟嵁鍙凤紒"); + + if (string.IsNullOrEmpty(query.barcode)) + throw new Exception("璇锋壂鎻忔潯鐮侊紒"); + + if ((query.Num ?? 0) <= 0) + throw new Exception("璇疯緭鍏ユ纭殑鍙戞枡鏁伴噺锛�"); + + if (string.IsNullOrEmpty(query.blNo)) + throw new Exception("鍙戣揣閫氱煡鍗曞彿涓嶈兘涓虹┖锛�"); + + + // 妫�楠屾槸鍚﹂噸澶嶆壂鎻� + var exists = Db.Queryable<MesInvItemOutCDetails>() + .Where(b => b.ItemBarcode == query.barcode) + .Any(); + + if (exists) + throw new Exception("姝ゆ潯鐮佸凡鎵弿,鍕块噸澶嶆壂鐮侊紒"); + + // 鏌ヨ鏉$爜搴撳瓨淇℃伅 + var stockBarcode = Db.Queryable<MesInvItemStocks>() + .Where(t => t.ItemBarcode == query.barcode && t.Quantity > 0) + .First(); + + if (stockBarcode == null) + throw new Exception($"搴撳瓨涓棤姝ゆ潯鐮�,璇锋牳瀵癸紒{query.barcode}"); + + var totalQty = stockBarcode.Quantity; + string newBarcode = null; + + var outNoType = ""; + if (query.Type == "鐢熶骇琛ユ枡") + { + outNoType = "SCBL(鐢熶骇琛ユ枡)"; + } + else + { + outNoType = "SCCL(鐢熶骇瓒呴)"; + } + + // 寮�鍚簨鍔″鐞� + var success = UseTransaction(db => + { + var executeCommand = 0; + + // 鎷嗗垎鏉$爜 + if (totalQty > query.Num) + { + var mesItems = db.Queryable<MesItems>() + .Where(s => s.Id == stockBarcode.ItemId).First(); + + // 鐢熸垚鏂版潯鐮佸彿 + newBarcode = BillNo.GetBillNo("TM(鏉$爜)", mesItems.ItemNo); + + // 鍐欏叆鏂版潯鐮� + executeCommand += db.Insertable(new MesInvItemBarcodes + { + Guid = Guid.NewGuid(), + ItemBarcode = newBarcode, + CustNo = stockBarcode.CustomerNo, + // ProductCode = stockBarcode.ProductCode, + // ItemBarcode2 = stockBarcode.ItemBarcode2, + // ItemCode = stockBarcode.ItemCode, + ItemNo = stockBarcode.ItemNo, + LotNo = stockBarcode.LotNo, + Quantity = query.Num, + EpFlag = true, + TaskNo = stockBarcode.TaskNo, + CreateBy = query.userName, + CreateDate = DateTime.Now, + LastupdateBy = query.userName, + LastupdateDate = DateTime.Now, + OldItemBarcode = query.barcode, + // Mblnr = stockBarcode.Mblnr, + // Zeile = stockBarcode.Zeile, + // RohInId = stockBarcode.RohInId, + Barcodestatus = false, + Oldqty = query.Num as long?, + // Unit = stockBarcode.Unit, + // WeightUnit = stockBarcode.WeightUnit, + Factory = stockBarcode.Factory, + Company = stockBarcode.Company, + BillNo = stockBarcode.BillNo, + BoardStyle = stockBarcode.BoardStyle, + // ColorName = stockBarcode.ColorName, + WorkNo = stockBarcode.WorkNo, + WorkLine = stockBarcode.WorkLine, + // MemoBad = stockBarcode.MemoBad, + ComeFlg = 5, + // Memo = stockBarcode.Memo, + SuppId = stockBarcode.SuppId, + SuppNo = stockBarcode.SuppNo, + InsDate = stockBarcode.IndepDate, // Added InsDate + ItemId = stockBarcode.ItemId + // ItemUnit = stockBarcode.ItemUnit // Added ItemUnit + }).IgnoreColumns(true).ExecuteCommand(); + + // 鏇存柊鍘熸潯鐮佹暟閲� + executeCommand += db.Updateable<MesInvItemBarcodes>() + .SetColumns(it => it.Quantity == it.Quantity - query.Num) + .Where(it => it.ItemBarcode == query.barcode) + .ExecuteCommand(); + + // 鏇存柊鍘熸潯鐮佹暟閲� + executeCommand += db.Updateable<MesInvItemStocks>() + .SetColumns(it => it.Quantity == it.Quantity - query.Num) + .Where(it => it.ItemBarcode == query.barcode) + .ExecuteCommand(); + + //// 鍒犻櫎鍘熸潯鐮佸簱瀛樿褰� + //executeCommand += db.Deleteable<MesInvItemStocks>() + // .Where(it => it.ItemBarcode == query.barcode) + // .ExecuteCommand(); + + // 鎻掑叆鍓╀綑鏉$爜鏁伴噺鐨勬柊搴撳瓨璁板綍 + executeCommand += db.Insertable(new MesInvItemStocks + { + Guid = Guid.NewGuid(), + TaskNo = stockBarcode.TaskNo, + ItemBarcode = newBarcode, + ItemNo = stockBarcode.ItemNo, + LotNo = stockBarcode.LotNo, + Quantity = query.Num, + EpFlag = stockBarcode.EpFlag, + CustomerNo = stockBarcode.CustomerNo, + ItemWt = stockBarcode.ItemWt, + DepotsCode = stockBarcode.DepotsCode, + DepotsId = stockBarcode.DepotsId, + DepotSectionsCode = stockBarcode.DepotSectionsCode, + CheckDate = stockBarcode.CheckDate, + ItemType = stockBarcode.ItemType, + IndepDate = stockBarcode.IndepDate, + Factory = stockBarcode.Factory, + Company = stockBarcode.Company, + IqcStatus = stockBarcode.IqcStatus, + BoardStyle = stockBarcode.BoardStyle, + WorkNo = stockBarcode.WorkNo, + WorkLine = stockBarcode.WorkLine, + SuppNo = stockBarcode.SuppNo, + ItemId = stockBarcode.ItemId + // UnitId = stockBarcode.ItemUnit + }).IgnoreColumns(true).ExecuteCommand(); + + // 鍐欏叆鏂版潯鐮佺殑浜ゆ槗璁板綍 + executeCommand += db.Insertable(new MesInvBusiness2 + { + Guid = Guid.NewGuid(), + Status = 1, + BillTypeId = 200, // p_bill_type_id + TransactionCode = "209", // p_transaction_no + BusinessType = 0, + ItemBarcode = newBarcode, + ItemNo = stockBarcode.ItemNo, + LotNo = stockBarcode.LotNo, + EpFlag = true, + Quantity = query.Num, + FromInvDepotsCode = null, + FromInvDepotSectionsCode = null, + ToInvDepotsCode = stockBarcode.DepotsCode, + ToInvDepotSectionsCode = stockBarcode.DepotSectionsCode, + Description = query.Type + "鎷嗗垎鐢熸垚", + CreateBy = query.userName, + CreateDate = DateTime.Now, + LastupdateBy = query.userName, + LastupdateDate = DateTime.Now, + Factory = stockBarcode.Factory, + Company = stockBarcode.Company, + TaskNo = stockBarcode.TaskNo, + BillNo = stockBarcode.BillNo, + WorkNo = stockBarcode.WorkNo, + WorkLine = stockBarcode.WorkLine, + SuppNo = stockBarcode.SuppNo, + SuppId = stockBarcode.SuppId, + ItemId = stockBarcode.ItemId + // CkDepot = stockBarcode.DepotsId + }).IgnoreColumns(true).ExecuteCommand(); + } + else if (totalQty < query.Num) + { + throw new Exception("鍙戞枡鏁伴噺澶т簬鏉$爜鏁�,璇锋牳瀵癸紒"); + } + + //if (string.IsNullOrEmpty(newBarcode)) newBarcode = query.barcode; + + // 妫�鏌ュ彂璐ч�氱煡鍗曠姸鎬� + var mesItemBl = Db.Queryable<MesItemBl>() + .Where(a => a.BlNo == query.blNo && (a.Bl018 ?? false) == true) + .First(); + + if (mesItemBl == null) + throw new Exception($"鐢宠鍗� {query.blNo} 宸叉挙鍥烇紒"); + + if (mesItemBl.Bl018 != true) + throw new Exception($"鐢宠鍗� {query.blNo} 鏈鏍革紒"); + + if (mesItemBl.Bl019 == true) + throw new Exception($"鐢宠鍗� {query.blNo} 宸插畬缁擄紒"); + + // 鑾峰彇鍙戣揣閫氱煡鍗曟槑缁嗗苟鏍¢獙 + var blDetail = Db.Queryable<MesItemBlDetail>() + .Where(b => + b.Mid == mesItemBl.Id && b.Bld012 == stockBarcode.ItemId) + .First(); + + if (blDetail == null) + throw new Exception($"鐢宠鍗曚笉瀛樺湪姝ょ墿鏂� {stockBarcode.ItemNo} 璇风‘璁わ紒"); + + var remainingQty = (blDetail.Bld007 ?? 0) - (blDetail.Bld008 ?? 0); + if (remainingQty == 0) + throw new Exception("鐗╂枡宸叉壂鐮佸畬鎴愶紝璇锋牳瀵癸紒"); + + if (query.Num > remainingQty) + throw new Exception( + $"鎷嗗垎鏁伴噺锛歿query.Num} 澶т簬寰呭彂鏂欐暟閲忥細{remainingQty}锛岃鏍稿锛�"); + + // 妫�鏌ュ伐鍗曚俊鎭� + var womdaa = Db.Queryable<Womdaa>() + .Where(a => a.Daa001 == query.billNo) + .First(); + + if (womdaa == null) + throw new Exception($"宸ュ崟 {query.billNo} 涓嶅瓨鍦紝璇风‘璁わ紒"); + + var womdab = Db.Queryable<Womdab>() + .Where(b => + b.Dab001 == query.billNo && b.Erpid == blDetail.Bld014) + .First(); + + if (womdab == null) + throw new Exception($"澶囨枡鏄庣粏涓嶅瓨鍦ㄦ鐗╂枡 {stockBarcode.ItemNo} 璇风‘璁わ紒"); + + // 妫�鏌ュ凡鍙戞枡鏁伴噺鏄惁瓒呰繃寰呭彂鏂欐暟閲� + var sumQty = db.Queryable<MesInvItemOutCDetails>() + .Where(it => + it.TaskNo == query.blNo && it.ItemId == stockBarcode.ItemId) + .Sum(it => it.Quantity); + + //if (sumQty > remainingQty) + // throw new Exception( + // $"鎷嗗垎鏁伴噺锛歿sumQty} 澶т簬寰呭彂鏂欐暟閲忥細{remainingQty}锛岃鏍稿锛�"); + + + var depots = Db.Queryable<MesDepots>() + .Where(t => t.DepotId == stockBarcode.DepotId) + .First(); + + // 鑾峰彇鎴栧垱寤哄嚭搴撳崟 + var itemOut = db.Queryable<MesInvItemOuts>() + .Where(a => a.TaskNo == query.blNo + && a.DepotId == stockBarcode.DepotId + && a.OutDate.Value.Date.ToString("yyyy-MM-dd") == + DateTime.Now.Date.ToString("yyyy-MM-dd") + && a.BillTypeId == 200 + && a.TransactionNo == 209 + && a.Status == 0) + .First(); + + var outId = new Guid(); + var outNo = ""; + if (itemOut == null) + { + // 鍒涘缓鏂扮殑鍑哄簱鍗� + outId = Guid.NewGuid(); + outNo = BillNo.GetBillNo(outNoType); + + // 鎻掑叆鍑哄簱鍗曚富琛� + executeCommand += db.Insertable(new MesInvItemOuts + { + Guid = outId, + ItemOutNo = outNo, + TaskNo = query.blNo, + CreateBy = query.userName, + CreateDate = DateTime.Now, + LastupdateBy = query.userName, + LastupdateDate = DateTime.Now, + BillTypeId = 200, + TransactionNo = 209, + Remark = mesItemBl.Bl007, + DepotCode = depots.DepotCode, + OutPart = womdaa.Daa013, + FType = 0, + Factory = stockBarcode.Factory, + Company = stockBarcode.Company, + WorkNo = womdaa.Daa021, + BoardItem = womdaa.Daa002, + PbillNo = womdaa.Daa001, + OutDate = DateTime.Now, + Status = 0, + DepotId = stockBarcode.DepotId, + THORGID = stockBarcode.StockOrgId, + OutType = query.Type, + //BbillNo = query.blNo + }).IgnoreColumns(true).ExecuteCommand(); + } + else + { + outId = itemOut.Guid; + outNo = itemOut.ItemOutNo; + } + + // 妫�鏌ユ槸鍚﹀凡瀛樺湪鍑哄簱鍗曟槑缁� + var itemOutItemCount = db.Queryable<MesInvItemOutItems>() + .Where(it => + it.ItemOutId == outId && + it.ItemId == stockBarcode.ItemId && + it.DepotId == stockBarcode.DepotId.ToString()) + .Count(); + + if (itemOutItemCount == 0) + // 鎻掑叆鏂扮殑鍑哄簱鍗曟槑缁� + executeCommand += db.Insertable(new MesInvItemOutItems + { + Guid = Guid.NewGuid(), + ItemOutId = outId, + ItemNo = blDetail.Bld002, + Quantity = query.Num, + TlQty = query.Num, + CreateBy = query.userName, + CreateDate = DateTime.Now, + LastupdateBy = query.userName, + LastupdateDate = DateTime.Now, + Factory = stockBarcode.Factory, + Company = stockBarcode.Company, + DepotCode = depots.DepotCode, + TaskNo = query.blNo, + WorkNo = womdaa.Daa021, + WorkLine = blDetail.Bld013, + ErpItemNo = womdab.Dab003, + ErpId = womdab.Eid, + ErpAutoid = womdab.Erpid, + PbillNo = query.billNo, + ItemId = blDetail.Bld012, + DepotId = stockBarcode.DepotId.ToString(), + ItemDabid = womdab.Guid, + // Unit = blDetail.Bld009, + // DepotId = (int)stockBarcode.DepotsId + }).IgnoreColumns(true).ExecuteCommand(); + else + // 鏇存柊宸叉湁鍑哄簱鍗曟槑缁嗘暟閲� + executeCommand += db.Updateable<MesInvItemOutItems>() + .SetColumns(it => it.TlQty == (it.TlQty ?? 0) + query.Num) + .Where(it => + it.ItemOutId == outId && + it.ItemId == stockBarcode.ItemId && + it.DepotId == stockBarcode.DepotId.ToString()) + .ExecuteCommand(); + + // 鎻掑叆鍑哄簱鏉$爜鏄庣粏 + executeCommand += db.Insertable(new MesInvItemOutCDetails + { + Guid = Guid.NewGuid(), + ItemOutId = outId, + ItemBarcode = newBarcode ?? query.barcode, + ItemNo = stockBarcode.ItemNo, + LotNo = stockBarcode.LotNo, + Quantity = query.Num, + ForceOutFlag = 0, + CreateBy = query.userName, + CreateDate = DateTime.Now, + LastupdateBy = query.userName, + LastupdateDate = DateTime.Now, + DepotCode = depots.DepotCode, + DepotSectionCode = stockBarcode.DepotSectionsCode, + Remark = blDetail.Bld010, + Factory = stockBarcode.Factory, + Company = stockBarcode.Company, + TaskNoy = mesItemBl.Bl013, + BoardStyle = mesItemBl.Bl002, + TaskNo = query.blNo, + WorkNo = blDetail.Bld001, + WorkLine = blDetail.Bld013, + SuppNo = stockBarcode.SuppNo, + PbillNo = query.billNo, + ItemId = blDetail.Bld012, + Unit = blDetail.Bld009, + DepotId = (int)stockBarcode.DepotsId, + Dabid = womdab.Guid, + }).IgnoreColumns(true).ExecuteCommand(); + + // 鎻掑叆涓氬姟娴佹按 + executeCommand += db.Insertable(new MesInvBusiness2 + { + Guid = Guid.NewGuid(), + Status = 1, + BillTypeId = 200, // p_bill_type_id + TransactionCode = "209", // p_transaction_no + BusinessType = 1, + ItemBarcode = newBarcode ?? query.barcode, + ItemNo = stockBarcode.ItemNo, + LotNo = stockBarcode.LotNo, + EpFlag = true, + Quantity = query.Num, + FromInvDepotsCode = stockBarcode.DepotsCode, + FromInvDepotSectionsCode = stockBarcode.DepotSectionsCode, + Description = query.Type, + CreateBy = query.userName, + CreateDate = DateTime.Now, + LastupdateBy = query.userName, + LastupdateDate = DateTime.Now, + Factory = stockBarcode.Factory, + Company = stockBarcode.Company, + TaskNo = mesItemBl.Bl012, + BillNo = query.blNo, + WorkNo = blDetail.Bld001, + WorkLine = blDetail.Bld013, + SuppNo = stockBarcode.SuppNo, + ItemId = stockBarcode.ItemId + // CkDepot = stockBarcode.DepotsId + }).IgnoreColumns(true).ExecuteCommand(); + + // 鏇存柊宸ュ崟琛ㄦ暟閲� + executeCommand += db.Updateable<Womdab>() + .SetColumns(it => new Womdab + { + Dab007 = (it.Dab007 ?? 0) + query.Num, // 宸ュ崟鏁伴噺 + Dab020 = (it.Dab020 ?? 0) + query.Num, // 宸插彂鏂欐暟閲� + Dab021 = (it.Dab021 ?? 0) + query.Num // 宸插彂鏂欐暟閲� + }) + .Where(it => it.Id == womdab.Id && it.Dab003 == womdab.Dab003) + .ExecuteCommand(); + + // 鏇存柊鍙戣揣閫氱煡鍗曟槑缁嗗凡琛ユ暟閲� + executeCommand += db.Updateable<MesItemBlDetail>() + .SetColumns(it => new MesItemBlDetail + { + Bld008 = (it.Bld008 ?? 0) + (int)query.Num + }) + .Where(it => it.Id == blDetail.Id) + .ExecuteCommand(); + + // 鑾峰彇鏇存柊鍚庣殑鍙戣揣閫氱煡鍗曟槑缁嗘暟閲� + var updatedDetail = db.Queryable<MesItemBlDetail>() + .Where(it => it.Id == blDetail.Id) + .Select(it => new { it.Bld007, it.Bld008 }) + .First(); + + if ((updatedDetail.Bld007 ?? 0) <= (updatedDetail.Bld008 ?? 0)) + // 鏇存柊鏄庣粏瀹屾垚鐘舵�� + executeCommand += db.Updateable<MesItemBlDetail>() + .SetColumns(it => new MesItemBlDetail { Bld011 = 1 }) + .Where(it => it.Id == blDetail.Id) + .ExecuteCommand(); + + // 妫�鏌ユ槸鍚﹁繕鏈夋湭瀹屾垚鐨勬槑缁� + + var unfinishedDetail = db.Queryable<MesItemBlDetail>() + .Where(it => it.Mid == mesItemBl.Id && (it.Bld011 ?? 0) == 0) + .First(); + + if (unfinishedDetail == null) + // 濡傛灉娌℃湁鎵惧埌鏈畬鎴愭槑缁嗭紝鍒欐洿鏂板彂璐ч�氱煡鍗曠姸鎬佷负宸插畬鎴� + executeCommand += db.Updateable<MesItemBl>() + .SetColumns(it => new MesItemBl + { + Bl019 = true, + WcUser = query.userName, + WcTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + }) + .Where(it => it.Id == mesItemBl.Id) + .ExecuteCommand(); + + if (executeCommand <= 1) throw new Exception("鏇存柊澶辫触"); + + return executeCommand; + }) > 0; + + // 鑾峰彇鏈�缁堢殑寰呭彂鏂欐槑缁嗗垪琛� + var pendingList = Db.Queryable<MesItemBl, MesItemBlDetail>((a, b) => + new JoinQueryInfos(JoinType.Left, a.Id == b.Mid)) + .Where((a, b) => a.BlNo == query.blNo + && (b.Bld007 ?? 0) - (b.Bld008 ?? 0) > 0) + .Select((a, b) => new MesItemBlDetail + { + Bld012 = b.Bld012, + Bld002 = b.Bld002, + Bld003 = b.Bld003, + Bld004 = b.Bld004, + Bld007 = b.Bld007, + Bld008 = b.Bld008 + }) + .ToList(); + + return (success, pendingList); + } + + #endregion + + #region 鐢熶骇瓒呴 + + public List<string> GetSccList(WarehouseQuery query) + { + var list = Db.Queryable<MesItemBl>() + .Where(s => (s.Bl018 ?? false) == true + && (s.Bl019 ?? false) == false + && s.Bl008 == query.Type) + .Select(s => s.BlNo) + .ToList(); + return list; + } + + /// <summary> + /// 鑾峰彇鐢熶骇瓒呴鍗曟槑缁� + /// </summary> + /// <param name="query">鏌ヨ鍙傛暟</param> + /// <returns>鐢熶骇瓒呴鍗曟槑缁嗗垪琛�</returns> + public (string bl001, List<MesItemBlDetail> item) + GetMesItemBlDetailBySccBillNo( + WarehouseQuery query) + { + if (string.IsNullOrEmpty(query.billNo)) + throw new Exception("璇烽�夊崟鎹彿锛�"); + + // 妫�鏌ヨ秴棰嗗崟鏄惁瀛樺湪涓斾负鐢熶骇瓒呴/濮斿瓒呴绫诲瀷 + var mesItemBl = Db.Queryable<MesItemBl>() + .Where(a => a.BlNo == query.billNo && a.Bl008 == query.Type) + .First(); + + if (mesItemBl == null) + throw new Exception("鍗曟嵁鍙蜂笉姝g‘锛�"); + + // 妫�鏌ュ伐鍗曟槑缁嗙姸鎬� + var blDetails = Db.Queryable<MesItemBlDetail>() + .Where(it => it.Mid == mesItemBl.Id) + .ToList(); + + foreach (var womdab in blDetails.Select(detail => Db.Queryable<Womdab>() + .Where(it => it.Erpid == detail.Bld014) + .First())) + { + if (womdab == null) + throw new Exception("鏈壘鍒板伐鍗曟槑缁嗭紒"); + + if ((womdab.Dab006 ?? 0) != (womdab.Dab007 ?? 0) || + (womdab.Dab021 ?? 0) != (womdab.Dab022 ?? 0)) + throw new Exception("鐗╂枡鏈瀹屾枡鎴栧瓨鍦ㄥ緟琛ョ墿鏂欙紒"); + } + + // 鑾峰彇鏈畬鎴愮殑瓒呴鍗曟槑缁� + var pendingDetails = Db.Queryable<MesItemBl, MesItemBlDetail>((a, b) => + new JoinQueryInfos(JoinType.Left, a.Id == b.Mid)) + .Where((a, b) => a.BlNo == query.billNo + && (b.Bld007 ?? 0) - (b.Bld008 ?? 0) > 0) + .OrderBy((a, b) => b.Bld002) + .Select((a, b) => new MesItemBlDetail + { + Bld012 = b.Bld012, + Bld002 = b.Bld002, + Bld003 = b.Bld003, + Bld004 = b.Bld004, + Bld007 = b.Bld007, + Bld008 = b.Bld008 + }) + .ToList(); + + return (mesItemBl.Bl001, pendingDetails); + } + + /// <summary> + /// 鐢熶骇瓒呴鎵弿鏉$爜 prc_rf_pda_scan_zout_barcodeCL + /// </summary> + /// <param name="query">鏌ヨ鍙傛暟</param> + /// <returns>鎵弿缁撴灉</returns> + /// <remarks> + /// 鍙傛暟璇存槑: + /// - billNo: 宸ュ崟鍙�(蹇呭~) + /// - barcode: 鏉$爜(蹇呭~) + /// - userName: 鐢ㄦ埛鍚�(蹇呭~) + /// - blNo: 瓒呴鍗曞彿(蹇呭~) + /// </remarks> + public (WarehouseQuery item, List<MesItemBlDetail> pendingList) + ScanBarcodeForOverPicking( + WarehouseQuery query) + { + #region 鍙傛暟鏍¢獙 + + if (string.IsNullOrEmpty(query.billNo)) + throw new Exception("璇烽�夊彇鍗曟嵁鍙凤紒"); + + if (string.IsNullOrEmpty(query.barcode)) + throw new Exception("璇锋壂鎻忔潯鐮侊紒"); + + if (string.IsNullOrEmpty(query.userName)) + throw new Exception("鐢ㄦ埛鍚嶄笉鑳戒负绌猴紒"); + + if (string.IsNullOrEmpty(query.blNo)) + throw new Exception("瓒呴鍗曞彿涓嶈兘涓虹┖锛�"); + + #endregion + + // 妫�楠屾槸鍚﹂噸澶嶆壂鎻� + var exists = Db.Queryable<MesInvItemOutCDetails>() + .Where(b => b.ItemBarcode == query.barcode) + .Any(); + + if (exists) + throw new Exception("姝ゆ潯鐮佸凡鎵弿,鍕块噸澶嶆壂鐮侊紒"); + + // 鏌ヨ鏉$爜搴撳瓨淇℃伅 + var stockBarcode = Db.Queryable<MesInvItemStocks>() + .Where(t => t.ItemBarcode == query.barcode && t.Quantity > 0) + .First(); + + if (stockBarcode == null) + throw new Exception($"搴撳瓨涓棤姝ゆ潯鐮�,璇锋牳瀵癸紒{query.barcode}"); + + // 妫�鏌ヨ秴棰嗗崟鐘舵�� + var mesItemBl = Db.Queryable<MesItemBl>() + .Where(a => a.BlNo == query.blNo && (a.Bl018 ?? false) == false) + .First(); + + if (mesItemBl == null) + throw new Exception($"鐢宠鍗� {query.blNo} 宸叉挙鍥烇紒"); + + if (mesItemBl.Bl018 != true) + throw new Exception($"鐢宠鍗� {query.blNo} 鏈鏍革紒"); + + if (mesItemBl.Bl019 == true) + throw new Exception($"鐢宠鍗� {query.blNo} 宸插畬缁擄紒"); + + // 妫�鏌ュ伐鍗曟槑缁嗙姸鎬� + var blDetails = Db.Queryable<MesItemBlDetail>() + .Where(it => it.Mid == mesItemBl.Id) + .ToList(); + + foreach (var womdab1 in blDetails.Select(detail => Db + .Queryable<Womdab>() + .Where(it => it.Erpid == detail.Bld014) + .First())) + { + if (womdab1 == null) + throw new Exception("鏈壘鍒板伐鍗曟槑缁嗭紒"); + + if ((womdab1.Dab006 ?? 0) != (womdab1.Dab007 ?? 0) || + (womdab1.Dab021 ?? 0) != (womdab1.Dab022 ?? 0)) + throw new Exception("鐗╂枡鏈瀹屾枡鎴栧瓨鍦ㄥ緟琛ョ墿鏂欙紒"); + } + + // 鑾峰彇瓒呴鍗曟槑缁嗗苟鏍¢獙 + var blDetail = Db.Queryable<MesItemBlDetail>() + .Where(b => + b.Mid == mesItemBl.Id && b.Bld012 == stockBarcode.ItemId) + .First(); + + if (blDetail == null) + throw new Exception($"鐢宠鍗曚笉瀛樺湪姝ょ墿鏂� {stockBarcode.ItemNo} 璇风‘璁わ紒"); + + // 妫�鏌ュ緟瓒呴鏁伴噺 + var quantity = (blDetail.Bld007 ?? 0) - (blDetail.Bld008 ?? 0); + if (quantity == 0) + throw new Exception("鐗╂枡宸叉壂鐮佸畬鎴愶紝璇锋牳瀵癸紒"); + + // 妫�鏌ュ伐鍗曚俊鎭� + var womdaa = Db.Queryable<Womdaa>() + .Where(a => a.Daa001 == query.billNo) + .First(); + + if (womdaa == null) + throw new Exception($"宸ュ崟 {query.billNo} 涓嶅瓨鍦紝璇风‘璁わ紒"); + + var womdab = Db.Queryable<Womdab>() + .Where(b => b.Dab001 == query.billNo && b.Erpid == blDetail.Bld014) + .First(); + + if (womdab == null) + throw new Exception($"澶囨枡鏄庣粏涓嶅瓨鍦ㄦ鐗╂枡 {stockBarcode.ItemNo} 璇风‘璁わ紒"); + + // 濡傛灉鏉$爜鏁伴噺澶т簬寰呰秴棰嗘暟閲�,杩斿洖寰呭鐞嗗垪琛ㄤ緵纭 + if (stockBarcode.Quantity > quantity) + { + var pendingList = Db.Queryable<MesItemBl, MesItemBlDetail>((a, b) => + new JoinQueryInfos(JoinType.Left, a.Id == b.Mid)) + .Where((a, b) => a.BlNo == query.blNo + && (b.Bld007 ?? 0) - (b.Bld008 ?? 0) > 0) + .Select((a, b) => new MesItemBlDetail + { + Bld012 = b.Bld012, + Bld002 = b.Bld002, + Bld003 = b.Bld003, + Bld004 = b.Bld004, + Bld007 = b.Bld007, + Bld008 = b.Bld008 + }) + .ToList(); + + query.Num = stockBarcode.Quantity; + query.Fum = quantity; + + return (query, pendingList); + } + + // 鎵ц鏁版嵁搴撲簨鍔� + UseTransaction(db => + { + // 鐢熸垚鎴栬幏鍙栧嚭搴撳崟 + var outId = Guid.Empty; + var outNo = ""; + var outRecord = db.Queryable<MesInvItemOuts>() + .Where(a => a.TaskNo == query.blNo + && a.DepotId == stockBarcode.DepotId + && a.OutDate.Value.Date == DateTime.Now.Date + && a.BillTypeId == 200 + && a.TransactionNo == 210 + && a.Status == 0) + .First(); + + if (outRecord == null) + { + outId = Guid.NewGuid(); + outNo = BillNo.GetBillNo("BL(宸ュ崟琛ユ枡)"); // 闇�瑕佸疄鐜扮敓鎴愬崟鍙风殑鏂规硶 + + // 鎻掑叆鍑哄簱鍗曚富琛� + db.Insertable(new MesInvItemOuts + { + Guid = outId, + ItemOutNo = outNo, + TaskNo = query.blNo, + CreateBy = query.userName, + CreateDate = DateTime.Now, + LastupdateBy = query.userName, + LastupdateDate = DateTime.Now, + BillTypeId = 200, + TransactionNo = 210, + Remark = mesItemBl.Bl007, + DepotCode = womdab.Dab017, + OutPart = womdaa.Daa013, + FType = 0, + WorkNo = womdaa.Daa021, + OutType = query.Type, + BoardItem = womdaa.Daa002, + PbillNo = womdaa.Daa001, + OutDate = DateTime.Now, + Status = 0, + BbillNo = query.blNo + }).IgnoreColumns(true).ExecuteCommand(); + } + else + { + outId = outRecord.Guid; + outNo = outRecord.ItemOutNo; + } + + // 鏇存柊鎴栨彃鍏ュ嚭搴撳崟鏄庣粏 + var outItem = db.Queryable<MesInvItemOutItems>() + .Where(it => + it.ItemOutId == outId && it.ItemId == stockBarcode.ItemId) + .First(); + + if (outItem == null) + // 鎻掑叆鍑哄簱鍗曟槑缁� + db.Insertable(new MesInvItemOutItems + { + Guid = Guid.NewGuid(), + ItemOutId = outId, + ItemNo = blDetail.Bld002, + Quantity = stockBarcode.Quantity, + CreateBy = query.userName, + CreateDate = DateTime.Now, + LastupdateBy = query.userName, + LastupdateDate = DateTime.Now, + DepotCode = womdab.Dab017, + TaskNo = query.blNo, + WorkNo = womdaa.Daa021, + WorkLine = blDetail.Bld013, + ErpItemNo = womdab.Dab003, + ErpId = womdab.Eid, + ErpAutoid = womdab.Erpid, + PbillNo = query.billNo, + ItemId = blDetail.Bld012, + DepotId = stockBarcode.DepotId.ToString(), + // Unit = blDetail.Bld009, + // DepotId = stockBarcode.DepotsId + }).IgnoreColumns(true).ExecuteCommand(); + else + // 鏇存柊鍑哄簱鍗曟槑缁嗘暟閲� + db.Updateable<MesInvItemOutItems>() + .SetColumns(it => new MesInvItemOutItems + { + Quantity = it.Quantity + stockBarcode.Quantity + }) + .Where(it => + it.ItemOutId == outId && + it.ItemId == stockBarcode.ItemId) + .ExecuteCommand(); + + // 鎻掑叆鍑哄簱鏉$爜鏄庣粏 + db.Insertable(new MesInvItemOutCDetails + { + Guid = Guid.NewGuid(), + ItemOutId = outId, + ItemBarcode = stockBarcode.ItemBarcode, + ItemNo = stockBarcode.ItemNo, + LotNo = stockBarcode.LotNo, + Quantity = stockBarcode.Quantity, + CreateBy = query.userName, + CreateDate = DateTime.Now, + LastupdateBy = query.userName, + LastupdateDate = DateTime.Now, + DepotCode = stockBarcode.DepotsCode, + DepotSectionCode = stockBarcode.DepotSectionsCode, + Remark = blDetail.Bld010, + TaskNo = query.blNo, + WorkNo = blDetail.Bld001, + WorkLine = blDetail.Bld013, + SuppNo = stockBarcode.SuppNo, + PbillNo = query.billNo, + ItemId = blDetail.Bld012, + Unit = blDetail.Bld009, + DepotId = (int)stockBarcode.DepotsId, + Dabid = womdab.Guid, + }).IgnoreColumns(true).ExecuteCommand(); + + // 鎻掑叆涓氬姟娴佹按 + db.Insertable(new MesInvBusiness2 + { + Guid = Guid.NewGuid(), + Status = 1, + BillTypeId = 200, + TransactionCode = "210", + BusinessType = -1, + ItemBarcode = query.barcode, + ItemNo = stockBarcode.ItemNo, + LotNo = stockBarcode.LotNo, + EpFlag = true, + Quantity = stockBarcode.Quantity, + FromInvDepotsCode = stockBarcode.DepotsCode, + FromInvDepotSectionsCode = stockBarcode.DepotSectionsCode, + CreateBy = query.userName, + CreateDate = DateTime.Now, + LastupdateBy = query.userName, + LastupdateDate = DateTime.Now, + TaskNo = mesItemBl.Bl012, + BillNo = query.blNo, + WorkNo = blDetail.Bld001, + WorkLine = blDetail.Bld013, + SuppNo = stockBarcode.SuppNo, + SuppId = stockBarcode.SuppId, + ItemId = stockBarcode.ItemId + // CkDepot = stockBarcode.DepotsId + }).IgnoreColumns(true).ExecuteCommand(); + + // 鏇存柊宸ュ崟澶囨枡鏄庣粏 + db.Updateable<Womdab>() + .SetColumns(it => new Womdab + { + Dab020 = (it.Dab020 ?? 0) + stockBarcode.Quantity, + Dab023 = (it.Dab023 ?? 0) + stockBarcode.Quantity + }) + .Where(it => it.Id == womdab.Id) + .ExecuteCommand(); + + // 鏇存柊瓒呴鍗曟槑缁� + db.Updateable<MesItemBlDetail>() + .SetColumns(it => new MesItemBlDetail + { + Bld008 = (it.Bld008 ?? 0) + (int)stockBarcode.Quantity, + Bld011 = (it.Bld007 ?? 0) <= + (it.Bld008 ?? 0) + stockBarcode.Quantity + ? 1 + : 0 + }) + .Where(it => it.Id == blDetail.Id) + .ExecuteCommand(); + + // 鏇存柊搴撳瓨鏁伴噺涓�0 + db.Updateable<MesInvItemStocks>() + .SetColumns(it => it.Quantity == 0) + .Where(it => it.Guid == stockBarcode.Guid) + .ExecuteCommand(); + + // 妫�鏌ユ槸鍚︽墍鏈夋槑缁嗛兘宸插畬鎴� + var hasUnfinished = db.Queryable<MesItemBlDetail>() + .Where(it => it.Mid == mesItemBl.Id && (it.Bld011 ?? 0) == 0) + .Any(); + + // 濡傛灉鎵�鏈夋槑缁嗗畬鎴�,鏇存柊瓒呴鍗曠姸鎬佷负宸插畬鎴� + if (!hasUnfinished) + db.Updateable<MesItemBl>() + .SetColumns(it => it.Bl019 == true) + .Where(it => it.Id == mesItemBl.Id) + .ExecuteCommand(); + + return 1; + }); + + // 鑾峰彇鏈�缁堢殑寰呭鐞嗗垪琛� + var finalPendingList = Db.Queryable<MesItemBl, MesItemBlDetail>( + (a, b) => + new JoinQueryInfos(JoinType.Left, a.Id == b.Mid)) + .Where((a, b) => a.BlNo == query.blNo + && (b.Bld007 ?? 0) - (b.Bld008 ?? 0) > 0) + .Select((a, b) => new MesItemBlDetail + { + Bld012 = b.Bld012, + Bld002 = b.Bld002, + Bld003 = b.Bld003, + Bld004 = b.Bld004, + Bld007 = b.Bld007, + Bld008 = b.Bld008 + }) + .ToList(); + + return (query, finalPendingList); + } + + /// <summary> + /// 鐢熶骇瓒呴鎵撳嵃鏉$爜 + /// </summary> + /// <param name="query">鏌ヨ鍙傛暟</param> + /// <returns>澶勭悊缁撴灉</returns> + public (bool success, List<MesItemBlDetail> pendingList) + PrintBarcodeForOverPicking(WarehouseQuery query) + { + UseTransaction(db => + { + #region 鍙傛暟鏍¢獙 + + if (string.IsNullOrEmpty(query.billNo)) + throw new Exception("璇烽�夊彇鍗曟嵁鍙凤紒"); + + if (string.IsNullOrEmpty(query.barcode)) + throw new Exception("璇锋壂鎻忔潯鐮侊紒"); + + if (string.IsNullOrEmpty(query.userName)) + throw new Exception("鐢ㄦ埛鍚嶄笉鑳戒负绌猴紒"); + + if (string.IsNullOrEmpty(query.blNo)) + throw new Exception("瓒呴鍗曞彿涓嶈兘涓虹┖锛�"); + + if (query.Num <= 0) + throw new Exception("璇疯緭鍏ユ纭殑鍙戞枡鏁伴噺锛�"); + + #endregion + + // 鏌ヨ搴撳瓨鏉$爜淇℃伅 + var stockBarcode = db.Queryable<MesInvItemStocks>() + .Where(t => t.ItemBarcode == query.barcode && t.Quantity > 0) + .First(); + + if (stockBarcode == null) + throw new Exception($"搴撳瓨涓棤姝ゆ潯鐮侊紝璇锋牳瀵癸紒{query.barcode}"); + + var totalQty = stockBarcode.Quantity; + string newBarcode = null; + + // 鎷嗗垎鏉$爜 + if (totalQty > query.Num) + { + var mesItems = db.Queryable<MesItems>() + .Where(s => s.Id == stockBarcode.ItemId).First(); + // 鐢熸垚鏂版潯鐮佸彿 + newBarcode = BillNo.GetBillNo("TMBH(鏉$爜缂栧彿)", mesItems.ItemNo); + + // 鍐欏叆鏂版潯鐮佽褰� + db.Insertable(new MesInvItemBarcodes + { + Guid = Guid.NewGuid(), + ItemBarcode = newBarcode, + ItemNo = stockBarcode.ItemNo, + LotNo = stockBarcode.LotNo, + Quantity = query.Num, + EpFlag = true, + CreateBy = query.userName, + CreateDate = DateTime.Now, + LastupdateBy = query.userName, + LastupdateDate = DateTime.Now, + OldItemBarcode = query.barcode, + Factory = stockBarcode.Factory, + Company = stockBarcode.Company, + WorkNo = stockBarcode.WorkNo, + WorkLine = stockBarcode.WorkLine, + SuppId = stockBarcode.SuppId, + SuppNo = stockBarcode.SuppNo, + ItemId = stockBarcode.ItemId + }).IgnoreColumns(true).ExecuteCommand(); + + // 鏇存柊鍘熸潯鐮佹暟閲� + db.Updateable<MesInvItemBarcodes>() + .SetColumns(it => new MesInvItemBarcodes + { Quantity = totalQty - query.Num }) + .Where(it => it.ItemBarcode == query.barcode) + .ExecuteCommand(); + + // 鍒犻櫎鍘熸潯鐮佸簱瀛樿褰� + db.Deleteable<MesInvItemStocks>() + .Where(it => it.ItemBarcode == query.barcode) + .ExecuteCommand(); + + // 鎻掑叆鍓╀綑鏉$爜鏁伴噺鐨勬柊搴撳瓨璁板綍 + db.Insertable(new MesInvItemStocks + { + Guid = Guid.NewGuid(), + ItemBarcode = stockBarcode.ItemBarcode, + ItemNo = stockBarcode.ItemNo, + LotNo = stockBarcode.LotNo, + Quantity = totalQty - query.Num, + EpFlag = stockBarcode.EpFlag, + CustomerNo = stockBarcode.CustomerNo, + DepotsCode = stockBarcode.DepotsCode, + DepotsId = stockBarcode.DepotsId, + DepotSectionsCode = stockBarcode.DepotSectionsCode, + CheckDate = stockBarcode.CheckDate, + ItemType = stockBarcode.ItemType, + IndepDate = stockBarcode.IndepDate, + Factory = stockBarcode.Factory, + Company = stockBarcode.Company, + IqcStatus = stockBarcode.IqcStatus, + BoardStyle = stockBarcode.BoardStyle, + WorkNo = stockBarcode.WorkNo, + WorkLine = stockBarcode.WorkLine, + SuppNo = stockBarcode.SuppNo, + SuppId = stockBarcode.SuppId, + ItemId = stockBarcode.ItemId + }).IgnoreColumns(true).ExecuteCommand(); + + // 鍐欐柊鏉$爜鐨勪氦鏄撹〃锛屾柊鏉$爜涓嶅叆搴撶洿鎺ュ嚭 + db.Insertable(new MesInvBusiness2 + { + Guid = Guid.NewGuid(), + Status = 1, + BillTypeId = 200, + TransactionCode = "210", + BusinessType = -1, + ItemBarcode = newBarcode, + ItemNo = stockBarcode.ItemNo, + LotNo = stockBarcode.LotNo, + EpFlag = true, + Quantity = query.Num, + ToInvDepotsCode = stockBarcode.DepotsCode, + ToInvDepotSectionsCode = stockBarcode.DepotSectionsCode, + Description = "鐢熶骇瓒呴", + CreateBy = query.userName, + CreateDate = DateTime.Now, + LastupdateBy = query.userName, + LastupdateDate = DateTime.Now, + TaskNo = stockBarcode.TaskNo, + WorkNo = stockBarcode.WorkNo, + WorkLine = stockBarcode.WorkLine, + SuppNo = stockBarcode.SuppNo, + SuppId = stockBarcode.SuppId, + ItemId = stockBarcode.ItemId + }).IgnoreColumns(true).ExecuteCommand(); + } + else if (totalQty < query.Num) + { + throw new Exception("鍙戞枡鏁伴噺澶т簬鏉$爜鏁�,璇锋牳瀵癸紒"); + } + + if (string.IsNullOrEmpty(newBarcode)) + newBarcode = query.barcode; + + // 妫�鏌ヨ秴棰嗗崟鐘舵�� + var mesItemBl = db.Queryable<MesItemBl>() + .Where(a => a.BlNo == query.blNo && a.Bl008 == "鐢熶骇瓒呴") + .First(); + + if (mesItemBl == null) + throw new Exception("鐢宠鍗曚笉瀛樺湪锛�"); + + if (!(mesItemBl.Bl018 ?? false)) + throw new Exception($"鐢宠鍗� {query.blNo} 鏈鏍革紒"); + + if (mesItemBl.Bl019 ?? false) + throw new Exception($"鐢宠鍗� {query.blNo} 宸插畬缁擄紒"); + + // 妫�鏌ヨ秴棰嗗崟鏄庣粏 + var blDetail = db.Queryable<MesItemBlDetail>() + .Where(b => + b.Mid == mesItemBl.Id && b.Bld012 == stockBarcode.ItemId) + .First(); + + if (blDetail == null) + throw new Exception($"鐢宠鍗曚笉瀛樺湪姝ょ墿鏂� {stockBarcode.ItemNo} 璇风‘璁わ紒"); + + var pendingQty = (blDetail.Bld007 ?? 0) - (blDetail.Bld008 ?? 0); + if (pendingQty == 0) + throw new Exception("鐗╂枡宸叉壂鐮佸畬鎴愶紝璇锋牳瀵癸紒"); + + // 妫�鏌ュ伐鍗� + var workOrder = db.Queryable<Womdaa>() + .Where(a => a.Daa001 == query.billNo) + .First(); + + if (workOrder == null) + throw new Exception($"宸ュ崟 {query.billNo} 涓嶅瓨鍦紝璇风‘璁わ紒"); + + var workOrderDetail = db.Queryable<Womdab>() + .Where(b => + b.Dab001 == query.billNo && b.Erpid == blDetail.Bld014) + .First(); + + if (workOrderDetail == null) + throw new Exception($"澶囨枡鏄庣粏涓嶅瓨鍦ㄦ鐗╂枡 {stockBarcode.ItemNo} 璇风‘璁わ紒"); + + if (query.Num > pendingQty) + throw new Exception( + $"鎷嗗垎鏁伴噺锛歿query.Num} 澶т簬寰呭彂鏂欐暟閲忥細{pendingQty}锛岃鏍稿锛�"); + + // 鑾峰彇鎴栧垱寤哄嚭搴撳崟 + var itemOut = db.Queryable<MesInvItemOuts>() + .Where(a => a.BbillNo == query.blNo + && a.DepotCode == workOrderDetail.Dab017 + && a.OutDate.Value.Date.ToString("yyyy-MM-dd") == + DateTime.Now.Date.ToString("yyyy-MM-dd") + && a.BillTypeId == 200 + && a.TransactionNo == 210 + && a.Status == 0) + .First(); + + if (itemOut == null) + { + // 鍒涘缓鏂扮殑鍑哄簱鍗� + itemOut = new MesInvItemOuts + { + Guid = Guid.NewGuid(), + ItemOutNo = BillNo.GetBillNo("BL(宸ュ崟琛ユ枡)"), // 闇�瑕佸疄鐜扮敓鎴愬崟鍙风殑鏂规硶 + TaskNo = query.blNo, + CreateBy = query.userName, + CreateDate = DateTime.Now, + LastupdateBy = query.userName, + LastupdateDate = DateTime.Now, + BillTypeId = 200, + TransactionNo = 210, + Remark = mesItemBl.Bl007, + DepotCode = workOrderDetail.Dab017, + OutPart = workOrder.Daa013, + FType = 0, + Factory = stockBarcode.Factory, + Company = stockBarcode.Company, + WorkNo = workOrder.Daa021, + OutType = "鐢熶骇瓒呴鍗�", + BoardItem = workOrder.Daa002, + PbillNo = workOrder.Daa001, + OutDate = DateTime.Now, + Status = 0, + BbillNo = query.blNo + }; + + db.Insertable(itemOut).IgnoreColumns(true).ExecuteCommand(); + } + + // 妫�鏌ユ槸鍚﹀凡瀛樺湪鍑哄簱鍗曟槑缁� + var itemOutItemCount = db.Queryable<MesInvItemOutItems>() + .Where(it => + it.ItemOutId == itemOut.Guid && + it.ItemId == stockBarcode.ItemId) + .Count(); + + if (itemOutItemCount == 0) + // 鎻掑叆鏂扮殑鍑哄簱鍗曟槑缁� + db.Insertable(new MesInvItemOutItems + { + Guid = Guid.NewGuid(), + ItemOutId = itemOut.Guid, + ItemNo = blDetail.Bld002, + Quantity = query.Num, + CreateBy = query.userName, + CreateDate = DateTime.Now, + LastupdateBy = query.userName, + LastupdateDate = DateTime.Now, + Factory = stockBarcode.Factory, + Company = stockBarcode.Company, + DepotCode = workOrderDetail.Dab017, + TaskNo = query.blNo, + WorkNo = workOrder.Daa021, + WorkLine = blDetail.Bld013, + ErpItemNo = workOrderDetail.Dab003, + ErpId = workOrderDetail.Eid, + ErpAutoid = workOrderDetail.Erpid, + PbillNo = query.billNo, + ItemId = blDetail.Bld012 + // Unit = blDetail.Bld009, + // DepotId = stockBarcode.DepotsId + }).IgnoreColumns(true).ExecuteCommand(); + else + // 鏇存柊宸叉湁鍑哄簱鍗曟槑缁嗘暟閲� + db.Updateable<MesInvItemOutItems>() + .SetColumns(it => it.Quantity == it.Quantity + query.Num) + .Where(it => + it.ItemOutId == itemOut.Guid && + it.ItemId == stockBarcode.ItemId) + .ExecuteCommand(); + + // 鎻掑叆鍑哄簱鏄庣粏璁板綍 + db.Insertable(new MesInvItemOutCDetails + { + Guid = Guid.NewGuid(), + ItemOutId = itemOut.Guid, + ItemBarcode = newBarcode, + ItemNo = stockBarcode.ItemNo, + LotNo = stockBarcode.LotNo, + Quantity = query.Num, + ForceOutFlag = 0, + CreateBy = query.userName, + CreateDate = DateTime.Now, + LastupdateBy = query.userName, + LastupdateDate = DateTime.Now, + DepotCode = stockBarcode.DepotsCode, + DepotSectionCode = stockBarcode.DepotSectionsCode, + Remark = blDetail.Bld010, + Factory = stockBarcode.Factory, + Company = stockBarcode.Company, + TaskNoy = mesItemBl.Bl013, + BoardStyle = mesItemBl.Bl002, + TaskNo = query.blNo, + WorkNo = blDetail.Bld001, + WorkLine = blDetail.Bld013, + SuppNo = stockBarcode.SuppNo, + PbillNo = query.billNo, + ItemId = blDetail.Bld012, + Unit = blDetail.Bld009, + DepotId = (int)stockBarcode.DepotsId, + LineK3id = workOrderDetail.Erpid, + EbelnK3id = workOrderDetail.Eid + }).IgnoreColumns(true).ExecuteCommand(); + + // 鎻掑叆涓氬姟浜ゆ槗璁板綍 + db.Insertable(new MesInvBusiness2 + { + Guid = Guid.NewGuid(), + Status = 1, + BillTypeId = 200, // p_bill_type_id + TransactionCode = "210", // p_transaction_no + BusinessType = 1, + ItemBarcode = newBarcode, + ItemNo = stockBarcode.ItemNo, + LotNo = stockBarcode.LotNo, + EpFlag = true, + Quantity = query.Num, + FromInvDepotsCode = stockBarcode.DepotsCode, + FromInvDepotSectionsCode = stockBarcode.DepotSectionsCode, + CreateBy = query.userName, + CreateDate = DateTime.Now, + LastupdateBy = query.userName, + LastupdateDate = DateTime.Now, + Factory = stockBarcode.Factory, + Company = stockBarcode.Company, + TaskNo = mesItemBl.Bl012, // Matches C_QTCK.Bl012 + BillNo = query.blNo, + WorkNo = blDetail.Bld001, // Matches C_QTCK_D.Bld001 + WorkLine = blDetail.Bld013, // Matches C_QTCK_D.Bld013 + SuppNo = stockBarcode.SuppNo, + ItemId = stockBarcode.ItemId + }).IgnoreColumns(true).ExecuteCommand(); + + // 鏇存柊宸ュ崟琛ㄦ暟閲� + db.Updateable<Womdab>() + .SetColumns(it => new Womdab + { + Dab020 = (it.Dab020 ?? 0) + stockBarcode.Quantity, + Dab023 = (it.Dab023 ?? 0) + stockBarcode.Quantity + }) + .Where(it => it.Id == workOrderDetail.Id) + .ExecuteCommand(); + + // 鏇存柊鍙戣揣閫氱煡鍗曟槑缁嗗凡琛ユ暟閲� + db.Updateable<MesItemBlDetail>() + .SetColumns(it => new MesItemBlDetail + { + Bld008 = (it.Bld008 ?? 0) + (int)stockBarcode.Quantity + }) + .Where(it => it.Id == blDetail.Id) + .ExecuteCommand(); + + // 妫�鏌ュ彂璐ч�氱煡鍗曟槑缁嗘槸鍚﹀畬鎴� + var blDetail1 = db.Queryable<MesItemBlDetail>() + .Where(it => it.Id == blDetail.Id) + .First(); + + if ((blDetail1.Bld007 ?? 0) <= (blDetail1.Bld008 ?? 0)) + // 鏇存柊鏄庣粏瀹屾垚鐘舵�� + db.Updateable<MesItemBlDetail>() + .SetColumns(it => it.Bld011 == 1) + .Where(it => it.Id == blDetail1.Id) + .ExecuteCommand(); + + // 妫�鏌ユ槸鍚︽墍鏈夋槑缁嗛兘宸插畬鎴� + var hasUnfinished = db.Queryable<MesItemBlDetail>() + .Where(it => it.Mid == mesItemBl.Id && (it.Bld011 ?? 0) == 0) + .Any(); + + // 濡傛灉鎵�鏈夋槑缁嗗畬鎴�,鏇存柊鍙戣揣閫氱煡鍗曠姸鎬佷负宸插畬鎴� + if (!hasUnfinished) + db.Updateable<MesItemBl>() + .SetColumns(it => it.Bl019 == true) + .Where(it => it.Id == mesItemBl.Id) + .ExecuteCommand(); + + return 1; + }); + + + // 鑾峰彇鏈�缁堢殑寰呭鐞嗗垪琛� + // 鑾峰彇鍙戣揣閫氱煡鍗曟槑缁嗕腑鏈畬鎴愮殑璁板綍 + // 閫氳繃宸﹁繛鎺ユ煡璇㈠彂璐ч�氱煡鍗�(MesItemBl)鍜屽彂璐ч�氱煡鍗曟槑缁�(MesItemBlDetail)琛� + // 鏉′欢: 1.鍙戣揣閫氱煡鍗曞彿鍖归厤 2.璁″垝鏁伴噺(Bld007)鍑忓幓宸茶ˉ鏁伴噺(Bld008)澶т簬0(鍗虫湭瀹屾垚鐨�) + var pendingList = Db.Queryable<MesItemBl, MesItemBlDetail>((a, b) => + new JoinQueryInfos(JoinType.Left, a.Id == b.Mid)) + .Where((a, b) => a.BlNo == query.blNo + && (b.Bld007 ?? 0) - (b.Bld008 ?? 0) > 0) + .Select((a, b) => new MesItemBlDetail + { + Bld012 = b.Bld012, // 鐗╂枡ID + Bld002 = b.Bld002, // 鐗╂枡缂栧彿 + Bld003 = b.Bld003, // 鐗╂枡鍚嶇О + Bld004 = b.Bld004, // 鐗╂枡瑙勬牸 + Bld007 = b.Bld007, // 璁″垝鏁伴噺 + Bld008 = b.Bld008 // 宸茶ˉ鏁伴噺 + }) + .ToList(); + + return (true, pendingList); + } + + #endregion +} \ No newline at end of file diff --git a/service/Warehouse/TransferOutManager.cs b/service/Warehouse/TransferOutManager.cs index 5c3a896..3c7f231 100644 --- a/service/Warehouse/TransferOutManager.cs +++ b/service/Warehouse/TransferOutManager.cs @@ -52,7 +52,7 @@ /// </summary> /// <param name="query">鏌ヨ鍙傛暟,鍖呭惈鍗曟嵁鍙�</param> /// <returns>寰呭鐞嗙殑璋冩嫧鍑哄簱鏄庣粏鍒楄〃</returns> - public List<TransferOutDetailModel> GetTransferOutDetailListByBillNo( + public List<ItemDetailModel> GetTransferOutDetailListByBillNo( WarehouseQuery query) { var p_bill_no = query.billNo; @@ -69,7 +69,7 @@ && a.FBillNo == p_bill_no // 鍖归厤鍗曟嵁鍙� && a.FApproveStatus == 1) // 鍗曟嵁宸插鏍� .OrderBy((b, a, s) => s.ItemNo) - .Select((b, a, s) => new TransferOutDetailModel + .Select((b, a, s) => new ItemDetailModel { ItemNo = s.ItemNo, ItemName = s.ItemName, @@ -89,7 +89,7 @@ return result; } - public List<TransferOutDetailModel> GetDBCKDetal( + public List<ItemDetailModel> GetDBCKDetal( WarehouseQuery query) { var p_bill_no = query.billNo; @@ -106,7 +106,7 @@ && a.FBillNo == p_bill_no // 鍖归厤鍗曟嵁鍙� && a.FApproveStatus == 1) // 鍗曟嵁宸插鏍� .OrderBy((b, a, s) => s.ItemNo) - .Select((b, a, s) => new TransferOutDetailModel + .Select((b, a, s) => new ItemDetailModel { ItemNo = s.ItemNo, ItemName = s.ItemName, @@ -128,7 +128,7 @@ /// </summary> /// <param name="query">鍖呭惈鍗曟嵁鍙枫�佺敤鎴峰悕鍜屾潯鐮佷俊鎭殑鏌ヨ鍙傛暟</param> /// <returns>澶勭悊鍚庣殑琛ㄥ崟鍜屽緟澶勭悊鏄庣粏鍒楄〃</returns> - public (WarehouseQuery form, List<TransferOutDetailModel> items) + public (WarehouseQuery form, List<ItemDetailModel> items) ScanMoveBarcode(WarehouseQuery query) { var p_bill_no = query.billNo; @@ -217,7 +217,7 @@ /// </summary> /// <param name="query">鍖呭惈鍗曟嵁鍙枫�佺敤鎴峰悕鍜屾潯鐮佷俊鎭殑鏌ヨ鍙傛暟</param> /// <returns>澶勭悊鍚庣殑琛ㄥ崟鍜屽緟澶勭悊鏄庣粏鍒楄〃</returns> - public (WarehouseQuery form, List<TransferOutDetailModel> items) + public (WarehouseQuery form, List<ItemDetailModel> items) ScanReceiveBarcode(WarehouseQuery query) { var p_bill_no = query.billNo; -- Gitblit v1.9.3