ce7315f883bd198a5b7054f8afed741c9cbb560e..88676143aeceaeec3bd108f9cd609c4f3470ba96
10 天以前 wangxinhui
Merge branch 'master' of http://115.159.85.185:8098/r/Mei...
886761 对比 | 目录
10 天以前 wangxinhui
测试架货位优化,辅料优化等
2f281d 对比 | 目录
2025-07-30 helongyang
更新优化
753361 对比 | 目录
已添加1个文件
已修改25个文件
已删除1个文件
402 ■■■■■ 文件已修改
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Controllers/AGV/CTU_AGVController .cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/PP仓/AGV_PPExtend.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/PP仓/StackerCraneJob_PP.cs 102 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/干膜仓/StackerCraneJob_GM.cs 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/成品仓/AGV_CPExtend.cs 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/成品仓/ConveyorLineJob_CP.cs 42 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/板材仓/ConveyorLineJob_BC.cs 63 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/测试架仓/StackerCraneJob_CSJ.cs 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/辅料仓/AGV_FLExtend.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/辅料仓/ConveyorLineJob_FL.cs 21 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/阻焊仓/StackerCraneJob_ZH.cs 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSClient/src/extension/outbound/extend/SelectedStock.vue 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSClient/src/views/taskinfo/task.vue 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSClient/src/views/taskinfo/task_hty.vue 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/Service/AssignLocation/LocationInfoService_CSJ.cs 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/Service/LocationInfoService_Common.cs 20 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/TaskInfo/Dt_Task.cs 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/AssignInboundTaskLocation_BC.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/MesProductService.cs 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/MesTaskService.cs 20 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService_Inbound.cs 30 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService_Outbound.cs 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/TaskInfo/TaskController.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Properties/PublishProfiles/FolderProfile2.pubxml 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目资料/接口文档/海康AGV/终点变更目标点接口文档.docx 补丁 | 查看 | 原始文档 | blame | 历史
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Controllers/AGV/CTU_AGVController .cs
@@ -129,7 +129,7 @@
                        ForceCancel="1",
                        MatterArea= task.CurrentAddress,
                        TaskCode=task.AgvTaskNum,
                        ReqCode = DateTime.Now.ToString("yyyyMMddHHmmss") + task.AgvTaskNum,
                        ReqCode = DateTime.Now.ToString("yyMMddHHmmss") + task.AgvTaskNum,
                        ReqTime= DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"),
                    };
                    WebResponseContent content = _taskService.AgvBoxApplyPass(agvCTUCancel);
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs
@@ -287,12 +287,12 @@
                                if (item.RoadWay.Contains("AGV_FL")|| (item.RoadWay.Contains("AGV_CP") && taskTypeGroup == TaskTypeGroup.OutbondGroup))
                                {
                                    task.DeviceCode = item.RoadWay;
                                    task.AgvTaskNum = item.RoadWay + DateTime.Now.ToString("yyyyMMdd") + item.TaskNum;
                                    task.AgvTaskNum = item.RoadWay + DateTime.Now.ToString("yyMMdd") + item.TaskNum;
                                }
                                else if(item.RoadWay.Contains("AGV_CP") && taskTypeGroup == TaskTypeGroup.InboundGroup)
                                {
                                    task.DeviceCode = stationManger.StationDeviceCode;
                                    task.AgvTaskNum = task.Roadway + DateTime.Now.ToString("yyyyMMdd") + item.TaskNum;
                                    task.AgvTaskNum = task.Roadway + DateTime.Now.ToString("yyMMdd") + item.TaskNum;
                                }
                                else if (item.RoadWay.Contains("PP") && taskTypeGroup == TaskTypeGroup.OutbondGroup)
                                {
@@ -313,7 +313,7 @@
                                {
                                    task.NextAddress = routerSelect.NextPosi;
                                    task.DeviceCode = routerSelect.ChildPosi;
                                    task.AgvTaskNum = item.RoadWay + DateTime.Now.ToString("yyyyMMdd") + item.TaskNum;
                                    task.AgvTaskNum = item.RoadWay + DateTime.Now.ToString("yyMMdd") + item.TaskNum;
                                }
                                else
                                {
@@ -340,7 +340,7 @@
                    {
                        if (taskTypeGroup == TaskTypeGroup.OutbondGroup)
                        {
                            task.AgvTaskNum = item.AGVArea + DateTime.Now.ToString("yyyyMMdd") + item.TaskNum;
                            task.AgvTaskNum = item.AGVArea + DateTime.Now.ToString("yyMMdd") + item.TaskNum;
                            List<Dt_Router> routers = routersAll.Where(x => x.InOutType == item.TaskType && item.AGVArea == x.NextPosi).ToList();
                            if (routers.FirstOrDefault() == null)
                            {
@@ -362,7 +362,7 @@
                        {
                            if (task.Roadway!="SC01_ZH")
                            {
                                task.AgvTaskNum = item.AGVArea + DateTime.Now.ToString("yyyyMMdd") + item.TaskNum;
                                task.AgvTaskNum = item.AGVArea + DateTime.Now.ToString("yyMMdd") + item.TaskNum;
                            }
                            List<Dt_Router> routers = routersAll.Where(x => x.InOutType == item.TaskType && item.AGVArea == x.StartPosi).ToList();
                            if (routers.FirstOrDefault() == null)
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/PP²Ö/AGV_PPExtend.cs
@@ -27,7 +27,7 @@
                        AgvTaskDTO TaskDTO = new AgvTaskDTO()
                        {
                            TaskCode = task.AgvTaskNum,
                            ReqCode = DateTime.Now.ToString("yyyyMMddHHmmss") + task.AgvTaskNum,
                            ReqCode = DateTime.Now.ToString("yyMMddHHmmss") + task.AgvTaskNum,
                            TaskTyp = task.TaskType < TaskTypeEnum.Inbound.ObjToInt() ? "FLC" : "FLR",
                            ctnrCode = task.PalletCode,
                            PositionCodePath = new List<CodePath>()
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/PP²Ö/StackerCraneJob_PP.cs
@@ -21,27 +21,37 @@
using WIDESEAWCS_Tasks.StackerCraneJob;
using WIDESEAWCS_Tasks;
using WIDESEAWCS_Core;
using SqlSugar.Extensions;
using WIDESEAWCS_Tasks.ConveyorLineJob;
using Newtonsoft.Json;
using WIDESEAWCS_Common.APIEnum;
using WIDESEAWCS_Core.Helper;
using WIDESEAWCS_DTO.TaskInfo;
using WIDESEAWCS_Core.Caches;
using AutoMapper;
namespace WIDESEAWCS_Tasks
{
    [DisallowConcurrentExecution]
    public class StackerCraneJob_PP : JobBase, IJob
    {
        private readonly IMapper _mapper;
        private readonly ICacheService _cacheService;
        private readonly ITaskService _taskService;
        private readonly ITaskExecuteDetailService _taskExecuteDetailService;
        private readonly ITaskRepository _taskRepository;
        private readonly IRouterService _routerService;
        private readonly IStationMangerRepository _stationMangerRepository;
        private List<Dt_ApiInfo> apiInfos;
        public StackerCraneJob_PP(ITaskService taskService, ITaskExecuteDetailService taskExecuteDetailService, ITaskRepository taskRepository, IRouterService routerService, IStationMangerRepository stationMangerRepository)
        public StackerCraneJob_PP(IMapper mapper, ITaskService taskService, ITaskExecuteDetailService taskExecuteDetailService, ITaskRepository taskRepository, IRouterService routerService, IStationMangerRepository stationMangerRepository, ICacheService cacheService)
        {
            _taskService = taskService;
            _taskExecuteDetailService = taskExecuteDetailService;
            _taskRepository = taskRepository;
            _routerService = routerService;
            _stationMangerRepository = stationMangerRepository;
            _cacheService = cacheService;
            _mapper=mapper;
        }
        public Task Execute(IJobExecutionContext context)
@@ -192,25 +202,95 @@
                    }
                }
            }
            //判断移库
            if (task != null && task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.OutbondGroup)
            {
                if (OutTaskStationIsOccupied(task) != null || true)
                if (OutTaskStationIsOccupied(task) == null)
                {
                    return task;
                }
                else
                {
                    List<string> otherOutStaionCodes = _routerService.QueryNextRoutes(commonStackerCrane.DeviceCode, task.NextAddress).Select(x => x.ChildPosi).ToList();
                    bool flag = false;
                    List<string> otherOutStaionCodes = _routerService.QueryNextRoutes(commonStackerCrane.DeviceCode, task.NextAddress, task.TaskType).Select(x => x.ChildPosi).ToList();
                    List<Dt_Task> tasks = _taskService.QueryStackerCraneOutTasks(commonStackerCrane.DeviceCode, otherOutStaionCodes);
                    foreach (var item in tasks)
                    {
                        if (OutTaskStationIsOccupied(task) != null)
                        {
                            return task;
                            flag = true;
                            break;
                        }
                    }
                    task = _taskService.QueryStackerCraneInTask(commonStackerCrane.DeviceCode);
                    if (!flag)
                    {
                        task = _taskService.QueryStackerCraneInTask(commonStackerCrane.DeviceCode);
                    }
                }
            }
            if (task != null && task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.OutbondGroup)
            {
                string? url = apiInfos.FirstOrDefault(x => x.ApiCode == APIEnum.WMSIsReloaction.ToString())?.ApiAddress;
                if (string.IsNullOrEmpty(url))
                {
                    _taskExecuteDetailService.AddTaskExecuteDetail(task.TaskNum, $"未找到WMS移库判断接口");
                    WriteError(commonStackerCrane.DeviceCode, $"未找到WMS移库判断接口");
                    _taskService.UpdateTaskExceptionMessage(task.TaskNum, $"未找到WMS移库判断接口");
                    return null;
                }
                string response = HttpHelper.Post($"{url}?taskNum={task.TaskNum}&locationCode={task.CurrentAddress}", "");//todo è°ƒç”¨WMS任务完成方法
                if (string.IsNullOrEmpty(response))
                {
                    _taskExecuteDetailService.AddTaskExecuteDetail(task.TaskNum, $"移库接口调用错误");
                    WriteError(commonStackerCrane.DeviceCode, $"移库接口调用错误");
                    _taskService.UpdateTaskExceptionMessage(task.TaskNum, $"移库接口调用错误");
                    return null;
                }
                WebResponseContent? responseContent = JsonConvert.DeserializeObject<WebResponseContent>(response);
                if (responseContent == null || !responseContent.Status)
                {
                    _taskExecuteDetailService.AddTaskExecuteDetail(task.TaskNum, $"移库接口调用错误");
                    WriteError(commonStackerCrane.DeviceCode, $"移库接口调用错误");
                    _taskService.UpdateTaskExceptionMessage(task.TaskNum, $"移库接口调用错误");
                    return null;
                }
                WMSTaskDTO? taskDTO = JsonConvert.DeserializeObject<WMSTaskDTO>(responseContent.Data.Serialize());
                if (taskDTO == null)
                {
                    _taskExecuteDetailService.AddTaskExecuteDetail(task.TaskNum, $"移库接口调用错误");
                    WriteError(commonStackerCrane.DeviceCode, $"移库接口调用错误");
                    _taskService.UpdateTaskExceptionMessage(task.TaskNum, $"移库接口调用错误");
                    return null;
                }
                if (task.TaskNum == taskDTO.TaskNum)
                {
                    return task;
                }
                else
                {
                    Dt_Task reloTask = _mapper.Map<Dt_Task>(taskDTO);
                    //判断移库货位任务是否已存在,如存在先执行
                    Dt_Task existTask = _taskService.QueryStackerExistTask(reloTask.PalletCode, reloTask.SourceAddress);
                    if (existTask != null && existTask.TaskState == (int)TaskStatusEnum.SC_Execute)
                    {
                        return existTask;
                    }
                    else if (existTask != null && existTask.TaskState != (int)TaskStatusEnum.SC_Execute)
                    {
                        WriteError(commonStackerCrane.DeviceCode, $"任务{task.TaskNum}浅货位任务{existTask.TaskNum}任务状态不为堆垛待执行");
                        _taskService.UpdateTaskExceptionMessage(task.TaskNum, $"任务{task.TaskNum}浅货位任务{existTask.TaskNum}任务状态不为堆垛待执行");
                        return null;
                    }
                    else
                    {
                        reloTask.TaskState = TaskStatusEnum.SC_Execute.ObjToInt();
                        reloTask.CurrentAddress = taskDTO.SourceAddress;
                        reloTask.NextAddress = taskDTO.TargetAddress;
                        reloTask.DeviceCode = task.DeviceCode;
                        reloTask.TaskType = TaskTypeEnum.Relocation.ObjToInt();
                        int taskId = _taskRepository.AddData(reloTask);
                        reloTask.TaskId = taskId;
                    }
                    return reloTask;
                }
            }
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/¸ÉĤ²Ö/StackerCraneJob_GM.cs
@@ -295,6 +295,8 @@
                    }
                    else if (existTask != null && existTask.TaskState != (int)TaskStatusEnum.SC_Execute)
                    {
                        WriteError(commonStackerCrane.DeviceCode, $"任务{task.TaskNum}浅货位任务{existTask.TaskNum}任务状态不为堆垛待执行");
                        _taskService.UpdateTaskExceptionMessage(task.TaskNum, $"任务{task.TaskNum}浅货位任务{existTask.TaskNum}任务状态不为堆垛待执行");
                        return null;
                    }
                    else
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/³ÉÆ·²Ö/AGV_CPExtend.cs
@@ -36,7 +36,7 @@
                            AgvTaskDTO taskDTO = new AgvTaskDTO()
                            {
                                TaskCode = task.AgvTaskNum,
                                ReqCode = DateTime.Now.ToString("yyyyMMdd") + task.AgvTaskNum,
                                ReqCode = DateTime.Now.ToString("yyMMdd") + task.AgvTaskNum,
                                TaskTyp = task.TaskType < TaskTypeEnum.Inbound.ObjToInt() ? "CPC" : "CPR",
                                ctnrCode = task.PalletCode,
                                PositionCodePath = new List<CodePath>()
@@ -104,7 +104,7 @@
                            AgvTaskDTO taskDTO = new AgvTaskDTO()
                            {
                                TaskCode = task.AgvTaskNum,
                                ReqCode = DateTime.Now.ToString("yyyyMMdd") + task.AgvTaskNum,
                                ReqCode = DateTime.Now.ToString("yyMMdd") + task.AgvTaskNum,
                                TaskTyp = "CP",
                                ctnrCode = task.PalletCode,
                                PositionCodePath = new List<CodePath>()
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/³ÉÆ·²Ö/ConveyorLineJob_CP.cs
@@ -157,48 +157,6 @@
                    }
                }
                //Dt_StationManger? dt_StationManger = stationMangers.FirstOrDefault(x => x.StationType == StationTypeEnum.StationType_ProductBackTake.ObjToInt());
                //if (dt_StationManger != null)
                //{
                //    DeviceProDTO? deviceProWrite = device.DeviceProDTOs.Where(x => x.DeviceChildCode == dt_StationManger.StationCode && x.DeviceProParamType == nameof(W_ConveyorLineCPDB)).OrderBy(x => x.DeviceProOffset).FirstOrDefault();
                //    List<Dt_StationManger> ProductBackStations = stationMangers.Where(x => x.StationType == StationTypeEnum.StationType_ProductBack.ObjToInt()).ToList();
                //    for (int i = 0; i < ProductBackStations.Count(); i++)
                //    {
                //        short isCanTake = device.GetValue<GroundStationDBName, short>(GroundStationDBName.R_IsCanTake, dt_StationManger.StationCode);
                //        Dt_StationManger stationManger = ProductBackStations[i];
                //        string startDb = "DB29.";
                //        short stationCurrentStatus = device.Communicator.Read<short>(startDb + stationManger.Remark.ToString());
                //        short stationEndStatus = device.Communicator.Read<short>(startDb + (stationManger.Remark.ObjToInt() + 2).ToString());
                //        bool endStatus = true;
                //        if ((i != 2 && i != 5 && i != 8))
                //        {
                //            endStatus = (stationEndStatus == 1);
                //        }
                //        //读取线体段状态
                //        if (isCanTake == 1 && stationCurrentStatus == 1 && stationManger.IsOccupied==0 && endStatus)
                //        {
                //            device.SetValue(W_ConveyorLineCPDB.StartPos, dt_StationManger.StationCode, dt_StationManger.StationCode);
                //            device.SetValue(W_ConveyorLineCPDB.EndPos, stationManger.AGVStationCode, dt_StationManger.StationCode);
                //            device.SetValue(W_ConveyorLineCPDB.Barcode, "C00001", dt_StationManger.StationCode);
                //            device.SetValue(W_ConveyorLineCPDB.TaskNum, DateTime.Now.ToString("yyMMddHHmmss"), dt_StationManger.StationCode);
                //            device.SetValue(W_ConveyorLineCPDB.WorkType, 1, dt_StationManger.StationCode);
                //            device.SetValue(W_ConveyorLineCPDB.WorkMode, 1, dt_StationManger.StationCode);
                //            device.SetValue(W_ConveyorLineCPDB.CheckPos, 1, dt_StationManger.StationCode);
                //            //启动指令
                //            device.SetValue(W_ConveyorLineCPDB.ConveyArrival, 1, dt_StationManger.StationCode);
                //            stationManger.IsOccupied = 1;
                //            _stationMangerRepository.UpdateData(stationManger);
                //            Thread.Sleep(2000);
                //            return Task.CompletedTask;
                //        }
                //        else if(stationManger.IsOccupied == 1 && (stationCurrentStatus == 3))
                //        {
                //            stationManger.IsOccupied = 0;
                //            _stationMangerRepository.UpdateData(stationManger);
                //        }
                //    }
                //}
            }
            return Task.CompletedTask;
        }
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/°å²Ä²Ö/ConveyorLineJob_BC.cs
@@ -99,6 +99,7 @@
                        ConveyorLineSignal conveyorLineSignalRead = conveyorLineInfoRead.Signal.ByteToBoolObject<ConveyorLineSignal>();
                        ConveyorLineSignal conveyorLineSignalWrite = conveyorLineInfoWrite.Signal.ByteToBoolObject<ConveyorLineSignal>();
                        //满托拉载出
                        if (item.StationType == StationTypeEnum.StationType_PakcPallet.ObjToInt())
                        {
                            if (conveyorLineSignalRead.STB && !conveyorLineSignalWrite.ACK)
@@ -121,14 +122,6 @@
                                Dt_Task task = _taskRepository.QueryFirst(x => x.CurrentAddress == item.StationCode && _taskService.TaskInboundTypes.Contains(x.TaskType) /*&& x.DeviceCode == item.StationDeviceCode*/ && (x.TaskState == TaskStatusEnum.New.ObjToInt()) && x.WarehouseId == warehouseDevice.WarehouseId);
                                if (task != null && conveyorLineInfoWrite.Spare2 == 0 && conveyorLineStatus.Goods)
                                {
                                    //List<string> stations = _routerExtension.GetEndPoint(item.StationCode, TaskTypeEnum.Inbound.ObjToInt()).Select(x => x.NextPosi).ToList();
                                    ////分配巷道
                                    //WebResponseContent responseContent = _taskService.RequestWMSAssignRoadway(stations, task.TaskNum, conveyorLineInfoRead.Spare2);
                                    //if (responseContent.Status)
                                    //{
                                    //    device.SetValue(W_ConveyorLineDB.Spare2, 1, item.StationCode);
                                    //    _taskService.UpdateTask(task, TaskStatusEnum.Line_Execute, deviceCode: item.StationDeviceCode, roadwayNo: responseContent.Data.ToString() ?? "");
                                    //}
                                    device.SetValue(W_ConveyorLineDB.Spare2, 1, item.StationCode);
                                    _taskService.UpdateTask(task, TaskStatusEnum.Line_Execute, deviceCode: item.StationDeviceCode);
                                }
@@ -146,7 +139,7 @@
                            {
                                if (conveyorLineInfoRead.TaskNum == 0 && !string.IsNullOrEmpty(conveyorLineInfoRead.Barcode))//采购入库
                                {
                                    #region ä»»åŠ¡å·ä¸º0,且有托盘号,则是采购入库
                                    #region ä»»åŠ¡å·ä¸º0,且有托盘号,则是人工放货入库
                                    Dt_Task task = _taskRepository.QueryFirst(x => x.CurrentAddress == item.StationCode && _taskService.TaskInboundTypes.Contains(x.TaskType) && x.DeviceCode == item.StationDeviceCode && (x.TaskState == TaskStatusEnum.Line_Execute.ObjToInt()) && x.PalletCode == conveyorLineInfoRead.Barcode && x.WarehouseId == warehouseDevice.WarehouseId);
                                    if (task != null)
                                    {
@@ -228,19 +221,15 @@
                                else//生产退库 //换巷道入库
                                {
                                    #region ç”Ÿäº§é€€åº“,带任务号查询任务
                                    Dt_Task task = _taskRepository.QueryFirst(x => x.TaskNum == conveyorLineInfoRead.TaskNum && x.NextAddress == item.StationCode && _taskService.TaskInboundTypes.Contains(x.TaskType) && x.WarehouseId == warehouseDevice.WarehouseId && x.TaskState == TaskStatusEnum.Line_Execute.ObjToInt()); // å¸¦ä»»åŠ¡å·æŸ¥è¯¢ä»»åŠ¡
                                    Dt_Task taskIn = _taskRepository.QueryFirst(x => x.TaskNum == conveyorLineInfoRead.TaskNum && _taskService.TaskInboundTypes.Contains(x.TaskType) && x.DeviceCode == item.StationDeviceCode && x.NextAddress == item.StationCode && x.WarehouseId == warehouseDevice.WarehouseId && x.TaskState == TaskStatusEnum.Line_Executing.ObjToInt()); // å¸¦ä»»åŠ¡å·æŸ¥è¯¢ä»»åŠ¡
                                    if (task != null)
                                    Dt_Task task = _taskRepository.QueryFirst(x => x.TaskNum == conveyorLineInfoRead.TaskNum && x.NextAddress == item.StationCode && _taskService.TaskInboundTypes.Contains(x.TaskType) && x.WarehouseId == warehouseDevice.WarehouseId && x.TaskState == TaskStatusEnum.Line_Execute.ObjToInt()); // å¸¦ä»»åŠ¡å·æŸ¥è¯¢ä»»åŠ¡ é€€æ–™ä»»åŠ¡
                                    Dt_Task taskIn = _taskRepository.QueryFirst(x => x.TaskNum == conveyorLineInfoRead.TaskNum && _taskService.TaskInboundTypes.Contains(x.TaskType) && x.DeviceCode == item.StationDeviceCode && x.NextAddress == item.StationCode && x.WarehouseId == warehouseDevice.WarehouseId && x.TaskState == TaskStatusEnum.Line_Executing.ObjToInt()); // å¸¦ä»»åŠ¡å·æŸ¥è¯¢ä»»åŠ¡ å…¥åº“
                                    if (task != null) //退料任务 èµ·ç‚¹å…¥åº“站台
                                    {
                                        List<string> stations = _routerExtension.GetEndPoint(item.StationCode, TaskTypeEnum.Inbound.ObjToInt()).Select(x => x.NextPosi).ToList();
                                        WebResponseContent responseContent = _taskService.RequestWMSAssignRoadway(stations, task.TaskNum, conveyorLineInfoRead.Spare2);
                                        if (responseContent.Status)
                                        {
                                            //string currentAddress = task.CurrentAddress;
                                            //string nextAddress = task.NextAddress;
                                            //string targetAddress = task.TargetAddress;
                                            string roadwayNo = task.Roadway;
                                            string currentAddress = task.CurrentAddress;
                                            string nextAddress = task.NextAddress;
                                            string targetAddress = task.TargetAddress;
@@ -259,7 +248,7 @@
                                                continue;
                                            }
                                            if (router.IsEnd)
                                            if (router.IsEnd) //当前起点入库站台直接入库
                                            {
                                                string? targetLoca = _taskService.RequestAssignLocationByHeight(task.TaskNum, responseContent.Data.ToString(), conveyorLineInfoRead.Spare2);
                                                if (!string.IsNullOrEmpty(targetLoca))
@@ -279,7 +268,7 @@
                                                    continue;
                                                }
                                            }
                                            else
                                            else //换巷道分配其他巷道的入库站台
                                            {
                                                //task.NextAddress可能是router.NextPosi
                                                roadwayNo = responseContent.Data.ToString();
@@ -360,50 +349,12 @@
                                    device.SetValue(W_ConveyorLineDB.Spare1, ConveyorWorkTypeEnum.Outbound.ObjToInt(), item.StationCode);
                                    device.SetValue(W_ConveyorLineDB.STB, true, item.StationCode);
                                }
                                //else //调拨使用
                                //{
                                //    device.SetValue(W_ConveyorLineDB.STB, true, item.StationCode);
                                //}
                                //{
                                //    task = _taskRepository.QueryFirst(x => x.CurrentAddress == item.StationCode && _taskService.TaskInboundTypes.Contains(x.TaskType) && string.IsNullOrEmpty(x.DeviceCode) && x.TaskState == TaskStatusEnum.New.ObjToInt() && x.WarehouseId == warehouseDevice.WarehouseId);
                                //    if (task != null)
                                //    {
                                //        Dt_StationManger stationManger = _stationMangerRepository.QueryFirst(x => x.StationCode == task.CurrentAddress);
                                //        if (stationManger != null)
                                //        {
                                //            _taskService.UpdateTask(task, TaskStatusEnum.SC_Execute, deviceCode: stationManger.StackerCraneCode, currentAddress: stationManger.StackerCraneStationCode, nextAddress: task.TargetAddress);
                                //        }
                                //    }
                                //}
                                //else
                            }
                            else if (!conveyorLineSignalRead.STB && conveyorLineSignalRead.ACK && conveyorLineStatus.Online && conveyorLineStatus.Goods && !conveyorLineStatus.Alarm && conveyorLineSignalWrite.STB && !conveyorLineSignalWrite.ACK)
                            {
                                device.SetValue(W_ConveyorLineDB.STB, false, item.StationCode);
                            }
                        }
                        //else if (item.StationType == StationTypeEnum.StationType_InStartAndOutEnd.ObjToInt())
                        //{
                        //    if (!conveyorLineSignalWrite.ACK && conveyorLineSignalRead.STB && conveyorLineStatus.Goods && !conveyorLineStatus.Alarm)
                        //    {
                        //        if (conveyorLineInfoRead.TaskNum == 0 && !string.IsNullOrEmpty(conveyorLineInfoRead.Barcode))//退料入库
                        //        {
                        //        }
                        //        else//出库完成
                        //        {
                        //        }
                        //    }
                        //    else if (conveyorLineSignalWrite.STB && conveyorLineSignalRead.ACK && !conveyorLineStatus.Alarm)
                        //    {
                        //        device.SetValue(W_ConveyorLineDB.STB, false, item.StationCode);
                        //    }
                        //    else if (!conveyorLineSignalRead.STB && conveyorLineSignalWrite.ACK && !conveyorLineStatus.Alarm)
                        //    {
                        //        device.SetValue(W_ConveyorLineDB.ACK, false, item.StationCode);
                        //    }
                        //}
                    }
                    else
                    {
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/²âÊԼܲÖ/StackerCraneJob_CSJ.cs
@@ -205,7 +205,7 @@
                    }
                }
            }
            //判断移库
            if (task != null && task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.OutbondGroup)
            {
                if (OutTaskStationIsOccupied(task) == null)
@@ -278,6 +278,8 @@
                    }
                    else if (existTask != null && existTask.TaskState != (int)TaskStatusEnum.SC_Execute)
                    {
                        WriteError(commonStackerCrane.DeviceCode, $"任务{task.TaskNum}浅货位任务{existTask.TaskNum}任务状态不为堆垛待执行");
                        _taskService.UpdateTaskExceptionMessage(task.TaskNum, $"任务{task.TaskNum}浅货位任务{existTask.TaskNum}任务状态不为堆垛待执行");
                        return null;
                    }
                    else
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/¸¨ÁϲÖ/AGV_FLExtend.cs
@@ -39,7 +39,7 @@
                        AgvTaskDTO taskDTO = new AgvTaskDTO()
                        {
                            TaskCode = task.AgvTaskNum,
                            ReqCode = DateTime.Now.ToString("yyyyMMdd") + task.AgvTaskNum,
                            ReqCode = DateTime.Now.ToString("yyMMdd") + task.AgvTaskNum,
                            TaskTyp = task.TaskType < TaskTypeEnum.Inbound.ObjToInt() ? "FLC" : "FLR",
                            ctnrCode = task.PalletCode,
                            PositionCodePath = new List<CodePath>()
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/¸¨ÁϲÖ/ConveyorLineJob_FL.cs
@@ -75,15 +75,28 @@
                        {
                            R_ConveyorLineFLInfo conveyorLineInfoRead = device.Communicator.ReadCustomer<R_ConveyorLineFLInfo>(deviceProRead.DeviceProAddress);
                            bool conveyArrivaled = device.GetValue<R_ConveyorLineFLDB, bool>(R_ConveyorLineFLDB.ConveyArrivaled, item.StationCode);
                            if (conveyArrivaled)
                            //输送线取料口到位更新任务状态
                            if (conveyorLineInfoRead!=null && conveyArrivaled)
                            {
                                Dt_Task newTask = _taskRepository.QueryFirst(x => x.TaskNum == conveyorLineInfoRead.TaskNum.ObjToInt() && x.PalletCode == conveyorLineInfoRead.Barcode && x.TaskState == TaskStatusEnum.New.ObjToInt() && x.DeviceCode == item.StackerCraneCode && !string.IsNullOrEmpty(x.DeviceCode));
                                if (newTask != null)
                                Dt_Task LineTask = _taskRepository.QueryFirst(x => x.TaskNum == conveyorLineInfoRead.TaskNum.ObjToInt() && x.PalletCode == conveyorLineInfoRead.Barcode && x.TaskState == TaskStatusEnum.Line_Executing.ObjToInt() && x.DeviceCode == item.StackerCraneCode);
                                if (LineTask != null)
                                {
                                    _taskService.UpdateTask(newTask, TaskStatusEnum.AGV_Execute);
                                    _taskService.UpdateTask(LineTask, TaskStatusEnum.AGV_Execute);
                                }
                                WriteError(item.StationName, $"入库到位信号,托盘号{conveyorLineInfoRead.Barcode},任务号:{conveyorLineInfoRead.TaskNum}");
                            }
                            //发送输送线任务
                            Dt_Task? newTask = _taskRepository.QueryData(x => x.TaskState == TaskStatusEnum.New.ObjToInt() && x.DeviceCode == item.StackerCraneCode && x.TaskType>=TaskTypeEnum.Inbound.ObjToInt()).OrderBy(x=>x.TaskNum).FirstOrDefault();
                            if (newTask != null)
                            {
                                device.SetValue(W_ConveyorLineFLDB.Barcode, newTask.PalletCode, item.StationCode);
                                Thread.Sleep(500);
                                device.SetValue(W_ConveyorLineFLDB.TaskNum, newTask.TaskNum, item.StationCode);
                                Thread.Sleep(500);
                                device.SetValue(GroundStationDBName.W_PutFinish, true, item.StationCode);
                                _taskService.UpdateTask(newTask, TaskStatusEnum.Line_Executing);
                            }
                        }
                    }
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/×躸²Ö/StackerCraneJob_ZH.cs
@@ -276,6 +276,8 @@
                    }
                    else if (existTask != null && existTask.TaskState != (int)TaskStatusEnum.SC_Execute)
                    {
                        WriteError(commonStackerCrane.DeviceCode, $"任务{task.TaskNum}浅货位任务{existTask.TaskNum}任务状态不为堆垛待执行");
                        _taskService.UpdateTaskExceptionMessage(task.TaskNum, $"任务{task.TaskNum}浅货位任务{existTask.TaskNum}任务状态不为堆垛待执行");
                        return null;
                    }
                    else
´úÂë¹ÜÀí/WMS/WIDESEA_WMSClient/src/extension/outbound/extend/SelectedStock.vue
@@ -166,6 +166,20 @@
          width: 180,
        },
        {
        prop: "productionDate",
        title: "生产日期",
        type: "string",
        width: 160,
        },
        {
          prop: "effectiveDate",
          title: "有效期",
          type: "string",
          width: 160,
        },
        {
          prop: "status",
          title: "状态",
          type: "string",
´úÂë¹ÜÀí/WMS/WIDESEA_WMSClient/src/views/taskinfo/task.vue
@@ -59,7 +59,9 @@
      ],
      [
        { title: "所属仓库", field: "warehouseId",type: "selectList",dataKey: "warehouses",data: [],},
        { title: "物料编号", field: "materielCode",type: "like",}
        { title: "物料编号", field: "materielCode",type: "like",},
        {title: "物料批次",field: "batchNo",type: "like",},
      ],
    ]);
    const columns = ref([
@@ -240,6 +242,13 @@
        width: 100,
        align: "left",
      },
      {
        field: "batchNo",
        title: "物料批次",
        type: "string",
        width: 150,
        align: "left",
      },
    ]);
    const detail = ref({
      cnName: "#detailCnName",
´úÂë¹ÜÀí/WMS/WIDESEA_WMSClient/src/views/taskinfo/task_hty.vue
@@ -59,7 +59,8 @@
      ],
      [
        { title: "所属仓库", field: "warehouseId",type: "selectList",dataKey: "warehouses",data: [],},
        { title: "物料编号", field: "materielCode",type: "like",}
        { title: "物料编号", field: "materielCode",type: "like",},
        {title: "物料批次",field: "batchNo",type: "like",},
      ],
    ]);
    const columns = ref([
@@ -240,6 +241,13 @@
        width: 100,
        align: "left",
      },
      {
        field: "batchNo",
        title: "物料批次",
        type: "string",
        width: 150,
        align: "left",
      },
    ]);
    const detail = ref({
      cnName: "#detailCnName",
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/Service/AssignLocation/LocationInfoService_CSJ.cs
@@ -102,6 +102,7 @@
                        Dt_LocationInfo? locationInfo = GetUsableLocation_CSJ(locationInfos, undefinedTypeEmptyLocation, palletType);
                        if (locationInfo != null)
                        {
                            //同一列同一层存放的货物一致
                            if (locationInfo.Depth < locationInfoDepth.Max(x => x.Depth))
                            {
                                Dt_LocationInfo? locationInfoExist = null;
@@ -166,6 +167,7 @@
                        Dt_LocationInfo? locationInfo = GetUsableLocation_CSJ(locationInfos, definedTypeEmptyLocation, palletType);
                        if (locationInfo != null)
                        {
                            //同一列同一层存放的货物一致
                            if (locationInfo.Depth < locationInfoDepth.Max(x => x.Depth))
                            {
                                Dt_LocationInfo? locationInfoExist = null;
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/Service/LocationInfoService_Common.cs
@@ -464,8 +464,11 @@
            int row = location.Row;
            for (int j = location.Depth + 1; j <= maxDepth; j++)
            {
                row += 1;
                Dt_LocationInfo? locationInfo = locationInfos.FirstOrDefault(x => x.Depth == j && x.Column == location.Column && x.Layer == location.Layer && x.Row == row);
                Dt_LocationInfo? locationInfo = locationInfos.FirstOrDefault(x => x.Depth == j && x.Column == location.Column && x.Layer == location.Layer && x.Row == (row + 1));
                if (j == 3 && (location.RoadwayNo.Contains("CSJ") || location.RoadwayNo.Contains("PP")) && (row == 1 || row == 6))
                {
                    locationInfo = locationInfos.FirstOrDefault(x => x.Depth == j && x.Column == location.Column && x.Layer == location.Layer && (x.Row == row + 2 || x.Row == row - 2));
                }
                if (locationInfo != null)
                {
                    groupLocations.Add(locationInfo);
@@ -474,8 +477,11 @@
            for (int j = location.Depth - 1; j >= 1; j--)
            {
                row -= 1;
                Dt_LocationInfo? locationInfo = locationInfos.FirstOrDefault(x => x.Depth == j && x.Column == location.Column && x.Layer == location.Layer && x.Row == row);
                Dt_LocationInfo? locationInfo = locationInfos.FirstOrDefault(x => x.Depth == j && x.Column == location.Column && x.Layer == location.Layer && x.Row == (row -1));
                if (j == 1 && (location.RoadwayNo.Contains("CSJ") || location.RoadwayNo.Contains("PP")) && (row == 3 || row == 4))
                {
                    locationInfo = locationInfos.FirstOrDefault(x => x.Depth == j && x.Column == location.Column && x.Layer == location.Layer && (x.Row == row + 2 || x.Row == row - 2));
                }
                if (locationInfo != null)
                {
                    groupLocations.Add(locationInfo);
@@ -499,6 +505,10 @@
            for (int j = location.Depth + 1; j <= maxDepth; j++)
            {
                Dt_LocationInfo? locationInfo = locationInfos.FirstOrDefault(x => x.Depth == j && x.Column == location.Column && x.Layer == location.Layer && (x.Row == row + 1 || x.Row == row - 1));
                if (j == 3 && (location.RoadwayNo.Contains("CSJ") || location.RoadwayNo.Contains("PP")) && (row == 1 || row == 6))
                {
                    locationInfo = locationInfos.FirstOrDefault(x => x.Depth == j && x.Column == location.Column && x.Layer == location.Layer && (x.Row == row + 2 || x.Row == row - 2));
                }
                if (locationInfo != null)
                {
                    groupLocations.Add(locationInfo);
@@ -508,7 +518,7 @@
            for (int j = location.Depth - 1; j >= 1; j--)
            {
                Dt_LocationInfo? locationInfo = locationInfos.FirstOrDefault(x => x.Depth == j && x.Column == location.Column && x.Layer == location.Layer && (x.Row == row + 1 || x.Row == row - 1));
                if (j == 1 && location.RoadwayNo.Contains("CSJ") && (row==1 || row==6))
                if (j == 1 && (location.RoadwayNo.Contains("CSJ") || location.RoadwayNo.Contains("PP")) && (row == 3 || row == 4))
                {
                    locationInfo = locationInfos.FirstOrDefault(x => x.Depth == j && x.Column == location.Column && x.Layer == location.Layer && (x.Row == row + 2 || x.Row == row - 2));
                }
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/TaskInfo/Dt_Task.cs
@@ -169,5 +169,12 @@
        [ExporterHeader(DisplayName = "物料数量")]
        [SugarColumn(IsNullable = true, Length = 20, ColumnDescription = "物料数量")]
        public float Quantity { get; set; }
        /// <summary>
        /// ç‰©æ–™æ‰¹æ¬¡
        /// </summary>
        [ImporterHeader(Name = "物料批次")]
        [ExporterHeader(DisplayName = "物料批次")]
        [SugarColumn(IsNullable = true, Length = 50, ColumnDescription = "物料批次")]
        public string BatchNo { get; set; }
    }
}
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/AssignInboundTaskLocation_BC.cs
@@ -225,7 +225,7 @@
                string roadwayNo=string.Empty;
                foreach (var location in locationCounts.OrderBy(x => x.Count))
                {
                    if (location.Count <= 2)
                    if (location.Count <= 5)
                        continue;
                    roadwayNo = location?.RoadwayNo ?? "";
                    break;
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/MesProductService.cs
@@ -74,6 +74,10 @@
                }
                if (bagInfoModel.BatchNo.Substring(0, 3).ToUpper() == "CPK")
                {
                    if (warehouse.WarehouseCode==WarehouseEnum.HA73.ToString())
                    {
                        return content.Error($"研发仓属性不能入平库");
                    }
                    WebResponseContent inProRespone = InPKProStock(bagInfoModel, proDetailsExists, warehouse);
                    if (!inProRespone.Status)
                    {
@@ -165,7 +169,8 @@
                    WarehouseId = warehouse.WarehouseId,
                    PalletType = proStockInfo.PalletType,
                    MaterielCode = proStockInfo.proStockInfoDetails.Where(x => x.ProStockId == proStockInfo.Id).FirstOrDefault()?.ProductCode,
                    Quantity = (float)proStockInfo.proStockInfoDetails.Where(x => x.ProStockId == proStockInfo.Id).Sum(x => x.StockPcsQty)
                    Quantity = (float)proStockInfo.proStockInfoDetails.Where(x => x.ProStockId == proStockInfo.Id).Sum(x => x.StockPcsQty),
                    BatchNo = proStockInfo.proStockInfoDetails.Where(x => x.ProStockId == proStockInfo.Id).FirstOrDefault()?.LotNumber,
                };
                _unitOfWorkManage.BeginTran();
                int taskId = BaseDal.AddData(newTask);
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/MesTaskService.cs
@@ -100,10 +100,12 @@
                    };
                    string MaterielCode = stockInfo.Details.Where(x => x.StockId == stockInfo.Id).FirstOrDefault()?.MaterielCode;
                    float Quantity = (float)stockInfo.Details.Where(x => x.StockId == stockInfo.Id).Sum(x => x.StockQuantity);
                    if (MaterielCode != null && Quantity != null)
                    string BatchNo = stockInfo.Details.Where(x => x.StockId == stockInfo.Id).FirstOrDefault()?.BatchNo;
                    if (MaterielCode != null && Quantity != null && BatchNo != null)
                    {
                        taskOut.MaterielCode = MaterielCode;
                        taskOut.Quantity = Quantity;
                        taskOut.BatchNo = BatchNo;
                    }
                    stockInfo.StockStatus = (int)StockStatusEmun.出库锁定;
                    LocationStatusEnum locationStatus = (LocationStatusEnum)locationInfo.LocationStatus;
@@ -181,10 +183,12 @@
                    };
                    string MaterielCode = stockInfo.Details.Where(x => x.StockId == stockInfo.Id).FirstOrDefault()?.MaterielCode;
                    float Quantity = (float)stockInfo.Details.Where(x => x.StockId == stockInfo.Id).Sum(x => x.StockQuantity);
                    if (MaterielCode != null && Quantity != null)
                    string BatchNo = stockInfo.Details.Where(x => x.StockId == stockInfo.Id).FirstOrDefault()?.BatchNo;
                    if (MaterielCode != null && Quantity != null && BatchNo != null)
                    {
                        taskOut.MaterielCode = MaterielCode;
                        taskOut.Quantity = Quantity;
                        taskOut.BatchNo = BatchNo;
                    }
                    stockInfo.StockStatus = (int)StockStatusEmun.出库锁定;
                    LocationStatusEnum locationStatus = (LocationStatusEnum)locationInfo.LocationStatus;
@@ -264,10 +268,12 @@
                    };
                    string MaterielCode = stockInfo.Details.Where(x => x.StockId == stockInfo.Id).FirstOrDefault()?.MaterielCode;
                    float Quantity = (float)stockInfo.Details.Where(x => x.StockId == stockInfo.Id).Sum(x => x.StockQuantity);
                    if (MaterielCode != null && Quantity != null)
                    string BatchNo = stockInfo.Details.Where(x => x.StockId == stockInfo.Id).FirstOrDefault()?.BatchNo;
                    if (MaterielCode != null && Quantity != null && BatchNo != null)
                    {
                        taskOut.MaterielCode = MaterielCode;
                        taskOut.Quantity = Quantity;
                        taskOut.BatchNo = BatchNo;
                    }
                    stockInfo.StockStatus = (int)StockStatusEmun.出库锁定;
                    LocationStatusEnum locationStatus = (LocationStatusEnum)locationInfo.LocationStatus;
@@ -333,10 +339,12 @@
                };
                string MaterielCode = stockInfo.Details.Where(x => x.StockId == stockInfo.Id).FirstOrDefault()?.MaterielCode;
                float Quantity = (float)stockInfo.Details.Where(x => x.StockId == stockInfo.Id).Sum(x => x.StockQuantity);
                if (MaterielCode != null && Quantity != null)
                string BatchNo = stockInfo.Details.Where(x => x.StockId == stockInfo.Id).FirstOrDefault()?.BatchNo;
                if (MaterielCode != null && Quantity != null && BatchNo != null)
                {
                    taskIn.MaterielCode = MaterielCode;
                    taskIn.Quantity = Quantity;
                    taskIn.BatchNo = BatchNo;
                }
                //更改库存状态
                stockInfo.StockStatus = StockStatusEmun.退库.ObjToInt();
@@ -1059,10 +1067,12 @@
                };
                string MaterielCode = stockInfo.Details.Where(x => x.StockId == stockInfo.Id).FirstOrDefault()?.MaterielCode;
                float Quantity = (float)stockInfo.Details.Where(x => x.StockId == stockInfo.Id).Sum(x => x.StockQuantity);
                if (MaterielCode != null && Quantity != null)
                string BatchNo = stockInfo.Details.Where(x => x.StockId == stockInfo.Id).FirstOrDefault()?.BatchNo;
                if (MaterielCode != null && Quantity != null && BatchNo != null)
                {
                    newTask.MaterielCode = MaterielCode;
                    newTask.Quantity = Quantity;
                    newTask.BatchNo = BatchNo;
                }
                LocationStatusEnum lastStatus = (LocationStatusEnum)locationInfo.LocationStatus;
                _unitOfWorkManage.BeginTran();
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService.cs
@@ -213,6 +213,7 @@
                    PalletType = stockInfo.PalletType,
                    MaterielCode = stockInfo.Details.Where(x => x.StockId == stockInfo.Id).FirstOrDefault()?.MaterielCode,
                    Quantity = (float)stockInfo.Details.Where(x => x.StockId == stockInfo.Id).FirstOrDefault()?.StockQuantity,
                    BatchNo = stockInfo.Details.Where(x => x.StockId == stockInfo.Id).FirstOrDefault()?.BatchNo
                };
                _unitOfWorkManage.BeginTran();
                BaseDal.AddData(newTask);
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService_Inbound.cs
@@ -100,6 +100,7 @@
                        PalletType = stockInfo.PalletType,
                        MaterielCode = stockInfo.Details?.Where(x => x.StockId == stockInfo.Id).FirstOrDefault()?.MaterielCode,
                        Quantity = (float)stockInfo.Details?.Where(x => x.StockId == stockInfo.Id).Sum(x => x.StockQuantity),
                        BatchNo = stockInfo.Details?.Where(x => x.StockId == stockInfo.Id).FirstOrDefault()?.BatchNo
                    };
                    //获取是否存在入库单
                    Dt_InboundOrder? inboundOrder =  null;
@@ -275,7 +276,7 @@
                _stockRepository.StockInfoRepository.AddData(stockInfo);
                _unitOfWorkManage.CommitTran();
                PushTasksToWCS(new List<Dt_Task> { newTask });
                PutFinish(address, newTask.PalletCode, newTask.TaskNum.ToString());
                //PutFinish(address, newTask.PalletCode, newTask.TaskNum.ToString());
                return WebResponseContent.Instance.OK();
            }
            catch (Exception ex)
@@ -395,10 +396,12 @@
                    };
                    string MaterielCodeGMPP = stockInfoPPorGM.Details?.Where(x => x.StockId == stockInfoPPorGM.Id).FirstOrDefault()?.MaterielCode;
                    float QuantityGMPP = (float)stockInfoPPorGM.Details?.Where(x => x.StockId == stockInfoPPorGM.Id).Sum(x => x.StockQuantity);
                    if (MaterielCodeGMPP != null && QuantityGMPP != null)
                    string batchNo = stockInfoPPorGM.Details?.Where(x => x.StockId == stockInfoPPorGM.Id).FirstOrDefault()?.BatchNo;
                    if (MaterielCodeGMPP != null && QuantityGMPP != null && batchNo != null)
                    {
                        newTaskPPorGM.MaterielCode = MaterielCodeGMPP;
                        newTaskPPorGM.Quantity = QuantityGMPP;
                        newTaskPPorGM.BatchNo = batchNo;
                    }
                    //获取是否存在入库单
@@ -469,10 +472,12 @@
                };
                string MaterielCode = stockInfo.Details?.Where(x => x.StockId == stockInfo.Id).FirstOrDefault()?.MaterielCode;
                float Quantity = (float)stockInfo.Details?.Where(x => x.StockId == stockInfo.Id).Sum(x => x.StockQuantity);
                if (MaterielCode != null && Quantity != null)
                string BatchNo = stockInfo.Details?.Where(x => x.StockId == stockInfo.Id).FirstOrDefault()?.BatchNo;
                if (MaterielCode != null && Quantity != null && BatchNo != null)
                {
                    newTask.MaterielCode = MaterielCode;
                    newTask.Quantity = Quantity;
                    newTask.BatchNo = BatchNo;
                }
                //获取是否存在入库单
@@ -533,7 +538,7 @@
                WMSTaskDTO wMSTaskDTO = _mapper.Map<WMSTaskDTO>(newTask);
                PushTasksToWCS(new List<Dt_Task> { newTask });
                if (newTask.WarehouseId == 5) PutFinish(stationCode.ToString(),newTask.PalletCode, newTask.TaskNum.ToString());
                //if (newTask.WarehouseId == 5) PutFinish(stationCode.ToString(),newTask.PalletCode, newTask.TaskNum.ToString());
                return WebResponseContent.Instance.OK(data: wMSTaskDTO);
            }
            catch (Exception ex)
@@ -594,10 +599,12 @@
                };
                string MaterielCode = stockInfo.Details?.Where(x => x.StockId == stockInfo.Id).FirstOrDefault()?.MaterielCode;
                float Quantity = (float)stockInfo.Details?.Where(x => x.StockId == stockInfo.Id).Sum(x => x.StockQuantity);
                if (MaterielCode != null && Quantity != null)
                string BatchNo = stockInfo.Details?.Where(x => x.StockId == stockInfo.Id).FirstOrDefault()?.BatchNo;
                if (MaterielCode != null && Quantity != null && BatchNo != null)
                {
                    newTask.MaterielCode = MaterielCode;
                    newTask.Quantity = (float)Quantity;
                    newTask.Quantity = Quantity;
                    newTask.BatchNo = BatchNo;
                }
                if (stockInfo.StockStatus == StockStatusEmun.手动组盘暂存.ObjToInt())
@@ -634,7 +641,7 @@
                WMSTaskDTO wMSTaskDTO = _mapper.Map<WMSTaskDTO>(newTask);
                PushTasksToWCS(new List<Dt_Task> { newTask });
                if (newTask.WarehouseId == 5) PutFinish(stationCode, newTask.PalletCode, newTask.TaskNum.ToString());
                //if (newTask.WarehouseId == 5) PutFinish(stationCode, newTask.PalletCode, newTask.TaskNum.ToString());
                return WebResponseContent.Instance.OK(data: wMSTaskDTO);
            }
            catch (Exception ex)
@@ -700,10 +707,12 @@
                };
                string MaterielCode = stockInfo.Details?.Where(x => x.StockId == stockInfo.Id).FirstOrDefault()?.MaterielCode;
                float Quantity = (float)stockInfo.Details?.Where(x => x.StockId == stockInfo.Id).Sum(x => x.StockQuantity);
                if (MaterielCode != null && Quantity != null)
                string BatchNo = stockInfo.Details?.Where(x => x.StockId == stockInfo.Id).FirstOrDefault()?.BatchNo;
                if (MaterielCode != null && Quantity != null && BatchNo != null)
                {
                    newTask.MaterielCode = MaterielCode;
                    newTask.Quantity = Quantity;
                    newTask.BatchNo = BatchNo;
                }
                if (stockInfo.StockStatus == StockStatusEmun.手动组盘暂存.ObjToInt())
                {
@@ -921,6 +930,7 @@
                    WarehouseId = warehouse.WarehouseId,
                    MaterielCode = mesLotInfo.Product,
                    Quantity = (float)mesLotInfo.Qty,
                    BatchNo = mesLotInfo.LotNo
                };
                _unitOfWorkManage.BeginTran();
                Db.InsertNav(stockInfo).Include(x => x.Details).ExecuteCommand();
@@ -1033,7 +1043,9 @@
                    WarehouseId = warePoint.WarehouseId,
                    PalletType = proStockInfo.PalletType,
                    MaterielCode = proStockInfo.proStockInfoDetails?.Where(x => x.ProStockId == proStockInfo.Id).FirstOrDefault()?.ProductCode,
                    Quantity = (float)proStockInfo.proStockInfoDetails?.Where(x => x.ProStockId == proStockInfo.Id).Sum(x => x.StockPcsQty)
                    Quantity = (float)proStockInfo.proStockInfoDetails?.Where(x => x.ProStockId == proStockInfo.Id).Sum(x => x.StockPcsQty),
                    BatchNo = proStockInfo.proStockInfoDetails?.Where(x => x.ProStockId == proStockInfo.Id).FirstOrDefault()?.LotNumber
                };
                _unitOfWorkManage.BeginTran();
                int taskId = BaseDal.AddData(newTask);
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService_Outbound.cs
@@ -754,7 +754,8 @@
                            WarehouseId = stockInfo.WarehouseId,
                            GroupId= groupId,
                            MaterielCode = stockInfo.proStockInfoDetails.Where(x => x.ProStockId == stockInfo.Id).FirstOrDefault()?.ProductCode,
                            Quantity = (float)stockInfo.proStockInfoDetails.Where(x => x.ProStockId == stockInfo.Id).Sum(x=> x.StockPcsQty)
                            Quantity = (float)stockInfo.proStockInfoDetails.Where(x => x.ProStockId == stockInfo.Id).Sum(x=> x.StockPcsQty),
                            BatchNo = stockInfo.proStockInfoDetails.Where(x => x.ProStockId == stockInfo.Id).FirstOrDefault()?.LotNumber
                        };
                        tasks.Add(task);
                    }
@@ -800,6 +801,7 @@
                        {
                            task.MaterielCode = stockInfo.Details?.Where(x => x.StockId == stockInfo.Id).FirstOrDefault()?.MaterielCode;
                            task.Quantity = (float)stockInfo.Details?.Where(x => x.StockId == stockInfo.Id).Sum(x => x.StockQuantity);
                            task.BatchNo = stockInfo.Details?.Where(x => x.StockId == stockInfo.Id).FirstOrDefault()?.BatchNo;
                        }
                        if (stockInfo.StockLength>0)
                        {
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/TaskInfo/TaskController.cs
@@ -190,7 +190,6 @@
        /// <summary>
        /// ç”Ÿæˆæˆå“å‡ºåº“任务
        /// </summary>
        /// <param name="ProOutNo">出库订单号</param>
        /// <param name="StationCode">站台地址</param>
        /// <returns></returns>
        [HttpPost, HttpGet, Route("OutProductTask"), AllowAnonymous]
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Properties/PublishProfiles/FolderProfile2.pubxml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,17 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
https://go.microsoft.com/fwlink/?LinkID=208121.
-->
<Project>
  <PropertyGroup>
    <DeleteExistingFiles>false</DeleteExistingFiles>
    <ExcludeApp_Data>false</ExcludeApp_Data>
    <LaunchSiteAfterPublish>true</LaunchSiteAfterPublish>
    <LastUsedBuildConfiguration>Release</LastUsedBuildConfiguration>
    <LastUsedPlatform>Any CPU</LastUsedPlatform>
    <PublishProvider>FileSystem</PublishProvider>
    <PublishUrl>bin\Release\net6.0\publish\</PublishUrl>
    <WebPublishMethod>FileSystem</WebPublishMethod>
    <_TargetId>Folder</_TargetId>
  </PropertyGroup>
</Project>
ÏîÄ¿×ÊÁÏ/½Ó¿ÚÎĵµ/º£¿µAGV/ÖÕµã±ä¸üÄ¿±êµã½Ó¿ÚÎĵµ.docx
Binary files differ