From 614d32ed2d62ab55f3a3b78bb6769df931a85bcd Mon Sep 17 00:00:00 2001
From: 啊鑫 <t2856754968@163.com>
Date: 星期六, 28 十二月 2024 13:38:11 +0800
Subject: [PATCH] 其他出库和其他入库的后台
---
entity/MesInvItemOutItems.cs | 6
service/Warehouse/MesItemBlManager.cs | 15
service/Warehouse/MesItemQtManager.cs | 922 ++++++++++++++++++++++++++++++++++
entity/MesItemQtDatall.cs | 104 +++
Controllers/Warehouse/MesItemQtController.cs | 207 +++++++
Controllers/Warehouse/MesItemQtrkController.cs | 54 -
service/Warehouse/MesItemQtrkManager.cs | 66 --
entity/MesInvItemOutCDetails.cs | 50
entity/MesItemQt.cs | 149 +++++
9 files changed, 1,457 insertions(+), 116 deletions(-)
diff --git a/Controllers/Warehouse/MesItemQtController.cs b/Controllers/Warehouse/MesItemQtController.cs
new file mode 100644
index 0000000..a3ab253
--- /dev/null
+++ b/Controllers/Warehouse/MesItemQtController.cs
@@ -0,0 +1,207 @@
+锘縰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 MesItemQtController : ControllerBase
+{
+ private readonly MesItemQtManager _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>
+ /// 鑾峰彇鐘舵�佷负宸插鏍�(Qt015=true)涓旀湭瀹岀粨(Qt014=false)鐨勯��鏂欏崟鍙峰垪琛�
+ /// </remarks>
+ /// <response code="200">鎴愬姛鑾峰彇閫�鏂欏崟鍙峰垪琛�</response>
+ /// <response code="400">鑾峰彇澶辫触</response>
+ [HttpPost("GetPendingQtList")]
+ public ResponseResult GetPendingQtList()
+ {
+ try
+ {
+ dynamic resultInfos = new ExpandoObject();
+ resultInfos.tbBillList = _manager.GetPendingQtList();
+ 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/MesItemQt/GetPendingQtList
+ /// {
+ /// "userName": "admin", // 鐢ㄦ埛鍚�(蹇呭~)
+ /// "billNo": "QT20240101001" // 閫�鏂欏崟鍙�(蹇呭~)
+ /// }
+ ///
+ /// 杩斿洖鏈畬鎴愮殑鏄庣粏璁板綍(Qd007-Qd008>0)
+ /// </remarks>
+ /// <response code="200">鎴愬姛鑾峰彇閫�鏂欏崟鏄庣粏</response>
+ /// <response code="400">鑾峰彇澶辫触锛岃繑鍥炲叿浣撻敊璇俊鎭�</response>
+ [HttpPost("GetPendingQtDetailList")]
+ public ResponseResult GetPendingQtDetailList([FromBody] WarehouseQuery query)
+ {
+ try
+ {
+ dynamic resultInfos = new ExpandoObject();
+ resultInfos.tbBillList = _manager.GetPendingQtList(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/MesItemQt/OutScanBarcode
+ /// {
+ /// "billNo": "QT20240101001", // 閫�鏂欏崟鍙�(蹇呭~)
+ /// "barcode": "BC001", // 鏉$爜鍙�(蹇呭~)
+ /// "userName": "admin" // 鐢ㄦ埛鍚�(蹇呭~)
+ /// }
+ ///
+ /// 杩斿洖鏁版嵁鍖呭惈:
+ /// - form: 澶勭悊缁撴灉琛ㄥ崟
+ /// - item: 寰呭鐞嗘槑缁嗗垪琛�
+ /// - message: 澶勭悊缁撴灉娑堟伅
+ /// </remarks>
+ /// <response code="200">鎵弿鎴愬姛</response>
+ /// <response code="400">鎵弿澶辫触锛岃繑鍥炲叿浣撻敊璇俊鎭�</response>
+ [HttpPost("OutScanBarcode")]
+ public ResponseResult OutScanBarcode([FromBody] WarehouseQuery query)
+ {
+ try
+ {
+ dynamic resultInfos = new ExpandoObject();
+ var (form, items, message) = _manager.OutScanBarcode(query);
+ resultInfos.form = form;
+ resultInfos.items = items;
+ resultInfos.message = message;
+ 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/MesItemQt/PrintQtckBarcode
+ /// {
+ /// "userName": "admin", // 鐢ㄦ埛鍚�(蹇呭~)
+ /// "billNo": "QT20240101001", // 閫�鏂欏崟鍙�(蹇呭~)
+ /// "barcode": "BC001", // 鏉$爜鍙�(蹇呭~)
+ /// "Fum": 10 // 鍙戞枡鏁伴噺(蹇呭~,蹇呴』澶т簬0)
+ /// }
+ ///
+ /// 杩斿洖鏁版嵁鍖呭惈:
+ /// - form: 澶勭悊缁撴灉琛ㄥ崟
+ /// - item: 寰呭鐞嗘槑缁嗗垪琛�
+ /// - message: 澶勭悊缁撴灉娑堟伅
+ /// </remarks>
+ /// <response code="200">鎵撳嵃鎴愬姛</response>
+ /// <response code="400">鎵撳嵃澶辫触锛岃繑鍥炲叿浣撻敊璇俊鎭�</response>
+ [HttpPost("PrintQtckBarcode")]
+ public ResponseResult PrintQtckBarcode([FromBody] WarehouseQuery query)
+ {
+ try
+ {
+ dynamic resultInfos = new ExpandoObject();
+ var (form, items, message) = _manager.PrintQtckBarcode(query);
+ resultInfos.form = form;
+ resultInfos.items = items;
+ resultInfos.message = message;
+ return new ResponseResult
+ {
+ status = 0,
+ message = "OK",
+ data = resultInfos
+ };
+ }
+ catch (Exception ex)
+ {
+ return ResponseResult.ResponseError(ex);
+ }
+ }
+
+ #endregion
+}
\ No newline at end of file
diff --git a/Controllers/Warehouse/MesItemQtrkController.cs b/Controllers/Warehouse/MesItemQtrkController.cs
index d60c3bb..7c773f3 100644
--- a/Controllers/Warehouse/MesItemQtrkController.cs
+++ b/Controllers/Warehouse/MesItemQtrkController.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")]
@@ -42,7 +42,7 @@
}
/// <summary>
- /// 鏍规嵁涓婚敭鑾峰彇
+ /// 鏍规嵁涓婚敭鑾峰彇
/// </summary>
/// <returns>鍏朵粬鍏ュ簱鍗曚俊鎭�</returns>
[HttpPost("GetById")]
@@ -70,11 +70,11 @@
#region 鍏朵粬鍏ュ簱涓氬姟
/// <summary>
- /// 鑾峰彇鍏朵粬鍏ュ簱鍗曞彿鍒楄〃
+ /// 鑾峰彇鍏朵粬鍏ュ簱鍗曞彿鍒楄〃
/// </summary>
/// <returns>鍏朵粬鍏ュ簱鍗曞彿鍒楄〃</returns>
/// <remarks>
- /// 鑾峰彇鐘舵�佷负宸插鏍�(Qt015=1)涓旀湭瀹岀粨(Qt014=0)鐨勫叾浠栧叆搴撳崟鍙峰垪琛�
+ /// 鑾峰彇鐘舵�佷负宸插鏍�(Qt015=1)涓旀湭瀹岀粨(Qt014=0)鐨勫叾浠栧叆搴撳崟鍙峰垪琛�
/// </remarks>
/// <response code="200">鎴愬姛鑾峰彇鍏ュ簱鍗曞彿鍒楄〃</response>
/// <response code="400">鑾峰彇澶辫触</response>
@@ -99,19 +99,17 @@
}
/// <summary>
- /// 鑾峰彇鍏朵粬鍏ュ簱鍗曟槑缁嗗垪琛�
+ /// 鑾峰彇鍏朵粬鍏ュ簱鍗曟槑缁嗗垪琛�
/// </summary>
/// <param name="query">鏌ヨ鍙傛暟锛屽繀椤诲寘鍚玝illNo(鍏ュ簱鍗曞彿)</param>
/// <returns>鍏ュ簱鍗曟槑缁嗗垪琛�</returns>
/// <remarks>
- /// 璇锋眰绀轰緥:
- ///
+ /// 璇锋眰绀轰緥:
/// POST /api/MesItemQtrk/GetQtckDetailList
/// {
- /// "billNo": "QT202401010001"
+ /// "billNo": "QT202401010001"
/// }
- ///
- /// 杩斿洖鏈畬鎴愬叆搴撶殑鏄庣粏璁板綍(Qd007-Qd008>0)
+ /// 杩斿洖鏈畬鎴愬叆搴撶殑鏄庣粏璁板綍(Qd007-Qd008>0)
/// </remarks>
/// <response code="200">鎴愬姛鑾峰彇鍏ュ簱鍗曟槑缁�</response>
/// <response code="400">鑾峰彇澶辫触锛岃繑鍥炲叿浣撻敊璇俊鎭�</response>
@@ -136,20 +134,18 @@
}
/// <summary>
- /// 鎵弿搴撲綅
+ /// 鎵弿搴撲綅
/// </summary>
/// <param name="query">鏌ヨ鍙傛暟</param>
/// <returns>搴撲綅淇℃伅</returns>
/// <remarks>
- /// 璇锋眰绀轰緥:
- ///
+ /// 璇锋眰绀轰緥:
/// POST /api/MesItemQtrk/ScanInDepotsQT
/// {
- /// "sectionCode": "A01-01-01",
- /// "billNo": "QT202401010001"
+ /// "sectionCode": "A01-01-01",
+ /// "billNo": "QT202401010001"
/// }
- ///
- /// 楠岃瘉搴撲綅鏄惁灞炰簬鐢宠鍗曟寚瀹氱殑浠撳簱
+ /// 楠岃瘉搴撲綅鏄惁灞炰簬鐢宠鍗曟寚瀹氱殑浠撳簱
/// </remarks>
/// <response code="200">鎵弿鎴愬姛</response>
/// <response code="400">鎵弿澶辫触锛岃繑鍥炲叿浣撻敊璇俊鎭�</response>
@@ -174,25 +170,23 @@
}
/// <summary>
- /// 鎵弿鏉$爜鍏ュ簱
+ /// 鎵弿鏉$爜鍏ュ簱
/// </summary>
/// <param name="query">鏌ヨ鍙傛暟</param>
/// <returns>鍏ュ簱缁撴灉鍜屽緟澶勭悊鏄庣粏</returns>
/// <remarks>
- /// 璇锋眰绀轰緥:
- ///
+ /// 璇锋眰绀轰緥:
/// POST /api/MesItemQtrk/ScanInBcodeQtrk
/// {
- /// "userName": "admin",
- /// "sectionCode": "A01-01-01",
- /// "barcode": "BC001",
- /// "billNo": "QT202401010001"
+ /// "userName": "admin",
+ /// "sectionCode": "A01-01-01",
+ /// "barcode": "BC001",
+ /// "billNo": "QT202401010001"
/// }
- ///
- /// - 楠岃瘉鏉$爜鏄惁宸插叆搴�
- /// - 楠岃瘉鏉$爜鏄惁涓哄叾浠栧叆搴撴潯鐮�
- /// - 楠岃瘉鍏ュ簱鏁伴噺鏄惁瓒呰繃鐢宠鏁伴噺
- /// - 鎵ц鍏ュ簱浜嬪姟澶勭悊
+ /// - 楠岃瘉鏉$爜鏄惁宸插叆搴�
+ /// - 楠岃瘉鏉$爜鏄惁涓哄叾浠栧叆搴撴潯鐮�
+ /// - 楠岃瘉鍏ュ簱鏁伴噺鏄惁瓒呰繃鐢宠鏁伴噺
+ /// - 鎵ц鍏ュ簱浜嬪姟澶勭悊
/// </remarks>
/// <response code="200">鎵弿鎴愬姛</response>
/// <response code="400">鎵弿澶辫触锛岃繑鍥炲叿浣撻敊璇俊鎭�</response>
diff --git a/entity/MesInvItemOutCDetails.cs b/entity/MesInvItemOutCDetails.cs
index e3e4e4d..12c801d 100644
--- a/entity/MesInvItemOutCDetails.cs
+++ b/entity/MesInvItemOutCDetails.cs
@@ -24,25 +24,25 @@
/// 鐗╂枡鏉$爜
/// </summary>
[SugarColumn(ColumnName = "ITEM_BARCODE")]
- public string ItemBarcode { get; set; }
+ public string? ItemBarcode { get; set; }
/// <summary>
/// 瀹㈡埛鐗╂枡缂栫爜锛堟棤鏉$爜鎵嬪伐褰曞叆锛屾湁鏉$爜涓哄啑浣欏瓧娈碉級
/// </summary>
[SugarColumn(ColumnName = "C_ITEM_CODE")]
- public string CItemCode { get; set; }
+ public string? CItemCode { get; set; }
/// <summary>
/// 鏈徃鐗╂枡缂栫爜锛堟棤鏉$爜鎵嬪伐褰曞叆锛屾湁鏉$爜涓哄啑浣欏瓧娈碉級
/// </summary>
[SugarColumn(ColumnName = "ITEM_NO")]
- public string ItemNo { get; set; }
+ public string? ItemNo { get; set; }
/// <summary>
/// 鍘傚鎵规
/// </summary>
[SugarColumn(ColumnName = "LOT_NO")]
- public string LotNo { get; set; }
+ public string? LotNo { get; set; }
/// <summary>
/// 鏁伴噺锛堟棤鏉$爜鎵嬪伐褰曞叆锛屾湁鏉$爜涓哄啑浣欏瓧娈碉級
@@ -61,7 +61,7 @@
/// 鍒涘缓浜�
/// </summary>
[SugarColumn(ColumnName = "CREATE_BY")]
- public string CreateBy { get; set; }
+ public string? CreateBy { get; set; }
/// <summary>
/// 鍒涘缓鏃堕棿
@@ -73,7 +73,7 @@
/// 鏈�鍚庢洿鏂颁汉
/// </summary>
[SugarColumn(ColumnName = "LASTUPDATE_BY")]
- public string LastupdateBy { get; set; }
+ public string? LastupdateBy { get; set; }
/// <summary>
/// 鏈�鍚庢洿鏂版椂闂�
@@ -85,25 +85,25 @@
/// 瀹㈡埛缂栫爜
/// </summary>
[SugarColumn(ColumnName = "CUST_NO")]
- public string CustNo { get; set; }
+ public string? CustNo { get; set; }
/// <summary>
/// 浠撳簱缂栫爜
/// </summary>
[SugarColumn(ColumnName = "DEPOT_CODE")]
- public string DepotCode { get; set; }
+ public string? DepotCode { get; set; }
/// <summary>
/// 璐т綅缂栫爜
/// </summary>
[SugarColumn(ColumnName = "DEPOT_SECTION_CODE")]
- public string DepotSectionCode { get; set; }
+ public string? DepotSectionCode { get; set; }
/// <summary>
/// 澶囨敞
/// </summary>
[SugarColumn(ColumnName = "REMARK")]
- public string Remark { get; set; }
+ public string? Remark { get; set; }
/// <summary>
/// 鍏嶆鏍囪瘑(0-鍚︼紝1-鏄�)
@@ -115,7 +115,7 @@
/// 鎶曟枡鎵规
/// </summary>
[SugarColumn(ColumnName = "PRD_LOT_NO")]
- public string PrdLotNo { get; set; }
+ public string? PrdLotNo { get; set; }
/// <summary>
/// 鏄惁鍋氭帴鏀舵鏌�
@@ -128,55 +128,55 @@
/// 宸ュ巶缂栧彿
/// </summary>
[SugarColumn(ColumnName = "FACTORY")]
- public string Factory { get; set; }
+ public string? Factory { get; set; }
/// <summary>
/// 鍏徃缂栧彿
/// </summary>
[SugarColumn(ColumnName = "COMPANY")]
- public string Company { get; set; }
+ public string? Company { get; set; }
/// <summary>
/// 鍘熺敓浜у伐鍗�
/// </summary>
[SugarColumn(ColumnName = "TASK_NOY")]
- public string TaskNoy { get; set; }
+ public string? TaskNoy { get; set; }
/// <summary>
/// 绠卞彿
/// </summary>
[SugarColumn(ColumnName = "BOX_NO")]
- public string BoxNo { get; set; }
+ public string? BoxNo { get; set; }
/// <summary>
/// 鍖呰鎵规
/// </summary>
[SugarColumn(ColumnName = "TASK_PACK")]
- public string TaskPack { get; set; }
+ public string? TaskPack { get; set; }
/// <summary>
/// 鍗℃澘
/// </summary>
[SugarColumn(ColumnName = "KB_NO")]
- public string KbNo { get; set; }
+ public string? KbNo { get; set; }
/// <summary>
/// 鏉垮瀷
/// </summary>
[SugarColumn(ColumnName = "BOARD_STYLE")]
- public string BoardStyle { get; set; }
+ public string? BoardStyle { get; set; }
/// <summary>
/// 鐢熶骇宸ュ崟
/// </summary>
[SugarColumn(ColumnName = "TASK_NO")]
- public string TaskNo { get; set; }
+ public string? TaskNo { get; set; }
/// <summary>
/// 宸ュ崟鍙�
/// </summary>
[SugarColumn(ColumnName = "WORK_NO")]
- public string WorkNo { get; set; }
+ public string? WorkNo { get; set; }
/// <summary>
/// 宸ヤ綔绾�
@@ -188,13 +188,13 @@
/// 渚涘簲鍟嗙紪鍙�
/// </summary>
[SugarColumn(ColumnName = "SUPP_NO")]
- public string SuppNo { get; set; }
+ public string? SuppNo { get; set; }
/// <summary>
/// 閲囪喘鍗曞彿
/// </summary>
[SugarColumn(ColumnName = "PBILL_NO")]
- public string PbillNo { get; set; }
+ public string? PbillNo { get; set; }
/// <summary>
/// 鏀跺埌鏁伴噺
@@ -213,19 +213,19 @@
/// 鏀惰揣浜�
/// </summary>
[SugarColumn(ColumnName = "RCV_BY")]
- public string RcvBy { get; set; }
+ public string? RcvBy { get; set; }
/// <summary>
/// 鏀惰揣閮ㄥ垎
/// </summary>
[SugarColumn(ColumnName = "RCV_PART")]
- public string RcvPart { get; set; }
+ public string? RcvPart { get; set; }
/// <summary>
/// 鍏ュ簱缂栧彿
/// </summary>
[SugarColumn(ColumnName = "RK_NO")]
- public string RkNo { get; set; }
+ public string? RkNo { get; set; }
/// <summary>
/// 閲囪喘璁㈠崟ID
diff --git a/entity/MesInvItemOutItems.cs b/entity/MesInvItemOutItems.cs
index 0756b27..db2bd0a 100644
--- a/entity/MesInvItemOutItems.cs
+++ b/entity/MesInvItemOutItems.cs
@@ -229,6 +229,12 @@
[SugarColumn(ColumnName = "about_Guid")]
public Guid? AboutGuid { get; set; }
+ /// <summary>
+ /// 鍑哄簱鏄庣粏ID
+ /// </summary>
+ [SugarColumn(ColumnName = "qt_out_id")]
+ public Guid? QtOutId { get; set; }
+
[SugarColumn(IsIgnore = true)] public string? ItemName { get; set; }
[SugarColumn(IsIgnore = true)] public string? ItemModel { get; set; }
diff --git a/entity/MesItemQt.cs b/entity/MesItemQt.cs
new file mode 100644
index 0000000..2548f32
--- /dev/null
+++ b/entity/MesItemQt.cs
@@ -0,0 +1,149 @@
+锘縰sing SqlSugar;
+
+namespace NewPdaSqlServer.entity;
+
+/// <summary>
+/// </summary>
+[SugarTable("MES_ITEM_QT")]
+public class MesItemQt
+{
+ /// <summary>
+ /// 榛樿鍊�: (newid())
+ /// </summary>
+ [SugarColumn(ColumnName = "guid", IsPrimaryKey = true)]
+ public Guid Guid { get; set; }
+
+ /// <summary>
+ /// 鐢宠鍗曞彿
+ /// </summary>
+ [SugarColumn(ColumnName = "qtck")]
+ public string? Qtck { get; set; }
+
+ /// <summary>
+ /// 鐢宠鏃ユ湡
+ /// </summary>
+ [SugarColumn(ColumnName = "qt001")]
+ public DateTime? Qt001 { get; set; }
+
+ /// <summary>
+ /// 瀹℃牳鏃ユ湡
+ /// </summary>
+ [SugarColumn(ColumnName = "qt002")]
+ public DateTime? Qt002 { get; set; }
+
+ /// <summary>
+ /// 鍑哄簱绫诲埆
+ /// </summary>
+ [SugarColumn(ColumnName = "qt003")]
+ public string? Qt003 { get; set; }
+
+ /// <summary>
+ /// 涓氬姟绫诲瀷
+ /// </summary>
+ [SugarColumn(ColumnName = "qt004")]
+ public string? Qt004 { get; set; }
+
+ /// <summary>
+ /// 鍒跺崟浜�
+ /// </summary>
+ [SugarColumn(ColumnName = "qt005")]
+ public string? Qt005 { get; set; }
+
+ /// <summary>
+ /// 鐢熶骇宸ュ崟
+ /// </summary>
+ [SugarColumn(ColumnName = "qt006")]
+ public string? Qt006 { get; set; }
+
+ /// <summary>
+ /// 鍙戞枡浠撳簱id
+ /// </summary>
+ [SugarColumn(ColumnName = "qt008")]
+ public string? Qt008 { get; set; }
+
+ /// <summary>
+ /// 鐢宠閮ㄩ棬id
+ /// </summary>
+ [SugarColumn(ColumnName = "qt009")]
+ public string? Qt009 { get; set; }
+
+ /// <summary>
+ /// 鍑哄簱鍘熷洜
+ /// </summary>
+ [SugarColumn(ColumnName = "qt010")]
+ public string? Qt010 { get; set; }
+
+ /// <summary>
+ /// 浠撳簱缂栫爜
+ /// </summary>
+ [SugarColumn(ColumnName = "qt011")]
+ public string? Qt011 { get; set; }
+
+ /// <summary>
+ /// 閮ㄩ棬缂栫爜
+ /// </summary>
+ [SugarColumn(ColumnName = "qt012")]
+ public string? Qt012 { get; set; }
+
+ /// <summary>
+ /// 鏁伴噺
+ /// </summary>
+ [SugarColumn(ColumnName = "qt013")]
+ public int? Qt013 { get; set; }
+
+ /// <summary>
+ /// 瀹岀粨鏍囪瘑
+ /// 榛樿鍊�: ((0))
+ /// </summary>
+ [SugarColumn(ColumnName = "qt014")]
+ public bool? Qt014 { get; set; }
+
+ /// <summary>
+ /// 瀹℃牳鐘舵��
+ /// 榛樿鍊�: ((0))
+ /// </summary>
+ [SugarColumn(ColumnName = "qt015")]
+ public bool? Qt015 { get; set; }
+
+ /// <summary>
+ /// 瀹℃牳浜�
+ /// </summary>
+ [SugarColumn(ColumnName = "qt016")]
+ public string? Qt016 { get; set; }
+
+ /// <summary>
+ /// 浠诲姟鍗曞彿
+ /// </summary>
+ [SugarColumn(ColumnName = "qt017")]
+ public string? Qt017 { get; set; }
+
+ /// <summary>
+ /// 瀹㈡埛
+ /// </summary>
+ [SugarColumn(ColumnName = "qt018")]
+ public string? Qt018 { get; set; }
+
+ /// <summary>
+ /// 鍑哄簱绫诲瀷 1鐩樹簭 2鍖呮潗棰嗙敤 3鐮斿彂棰嗙敤 4鍔炲叕鐢ㄥ搧棰嗙敤 5妯″叿鏉愭枡棰嗙敤 6浣庡�兼槗鑰楀搧棰嗙敤 7鐢熶骇閰嶄欢 8閲囪喘閫�鏂� 9娉ㄥ浠朵笉鑹��鏂�
+ /// </summary>
+ [SugarColumn(ColumnName = "qt019")]
+ public string? Qt019 { get; set; }
+
+ /// <summary>
+ /// 鍑哄簱鏂瑰悜锛堟櫘閫氾紝閫�璐э級
+ /// </summary>
+ [SugarColumn(ColumnName = "qt020")]
+ public string? Qt020 { get; set; }
+
+ /// <summary>
+ /// 閿�鍞鍗曞彿
+ /// </summary>
+ [SugarColumn(ColumnName = "qt021")]
+ public string? Qt021 { get; set; }
+
+ /// <summary>
+ /// 棰嗘枡浜�
+ /// </summary>
+ [SugarColumn(ColumnName = "qt022")]
+ public string? Qt022 { get; set; }
+}
\ No newline at end of file
diff --git a/entity/MesItemQtDatall.cs b/entity/MesItemQtDatall.cs
new file mode 100644
index 0000000..f69e23d
--- /dev/null
+++ b/entity/MesItemQtDatall.cs
@@ -0,0 +1,104 @@
+锘縰sing SqlSugar;
+
+namespace NewPdaSqlServer.entity;
+
+/// <summary>
+/// </summary>
+[SugarTable("MES_ITEM_QT_DATALL")]
+public class MesItemQtDatall
+{
+ /// <summary>
+ /// 榛樿鍊�: (newid())
+ /// </summary>
+ [SugarColumn(ColumnName = "guid", IsPrimaryKey = true)]
+ public Guid Guid { get; set; }
+
+ /// <summary>
+ /// 涓昏〃guid
+ /// </summary>
+ [SugarColumn(ColumnName = "qtGuid")]
+ public Guid? QtGuid { get; set; }
+
+ /// <summary>
+ /// 宸ュ崟鍙�
+ /// </summary>
+ [SugarColumn(ColumnName = "qd001")]
+ public string? Qd001 { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡缂栧彿
+ /// </summary>
+ [SugarColumn(ColumnName = "qd002")]
+ public string? Qd002 { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡鍚嶇О
+ /// </summary>
+ [SugarColumn(ColumnName = "qd003")]
+ public string? Qd003 { get; set; }
+
+ /// <summary>
+ /// 瑙勬牸鍨嬪彿
+ /// </summary>
+ [SugarColumn(ColumnName = "qd004")]
+ public string? Qd004 { get; set; }
+
+ /// <summary>
+ /// 棰滆壊
+ /// </summary>
+ [SugarColumn(ColumnName = "qd005")]
+ public string? Qd005 { get; set; }
+
+ /// <summary>
+ /// 璁″垝鏁伴噺
+ /// </summary>
+ [SugarColumn(ColumnName = "qd006")]
+ public int? Qd006 { get; set; }
+
+ /// <summary>
+ /// 鐢宠鏁伴噺
+ /// </summary>
+ [SugarColumn(ColumnName = "qd007")]
+ public int? Qd007 { get; set; }
+
+ /// <summary>
+ /// 宸查鏁伴噺
+ /// </summary>
+ [SugarColumn(ColumnName = "qd008")]
+ public int? Qd008 { get; set; }
+
+ /// <summary>
+ /// 鍗曚綅
+ /// </summary>
+ [SugarColumn(ColumnName = "qd009")]
+ public string? Qd009 { get; set; }
+
+ /// <summary>
+ /// 澶囨敞
+ /// </summary>
+ [SugarColumn(ColumnName = "qd010")]
+ public string? Qd010 { get; set; }
+
+ /// <summary>
+ /// 瀹岀粨鏍囪瘑
+ /// </summary>
+ [SugarColumn(ColumnName = "qd011")]
+ public int? Qd011 { get; set; }
+
+ /// <summary>
+ /// </summary>
+ [SugarColumn(ColumnName = "itemId")]
+ public string? ItemId { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡缂栫爜 = ERP鐗╂枡缂栧彿||棰滆壊缂栧彿
+ /// </summary>
+ [SugarColumn(IsIgnore = true)]
+ public string? ItemNo { get; set; }
+
+ /// <summary>
+ /// 浠撳簱缂栫爜
+ /// </summary>
+ [SugarColumn(IsIgnore = true)]
+ public string? Qt011 { get; set; }
+}
\ No newline at end of file
diff --git a/service/Warehouse/MesItemBlManager.cs b/service/Warehouse/MesItemBlManager.cs
index 2d70ca7..7181715 100644
--- a/service/Warehouse/MesItemBlManager.cs
+++ b/service/Warehouse/MesItemBlManager.cs
@@ -1692,18 +1692,21 @@
// 鑾峰彇鏈�缁堢殑寰呭鐞嗗垪琛�
+ // 鑾峰彇琛ユ枡鍗曟槑缁嗕腑鏈畬鎴愮殑璁板綍
+ // 閫氳繃宸﹁繛鎺ユ煡璇㈣ˉ鏂欏崟(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,
- Bld002 = b.Bld002,
- Bld003 = b.Bld003,
- Bld004 = b.Bld004,
- Bld007 = b.Bld007,
- Bld008 = b.Bld008
+ Bld012 = b.Bld012, // 鐗╂枡ID
+ Bld002 = b.Bld002, // 鐗╂枡缂栧彿
+ Bld003 = b.Bld003, // 鐗╂枡鍚嶇О
+ Bld004 = b.Bld004, // 鐗╂枡瑙勬牸
+ Bld007 = b.Bld007, // 璁″垝鏁伴噺
+ Bld008 = b.Bld008 // 宸茶ˉ鏁伴噺
})
.ToList();
diff --git a/service/Warehouse/MesItemQtManager.cs b/service/Warehouse/MesItemQtManager.cs
new file mode 100644
index 0000000..01ce4e1
--- /dev/null
+++ b/service/Warehouse/MesItemQtManager.cs
@@ -0,0 +1,922 @@
+锘縰sing NewPdaSqlServer.DB;
+using NewPdaSqlServer.Dto.service;
+using NewPdaSqlServer.entity;
+using NewPdaSqlServer.util;
+using SqlSugar;
+
+namespace NewPdaSqlServer.service.Warehouse;
+
+public class MesItemQtManager : Repository<MesItemQt>
+{
+ //褰撳墠绫诲凡缁忕户鎵夸簡 Repository 澧炪�佸垹銆佹煡銆佹敼鐨勬柟娉�
+ /// <summary>
+ /// 鑾峰彇鏈畬鎴愮殑閫�鏂欏崟鍙峰垪琛�
+ /// </summary>
+ /// <returns>閫�鏂欏崟鍙峰垪琛�</returns>
+ public List<string> GetPendingQtList()
+ {
+ return Db.Queryable<MesItemQt>()
+ .Where(it =>
+ (it.Qt015 ?? false) == true && (it.Qt014 ?? false) == false)
+ .OrderByDescending(it => it.Qtck)
+ .Select(it => it.Qtck)
+ .ToList();
+ }
+
+ /// <summary>
+ /// 鑾峰彇寰呭鐞嗙殑閫�鏂欏崟鏄庣粏鍒楄〃
+ /// </summary>
+ /// <param name="query">浠撳簱鏌ヨ鍙傛暟锛屽寘鍚敤鎴峰悕鍜屽崟鎹彿</param>
+ /// <returns>寰呭鐞嗙殑閫�鏂欏崟鏄庣粏鍒楄〃</returns>
+ public List<MesItemQtDatall> GetPendingQtList(WarehouseQuery query)
+ {
+ // 浠庢煡璇㈠弬鏁颁腑鑾峰彇鐢ㄦ埛鍚嶅拰鍗曟嵁鍙�
+ var c_User = query.userName;
+ var p_bill_no = query.billNo;
+
+ // 鏍规嵁鍗曟嵁鍙锋煡璇㈤��鏂欏崟涓昏〃淇℃伅
+ var mesItemQt = Db.Queryable<MesItemQt>()
+ .Where(it => it.Qtck == p_bill_no)
+ .First();
+
+ // 濡傛灉鏈壘鍒伴��鏂欏崟锛屾姏鍑哄紓甯�
+ 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} 宸插畬缁擄紝璇风‘璁わ紒");
+ }
+
+ // 鑱旇〃鏌ヨ鑾峰彇鏈畬鎴愮殑鏄庣粏鍒楄〃
+ // 鍏宠仈琛細
+ // - MesItemQt: 閫�鏂欏崟涓昏〃(a)
+ // - MesItemQtDatall: 閫�鏂欏崟鏄庣粏琛�(b)
+ // - MesItems: 鐗╂枡鍩虹淇℃伅琛�(c)
+ var pendingList = Db.Queryable<MesItemQt, MesItemQtDatall, MesItems>(
+ (a, b, c) =>
+ new JoinQueryInfos(
+ JoinType.Left, a.Guid == b.QtGuid, // 涓昏〃鍜屾槑缁嗚〃閫氳繃Guid鍏宠仈
+ JoinType.Left,
+ b.ItemId == c.Id.ToString())) // 鏄庣粏琛ㄥ拰鐗╂枡琛ㄩ�氳繃ItemId鍏宠仈
+ .Where((a, b, c) =>
+ a.Qtck == p_bill_no && // 鍖归厤鍗曟嵁鍙�
+ (b.Qd007 ?? 0) - (b.Qd008 ?? 0) >
+ 0) // 璁″垝鏁伴噺鍑忓幓宸插畬鎴愭暟閲忓ぇ浜�0鐨勮褰�(鍗虫湭瀹屾垚鐨勮褰�)
+ .OrderBy((a, b, c) => c.ItemNo) // 鎸夌墿鏂欑紪鍙锋帓搴�
+ .Select((a, b, c) => new MesItemQtDatall
+ {
+ Qd002 = b.Qd002, // 鏄庣粏琛屽彿
+ Qt011 = a.Qt011, // 閫�鏂欏師鍥�
+ ItemNo = c.ItemNo, // 鐗╂枡缂栧彿
+ Qd007 = b.Qd007 ?? 0, // 璁″垝鏁伴噺
+ Qd008 = b.Qd008 ?? 0 // 宸插畬鎴愭暟閲�
+ })
+ .ToList();
+
+ return pendingList;
+ }
+
+ public (WarehouseQuery form, List<MesItemQtDatall> item, string message)
+ OutScanBarcode(
+ WarehouseQuery query)
+ {
+ var p_bill_no = query.billNo;
+ var p_item_barcode = query.barcode;
+ var c_user = query.userName;
+ var p_bill_type_id = 200;
+ var p_transaction_no = 202;
+
+ // 妫�鏌ュ崟鎹彿鏄惁涓虹┖
+ if (string.IsNullOrEmpty(p_bill_no))
+ {
+ throw new Exception("璇烽�夊彇鍗曟嵁鍙凤紒");
+ }
+
+ // 妫�鏌ユ槸鍚﹂噸澶嶆壂鎻�
+ var existingBarcode = Db.Queryable<MesInvItemOutCDetails>()
+ .Where(it =>
+ it.ItemBarcode == p_item_barcode && it.PbillNo == p_bill_no)
+ .Any();
+
+ if (existingBarcode)
+ {
+ throw new Exception("姝ゆ潯鐮佸凡缁忔壂鐮佸嚭搴�,鍕块噸澶嶆壂鎻忥紒");
+ }
+
+ // 鑾峰彇鏉$爜淇℃伅
+ var barcode = Db.Queryable<MesInvItemBarcodes>()
+ .Where(it => it.ItemBarcode == p_item_barcode)
+ .First();
+
+ if (barcode == null)
+ {
+ throw new Exception($"mes涓笉瀛樺湪姝ゆ潯鐮�,璇锋牳瀵癸紒{p_item_barcode}");
+ }
+
+ // 鑾峰彇搴撳瓨淇℃伅
+ var stock = Db.Queryable<MesInvItemStocks>()
+ .Where(it => it.ItemBarcode == p_item_barcode && it.Quantity > 0)
+ .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>()
+ // .Where(it => it.DepotSectionsCode == stock.DepotSectionsCode)
+ // .Any();
+ //
+ // if (isDepotSection)
+ // {
+ // throw new Exception($"鍦ㄥ瘎瀛樹粨浣嶄笅鐨勬潯鐮佷笉鍙洿鎺ユ壂鐮佸彂鏂檣p_item_barcode}");
+ // }
+
+ // 鑾峰彇鍏朵粬鍑哄簱鍗曚俊鎭�
+ var mesItemQt = Db.Queryable<MesItemQt>()
+ .Where(it => it.Qtck == p_bill_no)
+ .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>()
+ .Where(it =>
+ it.QtGuid == mesItemQt.Guid &&
+ it.ItemId == stock.ItemId.ToString())
+ .First();
+
+ 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)
+ {
+ var pendingList = Db
+ .Queryable<MesItemQt, MesItemQtDatall, MesItems>(
+ (a, b, c) => new JoinQueryInfos(
+ JoinType.Left, a.Guid == b.QtGuid,
+ JoinType.Left, b.ItemId == c.Id.ToString()))
+ .Where((a, b, c) => a.Qtck == p_bill_no &&
+ (b.Qd007 ?? 0) - (b.Qd008 ?? 0) > 0)
+ .OrderBy((a, b, c) => c.ItemNo)
+ .Select((a, b, c) => new MesItemQtDatall
+ {
+ Qd002 = b.Qd002, // 鏄庣粏琛屽彿
+ Qt011 = a.Qt011, // 閫�鏂欏師鍥�
+ ItemNo = c.ItemNo, // 鐗╂枡缂栧彿
+ Qd007 = b.Qd007 ?? 0, // 璁″垝鏁伴噺
+ Qd008 = b.Qd008 ?? 0 // 宸插畬鎴愭暟閲�
+ })
+ .ToList();
+
+ var message =
+ $"璇风‘璁ゅ彂鏂欐暟閲忥紒锛佸凡甯﹀嚭婊¤冻鍏朵粬鍑哄簱鍗曠殑鍙戞枡鏁伴噺 {remainingQty} 纭鍚庤鐐瑰嚮鏉$爜鎷嗗垎";
+
+ query.itemNo = stock.ItemNo;
+ query.Num = stock.Quantity;
+ query.Fum = remainingQty;
+
+ return (query, pendingList, message);
+ }
+
+ var mesItemQtDatalls = new List<MesItemQtDatall>();
+ var mess = "";
+ UseTransaction(db =>
+ {
+ var commit = 0;
+
+ // 鏌ユ壘褰撳ぉ鏄惁宸插瓨鍦ㄥ嚭搴撳崟
+ var existingOut = Db.Queryable<MesInvItemOuts>()
+ .Where(it => it.PbillNo == p_bill_no
+ // && it.DepotCode == stock.DepotsCode
+ && it.DepotId == stock.DepotId
+ && it.OutDate.Value.Date.ToString("yyyy-MM-dd") ==
+ DateTime.Now.Date.ToString("yyyy-MM-dd")
+ && it.BillTypeId == p_bill_type_id
+ && it.TransactionNo == p_transaction_no
+ && it.Status == 0)
+ .First();
+
+ Guid outId;
+ string outNo;
+
+ if (existingOut == null)
+ {
+ // 鍒涘缓鏂扮殑鍑哄簱鍗�
+ outId = Guid.NewGuid();
+ outNo = BillNo.GetBillNo("INV_OUT_OTHER");
+
+ var mesItemQt = Db.Queryable<MesItemQt>()
+ .Where(it => it.Qtck == p_bill_no)
+ .First();
+
+ var newOut = new MesInvItemOuts
+ {
+ Guid = outId,
+ ItemOutNo = outNo,
+ TaskNo = p_bill_no,
+ Status = 0,
+ CreateBy = c_user,
+ CreateDate = DateTime.Now,
+ LastupdateBy = c_user,
+ LastupdateDate = DateTime.Now,
+ BillTypeId = p_bill_type_id,
+ TransactionNo = p_transaction_no,
+ DepotCode = stock.DepotsCode,
+ DepotId = stock.DepotsId.HasValue
+ ? (int)stock.DepotsId
+ : null,
+ OutPart = mesItemQt.Qt012,
+ FType = 0,
+ WorkNo = p_bill_no,
+ OutType = "鍏朵粬鍑哄簱",
+ PbillNo = p_bill_no,
+ OutDate = DateTime.Now,
+ Nflag = 0,
+ Reason = mesItemQt.Qt010,
+ Remark = mesItemQt.Qt010
+ };
+
+ commit += db.Insertable(newOut).IgnoreColumns(true)
+ .ExecuteCommand();
+ }
+ else
+ {
+ outId = existingOut.Guid;
+ outNo = existingOut.ItemOutNo;
+ }
+
+ // 鑾峰彇閫�鏂欏崟鏄庣粏淇℃伅
+ qtDetail = Db.Queryable<MesItemQtDatall>()
+ .Where(it =>
+ it.QtGuid == mesItemQt.Guid &&
+ it.ItemId == stock.ItemId.ToString())
+ .First();
+
+ if (qtDetail == null)
+ {
+ throw new Exception($"鏈壘鍒板搴旂殑閫�鏂欏崟鏄庣粏淇℃伅");
+ }
+
+ // 妫�鏌ユ槸鍚﹀凡瀛樺湪鍑哄簱鐗╂枡璁板綍
+ var existingOutItem = Db.Queryable<MesInvItemOutItems>()
+ .Where(it =>
+ it.ItemOutId == outId && it.ItemId == barcode.ItemId)
+ .First();
+
+ if (existingOutItem == null)
+ {
+ // 鍒涘缓鏂扮殑鍑哄簱鐗╂枡璁板綍
+ var newOutItem = new MesInvItemOutItems
+ {
+ Guid = Guid.NewGuid(),
+ ItemOutId = outId,
+ ItemNo = qtDetail.Qd002,
+ Quantity = stock.Quantity,
+ CreateBy = c_user,
+ CreateDate = DateTime.Now,
+ LastupdateBy = c_user,
+ LastupdateDate = DateTime.Now,
+ DepotCode = stock.DepotsCode,
+ TaskNo = p_bill_no,
+ WorkNo = p_bill_no,
+ QtOutId = qtDetail.Guid,
+ // WorkLine = qtDetail.Id,
+ // ErpItemNo = qtDetail.Qd012,
+ PbillNo = p_bill_no,
+ ItemId = !string.IsNullOrEmpty(qtDetail.ItemId)
+ ? long.Parse(qtDetail.ItemId)
+ : null,
+ FType = 0,
+ // Unit = qtDetail.Qd009
+ };
+
+ commit += db.Insertable(newOutItem).IgnoreColumns(true)
+ .ExecuteCommand();
+ }
+ else
+ {
+ // 鏇存柊宸插瓨鍦ㄧ殑鍑哄簱鐗╂枡璁板綍鏁伴噺
+ commit += db.Updateable<MesInvItemOutItems>()
+ .SetColumns(it =>
+ it.Quantity == (it.Quantity ?? 0) + stock.Quantity)
+ .Where(it => it.ItemOutId == outId &&
+ it.ItemId == barcode.ItemId &&
+ it.QtOutId == qtDetail.Guid)
+ .ExecuteCommand();
+ }
+
+ // 鍒涘缓鍑哄簱鏉$爜鏄庣粏璁板綍
+ var outCDetail = new MesInvItemOutCDetails
+ {
+ ItemOutId = outId,
+ ItemBarcode = stock.ItemBarcode,
+ ItemNo = stock.ItemNo,
+ LotNo = stock.LotNo,
+ Quantity = stock.Quantity,
+ ForceOutFlag = 0,
+ CreateBy = c_user,
+ CreateDate = DateTime.Now,
+ LastupdateBy = c_user,
+ LastupdateDate = DateTime.Now,
+ DepotCode = stock.DepotsCode,
+ DepotId = stock.DepotsId.HasValue
+ ? (int)stock.DepotsId
+ : null,
+ // DepotsCode = stock.DepotsCode,
+ // DepotSectionsCode = stock.DepotSectionsCode,
+ DepotSectionCode = stock.DepotSectionsCode,
+ BoardStyle = stock.BoardStyle,
+ TaskNo = p_bill_no,
+ WorkNo = p_bill_no,
+ // WorkLine = qtDetail.Id,
+ SuppNo = stock.SuppNo,
+ PbillNo = p_bill_no,
+ ItemId = !string.IsNullOrEmpty(qtDetail.ItemId)
+ ? long.Parse(qtDetail.ItemId)
+ : null
+ };
+
+ commit += db.Insertable(outCDetail).IgnoreColumns(true)
+ .ExecuteCommand();
+
+
+ // 鎻掑叆涓氬姟娴佹按璁板綍
+ var business = new MesInvBusiness2
+ {
+ Status = 1,
+ BillTypeId = p_bill_type_id,
+ TransactionCode = p_transaction_no.ToString(),
+ BusinessType = 1,
+ ItemBarcode = stock.ItemBarcode,
+ ItemNo = stock.ItemNo,
+ LotNo = stock.LotNo,
+ EpFlag = true,
+ Quantity = stock.Quantity,
+ FromInvDepotsCode = stock.DepotsCode,
+ FromInvDepotSectionsCode = stock.DepotSectionsCode,
+ Description = "鍏朵粬鍑哄簱",
+ CreateBy = c_user,
+ CreateDate = DateTime.Now,
+ LastupdateBy = c_user,
+ LastupdateDate = DateTime.Now,
+ TaskNo = p_bill_no,
+ BillNo = outNo,
+ WorkNo = p_bill_no,
+ // WorkLine = qtDetail.Id,
+ SuppId = stock.SuppId,
+ SuppNo = stock.SuppNo,
+ ItemId = !string.IsNullOrEmpty(qtDetail.ItemId)
+ ? long.Parse(qtDetail.ItemId)
+ : null
+ };
+
+ commit += db.Insertable(business).IgnoreColumns(true)
+ .ExecuteCommand();
+
+ // 鍒犻櫎搴撳瓨璁板綍
+ commit += db.Deleteable<MesInvItemStocks>()
+ .Where(it => it.ItemBarcode == stock.ItemBarcode)
+ .ExecuteCommand();
+
+ // 鏇存柊閫�鏂欏崟鏄庣粏宸插畬鎴愭暟閲�
+ commit += db.Updateable<MesItemQtDatall>()
+ .SetColumns(it => it.Qd008 == (it.Qd008 ?? 0) + stock.Quantity)
+ .Where(it => it.Guid == qtDetail.Guid)
+ .ExecuteCommand();
+
+ // 妫�鏌ユ槑缁嗘槸鍚﹀畬鎴�,濡傛灉瀹屾垚鍒欐洿鏂扮姸鎬�
+ 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>(
+ (a, b, c) => new JoinQueryInfos(
+ JoinType.Left, a.Guid == b.QtGuid,
+ JoinType.Left, b.ItemId == c.Id.ToString()))
+ .Where((a, b, c) => a.Qtck == p_bill_no &&
+ (b.Qd007 ?? 0) - (b.Qd008 ?? 0) > 0)
+ .OrderBy((a, b, c) => c.ItemNo)
+ .Select((a, b, c) => new MesItemQtDatall
+ {
+ Qd002 = b.Qd002, // 鏄庣粏琛屽彿
+ Qt011 = a.Qt011, // 閫�鏂欏師鍥�
+ ItemNo = c.ItemNo, // 鐗╂枡缂栧彿
+ Qd007 = b.Qd007 ?? 0, // 璁″垝鏁伴噺
+ Qd008 = b.Qd008 ?? 0 // 宸插畬鎴愭暟閲�
+ })
+ .ToList();
+
+ // 濡傛灉娌℃湁寰呭鐞嗘槑缁嗭紝鏇存柊閫�鏂欏崟鐘舵�佷负宸插畬鎴�
+ 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} 宸插嚭搴�";
+
+ query.barcode = null;
+ query.itemNo = stock.ItemNo;
+ query.Num = stock.Quantity;
+ query.Fum = null;
+
+ if (commit < 5)
+ {
+ throw new Exception("鏇存柊澶辫触");
+ }
+
+ return commit;
+ });
+
+ return (query, mesItemQtDatalls, mess);
+ }
+
+ public (WarehouseQuery form, List<MesItemQtDatall> item, string message)
+ PrintQtckBarcode(
+ WarehouseQuery query)
+ {
+ var p_bill_no = query.billNo;
+ var p_old_barcode = query.barcode;
+ var c_user = query.userName;
+ var p_qty = query.Fum;
+ var p_bill_type_id = 200;
+ var p_transaction_no = 202;
+
+ // 妫�鏌ュ崟鎹彿鏄惁涓虹┖
+ if (string.IsNullOrEmpty(p_bill_no))
+ {
+ throw new Exception("璇烽�夊彇鍗曟嵁鍙凤紒");
+ }
+
+ // 妫�鏌ユ暟閲忔槸鍚︽湁鏁�
+ if (p_qty <= 0)
+ {
+ throw new Exception("璇疯緭鍏ユ纭殑鍙戞枡鏁伴噺锛�");
+ }
+
+ // 鑾峰彇搴撳瓨鏉$爜淇℃伅
+ var stock = Db.Queryable<MesInvItemStocks>()
+ .Where(it => it.ItemBarcode == p_old_barcode && it.Quantity > 0)
+ .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>()
+ .Where(it => it.ItemBarcode == p_old_barcode)
+ .First();
+
+ if (barcode == null)
+ {
+ throw new Exception($"mes涓笉瀛樺湪姝ゆ潯鐮侊紝璇锋牳瀵癸紒{p_old_barcode}");
+ }
+
+ // 鑾峰彇閫�鏂欏崟淇℃伅
+ var mesItemQt = Db.Queryable<MesItemQt>()
+ .Where(it => it.Qtck == p_bill_no)
+ .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>()
+ .Where(it =>
+ it.QtGuid == mesItemQt.Guid &&
+ it.ItemId == stock.ItemId.ToString())
+ .First();
+
+ 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>();
+ var newBarcode = string.Empty;
+
+ UseTransaction(db =>
+ {
+ var commit = 0;
+
+ // 濡傛灉闇�瑕佹媶鍒嗘潯鐮�
+ if (totalQty > p_qty)
+ {
+ var mesItems = db.Queryable<MesItems>()
+ .Where(s => s.Id == stock.ItemId).First();
+ // 鐢熸垚鏂版潯鐮佸彿
+ newBarcode = BillNo.GetBillNo("TMBH(鏉$爜缂栧彿)", mesItems.ItemNo);
+
+ // 鎻掑叆鏂版潯鐮佽褰�
+ commit += db.Insertable(new MesInvItemBarcodes
+ {
+ Guid = Guid.NewGuid(),
+ ItemBarcode = newBarcode,
+ ItemNo = barcode.ItemNo,
+ LotNo = barcode.LotNo,
+ Quantity = p_qty,
+ TaskNo = barcode.TaskNo,
+ CreateBy = c_user,
+ CreateDate = DateTime.Now,
+ LastupdateBy = c_user,
+ LastupdateDate = DateTime.Now,
+ OldItemBarcode = p_old_barcode,
+ Mblnr = barcode.Mblnr,
+ Zeile = barcode.Zeile,
+ Barcodestatus = false,
+ Oldqty = Convert.ToInt64(p_qty.Value),
+ Unit = barcode.Unit,
+ LotDate = barcode.LotDate,
+ Memo = "鍏朵粬鍑哄簱鎷嗗垎",
+ SuppNo = barcode.SuppNo,
+ ItemSname = barcode.ItemSname,
+ TrLotno = barcode.TrLotno,
+ BillNo = barcode.BillNo,
+ UrgentFlag = barcode.UrgentFlag,
+ InsDate = barcode.InsDate,
+ WorkNo = barcode.WorkNo,
+ WorkLine = barcode.WorkLine,
+ ComeFlg = 5,
+ EbelnK3id = barcode.EbelnK3id,
+ LineK3id = barcode.LineK3id,
+ ItemId = barcode.ItemId,
+ }).IgnoreColumns(true).ExecuteCommand();
+
+ // 鏇存柊鍘熸潯鐮佹暟閲�
+ commit += db.Updateable<MesInvItemBarcodes>()
+ .SetColumns(it => it.Quantity == it.Quantity - p_qty)
+ .Where(it => it.ItemBarcode == p_old_barcode)
+ .ExecuteCommand();
+
+ // 鏇存柊鍘熷簱瀛樻暟閲�
+ commit += db.Updateable<MesInvItemStocks>()
+ .SetColumns(it => it.Quantity == it.Quantity - p_qty)
+ .Where(it => it.ItemBarcode == p_old_barcode)
+ .ExecuteCommand();
+
+ // 鎻掑叆鏂板簱瀛樿褰�
+ commit += db.Insertable(new MesInvItemStocks
+ {
+ Guid = Guid.NewGuid(),
+ ItemBarcode = newBarcode,
+ ItemNo = stock.ItemNo,
+ LotNo = stock.LotNo,
+ Quantity = p_qty,
+ DepotsCode = stock.DepotsCode,
+ DepotSectionsCode = stock.DepotSectionsCode,
+ CheckDate = stock.CheckDate,
+ IndepDate = stock.IndepDate,
+ IqcStatus = stock.IqcStatus,
+ WorkNo = stock.WorkNo,
+ WorkLine = stock.WorkLine,
+ SuppNo = stock.SuppNo,
+ BillNo = stock.BillNo,
+ EbelnK3id = stock.EbelnK3id,
+ LineK3id = stock.LineK3id,
+ ItemId = stock.ItemId,
+ }).IgnoreColumns(true).ExecuteCommand();
+
+
+ // 鎻掑叆涓氬姟娴佹按璁板綍
+ commit += db.Insertable(new MesInvBusiness2
+ {
+ Status = 1,
+ BillTypeId = p_bill_type_id,
+ TransactionCode = p_transaction_no.ToString(),
+ BusinessType = 1,
+ TaskNo = barcode.TaskNo,
+ BillNo = barcode.BillNo,
+ ItemBarcode = newBarcode,
+ ItemNo = barcode.ItemNo,
+ LotNo = barcode.LotNo,
+ EpFlag = true,
+ Quantity = p_qty,
+ FromInvDepotsCode = null,
+ FromInvDepotSectionsCode = null,
+ ToInvDepotsCode = stock.DepotsCode,
+ ToInvDepotSectionsCode = stock.DepotSectionsCode,
+ Description = "鍏朵粬鍑哄簱鏉$爜鎷嗗垎",
+ CreateBy = c_user,
+ CreateDate = DateTime.Now,
+ LastupdateBy = c_user,
+ LastupdateDate = DateTime.Now,
+ Factory = "1000",
+ Company = "1000",
+ WorkNo = stock.WorkNo,
+ WorkLine = stock.WorkLine,
+ EbelnK3id = stock.EbelnK3id,
+ LineK3id = stock.LineK3id,
+ SuppId = stock.SuppId,
+ SuppNo = stock.SuppNo,
+ ItemId = stock.ItemId,
+ }).IgnoreColumns(true).ExecuteCommand();
+ }
+ else
+ {
+ newBarcode = p_old_barcode;
+ }
+
+
+ // 鑾峰彇鎴栧垱寤哄嚭搴撳崟
+ var outRecord = db.Queryable<MesInvItemOuts>()
+ .Where(it => it.PbillNo == p_bill_no
+ && it.DepotCode == stock.DepotsCode
+ && it.OutDate.Value.Date.ToString("yyyy-MM-dd") ==
+ DateTime.Now.Date.ToString("yyyy-MM-dd")
+ && it.BillTypeId == p_bill_type_id
+ && it.TransactionNo == p_transaction_no
+ && it.Status == 0)
+ .First();
+
+ var outId = Guid.Empty;
+ var outNo = string.Empty;
+
+ if (outRecord == null)
+ {
+ outId = Guid.NewGuid();
+ outNo = BillNo.GetBillNo("INV_OUT_OTHER");
+ // 鍒涘缓鏂板嚭搴撳崟
+ commit += db.Insertable(new MesInvItemOuts
+ {
+ Guid = outId,
+ ItemOutNo = $"OUT-{DateTime.Now:yyyyMMddHHmmss}",
+ TaskNo = p_bill_no,
+ Status = 0,
+ CreateBy = c_user,
+ CreateDate = DateTime.Now,
+ LastupdateBy = c_user,
+ LastupdateDate = DateTime.Now,
+ BillTypeId = p_bill_type_id,
+ TransactionNo = p_transaction_no,
+ DepotCode = stock.DepotsCode,
+ OutPart = mesItemQt.Qt012,
+ FType = 0,
+ WorkNo = p_bill_no,
+ OutType = "鍏朵粬鍑哄簱",
+ BusinessType = "",
+ PbillNo = p_bill_no,
+ OutDate = DateTime.Now,
+ Nflag = 0,
+ Reason = mesItemQt.Qt010,
+ }).ExecuteReturnIdentity();
+ outNo = $"OUT-{DateTime.Now:yyyyMMddHHmmss}";
+ }
+ else
+ {
+ outId = outRecord.Guid;
+ outNo = outRecord.ItemOutNo;
+ }
+
+ // 妫�鏌ュ苟鏇存柊鍑哄簱鍗曟槑缁�
+ var outItem = db.Queryable<MesInvItemOutItems>()
+ .Where(it =>
+ it.ItemOutId == outId && it.ItemId == barcode.ItemId)
+ .First();
+
+ if (outItem == null)
+ {
+ // 鎻掑叆鏂版槑缁�
+ db.Insertable(new MesInvItemOutItems
+ {
+ ItemOutId = outId,
+ ItemNo = qtDetail.Qd002,
+ Quantity = p_qty,
+ CreateBy = c_user,
+ CreateDate = DateTime.Now,
+ LastupdateBy = c_user,
+ LastupdateDate = DateTime.Now,
+ DepotCode = stock.DepotsCode,
+ TaskNo = p_bill_no,
+ WorkNo = p_bill_no,
+ QtOutId = qtDetail.Guid,
+ // WorkLine = qtDetail.Id.ToString(),
+ ErpItemNo = qtDetail.ItemNo,
+ PbillNo = p_bill_no,
+ ItemId = !string.IsNullOrEmpty(qtDetail.ItemId)
+ ? long.Parse(qtDetail.ItemId)
+ : null,
+ FType = 0,
+ // Unit = qtDetail.Qd009
+ }).ExecuteCommand();
+ }
+ else
+ {
+ // 鏇存柊鏄庣粏鏁伴噺
+ db.Updateable<MesInvItemOutItems>()
+ .SetColumns(it =>
+ it.Quantity == (it.Quantity ?? 0) + p_qty)
+ .Where(it =>
+ it.ItemOutId == outId &&
+ it.ItemId == stock.ItemId &&
+ it.QtOutId == qtDetail.Guid)
+ .ExecuteCommand();
+ }
+
+ // 鎻掑叆鍑哄簱鏄庣粏
+ db.Insertable(new MesInvItemOutCDetails
+ {
+ ItemOutId = outId,
+ ItemBarcode = newBarcode,
+ ItemNo = stock.ItemNo,
+ LotNo = stock.LotNo,
+ Quantity = p_qty,
+ ForceOutFlag = 0,
+ CreateBy = c_user,
+ CreateDate = DateTime.Now,
+ LastupdateBy = c_user,
+ LastupdateDate = DateTime.Now,
+ DepotCode = stock.DepotsCode,
+ DepotSectionCode = stock.DepotSectionsCode,
+ Factory = "1000",
+ Company = "1000",
+ BoardStyle = stock.BoardStyle,
+ TaskNo = p_bill_no,
+ WorkNo = p_bill_no,
+ // WorkLine = qtDetail.Id.ToString(),
+ SuppNo = stock.SuppNo,
+ PbillNo = p_bill_no,
+ ItemId = !string.IsNullOrEmpty(qtDetail.ItemId)
+ ? long.Parse(qtDetail.ItemId)
+ : null
+ }).IgnoreColumns(true).ExecuteCommand();
+
+ // 鎻掑叆涓氬姟璁板綍
+ db.Insertable(new MesInvBusiness2
+ {
+ Status = 1,
+ BillTypeId = p_bill_type_id,
+ TransactionCode = p_transaction_no.ToString(),
+ BusinessType = 1,
+ ItemBarcode = newBarcode,
+ ItemNo = stock.ItemNo,
+ LotNo = stock.LotNo,
+ EpFlag = true,
+ Quantity = p_qty,
+ FromInvDepotsCode = stock.DepotsCode,
+ FromInvDepotSectionsCode = stock.DepotSectionsCode,
+ Description = "鍏朵粬鍑哄簱",
+ CreateBy = c_user,
+ CreateDate = DateTime.Now,
+ LastupdateBy = c_user,
+ LastupdateDate = DateTime.Now,
+ Factory = "1000",
+ Company = "1000",
+ TaskNo = p_bill_no,
+ BillNo = outNo,
+ WorkNo = p_bill_no,
+ // WorkLine = qtDetail.Id.ToString(),
+ SuppId = stock.SuppId,
+ SuppNo = stock.SuppNo,
+ ItemId = !string.IsNullOrEmpty(qtDetail.ItemId)
+ ? long.Parse(qtDetail.ItemId)
+ : null
+ }).IgnoreColumns(true).ExecuteCommand();
+
+ // 鍒犻櫎搴撳瓨璁板綍
+ db.Deleteable<MesInvItemStocks>()
+ .Where(it => it.ItemBarcode == newBarcode)
+ .ExecuteCommand();
+
+ // 鏇存柊閫�鏂欏崟鏄庣粏
+ db.Updateable<MesItemQtDatall>()
+ .SetColumns(it => it.Qd008 == (it.Qd008 ?? 0) + (int)p_qty)
+ .SetColumnsIF(
+ (qtDetail.Qd007 ?? 0) - (qtDetail.Qd008 ?? 0) == p_qty,
+ it => it.Qd011 == 1)
+ .Where(it => it.Guid == qtDetail.Guid)
+ .ExecuteCommand();
+
+ // 妫�鏌ユ槸鍚︽墍鏈夋槑缁嗛兘宸插畬鎴�
+ var hasUnfinished = db.Queryable<MesItemQtDatall>()
+ .Where(it => it.Qd011 == 0)
+ .Any();
+
+ // 濡傛灉鎵�鏈夋槑缁嗗畬鎴愶紝鏇存柊閫�鏂欏崟鐘舵��
+ if (!hasUnfinished)
+ {
+ db.Updateable<MesItemQt>()
+ .SetColumns(it => it.Qt014 == true)
+ .Where(it => it.Qtck == p_bill_no)
+ .ExecuteCommand();
+ }
+
+ // 鑾峰彇鍓╀綑寰呭鐞嗘槑缁�
+ mesItemQtDatalls = db
+ .Queryable<MesItemQt, MesItemQtDatall, MesItems>(
+ (a, b, c) => new JoinQueryInfos(
+ JoinType.Left, a.Guid == b.QtGuid,
+ JoinType.Left, b.ItemId == c.Id.ToString()))
+ .Where((a, b, c) => a.Qtck == p_bill_no &&
+ (b.Qd007 ?? 0) - (b.Qd008 ?? 0) > 0)
+ .OrderBy((a, b, c) => c.ItemNo)
+ .Select((a, b, c) => new MesItemQtDatall
+ {
+ Qd002 = b.Qd002,
+ Qt011 = a.Qt011,
+ ItemNo = c.ItemNo,
+ Qd007 = b.Qd007 ?? 0,
+ Qd008 = b.Qd008 ?? 0
+ })
+ .ToList();
+
+ message = $"鎿嶄綔鎴愬姛锛佹媶鍒嗘潯鐮�:{newBarcode} 鏁伴噺:{p_qty}宸插嚭搴�";
+
+ return commit;
+ });
+ return (query, mesItemQtDatalls, message);
+ }
+}
\ No newline at end of file
diff --git a/service/Warehouse/MesItemQtrkManager.cs b/service/Warehouse/MesItemQtrkManager.cs
index c6baffe..b5d74c2 100644
--- a/service/Warehouse/MesItemQtrkManager.cs
+++ b/service/Warehouse/MesItemQtrkManager.cs
@@ -54,16 +54,13 @@
return details;
}
- public String ScanInDepotsQT(WarehouseQuery query)
+ public string ScanInDepotsQT(WarehouseQuery query)
{
var sectionCode = query.sectionCode;
var billNo = query.billNo;
// 1. 楠岃瘉搴撲綅鏉$爜鏄惁涓虹┖
- if (string.IsNullOrEmpty(sectionCode))
- {
- throw new Exception("璇锋壂搴撲綅鏉$爜锛�");
- }
+ if (string.IsNullOrEmpty(sectionCode)) throw new Exception("璇锋壂搴撲綅鏉$爜锛�");
// 2. 鏌ヨ搴撲綅瀵瑰簲鐨勪粨搴撶紪鐮�
var depotCode = Db.Queryable<MesDepotSections, MesDepots>(
@@ -74,9 +71,7 @@
.First();
if (depotCode == null)
- {
throw new Exception($"搴撲綅缂栫爜 {sectionCode} 涓嶅瓨鍦紝璇风‘璁わ紒");
- }
// 3. 鏌ヨ鐢宠鍗曞搴旂殑浠撳簱
var qtrk = Db.Queryable<MesItemQtrk>()
@@ -84,16 +79,11 @@
.Select(x => x.Qt011)
.First();
- if (qtrk == null)
- {
- throw new Exception($"搴撲綅缂栫爜 {sectionCode} 涓嶅瓨鍦紝璇风‘璁わ紒");
- }
+ if (qtrk == null) throw new Exception($"搴撲綅缂栫爜 {sectionCode} 涓嶅瓨鍦紝璇风‘璁わ紒");
// 4. 楠岃瘉搴撲綅鏄惁灞炰簬鐢宠浠撳簱
if (depotCode != qtrk)
- {
throw new Exception($"鎵爜搴撲綅 {sectionCode} 涓嶅睘浜庣敵璇锋浠撳簱!");
- }
// 5. 杩斿洖鎴愬姛淇℃伅
return $"浠撳簱锛歿qtrk} 搴撲綅锛歿sectionCode}";
@@ -112,9 +102,7 @@
// 1. 楠岃瘉搴撲綅鏉$爜鏄惁涓虹┖
if (string.IsNullOrEmpty(p_section_code))
- {
throw new Exception("璇锋壂搴撲綅鏉$爜锛�");
- }
// 2. 鏌ヨ搴撲綅瀵瑰簲鐨勪粨搴撶紪鐮佸拰浠撳簱ID
var depotInfo = Db.Queryable<MesDepotSections, MesDepots>(
@@ -125,9 +113,7 @@
.First();
if (depotInfo == null)
- {
throw new Exception($"搴撲綅缂栫爜 {p_section_code} 涓嶅瓨鍦紝璇风‘璁わ紒");
- }
var c_depot_code = depotInfo.DepotCode;
var c_depot_id = depotInfo.DepotId;
@@ -136,45 +122,30 @@
var existsInStock = Db.Queryable<MesInvItemInCDetails>()
.Any(x => x.ItemBarcode == p_item_barcode);
- if (existsInStock)
- {
- throw new Exception("姝ゆ潯鐮佸凡鎵爜鍏ュ簱瀹屾垚,璇锋牳瀵癸紒");
- }
+ if (existsInStock) throw new Exception("姝ゆ潯鐮佸凡鎵爜鍏ュ簱瀹屾垚,璇锋牳瀵癸紒");
// 4. 鏌ヨ鏉$爜淇℃伅
var barcode = Db.Queryable<MesInvItemBarcodes>()
.Where(x => x.ItemBarcode == p_item_barcode)
.First();
- if (barcode == null)
- {
- throw new Exception("鏉$爜涓嶅瓨鍦�,璇锋牳瀵癸紒");
- }
+ if (barcode == null) throw new Exception("鏉$爜涓嶅瓨鍦�,璇锋牳瀵癸紒");
- if (barcode.ComeFlg != 3)
- {
- throw new Exception("鏉$爜涓嶆槸鍏朵粬鍏ュ簱鏉$爜,鏃犳硶鐢ㄥ叾浠栧叆搴擄紒");
- }
+ if (barcode.ComeFlg != 3) throw new Exception("鏉$爜涓嶆槸鍏朵粬鍏ュ簱鏉$爜,鏃犳硶鐢ㄥ叾浠栧叆搴擄紒");
// 楠岃瘉鏉$爜鏄惁宸插湪搴撳瓨涓�
var stockCount = Db.Queryable<MesInvItemStocks>()
.Where(x => x.ItemBarcode == p_item_barcode)
.Count();
- if (stockCount > 0)
- {
- throw new Exception("姝ゆ潯鐮佸凡鎵爜鍏ュ簱瀹屾垚,璇锋牳瀵癸紒");
- }
+ if (stockCount > 0) throw new Exception("姝ゆ潯鐮佸凡鎵爜鍏ュ簱瀹屾垚,璇锋牳瀵癸紒");
// 5. 鏌ヨ鍏朵粬鍏ュ簱鐢宠鍗�
var qtrk = Db.Queryable<MesItemQtrk>()
.Where(x => x.Qtck == p_bill_no)
.First();
- if (qtrk == null)
- {
- throw new Exception("鍏朵粬鍏ュ簱鐢宠鍗曚笉瀛樺湪锛�");
- }
+ if (qtrk == null) throw new Exception("鍏朵粬鍏ュ簱鐢宠鍗曚笉瀛樺湪锛�");
// 6. 鏌ヨ鐢宠鍗曟槑缁�
var detail = Db.Queryable<MesItemQtrrDetail>()
@@ -184,15 +155,11 @@
.First();
if (detail == null)
- {
throw new Exception($"鍏朵粬鍏ュ簱鐢宠鍗晎p_bill_no}鏃犳鐗╂枡{barcode.ItemNo} 璇锋牳瀵癸紒");
- }
// 7. 楠岃瘉鏁伴噺
if (barcode.Quantity > (detail.Qd007 ?? 0) - (detail.Qd008 ?? 0))
- {
throw new Exception("鏉$爜鏁伴噺瓒呰繃鐢宠鏁伴噺,璇锋牳瀵癸紒");
- }
var details = new List<MesItemQtrrDetail>();
@@ -255,7 +222,6 @@
.First();
if (existingItem == null)
- {
// 涓嶅瓨鍦ㄥ垯鏂板鍏ュ簱鏄庣粏
res += db.Insertable(new MesInvItemInCItems
{
@@ -282,9 +248,7 @@
LineK3id = barcode.LineK3id,
ItemId = barcode.ItemId
}).IgnoreColumns(true).ExecuteCommand();
- }
else
- {
// 瀛樺湪鍒欐洿鏂版暟閲�
res += db.Updateable<MesInvItemInCItems>()
.SetColumns(
@@ -294,7 +258,6 @@
&& x.WorkNo == barcode.WorkNo
&& x.WorkLine == barcode.WorkLine)
.ExecuteCommand();
- }
// 鎻掑叆鍏ュ簱鏄庣粏璁板綍
@@ -366,7 +329,7 @@
SuppNo = barcode.SuppNo,
EbelnK3id = barcode.EbelnK3id,
LineK3id = barcode.LineK3id,
- ItemId = barcode.ItemId,
+ ItemId = barcode.ItemId
// SalesOrder = barcode.SalesOrder,
// IsZy = barcode.IsZy,
// OuterBarcode = barcode.OuterBarcode
@@ -398,7 +361,7 @@
EbelnK3id = barcode.EbelnK3id,
LineK3id = barcode.LineK3id,
ItemId = barcode.ItemId,
- BillNo = barcode.BillNo,
+ BillNo = barcode.BillNo
// SalesOrder = barcode.SalesOrder,
// IsZy = barcode.IsZy,
// Visable = 0,
@@ -423,12 +386,10 @@
.First();
if ((detail1.Qd007 ?? 0) - (detail1.Qd008 ?? 0) == barcode.Quantity)
- {
res += db.Updateable<MesItemQtrrDetail>()
.SetColumns(x => x.Qd011 == 1)
.Where(x => x.Guid == detail1.Guid)
.ExecuteCommand();
- }
details = Db.Queryable<MesItemQtrk, MesItemQtrrDetail, MesItems>(
(a, b, c) => new JoinQueryInfos(
@@ -449,17 +410,12 @@
.ToList();
if (CollectionUtil.IsNullOrEmpty(details))
- {
res += db.Updateable<MesItemQtrk>()
.SetColumns(s => s.Qt014 == 1)
.Where(x => x.Qtck == p_bill_no)
.ExecuteCommand();
- }
- if (res < 5)
- {
- throw new Exception("鎻掑叆鎴栨洿鏂板け璐�");
- }
+ if (res < 5) throw new Exception("鎻掑叆鎴栨洿鏂板け璐�");
return res;
});
--
Gitblit v1.9.3