From 659b0ed98c87b164b96ac43b3c0c8a7d2f975bf2 Mon Sep 17 00:00:00 2001
From: wangxinhui <wangxinhui@hnkhzn.com>
Date: 星期五, 28 二月 2025 10:51:20 +0800
Subject: [PATCH] Merge branch 'master' of http://115.159.85.185:8098/r/MeiRuiAn/HuaiAn

---
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService_Outbound.cs |  107 ++++++++++++++++++++++++++++++++++-------------------
 1 files changed, 68 insertions(+), 39 deletions(-)

diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService_Outbound.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService_Outbound.cs"
index acdd339..341b487 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService_Outbound.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService_Outbound.cs"
@@ -17,6 +17,7 @@
 using WIDESEA_Common.LocationEnum;
 using MailKit.Search;
 using WIDESEA_External.Model;
+using WIDESEA_Core.CodeConfigEnum;
 
 namespace WIDESEA_TaskInfoService
 {
@@ -143,6 +144,14 @@
                 (List<Dt_StockInfo>, Dt_OutboundOrderDetail, List<Dt_OutStockLockInfo>, List<Dt_LocationInfo>) result = _outboundService.OutboundOrderDetailService.AssignStockOutbound(outboundOrderDetail, stockSelectViews);
                 if (result.Item1 != null && result.Item1.Count > 0)
                 {
+                    Dt_OutboundOrder outboundOrder = _outboundService.OutboundOrderService.Repository.QueryFirst(x => x.Id == outboundOrderDetail.OrderId);
+                    TaskTypeEnum typeEnum = outboundOrder.OrderType switch
+                    {
+                        (int)OutOrderTypeEnum.Issue => TaskTypeEnum.Outbound,
+                        (int)OutOrderTypeEnum.Allocate => TaskTypeEnum.OutAllocate,
+                        (int)OutOrderTypeEnum.Quality => TaskTypeEnum.OutQuality,
+                        _ => new TaskTypeEnum()
+                    };
                     tasks = GetTasks(result.Item1, TaskTypeEnum.Outbound);
                     result.Item2.OrderDetailStatus = OrderDetailStatusEnum.Outbound.ObjToInt();
                     result.Item3.ForEach(x =>
@@ -189,7 +198,10 @@
             {
                 throw new Exception("鏈壘鍒板嚭搴撳崟鏄庣粏淇℃伅");
             }
-
+            if (outboundOrderDetails.FirstOrDefault(x => x.OrderDetailStatus > OrderDetailStatusEnum.New.ObjToInt() && x.OrderDetailStatus != OrderDetailStatusEnum.AssignOverPartial.ObjToInt()) != null)
+            {
+                throw new Exception("鎵�閫夊嚭搴撳崟鏄庣粏瀛樺湪鍑哄簱涓垨宸插畬鎴�");
+            }
             List<Dt_StockInfo>? stockInfos = null;
             List<Dt_OutboundOrderDetail>? orderDetails = null;
             List<Dt_OutStockLockInfo>? outStockLockInfos = null;
@@ -199,7 +211,15 @@
                 (List<Dt_StockInfo>, List<Dt_OutboundOrderDetail>, List<Dt_OutStockLockInfo>, List<Dt_LocationInfo>) result = _outboundService.OutboundOrderDetailService.AssignStockOutbound(outboundOrderDetails);
                 if (result.Item1 != null && result.Item1.Count > 0)
                 {
-                    tasks = GetTasks(result.Item1, TaskTypeEnum.Outbound);
+                    Dt_OutboundOrder outboundOrder =_outboundService.OutboundOrderService.Repository.QueryFirst(x => x.Id == outboundOrderDetails.FirstOrDefault().OrderId);
+                    TaskTypeEnum typeEnum = outboundOrder.OrderType switch
+                    {
+                        (int)OutOrderTypeEnum.Issue => TaskTypeEnum.Outbound,
+                        (int)OutOrderTypeEnum.Allocate=> TaskTypeEnum.OutAllocate,
+                        (int)OutOrderTypeEnum.Quality => TaskTypeEnum.OutQuality,
+                        _ =>new TaskTypeEnum()
+                    };
+                    tasks = GetTasks(result.Item1, typeEnum);
                     result.Item2.ForEach(x =>
                     {
                         x.OrderDetailStatus = OrderDetailStatusEnum.Outbound.ObjToInt();
@@ -264,6 +284,7 @@
         {
             try
             {
+                #region MyRegion
                 Dt_OutboundOrderDetail OrderDetail = _outboundService.OutboundOrderDetailService.Repository.QueryFirst(x => x.Id == orderDetailId);
 
                 if (OrderDetail == null)
@@ -352,44 +373,48 @@
                 _stockRepository.StockInfoDetailRepository.UpdateData(upstockDetails);
                 _stockRepository.StockInfoDetailRepository.DeleteData(destockDetails);
                 _unitOfWorkManage.CommitTran();
+                #endregion
 
                 #region 涓婃姤ERP
-                List<ERPPickModel> eRPPickModels = new List<ERPPickModel>();
-                outStockLockInfos.ForEach(x =>
+                if (outboundOrder.OrderStatus == OutOrderStatusEnum.鍑哄簱瀹屾垚.ObjToInt() && outboundOrder.OrderType==OutOrderTypeEnum.Issue.ObjToInt())
                 {
-                    ERPPickItemModel pickItemModel = new ERPPickItemModel()
-                    {
-                        Lotno = x.BatchNo,
-                        Qty = x.AssignQuantity.ToString(),
-                        Location = warehouse.WarehouseCode
-                    };
-                    ERPPickModel pickModel = new ERPPickModel()
-                    {
-                        Rowindex = OrderDetail.RowNo,
-                        Material = OrderDetail.MaterielCode,
-                        Qty = pickItemModel.Qty,
-                        Dataitem = new List<ERPPickItemModel> { pickItemModel }
-                    };
-                    eRPPickModels.Add(pickModel);
-                });
-                ERPIssueItemModel issueItemModel = new ERPIssueItemModel()
-                {
-                    Pickcode = outboundOrder.UpperOrderNo,
-                    PickList = eRPPickModels
-                };
-                ERPIssueModel issueModel = new ERPIssueModel()
-                {
-                    UniqueTag = outboundOrder.Id.ToString(),
-                    Code = outboundOrder.OrderNo,
-                    WarehouseCode = warehouse.WarehouseCode,
-                    Docremark = "",
-                    Deptno = outboundOrder.DepartmentCode,
-                    Deptname = outboundOrder.DepartmentName,
-                    Createtime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"),
-                    Createuser = App.User.UserName,
-                    Issitem = new List<ERPIssueItemModel>() { issueItemModel }
-                };
-                _invokeERPService.InvokeOutStandardsApi(issueModel);
+                    //List<ERPPickModel> eRPPickModels = new List<ERPPickModel>();
+                    //outStockLockInfos.ForEach(x =>
+                    //{
+                    //    ERPPickItemModel pickItemModel = new ERPPickItemModel()
+                    //    {
+                    //        Lotno = x.BatchNo,
+                    //        Qty = x.AssignQuantity.ToString(),
+                    //        Location = warehouse.WarehouseCode
+                    //    };
+                    //    ERPPickModel pickModel = new ERPPickModel()
+                    //    {
+                    //        Rowindex = OrderDetail.RowNo,
+                    //        Material = OrderDetail.MaterielCode,
+                    //        Qty = pickItemModel.Qty,
+                    //        Dataitem = new List<ERPPickItemModel> { pickItemModel }
+                    //    };
+                    //    eRPPickModels.Add(pickModel);
+                    //});
+                    //ERPIssueItemModel issueItemModel = new ERPIssueItemModel()
+                    //{
+                    //    Pickcode = outboundOrder.UpperOrderNo,
+                    //    PickList = eRPPickModels
+                    //};
+                    //ERPIssueModel issueModel = new ERPIssueModel()
+                    //{
+                    //    UniqueTag = outboundOrder.Id.ToString(),
+                    //    Code = _outboundService.OutboundOrderService.CreateCodeByRule(nameof(RuleCodeEnum.FLCodeRule)),
+                    //    WarehouseCode = warehouse.WarehouseCode,
+                    //    Docremark = "",
+                    //    Deptno = outboundOrder.DepartmentCode,
+                    //    Deptname = outboundOrder.DepartmentName,
+                    //    Createtime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"),
+                    //    Createuser = App.User.UserName,
+                    //    Issitem = new List<ERPIssueItemModel>() { issueItemModel }
+                    //};
+                    _invokeERPService.InvokeOutStandardsApi(_outboundService.OutboundOrderService.GetERPIssueModel(outboundOrder, warehouse.WarehouseCode));
+                }
                 #endregion
 
                 return WebResponseContent.Instance.OK();
@@ -418,6 +443,10 @@
                 BaseDal.AddData(tasks);
                 if (stockInfos != null && stockInfos.Count > 0 && outboundOrderDetails != null && outboundOrderDetails.Count > 0 && outStockLockInfos != null && outStockLockInfos.Count > 0 && locationInfos != null && locationInfos.Count > 0)
                 {
+                    stockInfos.ForEach(x =>
+                    {
+                        x.StockStatus = StockStatusEmun.鍑哄簱閿佸畾.ObjToInt();
+                    });
                     WebResponseContent content = _outboundService.OutboundOrderDetailService.LockOutboundStockDataUpdate(stockInfos, outboundOrderDetails, outStockLockInfos, locationInfos, tasks: tasks);
 
                     if (!content.Status)
@@ -452,7 +481,7 @@
         /// </summary>
         /// <param name="keys">鍑哄簱鍗曟槑缁嗕富閿�</param>
         /// <returns></returns>
-        public WebResponseContent GenerateOutboundTask(int[] keys)
+        public WebResponseContent GenerateOutboundTasks(int[] keys)
         {
             try
             {
@@ -506,7 +535,7 @@
             {
                 List<int> keys = _outboundService.OutboundOrderDetailService.Repository.QueryData(x => x.Id, x => x.OrderId == outboundId);
 
-                return GenerateOutboundTask(keys.ToArray());
+                return GenerateOutboundTasks(keys.ToArray());
             }
             catch (Exception ex)
             {

--
Gitblit v1.9.3