|  |  |  | 
|---|
|  |  |  | 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); | 
|---|
|  |  |  | 
|---|
|  |  |  | 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) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | 
|---|
|  |  |  | { | 
|---|
|  |  |  | 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 | 
|---|
|  |  |  | { | 
|---|
|  |  |  | 
|---|
|  |  |  | { | 
|---|
|  |  |  | 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) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | 
|---|
|  |  |  | { | 
|---|
|  |  |  | 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) | 
|---|
|  |  |  | 
|---|
|  |  |  | 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>() | 
|---|
|  |  |  | 
|---|
|  |  |  | 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) | 
|---|
|  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | //å¤æç§»åº | 
|---|
|  |  |  | 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) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | flag = true; | 
|---|
|  |  |  | break; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | 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; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | task = _taskService.QueryStackerCraneInTask(commonStackerCrane.DeviceCode); | 
|---|
|  |  |  | 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; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  | 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 | 
|---|
|  |  |  | 
|---|
|  |  |  | 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>() | 
|---|
|  |  |  | 
|---|
|  |  |  | 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>() | 
|---|
|  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | //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; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | 
|---|
|  |  |  | ConveyorLineSignal conveyorLineSignalRead = conveyorLineInfoRead.Signal.ByteToBoolObject<ConveyorLineSignal>(); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | ConveyorLineSignal conveyorLineSignalWrite = conveyorLineInfoWrite.Signal.ByteToBoolObject<ConveyorLineSignal>(); | 
|---|
|  |  |  | //满ææè½½åº | 
|---|
|  |  |  | if (item.StationType == StationTypeEnum.StationType_PakcPallet.ObjToInt()) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | if (conveyorLineSignalRead.STB && !conveyorLineSignalWrite.ACK) | 
|---|
|  |  |  | 
|---|
|  |  |  | 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); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | 
|---|
|  |  |  | { | 
|---|
|  |  |  | 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) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | 
|---|
|  |  |  | 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; | 
|---|
|  |  |  | 
|---|
|  |  |  | continue; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | if (router.IsEnd) | 
|---|
|  |  |  | if (router.IsEnd) //å½åèµ·ç¹å
¥åºç«å°ç´æ¥å
¥åº | 
|---|
|  |  |  | { | 
|---|
|  |  |  | string? targetLoca = _taskService.RequestAssignLocationByHeight(task.TaskNum, responseContent.Data.ToString(), conveyorLineInfoRead.Spare2); | 
|---|
|  |  |  | if (!string.IsNullOrEmpty(targetLoca)) | 
|---|
|  |  |  | 
|---|
|  |  |  | continue; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | else | 
|---|
|  |  |  | else //æ¢å··éåé
å
¶ä»å··éçå
¥åºç«å° | 
|---|
|  |  |  | { | 
|---|
|  |  |  | //task.NextAddresså¯è½æ¯router.NextPosi | 
|---|
|  |  |  | roadwayNo = responseContent.Data.ToString(); | 
|---|
|  |  |  | 
|---|
|  |  |  | 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 | 
|---|
|  |  |  | { | 
|---|
|  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | //å¤æç§»åº | 
|---|
|  |  |  | if (task != null && task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.OutbondGroup) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | if (OutTaskStationIsOccupied(task) == null) | 
|---|
|  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  | 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 | 
|---|
|  |  |  | 
|---|
|  |  |  | 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>() | 
|---|
|  |  |  | 
|---|
|  |  |  | { | 
|---|
|  |  |  | 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); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  | 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 | 
|---|
|  |  |  | 
|---|
|  |  |  | Dt_LocationInfo? locationInfo = GetUsableLocation_CSJ(locationInfos, undefinedTypeEmptyLocation, palletType); | 
|---|
|  |  |  | if (locationInfo != null) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | //åä¸ååä¸å±åæ¾çè´§ç©ä¸è´ | 
|---|
|  |  |  | if (locationInfo.Depth < locationInfoDepth.Max(x => x.Depth)) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | Dt_LocationInfo? locationInfoExist = null; | 
|---|
|  |  |  | 
|---|
|  |  |  | Dt_LocationInfo? locationInfo = GetUsableLocation_CSJ(locationInfos, definedTypeEmptyLocation, palletType); | 
|---|
|  |  |  | if (locationInfo != null) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | //åä¸ååä¸å±åæ¾çè´§ç©ä¸è´ | 
|---|
|  |  |  | if (locationInfo.Depth < locationInfoDepth.Max(x => x.Depth)) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | Dt_LocationInfo? locationInfoExist = null; | 
|---|
|  |  |  | 
|---|
|  |  |  | 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); | 
|---|
|  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 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); | 
|---|
|  |  |  | 
|---|
|  |  |  | 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); | 
|---|
|  |  |  | 
|---|
|  |  |  | 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)); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | 
|---|
|  |  |  | 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; | 
|---|
|  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  | 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) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | 
|---|
|  |  |  | _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) | 
|---|
|  |  |  | 
|---|
|  |  |  | 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) | 
|---|
|  |  |  | 
|---|
|  |  |  | 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) | 
|---|
|  |  |  | 
|---|
|  |  |  | /// <summary> | 
|---|
|  |  |  | /// çææååºåºä»»å¡ | 
|---|
|  |  |  | /// </summary> | 
|---|
|  |  |  | /// <param name="ProOutNo">åºåºè®¢åå·</param> | 
|---|
|  |  |  | /// <param name="StationCode">ç«å°å°å</param> | 
|---|
|  |  |  | /// <returns></returns> | 
|---|
|  |  |  | [HttpPost, HttpGet, Route("OutProductTask"), AllowAnonymous] | 
|---|
| ¶Ô±ÈÐÂÎļþ | 
|  |  |  | 
|---|
|  |  |  | <?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> | 
|---|