xiaojiao
2026-01-24 c5f01e9a882b16f534166d033312c5c8ba8d94dd
ÏîÄ¿´úÂë/WMS/WIDESEA_WMSServer/WIDESEA.Job/JobSchedulerForMeasure.cs
@@ -1,24 +1,27 @@
using Quartz;
using Microsoft.Extensions.Caching.Memory;
using Newtonsoft.Json;
using Quartz;
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using System.Linq;
using System.Threading;
using WIDESEA.Core.EFDbContext;
using WIDESEA.Entity.DomainModels;
using WIDESEA.Services.Repositories;
using WIDESEA.Common;
using WIDESEA.Core.Utilities;
using WIDESEA_Services;
using System.ServiceModel;
using System.Threading;
using System.Threading.Tasks;
using System.Xml;
using WIDESEA.Core.ManageUser;
using WIDESEA_Common.LogEnum;
using Microsoft.Extensions.Caching.Memory;
using WIDESEA.Common;
using WIDESEA.Core.EFDbContext;
using WIDESEA.Core.Extensions;
using WIDESEA.Services.IServices;
using Newtonsoft.Json;
using WIDESEA.Core.ManageUser;
using WIDESEA.Core.Services;
using WIDESEA.Core.Utilities;
using WIDESEA.Entity.DomainModels;
using WIDESEA.Services.IServices;
using WIDESEA.Services.Repositories;
using WIDESEA_Common.LogEnum;
using WIDESEA_Entity.CustomModels.RGVModel;
using WIDESEA_Services;
using WIDESEA_Services.Services.APIInvoke.RGV;
using static WIDESEA_Entity.CustomModels.RGVModel.RgvDeviceStatusModel;
namespace WIDESEA.Job
{
@@ -106,7 +109,15 @@
                        string[] array = null;
                        foreach (var item in tmpList)
                        {
                            array = item.task_fromlocationid.Split('-');
                            if (item.task_type == TaskType.TaskType_Box_Pallet_Measure_Back.ToString() && item.task_type.Length > 10) // è¿™ä¸ªåˆ¤æ–­è‚–佼加上的01-13
                            {
                                array = item.task_tolocationid.Split('-');
                            }
                            else
                            {
                                array = item.task_fromlocationid.Split('-');
                            }
                            currentLayer.Add(int.Parse(array[0]));
                        }
                    }
@@ -118,7 +129,32 @@
                        {
                            //增加判断没有当前层的才添加
                            if (!currentLayer.Contains(tmpInfo.location_layer) && null == containerInfos.Find(r => r.location_layer == tmpInfo.location_layer))
                            {
                                // è‚–佼要在这里加一个 å¦‚æžœrgv车有故障 åˆ™ä¸èƒ½åŠ å…¥è¿™å±‚çš„
                                List<int> rgvLayer = new List<int>();
                                WebResponseContent resultcontent = RGVAPIInvokeGetRgvInfo.GetRgvInfo();
                                if (resultcontent.Status)
                                {
                                    RgvDeviceStatusModel rgvData = (RgvDeviceStatusModel)resultcontent.Data;
                                    //0离线 1正常 2故障
                                    for (int i = 0; i < rgvData.data.Count(); i++)
                                    {
                                        Info _info = rgvData.data[i];
                                        if (_info.status != 1)
                                        {
                                            rgvLayer.Add(_info.layer);
                                        }
                                    }
                                }
                                if (rgvLayer.Contains(int.Parse(tmpInfo.location_id.Split('-')[0])))
                                {
                                    continue;
                                }
                                containerInfos.Add(tmpInfo);
                            }
                        }
                    }
@@ -155,6 +191,9 @@
                                    //在此生成测量出库任务
                                    foreach (VV_ContainerInfo containerInfo in containerInfos)
                                    {
                                        // å¦‚果后面要加一个判断,如果某层的rgv车故障了 é‚£ä¹ˆå½“前对应这个rgv任务层的任务就要跳过,这个后面再说吧
                                        //更改货位状态
                                        Dt_locationinfo locationinfo = locationinfoRepository.FindFirst(x => x.location_id == containerInfo.location_id);
                                        locationinfo.location_state = LocationState.LocationState_Box_Measure_Out_Wait_Executing.ToString();
@@ -227,6 +266,8 @@
                        {
                            Dt_taskinfo sendTask = measureTasks[0];
                            content = WCSApi.SendTaskToWCS(new List<Dt_taskinfo>() { sendTask });
                            if (content.Status)
                            {