From b5d01891fbbd69d8d50d2b4fb562fac3130fc2d6 Mon Sep 17 00:00:00 2001
From: 647556386 <647556386@qq.com>
Date: 星期一, 20 四月 2026 11:01:22 +0800
Subject: [PATCH] 虚拟出入库单据锁定
---
项目代码/WMS无仓储版/WIDESEA_WMSServer/WIDESEA_OutboundService/OutboundPickingService.cs | 79 ++++++++++++++++++++++++++++++++++++++-
1 files changed, 76 insertions(+), 3 deletions(-)
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_OutboundService/OutboundPickingService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_OutboundService/OutboundPickingService.cs"
index 96e47b5..609c9af 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_OutboundService/OutboundPickingService.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_OutboundService/OutboundPickingService.cs"
@@ -2324,6 +2324,14 @@
{
return WebResponseContent.Instance.Error("鏈壘鍒版弧瓒冲嚭搴撴潯浠剁殑鍑哄簱鍗�");
}
+ if (outboundOrder.DepartmentCode == "铏氭嫙鍑哄叆搴撻攣瀹�")
+ {
+ return WebResponseContent.Instance.Error("璇ュ崟鎹彟涓�鍙扮數鑴戞鍦ㄨ繘琛岃櫄鎷熷嚭鍏ュ簱鎿嶄綔锛岃绋嶅悗鍐嶈瘯");
+ }
+ else
+ {
+ outboundOrder.DepartmentCode = "铏氭嫙鍑哄叆搴撻攣瀹�";
+ }
if(outboundOrder.IsBatch == 0)
{
return WebResponseContent.Instance.Error("璇ュ崟鎹笉灞炰簬鍒嗘壒鍥炰紶鍗曟嵁锛屼笉鍏佽铏氭嫙鍑哄叆搴�");
@@ -2334,12 +2342,25 @@
item.NoStockOutQty = 0;
item.documentsNO = "";
}
+ _outboundOrderService.UpdateData(outboundOrder);
_outboundOrderDetailService.UpdateData(outboundOrder.Details);
return WebResponseContent.Instance.OK("鎴愬姛");
}
- public WebResponseContent BarcodeValidate(NoStockOutModel noStockOut)
+ public WebResponseContent MovePickingOrders(string outOrder)
+ {
+ Dt_OutboundOrder outboundOrder = Db.Queryable<Dt_OutboundOrder>().Where(x => x.UpperOrderNo == outOrder).First();
+ if (outboundOrder.DepartmentCode == "铏氭嫙鍑哄叆搴撻攣瀹�")
+ {
+ outboundOrder.DepartmentCode = "";
+ }
+ _outboundOrderService.UpdateData(outboundOrder);
+ return WebResponseContent.Instance.OK("鎴愬姛");
+
+ }
+
+ public WebResponseContent BarcodeValidate(NoStockOutModel noStockOut)
{
try
{
@@ -2425,7 +2446,13 @@
{
return WebResponseContent.Instance.Error($"鍦ㄥ嚭搴撳崟涓湭鎵惧埌鐗╂枡{item.MaterielCode}鐨勫彲鍑哄簱鏄庣粏");
}
-
+ // x
+ foreach (var outboundOrderDetail in eligibleOutDetails)
+ {
+ outboundOrderDetail.NoStockOutQty = 0;
+ outboundOrderDetail.documentsNO = "";
+ }
+ _outboundOrderDetailService.UpdateData(eligibleOutDetails);
// 閬嶅巻绗﹀悎鏉′欢鐨勫嚭搴撴槑缁嗭紝閫愯鍒嗛厤鏁伴噺
foreach (var outDetail in eligibleOutDetails)
{
@@ -2709,12 +2736,58 @@
{
try
{
+
Dt_OutboundOrder outboundOrder = _inboundOrderRepository.Db.Queryable<Dt_OutboundOrder>().Where(x => x.UpperOrderNo == noStockOutSubmit.OutOderSubmit && x.OrderStatus != OutOrderStatusEnum.鍑哄簱瀹屾垚.ObjToInt()).Includes(x => x.Details).First();
if (outboundOrder == null)
{
return WebResponseContent.Instance.Error($"鏈壘鍒板嚭搴撳崟锛歿noStockOutSubmit.OutOderSubmit}");
}
-
+
+ // 1. 绛涢�夊嚭鏈鎻愪氦鏉$爜鍏宠仈鐨勫嚭搴撴槑缁�
+ List<Dt_OutboundOrderDetail> outboundOrderDetail2 = outboundOrder.Details
+ .Where(x => !string.IsNullOrWhiteSpace(x.documentsNO)
+ && noStockOutSubmit.BarCodeSubmit.Any(barcode =>
+ x.documentsNO.IndexOf(barcode, StringComparison.OrdinalIgnoreCase) >= 0))
+ .ToList();
+
+ HashSet<string> existBarcodes = new HashSet<string>();
+
+ foreach (var detail in outboundOrderDetail2)
+ {
+ try
+ {
+ // 鍙嶅簭鍒楀寲鏄庣粏閲岀殑鏉$爜鍒楄〃
+ var barcodesInDoc = JsonConvert.DeserializeObject<List<Barcodes>>(detail.documentsNO);
+ if (barcodesInDoc == null) continue;
+
+ // 鎶婃潯鐮佸姞鍏ュ幓閲嶉泦鍚�
+ foreach (var b in barcodesInDoc)
+ {
+ if (!string.IsNullOrEmpty(b.Barcode))
+ existBarcodes.Add(b.Barcode.Trim());
+ }
+ }
+ catch { }
+ }
+
+ // 3. 鍓嶇鎻愪氦鐨勬潯鐮� 鈫� 鍘婚噸
+ HashSet<string> submitBarcodes = new HashSet<string>(
+ noStockOutSubmit.BarCodeSubmit
+ .Where(b => !string.IsNullOrEmpty(b))
+ .Select(b => b.Trim())
+ );
+
+ // 4. 鎵惧嚭銆愭彁浜や簡锛屼絾绯荤粺閲屼笉瀛樺湪銆戠殑鏉$爜
+ var missingBarcodes = submitBarcodes.Except(existBarcodes).ToList();
+
+ // 5. 濡傛灉鏈夌己澶� 鈫� 鎷︽埅鎶ラ敊
+ if (missingBarcodes.Any())
+ {
+ return WebResponseContent.Instance.Error(
+ $"鏁版嵁寮傚父锛屼互涓嬫潯鐮佸湪鍑哄簱鍗曚腑鏈壘鍒版垨宸茶娓呯┖锛歿string.Join(",", missingBarcodes)}"
+ );
+ }
+
List<Dt_OutboundOrderDetail> outboundOrderDetails = new List<Dt_OutboundOrderDetail>();
Dictionary<int, List<string>> orderIdBarCodeDict = new Dictionary<int, List<string>>();
--
Gitblit v1.9.3