From d8db1698c125618c1b5f62b009204ddc5d4eed5a Mon Sep 17 00:00:00 2001
From: wangxinhui <wangxinhui@hnkhzn.com>
Date: 星期三, 19 三月 2025 20:34:08 +0800
Subject: [PATCH] 成品代码更新....

---
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/MesTaskService.cs |  315 ++++++++++++++++++++++++++++++++++++++--------------
 1 files changed, 229 insertions(+), 86 deletions(-)

diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/MesTaskService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/MesTaskService.cs"
index f4369ea..86aad6c 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/MesTaskService.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/MesTaskService.cs"
@@ -295,46 +295,6 @@
             return content;
         }
         /// <summary>
-        /// WMS鍚屾鎴愬搧鍑哄簱鑷矼ES
-        /// </summary>
-        /// <param name="model"></param>
-        /// <returns></returns>
-        public WebResponseContent ShipmentOrderSync(MesShipmentOrderSync model)
-        {
-            WebResponseContent content = new WebResponseContent();
-            try
-            {
-                Dt_ApiInfo apiInfo = _apiInfoRepository.QueryFirst(x => x.ApiCode == APIEnum.WMS_MES_ShipmentOrderSync.ToString());
-                MESRoot<MesShipmentOrderSync> root = new MESRoot<MesShipmentOrderSync>()
-                {
-                    From = "WMS",
-                    DateTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"),
-                    Content = model
-                };
-                JsonSerializerSettings settings = new JsonSerializerSettings
-                {
-                    ContractResolver = new CamelCasePropertyNamesContractResolver()
-                };
-                string request = JsonConvert.SerializeObject(root, settings);
-                string response = HttpMesHelper.Post(apiInfo.ApiAddress, request);
-                MesResponseContent mesResponseContent = response.DeserializeObject<MesResponseContent>();
-                //璋冪敤鎺ュ彛
-                if (mesResponseContent.BSucc == true)
-                {
-                    content.OK(mesResponseContent.StrMsg);
-                }
-                else
-                {
-                    content.Error(mesResponseContent.StrMsg);
-                }
-            }
-            catch (Exception ex)
-            {
-                content.Error(ex.Message);
-            }
-            return content;
-        }
-        /// <summary>
         /// 
         /// </summary>
         /// <param name="stockInfo"></param>
@@ -498,6 +458,7 @@
 
                 Dt_StockInfoDetail stockInfoDetail = new Dt_StockInfoDetail()
                 {
+                    MaterielSpec = stockInfoDetail_Hty.MaterielSpec,
                     BatchNo = stockInfoDetail_Hty?.BatchNo ?? "",
                     EffectiveDate = model.ExpirationDate,
                     MaterielCode = model.MaterialCode,
@@ -1072,12 +1033,25 @@
             try
             {
                 Dt_Warehouse warehouse = _basicRepository.WarehouseRepository.QueryFirst(x => x.WarehouseCode == WarehouseEnum.HA101.ToString());
+                //鍒ゆ柇MES浼犲叆鐨勫嚭搴撳崟鍙锋槸鍚﹀瓨鍦�
+                Dt_ProOutOrder proOutOrder = _outboundRepository.ProOutOrderRepository.Db.Queryable<Dt_ProOutOrder>().Where(x=>x.ProOutOrderNo== boxInfoModel.ShipmentOrder).Includes(x=>x.Details).First();
+                if (proOutOrder==null)
+                {
+                    return content.Error($"鍗曞彿{boxInfoModel.ShipmentOrder}涓嶅瓨鍦�");
+                }
+                //鑾峰彇鎵�鏈夋垚鍝佸嚭搴撳唴鍖呬俊鎭�
+                List<Dt_ProStockInfoDetail> dt_ProStockInfos = _stockRepository.ProStockInfoDetailRepository.QueryData(x=>x.ProOutDetailStatus==StockStatusEmun.鍑哄簱瀹屾垚.ObjToInt());
                 //鑾峰彇MES鍐呭寘淇℃伅
                 List<Dt_MesProInOrderDetail> mesProInOrderDetails = new List<Dt_MesProInOrderDetail>();
                 foreach (var item in boxInfoModel.Bags)
                 {
                     foreach (var child in item.BagItems)
                     {
+                        Dt_ProStockInfoDetail? proStockInfoDetail = dt_ProStockInfos.Where(x=>x.BagNo==item.BagNo)?.FirstOrDefault();
+                        if (proStockInfoDetail==null)
+                        {
+                            return content.Error($"鍐呭寘{item.BagNo}璐х墿鐘舵�佸紓甯�");
+                        }
                         Dt_MesProInOrderDetail mesProInOrderDetail = new Dt_MesProInOrderDetail()
                         {
                             BagNo = item.BagNo,
@@ -1103,16 +1077,27 @@
                 {
                     proStockInfoDetails.Add(_mapper.Map<Dt_ProStockInfoDetail>(item));
                 }
+                proStockInfoDetails.ForEach(x =>
+                {
+                    x.ProOutDetailStatus = StockStatusEmun.骞冲簱鍏ュ簱瀹屾垚.ObjToInt();
+                });
+                
                 Dt_ProStockInfo proStockInfo = new Dt_ProStockInfo()
                 {
                     PalletCode = boxInfoModel.BoxNo,
                     PalletType = 0,
                     WarehouseId = warehouse.WarehouseId,
                     ShipmentOrder = boxInfoModel.ShipmentOrder,
-                    StockStatus = StockStatusEmun.鍏ュ簱瀹屾垚.ObjToInt(),
+                    StockStatus = StockStatusEmun.骞冲簱鍏ュ簱瀹屾垚.ObjToInt(),
                     proStockInfoDetails = proStockInfoDetails
                 };
                 _unitOfWorkManage.BeginTran();
+                //鏍规嵁澶栧寘淇℃伅瑙g粦鍐呭寘涓庤兌妗嗗簱瀛樺叧绯�
+                WebResponseContent UnBindContent = _stockService.ProStockInfoService.UnBindStock(proStockInfoDetails);
+                if (!UnBindContent.Status)
+                {
+                    throw new Exception(UnBindContent.Message);
+                }
                 Db.InsertNav(proStockInfo).Include(x => x.proStockInfoDetails).ExecuteCommand();
                 _unitOfWorkManage.CommitTran();
                 return content.OK("澶栧寘鎺ユ敹鎴愬姛");
@@ -1123,51 +1108,7 @@
             }
             return content;
         }
-        /// <summary>
-        /// 鎴愬搧杩斿伐鎻愬簱
-        /// </summary>
-        /// <param name="model"></param>
-        /// <returns></returns>
-        public MesResponseContent RworkTask(RworkTaskModel model)
-        {
-            MesResponseContent content = new MesResponseContent();
-            try
-            {
-                Dt_Warehouse warehouse = _basicRepository.WarehouseRepository.QueryFirst(x => x.WarehouseCode == WarehouseEnum.HA72.ToString());
-                if (warehouse==null)
-                {
-                    return MesResponseContent.Instance.Error("鏈壘鍒版浠撳簱");
-                }
-                Dt_MesRworkOutboundOrder mesRworkOutboundOrder = new Dt_MesRworkOutboundOrder()
-                {
-                    WarehouseId=warehouse.WarehouseId,
-                    TaskNo=model.TaskNo,
-                    OrderStatus = InOrderStatusEnum.鏈紑濮�.ObjToInt(),
-                    CreateType = OrderCreateTypeEnum.UpperSystemPush.ObjToInt(),
-                    ProductCode=model.ProductCode,
-                    ProductName=model.ProductName,
-                    ProductVersion=model.ProductVersion,
-                    DateCode=model.DateCode,
-                    RequiredQuantity=model.RequiredQuantity,
-                    FactoryCode= model.FactoryCode,
-                    SaleOrder=model.SaleOrder,
-                    InventoryType=model.InventoryType,
-                };
-                _unitOfWorkManage.BeginTran();
-                _outboundService.RworkOutboundOrderService.AddData(mesRworkOutboundOrder);
-                _unitOfWorkManage.CommitTran();
-                return content.OK("鎻愪緵杩斿簱鍗曟帴鏀舵垚鍔�");
-            }
-            catch (Exception ex)
-            {
-                _unitOfWorkManage.RollbackTran();
-                content.Error(ex.Message);
-            }
-            return content;
-        }
-
-
-
+        
 
         /// <summary>
         /// 鐢熸垚PP澶у嵎鍑哄簱浠诲姟
@@ -1660,5 +1601,207 @@
                 return WebResponseContent.Instance.Error(ex.Message);
             }
         }
+        /// <summary>
+        /// MES鎴愬搧鍑哄簱鍗曞悓姝ユ暟鎹鐞�
+        /// </summary>
+        public MesShipmentOrderSync MesOutSync(Dt_OutProStockInfo outProStockInfo, Dt_ProOutOrderDetail proOutOrderDetail)
+        {
+            List<MesShipOrderDetail> mesShipOrderDetails = new List<MesShipOrderDetail>();
+            //鑾峰彇鍑哄簱鍗�
+            Dt_ProOutOrder proOutOrder = _outboundService.ProOutOrderService.Repository.QueryFirst(x=>x.Id== proOutOrderDetail.ProOrderId);
+            //鑾峰彇瀹㈡埛
+            Dt_CustomerInfo customerInfo = _basicRepository.CustomerInfoRepository.QueryFirst(x=>x.Code==proOutOrderDetail.Customer);
+            
+            MesShipOrderDetail orderDetail = new MesShipOrderDetail()
+            {
+                ProductCode = proOutOrderDetail.PCode,
+                ProductVersion = proOutOrderDetail.PVer,
+                Qty = outProStockInfo.AssignQuantity,
+                SaleOrder = proOutOrderDetail.SaleOrder,
+                Sequence = outProStockInfo.Id,
+                WorkCenter = "SPCK_OUTER-001"
+            };
+            mesShipOrderDetails.Add(orderDetail);
+            MesShipmentOrderSync shipmentOrderSync = new MesShipmentOrderSync()
+            {
+                ShipmentOrder = proOutOrder.ProOutOrderNo,
+                PlantShipDate = proOutOrder.PlantShipDate.ToString("yyyy-MM-dd HH:mm:ss"),
+                Customer = proOutOrderDetail.Customer,
+                FactoryCode = proOutOrderDetail.FactoryCode,
+                ShipName = customerInfo.Name,
+                ShippingAddress = customerInfo.NickName,
+                OrderDetails = mesShipOrderDetails
+            };
+            return shipmentOrderSync;
+        }
+        /// <summary>
+        /// WMS鍚屾鎴愬搧鍑哄簱鑷矼ES
+        /// </summary>
+        public WebResponseContent ShipmentOrderSync(MesShipmentOrderSync model)
+        {
+            WebResponseContent content = new WebResponseContent();
+            try
+            {
+                Dt_ApiInfo apiInfo = _apiInfoRepository.QueryFirst(x => x.ApiCode == APIEnum.WMS_MES_ShipmentOrderSync.ToString());
+                MESRoot<MesShipmentOrderSync> root = new MESRoot<MesShipmentOrderSync>()
+                {
+                    From = "WMS",
+                    DateTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"),
+                    Content = model
+                };
+                JsonSerializerSettings settings = new JsonSerializerSettings
+                {
+                    ContractResolver = new CamelCasePropertyNamesContractResolver()
+                };
+                string request = JsonConvert.SerializeObject(root, settings);
+                string response = HttpMesHelper.Post(apiInfo.ApiAddress, request);
+                MesResponseContent mesResponseContent = response.DeserializeObject<MesResponseContent>();
+                //璋冪敤鎺ュ彛
+                if (mesResponseContent.BSucc == true)
+                {
+                    content.OK(mesResponseContent.StrMsg);
+                }
+                else
+                {
+                    content.Error(mesResponseContent.StrMsg);
+                }
+            }
+            catch (Exception ex)
+            {
+                content.Error(ex.Message);
+            }
+            return content;
+        }
+
+        /// <summary>
+        /// MES鎴愬搧杩斿伐鎻愬簱
+        /// </summary>
+        /// <param name="model"></param>
+        /// <returns></returns>
+        public MesResponseContent RworkTask(RworkTaskModel model)
+        {
+            MesResponseContent content = new MesResponseContent();
+            try
+            {
+                Dt_Warehouse warehouse = _basicRepository.WarehouseRepository.QueryFirst(x => x.WarehouseCode == WarehouseEnum.HA72.ToString());
+                if (warehouse == null)
+                {
+                    return content.Error($"灏炬暟浠撲俊鎭湭閰嶇疆");
+                }
+                Dt_MesRworkOutboundOrder rworkOutboundOrderOld = _outboundRepository.RworkOutboundOrderRepository.QueryFirst(x=>x.TaskNo== model.TaskNo);
+                if (rworkOutboundOrderOld==null)
+                {
+                    return content.Error($"鎻愬簱浠诲姟鍗晎model.TaskNo}宸插瓨鍦�");
+                }
+                Dt_MesRworkOutboundOrder mesRworkOutboundOrder = new Dt_MesRworkOutboundOrder()
+                {
+                    WarehouseId = warehouse.WarehouseId,
+                    TaskNo = model.TaskNo,
+                    OrderStatus = OutOrderStatusEnum.鏈紑濮�.ObjToInt(),
+                    CreateType = OrderCreateTypeEnum.UpperSystemPush.ObjToInt(),
+                    ProductCode = model.ProductCode,
+                    ProductName = model.ProductName,
+                    ProductVersion = model.ProductVersion,
+                    DateCode = model.DateCode,
+                    RequiredQuantity = model.RequiredQuantity,
+                    FactoryCode = model.FactoryCode,
+                    SaleOrder = model.SaleOrder,
+                    OrderType = model.InventoryType,
+                };
+                List<Dt_Task> tasks = new List<Dt_Task>();
+                List<Dt_ProStockInfo>? proStockInfos = null;
+                List<Dt_OutProStockInfo>? outProStockInfos = null;
+                List<Dt_LocationInfo>? locationInfos = null;
+                //鍒嗛厤搴撳瓨鐢熸垚鎻愬簱浠诲姟
+                (List<Dt_ProStockInfo>?, Dt_MesRworkOutboundOrder?, List<Dt_OutProStockInfo>?, List<Dt_LocationInfo>) result = _outboundService.RworkOutboundOrderService.AssignMesStocks(mesRworkOutboundOrder);
+                if (result.Item1!=null && result.Item1.Count>0)
+                {
+                    tasks = GetTasks(result.Item1, TaskTypeEnum.MesOutbound);
+                    result.Item2.OrderStatus = OrderDetailStatusEnum.Outbound.ObjToInt();
+                    result.Item3.ForEach(x =>
+                    {
+                        x.Status = OutLockStockStatusEnum.鍑哄簱涓�.ObjToInt();
+                    });
+
+                    proStockInfos = result.Item1;
+                    mesRworkOutboundOrder = result.Item2;
+                    outProStockInfos = result.Item3;
+                    locationInfos = result.Item4;
+                }
+                else
+                {
+                    throw new Exception("鏃犲簱瀛樺垎閰�");
+                }
+                tasks.ForEach(x =>
+                {
+                    x.TargetAddress = "5236";
+                    x.OrderNo = mesRworkOutboundOrder.TaskNo;
+                });
+                _unitOfWorkManage.BeginTran();
+
+                int id = BaseDal.AddData(tasks);
+                outProStockInfos.ForEach(x =>
+                {
+                    x.OrderNo = mesRworkOutboundOrder.TaskNo;
+                    x.OrderDetailId = id;
+                });
+                if (proStockInfos != null && proStockInfos.Count > 0 && outProStockInfos != null && outProStockInfos.Count > 0 && locationInfos != null && locationInfos.Count > 0)
+                {
+                    WebResponseContent updateContent = _outboundService.RworkOutboundOrderService.LockOutboundStockDataUpdate(proStockInfos, outProStockInfos, locationInfos, tasks: tasks);
+
+                    if (!updateContent.Status)
+                    {
+                        _unitOfWorkManage.RollbackTran();
+                        return content.Error(updateContent.Message);
+                    }
+                }
+                _outboundService.RworkOutboundOrderService.Repository.AddData(mesRworkOutboundOrder);
+                return content.OK("鎻愪緵杩斿簱鍗曟帴鏀舵垚鍔�");
+            }
+            catch (Exception ex)
+            {
+                _unitOfWorkManage.RollbackTran();
+                content.Error(ex.Message);
+            }
+            return content;
+        }
+        /// <summary>
+        /// 搴撳瓨鏉垮悓姝ユ帴鍙�
+        /// </summary>
+        public WebResponseContent ProductOutBoundSync(MesProductOutBound model)
+        {
+            WebResponseContent content = new WebResponseContent();
+            try
+            {
+                Dt_ApiInfo apiInfo = _apiInfoRepository.QueryFirst(x => x.ApiCode == APIEnum.WMS_MES_ProductOutBound.ToString());
+                MESRoot<MesProductOutBound> root = new MESRoot<MesProductOutBound>()
+                {
+                    From = "WMS",
+                    DateTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"),
+                    Content = model
+                };
+                JsonSerializerSettings settings = new JsonSerializerSettings
+                {
+                    ContractResolver = new CamelCasePropertyNamesContractResolver()
+                };
+                string request = JsonConvert.SerializeObject(root, settings);
+                string response = HttpMesHelper.Post(apiInfo.ApiAddress, request);
+                MesResponseContent mesResponseContent = response.DeserializeObject<MesResponseContent>();
+                //璋冪敤鎺ュ彛
+                if (mesResponseContent.BSucc == true)
+                {
+                    content.OK(mesResponseContent.StrMsg);
+                }
+                else
+                {
+                    content.Error(mesResponseContent.StrMsg);
+                }
+            }
+            catch (Exception ex)
+            {
+                content.Error(ex.Message);
+            }
+            return content;
+        }
     }
 }

--
Gitblit v1.9.3