1
huangxiaoqiang
2 天以前 7be4a0122a2fba9d9ec1a202d1207d29d4fa55b7
Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs
@@ -4,6 +4,7 @@
using Newtonsoft.Json;
using SqlSugar;
using System.Diagnostics.CodeAnalysis;
using System.Threading.Tasks;
using WIDESEAWCS_BasicInfoRepository;
using WIDESEAWCS_BasicInfoService;
using WIDESEAWCS_Common;
@@ -19,9 +20,11 @@
using WIDESEAWCS_ITaskInfoRepository;
using WIDESEAWCS_ITaskInfoService;
using WIDESEAWCS_Model.Models;
using WIDESEAWCS_QuartzJob;
using WIDESEAWCS_QuartzJob.Models;
using WIDESEAWCS_QuartzJob.Repository;
using WIDESEAWCS_QuartzJob.Service;
using static Microsoft.EntityFrameworkCore.DbLoggerCategory.Database;
namespace WIDESEAWCS_TaskInfoService
{
@@ -94,7 +97,7 @@
                    if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.OutbondGroup)
                    {
                        // 判断任务目标地址和路径是否满足特定条件
                        if (((task.TargetAddress == "002-021-001" || task.TargetAddress == "001-021-001") && task.Roadway.Contains("JZ"))|| task.TaskType == (int)TaskOutboundTypeEnum.OutFireAlarm)
                        if (((task.TargetAddress == "002-021-001" || task.TargetAddress == "001-021-001") && task.Roadway.Contains("JZ")) || task.TaskType == (int)TaskOutboundTypeEnum.OutFireAlarm)
                        {
                            // 设置任务状态为出库新建
                            task.TaskState = (int)TaskOutStatusEnum.OutNew;
@@ -245,6 +248,7 @@
            }
            catch (Exception ex)
            {
                QuartzLogger.WriteLogToFile($"接收任务异常", $"托盘号:【{palletCode}】请求点位:【{sourceAddress}】异常信息【{ex.Message}】异常行【{ex.StackTrace}】");
                return WebResponseContent.Instance.Error(ex.Message);
            }
        }
@@ -266,7 +270,7 @@
        /// <param name="deviceNo">设备编号</param>
        /// <param name="currentAddress">当前地址</param>
        /// <returns></returns>
        public Dt_Task QueryConveyorLineTask(string deviceNo, string currentAddress,string Barcode)
        public Dt_Task QueryConveyorLineTask(string deviceNo, string currentAddress, string Barcode)
        {
            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 && x.PalletCode == Barcode, TaskOrderBy);
        }
@@ -308,11 +312,34 @@
        /// 根据任务号、下一地址查询输送线执行中的任务
        /// </summary>
        /// <param name="taskNum">任务号</param>
        /// <param name="Barcode">下一地址</param>
        /// <param name="currentAddress">下一地址</param>
        /// <returns></returns>
        public Dt_Task QueryExecutingCurrentConveyorLineTask(int taskNum, string Barcode, string currentAddress)
        {
            return BaseDal.QueryFirst(x => x.TaskNum == taskNum && x.PalletCode == Barcode && x.CurrentAddress == currentAddress && (x.TaskState == (int)TaskInStatusEnum.Line_InExecuting || x.TaskState == (int)TaskOutStatusEnum.Line_OutExecuting), TaskOrderBy);
        }
        /// <summary>
        /// 根据任务号、下一地址查询输送线执行中的任务
        /// </summary>
        /// <param name="taskNum">任务号</param>
        /// <param name="nextAddress">下一地址</param>
        /// <returns></returns>
        public Dt_Task QueryExecutingConveyorLineTask(int taskNum, string nextAddress,string Barcode)
        public Dt_Task QueryExecutingConveyorLineTask(int taskNum, string nextAddress, string Barcode)
        {
            return BaseDal.QueryFirst(x => x.TaskNum == taskNum && x.NextAddress == nextAddress && (x.TaskState == (int)TaskInStatusEnum.Line_InExecuting || x.TaskState == (int)TaskOutStatusEnum.Line_OutExecuting), TaskOrderBy);
        }
        /// <summary>
        /// 根据托盘号、下一地址查询输送线执行中的任务
        /// </summary>
        /// <param name="taskNum">任务号</param>
        /// <param name="nextAddress">下一地址</param>
        /// <returns></returns>
        public Dt_Task QueryExecutingConveyorLineTask(string nextAddress, string Barcode)
        {
            return BaseDal.QueryFirst(x => (x.NextAddress == nextAddress || x.TargetAddress == nextAddress) && (x.TaskState == (int)TaskInStatusEnum.Line_InExecuting || x.TaskState == (int)TaskOutStatusEnum.Line_OutExecuting), TaskOrderBy);
        }
        /// <summary>
@@ -571,9 +598,15 @@
                        // 反序列化响应内容
                        content = JsonConvert.DeserializeObject<WebResponseContent>(abc);
                        QuartzLogger.WriteLogToFile($"Info_获取货位", $"获取货位,任务号:【{task.TaskNum}】,托盘号:【{task.PalletCode}】返回参数【{JsonConvert.SerializeObject(content)}】{Environment.NewLine}{Environment.NewLine}");
                        // 检查状态并返回
                        if (!content.Status)
                        {
                            return content;
                        }
                        // 反序列化任务数据
                        var taskResult = JsonConvert.DeserializeObject<WMSTaskDTO>(content.Data.ToString());
@@ -668,7 +701,7 @@
                task.ModifyDate = DateTime.Now;
                task.Modifier = "System";
                _taskExecuteDetailService.AddTaskExecuteDetail(task.TaskId, $"系统自动流程,更新当前位置【{oldCurrentPos} ----> {task.CurrentAddress}】和下一位置【{oldNextPos} ----> {task.NextAddress}】");
                return task;
@@ -709,18 +742,24 @@
                var wmsIpAddress = wmsBase + completeTask;
                var result = HttpHelper.GetAsync(wmsIpAddress, keys).Result;
                content = JsonConvert.DeserializeObject<WebResponseContent>(result);
                if (!content.Data.IsNullOrEmpty())
                {
                    if (content.Data.ToString() == "NG")
                    {
                        task.Remark = "NG";
                        //BaseDal.UpdateData(task);
                        //_taskExecuteDetailService.AddTaskExecuteDetail(task.TaskId, $"堆垛机出库完成,MOM返回NG");
                    }
                }
                task.ExceptionMessage += "   " + content.Message;
                QuartzLogger.WriteLogToFile($"Info_任务完成", $"任务完成,任务号:【{taskNum}】返回参数【{JsonConvert.SerializeObject(result)}】{Environment.NewLine}{Environment.NewLine}");
                if (result != null)
                {
                    content = JsonConvert.DeserializeObject<WebResponseContent>(result);
                    if (!content.Data.IsNullOrEmpty())
                    {
                        if (content.Data.ToString() == "NG")
                        {
                            task.Remark = "NG";
                            //BaseDal.UpdateData(task);
                            //_taskExecuteDetailService.AddTaskExecuteDetail(task.TaskId, $"堆垛机出库完成,MOM返回NG");
                        }
                    }
                    task.ExceptionMessage += "   " + content.Message;
                }
                #endregion WMS同步任务完成
                if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.OutbondGroup && task.TaskState == (int)TaskOutStatusEnum.SC_OutExecuting)
@@ -791,7 +830,7 @@
            catch (Exception ex)
            {
                content = WebResponseContent.Instance.Error($"任务完成异常,任务号:【{taskNum}】");
                QuartzLogger.WriteLogToFile($"Info_任务完成", $"任务完成异常,任务号:【{taskNum}】异常信息【{ex.StackTrace}】{Environment.NewLine}{Environment.NewLine}");
                QuartzLogger.WriteLogToFile($"Info_任务完成", $"任务完成异常,任务号:【{taskNum}】异常信息【{ex.Message}】{Environment.NewLine}异常信息【{ex.StackTrace}】{Environment.NewLine}");
            }
            QuartzLogger.WriteLogToFile($"Info_任务完成", $"任务完成,任务号:【{taskNum}】返回参数【{JsonConvert.SerializeObject(content)}】{Environment.NewLine}{Environment.NewLine}");
            return content;
@@ -912,7 +951,13 @@
            }
            return wcsBasez + address;
        }
        public WebResponseContent Delete(Dt_Task task)
        {
            var taskHty = task.Adapt<Dt_Task_Hty>();
            taskHty.Creater = App.User.UserName != null ? App.User.UserName : "System";
            _taskHtyRepository.AddData(taskHty);
            return base.DeleteData(task);
        }
        #region 重写方法
        public override WebResponseContent DeleteData(object[] key)