yanjinhui
2026-03-04 2b5708d9da762cc01d6dc7cca79b3bce86db7355
编写四向车job
已添加1个文件
已修改2个文件
143 ■■■■■ 文件已修改
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskMethods.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/Task/RgvCommand.cs 70 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/TestJob.cs 71 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskMethods.cs
@@ -61,7 +61,7 @@
                {
                }
                else
                else //四向车
                {
                }
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/Task/RgvCommand.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,70 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using WIDESEAWCS_QuartzJob.DeviceBase;
namespace WIDESEAWCS_Tasks
{
    public enum QualityInspectionCommandEnum
    {
        /// <summary>
        /// å¯åŠ¨è´¨æ£€
        /// </summary>
        StartqualityInspection,
        /// <summary>
        /// åœæ­¢è´¨æ£€
        /// </summary>
        StopqualityInspection,
        /// <summary>
        /// æ•…障复位
        /// </summary>
        FaultReset,
        /// <summary>
        /// å¤‡ç”¨
        /// </summary>
         Spare,
        /// <summary>
        /// è´¨æ£€æ‰§è¡Œä¸­
        /// </summary>
         R_QualityInspection ,
        /// <summary>
        /// å·¦è¶…宽警告
        /// </summary>
         R_LeftOverWidthWarning,
        /// <summary>
        /// å³è¶…宽警告
        /// </summary>
         R_RightWideWarning,
        /// <summary>
        /// è¶…高警告
        /// </summary>
        R_ExtremeWarning,
        /// <summary>
        /// è´¨æ£€é€šè¿‡
        /// </summary>
        R_QualityInspectionInProgress,
        /// <summary>
        /// æœ‰è´§
        /// </summary>
         R_StockAvailableSymbol,
        /// <summary>
        /// å¤‡ç”¨
        /// </summary>
        R_Spare,
    }
}
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/TestJob.cs
@@ -11,11 +11,15 @@
using System.Reflection;
using System.Text;
using System.Threading.Tasks;
using WIDESEAWCS_Common.TaskEnum;
using WIDESEAWCS_Communicator;
using WIDESEAWCS_Core.Helper;
using WIDESEAWCS_IBasicInfoService;
using WIDESEAWCS_ITaskInfoService;
using WIDESEAWCS_Model.Models;
using WIDESEAWCS_QuartzJob;
using WIDESEAWCS_QuartzJob.DeviceBase;
using WIDESEAWCS_QuartzJob.DTO;
using WIDESEAWCS_QuartzJob.StackerCrane.Enum;
namespace WIDESEAWCS_Tasks
@@ -24,9 +28,11 @@
    public class TestJob : JobBase, IJob
    {
        private readonly ITaskService _taskService;
        public TestJob(ITaskService taskService)
        private readonly IStationMangerService _stationMangerService;
        public TestJob(ITaskService taskService, IStationMangerService stationMangerService)
        {
            _taskService = taskService;//注入
            _stationMangerService = stationMangerService;
        }
        public Task Execute(IJobExecutionContext context)
@@ -36,12 +42,67 @@
            if (flag && value != null)
            {
                OtherDevice device = (OtherDevice)value;
                //Example
                //device.GetValue  è¯»å–
                //device.SetValue  å†™å…¥
                // _taskService.Repository ä»“储层,进行数据库访问-
                try
                {
                    //Example
                    //device.GetValue  è¯»å–
                    //device.SetValue  å†™å…¥
                    // _taskService.Repository ä»“储层,进行数据库访问
                    var taskList = _taskService.Repository.QueryData(x => x.TaskType == TaskTypeEnum.CPInbound.ObjToInt() && x.TaskState == TaskStatusEnum.CheckShapeing.ObjToInt());
                    //任务的目标地址对于站台号;
                    foreach (var task in taskList)
                    {
                        ////找到对于站台的管理信息,看看这个站台有没有货,如果有货的话,就进行质检,如果没有货的话,就不进行质检
                        //var  stationMangers = _stationMangerService.Repository.QueryFirst(x => x.StationCode == task.SourceAddress);
                        //device.SetValue(QualityInspectionCommandEnum.StartqualityInspection,true,task.SourceAddress);
                        //如果有货的话,才进行质检,把站台状态该为占用
                        var R_StockAvailableSymbol = device.GetValue<QualityInspectionCommandEnum, bool>(QualityInspectionCommandEnum.R_StockAvailableSymbol, task.SourceAddress);
                        if (R_StockAvailableSymbol==true)
                        {
                            //stationMangers.IsOccupied=1;//改为占用
                            //开启质检
                            device.SetValue(QualityInspectionCommandEnum.StartqualityInspection, true, task.SourceAddress);
                            //如果读到质检执行中为true的话,就关闭质检
                            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();
                            }
                            else if(R_LeftOverWidthWarning)
                            {
                                task.ExceptionMessage= "质检失败,左超宽";
                                task.TaskState = TaskStatusEnum.CheckShapeingNG.ObjToInt();
                            }
                            else if (R_RightWideWarning)
                            {
                                task.ExceptionMessage = "质检失败,右超宽";
                            }
                            else if (R_ExtremeWarning)
                            {
                                task.ExceptionMessage = "质检失败,超高";
                            }
                            else if (qualityResult==false) //如果质检失败,就复位
                            {
                                //写入复位信号
                                device.SetValue(QualityInspectionCommandEnum.FaultReset, true, task.SourceAddress);
                            }
                            //写入停止质检信号
                            device.SetValue(QualityInspectionCommandEnum.StopqualityInspection, true, task.SourceAddress);
                        }
                    }
                    WriteInfo(device.DeviceName, "infoLog");