yanjinhui
6 天以前 b8c024874d21dd9b27a00b324e6c14ad29fb666b
优化job接口
已添加1个文件
已修改3个文件
306 ■■■■■ 文件已修改
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/TSJJob.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/Task/RGVTaskExtend.cs 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/TestExtend.cs 162 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/TestJob.cs 124 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/TSJJob.cs
@@ -234,7 +234,7 @@
            }
            else
            {
                WriteError(nameof(TestJob), "参数错误,未传递设备参数或设备类型错误");
                WriteError(nameof(TSJJob), "参数错误,未传递设备参数或设备类型错误");
            }
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/Task/RGVTaskExtend.cs
@@ -32,10 +32,8 @@
            try
            {
                Dt_ApiInfo? apiInfo = _apiInfoService.Repository.QueryFirst(x => x.ApiCode == nameof(FOURBOTnewMovePodTask)) ?? throw new Exception("未找到四向车任务下发接口配置信息!请检查接口配置");
                int i = 0;
                foreach (var task in tasks)
                {
                    i++;
                    fOURBOTnewMovePodTask = new()
                    {
                        priority = task.Grade,
@@ -70,6 +68,11 @@
                    catch (Exception ex)
                    {
                        task.ExceptionMessage = ex.Message;
                        content.Error(ex.Message);
                    }
                    finally
                    {
                        _trackloginfoService.AddTrackLog(fOURBOTnewMovePodTask, content, "下发四向车新建入库任务", "", "");
                    }
                }
                var uptasks = tasks.Where(task => string.IsNullOrEmpty(task.ExceptionMessage)).ToList();
@@ -79,6 +82,7 @@
                {
                    foreach (var item in errortasks)
                    {
                        Thread.Sleep(500);
                        _taskService.ErrorTaskFeedback(item, true);
                    }
                }
@@ -87,10 +91,6 @@
            catch (Exception ex)
            {
                content.Error(ex.Message);
            }
            finally
            {
                _trackloginfoService.AddTrackLog(fOURBOTnewMovePodTask, content, "下发四向车新建入库任务", "", "");
            }
        }
@@ -183,7 +183,9 @@
                };
                requestData = request;  // ä¿å­˜è¯·æ±‚数据用于日志
                //content.candidatePodIDs = tasks.Select(x => x.PalletCode).ToList();
                string response = HttpHelper.Post(apiInfo.ApiAddress, request.Serialize());
                string response = HttpHelper.Post("http://127.0.0.1:4523/m2/6165241-5857331-default/440906899?apifoxApiId=440906899", request.Serialize());
                //string response = HttpHelper.Post(apiInfo.ApiAddress, request.Serialize());
                FOURBOTReturn fOURBOTReturn = response.DeserializeObject<FOURBOTReturn>();
                content.OK(data: fOURBOTReturn);
                if (fOURBOTReturn.returnCode == 0)
@@ -608,7 +610,7 @@
            {
                foreach (var item in tasks)
                {
                    var takes = _taskService.Repository.QueryFirst(x => x.Roadway == item.Roadway && x.TaskType == (int)TaskTypeEnum.CPMoveInventory);
                    var takes = _taskService.Repository.QueryFirst(x => x.Roadway == item.Roadway && x.TaskType == (int)TaskTypeEnum.CPMoveInventory && (x.TaskState == (int)TaskStatusEnum.RGV_NewMoveTask || x.TaskState == (int)TaskStatusEnum.RGV_MoveTaskSend));
                    if (takes == null)
                    {
                        item.TaskState = (int)TaskStatusEnum.RGV_WaitSend;
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/TestExtend.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,162 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using WIDESEAWCS_Common.LocationEnum;
using WIDESEAWCS_Common.TaskEnum;
using WIDESEAWCS_Common;
using WIDESEAWCS_Model.Models;
using WIDESEAWCS_Core.Helper;
using WIDESEAWCS_QuartzJob;
namespace WIDESEAWCS_Tasks
{
    public partial class TestJob
    {
        /// <summary>
        /// å››å‘车质检任务
        /// </summary>
        /// <param name="device"></param>
        public void SXCTasks(OtherDevice device)
        {
            #region å››å‘车任务
            List<Dt_Task> Uptasks = new List<Dt_Task>();
            var taskList = _taskService.Repository.QueryData(x => x.TaskType == TaskTypeEnum.CPInbound.ObjToInt() && x.TaskState == TaskStatusEnum.CheckShapeing.ObjToInt());
            //任务的目标地址对于站台号;
            foreach (var task in taskList)
            {
                if (device.GetValue<QualityInspectionCommandEnum, bool>(QualityInspectionCommandEnum.R_QualityInspection, task.SourceAddress))
                {
                    device.SetValue(QualityInspectionCommandEnum.StartqualityInspection, false, task.SourceAddress);
                    //再读取质检结果
                    var qualityResult = device.GetValue<QualityInspectionCommandEnum, bool>(QualityInspectionCommandEnum.R_QualityInspectionInProgress, task.SourceAddress);
                    //左超宽警告
                    var R_LeftOverWidthWarning = device.GetValue<QualityInspectionCommandEnum, bool>(QualityInspectionCommandEnum.R_LeftOverWidthWarning, task.SourceAddress);
                    //右超宽警告
                    var R_RightWideWarning = device.GetValue<QualityInspectionCommandEnum, bool>(QualityInspectionCommandEnum.R_RightWideWarning, task.SourceAddress);
                    //超高警告
                    var R_ExtremeWarning = device.GetValue<QualityInspectionCommandEnum, bool>(QualityInspectionCommandEnum.R_ExtremeWarning, task.SourceAddress);
                    if (qualityResult)
                    {
                        //如果质检通过了,就把任务状态改为质检完成
                        task.TaskState = TaskStatusEnum.CheckShapeingOk.ObjToInt();
                        task.ExceptionMessage = "";
                        Uptasks.Add(task);
                    }
                    else
                    {
                        task.TaskState = TaskStatusEnum.CheckShapeingNG.ObjToInt();
                        task.ExceptionMessage = "外检失败";
                        if (R_LeftOverWidthWarning) task.ExceptionMessage += ",左超宽";
                        if (R_RightWideWarning) task.ExceptionMessage += ",右超宽";
                        if (R_ExtremeWarning) task.ExceptionMessage += ",超高";
                        Uptasks.Add(task);
                        //写入复位信号
                        //device.SetValue(QualityInspectionCommandEnum.FaultReset, true, task.SourceAddress);
                    }
                    //写入停止质检信号
                    device.SetValue(QualityInspectionCommandEnum.StopqualityInspection, true, task.SourceAddress);
                    Thread.Sleep(500);
                    device.SetValue(QualityInspectionCommandEnum.StopqualityInspection, false, task.SourceAddress);
                }
                //else
                //{
                //    //写入停止质检信号
                //    device.SetValue(QualityInspectionCommandEnum.StopqualityInspection, false, task.SourceAddress);
                //    device.SetValue(QualityInspectionCommandEnum.StartqualityInspection, true, task.SourceAddress);
                //}
                else
                {
                    task.TaskState = TaskStatusEnum.CheckShapeingNG.ObjToInt();
                    task.ExceptionMessage = "未检测到质检完成信号";
                    Uptasks.Add(task);
                }
            }
            if (Uptasks.Count > 0)
            {
                _taskService.UpdateData(Uptasks);
            }
            #endregion
        }
        /// <summary>
        /// æµ·åº·AGV1-6楼任务
        /// </summary>
        /// <param name="device"></param>
        public void KHTasks(OtherDevice device)
        {
            List<Dt_Task> Uptasks = new List<Dt_Task>();
            var AGVtaskList = _taskService.Repository.QueryData(x => x.TaskState == TaskStatusEnum.AGV_WaitToExecute.ObjToInt() && (x.TaskType == TaskTypeEnum.Q3RK.ObjToInt() || x.TaskType == TaskTypeEnum.Q3CK.ObjToInt()));//1-6和6-1楼任务
            foreach (var item in AGVtaskList)
            {
                var address = item.TaskType == TaskTypeEnum.Q3RK.ObjToInt() ? item.TargetAddress : item.SourceAddress;
                var stationManger = _stationMangerService.Repository.QueryFirst(x => x.StationCode == address);
                if (stationManger == null)
                {
                    item.ExceptionMessage = $"未找到【{address}】站台信息";
                    Uptasks.Add(item);
                    continue;
                }
                var StockAvailableSymbol = device.GetValue<QualityInspectionCommandEnum, bool>(QualityInspectionCommandEnum.R_StockAvailableSymbol, address);
                if (item.TaskType == TaskTypeEnum.Q3RK.ObjToInt())
                {
                    if (StockAvailableSymbol)
                    {
                        item.ExceptionMessage = $"{address}站台光电检测有货!";
                        Uptasks.Add(item);
                        continue;
                    }
                    if (stationManger.IsOccupied == (int)LocationStatusEnum.Lock)
                    {
                        item.ExceptionMessage = $"站台有货!";
                        Uptasks.Add(item);
                        continue;
                    }
                }
                else
                {
                    if (!StockAvailableSymbol)
                    {
                        item.ExceptionMessage = $"{address}站台光电检测无货!";
                        Uptasks.Add(item);
                        continue;
                    }
                    if (stationManger.IsOccupied == (int)LocationStatusEnum.Free)
                    {
                        item.ExceptionMessage = $"站台无货!";
                        Uptasks.Add(item);
                        continue;
                    }
                }
                //into进入一楼位置的时候,写入进入信号
                device.SetValue(QualityInspectionCommandEnum.RequestToEnter, true, address);
                if (!device.GetValue<QualityInspectionCommandEnum, bool>(QualityInspectionCommandEnum.Blocking, address))
                {
                    item.ExceptionMessage = $"{address}站台光栅不为true(1)!";
                    Uptasks.Add(item);
                    continue;
                }
                var result = _taskService.Hikvisiontaskscontinue(item.WMSTaskNum);
                if (result.Status == false)
                {
                    if (item.ExceptionMessage != result.Message)
                    {
                        item.ExceptionMessage = result.Message;
                        Uptasks.Add(item);
                    }
                    continue;
                }
                item.TaskState = (int)TaskStatusEnum.AGV_ToExecute;
                item.ExceptionMessage = "";
                Uptasks.Add(item);
            }
            if (Uptasks.Count > 0)
            {
                _taskService.UpdateData(Uptasks);
            }
        }
    }
}
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/TestJob.cs
@@ -28,7 +28,7 @@
namespace WIDESEAWCS_Tasks
{
    [DisallowConcurrentExecution]
    public class TestJob : JobBase, IJob
    public partial class TestJob : JobBase, IJob
    {
        private readonly ITaskService _taskService;
        private readonly IStationMangerService _stationMangerService;
@@ -51,127 +51,11 @@
                // _taskService.Repository ä»“储层,进行数据库访问-
                try
                {
                    #region å››å‘车任务
                    List<Dt_Task> Uptasks = new List<Dt_Task>();
                    var taskList = _taskService.Repository.QueryData(x => x.TaskType == TaskTypeEnum.CPInbound.ObjToInt() && x.TaskState == TaskStatusEnum.CheckShapeing.ObjToInt());
                    //任务的目标地址对于站台号;
                    foreach (var task in taskList)
                    {
                        if (device.GetValue<QualityInspectionCommandEnum, bool>(QualityInspectionCommandEnum.R_QualityInspection, task.SourceAddress))
                        {
                            device.SetValue(QualityInspectionCommandEnum.StartqualityInspection, false, task.SourceAddress);
                            //再读取质检结果
                            var qualityResult = device.GetValue<QualityInspectionCommandEnum, bool>(QualityInspectionCommandEnum.R_QualityInspectionInProgress, task.SourceAddress);
                            //左超宽警告
                            var R_LeftOverWidthWarning = device.GetValue<QualityInspectionCommandEnum, bool>(QualityInspectionCommandEnum.R_LeftOverWidthWarning, task.SourceAddress);
                            //右超宽警告
                            var R_RightWideWarning = device.GetValue<QualityInspectionCommandEnum, bool>(QualityInspectionCommandEnum.R_RightWideWarning, task.SourceAddress);
                            //超高警告
                            var R_ExtremeWarning = device.GetValue<QualityInspectionCommandEnum, bool>(QualityInspectionCommandEnum.R_ExtremeWarning, task.SourceAddress);
                            if (qualityResult)
                            {
                                //如果质检通过了,就把任务状态改为质检完成
                                task.TaskState = TaskStatusEnum.CheckShapeingOk.ObjToInt();
                                task.ExceptionMessage = "";
                                Uptasks.Add(task);
                            }
                            else
                            {
                                task.TaskState = TaskStatusEnum.CheckShapeingNG.ObjToInt();
                                task.ExceptionMessage = "外检失败";
                                if (R_LeftOverWidthWarning) task.ExceptionMessage += ",左超宽";
                                if (R_RightWideWarning) task.ExceptionMessage += ",右超宽";
                                if (R_ExtremeWarning) task.ExceptionMessage += ",超高";
                                Uptasks.Add(task);
                                //写入复位信号
                                //device.SetValue(QualityInspectionCommandEnum.FaultReset, true, task.SourceAddress);
                            }
                            //写入停止质检信号
                            device.SetValue(QualityInspectionCommandEnum.StopqualityInspection, true, task.SourceAddress);
                            Thread.Sleep(500);
                            device.SetValue(QualityInspectionCommandEnum.StopqualityInspection, false, task.SourceAddress);
                        }
                        //else
                        //{
                        //    //写入停止质检信号
                        //    device.SetValue(QualityInspectionCommandEnum.StopqualityInspection, false, task.SourceAddress);
                        //    device.SetValue(QualityInspectionCommandEnum.StartqualityInspection, true, task.SourceAddress);
                        //}
                        else
                        {
                            task.TaskState = TaskStatusEnum.CheckShapeingNG.ObjToInt();
                            task.ExceptionMessage = "未检测到质检完成信号";
                            Uptasks.Add(task);
                        }
                    }
                    #endregion
                    SXCTasks(device);
                    var AGVtaskList = _taskService.Repository.QueryData(x => x.TaskState == TaskStatusEnum.AGV_WaitToExecute.ObjToInt() && (x.TaskType == TaskTypeEnum.Q3RK.ObjToInt() || x.TaskType == TaskTypeEnum.Q3CK.ObjToInt()));//1-6和6-1楼任务
                    foreach (var item in AGVtaskList)
                    {
                        var address = item.TaskType == TaskTypeEnum.Q3RK.ObjToInt() ? item.TargetAddress : item.SourceAddress;
                        var stationManger = _stationMangerService.Repository.QueryFirst(x => x.StationCode == address);
                        if (stationManger == null)
                        {
                            item.ExceptionMessage = $"未找到【{address}】站台信息";
                            Uptasks.Add(item);
                            continue;
                        }
                        var StockAvailableSymbol = device.GetValue<QualityInspectionCommandEnum, bool>(QualityInspectionCommandEnum.R_StockAvailableSymbol, address);
                        if (item.TaskType == TaskTypeEnum.Q3RK.ObjToInt())
                        {
                            if (StockAvailableSymbol)
                            {
                                item.ExceptionMessage = $"{address}站台光电检测有货!";
                                Uptasks.Add(item);
                                continue;
                            }
                            if (stationManger.IsOccupied == (int)LocationStatusEnum.Lock)
                            {
                                item.ExceptionMessage = $"站台有货!";
                                Uptasks.Add(item);
                                continue;
                            }
                        }
                        else
                        {
                            if (!StockAvailableSymbol)
                            {
                                item.ExceptionMessage = $"{address}站台光电检测无货!";
                                Uptasks.Add(item);
                                continue;
                            }
                            if (stationManger.IsOccupied == (int)LocationStatusEnum.Free)
                            {
                                item.ExceptionMessage = $"站台无货!";
                                Uptasks.Add(item);
                                continue;
                            }
                        }
                        //into进入一楼位置的时候,写入进入信号
                        device.SetValue(QualityInspectionCommandEnum.RequestToEnter, true, address);
                        if (!device.GetValue<QualityInspectionCommandEnum, bool>(QualityInspectionCommandEnum.Blocking, address))
                        {
                            item.ExceptionMessage = $"{address}站台光栅不为true(1)!";
                            Uptasks.Add(item);
                            continue;
                        }
                        var result = _taskService.Hikvisiontaskscontinue(item.WMSTaskNum);
                        if (result.Status == false)
                        {
                            if (item.ExceptionMessage != result.Message)
                            {
                                item.ExceptionMessage = result.Message;
                                Uptasks.Add(item);
                            }
                            continue;
                        }
                        item.TaskState = (int)TaskStatusEnum.AGV_ToExecute;
                        item.ExceptionMessage = "";
                        Uptasks.Add(item);
                    }
                    KHTasks(device);
                    _taskService.UpdateData(Uptasks);
                    //WriteInfo(device.DeviceName, "infoLog");
                    //WriteDebug(device.DeviceName, "debugLog");