From c362218b8ef0af6402d3715fbed040ac1cbe0433 Mon Sep 17 00:00:00 2001
From: duyongjia <adu_555@163.com>
Date: 星期五, 29 十一月 2024 14:32:18 +0800
Subject: [PATCH] 最新上传

---
 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs |  941 +++++++++++++++++++++++++++++++++++++++++++++++++++++++---
 1 files changed, 880 insertions(+), 61 deletions(-)

diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs"
index 231fa5d..dd4bf5a 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs"
@@ -16,9 +16,12 @@
 #endregion << 鐗� 鏈� 娉� 閲� >>
 
 using AutoMapper;
+using Newtonsoft.Json;
 using OfficeOpenXml.FormulaParsing.Excel.Functions.Text;
 using SqlSugar;
+using SqlSugar.Extensions;
 using System;
+using System.Collections;
 using System.Collections.Generic;
 using System.ComponentModel;
 using System.Diagnostics.CodeAnalysis;
@@ -26,11 +29,16 @@
 using System.Reflection;
 using System.Text;
 using System.Threading.Tasks;
+using WIDESEAWCS_Common.LocationEnum;
+using WIDESEAWCS_Common.ServiceLog;
 using WIDESEAWCS_Common.TaskEnum;
 using WIDESEAWCS_Core;
+using WIDESEAWCS_Core.BaseRepository;
 using WIDESEAWCS_Core.BaseServices;
 using WIDESEAWCS_Core.Enums;
+using WIDESEAWCS_Core.Helper;
 using WIDESEAWCS_DTO.TaskInfo;
+using WIDESEAWCS_IBasicRepository;
 using WIDESEAWCS_ITaskInfoRepository;
 using WIDESEAWCS_ITaskInfoService;
 using WIDESEAWCS_Model.Models;
@@ -44,7 +52,10 @@
         private readonly IRouterService _routerService;
         private readonly ITaskExecuteDetailService _taskExecuteDetailService;
         private readonly ITaskExecuteDetailRepository _taskExecuteDetailRepository;
+        private readonly ILocationInfoRepository _locationInfoRepository;
         private readonly IMapper _mapper;
+        private readonly IUnitOfWorkManage _unitOfWorkManage;
+        private readonly ITaskRepository _taskRepository;
 
         private Dictionary<string, OrderByType> _taskOrderBy = new()
             {
@@ -58,12 +69,19 @@
 
         public List<int> TaskOutboundTypes => typeof(TaskOutboundTypeEnum).GetEnumIndexList();
 
-        public TaskService(ITaskRepository BaseDal, IRouterService routerService, ITaskExecuteDetailService taskExecuteDetailService, ITaskExecuteDetailRepository taskExecuteDetailRepository, IMapper mapper) : base(BaseDal)
+        public List<int> TaskRelocationboundTypes => typeof(TaskRelocationTypeEnum).GetEnumIndexList();
+
+        public List<int> TaskOtherboundTypes => typeof(TaskOtherTypeEnum).GetEnumIndexList();
+
+        public TaskService(ITaskRepository BaseDal, IRouterService routerService, ITaskExecuteDetailService taskExecuteDetailService, ITaskExecuteDetailRepository taskExecuteDetailRepository, IMapper mapper, ILocationInfoRepository locationInfoRepository, IUnitOfWorkManage unitOfWorkManage, ITaskRepository taskRepository) : base(BaseDal)
         {
             _routerService = routerService;
             _taskExecuteDetailService = taskExecuteDetailService;
             _taskExecuteDetailRepository = taskExecuteDetailRepository;
             _mapper = mapper;
+            _locationInfoRepository = locationInfoRepository;
+            _unitOfWorkManage = unitOfWorkManage;
+            _taskRepository = taskRepository;
         }
 
         /// <summary>
@@ -122,6 +140,344 @@
             return content;
         }
 
+
+        /// <summary>
+        /// 鎺ユ敹MES浠诲姟淇℃伅
+        /// </summary>
+        /// <param name="taskDTO">MES浠诲姟瀵硅薄</param>
+        /// <returns>杩斿洖澶勭悊缁撴灉</returns>
+        public WebResponseContent ReceiveMESTask([NotNull] MESTaskDTO taskDTO)
+        {
+            WebResponseContent content = new WebResponseContent();
+            try
+            {
+                string inparam = JsonConvert.SerializeObject(taskDTO);
+                
+                ServiceLogger.WriteDebug("ReceiveTask", $"ReceiveMESTask鏂规硶鍏ュ弬{inparam}"); 
+                Dt_Task task = new Dt_Task();
+                Dt_Task taskinfo = BaseDal.QueryFirst(x => x.TaskNum == taskDTO.task_id);
+                if(taskDTO.cmd==101)//濡傛灉鏄�101鎸夋棫鐨勪换鍔″彿鍘绘煡
+                {
+                    taskinfo = BaseDal.QueryFirst(x => x.TaskNum == taskDTO.weight);
+                }
+
+                if (taskDTO.cmd!=3001&& taskDTO.cmd != 101 && taskinfo != null)
+                {
+                    ServiceLogger.WriteDebug("ReceiveTask", $"浠诲姟鍙烽噸澶嶏紝浠诲姟鍙凤細{taskDTO.task_id}");
+                    return content = WebResponseContent.Instance.Error($"浠诲姟鍙烽噸澶嶏紝浠诲姟鍙凤細{taskDTO.task_id}");
+                }
+                Dt_LocationInfo locationsrc = _locationInfoRepository.QueryFirst(x => x.Remark == taskDTO.src_station.ToString());
+                Dt_LocationInfo locationdsc = _locationInfoRepository.QueryFirst(x => x.Remark == taskDTO.dest_station.ToString());
+                switch (taskDTO.cmd)
+                {
+                    case 1001://AGV璇锋眰鍏ュ簱
+                        task.TaskType = (int)TaskInboundTypeEnum.Inbound;
+                        task.TaskState = (int)TaskInStatusEnum.InNew;
+                        task.Roadway = "SC01";
+                        task.Grade = 2;
+                        task.WMSId = 0;//琛ㄧず鑷姩鍏ュ簱
+                        if (locationsrc != null)
+                        {
+                            task.SourceAddress = locationsrc.LocationCode;
+                        }
+                        else
+                        {
+                            ServiceLogger.WriteDebug("ReceiveTask", $"WCS鏈煡璇㈠埌婧愮珯鐐瑰搴旂殑搴撲綅锛屾簮绔欑偣锛歿taskDTO.dest_station.ToString()}");
+                            return content = WebResponseContent.Instance.Error($"WCS鏈煡璇㈠埌婧愮珯鐐瑰搴旂殑搴撲綅锛屾簮绔欑偣锛歿taskDTO.dest_station.ToString()}");
+                        }
+                        break;
+                    case 3001://AGV鏀捐揣瀹屾垚 WMS鍙�3001鐨勫悓鏃禬CS闇�鍦╦ob涓啓鎻愬崌淇″彿
+                        if (BaseDal.QueryFirst(x => x.TaskNum == taskDTO.task_id) == null)//鎵嬪姩鍏ュ簱鐩存帴鍙�3001锛岄渶瑕佺敓鎴愪换鍔★紝鍥犱负娌℃湁1001鐜妭
+                        {
+
+                            task.TaskType = (int)TaskInboundTypeEnum.Inbound;
+                            task.TaskState = (int)TaskInStatusEnum.AGV_InExecuting;
+                            task.Roadway = "SC01";
+                            task.WMSId = 1;//琛ㄧず鎵嬪姩鍏ュ簱
+                            task.Grade = 2;
+                            if (locationsrc != null)
+                            {
+                                task.SourceAddress = locationsrc.LocationCode;
+                            }
+                            else
+                            {
+                                ServiceLogger.WriteDebug("ReceiveTask", $"WCS鏈煡璇㈠埌婧愮珯鐐瑰搴旂殑搴撲綅锛屾簮绔欑偣锛歿taskDTO.dest_station.ToString()}");
+                                return content = WebResponseContent.Instance.Error($"WCS鏈煡璇㈠埌婧愮珯鐐瑰搴旂殑搴撲綅锛屾簮绔欑偣锛歿taskDTO.dest_station.ToString()}");
+                            }
+                        }
+                        else
+                        {
+                            if (taskinfo != null)
+                            {
+                                UpdateTaskStatus(taskinfo.TaskId, (int)TaskInStatusEnum.AGV_InExecuting);
+                                _taskExecuteDetailService.AddTaskExecuteDetail(task.TaskId, $"AGV鍏ュ簱鎵ц涓�");
+                                ServiceLogger.WriteDebug("ReceiveTask", $"AGV鍏ュ簱鎵ц涓紙鑷姩3001锛夋洿鏂扮姸鎬佹垚鍔燂紝浠诲姟鍙凤細{taskinfo.TaskId}");
+                                return content = WebResponseContent.Instance.OK($"AGV鍏ュ簱鎵ц涓紙鑷姩3001锛夋洿鏂扮姸鎬佹垚鍔燂紝浠诲姟鍙凤細{taskinfo.TaskId}");
+                            }
+                            else
+                            {
+                                return content = WebResponseContent.Instance.Error($"AGV鍏ュ簱鎵ц涓紙鑷姩3001锛夋洿鏂扮姸鎬佹椂锛屾煡璇笉鍒颁换鍔″彿");
+
+                            }
+                        }
+                        break;
+                    case 101://鎻愬崌鏈烘彁鍗囧畬鎴� 
+                        if (taskinfo != null)
+                        {
+                            //鏇存柊浠诲姟琛ㄤ腑NextAddress瀛楁涓烘柊鐨勪换鍔″彿   taskDTO.weight-鏃х殑浠诲姟鍙�   taskDTO.task_id-鏂扮殑浠诲姟鍙�
+                            UpdateTaskStatus(taskinfo.TaskId, taskDTO.task_id, (int)TaskInStatusEnum.AGV_InFinish);
+                            _taskExecuteDetailService.AddTaskExecuteDetail(task.TaskId, $"AGV鎼繍瀹屾垚");
+                            ServiceLogger.WriteDebug("ReceiveTask", $"AGV鎼繍瀹屾垚锛�101锛夋洿鏂扮姸鎬佹垚鍔燂紝浠诲姟鍙凤細{taskinfo.TaskId}");
+                            return content = WebResponseContent.Instance.OK($"AGV鎼繍瀹屾垚锛�101锛夋洿鏂扮姸鎬佹垚鍔燂紝浠诲姟鍙凤細{taskinfo.TaskId}");
+                        }
+                        else
+                        {
+                            ServiceLogger.WriteDebug("ReceiveTask", $"AGV鎼繍瀹屾垚锛�101锛夋洿鏂扮姸鎬佹椂锛屾煡璇笉鍒颁换鍔″彿");
+                            return content = WebResponseContent.Instance.Error($"AGV鎼繍瀹屾垚锛�101锛夋洿鏂扮姸鎬佹椂锛屾煡璇笉鍒颁换鍔″彿");
+                        }
+                        break;
+
+                    case 103://浜у搧绉诲簱锛堢Щ搴擄紝鍑哄簱锛�
+                        task.TaskType= (int)TaskRelocationTypeEnum.Relocation;
+                        task.TaskState = (int)TaskOutStatusEnum.OutNew;
+                        task.Roadway = "SC01";
+                        task.Grade = 1;
+                        break;
+                    case 102:
+                        if(taskDTO.dest_station ==1003)//绌鸿溅鍑哄簱  鏆傚瓨浣�-->杈撻�佺嚎
+                        {
+                            task.TaskType = (int)TaskOutboundTypeEnum.OutPick;
+                            task.TaskState = (int)TaskOutStatusEnum.OutNew;
+                            task.Roadway = "SC01";
+                            task.Grade = 1;
+                        }
+                        else if(taskDTO.dest_station ==1001|| taskDTO.dest_station == 1002)//寮傚父鍑哄簱
+                        {
+                            task.TaskType = (int)TaskOutboundTypeEnum.OutInventory;
+                            task.TaskState = (int)TaskOutStatusEnum.OutNew;
+                            task.Roadway = "SC01";
+                            task.Grade = 1;
+                        }
+                        if (locationdsc != null)
+                        {
+                            task.TargetAddress = locationdsc.LocationCode;
+                        }
+                        else
+                        {
+                            ServiceLogger.WriteDebug("ReceiveTask", $"WCS鏈煡璇㈠埌鐩爣绔欑偣瀵瑰簲鐨勫簱浣嶏紝鐩爣绔欑偣锛歿taskDTO.dest_station.ToString()}");
+                            return  content = WebResponseContent.Instance.Error($"WCS鏈煡璇㈠埌鐩爣绔欑偣瀵瑰簲鐨勫簱浣嶏紝鐩爣绔欑偣锛歿taskDTO.dest_station.ToString()}");
+                        }
+                        break;
+                    case 104://缁勭珛鏈轰笂鏂�  鏆傚瓨浣�-->缁勭珛鏈�
+                        {
+                            task.TaskType = (int)TaskOtherTypeEnum.Feed;
+                            task.TaskState = (int)TaskOutStatusEnum.OutNew;
+                            task.Grade = 1;
+                            task.Remark = taskDTO.total.ToString()+"-"+taskDTO.startIndex.ToString();//鍙栨�诲眰鏁板拰褰撳墠灞傛暟
+                            //涓嶄細浼犵粍绔嬫満涓婃枡绔欑偣锛屽彧浼氫紶鏆傚瓨搴撲綅锛岄渶鏍规嵁鏆傚瓨搴撲綅鍘绘煡璐т綅琛ㄤ腑鐨勭粍绔嬫満绔欑偣搴撲綅鍙�
+
+                            Dt_LocationInfo locationtemp = _locationInfoRepository.QueryFirst(x => x.Row==taskDTO.src_rack&&x.Column==taskDTO.src_col&&x.Layer==taskDTO.src_row);
+                            if (locationtemp != null)
+                            {
+                                task.TargetAddress = locationtemp.Remark;
+                            }
+                            else
+                            {
+                                ServiceLogger.WriteDebug("ReceiveTask", $"WCS鏈煡璇㈠埌鐩爣绔欑偣瀵瑰簲鐨勫簱浣嶏紝鐩爣绔欑偣锛歿task.TargetAddress.ToString()}");
+                                return  content = WebResponseContent.Instance.Error($"WCS鏈煡璇㈠埌鐩爣绔欑偣瀵瑰簲鐨勫簱浣嶏紝鐩爣绔欑偣锛歿task.TargetAddress.ToString()}");
+                            }
+                            //鏍规嵁鐩爣鍦板潃锛堢粍绔嬫満锛夋煡璇㈤粯璁ょ殑鎵ц浠诲姟鐨勫皬鍫嗗灈鏈虹紪鍙�
+                            Dt_LocationInfo locationtemp2 = _locationInfoRepository.QueryFirst(x => x.LocationCode == task.TargetAddress.ToString());
+                            if (locationtemp2 != null)
+                            {
+                                task.Roadway = locationtemp2.Remark.Trim();//纭畾榛樿鎵ц浠诲姟鐨勫皬鍫嗗灈鏈虹紪鍙�
+                            }
+                            else
+                            {
+
+                                ServiceLogger.WriteDebug("ReceiveTask", $"WCS鏈煡璇㈠埌缁勭珛鏈哄搴旂殑榛樿灏忓爢鍨涙満閰嶇疆");
+                                return content = WebResponseContent.Instance.Error($"WCS鏈煡璇㈠埌缁勭珛鏈哄搴旂殑榛樿灏忓爢鍨涙満閰嶇疆");
+                            }
+                            
+                        }
+
+                        break;
+                    default:
+                        break;
+                }
+
+                task.TaskNum = taskDTO.task_id;
+                task.PalletCode = taskDTO.CarId;
+             
+                if (string.IsNullOrEmpty(task.SourceAddress))//濡傛灉涓嶆槸绔欑偣锛岀洿鎺ュ彇琛屽垪灞�
+                {
+                    task.SourceAddress = $"SC01-{taskDTO.src_rack.ToString().PadLeft(3, '0')}-{taskDTO.src_col.ToString().PadLeft(3, '0')}-{taskDTO.src_row.ToString().PadLeft(3, '0')}";
+                }
+                if(string.IsNullOrEmpty(task.TargetAddress))//濡傛灉涓嶆槸绔欑偣锛岀洿鎺ュ彇琛屽垪灞�
+                {
+                    task.TargetAddress = $"SC01-{taskDTO.dest_rack.ToString().PadLeft(3, '0')}-{taskDTO.dest_col.ToString().PadLeft(3, '0')}-{taskDTO.dest_row.ToString().PadLeft(3, '0')}";
+                }
+                task.Creater = "MES";
+
+                //鍒ゆ柇璐т綅鐘舵��
+                Dt_LocationInfo srcLocation = _locationInfoRepository.QueryFirst(x => x.LocationCode == task.SourceAddress);
+                Dt_LocationInfo tarLocation = _locationInfoRepository.QueryFirst(x => x.LocationCode == task.TargetAddress);
+                if (srcLocation != null && tarLocation != null)
+                {
+                    if (srcLocation.EnableStatus == (int)EnableStatusEnum.Disable)
+                    {
+                        ServiceLogger.WriteDebug("ReceiveTask", $"婧愬湴鍧�宸茬鐢細{srcLocation.LocationCode}");
+                        return content = WebResponseContent.Instance.Error($"婧愬湴鍧�宸茬鐢細{srcLocation.LocationCode}");
+                    }
+                    if (tarLocation.EnableStatus == (int)EnableStatusEnum.Disable)
+                    {
+                        ServiceLogger.WriteDebug("ReceiveTask", $"鐩爣鍦板潃宸茬鐢細{tarLocation.LocationCode}");
+                        return content = WebResponseContent.Instance.Error($"鐩爣鍦板潃宸茬鐢細{tarLocation.LocationCode}");
+                    }
+                    if (taskDTO.cmd != 101)//鍏ュ簱鏃朵笉闇�瑕佸垽鏂槸鍚﹂攣瀹氾紝閿佸畾鐘舵�佹槸鍦ㄧ敓鎴愪换鍔℃椂閿佸畾
+                    {
+                       
+                        if (taskinfo != null && taskDTO.cmd==3001&&taskinfo.WMSId==1)//濡傛灉鏄墜鍔ㄥ叆搴擄紝鍙�3001锛屼細鐢熸垚浠诲姟锛岄渶瑕佸垽鏂簱浣嶆槸鍚﹂攣瀹�;鑷姩妯″紡鍙�1001鐨勬椂鍊欏氨鐢熸垚浜嗕换鍔★紝鍐嶅彂3001灏变笉闇�瑕佸垽鏂槸鍚﹂攣瀹氫簡
+                        {
+                            if (srcLocation.LocationStatus == (int)LocationStatusEnum.Lock)
+                            {
+
+                                ServiceLogger.WriteDebug("ReceiveTask", $"婧愬湴鍧�宸查攣瀹氾細{srcLocation.LocationCode}");
+                                return content = WebResponseContent.Instance.Error($"婧愬湴鍧�宸查攣瀹氾細{srcLocation.LocationCode}");
+                            }
+                            if (tarLocation.LocationStatus == (int)LocationStatusEnum.Lock)
+                            {
+                                ServiceLogger.WriteDebug("ReceiveTask", $"鐩爣鍦板潃宸查攣瀹氾細{tarLocation.LocationCode}");
+                                return content = WebResponseContent.Instance.Error($"鐩爣鍦板潃宸查攣瀹氾細{tarLocation.LocationCode}");
+                            }
+                        }
+                    }
+                    if (task.TaskType == (int)TaskInboundTypeEnum.Inbound)//鍏ュ簱  璺緞锛氭彁鍗囨満搴撲綅-->搴撲綅
+                    {
+                        //WCS鏌ヨ搴撲綅鐘舵�佹槸鍚︿负鈥滅┖闂测�濆苟涓旀湭绂佺敤锛岄攣瀹氬簱浣嶄慨鏀瑰簱浣嶇姸鎬佷负鈥滈攣瀹氣�濓紝鐢熸垚WCS浜у搧鍏ュ簱浠诲姟锛屽姞鍏CS浠诲姟闃熷垪涓��          
+                        if (tarLocation.LocationStatus != (int)LocationStatusEnum.Free)
+                        {
+
+                            ServiceLogger.WriteDebug("ReceiveTask", $"鍏ュ簱-鐩爣鍦板潃涓嶆槸绌洪棽鐘舵�侊細{tarLocation.LocationCode}");
+                            return content = WebResponseContent.Instance.Error($"鍏ュ簱-鐩爣鍦板潃涓嶆槸绌洪棽鐘舵�侊細{tarLocation.LocationCode}");
+                        }
+                        //srcLocation.LocationStatus = (int)LocationStatusEnum.Lock;
+                        tarLocation.LocationStatus = (int)LocationStatusEnum.Lock;
+
+                        //if (srcLocation.LocationStatus != (int)LocationStatusEnum.Free)
+                        //{
+                        //    return content = WebResponseContent.Instance.Error($"鍏ュ簱-婧愬湴鍧�涓嶆槸绌洪棽鐘舵�侊細{srcLocation.LocationCode}");
+                        //}
+
+
+
+                    }
+                    else if (task.TaskType == (int)TaskRelocationTypeEnum.Relocation)  //浜у搧绉诲簱锛堢Щ搴擄紝鍑哄簱鍏辩敤锛�  璺緞锛氬簱浣�-->搴撲綅/鏆傚瓨搴撲綅
+                    {
+                        //WCS鏌ヨ搴撲綅鐘舵�佹槸鍚︿负鈥滄湁璐р�濓紝搴撲綅/鏆傚瓨搴撲綅鏄惁鈥滅┖闂测��
+                        if (srcLocation.LocationStatus != (int)LocationStatusEnum.InStock)
+                        {
+
+                            ServiceLogger.WriteDebug("ReceiveTask", $"绉诲簱-婧愬湴鍧�涓嶆槸鏈夎揣鐘舵�侊細{srcLocation.LocationCode}");
+                            return content = WebResponseContent.Instance.Error($"绉诲簱-婧愬湴鍧�涓嶆槸鏈夎揣鐘舵�侊細{srcLocation.LocationCode}");
+                        }
+                        if(tarLocation.LocationStatus != (int)LocationStatusEnum.Free)
+                        {
+
+                            ServiceLogger.WriteDebug("ReceiveTask", $"绉诲簱-鐩爣鍦板潃涓嶆槸绌洪棽鐘舵�侊細{srcLocation.LocationCode}");
+                            return content = WebResponseContent.Instance.Error($"绉诲簱-鐩爣鍦板潃涓嶆槸绌洪棽鐘舵�侊細{srcLocation.LocationCode}");
+                        }
+                        srcLocation.LocationStatus = (int)LocationStatusEnum.Lock;
+                        tarLocation.LocationStatus = (int)LocationStatusEnum.Lock;
+
+                    }
+                    else if (task.TaskType == (int)TaskOutboundTypeEnum.OutInventory)  //寮傚父鍑哄簱锛堥��搴擄級 璺緞锛氬簱浣�-->鎻愬崌鏈哄簱浣�  
+                    {
+                        //WCS鏌ヨ搴撲綅鐘舵�佹槸鍚︿负鈥滄湁璐р��
+                        if (srcLocation.LocationStatus != (int)LocationStatusEnum.InStock)
+                        {
+
+                            ServiceLogger.WriteDebug("ReceiveTask", $"寮傚父鍑哄簱-婧愬湴鍧�涓嶆槸鏈夎揣鐘舵�侊細{srcLocation.LocationCode}");
+                            return content = WebResponseContent.Instance.Error($"寮傚父鍑哄簱-婧愬湴鍧�涓嶆槸鏈夎揣鐘舵�侊細{srcLocation.LocationCode}");
+                        }
+                        srcLocation.LocationStatus = (int)LocationStatusEnum.Lock;
+                        //tarLocation.LocationStatus = (int)LocationStatusEnum.Lock;
+                        //if (tarLocation.LocationStatus != (int)LocationStatusEnum.Free)
+                        //{
+                        //    return content = WebResponseContent.Instance.Error($"寮傚父鍑哄簱-鐩爣鍦板潃涓嶆槸绌洪棽鐘舵�侊細{srcLocation.LocationCode}");
+                        //}
+
+                    }
+                    else if (task.TaskType == (int)TaskOutboundTypeEnum.OutPick)  //绌鸿溅鍑哄簱  璺緞锛氭殏瀛樺簱浣�-->杈撻�佺嚎 
+                    {
+                        //WCS鏌ヨ鏆傚瓨搴撲綅鏄惁鈥滄湁璐р��
+                        if (srcLocation.LocationStatus != (int)LocationStatusEnum.InStock)
+                        {
+
+                            ServiceLogger.WriteDebug("ReceiveTask", $"绌鸿溅鍑哄簱-婧愬湴鍧�涓嶆槸鏈夎揣鐘舵�侊細{srcLocation.LocationCode}");
+                            return content = WebResponseContent.Instance.Error($"绌鸿溅鍑哄簱-婧愬湴鍧�涓嶆槸鏈夎揣鐘舵�侊細{srcLocation.LocationCode}");
+                        }
+                        //srcLocation.LocationStatus = (int)LocationStatusEnum.Lock;
+                        //tarLocation.LocationStatus = (int)LocationStatusEnum.Lock;
+                        //if (tarLocation.LocationStatus != (int)LocationStatusEnum.Free)
+                        //{
+                        //    return content = WebResponseContent.Instance.Error($"绌鸿溅鍑哄簱-鐩爣鍦板潃涓嶆槸绌洪棽鐘舵�侊細{srcLocation.LocationCode}");
+                        //}
+                    }
+                    else if (task.TaskType == (int)TaskOtherTypeEnum.Feed)  //涓婃枡    璺緞锛氭殏瀛樹綅-->缁勭珛鏈�   
+                    {
+                        //WCS鏌ヨ鏆傚瓨搴撲綅鏄惁鈥滄湁璐р��
+                        if (srcLocation.LocationStatus != (int)LocationStatusEnum.InStock)
+                        {
+
+                            ServiceLogger.WriteDebug("ReceiveTask", $"涓婃枡浠诲姟-婧愬湴鍧�涓嶆槸鏈夎揣鐘舵�侊細{srcLocation.LocationCode}");
+                            return content = WebResponseContent.Instance.Error($"涓婃枡浠诲姟-婧愬湴鍧�涓嶆槸鏈夎揣鐘舵�侊細{srcLocation.LocationCode}");
+                        }
+                        //srcLocation.LocationStatus = (int)LocationStatusEnum.Lock;
+                        //tarLocation.LocationStatus = (int)LocationStatusEnum.Lock;
+
+                    }
+
+                }
+                else
+                {
+                    ServiceLogger.WriteDebug("ReceiveTask", $"搴撲綅鍦板潃涓嶅瓨鍦紝浠诲姟鍙�:{task.TaskNum}");
+                    return content = WebResponseContent.Instance.Error($"搴撲綅鍦板潃涓嶅瓨鍦紝浠诲姟鍙�:{task.TaskNum}");
+                }
+
+                
+
+                try
+                {
+                    //寮�鍚簨鐗�
+                    _unitOfWorkManage.BeginTran();
+                    _locationInfoRepository.UpdateData(tarLocation);
+                    _locationInfoRepository.UpdateData(srcLocation);
+                    BaseDal.AddData(task);
+                    Dt_Task tasktemp=  BaseDal.QueryFirst(x => x.TaskNum ==task.TaskNum);
+                    _taskExecuteDetailService.AddTaskExecuteDetail(tasktemp.TaskId, "鎺ユ敹MES浠诲姟");
+                    //鎻愪氦浜嬪姟
+                    _unitOfWorkManage.CommitTran();
+ 
+                }
+                catch (Exception)
+                {
+                    _unitOfWorkManage.RollbackTran();
+                    throw;
+                }
+                ServiceLogger.WriteDebug("ReceiveTask", $"鎺ユ敹浠诲姟鎴愬姛锛屼换鍔″彿:{task.TaskNum}");
+                content = WebResponseContent.Instance.OK($"鎺ユ敹浠诲姟鎴愬姛锛屼换鍔″彿:{task.TaskNum}", task);
+                
+            }
+            catch (Exception ex)
+            {
+                ServiceLogger.WriteDebug("ReceiveTask", $"浠诲姟鎺ユ敹閿欒,閿欒淇℃伅:{ex.StackTrace}");
+                content = WebResponseContent.Instance.Error($"浠诲姟鎺ユ敹閿欒,閿欒淇℃伅:{ex.Message}");
+            }
+            return content;
+
+        }
+
         /// <summary>
         /// 鏍规嵁鎵樼洏鍙枫�佽捣濮嬪湴鍧�鍚慦MS璇锋眰浠诲姟
         /// </summary>
@@ -155,6 +511,8 @@
             return content;
         }
 
+
+
         /// <summary>
         /// 鏍规嵁璁惧缂栧彿銆佸綋鍓嶅湴鍧�鏌ヨ杈撻�佺嚎鏈墽琛岀殑浠诲姟
         /// </summary>
@@ -174,7 +532,8 @@
         /// <returns></returns>
         public Dt_Task QueryExecutingConveyorLineTask(int taskNum, string nextAddress)
         {
-            return BaseDal.QueryFirst(x => x.TaskNum == taskNum && x.NextAddress == nextAddress && (x.TaskState == (int)TaskInStatusEnum.Line_InExecuting || x.TaskState == (int)TaskOutStatusEnum.Line_OutExecuting), TaskOrderBy);
+            //return BaseDal.QueryFirst(x => x.TaskNum == taskNum && x.NextAddress == nextAddress && (x.TaskState == (int)TaskInStatusEnum.Line_InExecuting || x.TaskState == (int)TaskOutStatusEnum.Line_OutExecuting), TaskOrderBy);
+            return null;
         }
 
         /// <summary>
@@ -185,7 +544,8 @@
         /// <returns></returns>
         public Dt_Task QueryCompletedConveyorLineTask(int taskNum, string currentAddress)
         {
-            return BaseDal.QueryFirst(x => x.TaskNum == taskNum && x.CurrentAddress == currentAddress && (x.TaskState == (int)TaskInStatusEnum.Line_InFinish || x.TaskState == (int)TaskOutStatusEnum.Line_OutFinish), TaskOrderBy);
+            //return BaseDal.QueryFirst(x => x.TaskNum == taskNum && x.CurrentAddress == currentAddress && (x.TaskState == (int)TaskInStatusEnum.Line_InFinish || x.TaskState == (int)TaskOutStatusEnum.Line_OutFinish), TaskOrderBy);
+            return null;
         }
 
         /// <summary>
@@ -196,28 +556,64 @@
         /// <returns></returns>
         public Dt_Task? QuertStackerCraneTask(string deviceNo, TaskTypeGroup? taskTypeGroup = null)
         {
-            if(taskTypeGroup == null)
-                return BaseDal.QueryFirst(x => x.Roadway == deviceNo && (TaskInboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskInStatusEnum.Line_InFinish || TaskOutboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskOutStatusEnum.OutNew), TaskOrderBy);
-            if(taskTypeGroup.Value == TaskTypeGroup.InboundGroup)
-                return BaseDal.QueryFirst(x => x.Roadway == deviceNo && TaskInboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskInStatusEnum.Line_InFinish, TaskOrderBy);
-            if(taskTypeGroup.Value == TaskTypeGroup.OutbondGroup)
-                return BaseDal.QueryFirst(x => x.Roadway == deviceNo && TaskOutboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskOutStatusEnum.OutNew, TaskOrderBy);
+            //if(taskTypeGroup == null)
+            //    return BaseDal.QueryFirst(x => x.Roadway == deviceNo && (TaskInboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskInStatusEnum.Line_InFinish || TaskOutboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskOutStatusEnum.OutNew), TaskOrderBy);
+            //if(taskTypeGroup.Value == TaskTypeGroup.InboundGroup)
+            //    return BaseDal.QueryFirst(x => x.Roadway == deviceNo && TaskInboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskInStatusEnum.Line_InFinish, TaskOrderBy);
+            //if(taskTypeGroup.Value == TaskTypeGroup.OutbondGroup)
+            //    return BaseDal.QueryFirst(x => x.Roadway == deviceNo && TaskOutboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskOutStatusEnum.OutNew, TaskOrderBy);
             return null;
         }
 
         /// <summary>
-        /// 鏍规嵁璁惧缂栧彿銆佸綋鍓嶅湴鍧�鎸夌収浼樺厛绾т互鍙婂垱寤烘椂闂存帓搴忔煡璇换鍔℃睜鏂板鐨勪换鍔�
+        /// 鏍规嵁璁惧缂栧彿 鎸夌収浼樺厛绾т互鍙婂垱寤烘椂闂存帓搴忔煡璇换鍔℃睜鏂板鐨勪换鍔�
         /// </summary>
         /// <param name="deviceNo">璁惧缂栧彿</param>
         /// <param name="currentAddress">褰撳墠鍦板潃</param>
         /// <returns>杩斿洖浠诲姟瀹炰綋瀵硅薄锛屽彲鑳戒负null</returns>
-        public Dt_Task QueryStackerCraneTask(string deviceNo, string currentAddress = "")
+        public Dt_Task QueryStackerCraneTask(string deviceNo)
         {
-            if (string.IsNullOrEmpty(currentAddress))
-                return BaseDal.QueryFirst(x => x.Roadway == deviceNo && (TaskInboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskInStatusEnum.Line_InFinish || TaskOutboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskOutStatusEnum.OutNew), TaskOrderBy);
-            else
-                return BaseDal.QueryFirst(x => x.Roadway == deviceNo && x.CurrentAddress == currentAddress && (TaskInboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskInStatusEnum.Line_InFinish || TaskOutboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskOutStatusEnum.OutNew), TaskOrderBy);
+            return BaseDal.QueryFirst(x => x.Roadway == deviceNo && (TaskInboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskInStatusEnum.AGV_InFinish || TaskOutboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskOutStatusEnum.OutNew || TaskRelocationboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskOutStatusEnum.OutNew || TaskOtherboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskOutStatusEnum.OutNew), TaskOrderBy);
         }
+
+        /// <summary>
+        /// 鏌ヨ灏忓爢鍨涙満浠诲姟
+        /// </summary>
+        /// <returns></returns>
+        public Dt_Task QueryStackerCraneTask()
+        {
+            return BaseDal.QueryFirst(x => (x.Roadway =="SC02"|| x.Roadway == "SC03")&& x.TaskState == (int)TaskOutStatusEnum.OutNew, TaskOrderBy);
+        }
+
+        /// <summary>
+        /// 鏌ヨ灏忓爢鍨涙満鍑哄簱瀹屾垚浠诲姟
+        /// </summary>
+        /// <returns></returns>
+        public Dt_Task QueryStackerCraneFinishTask()
+        {
+            return BaseDal.QueryFirst(x => (x.Roadway == "SC02" || x.Roadway == "SC03") && x.TaskState == (int)TaskOutStatusEnum.SC_OutFinish, TaskOrderBy);
+        }
+
+        /// <summary>
+        /// 鏌ヨ鍏ュ簱浠诲姟 瀵瑰簲WMS璇锋眰 1001-AGV璇锋眰鏄惁鍏佽杩涘叆
+        /// </summary>
+        /// <param name="deviceNo"></param>
+        /// <returns></returns>
+        public Dt_Task QueryStackerCraneTaskByAGVRequest(string deviceNo)
+        {
+            return BaseDal.QueryFirst(x => x.Roadway == deviceNo && (TaskInboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskInStatusEnum.InNew), TaskOrderBy);
+        }
+        /// <summary>
+        /// 瀵瑰簲WMS璇锋眰 3001-AGV鏀捐揣瀹屾垚
+        /// </summary>
+        /// <param name="deviceNo"></param>
+        /// <returns></returns>
+        public Dt_Task QueryStackerCraneTaskByAGVPutFinish(string deviceNo)
+        {
+            return BaseDal.QueryFirst(x => x.Roadway == deviceNo && (TaskInboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskInStatusEnum.AGV_InExecuting), TaskOrderBy);
+        }
+
+
 
         /// <summary>
         /// 鏍规嵁璁惧缂栧彿銆佸綋鍓嶅湴鍧�鎸夌収浼樺厛绾т互鍙婂垱寤烘椂闂存帓搴忔煡璇换鍔℃睜鍏ュ簱绫诲瀷鐨勬柊澧炵殑浠诲姟
@@ -227,10 +623,11 @@
         /// <returns>杩斿洖浠诲姟瀹炰綋瀵硅薄锛屽彲鑳戒负null</returns>
         public Dt_Task QueryStackerCraneInTask(string deviceNo, string currentAddress = "")
         {
-            if (string.IsNullOrEmpty(currentAddress))
-                return BaseDal.QueryFirst(x => x.Roadway == deviceNo && TaskInboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskInStatusEnum.Line_InFinish, TaskOrderBy);
-            else
-                return BaseDal.QueryFirst(x => x.Roadway == deviceNo && TaskInboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskInStatusEnum.Line_InFinish && x.CurrentAddress == currentAddress, TaskOrderBy);
+            //if (string.IsNullOrEmpty(currentAddress))
+            //    return BaseDal.QueryFirst(x => x.Roadway == deviceNo && TaskInboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskInStatusEnum.Line_InFinish, TaskOrderBy);
+            //else
+            //    return BaseDal.QueryFirst(x => x.Roadway == deviceNo && TaskInboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskInStatusEnum.Line_InFinish && x.CurrentAddress == currentAddress, TaskOrderBy);
+            return null;
         }
 
         /// <summary>
@@ -284,7 +681,7 @@
 
                 _taskExecuteDetailService.AddTaskExecuteDetail(task.TaskId, task.ExceptionMessage);
 
-                content = WebResponseContent.Instance.OK();
+               
             }
             catch (Exception ex)
             {
@@ -296,13 +693,271 @@
         /// <summary>
         /// 鏇存柊浠诲姟鐘舵�佷俊鎭紝骞跺悓姝ヨ嚦WMS
         /// </summary>
-        /// <param name="taskNum">浠诲姟鍙�</param>
+        /// <param name="taskId">浠诲姟ID</param>
         /// <param name="status">浠诲姟鐘舵��</param>
-        public void UpdateTaskStatus(int taskNum, int status)
+        public void UpdateTaskStatus(int taskId, int status)
         {
-            Dt_Task task = BaseDal.QueryFirst(x => x.TaskNum == taskNum);
+            Dt_Task task = BaseDal.QueryFirst(x => x.TaskId == taskId);
             if (task == null) return;
             task.TaskState = status;
+            task.Modifier = "System";
+            task.ModifyDate = DateTime.Now;
+            BaseDal.UpdateData(task);
+        }
+
+        /// <summary>
+        /// 浠诲姟寮哄埗瀹屾垚 鍫嗗灈鏈哄疄闄呭凡瀹屾垚浠诲姟锛學CS鏈敹鍒板畬鎴愪俊鍙锋垨鍏朵粬鏈煡鍘熷洜瀵艰嚧WCS浠诲姟鏈畬鎴愶紝鍙互鎵ц璇ユ柟娉曞己鍒跺畬鎴愪换鍔�
+        /// </summary>
+        /// <param name="taskNum"></param>
+        /// <returns></returns>
+        public WebResponseContent ForceCompleteTask(int taskNum)
+        {
+            WebResponseContent content = new WebResponseContent();
+            try
+            {
+                bool isBack = false;
+                //1锛屽厛鏌ヨ浠诲姟锛屾牴鎹笉鍚岀殑浠诲姟绫诲瀷鍋氫换鍔″己鍒跺畬鎴愭搷浣�
+                Dt_Task task = _taskRepository.QueryFirst(x => x.TaskNum == taskNum);
+                if (task == null) return WebResponseContent.Instance.Error($"鏈壘鍒拌浠诲姟淇℃伅,浠诲姟鍙�:銆恵taskNum}銆�");
+
+                Dt_LocationInfo locationsrc = _locationInfoRepository.QueryFirst(x => x.LocationCode == task.SourceAddress.ToString());
+                Dt_LocationInfo locationdsc = _locationInfoRepository.QueryFirst(x => x.LocationCode == task.TargetAddress.ToString());
+                if (task.TaskType == (int)TaskInboundTypeEnum.Inbound)
+                {
+                    if (task.TaskState == (int)TaskInStatusEnum.SC_InExecuting)
+                    {
+                        task.TaskState = (int)TaskInStatusEnum.SC_InFinish;
+                        //闇�瑕佸皢鐩爣鍦板潃鏀逛负鏈夎揣鐘舵��
+                        locationdsc.LocationStatus = (int)LocationStatusEnum.InStock;
+
+                        //鏇存柊鐘舵�佷负浠诲姟瀹屾垚
+                        UpdateTaskStatus(task.TaskId, task.TaskState);
+                        _taskExecuteDetailService.AddTaskExecuteDetail(task.TaskId, $"鍫嗗灈鏈哄叆搴撳畬鎴�");
+                        _taskExecuteDetailService.AddTaskExecuteDetail(task.TaskId, $"鍏ュ簱浠诲姟瀹屾垚");
+                        //鏇存柊璐т綅
+                        _locationInfoRepository.UpdateData(locationdsc);
+                        isBack = true;
+
+                    }
+                    else
+                    {
+                        return content = WebResponseContent.Instance.Error("璇ヤ换鍔$洰鍓嶇姸鎬侊紝涓嶅厑璁″己鍒跺畬鎴愶紒");
+                    }
+
+                }
+                else
+                {
+                    if (task.TaskState == (int)TaskOutStatusEnum.SC_OutExecuting)
+                    {
+                      
+                        if (task.TaskType == (int)TaskOutboundTypeEnum.OutInventory || task.TaskType == (int)TaskOutboundTypeEnum.OutPick)//寮傚父鍑哄簱 绌鸿溅鍑哄簱
+                        {
+                            task.TaskState = (int)TaskOutStatusEnum.OutFinish;
+                            //婧愬湴鍧�鏇存柊涓虹┖闂�
+                            locationsrc.LocationStatus = (int)LocationStatusEnum.Free;
+
+                            //鏇存柊鐘舵�佷负浠诲姟瀹屾垚
+                            UpdateTaskStatus(task.TaskId, task.TaskState);
+                            _taskExecuteDetailService.AddTaskExecuteDetail(task.TaskId, $"鍫嗗灈鏈哄嚭搴撳畬鎴�");
+                            _taskExecuteDetailService.AddTaskExecuteDetail(task.TaskId, $"鍑哄簱浠诲姟瀹屾垚");
+                            //鏇存柊璐т綅
+                            _locationInfoRepository.UpdateData(locationsrc);
+                            isBack = true;
+                        }
+                        else if (task.TaskType == (int)TaskRelocationTypeEnum.Relocation)//绉诲簱
+                        {
+                            task.TaskState = (int)TaskOutStatusEnum.OutFinish;
+                            //婧愬湴鍧�鏇存柊涓虹┖闂�
+                            locationsrc.LocationStatus = (int)LocationStatusEnum.Free;
+                            //鐩爣鍦板潃鏇存柊涓烘湁璐�
+                            locationdsc.LocationStatus = (int)LocationStatusEnum.InStock;
+
+
+                            //鏇存柊鐘舵�佷负浠诲姟瀹屾垚
+                            UpdateTaskStatus(task.TaskId, task.TaskState);
+                            _taskExecuteDetailService.AddTaskExecuteDetail(task.TaskId, $"鍫嗗灈鏈哄嚭搴撳畬鎴�");
+                            _taskExecuteDetailService.AddTaskExecuteDetail(task.TaskId, $"鍑哄簱浠诲姟瀹屾垚");
+                            //鏇存柊璐т綅
+                            _locationInfoRepository.UpdateData(locationsrc);
+                            _locationInfoRepository.UpdateData(locationdsc);
+                            isBack = true;
+
+
+                        }
+                        else
+                        {
+                            return WebResponseContent.Instance.Error($"涓婃枡浠诲姟涓嶅厑璁″己鍒跺畬鎴愶紒");
+                        }
+                    }
+                    else
+                    {
+                        return WebResponseContent.Instance.Error($"璇ヤ换鍔$姸鎬佷笉鍏佽寮哄埗瀹屾垚锛�");
+                    }
+                }
+
+                //浠诲姟寮哄埗瀹屾垚鍥炶皟MES
+                if (isBack)
+                {
+                    
+                    if (task.TaskType == (int)TaskInboundTypeEnum.Inbound)//鍏ュ簱鏃跺洖浼犻渶浼犳柊浠诲姟鍙�
+                    {
+                        task.TaskNum =int.Parse(task.NextAddress);
+                    }
+                    MESSendCMD sendcmd = new MESSendCMD { cmd = 201, task_id = task.TaskNum, status = 6 };
+                    MESResponse res = ApiInvoke.SendTaskCMD(sendcmd);
+                    if (res != null && res.code != 0)
+                    {
+                        ServiceLogger.WriteDebug("ForceCompleteTask", $"浠诲姟寮哄埗瀹屾垚鍚庡洖浼燤ES澶辫触锛�,浠诲姟鍙�:銆恵taskNum}銆�,澶辫触淇℃伅:銆恵res.message}銆�");
+                        content = WebResponseContent.Instance.Error($"浠诲姟寮哄埗瀹屾垚鍚庡洖浼燤ES澶辫触锛�,浠诲姟鍙�:銆恵taskNum}銆�,澶辫触淇℃伅:銆恵res.message}銆�");
+                    }
+                    else
+                    {
+                        ServiceLogger.WriteDebug("ForceCompleteTask", $"浠诲姟寮哄埗瀹屾垚鍚庡洖浼燤ES鎴愬姛锛�,浠诲姟鍙�:銆恵taskNum}銆�");
+                        content = WebResponseContent.Instance.Error($"澶у爢鍨涙満瀹屾垚鍚庡洖浼燤ES鎴愬姛锛�,浠诲姟鍙�:銆恵taskNum}銆�");
+                    }
+                }
+            }
+            catch (Exception ex)
+            {
+                content = WebResponseContent.Instance.Error(ex.Message);
+            }
+            return content;
+
+        }
+
+        /// <summary>
+        /// 浠诲姟鍙栨秷
+        /// </summary>
+        /// <param name="taskid"></param>
+        /// <returns></returns>
+        public WebResponseContent CancelTask(int taskNum)
+        {
+            WebResponseContent content = new WebResponseContent();
+            try
+            {
+                //1锛屽厛鏌ヨ浠诲姟锛屾牴鎹笉鍚岀殑浠诲姟绫诲瀷鍋氫换鍔″彇娑堟搷浣�
+                Dt_Task task = _taskRepository.QueryFirst(x => x.TaskNum == taskNum);
+                if (task == null) return WebResponseContent.Instance.Error($"鏈壘鍒拌浠诲姟淇℃伅,浠诲姟鍙�:銆恵taskNum}銆�");
+
+                Dt_LocationInfo locationsrc = _locationInfoRepository.QueryFirst(x => x.LocationCode == task.SourceAddress.ToString());
+                Dt_LocationInfo locationdsc = _locationInfoRepository.QueryFirst(x => x.LocationCode == task.TargetAddress.ToString());
+                bool isBack = false;
+                //濡傛灉鏄叆搴撳垎鑷姩鍜屾墜鍔ㄤ袱绉嶆儏鍐靛鐞�
+                if (task.TaskType == (int)TaskInboundTypeEnum.Inbound)
+                {
+                    if (task.WMSId == 0 && task.TaskState == (int)TaskInStatusEnum.InNew)//鑷姩鍏ュ簱锛�1001-AGV璇锋眰鏄惁鍏佽杩涘叆锛屼换鍔$姸鎬佷负鈥滄柊寤哄叆搴撲换鍔�200鈥濅箣鍓嶅彲浠ュ彇娑�
+                    {
+                        task.TaskState = (int)TaskInStatusEnum.InCancel;
+                        //闇�瑕佸皢鐩爣鍦板潃鎭㈠涓虹┖闂茬姸鎬�
+                        locationdsc.LocationStatus = (int)LocationStatusEnum.Free;
+                        //鏇存柊鐘舵�佷负浠诲姟鍙栨秷
+                        UpdateTaskStatus(task.TaskId, task.TaskState);
+                        _taskExecuteDetailService.AddTaskExecuteDetail(task.TaskId, $"鍏ュ簱浠诲姟鍙栨秷");
+                        _locationInfoRepository.UpdateData(locationdsc);
+                        isBack = true;
+                    }
+                    else if (task.WMSId == 1 && task.TaskState == (int)TaskInStatusEnum.AGV_InExecuting)//鎵嬪姩鍏ュ簱锛�3001-AGV鏀捐揣瀹屾垚锛屼换鍔$姸鎬佷负鈥淎GV鍏ュ簱鎵ц涓�210鈥濅箣鍓嶅彲浠ュ彇娑�
+                    {
+                        task.TaskState = (int)TaskInStatusEnum.InCancel;
+                        //闇�瑕佸皢鐩爣鍦板潃鎭㈠绌洪棽鐘舵��
+                        locationdsc.LocationStatus = (int)LocationStatusEnum.Free;
+                        //鏇存柊鐘舵�佷负浠诲姟鍙栨秷
+                        UpdateTaskStatus(task.TaskId, task.TaskState);
+                        _taskExecuteDetailService.AddTaskExecuteDetail(task.TaskId, $"鍏ュ簱浠诲姟鍙栨秷");
+                        _locationInfoRepository.UpdateData(locationdsc);
+                        isBack = true;
+                    }
+                    else
+                    {
+                        return WebResponseContent.Instance.Error($"璇ヤ换鍔$姸鎬佷笉鍏佽鍙栨秷锛�");
+                    }
+                }
+                else//鍏朵粬浠诲姟锛屼换鍔$姸鎬佲�滄柊寤哄嚭搴撲换鍔♀�濅箣鍓嶏紝鎵嶅彲浠ュ彇娑�
+                {
+                    if (task.TaskState == (int)TaskOutStatusEnum.OutNew)
+                    {  
+                        if(task.TaskType == (int)TaskOutboundTypeEnum.OutInventory|| task.TaskType == (int)TaskOutboundTypeEnum.OutPick)//寮傚父鍑哄簱 绌鸿溅鍑哄簱
+                        {
+                            task.TaskState = (int)TaskOutStatusEnum.OutCancel;
+                            //婧愬湴鍧�鎭㈠鍒版湁璐�
+                            locationsrc.LocationStatus = (int)LocationStatusEnum.InStock;
+
+                            //鏇存柊鐘舵�佷负浠诲姟鍙栨秷
+                            UpdateTaskStatus(task.TaskId, task.TaskState);
+                            _taskExecuteDetailService.AddTaskExecuteDetail(task.TaskId, $"鍑哄簱浠诲姟鍙栨秷");
+                            _locationInfoRepository.UpdateData(locationsrc);
+                            isBack = true;
+                        }
+                        else if(task.TaskType == (int)TaskRelocationTypeEnum.Relocation)//绉诲簱
+                        {
+                            task.TaskState = (int)TaskOutStatusEnum.OutCancel;
+                            //婧愬湴鍧�鎭㈠鍒版湁璐�
+                            locationsrc.LocationStatus = (int)LocationStatusEnum.InStock;
+                            //闇�瑕佸皢鐩爣鍦板潃鎭㈠绌洪棽鐘舵��
+                            locationdsc.LocationStatus = (int)LocationStatusEnum.Free;
+                            //鏇存柊鐘舵�佷负浠诲姟鍙栨秷
+                            UpdateTaskStatus(task.TaskId, task.TaskState);
+                            _taskExecuteDetailService.AddTaskExecuteDetail(task.TaskId, $"鍑哄簱浠诲姟鍙栨秷");
+                            _locationInfoRepository.UpdateData(locationsrc);
+                            _locationInfoRepository.UpdateData(locationdsc);
+                            isBack = true;
+                        }
+                        else
+                        {
+                            return WebResponseContent.Instance.Error($"涓婃枡浠诲姟涓嶅厑璁″彇娑堬紒");
+                        }
+                    }
+                    else
+                    {
+                        return WebResponseContent.Instance.Error($"璇ヤ换鍔$姸鎬佷笉鍏佽鍙栨秷锛�");
+                    }
+                }
+
+
+
+                //浠诲姟鍙栨秷鍥炶皟MES
+                if (isBack)
+                {
+                    MESSendCMD sendcmd = new MESSendCMD { cmd = 201, task_id = task.TaskNum, status = 3 };
+                    MESResponse res = ApiInvoke.SendTaskCMD(sendcmd);
+                    if (res != null && res.code != 0)
+                    {
+                        ServiceLogger.WriteDebug("ForceCompleteTask", $"浠诲姟鍙栨秷鍥炰紶MES澶辫触锛�,浠诲姟鍙�:銆恵taskNum}銆�,澶辫触淇℃伅:銆恵res.message}銆�");
+                        content = WebResponseContent.Instance.Error($"浠诲姟鍙栨秷鍥炰紶MES澶辫触锛�,浠诲姟鍙�:銆恵taskNum}銆�,澶辫触淇℃伅:銆恵res.message}銆�");
+                    }
+                    else
+                    {
+                        ServiceLogger.WriteDebug("ForceCompleteTask", $"浠诲姟鍙栨秷鍥炰紶MES鎴愬姛锛�,浠诲姟鍙�:銆恵taskNum}銆�");
+                        content = WebResponseContent.Instance.Error($"浠诲姟鍙栨秷鍥炰紶MES鎴愬姛锛�,浠诲姟鍙�:銆恵taskNum}銆�");
+                    }
+                }
+                else
+                {
+
+                }
+
+            }
+            catch (Exception ex)
+            {
+                content = WebResponseContent.Instance.Error(ex.Message);
+            }
+            return content;
+        }
+
+
+        /// <summary>
+        /// 鏇存柊浠诲姟鐘舵�佷俊鎭拰鏂扮殑浠诲姟鍙凤紙1001锛�3001鏃朵竴鏍蜂换鍔″彿锛�
+        /// </summary>
+        /// <param name="taskId">浠诲姟ID</param>
+        /// <param name="newtaskId">WMS鏂�(101)鐨勪换鍔″彿</param>
+        /// <param name="status">浠诲姟鐘舵��</param>
+        public void UpdateTaskStatus(int taskId,int newtaskId, int status)
+        {
+            Dt_Task task = BaseDal.QueryFirst(x => x.TaskId == taskId);
+            if (task == null) return;
+            task.TaskState = status;
+            task.Modifier = "System";
+            task.NextAddress = newtaskId.ToString();
             task.ModifyDate = DateTime.Now;
             BaseDal.UpdateData(task);
         }
@@ -359,7 +1014,7 @@
                     int nextStatus = task.TaskState.GetNextNotCompletedStatus<TaskInStatusEnum>();
                     task.TaskState = nextStatus;
 
-                    if (task.TaskState == (int)TaskInStatusEnum.Line_InFinish)
+                    //if (task.TaskState == (int)TaskInStatusEnum.Line_InFinish)
                     {
                         Random random = new Random();
                         task.CurrentAddress = task.NextAddress;
@@ -440,69 +1095,230 @@
                 Dt_Task task = BaseDal.QueryFirst(x => x.TaskNum == taskNum);
                 if (task == null) return WebResponseContent.Instance.Error($"鏈壘鍒拌浠诲姟淇℃伅,浠诲姟鍙�:銆恵taskNum}銆�");
 
+                //寮傚父鍑哄簱銆佺┖杞﹀嚭搴� 缁堢偣涓嶄竴鏍�  1,寮傚父鍑哄簱锛堥��搴擄級 璺緞锛氬簱浣�-->鎻愬崌鏈哄簱浣�   2,绌鸿溅鍑哄簱  璺緞锛氭殏瀛樺簱浣�-->杈撻�佺嚎
                 if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.OutbondGroup && task.TaskState == (int)TaskOutStatusEnum.SC_OutExecuting)
-                {
-                    List<Dt_Router> routers = _routerService.QueryNextRoutes(task.NextAddress, task.TargetAddress);
-                    if (!routers.Any()) return WebResponseContent.Instance.Error($"鏈壘鍒拌澶囪矾鐢变俊鎭�");
+                {   
+                    try
+                    {
+                        Dt_LocationInfo srcLocation = _locationInfoRepository.QueryFirst(x => x.LocationCode == task.SourceAddress);
+                        srcLocation.LocationStatus = (int)LocationStatusEnum.Free;
+                        UpdateTaskStatus(task.TaskId, (int)TaskOutStatusEnum.SC_OutFinish);
+                        _taskExecuteDetailService.AddTaskExecuteDetail(task.TaskId, $"鍫嗗灈鏈哄嚭搴撳畬鎴�");
 
-                    int nextStatus = task.TaskState.GetNextNotCompletedStatus<TaskOutStatusEnum>();
-                    task.TaskState = nextStatus;
-                    task.CurrentAddress = task.NextAddress;
-                    task.NextAddress = routers.FirstOrDefault().ChildPosi;
-                    task.ModifyDate = DateTime.Now;
-                    task.Modifier = "System";
-                    BaseDal.UpdateData(task);
+                        //寮�鍚簨鐗�
+                        _unitOfWorkManage.BeginTran();
+                        UpdateTaskStatus(task.TaskId, (int)TaskOutStatusEnum.OutFinish);
+                        _locationInfoRepository.UpdateData(srcLocation);
+                        _taskExecuteDetailService.AddTaskExecuteDetail(task.TaskId, $"鍑哄簱浠诲姟瀹屾垚");
+                        //鎻愪氦浜嬪姟
+                        _unitOfWorkManage.CommitTran();
+                        //鍑哄簱瀹屾垚锛屽洖浼燱MS
+                        //鍥炰紶鍒癢MS
+                        if (task.TaskType == (int)TaskOutboundTypeEnum.OutPick)
+                        {
+                            MESSendCMD sendcmd = new MESSendCMD { cmd = 201, task_id = task.TaskNum, status = 6 };
+                            MESResponse res = ApiInvoke.SendTaskCMD(sendcmd);
+                            if (res != null && res.code != 0)
+                            {
+                                ServiceLogger.WriteDebug("StackCraneTaskCompleted", $"澶у爢鍨涙満瀹屾垚绌鸿溅鍑哄簱浠诲姟鍚庡洖浼燤ES澶辫触锛�,浠诲姟鍙�:銆恵taskNum}銆�,澶辫触淇℃伅:銆恵res.message}銆�");
+                                content = WebResponseContent.Instance.Error($"澶у爢鍨涙満瀹屾垚绌鸿溅鍑哄簱浠诲姟鍚庡洖浼燤ES澶辫触锛�,浠诲姟鍙�:銆恵taskNum}銆�,澶辫触淇℃伅:銆恵res.message}銆�");
+                            }
 
-                    _taskExecuteDetailService.AddTaskExecuteDetail(task.TaskId, $"鍫嗗灈鏈哄嚭搴撳畬鎴�");
-                    //todo 鍚屾鍒癢MS
+                        }
+                        else
+                        {
+                            MESSendCMD sendcmd = new MESSendCMD { cmd = 201, task_id = task.TaskNum, status = 6 };
+                            MESResponse res = ApiInvoke.SendTaskCMD(sendcmd);
+                            if (res != null && res.code != 0)
+                            {
+                                ServiceLogger.WriteDebug("StackCraneTaskCompleted", $"澶у爢鍨涙満瀹屾垚寮傚父鍑哄簱浠诲姟鍚庡洖浼燤ES澶辫触锛�,浠诲姟鍙�:銆恵taskNum}銆�,澶辫触淇℃伅:銆恵res.message}銆�");
+                                content = WebResponseContent.Instance.Error($"澶у爢鍨涙満瀹屾垚寮傚父鍑哄簱浠诲姟鍚庡洖浼燤ES澶辫触锛�,浠诲姟鍙�:銆恵taskNum}銆�,澶辫触淇℃伅:銆恵res.message}銆�");
+                            }
+                        }
 
-                    //鏆備笉鑰冭檻澶氫釜鍑哄簱鍙�
+                    }
+                    catch (Exception ex)
+                    {
+                        _unitOfWorkManage.RollbackTran();
+                        //浠诲姟鎵ц澶辫触锛岃揣浣嶇姸鎬佽繕鍘�
+                        ServiceLogger.WriteDebug("StackCraneTaskCompleted", $"澶у爢鍨涙満鎵ц鍑哄簱浠诲姟澶辫触锛�,浠诲姟鍙�:銆恵taskNum}銆�,澶辫触淇℃伅:銆恵ex.Message}銆�");
+                        content = WebResponseContent.Instance.Error($"澶у爢鍨涙満鎵ц鍑哄簱浠诲姟澶辫触锛�,浠诲姟鍙�:銆恵taskNum}銆�,澶辫触淇℃伅:銆恵ex.Message}銆�");
+                    }
+
+
+
                 }
+                //鍏ュ簱 璺緞锛氭彁鍗囨満搴撲綅-->搴撲綅
                 else if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.InboundGroup && task.TaskState == (int)TaskInStatusEnum.SC_InExecuting)
                 {
-                    //todo 
-                    int nextStatus = task.TaskState.GetNextNotCompletedStatus<TaskInStatusEnum>();
-                    task.TaskState = nextStatus;
-                    task.ModifyDate = DateTime.Now;
-                    task.Modifier = "System";
-                    BaseDal.UpdateData(task);
-                    _taskExecuteDetailService.AddTaskExecuteDetail(task.TaskId, $"鍫嗗灈鏈哄叆搴撳畬鎴�");
-
-                    WMSTaskDTO taskDTO = new WMSTaskDTO()
+                    try
                     {
-                        TaskNum = Convert.ToInt32(DateTime.Now.ToString("HHmmss")),
-                        Grade = 1,
-                        PalletCode = task.PalletCode + "S",
-                        RoadWay = "SC01",
-                        SourceAddress = task.TargetAddress,
-                        TargetAddress = "CLOutAreaA",
-                        TaskState = (int)TaskOutStatusEnum.OutNew,
-                        Id = 0,
-                        TaskType = (int)TaskOutboundTypeEnum.Outbound
-                    };
+                        Dt_LocationInfo tarLocation = _locationInfoRepository.QueryFirst(x => x.LocationCode == task.TargetAddress);
+                        tarLocation.LocationStatus = (int)LocationStatusEnum.InStock;//搴撲綅鐘舵�佹洿鏂颁负鏈夎揣
 
-                    content = ReceiveWMSTask(new List<WMSTaskDTO> { taskDTO });
+                        UpdateTaskStatus(task.TaskId, (int)TaskInStatusEnum.SC_InFinish);
+
+                        _taskExecuteDetailService.AddTaskExecuteDetail(task.TaskId, $"鍫嗗灈鏈哄叆搴撳畬鎴�");
+                        //寮�鍚簨鐗�
+                        _unitOfWorkManage.BeginTran();
+
+                        UpdateTaskStatus(task.TaskId, (int)TaskInStatusEnum.InFinish);
+                 
+                        _locationInfoRepository.UpdateData(tarLocation);
+                        _taskExecuteDetailService.AddTaskExecuteDetail(task.TaskId, $"鍏ュ簱浠诲姟瀹屾垚");
+                        //鎻愪氦浜嬪姟
+                        _unitOfWorkManage.CommitTran();
+
+                        //鍏ュ簱瀹屾垚锛屽洖浼燤ES  鍏ュ簱瀹屾垚鍥炰紶task.NextAddress 涔嬪墠101璇锋眰鏃跺瓨鐨勬柊浠诲姟鍙�
+                        MESSendCMD sendcmd = new MESSendCMD { cmd = 201, task_id = int.Parse(task.NextAddress), status = 6 };
+                        string inparam = JsonConvert.SerializeObject(sendcmd);
+                        ServiceLogger.WriteDebug("StackCraneTaskCompleted", $"澶у爢鍨涙満瀹屾垚鍏ュ簱浠诲姟鍚庡洖浼燤ES鍏ュ弬:{inparam}");
+                        MESResponse res = ApiInvoke.SendTaskCMD(sendcmd);
+                        if (res != null && res.code != 0)
+                        {
+
+                            ServiceLogger.WriteDebug("StackCraneTaskCompleted", $"澶у爢鍨涙満瀹屾垚鍏ュ簱浠诲姟鍚庡洖浼燤ES澶辫触锛�,浠诲姟鍙�:銆恵taskNum}銆�,澶辫触淇℃伅:銆恵res.message}銆�");
+                            content = WebResponseContent.Instance.Error($"澶у爢鍨涙満瀹屾垚鍏ュ簱浠诲姟鍚庡洖浼燤ES澶辫触锛�,浠诲姟鍙�:銆恵taskNum}銆�,澶辫触淇℃伅:銆恵res.message}銆�");
+                        }
+                        else
+                        {
+                            ServiceLogger.WriteDebug("StackCraneTaskCompleted", $"澶у爢鍨涙満瀹屾垚鍏ュ簱浠诲姟鍚庡洖浼燤ES鎴愬姛锛�,浠诲姟鍙�:銆恵taskNum}銆�");
+                        }
+
+                    }
+                    catch (Exception ex)
+                    {
+                        _unitOfWorkManage.RollbackTran();
+                        ServiceLogger.WriteDebug("StackCraneTaskCompleted", $"澶у爢鍨涙満鎵ц鍏ュ簱浠诲姟澶辫触锛�,浠诲姟鍙�:銆恵taskNum}銆�,澶辫触淇℃伅:銆恵ex.Message}銆�");
+                        content = WebResponseContent.Instance.Error($"澶у爢鍨涙満鎵ц鍏ュ簱浠诲姟澶辫触锛�,浠诲姟鍙�:銆恵taskNum}銆�,澶辫触淇℃伅:銆恵ex.Message}銆�");
+                    }
                 }
-                else if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.RelocationGroup)
+                //绉诲簱浠诲姟锛堢Щ搴擄紝鍑哄簱鍏辩敤锛� 璺緞锛氬簱浣�-->搴撲綅/鏆傚瓨搴撲綅
+                else if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.RelocationGroup && task.TaskState == (int)TaskOutStatusEnum.SC_OutExecuting)
                 {
-                    //todo 璋冪敤WMS绉诲簱瀹屾垚
+                    try
+                    {
+                        Dt_LocationInfo srcLocation = _locationInfoRepository.QueryFirst(x => x.LocationCode == task.SourceAddress);
+                        srcLocation.LocationStatus = (int)LocationStatusEnum.Free;
+
+                        Dt_LocationInfo tarLocation = _locationInfoRepository.QueryFirst(x => x.LocationCode == task.TargetAddress);
+                        tarLocation.LocationStatus = (int)LocationStatusEnum.InStock;
+                        UpdateTaskStatus(task.TaskId, (int)TaskOutStatusEnum.SC_OutFinish);
+                        _taskExecuteDetailService.AddTaskExecuteDetail(task.TaskId, $"鍫嗗灈鏈哄嚭搴撳畬鎴�");
+
+                        //寮�鍚簨鐗�
+                        _unitOfWorkManage.BeginTran();
+                        UpdateTaskStatus(task.TaskId, (int)TaskOutStatusEnum.OutFinish);
+                        _locationInfoRepository.UpdateData(srcLocation);
+                        _locationInfoRepository.UpdateData(tarLocation);
+                        _taskExecuteDetailService.AddTaskExecuteDetail(task.TaskId, $"鍑哄簱浠诲姟瀹屾垚");
+                        //鎻愪氦浜嬪姟
+                        _unitOfWorkManage.CommitTran();
+                        //绉诲簱瀹屾垚锛屽洖浼燤ES
+                        //鍥炰紶鍒癢MS
+                        MESSendCMD sendcmd = new MESSendCMD { cmd = 201, task_id = task.TaskNum, status = 6 };
+                        string inparam = JsonConvert.SerializeObject(sendcmd);
+                        ServiceLogger.WriteDebug("StackCraneTaskCompleted", $"澶у爢鍨涙満瀹屾垚鍑哄簱浠诲姟鍚庡洖浼燤ES鍏ュ弬:{inparam}");
+                        MESResponse res = ApiInvoke.SendTaskCMD(sendcmd);
+                        if (res != null && res.code != 0)
+                        {
+                            ServiceLogger.WriteDebug("StackCraneTaskCompleted", $"澶у爢鍨涙満瀹屾垚鍑哄簱浠诲姟鍚庡洖浼燤ES澶辫触锛�,浠诲姟鍙�:銆恵taskNum}銆�,澶辫触淇℃伅:銆恵res.message}銆�");
+                            content = WebResponseContent.Instance.Error($"澶у爢鍨涙満瀹屾垚鍑哄簱浠诲姟鍚庡洖浼燤ES澶辫触锛�,浠诲姟鍙�:銆恵taskNum}銆�,澶辫触淇℃伅:銆恵res.message}銆�");
+                        }
+
+                    }
+                    catch (Exception ex)
+                    {
+                        _unitOfWorkManage.RollbackTran();
+                        ServiceLogger.WriteDebug("StackCraneTaskCompleted", $"澶у爢鍨涙満鎵ц鍑哄簱浠诲姟澶辫触锛�,浠诲姟鍙�:銆恵taskNum}銆�,澶辫触淇℃伅:銆恵ex.Message}銆�");
+                        content = WebResponseContent.Instance.Error($"澶у爢鍨涙満鎵ц鍑哄簱浠诲姟澶辫触锛�,浠诲姟鍙�:銆恵taskNum}銆�,澶辫触淇℃伅:銆恵ex.Message}銆�");
+                    }
                 }
+                //涓婃枡
                 else if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.OtherGroup)
                 {
+                    try
+                    {
+                        //Dt_LocationInfo srcLocation = _locationInfoRepository.QueryFirst(x => x.LocationCode == task.SourceAddress);
+                        //srcLocation.LocationStatus = (int)LocationStatusEnum.Free;
+                        
+
+                        //寮�鍚簨鐗�
+                        _unitOfWorkManage.BeginTran();
+                        UpdateTaskStatus(task.TaskId, (int)TaskOutStatusEnum.SC_OutFinish);
+                        _taskExecuteDetailService.AddTaskExecuteDetail(task.TaskId, $"鍫嗗灈鏈哄嚭搴撳畬鎴�");
+                        //UpdateTaskStatus(task.TaskId, (int)TaskOutStatusEnum.OutFinish);
+                        //_locationInfoRepository.UpdateData(srcLocation);
+                        //_taskExecuteDetailService.AddTaskExecuteDetail(task.TaskId, $"鍑哄簱浠诲姟瀹屾垚");
+                        //鎻愪氦浜嬪姟
+                        _unitOfWorkManage.CommitTran();
+                        //涓婃枡瀹屾垚锛屽洖浼燱MS
+                        MESSendCMD sendcmd = new MESSendCMD { cmd = 201, task_id = task.TaskNum, status = 6 };
+                        string inparam = JsonConvert.SerializeObject(sendcmd);
+                        ServiceLogger.WriteDebug("StackCraneTaskCompleted", $"灏忓爢鍨涙満鎵ц鍑哄簱浠诲姟鍥炰紶MES鍏ュ弬{inparam}");
+                        MESResponse res = ApiInvoke.SendTaskCMD(sendcmd);
+                        if (res != null && res.code != 0)
+                        {
+                            ServiceLogger.WriteDebug("StackCraneTaskCompleted", $"灏忓爢鍨涙満瀹屾垚鍑哄簱浠诲姟鍚庡洖浼燤ES澶辫触锛�,浠诲姟鍙�:銆恵taskNum}銆�,澶辫触淇℃伅:銆恵res.message}銆�");
+                            content = WebResponseContent.Instance.Error($"灏忓爢鍨涙満瀹屾垚鍑哄簱浠诲姟鍚庡洖浼燤ES澶辫触锛�,浠诲姟鍙�:銆恵taskNum}銆�,澶辫触淇℃伅:銆恵res.message}銆�");
+                        }
+                        //else
+                        //{
+                        //    //鍒ゆ柇鏄惁瀹屾垚鐨勬渶鍚庝竴灞傦紝鑷姩鐢熸垚绌鸿溅鍑哄簱浠诲姟
+                        //    string[] Levels = task.Remark.Split("-");
+                        //    if (Levels.Length == 2)
+                        //    {
+                        //        if (!string.IsNullOrEmpty(Levels[0])&& !string.IsNullOrEmpty(Levels[1]))
+                        //        {
+                        //            //濡傛灉褰撳墠鎻愬彇灞傛暟绛変簬鎬诲眰鏂欙紝鍒欒〃绀烘枡杞︽墍鏈夌殑灞傛暟鍙栧畬
+                        //            if(Convert.ToInt16(Levels[0])== Convert.ToInt16(Levels[1]))
+                        //            {
+                        //                string[] SourceCodes = task.SourceAddress.Split("-");
+                        //                string startPlan = "";
+                        //                if (SourceCodes.Length == 4)
+                        //                {
+                        //                    startPlan = "101" + SourceCodes[2].Substring(1, 2);
+                        //                }
+                        //                DeliveryPlan send = new DeliveryPlan { startPlan = startPlan, isQuit = false, CarId = task.PalletCode };
+                        //                string inparam2 = JsonConvert.SerializeObject(send);
+                        //                ServiceLogger.WriteDebug("StackCraneTaskCompleted", $"灏忓爢鍨涙満鎵ц鍑哄簱浠诲姟鍥炰紶MES鍏ュ弬{inparam2}");
+                        //                ApiInvoke.DeliveryPlanCMD(send);//鍥炶皟MES鎺ュ彛鐢熸垚绌鸿溅鍑哄簱浠诲姟
+                        //                鎵�鏈夌殑灞傛暟閮藉彇瀹岋紝闇�瑕佹妸鏆傚瓨浣嶇姸鎬佹敼涓虹┖闂茬姸鎬�
+                        //                srcLocation.LocationStatus = (int)LocationStatusEnum.Free;
+                        //                _locationInfoRepository.UpdateData(srcLocation);
+                        //            }
+
+                        //        }
+                              
+                        //    }
+                        //}
+
+                    }
+                    catch (Exception ex)
+                    {
+                        _unitOfWorkManage.RollbackTran();
+                        ServiceLogger.WriteDebug("StackCraneTaskCompleted", $"灏忓爢鍨涙満鎵ц鍑哄簱浠诲姟澶辫触锛�,浠诲姟鍙�:銆恵taskNum}銆�,澶辫触淇℃伅:銆恵ex.StackTrace}銆�");
+                        content = WebResponseContent.Instance.Error($"灏忓爢鍨涙満鎵ц鍑哄簱浠诲姟澶辫触锛�,浠诲姟鍙�:銆恵taskNum}銆�,澶辫触淇℃伅:銆恵ex.Message}銆�");
+                    }
 
                 }
                 else
                 {
+                    ServiceLogger.WriteDebug("StackCraneTaskCompleted", $"浠诲姟绫诲瀷閿欒,鏈壘鍒拌浠诲姟绫诲瀷,浠诲姟鍙�:銆恵taskNum}銆�,浠诲姟绫诲瀷:銆恵task.TaskType}銆�");
                     throw new Exception($"浠诲姟绫诲瀷閿欒,鏈壘鍒拌浠诲姟绫诲瀷,浠诲姟鍙�:銆恵taskNum}銆�,浠诲姟绫诲瀷:銆恵task.TaskType}銆�");
                 }
-                content = WebResponseContent.Instance.OK();
+                ServiceLogger.WriteDebug("StackCraneTaskCompleted", $"浠诲姟瀹屾垚鎴愬姛,浠诲姟鍙�:銆恵taskNum}銆�");
+                content = WebResponseContent.Instance.OK($"浠诲姟瀹屾垚鎴愬姛,浠诲姟鍙�:銆恵taskNum}銆�");
             }
             catch (Exception ex)
             {
-                content = WebResponseContent.Instance.Error($"浠诲姟瀹屾垚寮傚父,浠诲姟鍙�:銆恵taskNum}銆�");
+                ServiceLogger.WriteDebug("StackCraneTaskCompleted", $"浠诲姟瀹屾垚寮傚父,浠诲姟鍙�:銆恵taskNum}銆憑ex.Message}");
+                content = WebResponseContent.Instance.Error($"浠诲姟瀹屾垚寮傚父,浠诲姟鍙�:銆恵taskNum}銆憑ex.Message}");
             }
             return content;
         }
+
+
 
         /// <summary>
         /// 鎭㈠鎸傝捣浠诲姟
@@ -594,5 +1410,8 @@
             }
             return content;
         }
+
+
+
     }
 }

--
Gitblit v1.9.3