From 36746596927952a6b860129a62eec9059bf083a7 Mon Sep 17 00:00:00 2001
From: Rodney Chen <rodney.chen@hotmail.com>
Date: 星期六, 26 四月 2025 18:06:27 +0800
Subject: [PATCH] 优化了备料逻辑

---
 Tiger.Business.WMS/Extensions/Yada/OutExtension.cs |  100 ++++++++++++++++++++++++++++++++++++++++---------
 1 files changed, 81 insertions(+), 19 deletions(-)

diff --git a/Tiger.Business.WMS/Extensions/Yada/OutExtension.cs b/Tiger.Business.WMS/Extensions/Yada/OutExtension.cs
index 4b64fe3..5b505b3 100644
--- a/Tiger.Business.WMS/Extensions/Yada/OutExtension.cs
+++ b/Tiger.Business.WMS/Extensions/Yada/OutExtension.cs
@@ -3,6 +3,7 @@
 using Newtonsoft.Json;
 using Newtonsoft.Json.Serialization;
 using Org.BouncyCastle.Asn1.X509;
+using Org.BouncyCastle.Ocsp;
 using Rhea.Common;
 using SqlSugar;
 using System;
@@ -221,14 +222,42 @@
                 item.QTY_ACT_DLVY = item.QTY_ACT_REQ;
             }
             trans.CurPREP.Order.STATUS = BIZ_WMS_PREP.STATUSs.Sended.GetValue();
-            var orders = trans.MainDB.Queryable<BIZ_U9_MISC_OUT>().Where(q => trans.CurPREP.Order.SourceOrders.Select(s => s.SOURCE_ORDER).Contains(q.ORDER_NO)).ToList();
-            foreach (var item in orders)
+            var orders = trans.MainDB.Queryable<BIZ_U9_MISC_OUT>().Where(q => trans.CurPREP.Order.SourceOrders.Select(s => s.SOURCE_ORDER).Contains(q.ORDER_NO)).IncludesAllFirstLayer().ToList();
+            foreach (var order in orders)
             {
-                item.STATUS = BIZ_U9_MISC_OUT.STATUSs.Sended.GetValue();
-                item.PREP_PERSON = trans.UserCode;
-                item.FINISH_TIME = DateTime.Now;
-                item.REQ_PERSON = trans.UserCode;
-                item.DLVY_TIME = DateTime.Now;
+                order.STATUS = BIZ_U9_MISC_OUT.STATUSs.Sended.GetValue();
+                order.PREP_PERSON = trans.UserCode;
+                order.FINISH_TIME = DateTime.Now;
+                order.REQ_PERSON = trans.UserCode;
+                order.DLVY_TIME = DateTime.Now;
+                foreach (var dtl in order.Details)
+                {
+                    dtl.STATUS = BIZ_WMS_TRANSFER.STATUSs.Sended.GetValue();
+                }
+                order.SnList ??= new();
+                foreach (var sn in trans.CurPREP.Order.SnList)
+                {
+                    var dtl = order.Details.Where(q => q.ITEM_CODE == sn.ITEM_CODE).First();
+                    order.SnList.Add(new()
+                    {
+                        AUTH_ORG = dtl.AUTH_ORG,
+                        ORDER_NO = dtl.ORDER_NO,
+                        LINE_NO = dtl.LINE_NO,
+                        SN = sn.SN,
+                        STATUS = sn.STATUS,
+                        ITEM_CODE = sn.ITEM_CODE,
+                        QTY = sn.QTY,
+                        UNIT = sn.UNIT,
+                        WH_CODE = sn.WH_CODE,
+                        REGION_CODE = sn.REGION_CODE,
+                        SHELF_CODE = sn.SHELF_CODE,
+                        LOCATION_CODE = sn.LOCATION_CODE,
+                        DOWN_TIME = sn.DOWN_TIME,
+                        DLVY_TIME = DateTime.Now,
+                        IS_OUT = "Y",
+                        LOTNO = sn.LOTNO,
+                    });
+                }
             }
             var items = trans.MainDB.Queryable<WMS_ITEM>().Where(q => q.TRANS_NO == trans.CurPREP.Order.ORDER_NO).ToList();
             var history = new List<WMS_ITEM_HIS>();
@@ -250,6 +279,8 @@
                 db.Updateable(items, trans.UserCode).UpdateColumns(q => new { q.UPDATE_TIME, q.UPDATE_USER, q.STATUS }).ExecuteCommand();
                 db.Insertable(history, trans.UserCode).ExecuteCommand();
                 db.Updateable(orders, trans.UserCode).UpdateColumns(q => new { q.UPDATE_TIME, q.UPDATE_USER, q.STATUS, q.PREP_PERSON, q.FINISH_TIME, q.REQ_PERSON, q.DLVY_TIME }).ExecuteCommand();
+                db.Updateable(orders.SelectMany(q => q.Details).ToList(), trans.UserCode).UpdateColumns(q => new { q.UPDATE_TIME, q.UPDATE_USER, q.STATUS }).ExecuteCommand();
+                db.Storageable(orders.SelectMany(q => q.SnList).ToList(), trans.UserCode).ToStorage().AsInsertable.ExecuteCommand();
             });
             if (dbTran.IsSuccess)
             {
@@ -364,6 +395,8 @@
             {
                 sn.DLVY_BATCH = batch.DLVY_BATCH;
                 sn.STATUS = WMS_ITEM.STATUSs.Sended.GetValue();
+                sn.REQ_ID = batch.REQ_ID;
+                sn.REQ_ORDER = batch.REQ_ORDER;
             }
 
             var items = trans.MainDB.Queryable<WMS_ITEM>().Where(q => sns.Select(s => s.SN).Contains(q.SN)).ToList();
@@ -388,7 +421,7 @@
                 db.Updateable(trans.CurPREP.Order, trans.UserCode).UpdateColumns(q => new { q.UPDATE_TIME, q.UPDATE_USER, q.STATUS }).ExecuteCommand();
                 db.Updateable(prepSrcList, trans.UserCode).UpdateColumns(q => new { q.UPDATE_TIME, q.UPDATE_USER, q.QTY_ACT_DLVY }).ExecuteCommand();
                 db.Insertable(batch, trans.UserCode).ExecuteCommand();
-                db.Updateable(sns, trans.UserCode).UpdateColumns(q => new { q.UPDATE_TIME, q.UPDATE_USER, q.STATUS, q.DLVY_BATCH }).ExecuteCommand();
+                db.Updateable(sns, trans.UserCode).UpdateColumns(q => new { q.UPDATE_TIME, q.UPDATE_USER, q.STATUS, q.DLVY_BATCH, q.REQ_ID, q.REQ_ORDER }).ExecuteCommand();
                 db.Updateable(items, trans.UserCode).UpdateColumns(q => new { q.UPDATE_TIME, q.UPDATE_USER, q.STATUS }).ExecuteCommand();
                 db.Insertable(history, trans.UserCode).ExecuteCommand();
             });
@@ -504,6 +537,8 @@
             {
                 sn.DLVY_BATCH = batch.DLVY_BATCH;
                 sn.STATUS = WMS_ITEM.STATUSs.Sended.GetValue();
+                sn.REQ_ID = batch.REQ_ID;
+                sn.REQ_ORDER = batch.REQ_ORDER;
             }
 
             var items = trans.MainDB.Queryable<WMS_ITEM>().Where(q => sns.Select(s => s.SN).Contains(q.SN)).ToList();
@@ -538,7 +573,7 @@
                 db.Updateable(trans.CurPREP.Order, trans.UserCode).UpdateColumns(q => new { q.UPDATE_TIME, q.UPDATE_USER, q.STATUS }).ExecuteCommand();
                 db.Updateable(prepSrcList, trans.UserCode).UpdateColumns(q => new { q.UPDATE_TIME, q.UPDATE_USER, q.QTY_ACT_DLVY }).ExecuteCommand();
                 db.Insertable(batch, trans.UserCode).ExecuteCommand();
-                db.Updateable(sns, trans.UserCode).UpdateColumns(q => new { q.UPDATE_TIME, q.UPDATE_USER, q.STATUS, q.DLVY_BATCH }).ExecuteCommand();
+                db.Updateable(sns, trans.UserCode).UpdateColumns(q => new { q.UPDATE_TIME, q.UPDATE_USER, q.STATUS, q.DLVY_BATCH, q.REQ_ID, q.REQ_ORDER }).ExecuteCommand();
                 db.Updateable(items, trans.UserCode).UpdateColumns(q => new { q.UPDATE_TIME, q.UPDATE_USER, q.STATUS }).ExecuteCommand();
                 db.Insertable(history, trans.UserCode).ExecuteCommand();
                 if (orders.Any())
@@ -598,15 +633,40 @@
                 item.QTY_ACT_DLVY = item.QTY_ACT_REQ;
             }
             trans.CurPREP.Order.STATUS = BIZ_WMS_PREP.STATUSs.Sended.GetValue();
-            //var orders = trans.MainDB.Queryable<BIZ_WMS_TRANSFER>().Where(q => trans.CurPREP.Order.SourceOrders.Select(s => s.SOURCE_ORDER).Contains(q.ORDER_NO)).ToList();
-            //foreach (var item in orders)
-            //{
-            //    item.STATUS = BIZ_WMS_TRANSFER.STATUSs.Sended.GetValue();
-            //    item.PREP_PERSON = trans.UserCode;
-            //    item.FINISH_TIME = DateTime.Now;
-            //    item.REQ_PERSON = trans.UserCode;
-            //    item.DLVY_TIME = DateTime.Now;
-            //}
+            var orders = trans.MainDB.Queryable<BIZ_WMS_TRANSFER>().Where(q => trans.CurPREP.Order.SourceOrders.Select(s => s.SOURCE_ORDER).Contains(q.ORDER_NO)).IncludesAllFirstLayer().ToList();
+            foreach (var order in orders)
+            {
+                order.STATUS = BIZ_WMS_TRANSFER.STATUSs.Sended.GetValue();
+                order.OUT_WH_CODE = string.Join(",", trans.CurPREP.Order.SnList.Select(q => q.WH_CODE).Distinct());
+                foreach (var dtl in order.Details)
+                {
+                    dtl.STATUS = BIZ_WMS_TRANSFER.STATUSs.Sended.GetValue();
+                    dtl.OUT_WH_CODE = string.Join(",", trans.CurPREP.Order.SnList.Select(q => q.WH_CODE).Distinct());
+                    dtl.QTY_OUT = dtl.QTY_REQ;
+                    dtl.OUT_LOTNO = string.Join(",", trans.CurPREP.Order.SnList.Select(q => q.LOTNO).Distinct());
+                }
+                order.SnList ??= new();
+                foreach (var sn in trans.CurPREP.Order.SnList)
+                {
+                    var dtl = order.Details.Where(q => q.ITEM_CODE ==  sn.ITEM_CODE).First();
+                    order.SnList.Add(new()
+                    {
+                        AUTH_ORG = dtl.AUTH_ORG,
+                        ORDER_NO = dtl.ORDER_NO,
+                        ORDER_LINE = dtl.ORDER_LINE,
+                        SN = sn.SN,
+                        STATUS = sn.STATUS,
+                        ITEM_CODE = sn.ITEM_CODE,
+                        QTY = sn.QTY,
+                        LOTNO = sn.LOTNO,
+                        OUT_WH_CODE = sn.WH_CODE,
+                        OUT_REGION_CODE = sn.REGION_CODE,
+                        OUT_SHELF_CODE = sn.SHELF_CODE,
+                        OUT_LOCATION_CODE = sn.LOCATION_CODE,
+                        OUT_TIME = DateTime.Now,
+                    });
+                }
+            }
             var items = trans.MainDB.Queryable<WMS_ITEM>().Where(q => q.TRANS_NO == trans.CurPREP.Order.ORDER_NO).ToList();
             var history = new List<WMS_ITEM_HIS>();
             foreach(var item in items)
@@ -626,7 +686,9 @@
                     .SetColumns(q => q.DLVY_BATCH == batch.DLVY_BATCH).SetColumns(q => q.STATUS == WMS_ITEM.STATUSs.Sended.GetValue()).ExecuteCommand();
                 db.Updateable(items, trans.UserCode).UpdateColumns(q => new { q.UPDATE_TIME, q.UPDATE_USER, q.STATUS }).ExecuteCommand();
                 db.Insertable(history, trans.UserCode).ExecuteCommand();
-                //db.Updateable(orders, trans.UserCode).UpdateColumns(q => new { q.UPDATE_TIME, q.UPDATE_USER, q.STATUS, q.PREP_PERSON, q.FINISH_TIME, q.REQ_PERSON, q.DLVY_TIME }).ExecuteCommand();
+                db.Updateable(orders, trans.UserCode).UpdateColumns(q => new { q.UPDATE_TIME, q.UPDATE_USER, q.STATUS, q.OUT_WH_CODE }).ExecuteCommand();
+                db.Updateable(orders.SelectMany(q => q.Details).ToList(), trans.UserCode).UpdateColumns(q => new { q.UPDATE_TIME, q.UPDATE_USER, q.STATUS, q.OUT_WH_CODE, q.QTY_OUT, q.OUT_LOTNO }).ExecuteCommand();
+                db.Storageable(orders.SelectMany(q => q.SnList).ToList(), trans.UserCode).ToStorage().AsInsertable.ExecuteCommand();
             });
             if (dbTran.IsSuccess)
             {

--
Gitblit v1.9.3