dengjunjie
2026-03-06 b834b2c0977af30a5040c9b8416d930608fc845d
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskMethods.cs
@@ -1,4 +1,5 @@
using Magicodes.IE.Core;
using Autofac.Core;
using Magicodes.IE.Core;
using NetTaste;
using System;
using System.Collections.Generic;
@@ -18,6 +19,7 @@
using WIDESEAWCS_DTO.RGV.FOURBOT;
using WIDESEAWCS_DTO.WMS;
using WIDESEAWCS_Model.Models;
using WIDESEAWCS_QuartzJob;
namespace WIDESEAWCS_TaskInfoService
{
@@ -37,7 +39,7 @@
            WebResponseContent content = new WebResponseContent();
            GALAXISUpdateTaskStatus gALAXIS = new();
            FOURBOTTaskStatusNotify Rgv = new();//四向车任务状态通知
            RGVReturnInfo Rgv = new();//四向车任务状态通知
            HIKROBOTTaskProcessReport hIKROBOT = new();//海康机器人
            try
            {
@@ -76,31 +78,37 @@
                            TaskFromCompleted(task, deviceTypeEnum);
                            break;
                        default:
                            task.TaskState = ReturnTaskStatus(gALAXIS.taskStatus, deviceTypeEnum);
                            task.TaskState = ReturnTaskStatus(hIKROBOT.extra.values.method, deviceTypeEnum);
                            BaseDal.UpdateData(task);
                            break;
                    }
                }
                else //四向车
                {
                    Rgv = TaskDTO.Serialize().DeserializeObject<FOURBOTTaskStatusNotify>();
                    Rgv = TaskDTO.Serialize().DeserializeObject<RGVReturnInfo>();
                    if (Rgv==null) throw new Exception("参数转换失败!");
                    var task = BaseDal.QueryFirst(x => x.WMSTaskNum == Rgv.taskID.ToString());
                    if (task==null) throw new Exception($"未找到任务,任务编号【{Rgv.taskID}】");
                    switch (Rgv.status)
                    //var task = BaseDal.QueryFirst(x => x.RGVTaskId == Rgv.content.taskID);
                    var task = BaseDal.QueryFirst(x => x.PalletCode == Rgv.content.podID);
                    if (task == null) throw new Exception($"未找到任务,任务编号【{Rgv.content.taskID}】");
                    if (Rgv.messageType == 72)//小车顶起货物
                    {
                        case 2:
                            TaskCompleted(task, deviceTypeEnum);
                            break;
                        case 4:
                            TaskFromCompleted(task, deviceTypeEnum);
                            break;
                        default:
                            task.TaskState = ReturnTaskStatus(gALAXIS.taskStatus, deviceTypeEnum);
                            break;
                        //给质检门写入启动信号
                        var device = Storage.Devices.FirstOrDefault(x => x.DeviceCode == "F1") as OtherDevice ?? throw new Exception("未找到1楼质检门设备信息");
                        device.SetValue(QualityInspectionCommandEnum.StartqualityInspection, true, task.SourceAddress);
                    }
                    else if (Rgv.messageType == 10)
                    {
                        if (task.TaskState == (int)TaskStatusEnum.TakeFinish && Rgv.content.status == 4)
                        {
                            task.TaskState = (int)TaskStatusEnum.CheckShapeing;
                            BaseDal.UpdateData(task);
                        }
                        else if (task.TaskState == (int)TaskStatusEnum.Puting && Rgv.content.status == 4)
                        {
                            TaskCompleted(task, deviceTypeEnum);
                        }
                    }
                }
               return content.OK();
            }
@@ -124,7 +132,7 @@
                    logObject = hIKROBOT;
                    deviceName = "海康机器人";
                }
                else if (Rgv != null && Rgv.taskID != 0)
                else if (Rgv != null && Rgv.content.taskID != 0)
                {
                    logObject = Rgv;
                    deviceName = "四向车";
@@ -193,7 +201,7 @@
            {
                dt_Task.TaskState = TaskStatusEnum.TakeFinish.ObjToInt();
                Db.Ado.BeginTran();
                UpdateLocationStatus(dt_Task, deviceTypeEnum, LocationStatusEnum.Free);
                UpdateLocationStatus(dt_Task.SourceAddress, dt_Task.PalletCode, deviceTypeEnum, LocationStatusEnum.Free);
                BaseDal.UpdateData(dt_Task);
                Db.Ado.CommitTran();
                return WebResponseContent.Instance.OK();
@@ -245,7 +253,7 @@
                    if (agvContent.code != 0) dt_Task.ExceptionMessage = agvContent.msg;
                }
                Db.Ado.BeginTran();
                UpdateLocationStatus(dt_Task, deviceTypeEnum, LocationStatusEnum.InStock);
                UpdateLocationStatus(dt_Task.TargetAddress, dt_Task.PalletCode, deviceTypeEnum, LocationStatusEnum.InStock);
                if (agvContent != null && agvContent.code == 0)
                    BaseDal.DeleteAndMoveIntoHty(dt_Task, OperateTypeEnum.自动完成);
                else
@@ -269,13 +277,13 @@
        /// <param name="deviceTypeEnum"></param>
        /// <param name="locationStatusEnum"></param>
        /// <returns></returns>
        public WebResponseContent UpdateLocationStatus(Dt_Task takse, DeviceTypeEnum deviceTypeEnum, LocationStatusEnum locationStatusEnum)
        public WebResponseContent UpdateLocationStatus(string locationCode, string palletCode, DeviceTypeEnum deviceTypeEnum, LocationStatusEnum locationStatusEnum)
        {
            try
            {
                if (deviceTypeEnum == DeviceTypeEnum.GALAXIS)
                {
                    Dt_KLSLocationInfo? dt_KLSLocationInfo = _kLSLocationInfoService.Repository.QueryFirst(x => x.LocationCode == takse.SourceAddress);
                    Dt_KLSLocationInfo? dt_KLSLocationInfo = _kLSLocationInfoService.Repository.QueryFirst(x => x.LocationCode == locationCode);
                    if (dt_KLSLocationInfo != null)
                    {
                        if (locationStatusEnum== LocationStatusEnum.Free) //如果起点完成就给货位赋值托盘号
@@ -284,7 +292,7 @@
                        }
                        else
                        {
                            dt_KLSLocationInfo.PalletCode = takse.PalletCode;
                            dt_KLSLocationInfo.PalletCode = palletCode;
                        }
                        dt_KLSLocationInfo.LocationStatus = locationStatusEnum.ObjToInt();
                        _kLSLocationInfoService.Repository.UpdateData(dt_KLSLocationInfo);
@@ -292,7 +300,7 @@
                }
                else if (deviceTypeEnum == DeviceTypeEnum.HIKROBOT)
                {
                    Dt_HKLocationInfo? dt_HKLocationInfo = _hKLocationInfoService.Repository.QueryFirst(x => x.LocationCode == takse.SourceAddress);
                    Dt_HKLocationInfo? dt_HKLocationInfo = _hKLocationInfoService.Repository.QueryFirst(x => x.LocationCode == locationCode);
                    if (dt_HKLocationInfo != null)
                    {
                        if (locationStatusEnum == LocationStatusEnum.Free) //如果起点完成就给货位赋值托盘号
@@ -301,7 +309,7 @@
                        }
                        else
                        {
                            dt_HKLocationInfo.PalletCode = takse.PalletCode;
                            dt_HKLocationInfo.PalletCode = palletCode;
                        }
                        dt_HKLocationInfo.LocationStatus = locationStatusEnum.ObjToInt();
                        _hKLocationInfoService.Repository.UpdateData(dt_HKLocationInfo);
@@ -309,7 +317,7 @@
                }
                else if (deviceTypeEnum == DeviceTypeEnum.YuanLiJuHe)
                {
                    Dt_RGVLocationInfo dt_RGVLocationInfo = _rGVLocationInfoService.Repository.QueryFirst(x => x.LocationCode == takse.SourceAddress);
                    Dt_RGVLocationInfo dt_RGVLocationInfo = _rGVLocationInfoService.Repository.QueryFirst(x => x.LocationCode == locationCode);
                    //这里将任务的托盘号给货位表中的PalletCode字段。
                    if (dt_RGVLocationInfo != null)
@@ -320,13 +328,13 @@
                        }
                        else
                        {
                            dt_RGVLocationInfo.PalletCode = takse.PalletCode;
                            dt_RGVLocationInfo.PalletCode = palletCode;
                        }
                        dt_RGVLocationInfo.LocationStatus = locationStatusEnum.ObjToInt();
                        _rGVLocationInfoService.Repository.UpdateData(dt_RGVLocationInfo);
                    }
                }
                else//库外站台
                else//平库库位
                {
                }