陈勇
2026-03-30 a4342e58b21d24428285f78abb95d6a87ccf5979
同步
已修改36个文件
510 ■■■■■ 文件已修改
项目代码/WCS/WCSServer/WIDESEAWCS_Common/Const/SysConfigKeyConst.cs 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WCS/WCSServer/WIDESEAWCS_Common/TaskEnum/TaskTypeEnum.cs 40 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WCS/WCSServer/WIDESEAWCS_DTO/TaskInfo/WMSTaskDTO.cs 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WCS/WCSServer/WIDESEAWCS_Model/Models/TaskInfo/Dt_Task.cs 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WCS/WCSServer/WIDESEAWCS_Model/Models/TaskInfo/Dt_Task_Hty.cs 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WCS/WCSServer/WIDESEAWCS_Server/appsettings.json 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WCS/WCSServer/WIDESEAWCS_TaskInfoService/Partial/TaskService.cs 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WCS/WCSServer/WIDESEAWCS_TaskInfoService/TaskService.cs 16 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WCS/WCSServer/WIDESEAWCS_Tasks/ConveyorLineJob/CommonConveyorLineJob.cs 69 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WCS/WCSServer/WIDESEAWCS_Tasks/ConveyorLineJobTZ/CommonConveyorLineTZJob.cs 50 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WCS/WCSServer/WIDESEAWCS_Tasks/SC/SCJob.cs 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WMS/WMSClient/src/api/buttons.js 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WMS/WMSClient/src/extension/widesea_wms/taskinfo/Dt_Task.jsx 44 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WMS/WMSClient/src/views/widesea_wms/taskinfo/Dt_Task.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WMS/WMSServer/WIDESEA_DTO/WMS/WMSTaskDTO.cs 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WMS/WMSServer/WIDESEA_IStoragIntegrationServices/WCS/IWCSService.cs 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WMS/WMSServer/WIDESEA_Model/Models/Basic/Dt_Task.cs 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WMS/WMSServer/WIDESEA_Model/Models/BasicInfo/Dt_RoadWay.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WMS/WMSServer/WIDESEA_Model/Models/BasicModel/Stock/VV_StockInfo.cs 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WMS/WMSServer/WIDESEA_Model/Models/Inbound/Dt_CarBodyInfo_hty.cs 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WMS/WMSServer/WIDESEA_StoragIntegrationServices/MES/Partial/PassPoint.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WMS/WMSServer/WIDESEA_StoragIntegrationServices/MES/Partial/bindWorkOrder.cs 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WMS/WMSServer/WIDESEA_StoragIntegrationServices/MES/Partial/issuedCharacter.cs 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WMS/WMSServer/WIDESEA_StoragIntegrationServices/MES/Partial/lock.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WMS/WMSServer/WIDESEA_StoragIntegrationServices/MES/Partial/pullLock.cs 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WMS/WMSServer/WIDESEA_StoragIntegrationServices/WCS/Partial/HZPassTZ.cs 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WMS/WMSServer/WIDESEA_StoragIntegrationServices/WCS/Partial/RequestEmptyInboundRoadWayNo.cs 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WMS/WMSServer/WIDESEA_StoragIntegrationServices/WCS/Partial/RequestInboundRoadWayNo.cs 18 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WMS/WMSServer/WIDESEA_StoragIntegrationServices/WCS/Partial/TZPassZZ.cs 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WMS/WMSServer/WIDESEA_StorageTaskServices/AutoTask/BackgroundJob.cs 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WMS/WMSServer/WIDESEA_StorageTaskServices/AutoTask/QuartzJobMildd.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WMS/WMSServer/WIDESEA_StorageTaskServices/AutoTask/WhiteCarAutoOutJob.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WMS/WMSServer/WIDESEA_StorageTaskServices/Task/Dt_TaskService.cs 48 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WMS/WMSServer/WIDESEA_StorageTaskServices/Task/Partial/Dt_TaskService.cs 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WMS/WMSServer/WIDESEA_WMSServer.sln 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WMS/WMSServer/WIDESEA_WMSServer/Controllers/WCS/WCSController.cs 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ÏîÄ¿´úÂë/WCS/WCSServer/WIDESEAWCS_Common/Const/SysConfigKeyConst.cs
@@ -56,6 +56,8 @@
        public const string TZPassZZ = "TZPassZZ";
        public const string HZPassTZ = "HZPassTZ";
        public const string Queue = "Queue";
        public const string RequestInboundRoadWayNo = "RequestInboundRoadWayNo";
ÏîÄ¿´úÂë/WCS/WCSServer/WIDESEAWCS_Common/TaskEnum/TaskTypeEnum.cs
@@ -24,14 +24,14 @@
        /// <summary>
        /// åˆ†æ‹£å…¥åº“
        /// </summary>
        [Description("分拣入库")]
        InPick = 202,
        //[Description("分拣入库")]
        //InPick = 202,
        /// <summary>
        /// è´¨æ£€å…¥åº“
        /// </summary>
        [Description("质检入库")]
        InQuality = 203,
        //[Description("质检入库")]
        //InQuality = 203,
        /// <summary>
        /// ç©ºæ‰˜ç›˜å…¥åº“
@@ -42,20 +42,20 @@
        /// <summary>
        /// NG入库
        /// </summary>
        [Description("NG入库")]
        InNG = 205,
        //[Description("NG入库")]
        //InNG = 205,
        /// <summary>
        /// è½¦è½®å…¥åº“
        /// </summary>
        [Description("车轮入库")]
        InWheels = 206,
        //[Description("车轮入库")]
        //InWheels = 206,
        /// <summary>
        /// åˆ¶åŠ¨ç›˜å…¥åº“
        /// </summary>
        [Description("制动盘入库")]
        InBrake = 207,
        //[Description("制动盘入库")]
        //InBrake = 207,
    }
    public enum TaskOutboundTypeEnum
@@ -75,14 +75,14 @@
        /// <summary>
        /// åˆ†æ‹£å‡ºåº“
        /// </summary>
        [Description("分拣出库")]
        OutPick = 102,
        //[Description("分拣出库")]
        //OutPick = 102,
        /// <summary>
        /// è´¨æ£€å‡ºåº“
        /// </summary>
        [Description("质检出库")]
        OutQuality = 103,
        //[Description("质检出库")]
        //OutQuality = 103,
        /// <summary>
        /// ç©ºæ‰˜ç›˜å‡ºåº“
@@ -93,8 +93,8 @@
        /// <summary>
        /// NG出库
        /// </summary>
        [Description("NG出库")]
        OutNG = 105,
        //[Description("NG出库")]
        //OutNG = 105,
        /// <summary>
        /// ç›´æŽ¥å‡ºåº“
@@ -105,14 +105,14 @@
        /// <summary>
        /// è½¦è½®å‡ºåº“
        /// </summary>
        [Description("车轮出库")]
        OutWheels = 107,
        //[Description("车轮出库")]
        //OutWheels = 107,
        /// <summary>
        /// åˆ¶åŠ¨ç›˜å‡ºåº“
        /// </summary>
        [Description("制动盘出库")]
        OutBrake = 108,
        //[Description("制动盘出库")]
        //OutBrake = 108,
    }
    public enum TaskRelocationTypeEnum
ÏîÄ¿´úÂë/WCS/WCSServer/WIDESEAWCS_DTO/TaskInfo/WMSTaskDTO.cs
@@ -24,11 +24,16 @@
        public string PalletCode { get; set; }
        /// <summary>
        /// å··é“号
        /// å··é“设备号
        /// </summary>
        public string RoadWay { get; set; }
        /// <summary>
        /// å··é“号
        /// </summary>
        public string RoadwayNo { get; set; }
        /// <summary>
        /// ä»»åŠ¡ç±»åž‹
        /// </summary>
        public int TaskType { get; set; }
ÏîÄ¿´úÂë/WCS/WCSServer/WIDESEAWCS_Model/Models/TaskInfo/Dt_Task.cs
@@ -156,6 +156,12 @@
        public int CarType { get; set; }
        /// <summary>
        /// å··é“号
        ///</summary>
        [SugarColumn(ColumnName = "RoadwayNo", ColumnDescription = "巷道号")]
        public string RoadwayNo { get; set; }
        /// <summary>
        /// å¤‡  æ³¨:PVI码
        /// é»˜è®¤å€¼:
        ///</summary>
ÏîÄ¿´úÂë/WCS/WCSServer/WIDESEAWCS_Model/Models/TaskInfo/Dt_Task_Hty.cs
@@ -54,12 +54,20 @@
        public string PalletCode { get; set; }
        /// <summary>
        /// å··é“机
        /// </summary>
        [ImporterHeader(Name = "巷道机")]
        [ExporterHeader(DisplayName = "巷道机")]
        [SugarColumn(IsNullable = false, Length = 10, ColumnDescription = "巷道机")]
        public string Roadway { get; set; }
        /// <summary>
        /// å··é“号
        /// </summary>
        [ImporterHeader(Name = "巷道号")]
        [ExporterHeader(DisplayName = "巷道号")]
        [SugarColumn(IsNullable = false, Length = 10, ColumnDescription = "巷道号")]
        public string Roadway { get; set; }
        public string RoadwayNo { get; set; }
        /// <summary>
        /// ä»»åŠ¡ç±»åž‹
ÏîÄ¿´úÂë/WCS/WCSServer/WIDESEAWCS_Server/appsettings.json
@@ -11,16 +11,9 @@
  "ConnectionStringsEncryption": false,
  "MainDB": "DB_WIDESEA", //当前项目的主库,所对应的连接字符串的Enabled必须为true
  //连接字符串
  //"ConnectionString": "HTI6FB1H05Krd07mNm9yBCNhofW6edA5zLs9TY~MNthRYW3kn0qKbMIsGp~3yyPDF1YZUCPBQx8U0Jfk4PH~ajNFXVIwlH85M3F~v_qKYQ3CeAz3q1mLVDn8O5uWt1~3Ut2V3KRkEwYHvW2oMDN~QIDXPxDgXN0R2oTIhc9dNu7QNaLEknblqmHhjaNSSpERdDVZIgHnMKejU_SL49tralBkZmDNi0hmkbL~837j1NWe37u9fJKmv91QPb~16JsuI9uu0EvNZ06g6PuZfOSAeFH9GMMIZiketdcJG3tHelo=",
  //"ConnectionString": "Data Source=127.0.0.1;Initial Catalog=WIDESEA_WCS2F08;User ID=sa;Password=P@ssw0rd;Integrated Security=False;Connect Timeout=30;Encrypt=False;TrustServerCertificate=True;ApplicationIntent=ReadWrite;MultiSubnetFailover=True",
  //"ConnectionString": "Data Source=192.168.20.251;Initial Catalog=WIDESEA_WCSDB;User ID=sa;Password=123456@gy;Integrated Security=False;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False",
  //"ConnectionString": "Data Source=.;Initial Catalog=LP_WIDESEAWCS;User ID=sa;Password=123456;Integrated Security=False;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False",
  //"ConnectionString": "Data Source=.;Initial Catalog=ZCLDY_WIDESEAWCS;User ID=sa;Password=123456;Integrated Security=False;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False",
  "ConnectionString": "Data Source=.\\LIULEI;Initial Catalog=MX_LDY_WCS;User ID=sa;Password=123456;Integrated Security=False;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False",
  //"ConnectionString": "Data Source=127.0.0.1;Initial Catalog=WIDESEA_WCS2F08;User ID=sa;Password=P@ssw0rd;Integrated Security=False;Connect Timeout=30;Encrypt=False;TrustServerCertificate=True;ApplicationIntent=ReadWrite;MultiSubnetFailover=True",
  //"ConnectionString": "Data Source=192.168.20.251;Initial Catalog=WIDESEA_WCSDB;User ID=sa;Password=123456@gy;Integrated Security=False;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False",
  //"ConnectionString": "Data Source=192.168.5.251;Initial Catalog=WIDESEAWCS_TEST;User ID=sa;Password=P@ssw0rd;Integrated Security=False;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False",
  //"ConnectionString": "Data Source=.\\LIULEI;Initial Catalog=MX_LDY_WCS;User ID=sa;Password=123456;Integrated Security=False;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False",
  "ConnectionString": "Data Source=.\\LIULEI;Initial Catalog=LP_WIDESEAWCS;User ID=sa;Password=123456;Integrated Security=False;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False",
  //"ConnectionString": "Data Source=172.21.1.139;Initial Catalog=WIDESEA_WCSDB;User ID=sa;Password=Admin123;Integrated Security=False;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False",
  //跨域
  "Cors": {
ÏîÄ¿´úÂë/WCS/WCSServer/WIDESEAWCS_TaskInfoService/Partial/TaskService.cs
@@ -129,9 +129,9 @@
        // æ£€æŸ¥å½“前托盘是否存在任务
        private async Task<bool> HasTask(string PVI)
        private async Task<bool> HasTask(string palletCode)
        {
            var hasTask = await BaseDal.QueryFirstAsync(x => x.PVI == PVI);
            var hasTask = await BaseDal.QueryFirstAsync(x => x.PalletCode == palletCode);
            return hasTask != null;
        }
@@ -191,10 +191,10 @@
                StaticVariable.isLineRun = false;
                // æ£€æŸ¥å½“前托盘是否存在任务
                if (await HasTask(palletCode))
                {
                    return content.Error("当前托盘存在任务");
                }
                //if (await HasTask(palletCode))
                //{
                //    return content.Error("当前托盘存在任务");
                //}
                //PVI = "J26000456TF12"; // æ¨¡æ‹ŸPVI请求任务
ÏîÄ¿´úÂë/WCS/WCSServer/WIDESEAWCS_TaskInfoService/TaskService.cs
@@ -4,7 +4,6 @@
using Newtonsoft.Json;
using SqlSugar;
using System.Diagnostics.CodeAnalysis;
using System.Threading.Tasks;
using WIDESEAWCS_BasicInfoRepository;
using WIDESEAWCS_BasicInfoService;
using WIDESEAWCS_Common;
@@ -19,12 +18,9 @@
using WIDESEAWCS_ITaskInfoRepository;
using WIDESEAWCS_ITaskInfoService;
using WIDESEAWCS_Model.Models;
using WIDESEAWCS_QuartzJob.DeviceBase;
using WIDESEAWCS_QuartzJob;
using WIDESEAWCS_QuartzJob.Models;
using WIDESEAWCS_QuartzJob.Repository;
using WIDESEAWCS_QuartzJob.Service;
using WIDESEAWCS_QuartzJob.DTO;
namespace WIDESEAWCS_TaskInfoService
{
@@ -97,6 +93,7 @@
                    task.CarType = item.CarType;
                    task.PVI = item.PVI;
                    task.NextAddress = item.NextAddress;
                    task.RoadwayNo = item.RoadwayNo;
                    // åˆ¤æ–­ä»»åŠ¡ç±»åž‹æ˜¯å¦ä¸ºå‡ºåº“ä»»åŠ¡
                    if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.OutbondGroup)
@@ -665,7 +662,7 @@
                if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.OutbondGroup && task.TaskState == (int)TaskOutStatusEnum.SC_OutExecuting)
                {
                    if(task.NextAddress == task.TargetAddress)
                    if (task.NextAddress == task.TargetAddress)
                    {
                        task.ModifyDate = DateTime.Now;
                        task.Modifier = "System";
@@ -674,11 +671,11 @@
                        task.TaskState = nextStatus;
                        Dt_Task_Hty task_Hty = _mapper.Map<Dt_Task_Hty>(task);
                        task_Hty.TaskId = 0;
                        //task_Hty.CarType = task.CarType;
                        task_Hty.CarType = task.CarType;
                        task_Hty.PVI = task.PVI;
                        task_Hty.RoadwayNo = task.RoadwayNo;
                        BaseDal.DeleteData(task);
                        _taskHtyRepository.AddData(task_Hty);
                    }
                    else
                    {
@@ -695,8 +692,6 @@
                        _taskExecuteDetailService.AddTaskExecuteDetail(task.TaskId, $"堆垛机出库完成");
                    }
                    //暂不考虑多个出库口
                }
                else if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.InboundGroup && task.TaskState == (int)TaskInStatusEnum.SC_InExecuting)
@@ -708,7 +703,6 @@
                    Dt_Task_Hty task_Hty = _mapper.Map<Dt_Task_Hty>(task);
                    task_Hty.TaskId = 0;
                    BaseDal.DeleteData(task);
                    _taskHtyRepository.AddData(task_Hty);
                    _taskExecuteDetailService.AddTaskExecuteDetail(task.TaskId, $"堆垛机入库完成");
@@ -716,10 +710,8 @@
                else if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.RelocationGroup)
                {
                    task.TaskState = (int)TaskStatusGroup.Completed;
                    Dt_Task_Hty task_Hty = _mapper.Map<Dt_Task_Hty>(task);
                    task_Hty.TaskId = 0;
                    BaseDal.DeleteData(task);
                    _taskHtyRepository.AddData(task_Hty);
                    _taskExecuteDetailService.AddTaskExecuteDetail(task.TaskId, $"堆垛机移库完成");
ÏîÄ¿´úÂë/WCS/WCSServer/WIDESEAWCS_Tasks/ConveyorLineJob/CommonConveyorLineJob.cs
@@ -117,7 +117,21 @@
                                if (station.stationModel == "1") //直通模式
                                {
                                    //todo BDC02过点  ç„Šæ¶‚绑定
                                    var config = _sys_ConfigService.GetConfigsByCategory(CateGoryConst.CONFIG_SYS_IPAddress);
                                    var wmsBase = config.FirstOrDefault(x => x.ConfigKey == SysConfigKeyConst.WMSIP_BASE)?.ConfigValue;
                                    var requestTask = config.FirstOrDefault(x => x.ConfigKey == SysConfigKeyConst.HZPassTZ)?.ConfigValue;
                                    if (wmsBase == null || requestTask == null)
                                    {
                                        throw new InvalidOperationException("WMS IP æœªé…ç½®");
                                    }
                                    var wmsIpAddrss = wmsBase + requestTask;
                                    var result = await HttpHelper.PostAsync(wmsIpAddrss, new { palletCode = palletcode, Roadways = station.Roadway, area = station.stationArea, Position = station.stationChildCode, PVI = pvi }.ToJsonString());
                                    WebResponseContent content = JsonConvert.DeserializeObject<WebResponseContent>(result);
                                    if (!content.Status)
                                    {
                                        throw new Exception(content.Message);
                                    }
                                    conveyorLine.SetValue<ConveyorLineDBName, Int16>(ConveyorLineDBName.Spare6, 2, station.stationChildCode);
                                    conveyorLine.SetValue<ConveyorLineDBName, Int16>(ConveyorLineDBName.AllowRelease, 1, station.stationChildCode);
                                }
@@ -138,59 +152,14 @@
                                            _taskService.UpdateTaskStatusToNext(task);
                                        }
                                    }
                                    //else
                                    //{
                                    //    conveyorLine.SetValue<ConveyorLineDBName, Int16>(ConveyorLineDBName.AllowRelease, 12, station.stationChildCode);
                                    //}
                                }
                            }
                            //var config = _sys_ConfigService.GetConfigsByCategory(CateGoryConst.CONFIG_SYS_IPAddress);
                            //var wmsBase = config.FirstOrDefault(x => x.ConfigKey == SysConfigKeyConst.WMSIP_BASE)?.ConfigValue;
                            //var requestTask = config.FirstOrDefault(x => x.ConfigKey == SysConfigKeyConst.RequestInboundRoadWayNo)?.ConfigValue;
                            //if (wmsBase == null || requestTask == null)
                            //{
                            //    throw new InvalidOperationException("WMS IP æœªé…ç½®");
                            //}
                            //var wmsIpAddrss = wmsBase + requestTask;
                            //var result = await HttpHelper.PostAsync(wmsIpAddrss, new { palletCode = palletcode, Roadways = station.Roadway, area = station.stationArea, Position = station.stationChildCode, PVI = pvi }.ToJsonString());
                            //WebResponseContent content = JsonConvert.DeserializeObject<WebResponseContent>(result);
                            //if (!content.Status)
                            //{
                            //    return;
                            //}
                            ////焊涂提升机  ç›´é€šäººæ¶‚装-2  å…¥åº“-3
                            //conveyorLine.SetValue<ConveyorLineDBName, Int16>(ConveyorLineDBName.Spare6, 3, station.stationChildCode);
                            //conveyorLine.SetValue<ConveyorLineDBName, Int16>(ConveyorLineDBName.Spare5, 5, station.stationChildCode);
                            //conveyorLine.SetValue<ConveyorLineDBName, Int16>(ConveyorLineDBName.AllowRelease, 1, station.stationChildCode);
                        }
                        //DeviceProtocolDetailDTO? deviceProtocolDetails = conveyorLine.DeviceProtocolDetailDTOs.FirstOrDefault(x => x.DeviceProParamName == station.stationChildCode && x.ProtocalDetailValue == request.ToString());
                        //if (deviceProtocolDetails != null)
                        //{
                        //    MethodInfo? method = GetType().GetMethod(deviceProtocolDetails.ProtocolDetailType);
                        //    if (method != null)
                        //    {
                        //        method.Invoke(this, new object[] { conveyorLine, conveyorLine, station });
                        //    }
                        //}
                        //ConveyorLineTaskCommand command = conveyorLine.ReadCustomer<ConveyorLineTaskCommand>(station.stationChildCode);
                        //command.PVI.Replace("/0", "").Replace("\"\\u0010\\u000f", "");
                        //command.CarColor.Replace("/0", "");
                        //command.CarType.Replace("/0", "");
                        //command.CarCate.Replace("/0", "");
                        //command.CatSkyWindow.Replace("/0", "");
                        //DeviceProtocolDetailDTO? deviceProtocolDetails = conveyorLine.DeviceProtocolDetailDTOs.FirstOrDefault(x => x.DeviceProParamName == station.stationChildCode && x.ProtocalDetailValue == command.Request.ToString());
                        ////x.DeviceProParamName == nameof(ConveyorLineTaskCommand.ConveyorLineSingal)
                        //if (deviceProtocolDetails != null)
                        //{
                        //    MethodInfo? method = GetType().GetMethod(deviceProtocolDetails.ProtocolDetailType);
                        //    if (method != null)
                        //    {
                        //        method.Invoke(this, new object[] { conveyorLine, command, station });
                        //    }
                        //}
                        #region è°ƒç”¨äº‹ä»¶æ€»çº¿é€šçŸ¥å‰ç«¯
                        //var tokenInfos = _cacheService.Get<List<UserInfo>>("Cache_UserToken");
ÏîÄ¿´úÂë/WCS/WCSServer/WIDESEAWCS_Tasks/ConveyorLineJobTZ/CommonConveyorLineTZJob.cs
@@ -165,7 +165,7 @@
                            }
                        }
                        if (station.stationType == 1)  //入库口
                        if (station.stationType == 1 )  //入库口
                        {
                            var requestInbound = conveyorLine.GetValue<ConveyorLineDBName, bool>(ConveyorLineDBName.EntApply, station.stationChildCode);
                            if (requestInbound)
@@ -193,7 +193,7 @@
                            }
                        }
                        if (station.stationType == 3)
                        if (station.stationType == 3)  //RB043精排点
                        {
                            var requestFolw = conveyorLine.GetValue<ConveyorLineDBName, bool>(ConveyorLineDBName.EntApply, station.stationChildCode);
                            if (requestFolw)
@@ -242,11 +242,24 @@
                                //var pvi = conveyorLine.GetValue<ConveyorLineDBName, string>(ConveyorLineDBName.PVI, station.stationChildCode);
                                WebResponseContent response = _taskService.RequestRoadWayTask(palletcode.ToString(), palletcode.ToString(), station).Result;
                                if (!response.Status)
                                if (response.Status)
                                {
                                    var task = _taskService.QueryBarCodeConveyorLineTask(palletcode.ToString(), station.stationChildCode);
                                    if (task != null)
                                    {
                                        var stationInfo = _stationManagerRepository.QueryFirst(x => x.stationChildCode == task.NextAddress);
                                        conveyorLine.SetValue<ConveyorLineDBName, Int16>(ConveyorLineDBName.Spare6, Convert.ToInt16(stationInfo.stationTCLocation), station.stationChildCode);
                                        Thread.Sleep(200);
                                        //conveyorLine.SetValue<ConveyorLineDBName, Int16>(ConveyorLineDBName.Spare5, 3, station.stationChildCode);
                                        conveyorLine.SetValue<ConveyorLineDBName, Int16>(ConveyorLineDBName.AllowRelease, 1, station.stationChildCode);
                                        _taskService.UpdateTaskStatusToNext(task);
                                    }
                                }
                                conveyorLine.SetValue<ConveyorLineDBName, Int16>(ConveyorLineDBName.AllowRelease, 1, station.stationChildCode);
                                //else
                                //{
                                //    conveyorLine.SetValue<ConveyorLineDBName, Int16>(ConveyorLineDBName.AllowRelease, 1, station.stationChildCode);
                                //}
                            }
                        }
@@ -269,6 +282,35 @@
                            }
                        }
                        if (station.stationType == 6)  //空滑橇入库口
                        {
                            var requestInbound = conveyorLine.GetValue<ConveyorLineDBName, bool>(ConveyorLineDBName.EntApply, station.stationChildCode);
                            if (requestInbound)
                            {
                                var palletcode = conveyorLine.GetValue<ConveyorLineDBName, Int16>(ConveyorLineDBName.SkidNo, station.stationChildCode);
                                //var pvi = conveyorLine.GetValue<ConveyorLineDBName, string>(ConveyorLineDBName.PVI, station.stationChildCode);
                                //_taskService.QueryBarCodeConveyorLineTask();
                                var task = _taskService.QueryExecutingTaskByBarcode(palletcode.ToString(), station.stationChildCode);
                                if (task != null)
                                {
                                    _taskService.UpdateTaskStatusToNext(task);
                                    conveyorLine.SetValue<ConveyorLineDBName, Int16>(ConveyorLineDBName.AllowRelease, 1, station.stationChildCode);
                                }
                                else
                                {
                                    continue;
                                    //如找不到对应入库任务,则根据托盘 PVI申请入库
                                    //WebResponseContent response = _taskService.RequestTask(palletcode.ToString(), pvi, station).Result;
                                    //if (!response.Status)
                                    //{
                                    //    continue;
                                    //}
                                }
                            }
                        }
                        #region æ ¹æ®åè®®è¯»å–方案
                        //DeviceProtocolDetailDTO? deviceProtocolDetails = conveyorLine.DeviceProtocolDetailDTOs.FirstOrDefault(x => x.DeviceProParamName == station.stationChildCode && x.ProtocalDetailValue == request.ToString());
ÏîÄ¿´úÂë/WCS/WCSServer/WIDESEAWCS_Tasks/SC/SCJob.cs
@@ -67,6 +67,7 @@
                if (flag && value != null && value is STK commonStackerCrane)
                {
                    List<string> childCodes = commonStackerCrane.DeviceProDTOs.GroupBy(d => d.DeviceChildCode).Select(g => g.Key).ToList();
                    childCodes = new List<string> { "SC01", "SC03", "SC05", "SC07" };  //测试使用
                    Parallel.For(0, childCodes.Count, (i, state) =>
                    {
                        //ConsoleHelper.WriteColorLine($"【{childCodes[i]}】时间【{DateTime.Now}】】【{Thread.CurrentThread.ManagedThreadId}】", ConsoleColor.Magenta);
@@ -135,7 +136,7 @@
                                    Thread.Sleep(500);
                                    WebResponseContent responseContent = SendStackerTask(commonStackerCrane, task, childCodes[i]);
                                    if(responseContent.Status)
                                    if (responseContent.Status)
                                    {
                                        _taskService.UpdateTaskStatusToNext(task.TaskNum);
                                    }
@@ -253,7 +254,7 @@
        {
            //return task;
            var stationList = _stationManagerRepository.QueryData(x => x.stationType == 2 && x.Roadway == task.Roadway);
            //var stationList = _stationManagerRepository.QueryData(x => x.stationType == 2 && x.Roadway == task.Roadway);
            //foreach (var item in stationList)
            //{
@@ -377,7 +378,7 @@
            {
                return responseContent.Error(ex.Message);
            }
        }
    }
ÏîÄ¿´úÂë/WMS/WMSClient/src/api/buttons.js
@@ -206,7 +206,7 @@
    }
  }
  , {
    name: '库存锁定',
    name: '锁定',
    // icon: 'el-icon-printer',
    type: 'primary',
    // plain: true,
@@ -217,7 +217,7 @@
    }
  }
  , {
    name: '库存解锁',
    name: '解锁',
    // icon: 'el-icon-printer',
    type: 'primary',
    // plain: true,
ÏîÄ¿´úÂë/WMS/WMSClient/src/extension/widesea_wms/taskinfo/Dt_Task.jsx
@@ -47,28 +47,28 @@
        }
      }
      let confirmTask=this.buttons.find(x=>x.value=='confirmTask');
      if(confirmTask){
        confirmTask.onClick=function(){
          let row = this.$refs.table.getSelected() //获取选中的行
          if (row <= 0) {
            //如果没有选中行
            this.$Message.error('请选择一行数据')
            return
          }
          let taskNum = row[0].taskNum
          this.http.get(`/api/Task/confirmTask?taskNum=${taskNum}`, {}, "正在确认完成任务").then((res) => {
            //示例:调用后台接口
            if (res.status) {
              this.$Message.success('确认任务完成');
              this.refresh();
            } else {
              this.$Message.error(res.message) //错误提示
              this.refresh();
            }
          })
        }
      }
      // let confirmTask=this.buttons.find(x=>x.value=='confirmTask');
      // if(confirmTask){
      //   confirmTask.onClick=function(){
      //     let row = this.$refs.table.getSelected() //获取选中的行
      //     if (row <= 0) {
      //       //如果没有选中行
      //       this.$Message.error('请选择一行数据')
      //       return
      //     }
      //     let taskNum = row[0].taskNum
      //     this.http.get(`/api/Task/confirmTask?taskNum=${taskNum}`, {}, "正在确认完成任务").then((res) => {
      //       //示例:调用后台接口
      //       if (res.status) {
      //         this.$Message.success('确认任务完成');
      //         this.refresh();
      //       } else {
      //         this.$Message.error(res.message) //错误提示
      //         this.refresh();
      //       }
      //     })
      //   }
      // }
      //示例:在按钮的最前面添加一个按钮
      // this.buttons.unshift({
      //   //也可以用push或者splice方法来修改buttons数组
ÏîÄ¿´úÂë/WMS/WMSClient/src/views/widesea_wms/taskinfo/Dt_Task.vue
@@ -57,7 +57,7 @@
        { field: 'roadway', title: '巷道', type: 'string', width: 110, align: 'left' },
        { field: 'taskType', title: '任务类型', type: 'int', width: 110, align: 'left', bind: { key: "TaskType", data: [] } },
        { field: 'taskState', title: '任务状态', type: 'int', width: 150, align: 'left', bind: { key: "TaskStatus", data: [] } },
        { field: 'carType', title: '车型', type: 'int', width: 150, align: 'left'},
        { field: 'carType', title: '车身类型', type: 'int', width: 150, align: 'left'},
        { field: 'sourceAddress', title: '起始位置', type: 'string', width: 110, align: 'left' },
        { field: 'targetAddress', title: '目标位置', type: 'string', width: 110, align: 'left' },
        { field: 'grade', title: '优先级', type: 'int', width: 60, align: 'left' },
ÏîÄ¿´úÂë/WMS/WMSServer/WIDESEA_DTO/WMS/WMSTaskDTO.cs
@@ -25,7 +25,7 @@
        public string PalletCode { get; set; }
        /// <summary>
        /// å··é“号
        /// å··é“机
        /// </summary>
        public string RoadWay { get; set; }
@@ -54,9 +54,24 @@
        /// </summary>
        public int Grade { get; set; }
        /// <summary>
        /// PVI码
        /// </summary>
        public string pvi { get; set; }
        /// <summary>
        /// è½¦èº«ç±»åž‹
        /// </summary>
        public int CarType { get; set; }
        /// <summary>
        /// å··é“号
        /// </summary>
        public string RoadwayNo { get; set; }
        /// <summary>
        /// (下一位置)入库口
        /// </summary>
        public string NextAddress { get; set; }
    }
}
ÏîÄ¿´úÂë/WMS/WMSServer/WIDESEA_IStoragIntegrationServices/WCS/IWCSService.cs
@@ -18,11 +18,18 @@
        WebResponseContent RequstCarBodyInfo(RequestTaskDto json);
        /// <summary>
        /// æ¶‚总提升机入库请求
        /// ç„Šæ¶‚/涂总提升机入库请求
        /// </summary>
        /// <param name="json"></param>
        /// <returns></returns>
        WebResponseContent RequestInboundRoadWayNo(RequestTaskDto json);
        /// <summary>
        /// ç©ºæ»‘橇入库
        /// </summary>
        /// <param name="json"></param>
        /// <returns></returns>
        WebResponseContent RequestEmptyInboundRoadWayNo(RequestTaskDto json);
        /// <summary>
        /// æ¶‚装直通总装
@@ -32,6 +39,13 @@
        WebResponseContent TZPassZZ(RequestTaskDto json);
        /// <summary>
        /// ç„Šè£…装直通涂装
        /// </summary>
        /// <param name="json"></param>
        /// <returns></returns>
        WebResponseContent HZPassTZ(RequestTaskDto json);
        /// <summary>
        /// æ¶‚总精排点
        /// </summary>
        /// <param name="json"></param>
ÏîÄ¿´úÂë/WMS/WMSServer/WIDESEA_Model/Models/Basic/Dt_Task.cs
@@ -53,6 +53,13 @@
    public string? Roadway { get; set; }
    /// <summary>
    /// å¤‡  æ³¨:巷道号
    /// é»˜è®¤å€¼:
    ///</summary>
    [SugarColumn(ColumnName = "RoadwayNo", ColumnDescription = "巷道号")]
    public string RoadwayNo { get; set; }
    /// <summary>
    /// å¤‡  æ³¨:任务类型(100 å‡ºåº“;盘点出库 101; 102 åˆ†æ‹£å‡ºåº“;103 è´¨æ£€å‡ºåº“;200 å…¥åº“;盘点入库 201;分拣入库 202;质检入库 203;移库 300;库内移库 301;库外移库 302  ï¼‰
    /// é»˜è®¤å€¼:
    ///</summary>
@@ -124,7 +131,7 @@
    public string? ErrorMessage { get; set; }
    /// <summary>
    /// è½¦åž‹
    /// è½¦èº«ç±»åž‹  1-白 2-彩 3-空撬组
    ///</summary>
    [SugarColumn(ColumnName = "CarType", ColumnDescription = "车型")]
    public int CarType { get; set; }
ÏîÄ¿´úÂë/WMS/WMSServer/WIDESEA_Model/Models/BasicInfo/Dt_RoadWay.cs
@@ -63,6 +63,5 @@
        [ExporterHeader(DisplayName = "备注")]
        [SugarColumn(IsNullable = false, ColumnDescription = "备注")]
        public string Remark { get; set; }
    }
}
ÏîÄ¿´úÂë/WMS/WMSServer/WIDESEA_Model/Models/BasicModel/Stock/VV_StockInfo.cs
@@ -43,6 +43,7 @@
        [ExporterHeader(DisplayName = "车身ID")]
        [SugarColumn(IsNullable = true, Length = 20, ColumnDescription = "车身ID")]
        public int carBodyID { get; set; }
        /// <summary>
        /// PVI码
        /// </summary>
@@ -52,6 +53,14 @@
        public string PVI { get; set; }
        /// <summary>
        /// RFID
        /// </summary>
        [ImporterHeader(Name = "RFID")]
        [ExporterHeader(DisplayName = "RFID")]
        [SugarColumn(IsNullable = true, ColumnDescription = "RFID")]
        public string RFID { get; set; }
        /// <summary>
        /// æ»‘橇号
        /// </summary>
        [ImporterHeader(Name = "滑橇号")]
ÏîÄ¿´úÂë/WMS/WMSServer/WIDESEA_Model/Models/Inbound/Dt_CarBodyInfo_hty.cs
@@ -167,5 +167,11 @@
        /// </summary>
        [SugarColumn(IsNullable = true, ColumnDescription = "完成方式")]
        public int FinishType { get; set; }
        /// <summary>
        ///  æºID
        /// </summary>
        [SugarColumn(IsNullable = true, ColumnDescription = "完成方式")]
        public int sourceID { get; set; }
    }
}
ÏîÄ¿´úÂë/WMS/WMSServer/WIDESEA_StoragIntegrationServices/MES/Partial/PassPoint.cs
@@ -64,7 +64,7 @@
                }
                LogFactory.GetLog("车身过点").Info(true, $"\r\r--------------------------------------");
                LogFactory.GetLog("车身过点").Info(true, $"工位号:{json.Position},RFID:{json.PVI},响应信息:{responseContent.ToJson}");
                LogFactory.GetLog("车身过点").Info(true, $"工位号:{json.Position},RFID:{json.PVI},响应信息:{MESrespon}");
                return content.OK();
            }
ÏîÄ¿´úÂë/WMS/WMSServer/WIDESEA_StoragIntegrationServices/MES/Partial/bindWorkOrder.cs
@@ -41,7 +41,7 @@
                var carBodyInfo = _carBodyRepository.QueryFirst(x => x.RFID == rfid);
                //if (carBodyInfo == null) throw new Exception($"未找到PVI{rfid}的车身数据");
                if (carBodyInfo == null) throw new Exception($"未找到PVI{rfid}的车身数据");
                BindWorkOrder bindOrder = new BindWorkOrder()
                {
@@ -67,7 +67,7 @@
                BindWorkOrderRespon characterRespon = JsonConvert.DeserializeObject<BindWorkOrderRespon>(webResponse.Data.ToJson());
                _unitOfWorkManage.BeginTran();
                if (stationInfo.stationChildCode == "EL01RB")  //涂装精排点
                if (stationInfo.stationChildCode == "EL01RB")  //焊装-涂装提升机
                {
                    var paintingOrderInfo = _paintingOrderInfoRepository.QueryFirst(x => x.workOrderNo == characterRespon.workOrderNo);
@@ -79,7 +79,7 @@
                    carBodyInfo.carBodyCharacteristic = paintingOrderInfo.carBodyCharacteristic;
                    _carBodyRepository.UpdateData(carBodyInfo);
                }
                else if (stationInfo.stationChildCode == "EL01RB01")  //总装精排点
                else if (stationInfo.stationChildCode == "EL01RB01")  //涂装精排点
                {
                    var assemblyOrderInfo = _assemblyOrderInfoRepository.QueryFirst(x => x.workOrderNo == characterRespon.workOrderNo);
ÏîÄ¿´úÂë/WMS/WMSServer/WIDESEA_StoragIntegrationServices/MES/Partial/issuedCharacter.cs
@@ -53,6 +53,8 @@
                IssuedCharacterRespon characterRespon = JsonConvert.DeserializeObject<IssuedCharacterRespon>(webResponse.Data.ToJson());
                //_carBodyRepository.QueryFirst(x => x.PalletCode == palletCode);
                Dt_CarBodyInfo CarBody = new Dt_CarBodyInfo()
                {
                    biwInPassTime = Convert.ToDateTime(characterRespon.biwInPassTime),
@@ -75,7 +77,6 @@
                LogFactory.GetLog("请求焊装特征信息").Info(true, $"\r\r--------------------------------------");
                LogFactory.GetLog("请求焊装特征信息").Info(true, $"工位号:{stationNo},RFID:{rfidPrint},响应信息:{webResponse.ToJson()}");
                return content.OK("获取焊装白车身信息成功");
            }
ÏîÄ¿´úÂë/WMS/WMSServer/WIDESEA_StoragIntegrationServices/MES/Partial/lock.cs
@@ -27,7 +27,7 @@
            WebResponseContent content = new WebResponseContent();
            try
            {
                LogFactory.GetLog("锁车上报").Info(true, $"\r\r--------------------------------------");
                LogFactory.GetLog("锁车上报").Info(true, jsondata.ToJsonString());
ÏîÄ¿´úÂë/WMS/WMSServer/WIDESEA_StoragIntegrationServices/MES/Partial/pullLock.cs
@@ -46,7 +46,7 @@
                    {
                        // carinfo = _palletStockInfoRepository.QueryFirst(x => x.PVI == item.pvi && x.pbMaterial == item.pbMaterial);
                        //carbodyinfo = _carBodyRepository.QueryFirst(x => x.pbMaterial == item.pbMaterial && x.PVI == item.pvi);
                        OutStock = _VVStockInfoRepository.QueryFirst(x => x.PVI == item.pvi && x.pbMaterial == item.pbMaterial && x.StockStatus == 0 && x.LockOrder == 0 && x.StayStatus == 0);
                        OutStock = _VVStockInfoRepository.QueryFirst(x => x.PVI == item.pvi /*&& x.pbMaterial == item.pbMaterial*/ && x.StockStatus == 0 && x.LockOrder == 0 && x.StayStatus == 0);
                        if (OutStock == null)
                        {
                            throw new Exception($"未找到指定PVI车身信息{item.pvi}");
@@ -131,12 +131,15 @@
                    //{
                    stockInfo.StockStatus = 0;
                    stockInfo.LockOrder = 1;
                    carBody.BodyStatus = 1;
                    //carBody.BodyStatus = 1;
                    assemblyOrderInfo.pvi = carBody.PVI;
                    carBody.assemblyWorrkNo = item.workOrderNo;
                    _MESLockInfoRepository.AddData(mESLockInfo);
                    _assemblyOrderInfoRepository.UpdateData(assemblyOrderInfo);
                    //_taskRepository.AddData(task);
                    _palletStockInfoRepository.UpdateData(stockInfo);
                    //_carBodyRepository.UpdateData(carbodyinfo);
                    _carBodyRepository.UpdateData(carBody);
                    _unitOfWorkManage.CommitTran();
                    //}
ÏîÄ¿´úÂë/WMS/WMSServer/WIDESEA_StoragIntegrationServices/WCS/Partial/HZPassTZ.cs
@@ -21,7 +21,7 @@
                //if (carInfo != null) throw new Exception($"涂装直通总装失败:PVI{json.Rfid}已存在。");
                var station = _stationManagerRepository.QueryFirst(x => x.stationChildCode == json.Position);
                if (station == null) throw new Exception("站台未找到");
                if (station == null) throw new Exception($"{json.Position}工位站台未找到");
                WebResponseContent webResponse = _mesService.bindWorkOrder(json.Position, json.PVI);
                if (!webResponse.Status) throw new Exception($"焊涂绑定失败:{webResponse.msg}");
@@ -34,7 +34,8 @@
            }
            catch (Exception ex)
            {
                content.Error(ex.Message);
                throw new Exception($"焊装提升机异常:{ex.Message}");
                //content.Error(ex.Message);
            }
            return content;
        }
ÏîÄ¿´úÂë/WMS/WMSServer/WIDESEA_StoragIntegrationServices/WCS/Partial/RequestEmptyInboundRoadWayNo.cs
@@ -11,6 +11,7 @@
using WIDESEA_DTO;
using WIDESEA_Model.Models;
using WIDESEA_Repository;
using WIDESEA_StorageBasicRepository;
using WIDESEAWCS_BasicInfoRepository;
using WIDESEAWCS_Model.Models;
@@ -28,18 +29,30 @@
            WebResponseContent response = new WebResponseContent();
            try
            {
                //如任务已存在则 è¿”回此任务
                var checkTask = _taskRepository.QueryFirst(x => x.PalletCode == json.PalletCode && x.PVI == json.PVI);
                if (checkTask != null)
                {
                    return response.OK("申请入库成功", data: checkTask);
                }
                var carInfo = _carBodyInfoRepository.QueryFirst(x => x.RFID == json.PVI && x.PalletCode == json.PalletCode);
                if (carInfo == null) throw new Exception("未知空撬信息,无法入库");
                //{
                //    Dt_CarBodyInfo _CarBodyInfo = new Dt_CarBodyInfo  //测试
                //    {
                //        PVI = "J25000660",
                //        RFID = json.PVI,
                //        BodyStatus = 0,
                //        CarType = 1,
                //    };
                //}
                if (carInfo == null)
                {
                    Dt_CarBodyInfo dt_CarBodyInfo = new Dt_CarBodyInfo
                    {
                        PalletCode = json.PalletCode,
                        CarType = 3,
                        PVI = json.PalletCode,
                        RFID = json.PalletCode,
                        BodyStatus = 0
                    };
                    _carBodyInfoRepository.AddData(dt_CarBodyInfo);
                    carInfo = _carBodyInfoRepository.QueryFirst(x => x.RFID == json.PVI && x.PalletCode == json.PalletCode);
                }
                var maxGroup = _locationRepository.QueryData(x => x.LocationType == 3 && x.LocationStatus == (int)LocationEnum.Free && x.EnalbeStatus == (int)EnableEnum.Enable)
                                .GroupBy(x => x.RoadwayNo)
@@ -77,13 +90,11 @@
                    TaskNum = _taskRepository.GetTaskNo().Result,
                    Creater = "Systeam",
                    PVI = json.PVI,
                    CarType = carInfo.CarType
                };
                _unitOfWorkManage.BeginTran();
                _taskRepository.AddData(newtask);
                //location.LocationStatus = (int)LocationEnum.InStockDisable;
                //_locationRepository.UpdateData(location);
                _unitOfWorkManage.CommitTran();
                response.OK("空撬申请入库成功", data: newtask);
@@ -92,7 +103,7 @@
            }
            catch (Exception ex)
            {
                response.Error($"请求巷道号失败:{ex.Message}");
                response.Error($"空撬请求巷道号失败:{ex.Message}");
            }
            return response;
        }
ÏîÄ¿´úÂë/WMS/WMSServer/WIDESEA_StoragIntegrationServices/WCS/Partial/RequestInboundRoadWayNo.cs
@@ -28,6 +28,13 @@
            WebResponseContent response = new WebResponseContent();
            try
            {
                //如任务已存在则 è¿”回此任务
                var checkTask = _taskRepository.QueryFirst(x => x.PalletCode == json.PalletCode && x.PVI == json.PVI);
                if (checkTask != null)
                {
                    return response.OK("申请入库成功", data: checkTask);
                }
                //屏蔽MES
                if (json.Position == "EL01RB")
                {
@@ -63,15 +70,19 @@
                    roadWays = _roadWayRepository.QueryData(x => x.WirteCar == 2);
                }
                //var locations = _locationRepository.QueryData(x => (x.LocationType == carInfo.CarType || x.LocationType == 3) && x.LocationStatus == (int)LocationEnum.Free && x.EnalbeStatus == (int)EnableEnum.Enable);
                var maxGroup = _locationRepository.QueryData(x => (x.LocationType == carInfo.CarType || x.LocationType == 3) && x.LocationStatus == (int)LocationEnum.Free && x.EnalbeStatus == (int)EnableEnum.Enable)
                                .GroupBy(x => x.RoadwayNo)
                                .OrderByDescending(g => g.Count()) // æ ¹æ®æ¯ä¸ªç»„的元素数量排序
                                .ToList(); // å–出数量最多的组
                if (maxGroup.Count == 0) return response.Error(12, "无可用库位");
                Dictionary<string, int> result = new Dictionary<string, int>();
                foreach (var item in maxGroup)
                {
                    var number = _taskRepository.QueryData(x => x.TargetAddress == item.Key).Count();
                    var number = _taskRepository.QueryData(x => x.RoadwayNo == item.Key && x.CarType == carInfo.CarType && (x.TaskType == (int)TaskInboundTypeEnum.Inbound || x.TaskType == (int)TaskInboundTypeEnum.InTray)).Count();
                    if (item.Count() - number <= 0)
                    {
                        continue;
@@ -87,7 +98,7 @@
                if (stationList.Count > 1)
                {
                    var task = _taskRepository.QueryData(x => x.Roadway == stationList.FirstOrDefault().Roadway).OrderByDescending(x => x.CreateDate).FirstOrDefault();
                    var task = _taskRepository.QueryData(x => x.Roadway == stationList.FirstOrDefault().Roadway && x.TaskType == (int)TaskInboundTypeEnum.Inbound).OrderByDescending(x => x.CreateDate).FirstOrDefault();
                    if (task != null) station = stationList.Where(x => x.stationChildCode != task.NextAddress && x.stationChildCode != task.CurrentAddress).FirstOrDefault();
                    else station = stationList.FirstOrDefault();
                }
@@ -118,7 +129,8 @@
                    TaskNum = _taskRepository.GetTaskNo().Result,
                    Creater = "Systeam",
                    PVI = json.PVI,
                    CarType = carInfo.CarType
                    CarType = carInfo.CarType,
                    RoadwayNo = station.RoadwayNo
                };
                _unitOfWorkManage.BeginTran();
ÏîÄ¿´úÂë/WMS/WMSServer/WIDESEA_StoragIntegrationServices/WCS/Partial/TZPassZZ.cs
@@ -49,7 +49,8 @@
            }
            catch (Exception ex)
            {
                content.Error(ex.Message);
                throw new Exception($"涂装提升机异常:{ex.Message}");
                //content.Error(ex.Message);
            }
            return content;
        }
ÏîÄ¿´úÂë/WMS/WMSServer/WIDESEA_StorageTaskServices/AutoTask/BackgroundJob.cs
@@ -8,6 +8,7 @@
using System.Text;
using System.Threading.Tasks;
using WIDESEA_Core.Const;
using WIDESEA_DTO;
using WIDESEA_DTO.WMS;
using WIDESEA_IServices;
using WIDESEAWCS_BasicInfoRepository;
@@ -125,6 +126,7 @@
                    CreateDate = DateTime.Now,
                    TaskId = 0,
                    CarType = stock.CarType,
                    RoadwayNo = stock.RoadwayNo,
                };
                // åˆ›å»ºä»»åŠ¡ä¼ è¾“ç”¨çš„DTO对象
ÏîÄ¿´úÂë/WMS/WMSServer/WIDESEA_StorageTaskServices/AutoTask/QuartzJobMildd.cs
@@ -41,7 +41,7 @@
                         AssemblyName = "WIDESEA_StorageTaskServices",
                         ClassName = "WhiteCarAutoOutJob",
                         CreateTime = DateTime.Now,
                         IntervalSecond = 15,
                         IntervalSecond = 60,
                         IsDeleted = false,
                         IsStart = false,
                         JobGroup = "AutoTask",
ÏîÄ¿´úÂë/WMS/WMSServer/WIDESEA_StorageTaskServices/AutoTask/WhiteCarAutoOutJob.cs
@@ -109,6 +109,7 @@
                    CreateDate = DateTime.Now,
                    TaskId = 0,
                    CarType = stock.CarType,
                    RoadwayNo = stock.RoadwayNo
                };
                // åˆ›å»ºä»»åŠ¡ä¼ è¾“ç”¨çš„DTO对象
ÏîÄ¿´úÂë/WMS/WMSServer/WIDESEA_StorageTaskServices/Task/Dt_TaskService.cs
@@ -39,6 +39,7 @@
    private readonly IDt_BDCConfigurationService _bdcConfigurationService;
    private readonly IDt_RoadWayRepository _roadWayRepository;
    private readonly IDt_RoadWayInfoRepository _roadWayInfoRepository;
    private readonly IDt_CarBodyInfo_htyRepository _carBodyInfo_HtyRepository;
    public Dt_TaskService(IDt_TaskRepository BaseDal,
                                IUnitOfWorkManage unitOfWorkManage,
@@ -48,7 +49,7 @@
                                ITaskExecuteDetailRepository taskExecuteDetailRepository,
                                ILocationStatusChangeRecordRepository locationStatusChangeRecordRepository,
                                IDt_StationManagerRepository stationManagerRepository,
                                ISys_ConfigService configService, IDt_PalletStockInfoRepository palletStockInfoRepository, IDt_PalletStockInfo_htyRepository palletStockInfo_HtyRepository, IDt_CarBodyInfoRepository carBodyRepository, IDt_BDCConfigurationRepository bdcConfigurationRepository, IDt_BDCConfigurationService bDCConfigurationService, IDt_RoadWayRepository roadWayRepository, IDt_RoadWayInfoRepository roadWayInfoRepository) : base(BaseDal)
                                ISys_ConfigService configService, IDt_PalletStockInfoRepository palletStockInfoRepository, IDt_PalletStockInfo_htyRepository palletStockInfo_HtyRepository, IDt_CarBodyInfoRepository carBodyRepository, IDt_BDCConfigurationRepository bdcConfigurationRepository, IDt_BDCConfigurationService bDCConfigurationService, IDt_RoadWayRepository roadWayRepository, IDt_RoadWayInfoRepository roadWayInfoRepository, IDt_CarBodyInfo_htyRepository carBodyInfo_HtyRepository) : base(BaseDal)
    {
        _unitOfWorkManage = unitOfWorkManage;
@@ -66,6 +67,7 @@
        _bdcConfigurationService = bDCConfigurationService;
        _roadWayRepository = roadWayRepository;
        _roadWayInfoRepository = roadWayInfoRepository;
        _carBodyInfo_HtyRepository = carBodyInfo_HtyRepository;
    }
    #region å¤–部接口方法
@@ -157,25 +159,26 @@
            stockInfo_Hty.FinishTime = DateTime.Now;
            stockInfo_Hty.OperateType = (int)OperateTypeEnum.自动完成;
            var boxinfo = _carBodyRepository.QueryFirst(x => x.PalletCode == task.PalletCode);
            var carInfo = _carBodyRepository.QueryFirst(x => x.PalletCode == task.PalletCode);
            carInfo.BodyStatus = 2;
            // äº‹åŠ¡å¤„ç†
            await _unitOfWorkManage.UseTranAsync(async () =>
            {
                var isLocationUpdate = await _locationRepository.UpdateDataAsync(loc);                      //更新库位
                var isPalletHty = await _palletStockInfo_HtyRepository.AddDataAsync(stockInfo_Hty);         //添加历史库存记录
                var isTaskUpdated = await BaseDal.DeleteDataByIdAsync(task.TaskId);                       //删除任务
                //await BaseDal.UpdateDataAsync(task);                                                        //取消删除任务,改为完成状态;并WMS界面由人工确认完成
                var isTaskAdd = await _task_HtyRepository.AddDataAsync(taskHty) > 0;                        //加入历史任务
                var isDelete = await _palletStockInfoRepository.DeleteDataAsync(stock);                     //删除库存
                //await DeleteStockInfoDetailsAsync(stock.StockInfoDetails);                                  //删除库存明细
                //if (boxinfo != null)
                //{
                //    var isDeleteBoxing = await _boxingInfoRepository.Db.DeleteNav<DtBoxingInfo>(x => x.Id == boxinfo.Id)
                //                         .Include(x => x.BoxingInfoDetails)
                //                         .ExecuteCommandAsync();                                           //删除组盘
                //}
                if (task.CarType != 2)//非彩车身出库后 æ¸…除组盘数据
                {
                    //删除组盘
                    Dt_CarBodyInfo_hty carInfo_Hty = carInfo.Adapt<Dt_CarBodyInfo_hty>();
                    carInfo_Hty.FinishTime = DateTime.Now;
                    carInfo_Hty.FinishType = (int)OperateTypeEnum.自动完成;
                    carInfo_Hty.sourceID = carInfo.Id;
                    await _carBodyInfo_HtyRepository.AddDataAsync(carInfo_Hty);
                    await _carBodyRepository.DeleteDataAsync(carInfo);
                }
            });
            return content.OK("任务完成成功", task.Remark);
@@ -241,6 +244,7 @@
                return await CompleteInboundTaskAsync(task);
            case (int)TaskOutboundTypeEnum.Outbound:
            case (int)TaskOutboundTypeEnum.OutTray:
                LogFactory.GetLog("任务完成").InfoFormat(true, "出库任务", "");
                return await CompleteStackTaskAsync(task);
            default:
@@ -335,7 +339,7 @@
        try
        {
            string palletCode = saveModel.MainData["palletCode"].ToString();
            string station = saveModel.MainData["station"].ToString();
            //string station = saveModel.MainData["station"].ToString();
            var barcode = JsonConvert.DeserializeObject<List<string>>(saveModel.MainData["palletCode"].ToString());
@@ -351,7 +355,7 @@
                    return content.Error("未查询到对应的库存信息");
                }
                if (stockInfo.StockStatus != 0) return content.Error($"指定失败:托盘{item}当前状态不允许指定出库");
                if (stockInfo.StockStatus != 0) return content.Error($"指定失败:库存滑橇{item}已锁定不允许指定出库");
                stockInfo.StockStatus = 1;
@@ -399,19 +403,17 @@
                //}
                //var stationInfo = stationInfos.FirstOrDefault();
                // åˆ›å»ºå¹¶æ·»åŠ ä»»åŠ¡åˆ°æ•°æ®åº“
                task = new Dt_Task
                {
                    Grade = 1,
                    Roadway = Outstation.Roadway,
                    TargetAddress = "RB043",
                    TargetAddress = carBody.CarType == 2 ? "RB043" : Outstation.stationChildCode,
                    Dispatchertime = DateTime.Now,
                    NextAddress = Outstation.stationChildCode,
                    OrderNo = null,
                    PalletCode = carBody.PalletCode,
                    PVI = carBody.PVI,
                    PVI = carBody.RFID,
                    SourceAddress = stockInfo.LocationCode,
                    CurrentAddress = stockInfo.LocationCode,
                    TaskState = (int)TaskOutStatusEnum.OutNew,
@@ -420,6 +422,8 @@
                    Creater = "System",
                    CreateDate = DateTime.Now,
                    TaskId = 0,
                    CarType = carBody.CarType,
                    RoadwayNo = stockInfo.RoadwayNo
                };
                // åˆ›å»ºä»»åŠ¡ä¼ è¾“ç”¨çš„DTO对象
@@ -431,7 +435,6 @@
                {
                    throw new InvalidOperationException("WMS IP æœªé…ç½®");
                }
                var tasks = new List<WMSTaskDTO>() { taskDTO };
                // å‘送任务请求到WMS
@@ -463,7 +466,6 @@
    }
    #endregion æŒ‡å®šä»»åŠ¡å‡ºåº“
    /// <summary>
    /// åˆ›å»ºä»»åŠ¡DTO
    /// </summary>
@@ -481,7 +483,8 @@
            Id = 0,
            TaskType = task.TaskType,
            pvi = task.PVI,
            NextAddress = task.NextAddress
            NextAddress = task.NextAddress,
            CarType = task.CarType
        };
    }
@@ -787,8 +790,7 @@
            {
                // åˆ›å»ºWebResponseContent对象
                var content = new WebResponseContent();
                var carInfo = _carBodyRepository.QueryFirst(x => x.PalletCode == task.PalletCode );
                var carInfo = _carBodyRepository.QueryFirst(x => x.PalletCode == task.PalletCode);
                var stationInfo = _stationManagerRepository.QueryFirst(x => x.stationChildCode == input.Position);
                // èŽ·å–åº“ä½;
                var location = RequestLocation(stationInfo.RoadwayNo, carInfo.CarType);
ÏîÄ¿´úÂë/WMS/WMSServer/WIDESEA_StorageTaskServices/Task/Partial/Dt_TaskService.cs
@@ -157,17 +157,16 @@
        DtLocationInfo locationinfo = new DtLocationInfo();
        if (carType == 1 || carType == 3)
        {
            locationinfo = dtLocationInfos.Where(x => x.LocationStatus == (int)LocationEnum.Free && x.EnalbeStatus == 1).OrderBy(x => x.Layer).ThenBy(x => x.Column).ThenBy(x => x.Row).FirstOrDefault();
            locationinfo = dtLocationInfos.Where(x => x.LocationStatus == (int)LocationEnum.Free && x.EnalbeStatus == 1).OrderBy(x => x.Column).ThenBy(x => x.Layer).ThenBy(x => x.Row).FirstOrDefault();
        }
        else if (carType == 2)
        {
            locationinfo = dtLocationInfos.Where(x => x.LocationStatus == (int)LocationEnum.Free && x.EnalbeStatus == 1).OrderBy(x => x.Layer).ThenByDescending(x => x.Column).ThenBy(x => x.Row).FirstOrDefault();
            locationinfo = dtLocationInfos.Where(x => x.LocationStatus == (int)LocationEnum.Free && x.EnalbeStatus == 1).OrderByDescending(x => x.Column).ThenBy(x => x.Layer).ThenBy(x => x.Row).FirstOrDefault();
        }
        //else if (carType == 3)
        //{
        //    locationinfo = dtLocationInfos.Where(x => x.LocationStatus == (int)LocationEnum.Free && x.EnalbeStatus == 1).OrderBy(x => x.Column).ThenBy(x => x.Row).ThenBy(x => x.Layer).FirstOrDefault();
        //}
        return locationinfo;
    }
ÏîÄ¿´úÂë/WMS/WMSServer/WIDESEA_WMSServer.sln
@@ -74,9 +74,9 @@
        .editorconfig = .editorconfig
    EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WIDESEA_StoragIntegrationServices", "WIDESEA_StoragIntegrationServices\WIDESEA_StoragIntegrationServices.csproj", "{55326F38-372A-4606-B7FB-8C01BBAEC4FC}"
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WIDESEA_StoragIntegrationServices", "WIDESEA_StoragIntegrationServices\WIDESEA_StoragIntegrationServices.csproj", "{55326F38-372A-4606-B7FB-8C01BBAEC4FC}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WIDESEA_IStoragIntegrationServices", "WIDESEA_IStoragIntegrationServices\WIDESEA_IStoragIntegrationServices.csproj", "{94D572FA-810E-4897-B673-AF988FD4019E}"
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WIDESEA_IStoragIntegrationServices", "WIDESEA_IStoragIntegrationServices\WIDESEA_IStoragIntegrationServices.csproj", "{94D572FA-810E-4897-B673-AF988FD4019E}"
EndProject
Global
    GlobalSection(SolutionConfigurationPlatforms) = preSolution
@@ -465,6 +465,7 @@
        {986CA639-B3B4-4D4F-B12B-3D8FBA48B2B1} = {A73C1AFF-FF92-4825-B607-2E908077EBA4}
        {4BDE58B2-5B2E-480B-932F-D63C2A7D557C} = {8498AA9D-CDC4-4FD2-81AE-DE6AD78F75ED}
        {9912BD12-4CF7-4A91-8203-47C9C125004C} = {8498AA9D-CDC4-4FD2-81AE-DE6AD78F75ED}
        {9BA96018-EF8A-4D84-8E72-DA697FA5EAF8} = {8498AA9D-CDC4-4FD2-81AE-DE6AD78F75ED}
        {55326F38-372A-4606-B7FB-8C01BBAEC4FC} = {8498AA9D-CDC4-4FD2-81AE-DE6AD78F75ED}
        {94D572FA-810E-4897-B673-AF988FD4019E} = {A73C1AFF-FF92-4825-B607-2E908077EBA4}
    EndGlobalSection
ÏîÄ¿´úÂë/WMS/WMSServer/WIDESEA_WMSServer/Controllers/WCS/WCSController.cs
@@ -43,6 +43,17 @@
    }
    /// <summary>
    /// è¯·æ±‚入库巷道
    /// </summary>
    /// <param name="input"></param>
    /// <returns></returns>
    [HttpPost, Route("RequestEmptyInboundRoadWayNo"), AllowAnonymous]
    public WebResponseContent RequestEmptyInboundRoadWayNo([FromBody] RequestTaskDto input)
    {
        return _WCSService.RequestEmptyInboundRoadWayNo(input);
    }
    /// <summary>
    /// æ¶‚装直通总装(临时方案)
    /// </summary>
    /// <param name="input"></param>
@@ -54,6 +65,17 @@
    }
    /// <summary>
    /// ç„Šè£…直通涂装(临时方案)
    /// </summary>
    /// <param name="input"></param>
    /// <returns></returns>
    [HttpPost, Route("HZPassTZ"), AllowAnonymous]
    public WebResponseContent HZPassTZ([FromBody] RequestTaskDto input)
    {
        return _WCSService.HZPassTZ(input);
    }
    /// <summary>
    /// æ€»è£…精排点
    /// </summary>
    /// <param name="input"></param>