wangxinhui
2025-12-18 1d685ca799f0b50ad63336963511cbbf21ab2e4c
需求优化
已添加2个文件
已修改22个文件
500 ■■■■ 文件已修改
项目代码/WCS/WCSServices/WIDESEAWCS_Common/TaskEnum/TaskTypeEnum.cs 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WCS/WCSServices/WIDESEAWCS_ITaskInfoService/ITaskService.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WCS/WCSServices/WIDESEAWCS_Server/Controllers/AGV/AGVController.cs 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WCS/WCSServices/WIDESEAWCS_TaskInfoService/TaskService.cs 21 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WCS/WCSServices/WIDESEAWCS_Tasks/原料库/ConveyorLineJob_YL1ndFloor.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WCS/WCSServices/WIDESEAWCS_Tasks/原料库/StackerCraneJob_YLSC2.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WCS/WCSServices/WIDESEAWCS_Tasks/原料库/StackerCraneJob_YLSC3.cs 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WCS/WCSServices/WIDESEAWCS_Tasks/成品仓/AGV_CPExtend.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WCS/WCSServices/WIDESEAWCS_Tasks/成品仓/ConveyorLineJob_CPA.cs 42 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WCS/WCSServices/WIDESEAWCS_Tasks/成品仓/ConveyorLineJob_CPB.cs 47 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WCS/WCSServices/WIDESEAWCS_Tasks/成品仓/StackerCraneJob_CP.cs 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WMS/WMSServices/WIDESEA_BasicService/Service/LocationInfoService_Common.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WMS/WMSServices/WIDESEA_Common/CommonEnum/StationAreaEnum.cs 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WMS/WMSServices/WIDESEA_Common/TaskEnum/TaskTypeEnum.cs 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WMS/WMSServices/WIDESEA_ITaskInfoService/ITaskService.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WMS/WMSServices/WIDESEA_Model/Models/TaskInfo/Dt_Task.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WMS/WMSServices/WIDESEA_TaskInfoService/TaskService_Inbound.cs 316 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WMS/WMSServices/WIDESEA_TaskInfoService/TaskService_Outbound.cs 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WMS/WMSServices/WIDESEA_WMSServer/Controllers/TaskInfo/TaskController.cs 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WMS/WMSServices/WIDESEA_WMSServer/Filter/CustomProfile.cs 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/龙利得PDA/common/config.js 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目资料/接口协议/WMS文档20251119.docx 补丁 | 查看 | 原始文档 | blame | 历史
项目资料/接口协议/WMS文档20251216.docx 补丁 | 查看 | 原始文档 | blame | 历史
项目资料/接口协议/博斯通利拓接口.V2.xlsx 补丁 | 查看 | 原始文档 | blame | 历史
ÏîÄ¿´úÂë/WCS/WCSServices/WIDESEAWCS_Common/TaskEnum/TaskTypeEnum.cs
@@ -112,6 +112,12 @@
        Inbound = 510,
        /// <summary>
        /// äºŒæ¥¼ç«™ç‚¹æˆå“å…¥åº“
        /// </summary>
        [Description("二楼站点成品入库")]
        Inbound2ndFloor = 515,
        /// <summary>
        /// ç›˜ç‚¹å…¥åº“
        /// </summary>
        [Description("盘点入库")]
ÏîÄ¿´úÂë/WCS/WCSServices/WIDESEAWCS_ITaskInfoService/ITaskService.cs
@@ -87,7 +87,7 @@
        /// è¯·æ±‚原料入库巷道
        /// </summary>
        /// <returns></returns>
        WebResponseContent AssignYLRoadwayNo(string palletCode);
        WebResponseContent AssignYLRoadwayNo(string palletCode, int wide = 0, int thickness = 0, int weight = 0);
        /// <summary>
        /// è¯·æ±‚入库任务
        /// </summary>
ÏîÄ¿´úÂë/WCS/WCSServices/WIDESEAWCS_Server/Controllers/AGV/AGVController.cs
@@ -511,7 +511,7 @@
        /// <summary>
        /// èŽ·å–æ¡æž¶æ”¾æ–™ä¿¡å·
        /// </summary>
        public W_TrussCartonDB GetCartonPut(string StationCode)
        private W_TrussCartonDB GetCartonPut(string StationCode)
        {
            switch (StationCode)
            {
@@ -534,7 +534,7 @@
        /// <summary>
        /// èŽ·å–æ¡æž¶è¯·æ±‚ä¿¡å·
        /// </summary>
        public W_TrussCartonDB GetCartonRequest(string StationCode)
        private W_TrussCartonDB GetCartonRequest(string StationCode)
        {
            switch (StationCode)
            {
@@ -558,7 +558,7 @@
        /// <summary>
        /// èŽ·å–æ¡æž¶è¿›å…¥ä¿¡å·
        /// </summary>
        public R_TrussCartonDB GetCarton(string StationCode)
        private R_TrussCartonDB GetCarton(string StationCode)
        {
            switch (StationCode)
            {
ÏîÄ¿´úÂë/WCS/WCSServices/WIDESEAWCS_TaskInfoService/TaskService.cs
@@ -18,6 +18,7 @@
using Newtonsoft.Json;
using SqlSugar;
using System.Diagnostics.CodeAnalysis;
using System.Net.Http.Headers;
using WIDESEA_DTO.Agv;
using WIDESEAWCS_Common;
using WIDESEAWCS_Common.APIEnum;
@@ -266,12 +267,24 @@
                    {
                        //成品入库
                        List<Dt_Router> routers = _routerRepository.QueryData(x => x.InOutType == item.TaskType && x.StartPosi=="AGV" && x.ChildPosiDeviceCode==item.RoadWay);
                        router = routers.FirstOrDefault();
                        if (routers.Count == 1)
                        if (routers.Count==0)
                        {
                            router = _routerRepository.QueryFirst(x => x.InOutType == item.TaskType && x.StartPosi == "AGV");
                            if (router==null)
                                return WebResponseContent.Instance.Error($"未找到路由配置信息");
                            task.NextAddress = router.NextPosi;
                            task.DeviceCode = router.ChildPosi;
                        }
                        else
                        {
                            router = routers.FirstOrDefault();
                            if (routers.Count == 1)
                            {
                                task.NextAddress = router.NextPosi;
                                task.DeviceCode = router.ChildPosi;
                            }
                        }
                    }
                    tasks.Add(task);
                }
@@ -432,7 +445,7 @@
        /// è¯·æ±‚原料入库巷道
        /// </summary>
        /// <returns></returns>
        public WebResponseContent AssignYLRoadwayNo(string palletCode)
        public WebResponseContent AssignYLRoadwayNo(string palletCode, int wide = 0, int thickness = 0, int weight = 0)
        {
            WebResponseContent content = new WebResponseContent();
            try
@@ -442,7 +455,7 @@
                {
                    return WebResponseContent.Instance.Error($"未找到WMSApi地址");
                }
                string responseStr = HttpHelper.Get($"{address}/api/Task/AssignYLRoadwayNo?palletCode={palletCode}");
                string responseStr = HttpHelper.Get($"{address}/api/Task/AssignYLRoadwayNo?palletCode={palletCode}&wide={wide}&thickness={thickness}&weight={weight}");
                WebResponseContent? responseContent = JsonConvert.DeserializeObject<WebResponseContent>(responseStr);
                if (responseContent != null && responseContent.Status && responseContent.Data != null)
                {
ÏîÄ¿´úÂë/WCS/WCSServices/WIDESEAWCS_Tasks/Ô­ÁÏ¿â/ConveyorLineJob_YL1ndFloor.cs
@@ -119,7 +119,7 @@
                            {
                                if (string.IsNullOrEmpty(task.Roadway) && string.IsNullOrEmpty(task.NextAddress))
                                {
                                    WebResponseContent content = _taskService.AssignYLRoadwayNo(task.PalletCode);
                                    WebResponseContent content = _taskService.AssignYLRoadwayNo(task.PalletCode,weight: conveyorLineInfoRead.WR_Weight, thickness: conveyorLineInfoRead.WR_Height, wide: conveyorLineInfoRead.WR_Width);
                                    if (!content.Status)
                                    {
                                        WriteError(item.StationCode, $"请求入库失败:{content.Message}");
ÏîÄ¿´úÂë/WCS/WCSServices/WIDESEAWCS_Tasks/Ô­ÁÏ¿â/StackerCraneJob_YLSC2.cs
@@ -61,7 +61,7 @@
                    }
                    //commonStackerCrane.CheckStackerCraneTaskCompleted();//防止任务完成事件监测超时,再手动触发一次
                    //获取当前堆垛机状态
                    if (commonStackerCrane.StackerCraneWorkStatusValue == StackerCraneWorkStatus.WorkCompleted)
                    if (commonStackerCrane.CurrentTaskNum > 0 && (commonStackerCrane.StackerCraneWorkStatusValue == StackerCraneWorkStatus.WorkCompleted || commonStackerCrane.Communicator.Read<short>("DB1000.40.0") == 3))
                    {
                        StackerCraneTaskCompletedEventArgs e = new StackerCraneTaskCompletedEventArgs(commonStackerCrane.CurrentTaskNum);
                        CommonStackerCrane_StackerCraneTaskCompletedEventHandler(commonStackerCrane, e);
ÏîÄ¿´úÂë/WCS/WCSServices/WIDESEAWCS_Tasks/Ô­ÁÏ¿â/StackerCraneJob_YLSC3.cs
@@ -66,7 +66,7 @@
                    commonStackerCrane.CheckStackerCraneTaskCompleted();//防止任务完成事件监测超时,再手动触发一次
                    //获取当前堆垛机状态
                    if (commonStackerCrane.CurrentTaskNum>0 && commonStackerCrane.StackerCraneWorkStatusValue == StackerCraneWorkStatus.WorkCompleted)
                    if (commonStackerCrane.CurrentTaskNum>0 && (commonStackerCrane.StackerCraneWorkStatusValue == StackerCraneWorkStatus.WorkCompleted || commonStackerCrane.Communicator.Read<short>("DB1000.40.0") == 3))
                    {
                        StackerCraneTaskCompletedEventArgs e = new StackerCraneTaskCompletedEventArgs(commonStackerCrane.CurrentTaskNum);
                        CommonStackerCrane_StackerCraneTaskCompletedEventHandler(commonStackerCrane, e);
@@ -362,8 +362,8 @@
                        CommonConveyorLine client = (CommonConveyorLine)device;
                        if (client.GetValue<ConveyorLineDBName, short>(ConveyorLineDBName.InteractiveSignal, stationManger.StationCode) != 99)//出库站台未被占用
                        {
                            task.NextAddress = stationManger.StackerCraneStationCode;
                            _taskRepository.UpdateData(task);
                            //task.NextAddress = stationManger.StackerCraneStationCode;
                            //_taskRepository.UpdateData(task);
                            return task;
                        }
                        else
@@ -398,6 +398,10 @@
            YLStackerCraneTaskCommand stackerCraneTaskCommand = new YLStackerCraneTaskCommand();
            stackerCraneTaskCommand.PalletType = Convert.ToInt16(task.PalletType);
            if (task.TaskLength>=1200 && task.TaskLength<1630)
            {
                stackerCraneTaskCommand.PalletType = 3;
            }
            stackerCraneTaskCommand.TaskNum = task.TaskNum;
            stackerCraneTaskCommand.WorkType = 5;
            if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.InboundGroup)//判断是否是入库任务
ÏîÄ¿´úÂë/WCS/WCSServices/WIDESEAWCS_Tasks/³ÉÆ·²Ö/AGV_CPExtend.cs
@@ -183,7 +183,7 @@
                                agvTaskSend.Variables.Add(pointDetail2);
                                agvTaskSend.Variables.Add(complete);
                            }
                            if (task.TaskType==TaskTypeEnum.OutCarton.ObjToInt())
                            if (stationMangerStart.AGVStationCode.StartsWith("PNT_2")|| stationMangerEnd.AGVStationCode.StartsWith("PNT_2"))
                            {
                                agvTaskSend.AgvGroupCode = "GAOc";
                            }
ÏîÄ¿´úÂë/WCS/WCSServices/WIDESEAWCS_Tasks/³ÉÆ·²Ö/ConveyorLineJob_CPA.cs
@@ -70,7 +70,7 @@
                    OtherDevice device = (OtherDevice)value;
                    List<string> deviceStations = device.DeviceProDTOs.Select(x => x.DeviceChildCode).ToList();
                    //获取有协议的输送线
                    List<Dt_StationManger> stationMangers = _stationMangerRepository.QueryData();
                    List<Dt_StationManger> stationMangers = _stationMangerRepository.QueryData(x=>x.StationDeviceCode==device.DeviceCode);
                    foreach (var item in stationMangers.Where(x => deviceStations.Contains(x.StationCode)))
                    {
                        DeviceProDTO? deviceProRead = device.DeviceProDTOs.Where(x => x.DeviceChildCode == item.StationCode && x.DeviceProParamType == nameof(R_ConveyorLineCPDB)).OrderBy(x => x.DeviceProOffset).FirstOrDefault();
@@ -80,38 +80,26 @@
                            R_ConveyorLineCPInfo conveyorLineInfoRead = device.Communicator.ReadCustomer<R_ConveyorLineCPInfo>(deviceProRead.DeviceProAddress);
                            if (conveyorLineInfoRead != null && conveyorLineInfoRead.Command == 2 && conveyorLineInfoRead.TaskNo > 0 && item.StationType == StationTypeEnum.StationType_OnlyInbound.ObjToInt()) //二楼线体入库站台->堆垛机
                            {
                                //获取入库站台是否存在入库任务
                                Dt_Task task = _taskRepository.QueryFirst(x => x.TaskNum == conveyorLineInfoRead.TaskNo && x.NextAddress == item.StationCode && _taskService.TaskInboundTypes.Contains(x.TaskType) && x.TaskState == TaskStatusEnum.Line_Executing.ObjToInt() && x.DeviceCode == device.DeviceCode);
                                if (task != null)
                                {
                                    Dt_StationManger stationManger = stationMangers.FirstOrDefault(x => x.StationCode == task.SourceAddress);
                                    if (stationManger != null)
                                    //分配货位
                                    string? local = _taskService.RequestAssignLocation(task.TaskNum, task.Roadway);
                                    //分配货位
                                    if (!string.IsNullOrEmpty(local))
                                    {
                                        string? local = "";
                                        switch (stationManger.AGVStationCode.ObjToInt() % 2)
                                        {
                                            case 1:
                                                local = task.Roadway + "-001-062-001-01";
                                                break;
                                            case 0:
                                                local = task.Roadway + "-002-062-001-01";
                                                break;
                                            default:
                                                WriteError(item.StationName, $"未找到可分配巷道{task.TaskNum}");
                                                break;
                                        }
                                        //分配货位
                                        if (!string.IsNullOrEmpty(local))
                                        {
                                            task.CurrentAddress = item.StackerCraneStationCode;
                                            task.TargetAddress = local;
                                            task.NextAddress = local;
                                            task.DeviceCode = item.StackerCraneCode;
                                            _taskService.UpdateTask(task, TaskStatusEnum.SC_Execute);
                                            WriteInfo(item.StationName, $"任务号:{task.TaskNum}进行堆垛机入库");
                                        }
                                        task.CurrentAddress = item.StackerCraneStationCode;
                                        task.TargetAddress = local;
                                        task.NextAddress = local;
                                        task.DeviceCode = item.StackerCraneCode;
                                        _taskService.UpdateTask(task, TaskStatusEnum.SC_Execute);
                                        WriteInfo(item.StationName, $"任务号:{task.TaskNum}进行堆垛机入库");
                                    }
                                }
                                else
                                {
                                    WriteError(item.StationName, $"未找到{item.StationCode}的任务{conveyorLineInfoRead.TaskNo}");
                                }
                            }
                            else if (conveyorLineInfoRead != null && conveyorLineInfoRead.Command == 4 && conveyorLineInfoRead.TaskNo <= 0 && item.StationType == StationTypeEnum.StationType_OnlyOutbound.ObjToInt()) //二楼线体出库站台
                            {
ÏîÄ¿´úÂë/WCS/WCSServices/WIDESEAWCS_Tasks/³ÉÆ·²Ö/ConveyorLineJob_CPB.cs
@@ -70,7 +70,7 @@
                {
                    OtherDevice device = (OtherDevice)value;
                    List<string> deviceStations = device.DeviceProDTOs.Select(x => x.DeviceChildCode).Distinct().ToList();
                    List<Dt_StationManger> stationMangers = _stationMangerRepository.QueryData();
                    List<Dt_StationManger> stationMangers = _stationMangerRepository.QueryData(x => x.StationDeviceCode == device.DeviceCode);
                    foreach (var item in stationMangers.Where(x => deviceStations.Contains(x.StationCode)))
                    {
                        DeviceProDTO? deviceProRead = device.DeviceProDTOs.Where(x => x.DeviceChildCode == item.StationCode && x.DeviceProParamType == nameof(R_ConveyorLineCPDB)).OrderBy(x => x.DeviceProOffset).FirstOrDefault();
@@ -144,7 +144,11 @@
                                    }
                                }
                            }
                            else if (conveyorLineInfoRead != null && conveyorLineInfoRead.Command == 2 && conveyorLineInfoRead.TaskNo > 0)
                        }
                        else if (item.StationType == StationTypeEnum.StationType_OnlyOutbound.ObjToInt() && deviceProRead != null)
                        {//入库RGV接驳位交互
                            R_ConveyorLineCPInfo conveyorLineInfoRead = device.Communicator.ReadCustomer<R_ConveyorLineCPInfo>(deviceProRead.DeviceProAddress);
                            if (conveyorLineInfoRead != null && conveyorLineInfoRead.Command == 2 && conveyorLineInfoRead.TaskNo > 0)
                            {
                                Dt_Task task = _taskRepository.QueryFirst(x => x.TaskNum == conveyorLineInfoRead.TaskNo && x.NextAddress == item.StationCode && _taskService.TaskOutboundTypes.Contains(x.TaskType) && x.TaskState == TaskStatusEnum.Line_Executing.ObjToInt() && x.DeviceCode == device.DeviceCode);
                                if (task != null)
@@ -166,6 +170,45 @@
                                }
                            }
                        }
                        else if (item.StationType == StationTypeEnum.StationType_OnlyInbound.ObjToInt() && deviceProRead != null && deviceProWrite != null)
                        {
                            R_ConveyorLineCPInfo conveyorLineInfoRead = device.Communicator.ReadCustomer<R_ConveyorLineCPInfo>(deviceProRead.DeviceProAddress);
                            //成品一楼入库口写入对应入库站台地址
                            if (conveyorLineInfoRead != null && conveyorLineInfoRead.Command == 4 && !string.IsNullOrEmpty(conveyorLineInfoRead.PalletCode))
                            {
                                Dt_Task task = _taskRepository.QueryFirst(x => x.PalletCode == conveyorLineInfoRead.PalletCode && x.CurrentAddress == item.StationCode && _taskService.TaskInboundTypes.Contains(x.TaskType) && x.TaskState == TaskStatusEnum.AGV_Finish.ObjToInt() && x.DeviceCode == device.DeviceCode);
                                if (task != null)
                                {
                                    //分配巷道 å­˜å…¥æ‰˜ç›˜æ•°æ®
                                    List<Dt_Router> routers = _routerService.QueryNextRoutes(item.StationCode, task.Roadway, task.TaskType);
                                    Dt_Router? router = routers.FirstOrDefault();
                                    if (routers == null || routers.Count == 0 || router == null)
                                    {
                                        WriteError(item.StationName, $"未找到对应路由信息,设备编号:{item.StationCode},任务号:{task.TaskNum}");
                                        continue;
                                    }
                                    if (routers.Count > 1)
                                    {
                                        WriteError(item.StationName, $"路由信息配置错误,设备编号:{item.StationCode},任务号:{task.TaskNum}");
                                        continue;
                                    }
                                    //写入入库线体地址
                                    device.SetValue(W_ConveyorLineCPDB.W_TargetAddress, router.NextPosi, item.StationCode);
                                    device.SetValue(W_ConveyorLineCPDB.W_TaskNo, task.TaskNum, item.StationCode);
                                    device.SetValue(W_ConveyorLineCPDB.W_Command, 1, item.StationCode);
                                    //更新任务信息
                                    task.CurrentAddress = item.StationCode;
                                    task.NextAddress = router.NextPosi;
                                    task.DeviceCode = router.ChildPosiDeviceCode;
                                    _taskService.UpdateTask(task, TaskStatusEnum.Line_Executing);
                                    WriteInfo(item.StationName, $"任务号{conveyorLineInfoRead.TaskNo}下一步");
                                }
                                else
                                {
                                    WriteError(item.StationName, $"未找到设备子编号{item.StationCode}的协议信息");
                                }
                            }
                        }
                        else if (item.StationType == StationTypeEnum.StationType_InboundAndOutbound.ObjToInt() && deviceProRead != null)
                        {//入库RGV接驳位交互
                            R_ConveyorLineCPInfo conveyorLineInfoRead = device.Communicator.ReadCustomer<R_ConveyorLineCPInfo>(deviceProRead.DeviceProAddress);
ÏîÄ¿´úÂë/WCS/WCSServices/WIDESEAWCS_Tasks/³ÉÆ·²Ö/StackerCraneJob_CP.cs
@@ -23,6 +23,7 @@
using SqlSugar.Extensions;
using WIDESEAWCS_Tasks.ConveyorLineJob;
using WIDESEAWCS_QuartzJob.Repository;
using WIDESEAWCS_QuartzJob.StackerCrane;
namespace WIDESEAWCS_Tasks
{
@@ -57,8 +58,13 @@
                    {
                        commonStackerCrane.StackerCraneTaskCompletedEventHandler += CommonStackerCrane_StackerCraneTaskCompletedEventHandler;//订阅任务完成事件
                    }
                    commonStackerCrane.CheckStackerCraneTaskCompleted();//防止任务完成事件监测超时,再手动触发一次
                    if (commonStackerCrane.StackerCraneAutoStatusValue == StackerCraneAutoStatus.Automatic && commonStackerCrane.StackerCraneStatusValue == StackerCraneStatus.Normal && commonStackerCrane.StackerCraneWorkStatusValue == StackerCraneWorkStatus.Standby)
                    //commonStackerCrane.CheckStackerCraneTaskCompleted();//防止任务完成事件监测超时,再手动触发一次
                    if (commonStackerCrane.CurrentTaskNum > 0 && (commonStackerCrane.StackerCraneWorkStatusValue == StackerCraneWorkStatus.WorkCompleted || commonStackerCrane.Communicator.Read<short>("DB1000.40.0") == 3))
                    {
                        StackerCraneTaskCompletedEventArgs e = new StackerCraneTaskCompletedEventArgs(commonStackerCrane.CurrentTaskNum);
                        CommonStackerCrane_StackerCraneTaskCompletedEventHandler(commonStackerCrane, e);
                    }
                    else if (commonStackerCrane.StackerCraneAutoStatusValue == StackerCraneAutoStatus.Automatic && commonStackerCrane.StackerCraneStatusValue == StackerCraneStatus.Normal && commonStackerCrane.StackerCraneWorkStatusValue == StackerCraneWorkStatus.Standby)
                    {
                        short stackerError = commonStackerCrane.Communicator.Read<short>("DB1000.54.0");
                        if (stackerError == 0)
ÏîÄ¿´úÂë/WMS/WMSServices/WIDESEA_BasicService/Service/LocationInfoService_Common.cs
@@ -128,7 +128,7 @@
                        Dt_LocationInfo locationInfo = new Dt_LocationInfo();
                        foreach (var item in locationInfosMedium)
                        {
                            if (item.Layer == 7 || item.Layer == 8)
                            if (LayerLimit && (item.Layer == 7 || item.Layer == 8))
                            {
                                locationInfo = item;
                                break;
ÏîÄ¿´úÂë/WMS/WMSServices/WIDESEA_Common/CommonEnum/StationAreaEnum.cs
@@ -109,6 +109,11 @@
        /// äºŒæ¥¼é›¾åŒ–
        /// </summary>
        [Description("二楼雾化")]
        äºŒæ¥¼é›¾åŒ– = 17
        äºŒæ¥¼é›¾åŒ– = 17,
        /// <summary>
        /// äºŒæ¥¼æˆå“åº“缓存区
        /// </summary>
        [Description("二楼成品库缓存区")]
        äºŒæ¥¼æˆå“åº“缓存区 = 18
    }
}
ÏîÄ¿´úÂë/WMS/WMSServices/WIDESEA_Common/TaskEnum/TaskTypeEnum.cs
@@ -106,6 +106,12 @@
        Inbound = 510,
        /// <summary>
        /// äºŒæ¥¼ç«™ç‚¹æˆå“å…¥åº“
        /// </summary>
        [Description("二楼站点成品入库")]
        Inbound2ndFloor = 515,
        /// <summary>
        /// ç›˜ç‚¹å…¥åº“
        /// </summary>
        [Description("盘点入库")]
ÏîÄ¿´úÂë/WMS/WMSServices/WIDESEA_ITaskInfoService/ITaskService.cs
@@ -89,7 +89,7 @@
        /// åˆ†é…åŽŸæ–™å··é“
        /// </summary>
        /// <returns></returns>
        string AssignYLRoadwayNo(string palletCode);
        string AssignYLRoadwayNo(string palletCode, int wide = 0, int thickness = 0, int weight = 0);
        /// <summary>
ÏîÄ¿´úÂë/WMS/WMSServices/WIDESEA_Model/Models/TaskInfo/Dt_Task.cs
@@ -184,7 +184,7 @@
        public string WorkCentreCode { get; set; }
        /// <summary>
        /// ç‰©æ–™ç¼–号
        /// MES计划Id
        /// </summary>
        [ImporterHeader(Name = "MES计划Id")]
        [ExporterHeader(DisplayName = "MES计划Id")]
ÏîÄ¿´úÂë/WMS/WMSServices/WIDESEA_TaskInfoService/TaskService_Inbound.cs
@@ -405,98 +405,200 @@
                }
                if (orderType>0) //新厂纸卷平台入库
                {
                    //获取主单
                    Dt_InboundOrder inboundOrder = BaseDal.Db.Queryable<Dt_InboundOrder>().Where(x=>x.OrderType==orderType).Includes(x=>x.Details).Where(x=>x.Details.Any(v=>v.BarCode==palletCode)).First();
                    if (inboundOrder==null)
                    InOrderTypeEnum inOrderTypeEnum = (InOrderTypeEnum)orderType;
                    if (inOrderTypeEnum== InOrderTypeEnum.PurchaseIn)
                    {
                        throw new Exception($"未找到条码{palletCode}入库单据信息");
                    }
                    Dt_InboundOrderDetail inboundOrderDetail = inboundOrder.Details.FirstOrDefault(x=>x.BarCode == palletCode);
                    if (inboundOrderDetail==null)
                    {
                        throw new Exception($"未找到入库单号为{inboundOrder.UpperOrderNo}条码{palletCode}单据信息");
                    }
                    if (inboundOrderDetail.MaterialWide < 690)
                    {
                        return content.Error("新厂物料幅宽限制为690-2700mm");
                    }
                    if (inboundOrderDetail.MaterialThick<=0)
                    {
                        return content.Error("物料直径需要大于0");
                    }
                    if (inboundOrderDetail.OrderDetailStatus != InOrderStatusEnum.未开始.ObjToInt())
                    {
                        throw new Exception($"条码{palletCode}信息已入库或入库中");
                    }
                    Dt_YLInboundCache? yLInboundCache = _inboundRepository.YLInboundCacheRepository.QueryData(x => x.InvOrg == MaterielInvOrgEnum.新厂.ToString()).FirstOrDefault();
                    if (yLInboundCache == null)
                    {
                        throw new Exception("未找到原料条码缓存信息");
                    }
                    int Id = yLInboundCache.Id;
                    if (yLInboundCache.BarCode == palletCode)
                    {
                        throw new Exception($"条码{palletCode}已扫码");
                    }
                    else if (yLInboundCache.BarCode != palletCode && yLInboundCache.BindStatus == WhetherEnum.True.ObjToInt())
                    {
                        yLInboundCache = _mapper.Map<Dt_YLInboundCache>(inboundOrderDetail);
                        yLInboundCache.Id = Id;
                        //获取主单
                        Dt_PurchaseOrder inboundOrder = BaseDal.Db.Queryable<Dt_PurchaseOrder>().Includes(x => x.Details).Where(x => x.Details.Any(v => v.BarCode == palletCode)).First();
                        //获取物料
                        Dt_MaterielInfo materielInfo = _basicRepository.MaterielInfoRepository.QueryFirst(x => x.MaterielCode == inboundOrderDetail.MaterialCode);
                        //生成库存组盘信息
                        Dt_StockInfo stockInfo = new Dt_StockInfo()
                        if (inboundOrder == null)
                        {
                            MaterielInvOrgId = materielInfo.MaterielInvOrgId,
                            PalletCode = inboundOrderDetail.BarCode,
                            RfidCode = "",
                            LocationCode = "",
                            PalletType = 1,
                            WarehouseId = materielInfo.WarehouseId,
                            StockAttribute = materielInfo.MaterielSourceType,
                            StockStatus = StockStatusEmun.组盘暂存.ObjToInt(),
                            MaterielSpec = materielInfo.MaterielSpec,
                            Unit = materielInfo.MaterielUnit,
                            MaterielThickness = inboundOrderDetail.MaterialThick,
                            MaterielWide = inboundOrderDetail.MaterialWide,
                            MaterielWeight = inboundOrderDetail.MaterialWeight,
                            MaterielCode = materielInfo.MaterielCode,
                            MaterielName = materielInfo.MaterielName,
                            BatchNo=inboundOrderDetail.MaterialLot,
                            StockLength = inboundOrderDetail.OrderQuantity
                        };
                        if (inboundOrderDetail.MaterialWide > 1200)
                        {
                            stockInfo.PalletType = 2;
                            throw new Exception($"未找到条码{palletCode}采购入库单据信息");
                        }
                        inboundOrderDetail.OrderDetailStatus = InOrderStatusEnum.入库中.ObjToInt();
                        _unitOfWorkManage.BeginTran();
                        _inboundRepository.YLInboundCacheRepository.UpdateData(yLInboundCache);
                        //新增组盘信息
                        _stockRepository.StockInfoRepository.AddData(stockInfo);
                        if (inboundOrder.InboundOrderStatus == InOrderStatusEnum.未开始.ObjToInt())
                        Dt_PurchaseOrderDetail inboundOrderDetail = inboundOrder.Details.FirstOrDefault(x => x.BarCode == palletCode);
                        if (inboundOrderDetail == null)
                        {
                            inboundOrder.InboundOrderStatus = InOrderStatusEnum.入库中.ObjToInt();
                            _inboundRepository.InboundOrderRepository.UpdateData(inboundOrder);
                            throw new Exception($"未找到入库单号为{inboundOrder.PurchaseOrderNo}条码{palletCode}单据信息");
                        }
                        _inboundRepository.InboundOrderDetailRepository.UpdateData(inboundOrderDetail);
                        //启动线体
                        WebResponseContent webResponse = YLPurchasePush();
                        if (!webResponse.Status)
                        if (inboundOrderDetail.PurchaseDetailWide < 690)
                        {
                            throw new Exception(webResponse.Message);
                            return content.Error("新厂物料幅宽限制为690-2700mm");
                        }
                        _unitOfWorkManage.CommitTran();
                        Dt_StockInfo stockInfoAdd = _stockRepository.StockInfoRepository.QueryFirst(x => x.PalletCode == stockInfo.PalletCode);
                        //记录库存变动
                        _recordService.StockQuantityChangeRecordService.AddStockChangeRecord(stockInfoAdd, 0, stockInfoAdd.StockLength, StockChangeTypeEnum.MaterielGroup);
                        return content.OK("成功", yLInboundCache);
                        if (inboundOrderDetail.PurchaseDetailThickness <= 0)
                        {
                            return content.Error("物料直径需要大于0");
                        }
                        if (inboundOrderDetail.PurchaseDetailStatus != InOrderStatusEnum.未开始.ObjToInt())
                        {
                            throw new Exception($"条码{palletCode}信息已入库或入库中");
                        }
                        Dt_YLInboundCache? yLInboundCache = _inboundRepository.YLInboundCacheRepository.QueryData(x => x.InvOrg == MaterielInvOrgEnum.新厂.ToString()).FirstOrDefault();
                        if (yLInboundCache == null)
                        {
                            throw new Exception("未找到原料条码缓存信息");
                        }
                        int Id = yLInboundCache.Id;
                        if (yLInboundCache.BarCode == palletCode)
                        {
                            throw new Exception($"条码{palletCode}已扫码");
                        }
                        else if (yLInboundCache.BarCode != palletCode && yLInboundCache.BindStatus == WhetherEnum.True.ObjToInt())
                        {
                            yLInboundCache = _mapper.Map<Dt_YLInboundCache>(inboundOrderDetail);
                            yLInboundCache.Id = Id;
                            //获取物料
                            Dt_MaterielInfo materielInfo = _basicRepository.MaterielInfoRepository.QueryFirst(x => x.MaterielCode == inboundOrderDetail.MaterialCode);
                            //生成库存组盘信息
                            Dt_StockInfo stockInfo = new Dt_StockInfo()
                            {
                                MaterielInvOrgId = materielInfo.MaterielInvOrgId,
                                PalletCode = inboundOrderDetail.BarCode,
                                RfidCode = "",
                                LocationCode = "",
                                PalletType = 1,
                                WarehouseId = materielInfo.WarehouseId,
                                StockAttribute = materielInfo.MaterielSourceType,
                                StockStatus = StockStatusEmun.组盘暂存.ObjToInt(),
                                MaterielSpec = materielInfo.MaterielSpec,
                                Unit = materielInfo.MaterielUnit,
                                MaterielThickness = inboundOrderDetail.PurchaseDetailThickness,
                                MaterielWide = inboundOrderDetail.PurchaseDetailWide,
                                MaterielWeight = inboundOrderDetail.PurchaseDetailWeight,
                                MaterielCode = materielInfo.MaterielCode,
                                MaterielName = materielInfo.MaterielName,
                                BatchNo = inboundOrderDetail.MaterialLot,
                                StockLength = inboundOrderDetail.PurchaseDetailQuantity
                            };
                            if (inboundOrderDetail.PurchaseDetailWide > 1200)
                            {
                                stockInfo.PalletType = 2;
                            }
                            inboundOrderDetail.PurchaseDetailStatus = InOrderStatusEnum.入库中.ObjToInt();
                            _unitOfWorkManage.BeginTran();
                            _inboundRepository.YLInboundCacheRepository.UpdateData(yLInboundCache);
                            //新增组盘信息
                            _stockRepository.StockInfoRepository.AddData(stockInfo);
                            if (inboundOrder.PurchaseOrderStatus == InOrderStatusEnum.未开始.ObjToInt())
                            {
                                inboundOrder.PurchaseOrderStatus = InOrderStatusEnum.入库中.ObjToInt();
                                _inboundRepository.PurchaseOrderRepository.UpdateData(inboundOrder);
                            }
                            _inboundRepository.PurchaseOrderDetailRepository.UpdateData(inboundOrderDetail);
                            //启动线体
                            WebResponseContent webResponse = YLPurchasePush();
                            if (!webResponse.Status)
                            {
                                throw new Exception(webResponse.Message);
                            }
                            _unitOfWorkManage.CommitTran();
                            Dt_StockInfo stockInfoAdd = _stockRepository.StockInfoRepository.QueryFirst(x => x.PalletCode == stockInfo.PalletCode);
                            //记录库存变动
                            _recordService.StockQuantityChangeRecordService.AddStockChangeRecord(stockInfoAdd, 0, stockInfoAdd.StockLength, StockChangeTypeEnum.MaterielGroup);
                            return content.OK("成功", yLInboundCache);
                        }
                        else
                        {
                            throw new Exception($"上卷条码{yLInboundCache.BarCode}还未进行绑定");
                        }
                    }
                    else
                    {
                        throw new Exception($"上卷条码{yLInboundCache.BarCode}还未进行绑定");
                        //获取主单
                        Dt_InboundOrder inboundOrder = BaseDal.Db.Queryable<Dt_InboundOrder>().Where(x => x.OrderType == orderType).Includes(x => x.Details).Where(x => x.Details.Any(v => v.BarCode == palletCode)).First();
                        if (inboundOrder == null)
                        {
                            throw new Exception($"未找到条码{palletCode}入库单据信息");
                        }
                        Dt_InboundOrderDetail inboundOrderDetail = inboundOrder.Details.FirstOrDefault(x => x.BarCode == palletCode);
                        if (inboundOrderDetail == null)
                        {
                            throw new Exception($"未找到入库单号为{inboundOrder.UpperOrderNo}条码{palletCode}单据信息");
                        }
                        if (inboundOrderDetail.MaterialWide < 690)
                        {
                            return content.Error("新厂物料幅宽限制为690-2700mm");
                        }
                        if (inboundOrderDetail.MaterialThick <= 0)
                        {
                            return content.Error("物料直径需要大于0");
                        }
                        if (inboundOrderDetail.OrderDetailStatus != InOrderStatusEnum.未开始.ObjToInt())
                        {
                            throw new Exception($"条码{palletCode}信息已入库或入库中");
                        }
                        Dt_YLInboundCache? yLInboundCache = _inboundRepository.YLInboundCacheRepository.QueryData(x => x.InvOrg == MaterielInvOrgEnum.新厂.ToString()).FirstOrDefault();
                        if (yLInboundCache == null)
                        {
                            throw new Exception("未找到原料条码缓存信息");
                        }
                        int Id = yLInboundCache.Id;
                        if (yLInboundCache.BarCode == palletCode)
                        {
                            throw new Exception($"条码{palletCode}已扫码");
                        }
                        else if (yLInboundCache.BarCode != palletCode && yLInboundCache.BindStatus == WhetherEnum.True.ObjToInt())
                        {
                            yLInboundCache = _mapper.Map<Dt_YLInboundCache>(inboundOrderDetail);
                            yLInboundCache.Id = Id;
                            //获取物料
                            Dt_MaterielInfo materielInfo = _basicRepository.MaterielInfoRepository.QueryFirst(x => x.MaterielCode == inboundOrderDetail.MaterialCode);
                            //生成库存组盘信息
                            Dt_StockInfo stockInfo = new Dt_StockInfo()
                            {
                                MaterielInvOrgId = materielInfo.MaterielInvOrgId,
                                PalletCode = inboundOrderDetail.BarCode,
                                RfidCode = "",
                                LocationCode = "",
                                PalletType = 1,
                                WarehouseId = materielInfo.WarehouseId,
                                StockAttribute = materielInfo.MaterielSourceType,
                                StockStatus = StockStatusEmun.组盘暂存.ObjToInt(),
                                MaterielSpec = materielInfo.MaterielSpec,
                                Unit = materielInfo.MaterielUnit,
                                MaterielThickness = inboundOrderDetail.MaterialThick,
                                MaterielWide = inboundOrderDetail.MaterialWide,
                                MaterielWeight = inboundOrderDetail.MaterialWeight,
                                MaterielCode = materielInfo.MaterielCode,
                                MaterielName = materielInfo.MaterielName,
                                BatchNo = inboundOrderDetail.MaterialLot,
                                StockLength = inboundOrderDetail.OrderQuantity
                            };
                            if (inboundOrderDetail.MaterialWide > 1200)
                            {
                                stockInfo.PalletType = 2;
                            }
                            inboundOrderDetail.OrderDetailStatus = InOrderStatusEnum.入库中.ObjToInt();
                            _unitOfWorkManage.BeginTran();
                            _inboundRepository.YLInboundCacheRepository.UpdateData(yLInboundCache);
                            //新增组盘信息
                            _stockRepository.StockInfoRepository.AddData(stockInfo);
                            if (inboundOrder.InboundOrderStatus == InOrderStatusEnum.未开始.ObjToInt())
                            {
                                inboundOrder.InboundOrderStatus = InOrderStatusEnum.入库中.ObjToInt();
                                _inboundRepository.InboundOrderRepository.UpdateData(inboundOrder);
                            }
                            _inboundRepository.InboundOrderDetailRepository.UpdateData(inboundOrderDetail);
                            //启动线体
                            WebResponseContent webResponse = YLPurchasePush();
                            if (!webResponse.Status)
                            {
                                throw new Exception(webResponse.Message);
                            }
                            _unitOfWorkManage.CommitTran();
                            Dt_StockInfo stockInfoAdd = _stockRepository.StockInfoRepository.QueryFirst(x => x.PalletCode == stockInfo.PalletCode);
                            //记录库存变动
                            _recordService.StockQuantityChangeRecordService.AddStockChangeRecord(stockInfoAdd, 0, stockInfoAdd.StockLength, StockChangeTypeEnum.MaterielGroup);
                            return content.OK("成功", yLInboundCache);
                        }
                        else
                        {
                            throw new Exception($"上卷条码{yLInboundCache.BarCode}还未进行绑定");
                        }
                    }
                }
                else //老厂纸卷平台入库
                {
@@ -686,7 +788,7 @@
        /// <param name="palletCode">条码号</param>
        /// <returns></returns>
        /// <exception cref="Exception"></exception>
        public string AssignYLRoadwayNo(string palletCode)
        public string AssignYLRoadwayNo(string palletCode, int wide = 0, int thickness = 0, int weight = 0)
        {
            try
            {
@@ -704,10 +806,19 @@
                string roadwayNo = "";
                
                bool isReturn=false;
                if (stockInfo.MaterielInvOrgId==MaterielInvOrgEnum.新厂.ObjToInt())
                {
                    if (wide>0 && thickness>0 && weight>0)
                    {
                        stockInfo.CheckThickness = thickness;
                        stockInfo.CheckWeight = weight;
                        stockInfo.CheckWide = wide;
                        isReturn = true;
                    }
                    //限制直径
                    if (stockInfo.CheckThickness >= 300 && stockInfo.CheckThickness <= 1300 && stockInfo.MaterielWide >= 690 && stockInfo.MaterielWide <= 2700)
                    if (stockInfo.CheckThickness >= 300 && stockInfo.CheckThickness <= 1300 && stockInfo.MaterielWide >= 690 && stockInfo.MaterielWide <= 2500)
                    {
                        //获取分配
                        List<LocationCount> locationCounts = Db.Queryable<Dt_LocationInfo>().Where(x => x.WarehouseId == warehouse.WarehouseId && x.LocationStatus == LocationStatusEnum.Free.ObjToInt() && x.EnableStatus == EnableStatusEnum.Normal.ObjToInt() && x.RoadwayNo.Contains("YLDual") && (stockInfo.PalletType == LocationTypeEnum.MediumPallet.ObjToInt() ? x.LocationType == LocationTypeEnum.MediumPallet.ObjToInt(): x.LocationType == LocationTypeEnum.SmallPallet.ObjToInt())).GroupBy(x => x.RoadwayNo).Select(x => new LocationCount { RoadwayNo = x.RoadwayNo, Count = SqlFunc.AggregateCount(x) }).OrderBy(x => x.RoadwayNo).ToList();
@@ -720,17 +831,33 @@
                    //限制
                    if (stockInfo.CheckThickness >= 800 && stockInfo.CheckThickness <= 1500 && stockInfo.MaterielWide >= 700 && stockInfo.MaterielWide <= 2500)
                    {
                        bool LayerLimit = false;
                        if (stockInfo.CheckThickness > 1300)
                        bool LayerLimit = stockInfo.CheckThickness > 1300;
                        bool RoadwayLimit = stockInfo.MaterielWide > 2200;
                        var query = Db.Queryable<Dt_LocationInfo>()
                            .Where(x => x.WarehouseId == warehouse.WarehouseId
                                && x.LocationStatus == (int)LocationStatusEnum.Free
                                && x.EnableStatus == (int)EnableStatusEnum.Normal
                                && x.RoadwayNo.Contains("YL"))
                            .Select(x => new { x.RoadwayNo, x.Columns });
                        // æ ¹æ®æ¡ä»¶è¿‡æ»¤
                        if (LayerLimit)
                        {
                            LayerLimit = true;
                            query = query.Where(x => x.Columns >= 56 && !x.RoadwayNo.Contains("YLDual"));
                        }
                        //获取分配
                        List<LocationCount> locationCounts = Db.Queryable<Dt_LocationInfo>().Where(x => x.WarehouseId == warehouse.WarehouseId && x.LocationStatus == LocationStatusEnum.Free.ObjToInt() &&  x.EnableStatus == EnableStatusEnum.Normal.ObjToInt() && x.RoadwayNo.Contains("YL") && !x.RoadwayNo.Contains("YLDual") && (LayerLimit ? x.Columns>=56 : x.Columns<=55)).GroupBy(x => x.RoadwayNo).Select(x => new LocationCount { RoadwayNo = x.RoadwayNo, Count = SqlFunc.AggregateCount(x) }).OrderBy(x => x.RoadwayNo).ToList();
                        if (stockInfo.MaterielWide > 2200)
                        if (RoadwayLimit)
                        {
                            locationCounts = Db.Queryable<Dt_LocationInfo>().Where(x => x.WarehouseId == warehouse.WarehouseId && x.LocationStatus == LocationStatusEnum.Free.ObjToInt() && x.EnableStatus == EnableStatusEnum.Normal.ObjToInt() && x.RoadwayNo == "SC02_YL" && (LayerLimit ? x.Columns >= 56 : x.Columns <= 55)).GroupBy(x => x.RoadwayNo).Select(x => new LocationCount { RoadwayNo = x.RoadwayNo, Count = SqlFunc.AggregateCount(x) }).OrderBy(x => x.RoadwayNo).ToList();
                            query = query.Where(x => !x.RoadwayNo.Contains("SC01_YL"));
                        }
                        List<LocationCount> locationCounts = query
                            .GroupBy(x => x.RoadwayNo)
                            .Select(x => new LocationCount
                            {
                                RoadwayNo = x.RoadwayNo,
                                Count = SqlFunc.AggregateCount(x)
                            })
                            .OrderBy(x => x.RoadwayNo)
                            .ToList();
                        roadwayNo = HandleRoadway(locationCounts, warehouse);
                    }
@@ -742,7 +869,12 @@
                        roadwayNo = HandleRoadway(locationCounts, warehouse);
                    }
                }
                if (isReturn && !string.IsNullOrEmpty(roadwayNo))
                {
                    _stockRepository.StockInfoRepository.UpdateData(stockInfo);
                }
                return !string.IsNullOrEmpty(roadwayNo) ? (roadwayNo) : throw new Exception("未找到可分配巷道");
            }
            catch (Exception ex)
@@ -1264,6 +1396,10 @@
                        Quantity = inboundOrderDetail.OrderQuantity,
                        PalletType = 1
                    };
                    if (agvstation.StationArea==StationAreaEnum.二楼成品库缓存区.ToString())
                    {
                        newTask.TaskType = TaskTypeEnum.Inbound2ndFloor.ObjToInt();
                    }
                    inboundOrderDetail.OrderDetailStatus = InOrderStatusEnum.入库中.ObjToInt();
                    _unitOfWorkManage.BeginTran();
                    if (inboundOrder.InboundOrderStatus == InOrderStatusEnum.未开始.ObjToInt())
ÏîÄ¿´úÂë/WMS/WMSServices/WIDESEA_TaskInfoService/TaskService_Outbound.cs
@@ -164,6 +164,7 @@
                        return content.Error($"货位状态不正确");
                    }
                    Dt_StockInfo stockInfo = _stockRepository.StockInfoRepository.QueryFirst(x => x.PalletCode == task.PalletCode);
                    int wareId=stockInfo.WarehouseId;
                    if (stockInfo != null && stockInfo.StockStatus == StockStatusEmun.出库锁定.ObjToInt())
                    {
                        task.TaskStatus = TaskStatusEnum.Finish.ObjToInt();
@@ -207,7 +208,7 @@
                                }
                            }
                        }
                        _basicService.LocationInfoService.UpdateLocationStatus(locationInfoStart, stockInfo.PalletType, LocationStatusEnum.Free, stockInfo.WarehouseId);
                        _basicService.LocationInfoService.UpdateLocationStatus(locationInfoStart, stockInfo.PalletType, LocationStatusEnum.Free, wareId);
                        BaseDal.DeleteAndMoveIntoHty(task, App.User.UserId > 0 ? OperateTypeEnum.人工完成 : OperateTypeEnum.自动完成);
                        _unitOfWorkManage.CommitTran();
                    }
@@ -242,7 +243,7 @@
                    DispatchPlanMaterialId=item.OrderDetailId,
                    UnitCode=item.Unit,
                    GradeCode="001",
                    MainQuantity=item.AssignQuantity,
                    MainQuantity=item.OriginalQuantity,
                    AssistUnitCode=item.AssistUnit,
                    LocationCode= address,
                    LotNumber=item.BatchNo,
ÏîÄ¿´úÂë/WMS/WMSServices/WIDESEA_WMSServer/Controllers/TaskInfo/TaskController.cs
@@ -201,9 +201,9 @@
        /// <param name="palletCode"></param>
        /// <returns></returns>
        [HttpPost, HttpGet, Route("AssignYLRoadwayNo"), AllowAnonymous]
        public WebResponseContent AssignYLRoadwayNo(string palletCode)
        public WebResponseContent AssignYLRoadwayNo(string palletCode,int wide = 0, int thickness = 0, int weight = 0)
        {
            string roadWay= Service.AssignYLRoadwayNo(palletCode);
            string roadWay= Service.AssignYLRoadwayNo(palletCode, wide, thickness, wide);
            if (string.IsNullOrEmpty(roadWay))
            {
                return WebResponseContent.Instance.Error("未找到可分配巷道");
ÏîÄ¿´úÂë/WMS/WMSServices/WIDESEA_WMSServer/Filter/CustomProfile.cs
@@ -83,6 +83,8 @@
            CreateMap<InboundDetailItem, Dt_InboundOrderDetail>().ForMember(x => x.OrderQuantity, b => b.MapFrom(b => b.MaterialQty)).ForMember(x => x.OrderDetailStatus, b => b.MapFrom(b => InOrderStatusEnum.未开始.ObjToInt())).ForMember(x => x.MaterialThick, b => b.MapFrom(b => b.Thickness)).ForMember(x => x.MaterialWide, b => b.MapFrom(b => b.Wide)).ForMember(x => x.MaterialWeight, b => b.MapFrom(b => b.Weight)).ForMember(x => x.OrderQuantity, b => b.MapFrom(b => b.MaterialQty));
            //博思通缓存采购转换
            CreateMap<Dt_InboundOrderDetail, Dt_YLInboundCache>().ForMember(x => x.Id, b => b.MapFrom(b => 0)).ForMember(x => x.BindStatus, b => b.MapFrom(b => WhetherEnum.False.ObjToInt())).ForMember(x => x.RfidCode, b => b.MapFrom(b => "")).ForMember(x => x.MaterialNo, b => b.MapFrom(b => b.MaterialCode)).ForMember(x => x.InvOrg, b => b.MapFrom(b => MaterielInvOrgEnum.新厂.ToString()));
            //二期缓存采购转换
            CreateMap<Dt_PurchaseOrderDetail, Dt_YLInboundCache>().ForMember(x => x.Id, b => b.MapFrom(b => 0)).ForMember(x => x.BindStatus, b => b.MapFrom(b => WhetherEnum.False.ObjToInt())).ForMember(x => x.RfidCode, b => b.MapFrom(b => "")).ForMember(x => x.MaterialNo, b => b.MapFrom(b => b.MaterialCode)).ForMember(x => x.InvOrg, b => b.MapFrom(b => MaterielInvOrgEnum.新厂.ToString())).ForMember(x => x.MaterialWide, b => b.MapFrom(b => b.PurchaseDetailWide)).ForMember(x => x.MaterialThick, b => b.MapFrom(b => b.PurchaseDetailThickness)).ForMember(x => x.ProcurementLength, b => b.MapFrom(b => b.PurchaseDetailQuantity)).ForMember(x => x.DeliveryQty, b => b.MapFrom(b => b.PurchaseDetailWeight));
            //博思通出库详情老厂出库线体缓存转换
            CreateMap<Dt_OutStockLockInfo, Dt_OutLineView>().ForMember(x => x.Id, b => b.MapFrom(b => 0));
        }
ÏîÄ¿´úÂë/ÁúÀûµÃPDA/common/config.js
@@ -1,6 +1,6 @@
let config = {
    baseUrl: 'http://192.168.35.3:9283',
    //baseUrl: 'http://127.0.0.1:9293',
    //baseUrl: 'http://192.168.35.3:9283',
    baseUrl: 'http://127.0.0.1:9293',
    urls: [
        'http://192.168.35.3:9283',
        'http://192.168.35.3:9283'
ÏîÄ¿×ÊÁÏ/½Ó¿ÚЭÒé/WMSÎĵµ20251119.docx
Binary files differ
ÏîÄ¿×ÊÁÏ/½Ó¿ÚЭÒé/WMSÎĵµ20251216.docx
Binary files differ
ÏîÄ¿×ÊÁÏ/½Ó¿ÚЭÒé/²©Ë¹Í¨ÀûÍØ½Ó¿Ú.V2.xlsx
Binary files differ