From 75d16a23d059439c7478f8d3f6372c29072ba84e Mon Sep 17 00:00:00 2001
From: xiaojiao <xiaojiao@kaokeziliao.com>
Date: 星期三, 06 五月 2026 16:27:14 +0800
Subject: [PATCH] 完善任务执行步骤

---
 项目代码/WIDESEA_WCSServer/WIDESEAWCS_TaskInfoService/TaskService.cs |   92 ++++++++++++++++++++++++++++++---------------
 1 files changed, 61 insertions(+), 31 deletions(-)

diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WCSServer/WIDESEAWCS_TaskInfoService/TaskService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WCSServer/WIDESEAWCS_TaskInfoService/TaskService.cs"
index 43c1416..d30348a 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WCSServer/WIDESEAWCS_TaskInfoService/TaskService.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WCSServer/WIDESEAWCS_TaskInfoService/TaskService.cs"
@@ -52,6 +52,8 @@
         private readonly ITask_HtyRepository _taskHtyRepository;
         private readonly IApiInfoRepository _apiInfoRepository;
         private readonly IUnitOfWorkManage _unitOfWorkManage;
+        private readonly IDt_MaterialInfo_HtyRepository _MaterialInfo_HtyRepository;
+        private readonly IDt_MaterialInfoRepository _MaterialInfoRepository;
 
         private Dictionary<string, OrderByType> _taskOrderBy = new()
         {
@@ -70,7 +72,7 @@
         #endregion 鑾峰彇鎵�鏈変换鍔$被鍨嬨�佺姸鎬�
 
 
-        public TaskService(ITaskRepository BaseDal, IRouterService routerService, ITaskExecuteDetailService taskExecuteDetailService, ITaskExecuteDetailRepository taskExecuteDetailRepository, IMapper mapper, ISys_ConfigService sys_ConfigService, IDt_StationManagerService stationManagerService, IDt_StationManagerRepository stationManagerRepository, IRouterRepository routerRepository, ITask_HtyRepository htyRepository, IApiInfoRepository apiInfoRepository,IUnitOfWorkManage unitOfWorkManage) : base(BaseDal)
+        public TaskService(ITaskRepository BaseDal, IRouterService routerService, ITaskExecuteDetailService taskExecuteDetailService, ITaskExecuteDetailRepository taskExecuteDetailRepository, IMapper mapper, ISys_ConfigService sys_ConfigService, IDt_StationManagerService stationManagerService, IDt_StationManagerRepository stationManagerRepository, IRouterRepository routerRepository, ITask_HtyRepository htyRepository, IApiInfoRepository apiInfoRepository,IUnitOfWorkManage unitOfWorkManage, IDt_MaterialInfo_HtyRepository materialInfo_HtyRepository, IDt_MaterialInfoRepository materialInfoRepository) : base(BaseDal)
         {
             _routerService = routerService;
             _taskExecuteDetailService = taskExecuteDetailService;
@@ -83,6 +85,8 @@
             _taskHtyRepository = htyRepository;
             _apiInfoRepository = apiInfoRepository;
             _unitOfWorkManage = unitOfWorkManage;
+            _MaterialInfo_HtyRepository = materialInfo_HtyRepository;
+            _MaterialInfoRepository = materialInfoRepository;
         }
 
         /// <summary>
@@ -171,7 +175,7 @@
             WebResponseContent content = new WebResponseContent();
             try
             {
-                var task = BaseDal.QueryFirst(x => x.TaskNum == taskNum);
+                var task = BaseDal.QueryFirst(x => x.TaskId == taskNum);
                 if (task == null) return WebResponseContent.Instance.Error($"鏈壘鍒拌浠诲姟淇℃伅,浠诲姟鍙�:銆恵taskNum}銆�");
                 return UpdateTaskStatusToNext(task);
             }
@@ -193,26 +197,38 @@
             try
             {
                 int oldState = task.TaskState;
-                if (task.TaskState.GetTaskStateGroup() == TaskStateGroup.OutbondGroup)
+
+                #region 鑲栦郊宸蹭慨鏀�
+                //if (task.TaskState.GetTaskStateGroup() == TaskStateGroup.OutbondGroup)
+                //{
+                //    int nextStatus = task.TaskState.GetNextNotCompletedStatus<TaskAGVCarryStatusEnum>();
+
+                //    task.TaskState = nextStatus;
+
+                //    if (task.TaskState == (int)TaskAGVCarryStatusEnum.AGV_COMPLETED)
+                //    {
+
+                //        BaseDal.DeleteAndMoveIntoHty(task, App.User.UserId > 0 ? OperateTypeEnum.浜哄伐瀹屾垚 : OperateTypeEnum.鑷姩瀹屾垚);
+                //    }
+                //}
+                //else
+                //{
+                //    throw new Exception($"浠诲姟绫诲瀷閿欒,鏈壘鍒拌浠诲姟绫诲瀷,浠诲姟鍙�:銆恵task.TaskId}銆�,浠诲姟绫诲瀷:銆恵task.TaskType}銆�");
+                //}
+                #endregion 鑲栦郊宸蹭慨鏀�
+                int nextStatus = task.TaskState.GetNextNotCompletedStatus<TaskAGVCarryStatusEnum>();
+
+                task.TaskState = nextStatus;
+
+                if (task.TaskState == (int)TaskAGVCarryStatusEnum.AGV_COMPLETED)
                 {
-                    int nextStatus = task.TaskState.GetNextNotCompletedStatus<TaskAGVCarryStatusEnum>();
-
-                    task.TaskState = nextStatus;
-
-                    if (task.TaskState == (int)TaskAGVCarryStatusEnum.AGV_CarryFinish)
-                    {
-
-                        BaseDal.DeleteAndMoveIntoHty(task, App.User.UserId > 0 ? OperateTypeEnum.浜哄伐瀹屾垚 : OperateTypeEnum.鑷姩瀹屾垚);
-                    }
-                }
-                else
-                {
-                    throw new Exception($"浠诲姟绫诲瀷閿欒,鏈壘鍒拌浠诲姟绫诲瀷,浠诲姟鍙�:銆恵task.TaskNum}銆�,浠诲姟绫诲瀷:銆恵task.TaskType}銆�");
+                    //BaseDal.DeleteAndMoveIntoHty(task, App.User.UserId > 0 ? OperateTypeEnum.浜哄伐瀹屾垚 : OperateTypeEnum.鑷姩瀹屾垚);
+                    TaskCompleted(task.TaskId);
                 }
 
                 if (task.TaskState <= 0)
                 {
-                    return content = WebResponseContent.Instance.Error($"璇ヤ换鍔$姸鎬佷笉鍙烦杞埌涓嬩竴姝�,浠诲姟鍙�:銆恵task.TaskNum}銆�,浠诲姟鐘舵��:銆恵task.TaskState}銆�");
+                    return content = WebResponseContent.Instance.Error($"璇ヤ换鍔$姸鎬佷笉鍙烦杞埌涓嬩竴姝�,浠诲姟鍙�:銆恵task.TaskId}銆�,浠诲姟鐘舵��:銆恵task.TaskState}銆�");
                 }
 
                 task.ModifyDate = DateTime.Now;
@@ -224,17 +240,17 @@
                 #region 鏇存柊浠诲姟鐘舵��
 
                 // 鑾峰彇WMSip鍦板潃
-                var config = _sys_ConfigService.GetConfigsByCategory(CateGoryConst.CONFIG_SYS_IPAddress);
-                var wmsBase = config.FirstOrDefault(x => x.ConfigKey == SysConfigKeyConst.WMSIP_BASE)?.ConfigValue;
-                var updateTask = config.FirstOrDefault(x => x.ConfigKey == SysConfigKeyConst.UpdateTaskStatus)?.ConfigValue;
-                if (wmsBase == null || updateTask == null)
-                {
-                    throw new InvalidOperationException("WMS IP 鏈厤缃�");
-                }
-                var wmsIpAddress = wmsBase + updateTask;
+                //var config = _sys_ConfigService.GetConfigsByCategory(CateGoryConst.CONFIG_SYS_IPAddress);
+                //var wmsBase = config.FirstOrDefault(x => x.ConfigKey == SysConfigKeyConst.WMSIP_BASE)?.ConfigValue;
+                //var updateTask = config.FirstOrDefault(x => x.ConfigKey == SysConfigKeyConst.UpdateTaskStatus)?.ConfigValue;
+                //if (wmsBase == null || updateTask == null)
+                //{
+                //    throw new InvalidOperationException("WMS IP 鏈厤缃�");
+                //}
+                //var wmsIpAddress = wmsBase + updateTask;
 
-                var result = HttpHelper.PostAsync(wmsIpAddress, new { TaskNum = task.TaskNum, TaskState = task.TaskState }.ToJsonString()).Result;
-                content = JsonConvert.DeserializeObject<WebResponseContent>(result);
+                //var result = HttpHelper.PostAsync(wmsIpAddress, new { TaskNum = task.TaskNum, TaskState = task.TaskState }.ToJsonString()).Result;
+                //content = JsonConvert.DeserializeObject<WebResponseContent>(result);
 
                 #endregion 鏇存柊浠诲姟鐘舵��
 
@@ -298,7 +314,7 @@
             WebResponseContent content = new WebResponseContent();
             try
             {
-                var task = BaseDal.QueryFirst(x => x.TaskNum == taskNum);
+                var task = BaseDal.QueryFirst(x => x.TaskId == taskNum);
                 if (task == null) return WebResponseContent.Instance.Error($"鏈壘鍒拌浠诲姟淇℃伅,浠诲姟鍙�:銆恵taskNum}銆�");
 
                 int oldState = task.TaskState;
@@ -462,18 +478,32 @@
                     }
                     //浠诲姟瀹屾垚閫昏緫
                     _unitOfWorkManage.BeginTran();
+                    task.TaskState = (int)TaskAGVCarryStatusEnum.AGV_COMPLETED;
                     // 鎶婂綋鍓嶄换鍔℃煡鍑烘潵 鐒跺悗姣忎竴涓瓧娈佃祴鍊肩粰鍘嗗彶浠诲姟 鐒跺悗鍒犻櫎褰撳墠浠诲姟 娣诲姞涓�鏉″巻鍙蹭换鍔� // 鐒跺悗鎶婅繖涓换鍔$殑缁堢偣鐨勫搴旂珯鍙扮殑鐘舵�佽缃负鍚敤
                     Dt_Task_Hty dt_Task_Hty = _mapper.Map<Dt_Task_Hty>(task);
                     dt_Task_Hty.TaskNum = task.TaskId;
 
-                    Dt_StationManager dt_StationManager = _stationManagerRepository.QueryFirst(x => x.StationLocation == task.TargetAddress);
-                    if(dt_StationManager == null) return content.Error($"浠诲姟{taskNum}鐨勫綋鍓嶇珯鍙颁笉瀛樺湪");
-
+                    Dt_StationManager dt_StationManager = _stationManagerRepository.QueryFirst(x => x.StationLocation == task.TargetAddress);// 鐩殑浣嶇疆
+                    Dt_StationManager SourceAddress = _stationManagerRepository.QueryFirst(x => x.StationLocation == task.SourceAddress);// 璧峰浣嶇疆
+                    if(dt_StationManager == null) return content.Error($"浠诲姟{taskNum}鐨勭洰鐨勭珯鍙般�恵task.TargetAddress}銆戠珯鍙颁笉瀛樺湪");
+                    if(SourceAddress == null) return content.Error($"浠诲姟{taskNum}鐨勫綋鍓嶈捣濮嬨�恵task.SourceAddress}銆戠珯鍙颁笉瀛樺湪");
                     dt_StationManager.StationStatus = ((int)StationEnum.Enable).ToString();
+                    SourceAddress.StationStatus = ((int)StationEnum.Enable).ToString();
+
+
+                    Dt_MaterialInfo dt_MaterialInfo =  _MaterialInfoRepository.QueryFirst(x => x.ContainerCode == task.PalletCode);
+                    if (dt_MaterialInfo == null) return content.Error("鏌ヨ涓嶅埌鐩稿叧鏁版嵁 鎴栬�呭凡缁忚В缁戯紒");
+                    dt_MaterialInfo.IsBind = false;
+                    Dt_MaterialInfo_Hty dt_MaterialInfo_Hty = _mapper.Map<Dt_MaterialInfo_Hty>(dt_MaterialInfo);
+
+
+                    _MaterialInfo_HtyRepository.AddData(dt_MaterialInfo_Hty);
+                    _MaterialInfoRepository.DeleteData(dt_MaterialInfo);
 
                     _taskHtyRepository.AddData(dt_Task_Hty);
                     BaseDal.DeleteData(task);
                     _stationManagerRepository.UpdateData(dt_StationManager);
+                    _stationManagerRepository.UpdateData(SourceAddress);
 
                     _unitOfWorkManage.CommitTran();
                     content.OK("浠诲姟瀹屾垚");

--
Gitblit v1.9.3