From 18ef8c37e6290ba6f47cbd5bbd26e56a682d767e Mon Sep 17 00:00:00 2001
From: yanjinhui <3306209981@qq.com>
Date: 星期一, 29 九月 2025 16:34:15 +0800
Subject: [PATCH] 1

---
 代码管理/WIDESEA_WMSServer/WIDESEA_SquareCabinServices/DeliveryOrderServices.cs |  182 ++++++++++++++++++++++++++++++++++++++-------
 1 files changed, 152 insertions(+), 30 deletions(-)

diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEA_WMSServer/WIDESEA_SquareCabinServices/DeliveryOrderServices.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEA_WMSServer/WIDESEA_SquareCabinServices/DeliveryOrderServices.cs"
index 559beea..a22e852 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEA_WMSServer/WIDESEA_SquareCabinServices/DeliveryOrderServices.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEA_WMSServer/WIDESEA_SquareCabinServices/DeliveryOrderServices.cs"
@@ -14,6 +14,8 @@
 using WIDESEA_Model.Models;
 using WIDESEA_SquareCabinRepository;
 using static WIDESEA_DTO.SquareCabin.OrderDto;
+using static WIDESEA_DTO.SquareCabin.TowcsDto;
+
 
 namespace WIDESEA_SquareCabinServices
 {
@@ -23,90 +25,191 @@
         {
         }
 
-   
 
 
+        static string SearchDate = "";
 
         /// <summary>
         /// 鑾峰彇涓婃父鍑哄簱鍗� 0鎴愬姛1澶辫触
         /// </summary>
         /// <param name="searchDate"></param>
         /// <returns></returns>
-        public WebResponseContent GetUpstreamOutOrder(DateTime searchDate)
+        public WebResponseContent GetUpstreamOutOrder()
         {
             var responseContent = new WebResponseContent();
             try
             {
-                //璇锋眰鍦板潃
-                var url = "http:/127.0.0.1:9000/GYZ2/95fck/outOrder";
-                //璇锋眰鍙傛暟
-                var requestDate = new
-                {
-                    searchDate = searchDate.ToString("yyyy-MM-dd:mm:ss")
-                };
+                // 璇锋眰鍦板潃
+                var url = "http://127.0.0.1:9000/GYZ2/95fck/outOrder";
 
-                //鍙戣捣璇锋眰
-                var reslu = HttpHelper.Post(url, requestDate.ToJsonString());
-                //鍙嶅簭鍒楀寲
-                var response = JsonConvert.DeserializeObject<UpstreamResponse<UpstramOutOrderInfo>>(reslu);
+                if (string.IsNullOrEmpty(SearchDate)) SearchDate = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
+                //// 璇锋眰鍙傛暟
+                var requestData = new
+                {
+                    searchDate = SearchDate
+                };
+                SearchDate = DateTime.Now.AddDays(-1).ToString("yyyy-MM-dd HH:mm:ss");
+                // 鍙戣捣璇锋眰
+                var result = HttpHelper.Post(url, requestData.ToJsonString());
+
+                // 鍙嶅簭鍒楀寲
+                var response = JsonConvert.DeserializeObject<UpstreamResponse<UpstramOutOrderInfo>>(result);
 
                 if (response.resultCode != "0")
                 {
-                    // 璋冪敤寮傚父鎺ュ彛
-                    SendErrorToUpstream(1, "", response.resultMsg ?? "涓婃父鎺ュ彛杩斿洖澶辫触", "");
+                    SendErrorToUpstream(3, "", response.resultMsg ?? "涓婃父鎺ュ彛杩斿洖澶辫触", "");
                     return responseContent.Error(response.resultMsg ?? "涓婃父鎺ュ彛杩斿洖澶辫触");
                 }
 
                 if (response.data == null || !response.data.Any())
                 {
-                    return responseContent.OK("鏃犳柊鍏ュ簱鍗曟暟鎹�");
+                    return responseContent.OK("鏃犳柊鍑哄簱鍗曟暟鎹�");
                 }
 
-                //寮�鍚簨鍔�
                 Db.Ado.BeginTran();
 
                 foreach (var outorder in response.data)
                 {
                     try
                     {
-                        //鎻掑叆鍑哄簱鍗�
-                        var OutOders = new Dt_DeliveryOrder
+                        // 鎻掑叆鍑哄簱鍗�
+                        var entityOrder = new Dt_DeliveryOrder
                         {
                             Out_no = outorder.out_no,
                             Out_type = outorder.out_type,
-                            Client_no=outorder.client_no,
+                            Client_no = outorder.client_no,
                             Account_time = outorder.account_time,
+                            OutStatus= "鏈畬鎴�",
                         };
-                        var outorderId = Db.Insertable(outorder).ExecuteReturnIdentity();//杩斿洖涓婚敭id
+                        var outorderId = Db.Insertable(entityOrder).ExecuteReturnIdentity();
 
-                        //鎻掑叆鍑哄簱鍗曟槑缁�
-                        var OutOrderDetails = outorder.details.Select(d => new Dt_DeliveryOrderDetail
+                        // 鎻掑叆鍑哄簱鍗曟槑缁�
+                        var detailEntities = outorder.details.Select(d => new Dt_DeliveryOrderDetail
                         {
                             DeliveryOrderId = outorderId,
                             Goods_no = d.goods_no,
                             Order_qty = d.out_qty,
                             Batch_num = d.batch_num,
-                            Exp_date = d.exp_date
+                            Exp_date = d.exp_date,
+                            OotDetailStatus="鏂板缓"
                         }).ToList();
-                        Db.Insertable(OutOrderDetails).ExecuteCommand();
+                        Db.Insertable(detailEntities).ExecuteCommand();
                     }
                     catch (Exception ex)
                     {
-
-                        // 閽堝鏌愭潯璁㈠崟鎶ラ敊鏃讹紝鎺ㄩ�佸紓甯哥粰涓婃父
                         SendErrorToUpstream(3, outorder.out_no, ex.Message, "");
-                        throw; // 鎶涘嚭寮傚父锛岃澶栧眰鎹曡幏鍥炴粴
+                        throw; // 璁╁灞傛崟鑾峰苟鍥炴粴
                     }
                 }
+
                 Db.Ado.CommitTran();
-                return responseContent.OK("鍚屾鍏ュ簱鍗曟垚鍔�");
+                return responseContent.OK("鍚屾鍑哄簱鍗曟垚鍔�");
             }
             catch (Exception ex)
             {
-                // 鍏ㄥ眬寮傚父鏃讹紝涔熸帹閫佸紓甯哥粰涓婃父
                 SendErrorToUpstream(3, "", ex.Message, "");
                 Db.Ado.RollbackTran();
                 return responseContent.Error("鍚屾澶辫触: " + ex.Message);
+            }
+        }
+
+        /// <summary>
+        /// 鍑哄簱鍗曟帹閫佺粰 WCS
+        /// </summary>
+        /// <returns></returns>
+        public WebResponseContent EdiOut()
+        {
+            var responseContent = new WebResponseContent();
+            try
+            {
+                // 1. 鏌ヨ绗﹀悎鏉′欢鐨勮鍗曪紙琛ㄥご=鏂板缓 && 鍖呭惈鏈夋晥鏄庣粏锛�
+                var outOrders = Db.Queryable<Dt_DeliveryOrder>()
+                    .Where(o => o.OutStatus == "鏂板缓")
+                    .Includes(o => o.Details, d => d.MedicineGoods)
+                    .ToList();
+
+                // 2. 鍐嶈繃婊ゆ帀涓嶇鍚堟潯浠剁殑鏄庣粏锛堝彧淇濈暀 Status=0 锛�
+                foreach (var order in outOrders)
+                {
+                    order.Details = order.Details.Where(d => d.Status == 0).ToList();
+                }
+
+                if (outOrders == null || !outOrders.Any())
+                {
+                    Console.WriteLine("娌℃湁绗﹀悎鏉′欢鐨勮鍗曢渶瑕佹帹閫�");
+                    return responseContent.Error("娌℃湁绗﹀悎鏉′欢鐨勮鍗曢渶瑕佹帹閫�");
+                }
+
+                foreach (var order in outOrders)
+                {
+                    try
+                    {
+                        // 3. 缁勮 DTO
+                        var ediDto = new TowcsDto.ToediOutInfo
+                        {
+                            customerCode = "905",
+                            materialCode = "YY",
+                            externalOrderNo = order.Out_no,
+                            outOrderType = order.Out_type == "1" ? "10" : order.Out_type == "2" ? "20" : "30",
+                            priority = 1,
+                            Is_cancel = 0,
+                            details = order.Details.Select(d => new TowcsDto.ToeOutdiInDetail
+                            {
+                                batchNo = d.Batch_num,
+                                productCode = d.Goods_no,
+                                productName = d.MedicineGoods?.Goods_spm,
+                                productSpecifications = d.MedicineGoods?.Model,
+                                quantity = (int)d.Order_qty,
+                                //stocktakingDetails = order.Out_type == "3"
+                                //    ? new List<ToOutediInStock>
+                                //      {
+                                //  new ToOutediInStock { palletCode = "FC00001", quantity = d.Order_qty.ToString() }
+                                //      }
+                                //    : null
+                            }).ToList()
+                        };
+
+                        // 4. 璋冪敤鎺ュ彛
+                        var url = "http://172.16.1.2:9357/file-admin/api/out/ediOut";
+                        var result = HttpHelper.Post(url, ediDto.ToJsonString());
+                        var resp = JsonConvert.DeserializeObject<TowcsDto.TowcsResponse<object>>(result);
+
+                        if (resp != null && resp.code == "0")
+                        {
+                            // 鏇存柊琛ㄥご鐘舵��
+                            Db.Updateable<Dt_DeliveryOrder>()
+                              .SetColumns(o => new Dt_DeliveryOrder { OutStatus = "寮�濮�" })
+                              .Where(o => o.Id == order.Id)
+                              .ExecuteCommand();
+
+                            // 鏇存柊鏄庣粏鐘舵��
+                            Db.Updateable<Dt_DeliveryOrderDetail>()
+                              .SetColumns(d => new Dt_DeliveryOrderDetail { Status = 1,OotDetailStatus="宸插畬鎴�" })
+                              .Where(d => d.DeliveryOrderId == order.Id && d.Status == 0)
+                              .ExecuteCommand();
+
+                            Console.WriteLine($"璁㈠崟 {order.Out_no} 鎺ㄩ�佹垚鍔�");
+                        }
+                        else
+                        {
+                            SendErrorToUpstream(3, order.Out_no, resp?.msg ?? "WCS 鎺ㄩ�佸け璐�", "");
+                            Console.WriteLine($"璁㈠崟 {order.Out_no} 鎺ㄩ�佸け璐ワ細{resp?.msg}");
+                        }
+                        //鍒犻櫎鍏ㄩ儴鐘朵负宸插畬鎴愮殑鏄庣粏鍜岃〃澶达紝绉诲叆鍘嗗彶琛�
+                    }
+                    catch (Exception ex)
+                    {
+                        SendErrorToUpstream(3, order.Out_no, ex.Message, "");
+                        Console.WriteLine($"璁㈠崟 {order.Out_no} 鎺ㄩ�佸紓甯革細{ex.Message}");
+                    }
+                }
+
+                return responseContent.OK("鍑哄簱璁㈠崟鎺ㄩ�佸畬鎴�");
+            }
+            catch (Exception ex)
+            {
+                Console.WriteLine("EdiOut 寮傚父锛�" + ex.Message);
+                return responseContent.Error("鍑哄簱璁㈠崟鎺ㄩ�佸け璐ワ細" + ex.Message);
             }
         }
 
@@ -133,6 +236,23 @@
                     SendErrorToUpstream(4, "", "涓婃父鎺ュ彛杩斿洖澶辫触", "");
                     return responseContent.Error(response.resultMsg ?? "涓婃父鎺ュ彛杩斿洖澶辫触");
                 }
+                //鍏堟煡澶磋〃
+                var outOerd=Db.Queryable<Dt_DeliveryOrder>()
+                    .Where(o => o.Out_no == out_no)
+                    .First();
+                if (outOerd == null)
+                {
+                    return responseContent.Error($"娌℃湁鎵惧埌璇ュ嚭搴撳崟鍙穥out_no}");
+                }
+                //鏌ユ壘鎵�鏈夋槑缁嗚〃鏄惁閮藉凡瀹屾垚
+                var incompleteDetails = Db.Queryable<Dt_DeliveryOrderDetail>()
+                    .Where(d => d.DeliveryOrderId == outOerd.Id && d.OotDetailStatus == "宸插畬鎴�")
+                    .ToList();  
+                // 鏇存柊鍑哄簱鍗曠姸鎬�
+                Db.Updateable<Dt_DeliveryOrder>()
+                  .SetColumns(o => new Dt_DeliveryOrder { OutStatus = "宸插畬鎴�" })
+                  .Where(o => o.Out_no == out_no)
+                  .ExecuteCommand();
                 return responseContent.OK("鎿嶄綔鎴愬姛");
             }
 
@@ -170,5 +290,7 @@
                 Console.WriteLine("寮傚父鎺ュ彛鎺ㄩ�佸け璐ワ細" + e.Message);
             }
         }
+
+     
     }
 }

--
Gitblit v1.9.3