From 222d2040c2a5e958b5fbd0b7047a8e802ec14288 Mon Sep 17 00:00:00 2001
From: 刘磊 <1161824510@qq.com>
Date: 星期六, 23 十一月 2024 14:42:34 +0800
Subject: [PATCH] 一大堆

---
 Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/Partial/TaskService.cs |  294 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 293 insertions(+), 1 deletions(-)

diff --git a/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/Partial/TaskService.cs b/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/Partial/TaskService.cs
index d25a513..0b097b3 100644
--- a/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/Partial/TaskService.cs
+++ b/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/Partial/TaskService.cs
@@ -1,13 +1,305 @@
-锘縰sing System;
+锘縰sing HslCommunication;
+using Newtonsoft.Json;
+using System;
 using System.Collections.Generic;
 using System.Linq;
 using System.Text;
 using System.Threading.Tasks;
+using WIDESEAWCS_Common;
+using WIDESEAWCS_Core.Helper;
+using WIDESEAWCS_Core;
+using WIDESEAWCS_DTO.TaskInfo;
+using System.Diagnostics.CodeAnalysis;
+using WIDESEAWCS_Common.TaskEnum;
+using WIDESEAWCS_Model.Models;
+using WIDESEAWCS_QuartzJob.Models;
 
 namespace WIDESEAWCS_TaskInfoService
 {
     public partial class TaskService
     {
 
+        /// <summary>
+        /// 鏍规嵁鎵樼洏鍙枫�佽捣濮嬪湴鍧�鍚慦MS璇锋眰浠诲姟
+        /// </summary>
+        /// <param name="palletCode">鎵樼洏鍙�</param>
+        /// <param name="sourceAddress">璧峰鍦板潃</param>
+        /// <returns></returns>
+        public async Task<WebResponseContent> RequestTask(string palletCode, string EquiCodeMOM, string Roadways, string area, string CurrentChildCode)
+        {
+            WebResponseContent content = new WebResponseContent();
+            try
+            {
+                var hasTask = await BaseDal.QueryFirstAsync(x => x.PalletCode == palletCode);
+                if (hasTask != null)
+                {
+                    return content.Error("褰撳墠鎵樼洏瀛樺湪浠诲姟");
+                }
+
+                var config = _sys_ConfigService.GetConfigsByCategory(CateGoryConst.CONFIG_SYS_IPAddress);
+                var wmsBase = config.FirstOrDefault(x => x.ConfigKey == SysConfigKeyConst.WMSIP_BASE)?.ConfigValue;
+                var requestTask = config.FirstOrDefault(x => x.ConfigKey == SysConfigKeyConst.RequestInTask)?.ConfigValue;
+                if (wmsBase == null || requestTask == null)
+                {
+                    throw new InvalidOperationException("WMS IP 鏈厤缃�");
+                }
+                var wmsIpAddrss = wmsBase + requestTask;
+
+                var result = await HttpHelper.PostAsync(wmsIpAddrss, new { palletCode = palletCode, EquiCodeMOM = EquiCodeMOM, Roadways = Roadways, area = area, Position = CurrentChildCode }.ToJsonString());
+                content = JsonConvert.DeserializeObject<WebResponseContent>(result);
+
+                if (!content.Status)
+                {
+                    // wms澶辫触杩斿洖鍘籒G鍙d换鍔�
+
+
+                    return content;
+                }
+
+                var task = JsonConvert.DeserializeObject<WMSTaskDTO>(content.Data.ToString());
+                return ReceiveByWMSTask(task);
+            }
+            catch (Exception ex)
+            {
+                return WebResponseContent.Instance.Error(ex.Message);
+            }
+        }
+
+        /// <summary>
+        /// 鏍规嵁鎵樼洏鍙枫�佺珯鍙板悜WMS璇锋眰浠诲姟
+        /// </summary>
+        /// <param name="palletCode">鎵樼洏鍙�</param>
+        /// <param name="sourceAddress">璧峰鍦板潃</param>
+        /// <returns></returns>
+        public async Task<WebResponseContent> RequestTask(string palletCode, Dt_StationManager stationManager)
+        {
+            WebResponseContent content = new WebResponseContent();
+            try
+            {
+                var hasTask = await BaseDal.QueryFirstAsync(x => x.PalletCode == palletCode);
+                if (hasTask != null)
+                {
+                    return content.Error("褰撳墠鎵樼洏瀛樺湪浠诲姟");
+                }
+
+                var config = _sys_ConfigService.GetConfigsByCategory(CateGoryConst.CONFIG_SYS_IPAddress);
+                var wmsBase = config.FirstOrDefault(x => x.ConfigKey == SysConfigKeyConst.WMSIP_BASE)?.ConfigValue;
+                var requestTask = config.FirstOrDefault(x => x.ConfigKey == SysConfigKeyConst.RequestInTask)?.ConfigValue;
+                if (wmsBase == null || requestTask == null)
+                {
+                    throw new InvalidOperationException("WMS IP 鏈厤缃�");
+                }
+                var wmsIpAddrss = wmsBase + requestTask;
+
+                var result = await HttpHelper.PostAsync(wmsIpAddrss, new { palletCode = palletCode, EquiCodeMOM = stationManager.stationEquipMOM, Roadways = stationManager.Roadway, area = stationManager.stationArea, Position = stationManager.stationChildCode }.ToJsonString());
+                content = JsonConvert.DeserializeObject<WebResponseContent>(result);
+
+                if (!content.Status)
+                {
+                    // wms澶辫触杩斿洖鍘籒G鍙d换鍔�
+
+
+                    return content;
+                }
+
+                var task = JsonConvert.DeserializeObject<WMSTaskDTO>(content.Data.ToString());
+                return ReceiveByWMSTask(task);
+            }
+            catch (Exception ex)
+            {
+                return WebResponseContent.Instance.Error(ex.Message);
+            }
+        }
+
+        /// <summary>
+        /// 鎺ユ敹WMS浠诲姟淇℃伅
+        /// </summary>
+        /// <param name="taskDTOs">WMS浠诲姟瀵硅薄闆嗗悎</param>
+        /// <returns>杩斿洖澶勭悊缁撴灉</returns>
+        public WebResponseContent ReceiveByWMSTask([NotNull] WMSTaskDTO taskDTO)
+        {
+            WebResponseContent content = new WebResponseContent();
+            try
+            {
+                if (BaseDal.QueryFirst(x => x.TaskNum == taskDTO.TaskNum || x.PalletCode == taskDTO.PalletCode) != null)
+                {
+                    return content.OK();
+                }
+                Dt_Task task = _mapper.Map<Dt_Task>(taskDTO);
+                task.Creater = "WMS";
+
+                if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.OutbondGroup)
+                {
+                    var stationinfo = _stationManagerRepository.QueryFirst(x => x.stationLocation == taskDTO.TargetAddress && x.Roadway == taskDTO.RoadWay);
+                    task.TaskState = (int)TaskOutStatusEnum.OutNew;
+                    task.CurrentAddress = taskDTO.RoadWay;
+                    task.NextAddress = stationinfo.stationChildCode;
+                    task.SourceAddress = taskDTO.SourceAddress;
+                    task.TargetAddress = taskDTO.TargetAddress;
+                }
+                else if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.InboundGroup)
+                {
+                    var stationinfo = _stationManagerRepository.QueryFirst(x => x.stationLocation == taskDTO.SourceAddress && x.Roadway == taskDTO.RoadWay);
+                    task.TaskState = (int)TaskInStatusEnum.Line_InFinish;
+                    task.SourceAddress = taskDTO.SourceAddress;
+                    task.CurrentAddress = stationinfo.stationChildCode;
+                    task.NextAddress = stationinfo.stationChildCode;
+                    task.TargetAddress = taskDTO.TargetAddress;
+                }
+                BaseDal.AddData(task);
+
+                _taskExecuteDetailService.AddTaskExecuteDetail(task.WMSId, "鎺ユ敹WMS浠诲姟");
+
+                content = WebResponseContent.Instance.OK("鎴愬姛");
+            }
+            catch (Exception ex)
+            {
+                content = WebResponseContent.Instance.Error($"浠诲姟鎺ユ敹閿欒,閿欒淇℃伅:{ex.Message}");
+            }
+            return content;
+        }
+
+
+        /// <summary>
+        /// 鎺ユ敹WMS浠诲姟淇℃伅
+        /// </summary>
+        /// <param name="taskDTOs">WMS浠诲姟瀵硅薄闆嗗悎</param>
+        /// <returns>杩斿洖澶勭悊缁撴灉</returns>
+        public async Task<WebResponseContent> RequestFlow(Dt_StationManager stationManager)
+        {
+            WebResponseContent content = new WebResponseContent();
+            try
+            {
+                var config = _sys_ConfigService.GetConfigsByCategory(CateGoryConst.CONFIG_SYS_IPAddress);
+                var wmsBase = config.FirstOrDefault(x => x.ConfigKey == SysConfigKeyConst.WMSIP_BASE)?.ConfigValue;
+                var requestTask = config.FirstOrDefault(x => x.ConfigKey == SysConfigKeyConst.RequestFlow)?.ConfigValue;
+                if (wmsBase == null || requestTask == null)
+                {
+                    throw new InvalidOperationException("WMS IP 鏈厤缃�");
+                }
+                var wmsIpAddrss = wmsBase + requestTask;
+
+                var result = await HttpHelper.PostAsync(wmsIpAddrss, new {  EquiCodeMOM = stationManager.stationEquipMOM, Roadways = stationManager.Roadway, area = stationManager.stationArea, Position = stationManager.stationChildCode }.ToJsonString());
+                content = JsonConvert.DeserializeObject<WebResponseContent>(result);
+
+                if (!content.Status)
+                {
+
+                    return content;
+                }
+                Dt_StationManager dt_Station = content.Data as Dt_StationManager;
+                //dt_Station.
+            }
+            catch (Exception ex)
+            {
+                content = WebResponseContent.Instance.Error($"浠诲姟鎺ユ敹閿欒,閿欒淇℃伅:{ex.Message}");
+            }
+            return content;
+        }
+
+        /// <summary>
+        /// 鏍规嵁鎵樼洏鍙峰拰璁惧鍙锋煡璇㈠叆搴撲换鍔�
+        /// </summary>
+        /// <param name="taskNum">浠诲姟鍙�</param>
+        /// <param name="currentAddress">褰撳墠鍦板潃</param>
+        /// <returns></returns>
+        public Dt_Task QueryTaskByPalletCode(string palletCode, string Roadway)
+        {
+            return BaseDal.QueryFirst(x => x.PalletCode == palletCode && x.Roadway == Roadway, TaskOrderBy);
+        }
+
+        ///// <summary>
+        ///// 鏍规嵁璁惧缂栧彿銆佸綋鍓嶅湴鍧�鏌ヨ杈撻�佺嚎鏈墽琛岀殑浠诲姟
+        ///// </summary>
+        ///// <param name="deviceNo">璁惧缂栧彿</param>
+        ///// <param name="currentAddress">褰撳墠鍦板潃</param>
+        ///// <returns></returns>
+        //public Dt_Task QueryConveyorLineTask(string deviceNo, string currentAddress)
+        //{
+        //    return BaseDal.QueryFirst(x => (TaskInboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskInStatusEnum.InNew || TaskOutboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskOutStatusEnum.SC_OutFinish) && x.CurrentAddress == currentAddress, TaskOrderBy);
+        //}
+
+        /// 浠诲姟瀹屾垚
+        /// </summary>
+        /// <param name="taskNum">浠诲姟缂栧彿</param>
+        /// <returns>杩斿洖澶勭悊缁撴灉</returns>
+        public WebResponseContent StackCraneTaskCompletedByStation(int taskNum)
+        {
+            WebResponseContent content = new WebResponseContent();
+            try
+            {
+                var task = BaseDal.QueryFirst(x => x.TaskNum == taskNum);
+                if (task == null) return WebResponseContent.Instance.Error($"鏈壘鍒拌浠诲姟淇℃伅,浠诲姟鍙�:銆恵taskNum}銆�");
+
+                //if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.OutbondGroup && task.TaskState == (int)TaskOutStatusEnum.SC_OutExecuting)
+                //{
+                //    //todo 
+
+                //}
+                //else if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.InboundGroup && task.TaskState == (int)TaskInStatusEnum.SC_InExecuting)
+                //{
+                //    //todo 鍚屾鍒癢MS
+
+                //    BaseDal.DeleteData(task);
+
+                //}
+                //else if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.RelocationGroup)
+                //{
+                //    //todo 璋冪敤WMS绉诲簱瀹屾垚
+                //}
+                //else if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.OtherGroup)
+                //{
+                //}
+                //else
+                //{
+                //    throw new Exception($"浠诲姟绫诲瀷閿欒,鏈壘鍒拌浠诲姟绫诲瀷,浠诲姟鍙�:銆恵taskNum}銆�,浠诲姟绫诲瀷:銆恵task.TaskType}銆�");
+                //}
+
+
+                #region WMS鍚屾浠诲姟瀹屾垚
+                var keys = new Dictionary<string, object>()
+                {
+                    {"taskNum", taskNum}
+                };
+                // 鑾峰彇WMSip鍦板潃
+                var config = _sys_ConfigService.GetConfigsByCategory(CateGoryConst.CONFIG_SYS_IPAddress);
+                var wmsBase = config.FirstOrDefault(x => x.ConfigKey == SysConfigKeyConst.WMSIP_BASE)?.ConfigValue;
+                var completeTask = config.FirstOrDefault(x => x.ConfigKey == SysConfigKeyConst.CompleteTask)?.ConfigValue;
+                if (wmsBase == null || completeTask == null)
+                {
+                    throw new InvalidOperationException("WMS IP 鏈厤缃�");
+                }
+                var wmsIpAddress = wmsBase + completeTask;
+
+                var result = HttpHelper.GetAsync(wmsIpAddress, keys).Result;
+                content = JsonConvert.DeserializeObject<WebResponseContent>(result);
+                #endregion
+
+                if (content.Status)
+                {
+                    task.TaskState = (int)TaskOutStatusEnum.OutFinish;
+                    BaseDal.DeleteData(task);
+                }
+
+                #region  鏇存柊浠诲姟鐘舵��
+
+                //var updateTask = config.FirstOrDefault(x => x.ConfigKey == SysConfigKeyConst.UpdateTask)?.ConfigValue;
+                //if (wmsBase == null || updateTask == null)
+                //{
+                //    throw new InvalidOperationException("WMS IP 鏈厤缃�");
+                //}
+                //wmsIpAddress = wmsBase + updateTask;
+
+                //result = HttpHelper.PostAsync(wmsIpAddress, new { TaskNum = task.TaskNum, TaskState = task.TaskState }.ToJsonString()).Result;
+                //content = JsonConvert.DeserializeObject<WebResponseContent>(result);
+                #endregion
+                //content = WebResponseContent.Instance.OK();
+            }
+            catch (Exception ex)
+            {
+                content = WebResponseContent.Instance.Error($"浠诲姟瀹屾垚寮傚父,浠诲姟鍙�:銆恵taskNum}銆�");
+            }
+            return content;
+        }
     }
 }

--
Gitblit v1.9.3