From daea1a90c2fa1b5cc2f52e62be15bd95cc4155f6 Mon Sep 17 00:00:00 2001
From: Tiandele <tiandele@hnkhzn.com>
Date: 星期五, 20 三月 2026 17:16:04 +0800
Subject: [PATCH] 优化手动锁车逻辑

---
 项目代码/WMS/WMSServer/WIDESEA_StoragIntegrationServices/MES/Partial/pullLock.cs |  146 ++++++++++++++++++++++++++++++------------------
 1 files changed, 92 insertions(+), 54 deletions(-)

diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServer/WIDESEA_StoragIntegrationServices/MES/Partial/pullLock.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServer/WIDESEA_StoragIntegrationServices/MES/Partial/pullLock.cs"
index b9af1b0..3ae3103 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServer/WIDESEA_StoragIntegrationServices/MES/Partial/pullLock.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServer/WIDESEA_StoragIntegrationServices/MES/Partial/pullLock.cs"
@@ -32,91 +32,129 @@
             {
                 if (string.IsNullOrEmpty(jsondata.ToString())) throw new Exception("璇锋眰鍙傛暟涓虹┖");
                 Console.WriteLine(jsondata);
-                var result = JsonConvert.DeserializeObject<pullLockInfo>(jsondata.ToString());
+                var result = JsonConvert.DeserializeObject<List<pullLockInfo>>(jsondata.ToString());
 
-                foreach (var item in result.data)
+                foreach (var item in result)
                 {
-                    Dt_PalletStockInfo carinfo = null;
+                    var assemblyOrderInfo = _assemblyOrderInfoRepository.QueryFirst(x => x.workOrderNo == item.workOrderNo && x.orderType == item.workOrderType);
+                    if (assemblyOrderInfo == null) throw new Exception($"鎷夊姩閿佽溅澶辫触:鏈煡鎬昏宸ュ崟鍙穥item.workOrderNo}");
+
+                    //Dt_PalletStockInfo carinfo = null;
+                    VV_StockInfo OutStock = new VV_StockInfo();
+                    //Dt_CarBodyInfo carbodyinfo = null;
                     if (!string.IsNullOrEmpty(item.pvi))
                     {
-                        carinfo = _palletStockInfoRepository.QueryFirst(x => x.PVI == item.pvi && x.pbMaterial == item.pbMaterial);
-                        if (carinfo == null)
+                        // carinfo = _palletStockInfoRepository.QueryFirst(x => x.PVI == item.pvi && x.pbMaterial == item.pbMaterial);
+                        //carbodyinfo = _carBodyRepository.QueryFirst(x => x.pbMaterial == item.pbMaterial && x.PVI == item.pvi);
+                        OutStock = _VVStockInfoRepository.QueryFirst(x => x.PVI == item.pvi && x.pbMaterial == item.pbMaterial && x.StockStatus == 0 && x.LockOrder == 0 && x.StayStatus == 0);
+                        if (OutStock == null)
                         {
                             throw new Exception($"鏈壘鍒版寚瀹歅VI杞﹁韩淇℃伅{item.pvi}");
                         }
                     }
                     else
                     {
-                        carinfo = _palletStockInfoRepository.QueryData(x => x.pbMaterial == item.pbMaterial).OrderBy(x => x.CreateDate).FirstOrDefault();
+                        //carinfo = _palletStockInfoRepository.QueryData(x => x.pbMaterial == item.pbMaterial).OrderBy(x => x.biwInPassTime).FirstOrDefault();
+                        //carbodyinfo = _carBodyRepository.QueryData(x => x.pbMaterial == item.pbMaterial && x.BodyStatus == 0).OrderBy(x => x.biwInPassTime).FirstOrDefault();
+                        OutStock = _VVStockInfoRepository.QueryData(x => x.pbMaterial == item.pbMaterial && x.StockStatus == 0 && x.LockOrder == 0 && x.StayStatus == 0 && x.workOrderType == item.workOrderType).OrderBy(x => x.biwInPassTime).FirstOrDefault();
                     }
 
-                    if (carinfo == null)
+                    if (OutStock == null)
                     {
-                        throw new Exception("鏃犳硶鍖归厤杞﹁韩,鎷夊姩閿佸畾澶辫触");
+                        throw new Exception("鏈尮閰嶅埌杞﹁韩,鎷夊姩閿佸畾澶辫触");
+                    }
+                    var stockInfo = _palletStockInfoRepository.QueryFirst(x => x.CarBodyInfo.PVI == OutStock.PVI);
+
+                    var carBody = _carBodyRepository.QueryFirst(x => x.PVI == OutStock.PVI);
+
+                    var lockInfo = _MESLockInfoRepository.QueryData().OrderByDescending(x => x.sequenceNo).FirstOrDefault();
+                    int serial = 1;
+                    if (lockInfo != null)
+                    {
+                        serial = lockInfo.sequenceNo + 1;
                     }
 
-                    Dt_Task task = new Dt_Task()
+                    Dt_MESLockInfo mESLockInfo = new Dt_MESLockInfo
                     {
+                        carBodyID = stockInfo.carBodyID,
+                        CarBodyInfo = carBody,
                         CreateDate = DateTime.Now,
                         Creater = "System",
-                        CurrentAddress = carinfo.LocationCode,
-                        Grade = 5,
-                        PalletCode = carinfo.PalletCode,
-                        PVI = item.pvi,
-                        Roadway = carinfo.RoadwayNo,
-                        SourceAddress = carinfo.LocationCode,
-                        TaskNum = _taskRepository.GetTaskNo().Result,
-                        TaskType = (int)TaskOutboundTypeEnum.Outbound,
-                        TaskState = (int)TaskOutStatusEnum.OutNew,
-                        TargetAddress = ""
+                        LockStatue = 0,
+                        sequenceNo = serial,
+                        TCLine = OutStock.RoadwayNo
                     };
 
-                    WMSTaskDTO taskDTO = new WMSTaskDTO()
-                    {
-                        Grade = task.Grade.Value,
-                        PalletCode = task.PalletCode,
-                        SourceAddress = task.SourceAddress,
-                        TargetAddress = task.TargetAddress,
-                        RoadWay = task.Roadway,
-                        TaskState = task.TaskState.Value,
-                        TaskType = task.TaskType,
-                        TaskNum = task.TaskNum.Value
-                    };
+                    #region 浠诲姟涓嬪彂
+                    //Dt_Task task = new Dt_Task()
+                    //{
+                    //    CreateDate = DateTime.Now,
+                    //    Creater = "System",
+                    //    CurrentAddress = carinfo.LocationCode,
+                    //    Grade = 5,
+                    //    PalletCode = carinfo.PalletCode,
+                    //    PVI = item.pvi,
+                    //    Roadway = carinfo.RoadwayNo,
+                    //    SourceAddress = carinfo.LocationCode,
+                    //    TaskNum = _taskRepository.GetTaskNo().Result,
+                    //    TaskType = (int)TaskOutboundTypeEnum.Outbound,
+                    //    TaskState = (int)TaskOutStatusEnum.OutNew,
+                    //    TargetAddress = ""
+                    //};
 
-                    var configs = _configService.GetConfigsByCategory(CateGoryConst.CONFIG_SYS_IPAddress);
-                    var wmsBase = configs.FirstOrDefault(x => x.ConfigKey == SysConfigConst.WCSIPAddress)?.ConfigValue;
-                    var ipAddress = configs.FirstOrDefault(x => x.ConfigKey == SysConfigConst.ReceiveTask)?.ConfigValue;
-                    if (wmsBase == null || ipAddress == null)
-                    {
-                        throw new InvalidOperationException("WMS IP 鏈厤缃�");
-                    }
-                    var wmsIpAddress = wmsBase + ipAddress;
+                    //WMSTaskDTO taskDTO = new WMSTaskDTO()
+                    //{
+                    //    Grade = task.Grade.Value,
+                    //    PalletCode = task.PalletCode,
+                    //    SourceAddress = task.SourceAddress,
+                    //    TargetAddress = task.TargetAddress,
+                    //    RoadWay = task.Roadway,
+                    //    TaskState = task.TaskState.Value,
+                    //    TaskType = task.TaskType,
+                    //    TaskNum = task.TaskNum.Value
+                    //};
+
+                    //var configs = _configService.GetConfigsByCategory(CateGoryConst.CONFIG_SYS_IPAddress);
+                    //var wmsBase = configs.FirstOrDefault(x => x.ConfigKey == SysConfigConst.WCSIPAddress)?.ConfigValue;
+                    //var ipAddress = configs.FirstOrDefault(x => x.ConfigKey == SysConfigConst.ReceiveTask)?.ConfigValue;
+                    //if (wmsBase == null || ipAddress == null)
+                    //{
+                    //    throw new InvalidOperationException("WMS IP 鏈厤缃�");
+                    //}
+                    //var wmsIpAddress = wmsBase + ipAddress; 
+                    #endregion
 
                     _unitOfWorkManage.BeginTran();
-                    var WCSresult = HttpHelper.PostAsync(wmsIpAddress, taskDTO.ToJsonString()).Result;
-                    content = JsonConvert.DeserializeObject<WebResponseContent>(WCSresult);
-                    if (content != null && content.Status)
-                    {
-                        carinfo.StockStatus = 1;
-                        carinfo.LockOrder = 1;
+                    //var WCSresult = HttpHelper.PostAsync(wmsIpAddress, taskDTO.ToJsonString()).Result;
+                    //content = JsonConvert.DeserializeObject<WebResponseContent>(WCSresult);
+                    //if (content != null && content.Status)
+                    //{
+                    stockInfo.StockStatus = 0;
+                    stockInfo.LockOrder = 1;
+                    carBody.BodyStatus = 1;
 
-                        _taskRepository.AddData(task);
-                        _palletStockInfoRepository.UpdateData(carinfo);
+                    _MESLockInfoRepository.AddData(mESLockInfo);
+                    //_taskRepository.AddData(task);
+                    _palletStockInfoRepository.UpdateData(stockInfo);
+                    //_carBodyRepository.UpdateData(carbodyinfo);
+                    _unitOfWorkManage.CommitTran();
+                    //}
 
-                        _unitOfWorkManage.CommitTran();
-                    }
+                    LogFactory.GetLog("MES鎷夊姩閿佽溅").Info(true, $"\r\r--------------------------------------");
+                    LogFactory.GetLog("MES鎷夊姩閿佽溅").Info(true, jsondata.ToJsonString());
+                    LockResult lockResult = new LockResult { result = "1", lockPvi = carBody.PVI };
+                    content.OK(data: lockResult);
                 }
-
-                LogFactory.GetLog("MES鎷夊姩閿佽溅").Info(true, $"\r\r--------------------------------------");
-                LogFactory.GetLog("MES鎷夊姩閿佽溅").Info(true, jsondata.ToJsonString());
-
-                return content;
             }
             catch (Exception ex)
             {
+                LogFactory.GetLog("MES鎷夊姩閿佽溅").Info(true, $"閿佽溅澶辫触:{ex.Message};璇锋眰鍙傛暟{jsondata.ToJsonString()}锛� ");
                 _unitOfWorkManage.RollbackTran();
-                return content.Error(ex.Message);
+                content.result = "2";
+                LockResult result = new LockResult { result = "2", lockPvi = "" };
+                content.Error(ex.Message, result);
             }
+            return content;
         }
     }
 }

--
Gitblit v1.9.3