From f54b7815d8451f362554e3d2d09b4991ce13d4ff Mon Sep 17 00:00:00 2001
From: wangxinhui <wangxinhui@hnkhzn.com>
Date: 星期三, 12 十一月 2025 09:01:16 +0800
Subject: [PATCH] 前端优化,PDA更新,分配库存优化

---
 项目代码/WMS/WMSServices/WIDESEA_TaskInfoService/MesTaskService.cs |   97 ++++++++++++++++++++++++++++++++++++++----------
 1 files changed, 77 insertions(+), 20 deletions(-)

diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_TaskInfoService/MesTaskService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_TaskInfoService/MesTaskService.cs"
index 1ded967..4a23a1a 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_TaskInfoService/MesTaskService.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_TaskInfoService/MesTaskService.cs"
@@ -30,6 +30,9 @@
 using SqlSugar;
 using OfficeOpenXml.FormulaParsing.Excel.Functions.RefAndLookup;
 using WIDESEA_DTO.MES;
+using WIDESEA_External.Model;
+using System.Text.Json;
+using System.Text.RegularExpressions;
 
 namespace WIDESEA_TaskInfoService
 {
@@ -55,9 +58,9 @@
                 {
                     return content.Error($"棰嗘枡璁″垝{nameof(MESAutoIssueDTO.OutDetailId)}{autoIssueDTO.OutDetailId}涓嶅瓨鍦�");
                 }
-                if (outMESOrder.OutMESOrderStatus==OutOrderStatusEnum.鍏抽棴.ObjToInt())
+                if (outMESOrder.OutMESOrderStatus==OutOrderStatusEnum.鍑哄簱瀹屾垚.ObjToInt())
                 {
-                    return content.Error($"棰嗘枡璁″垝{nameof(MESAutoIssueDTO.OutDetailId)}{outMESOrder.ProductOrderNo}宸ュ崟宸插叧闂�");
+                    return content.Error($"棰嗘枡璁″垝{nameof(MESAutoIssueDTO.OutDetailId)}{outMESOrder.ProductOrderNo}宸ュ崟宸插嚭搴撳畬鎴�");
                 }
                 //鑾峰彇鍛ㄨ浆浣嶇疆缂栧彿
                 Dt_AGVStationInfo? stationInfo = _basicRepository.AGVStationInfoRepository.QueryFirst(x=>x.MESPointCode==autoIssueDTO.PointCode);
@@ -69,22 +72,53 @@
                 {
                     return content.Error($"棰嗘枡璁″垝鍛ㄨ浆浣峽nameof(MESAutoIssueDTO.PointCode)}{autoIssueDTO.PointCode}瀛樺湪绌烘墭");
                 }
-                //Dt_Task? task = BaseDal.QueryData(x => x.OrderNo == outMESOrder.OutMESOrderNo && x.TaskStatus == TaskStatusEnum.CallPending.ObjToInt()).OrderByDescending(x => x.Grade).ThenBy(x => x.TaskNum).FirstOrDefault();
-                ////鑾峰彇浠诲姟
-                //if (task == null)
-                //{
-                //    return content.Error($"鏈壘鍒伴鏂欒鍒掔紪鍙穥outMESOrder.ProductOrderNo}鍙厤閫佷换鍔�");
-                //}
-                //task.TaskStatus = TaskStatusEnum.New.ObjToInt();
-                //task.TargetAddress = stationInfo.AGVStationCode;
-                //PushTasksToWCS(new List<Dt_Task> { task });
+                Dt_Task? task = BaseDal.QueryData(x => x.OrderNo == outMESOrder.OutMESOrderNo && x.TaskStatus == TaskStatusEnum.CallPending.ObjToInt()).OrderByDescending(x => x.Grade).ThenBy(x => x.TaskNum).FirstOrDefault();
+                //鑾峰彇浠诲姟
+                if (task == null)
+                {
+                    return content.Error($"鏈壘鍒伴鏂欒鍒掔紪鍙穥outMESOrder.ProductOrderNo}鍙厤閫佷换鍔�");
+                }
+                //鑾峰彇浠诲姟鍑哄簱璇︽儏
+                Dt_OutStockLockInfo outStockLockInfo = _outboundRepository.OutStockLockInfoRepository.QueryFirst(x => x.TaskNum == task.TaskNum);
+                //璋冪敤MES閰嶉�佸嚭鍙戞寚浠�
+                PlanDistributionInfo planDistribution = new PlanDistributionInfo()
+                {
+                    DispatchPlanMaterialId = autoIssueDTO.OutDetailId,
+                    InvItemCode = task.MaterielCode,
+                    Quantity = outStockLockInfo.AssignQuantity,
+                    SendOutTime = DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss"),
+                    ArrivalTime = DateTime.Now.AddMinutes(10).ToString("yyyy-MM-dd hh:mm:ss")
+                };
+                MESDispatchModel dispatchModel= new MESDispatchModel()
+                {
+                    PRO_DispachPlanDistributionInfos=new List<PlanDistributionInfo> (){ planDistribution }
+                };
+                _unitOfWorkManage.BeginTran();
+                task.TaskStatus = TaskStatusEnum.New.ObjToInt();
+                task.TargetAddress = stationInfo.AGVStationCode;
+                BaseDal.UpdateData(task);
+                MESResponse mESResponse = _invokeMESService.MESDispatchUp(dispatchModel).DeserializeObject<MESResponse>() ?? throw new Exception("鏈幏鍙栧埌杩斿洖淇℃伅");
+                if (!mESResponse.Result)
+                {
+                    throw new Exception($"MES閰嶉�佸嚭鍙戞帴鍙h皟鐢ㄦ姤閿�,MES杩斿洖淇℃伅{DecodeUnicode(mESResponse.Msg)}");
+                }
+                PushTasksToWCS(new List<Dt_Task> { task });
+                _unitOfWorkManage.CommitTran();
                 return content.OK("鍙枡鎴愬姛");
             }
             catch (Exception ex)
             {
+                _unitOfWorkManage.RollbackTran();
                 content.Error(ex.Message);
             }
             return content;
+        }
+        //灏哢nicode瑙f瀽鎴愪腑鏂�
+        public static string DecodeUnicode(string input)
+        {
+            return Regex.Replace(input, @"\\u([0-9a-fA-F]{4})", match => {
+                return ((char)Convert.ToInt32(match.Groups[1].Value, 16)).ToString();
+            });
         }
 
         public WebResponseContent ReceiveManualIssue(MESManualIssueDTO manualIssueDTO)
@@ -112,15 +146,38 @@
                 {
                     return content.Error($"棰嗘枡璁″垝鍛ㄨ浆浣峽nameof(MESAutoIssueDTO.PointCode)}{manualIssueDTO.PointCode}涓嶅瓨鍦�");
                 }
-                //Dt_Task? task = BaseDal.QueryData(x => x.OrderNo == outMESOrder.OutMESOrderNo && x.TaskStatus == TaskStatusEnum.CallPending.ObjToInt()).OrderByDescending(x => x.Grade).ThenBy(x => x.TaskNum).FirstOrDefault();
-                ////鑾峰彇浠诲姟
-                //if (task == null)
-                //{
-                //    return content.Error($"鏈壘鍒伴鏂欒鍒掔紪鍙穥outMESOrder.ProductOrderNo}鍙厤閫佷换鍔�");
-                //}
-                //task.TaskStatus = TaskStatusEnum.New.ObjToInt();
-                //task.TargetAddress = stationInfo.AGVStationCode;
-                //PushTasksToWCS(new List<Dt_Task> { task });
+                Dt_Task? task = BaseDal.QueryData(x => x.OrderNo == outMESOrder.OutMESOrderNo && x.TaskStatus == TaskStatusEnum.CallPending.ObjToInt()).OrderByDescending(x => x.Grade).ThenBy(x => x.TaskNum).FirstOrDefault();
+                //鑾峰彇浠诲姟
+                if (task == null)
+                {
+                    return content.Error($"鏈壘鍒伴鏂欒鍒掔紪鍙穥outMESOrder.ProductOrderNo}鍙厤閫佷换鍔�");
+                }
+                //鑾峰彇浠诲姟鍑哄簱璇︽儏
+                Dt_OutStockLockInfo outStockLockInfo = _outboundRepository.OutStockLockInfoRepository.QueryFirst(x => x.TaskNum == task.TaskNum);
+                //璋冪敤MES閰嶉�佸嚭鍙戞寚浠�
+                PlanDistributionInfo planDistribution = new PlanDistributionInfo()
+                {
+                    DispatchPlanMaterialId = manualIssueDTO.OutDetailId,
+                    InvItemCode = task.MaterielCode,
+                    Quantity = outStockLockInfo.AssignQuantity,
+                    SendOutTime = DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss"),
+                    ArrivalTime = DateTime.Now.AddMinutes(10).ToString("yyyy-MM-dd hh:mm:ss")
+                };
+                MESDispatchModel dispatchModel = new MESDispatchModel()
+                {
+                    PRO_DispachPlanDistributionInfos = new List<PlanDistributionInfo>() { planDistribution }
+                };
+                _unitOfWorkManage.BeginTran();
+                task.TaskStatus = TaskStatusEnum.New.ObjToInt();
+                task.TargetAddress = stationInfo.AGVStationCode;
+                BaseDal.UpdateData(task);
+                MESResponse mESResponse = _invokeMESService.MESDispatchUp(dispatchModel).DeserializeObject<MESResponse>() ?? throw new Exception("鏈幏鍙栧埌杩斿洖淇℃伅");
+                if (!mESResponse.Result)
+                {
+                    throw new Exception($"MES閰嶉�佸嚭鍙戞帴鍙h皟鐢ㄦ姤閿�,MES杩斿洖淇℃伅{DecodeUnicode(mESResponse.Msg)}");
+                }
+                PushTasksToWCS(new List<Dt_Task> { task });
+                _unitOfWorkManage.CommitTran();
                 return content.OK("鍙枡鎴愬姛");
             }
             catch (Exception ex)

--
Gitblit v1.9.3