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 |  320 +++++++++++++++++++++++++++++++++++++++-------------
 1 files changed, 238 insertions(+), 82 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 5039413..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>
@@ -442,6 +402,7 @@
                 tasks.ForEach(x =>
                 {
                     x.TargetAddress = model.Line;
+                    x.OrderNo = mesOutboundOrder.TaskNo;
                 });
                 _unitOfWorkManage.BeginTran();
 
@@ -497,11 +458,12 @@
 
                 Dt_StockInfoDetail stockInfoDetail = new Dt_StockInfoDetail()
                 {
+                    MaterielSpec = stockInfoDetail_Hty.MaterielSpec,
                     BatchNo = stockInfoDetail_Hty?.BatchNo ?? "",
                     EffectiveDate = model.ExpirationDate,
                     MaterielCode = model.MaterialCode,
                     InboundOrderRowNo = stockInfoDetail_Hty?.InboundOrderRowNo ?? 0,
-                    MaterielName = model.MaterialCode,
+                    MaterielName = stockInfoDetail_Hty.MaterielName,
                     ProductionDate = model.ProductionDate,
                     OrderNo = stockInfoDetail_Hty?.OrderNo ?? "",
                     OutboundQuantity = 0,
@@ -654,11 +616,14 @@
 
                 //}
                 #endregion
+                _unitOfWorkManage.BeginTran();
                 Db.InsertNav(mesOutboundOrder).Include(x => x.Details).ExecuteCommand();
+                _unitOfWorkManage.CommitTran();
                 return MesResponseContent.Instance.OK();
             }
             catch (Exception ex)
             {
+                _unitOfWorkManage.RollbackTran();
                 return MesResponseContent.Instance.Error(ex.Message);
             }
 
@@ -774,6 +739,7 @@
         {
             try
             {
+                //涓�娆″彧鍙戜竴鍗风墿鏂欏叆搴撴槑缁�
                 foreach (var item in model.MaterialLotInfo)
                 {
                     //鑾峰彇鐗╂枡淇℃伅
@@ -1029,28 +995,23 @@
                     StockStatus = StockStatusEmun.鍏ュ簱纭.ObjToInt(),
                     proStockInfoDetails = proStockInfoDetails
                 };
-                //鍒嗛厤璐т綅
-                locationInfo = _basicService.LocationInfoService.AssignLocation(locationInfo.RoadwayNo, ((PalletTypeEnum)proStockInfo.PalletType).ObjToInt(), proStockInfo.WarehouseId);
                 Dt_Task newTask = new Dt_Task()
                 {
                     CurrentAddress = bagInfoModel.WorkCenter,
                     Grade = 0,
-                    NextAddress = locationInfo.LocationCode,
+                    NextAddress = "",
                     PalletCode = proStockInfo.PalletCode,
                     Roadway = locationInfo.RoadwayNo,
                     SourceAddress = bagInfoModel.WorkCenter,
-                    TargetAddress = locationInfo.LocationCode,
+                    TargetAddress = "",
                     TaskType = TaskTypeEnum.InProduct.ObjToInt(),
                     TaskStatus = TaskStatusEnum.New.ObjToInt(),
                     WarehouseId = warehouse.WarehouseId,
                     PalletType = proStockInfo.PalletType
                 };
-                locationInfo.LocationStatus = LocationStatusEnum.Lock.ObjToInt();
-                
                 _unitOfWorkManage.BeginTran();
                 int taskId = BaseDal.AddData(newTask);
                 newTask.TaskId = taskId;
-                _basicRepository.LocationInfoRepository.UpdateData(locationInfo);
                 Db.InsertNav(mesProInOrder).Include(x => x.Details).ExecuteCommand();
                 Db.InsertNav(proStockInfo).Include(x => x.proStockInfoDetails).ExecuteCommand();
                 _unitOfWorkManage.CommitTran();
@@ -1065,18 +1026,32 @@
             }
             return content;
         }
+        //澶栧寘淇℃伅鎺ユ敹
         public MesResponseContent BoxStockin(MesBoxInfoModel boxInfoModel)
         {
             MesResponseContent content = new MesResponseContent();
             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,
@@ -1102,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("澶栧寘鎺ユ敹鎴愬姛");
@@ -1122,39 +1108,7 @@
             }
             return content;
         }
-        /// <summary>
-        /// 鎴愬搧杩斿伐鎻愬簱
-        /// </summary>
-        /// <param name="model"></param>
-        /// <returns></returns>
-        public MesResponseContent RworkTask(RworkTaskModel model)
-        {
-            try
-            {
-                Dt_Warehouse warehouse = _basicRepository.WarehouseRepository.QueryFirst(x => x.WarehouseCode == WarehouseEnum.HA72.ToString());
-                //鑾峰彇搴撳瓨璁板綍
-                List<Dt_StockInfo> stockInfos = _stockRepository.StockInfoRepository.Db.Queryable<Dt_StockInfo>().Where(x =>
-                  x.WarehouseId == warehouse.WarehouseId &&
-                  x.StockStatus == (int)StockStatusEmun.鍏ュ簱瀹屾垚).Includes(x => x.Details).ToList();
-                Dt_StockInfo? stockInfo = stockInfos.FirstOrDefault(x => x.Details.Any(x => x.BatchNo == model.ProductVersion));
-                if (stockInfo == null)
-                {
-                    return MesResponseContent.Instance.Error($"灏炬暟浠�:{model.ProductVersion}鏃犲彲鐢ㄥ簱瀛�");
-                }
-                Dt_Task exsit2 = Repository.QueryFirst(x => x.PalletCode == stockInfo.PalletCode);
-
-
-            }
-            catch (Exception ex)
-            {
-
-                throw;
-            }
-            return MesResponseContent.Instance.OK();
-        }
-
-
-
+        
 
         /// <summary>
         /// 鐢熸垚PP澶у嵎鍑哄簱浠诲姟
@@ -1647,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