| | |
| | | #endregion << ç æ¬ 注 é >> |
| | | |
| | | using AutoMapper; |
| | | using Newtonsoft.Json; |
| | | using SixLabors.ImageSharp.ColorSpaces; |
| | | using SqlSugar; |
| | | using System.Collections.Generic; |
| | | using System.Diagnostics.CodeAnalysis; |
| | | using System.Threading.Tasks; |
| | | using WIDESEAWCS_BasicInfoService; |
| | | using WIDESEAWCS_Common; |
| | | using WIDESEAWCS_Common.LocationEnum; |
| | |
| | | using WIDESEAWCS_IBasicInfoService; |
| | | using WIDESEAWCS_ITaskInfoService; |
| | | using WIDESEAWCS_Model.Models; |
| | | using WIDESEAWCS_QuartzJob; |
| | | using WIDESEAWCS_QuartzJob.Models; |
| | | using WIDESEAWCS_QuartzJob.Service; |
| | | |
| | |
| | | private readonly IRepository<Dt_TaskExecuteDetail> _taskExecuteDetailRepository; |
| | | private readonly IApiInfoService _apiInfoService; |
| | | private readonly IStationMangerService _stationMangerService; |
| | | private readonly IStationInfoService _stationInfo; |
| | | private readonly ITaskErrorMessageService _taskErrorMessageService; |
| | | private readonly IMapper _mapper; |
| | | |
| | | private Dictionary<string, OrderByType> _taskOrderBy = new() |
| | |
| | | /// </summary> |
| | | public IRepository<Dt_Task> Repository => BaseDal; |
| | | |
| | | public TaskService(IRepository<Dt_Task> BaseDal, IRouterService routerService, ITaskExecuteDetailService taskExecuteDetailService, IRepository<Dt_TaskExecuteDetail> taskExecuteDetailRepository, IMapper mapper, IKLSLocationInfoService kLSLocationInfoService, IRGVLocationInfoService rGVLocationInfoService, IHKLocationInfoService hKLocationInfoService, IApiInfoService apiInfoService, ITrackloginfoService trackloginfoService, IStationMangerService stationMangerService) : base(BaseDal) |
| | | public TaskService(IRepository<Dt_Task> BaseDal, IRouterService routerService, ITaskExecuteDetailService taskExecuteDetailService, IRepository<Dt_TaskExecuteDetail> taskExecuteDetailRepository, IMapper mapper, IKLSLocationInfoService kLSLocationInfoService, IRGVLocationInfoService rGVLocationInfoService, IHKLocationInfoService hKLocationInfoService, IApiInfoService apiInfoService, ITrackloginfoService trackloginfoService, IStationMangerService stationMangerService, IStationInfoService stationInfo, ITaskErrorMessageService taskErrorMessageService) : base(BaseDal) |
| | | { |
| | | _routerService = routerService; |
| | | _taskExecuteDetailService = taskExecuteDetailService; |
| | |
| | | _apiInfoService = apiInfoService; |
| | | _trackloginfoService = trackloginfoService; |
| | | _stationMangerService = stationMangerService; |
| | | _stationInfo = stationInfo; |
| | | _taskErrorMessageService = taskErrorMessageService; |
| | | } |
| | | public WebResponseContent ReceiveWMSTask([NotNull] List<WMSTasksDTO> taskDTOs) |
| | | { |
| | |
| | | foreach (var task in item.tasks) |
| | | { |
| | | #region 夿 |
| | | content = TaskHelpMethods.isOkTaskInfo(task, true, true); |
| | | if (!content.Status) |
| | | var contentStatus = TaskHelpMethods.isOkTaskInfo(task, true, true); |
| | | if (!contentStatus.Status) |
| | | { |
| | | objects.Add(new |
| | | { |
| | |
| | | Message = $"ä»»å¡å·ã{task.taskCode}ã{content.Message}" |
| | | }); |
| | | continue; |
| | | //throw new Exception(content.Message); |
| | | } |
| | | if (BaseDal.QueryFirst(x => x.WMSTaskNum == task.taskCode && x.TaskType == item.taskType) != null) |
| | | { |
| | |
| | | continue; |
| | | //throw new Exception($"ä»»å¡å·ã{task.taskCode}ãå·²åå¨ä»»å¡"); |
| | | } |
| | | if (BaseDal.QueryFirst(x => x.PalletCode == task.containerCode && x.TaskType == item.taskType) != null) |
| | | if (BaseDal.QueryFirst(x => x.PalletCode == task.containerCode /*&& x.TaskType == item.taskType*/) != null) |
| | | { |
| | | objects.Add(new |
| | | { |
| | |
| | | continue; |
| | | //throw new Exception($"æçå·ã{task.containerCode}ãå·²åå¨ä»»å¡"); |
| | | } |
| | | if (BaseDal.QueryFirst(x => x.SourceAddress == task.fromLocationCode && x.TaskType == item.taskType) != null) |
| | | if (BaseDal.QueryFirst(x => x.SourceAddress == task.fromLocationCode && x.TaskType == item.taskType && x.TaskState < TaskStatusEnum.TakeFinish.ObjToInt()) != null) |
| | | { |
| | | objects.Add(new |
| | | { |
| | | taskCode = task.taskCode, |
| | | Message = $"èµ·ç¹ä½ç½®ã{task.containerCode}ãå·²åå¨ä»»å¡" |
| | | Message = $"èµ·ç¹ä½ç½®ã{task.fromLocationCode}ãå·²åå¨ä»»å¡" |
| | | }); |
| | | continue; |
| | | //throw new Exception($"èµ·ç¹ä½ç½®ã{task.containerCode}ãå·²åå¨ä»»å¡"); |
| | |
| | | #endregion |
| | | switch (item.taskType) |
| | | { |
| | | #region å¯ä¹å£«AGVé¢æåº |
| | | case (int)TaskTypeEnum.MLInbound: |
| | | content = CreateKLSNewInTask(task, item.taskType); |
| | | objects.Add(content.Data); |
| | |
| | | content = CreateKLSNewOutTask(task, item.taskType); |
| | | objects.Add(content.Data); |
| | | break; |
| | | #endregion |
| | | #region æ·è§åå车æååº |
| | | case (int)TaskTypeEnum.CPInbound: |
| | | content = CreateRGVNewInTask(task, item.taskType); |
| | | objects.Add(content.Data); |
| | |
| | | content = CreateRGVNewOutTask(task, item.taskType); |
| | | objects.Add(content.Data); |
| | | break; |
| | | case (int)TaskTypeEnum.CJInbound: |
| | | case (int)TaskTypeEnum.CPMoveInventory: |
| | | content = CreateRGVNewMoveTask(task, item.taskType); |
| | | objects.Add(content.Data); |
| | | break; |
| | | #endregion |
| | | #region 海康AGV |
| | | case (int)TaskTypeEnum.STURR: |
| | | case (int)TaskTypeEnum.Q1TSJ4: |
| | | content = CreateHKNewInTask(task, item.taskType); |
| | | objects.Add(content.Data); |
| | | break; |
| | | case (int)TaskTypeEnum.CJOutbound: |
| | | case (int)TaskTypeEnum.STU0003: |
| | | case (int)TaskTypeEnum.CHUKU1: |
| | | content = CreateHKNewOutTask(task, item.taskType); |
| | | objects.Add(content.Data); |
| | | break; |
| | | case (int)TaskTypeEnum.Carry: |
| | | |
| | | case (int)TaskTypeEnum.Q3RK: |
| | | case (int)TaskTypeEnum.Q3CK: |
| | | content = CarryTask(task, item.taskType); |
| | | objects.Add(content.Data); |
| | | break; |
| | | case (int)TaskTypeEnum.CJCarry: |
| | | case (int)TaskTypeEnum.F01: |
| | | content = HKF01Transport(task, item.taskType); |
| | | break; |
| | | case (int)TaskTypeEnum.F04: |
| | | case (int)TaskTypeEnum.RK3F: |
| | | case (int)TaskTypeEnum.F02: |
| | | case (int)TaskTypeEnum.F03: |
| | | case (int)TaskTypeEnum.CK3F: |
| | | content = CJCarryTaske(task, item.taskType); |
| | | objects.Add(content.Data); |
| | | break; |
| | | case (int)TaskTypeEnum.STUPTBY: |
| | | content = HKSTUPTP(task, item.taskType); |
| | | objects.Add(content.Data); |
| | | break; |
| | | #endregion |
| | | default: |
| | | objects.Add(new |
| | | { |
| | |
| | | var KLS = new CancelGALAXISTask(); |
| | | CancelHIKROBOTTask cancelHIKROBOTTask = new CancelHIKROBOTTask(); |
| | | CancelSXCTake cancelSXCTake = new CancelSXCTake(); |
| | | var deviceName = ""; |
| | | try |
| | | { |
| | | Dt_Task dt_Task = BaseDal.QueryFirst(x => x.WMSTaskNum == wMSCancelTask.TaskCode); |
| | | Dt_Task dt_Task = BaseDal.QueryFirst(x => x.WMSTaskNum == wMSCancelTask.TaskCode && x.TaskType != TaskTypeEnum.CPMoveInventory.ObjToInt()); |
| | | if (dt_Task == null) throw new Exception("æªæ¥è¯¢å°ä»»å¡å·ç¸å
³ä»»å¡"); |
| | | |
| | | // 夿å½å任塿¯å¦ä¸ºå¯ä¹å£«ä»»å¡ |
| | |
| | | //åå车 |
| | | bool isAGV = dt_Task.TaskType == (int)TaskTypeEnum.CPInbound || dt_Task.TaskType == (int)TaskTypeEnum.CPOutbound; |
| | | //海康 |
| | | bool isHK = dt_Task.TaskType == (int)TaskTypeEnum.Carry || dt_Task.TaskType == (int)TaskTypeEnum.CJInbound || dt_Task.TaskType == (int)TaskTypeEnum.CJInbound || dt_Task.TaskType == (int)TaskTypeEnum.CJOutbound; |
| | | bool isHK = dt_Task.TaskType == (int)TaskTypeEnum.F01 || dt_Task.TaskType == (int)TaskTypeEnum.RK3F || dt_Task.TaskType == (int)TaskTypeEnum.CK3F || dt_Task.TaskType == (int)TaskTypeEnum.Q1TSJ4 || dt_Task.TaskType == (int)TaskTypeEnum.STU0003 || dt_Task.TaskType == (int)TaskTypeEnum.F02 || dt_Task.TaskType == (int)TaskTypeEnum.CHUKU1 || dt_Task.TaskType == (int)TaskTypeEnum.Q3RK || dt_Task.TaskType == (int)TaskTypeEnum.Q3CK || dt_Task.TaskType == (int)TaskTypeEnum.STURR; |
| | | //è¿éå°ç¶ææ¹åäº198åæ¶ä»»å¡ |
| | | dt_Task.TaskType = TaskStatusEnum.WMSCancel.ObjToInt(); |
| | | #region å¯ä¹å£« |
| | | if (isGALAXISTask) |
| | | { |
| | | deviceName = "å¯ä¹å£«AGV"; |
| | | KLS = new CancelGALAXISTask |
| | | { |
| | | taskId = dt_Task.WMSTaskNum, |
| | |
| | | #region åå车 |
| | | if (isAGV) |
| | | { |
| | | cancelSXCTake = new CancelSXCTake |
| | | deviceName = "åå车"; |
| | | if (dt_Task.RGVTaskId == 0) |
| | | { |
| | | taskID = dt_Task.RGVTaskId, |
| | | withoutRunning = 1 |
| | | }; |
| | | Dt_ApiInfo? apiInfo = _apiInfoService.Repository.QueryFirst(x => x.ApiCode == nameof(CancelSXCTake)); |
| | | if (apiInfo == null) throw new Exception("æªæ¾å°åå车AGVä»»å¡ä¸åæ¥å£é
置信æ¯ï¼è¯·æ£æ¥æ¥å£é
ç½®"); |
| | | string response = HttpHelper.Post(apiInfo.ApiAddress, cancelSXCTake.Serialize()); |
| | | FOURBOTReturn fOURBOTReturn = response.DeserializeObject<FOURBOTReturn>(); |
| | | content.OK(data: fOURBOTReturn); |
| | | if (fOURBOTReturn.returnCode == 0 && fOURBOTReturn.returnUserMsg == "æå") |
| | | { |
| | | //ç´æ¥ç§»å
¥åå² |
| | | BaseDal.DeleteAndMoveIntoHty(dt_Task, OperateTypeEnum.èªå¨å®æ); |
| | | if (dt_Task.TaskType == TaskTypeEnum.CPOutbound.ObjToInt() && dt_Task.TaskState == TaskStatusEnum.RGV_WaitSend.ObjToInt()) |
| | | { |
| | | //ä¿®æ¹åºä½ç¶æ |
| | | var rgvlocaiion = _rGVLocationInfoService.Repository.QueryFirst(x => x.LocationCode == dt_Task.SourceAddress); |
| | | rgvlocaiion.LocationStatus = LocationStatusEnum.InStock.ObjToInt(); //å°åºä½ç¶ææ¹ä¸ºæè´§ |
| | | } |
| | | BaseDal.DeleteAndMoveIntoHty(dt_Task, OperateTypeEnum.èªå¨å é¤); |
| | | content.OK($"åæ¶{dt_Task.WMSTaskNum}任塿å", dt_Task); |
| | | } |
| | | else |
| | | { |
| | | content.Error($"ä»»å¡{dt_Task.WMSTaskNum}失败{fOURBOTReturn.data}"); |
| | | cancelSXCTake = new CancelSXCTake |
| | | { |
| | | taskID = dt_Task.RGVTaskId, |
| | | withoutRunning = 1 |
| | | }; |
| | | Dt_ApiInfo? apiInfo = _apiInfoService.Repository.QueryFirst(x => x.ApiCode == nameof(CancelSXCTake)); |
| | | if (apiInfo == null) throw new Exception("æªæ¾å°åå车AGVä»»å¡ä¸åæ¥å£é
置信æ¯ï¼è¯·æ£æ¥æ¥å£é
ç½®"); |
| | | string response = HttpHelper.Post(apiInfo.ApiAddress, cancelSXCTake.Serialize()); |
| | | FOURBOTReturn fOURBOTReturn = response.DeserializeObject<FOURBOTReturn>(); |
| | | content.OK(data: fOURBOTReturn); |
| | | if (fOURBOTReturn.returnCode == 0 && fOURBOTReturn.returnUserMsg == "æå") |
| | | { |
| | | //ç´æ¥ç§»å
¥åå² |
| | | BaseDal.DeleteAndMoveIntoHty(dt_Task, OperateTypeEnum.èªå¨å®æ); |
| | | content.OK($"åæ¶{dt_Task.WMSTaskNum}任塿å", dt_Task); |
| | | } |
| | | else |
| | | { |
| | | content.Error($"ä»»å¡{dt_Task.WMSTaskNum}失败{fOURBOTReturn.data}"); |
| | | } |
| | | } |
| | | } |
| | | #endregion |
| | | |
| | | #region 海康 |
| | | if (isHK) |
| | | { |
| | | deviceName = "海康æºå¨äºº"; |
| | | cancelHIKROBOTTask = new CancelHIKROBOTTask |
| | | { |
| | | robotTaskCode = dt_Task.WMSTaskNum, |
| | | cancelType = "CANCEL"//åè½¯åæ¶ï¼DROP人工ä»å
¥ï¼åç¡¬åæ¶ï¼ |
| | | cancelType = "DROP"//åè½¯åæ¶ï¼DROP人工ä»å
¥ï¼åç¡¬åæ¶ï¼ |
| | | }; |
| | | var headers = new Dictionary<string, string> |
| | | { |
| | | { "X-lr-request-id", DateTimeOffset.Now.ToUnixTimeSeconds().ToString() + wMSCancelTask.TaskCode } |
| | | }; |
| | | |
| | | Dt_ApiInfo? apiInfo = _apiInfoService.Repository.QueryFirst(x => x.ApiCode == nameof(CancelHIKROBOTTask)); |
| | | if (apiInfo == null) throw new Exception("æªæ¾å°åå车AGVä»»å¡ä¸åæ¥å£é
置信æ¯ï¼è¯·æ£æ¥æ¥å£é
ç½®"); |
| | | string response = HttpHelper.Post(apiInfo.ApiAddress, cancelHIKROBOTTask.Serialize()); |
| | | string response = HttpHelper.Post(apiInfo.ApiAddress, cancelHIKROBOTTask.Serialize(), headers: headers); |
| | | HIKROBOTReturn hIKROBOTReturn = response.DeserializeObject<HIKROBOTReturn>(); |
| | | content.OK(data: hIKROBOTReturn); |
| | | if (hIKROBOTReturn.code == "SUCCESS" && hIKROBOTReturn.message == "æå") |
| | |
| | | } |
| | | finally |
| | | { |
| | | // å¨ finally ä¸å¤æåªä¸ªå¯¹è±¡è¢«èµå¼äº |
| | | object logObject = null; |
| | | string deviceName = ""; |
| | | |
| | | if (KLS != null) |
| | | { |
| | | logObject = KLS; |
| | | deviceName = "å¯ä¹å£«AGV"; |
| | | } |
| | | else if (cancelHIKROBOTTask != null) |
| | | { |
| | | logObject = cancelHIKROBOTTask; |
| | | deviceName = "海康æºå¨äºº"; |
| | | } |
| | | else if (cancelSXCTake != null) |
| | | { |
| | | logObject = cancelSXCTake; |
| | | deviceName = "åå车"; |
| | | } |
| | | |
| | | if (logObject != null) |
| | | { |
| | | _trackloginfoService.AddTrackLog(logObject, content, $"åæ¶{deviceName}ä»»å¡,", "", ""); |
| | | } |
| | | _trackloginfoService.AddTrackLog(wMSCancelTask, content, $"åæ¶{deviceName}ä»»å¡,", "", ""); |
| | | } |
| | | return content; |
| | | } |
| | |
| | | bool isAGV = dt_Task.TaskType == (int)TaskTypeEnum.CPInbound || dt_Task.TaskType == (int)TaskTypeEnum.CPOutbound; |
| | | |
| | | //海康 |
| | | bool isHK = dt_Task.TaskType == (int)TaskTypeEnum.Carry || dt_Task.TaskType == (int)TaskTypeEnum.CJInbound || dt_Task.TaskType == (int)TaskTypeEnum.CJInbound || dt_Task.TaskType == (int)TaskTypeEnum.CJOutbound; |
| | | bool isHK = dt_Task.TaskType == (int)TaskTypeEnum.F01 || dt_Task.TaskType == (int)TaskTypeEnum.RK3F || dt_Task.TaskType == (int)TaskTypeEnum.CK3F || dt_Task.TaskType == (int)TaskTypeEnum.Q1TSJ4 || dt_Task.TaskType == (int)TaskTypeEnum.STU0003 || dt_Task.TaskType == (int)TaskTypeEnum.F02 || dt_Task.TaskType == (int)TaskTypeEnum.CHUKU1 || dt_Task.TaskType == (int)TaskTypeEnum.Q3RK || dt_Task.TaskType == (int)TaskTypeEnum.Q3CK||dt_Task.TaskType == (int)TaskTypeEnum.STUPTBY; |
| | | //ä¿®æ¹åæ¬ä»»å¡ä¼å
级 |
| | | dt_Task.Grade = updateTaskPriority.taskPriority; |
| | | #region å¯ä¹å£« |
| | |
| | | initPriority = updateTaskPriority.taskPriority//ä¼å
级 |
| | | }; |
| | | Dt_ApiInfo? apiInfo = _apiInfoService.Repository.QueryFirst(x => x.ApiCode == nameof(HIKROBOTTaskGrade)); |
| | | if (apiInfo == null) throw new Exception("æªæ¾å°åå车AGVä»»å¡ä¸åæ¥å£é
置信æ¯ï¼è¯·æ£æ¥æ¥å£é
ç½®"); |
| | | string response = HttpHelper.Post(apiInfo.ApiAddress, Hkrequest.Serialize()); |
| | | if (apiInfo == null) throw new Exception("æªæ¾å°æµ·åº·AGVä»»å¡ä¸åæ¥å£é
置信æ¯ï¼è¯·æ£æ¥æ¥å£é
ç½®"); |
| | | var headers = new Dictionary<string, string> |
| | | { |
| | | { "X-lr-request-id", DateTimeOffset.Now.ToUnixTimeSeconds().ToString() + dt_Task.WMSTaskNum } |
| | | }; |
| | | string response = HttpHelper.Post(apiInfo.ApiAddress, Hkrequest.Serialize(), headers: headers); |
| | | HIKROBOTReturn hIKROBOTReturn = response.DeserializeObject<HIKROBOTReturn>(); |
| | | content.OK(data: hIKROBOTReturn); |
| | | if (hIKROBOTReturn.code == "SUCCESS0" && hIKROBOTReturn.message == "æå") |
| | | if (hIKROBOTReturn.code == "SUCCESS" && hIKROBOTReturn.message == "æå") |
| | | { |
| | | BaseDal.UpdateData(dt_Task); |
| | | content.OK("ä¿®æ¹{dt_Task.WMSTaskNum}ä»»å¡ä¼å
级æå", dt_Task); |
| | |
| | | var rgv = new List<Dt_RGVLocationInfo>(); |
| | | var kls = new List<Dt_KLSLocationInfo>(); |
| | | var hk = new List<Dt_HKLocationInfo>(); |
| | | List<Dt_StationInfo> pk = new List<Dt_StationInfo>(); |
| | | if (wMSUpdateLocationArea==null) |
| | | { |
| | | return content.Error("请æ±åæ°ä¸è½ä¸ºç©º"); |
| | | } |
| | | var validWarehouseIds = new[] { 1, 2, 3, 4 }; |
| | | if (!validWarehouseIds.Contains(wMSUpdateLocationArea.WarehouseId)) |
| | | { |
| | | return content.Error($"æ æçä»åºIDï¼{wMSUpdateLocationArea.WarehouseId}ï¼ææå¼ä¸ºï¼1-æååºï¼2-颿åºï¼3-è´§åºï¼4-è£åªåº"); |
| | | } |
| | | if (wMSUpdateLocationArea.WarehouseId == 1) |
| | | { |
| | | var rgvList = _rGVLocationInfoService.Repository.QueryData(x => wMSUpdateLocationArea.LocationCodes.Contains(x.LocationCode)).ToList(); |
| | |
| | | item.WarehouseId = wMSUpdateLocationArea.UpdateAreaCode.ObjToInt(); |
| | | } |
| | | rgv.AddRange(rgvList); |
| | | _rGVLocationInfoService.Repository.UpdateData(rgv); |
| | | } |
| | | if (wMSUpdateLocationArea.WarehouseId == 2) |
| | | { |
| | |
| | | item.WarehouseId = wMSUpdateLocationArea.UpdateAreaCode.ObjToInt(); |
| | | } |
| | | kls.AddRange(KLSLocationInfoList); |
| | | _kLSLocationInfoService.Repository.UpdateData(kls); |
| | | } |
| | | if (wMSUpdateLocationArea.WarehouseId == 3) |
| | | { |
| | |
| | | item.WarehouseId = wMSUpdateLocationArea.UpdateAreaCode.ObjToInt(); |
| | | } |
| | | hk.AddRange(hkList); |
| | | _hKLocationInfoService.Repository.UpdateData(hk); |
| | | } |
| | | Db.Ado.BeginTran(); |
| | | _rGVLocationInfoService.UpdateData(rgv); |
| | | _kLSLocationInfoService.UpdateData(kls); |
| | | _hKLocationInfoService.UpdateData(hk); |
| | | Db.Ado.CommitTran(); |
| | | if (wMSUpdateLocationArea.WarehouseId == 4) |
| | | { |
| | | var pkList = _stationInfo.Repository.QueryData(x => wMSUpdateLocationArea.LocationCodes.Contains(x.StationCode)).ToList(); |
| | | foreach (var item in pkList) |
| | | { |
| | | item.StationRegion = wMSUpdateLocationArea.UpdateAreaCode.ObjToInt(); |
| | | } |
| | | pk.AddRange(pkList); |
| | | _stationInfo.Repository.UpdateData(pk); |
| | | } |
| | | content.OK(); |
| | | } |
| | | catch (Exception ex) |
| | |
| | | { |
| | | LoctionCode = item.LocationCode, |
| | | LocationStatus = item.LocationStatus, |
| | | EnableStatus = item.EnableStatus |
| | | EnableStatus = item.EnableStatus, |
| | | PalletCode = item.PalletCode, |
| | | AreaCode=item.WarehouseId |
| | | |
| | | }); |
| | | } |
| | | content.OK(data: list); |
| | |
| | | { |
| | | LoctionCode = item.LocationCode, |
| | | LocationStatus = item.LocationStatus, |
| | | EnableStatus = item.EnableStatus |
| | | EnableStatus = item.EnableStatus, |
| | | PalletCode = item.PalletCode, |
| | | AreaCode = item.WarehouseId |
| | | }); |
| | | } |
| | | content.OK(data: list); |
| | | } |
| | | else if (getLocationInfo.WarehouseId == 3) |
| | | { |
| | | |
| | | //è¿éæ¯æåæºç |
| | | var device = Storage.Devices.FirstOrDefault(x => x.DeviceCode == "TSJ") as OtherDevice; |
| | | if (device == null) throw new Exception("æªæ¾å°æåæºè®¾å¤ä¿¡æ¯"); |
| | | if (!device.IsConnected) throw new Exception("PLC1æåæºè®¾å¤è¿æ¥å¤±è´¥"); |
| | | var value = device.GetValue<HoistEnum, short>(HoistEnum.Outboundmaterialbox, "TSJC3F"); |
| | | list.Add(new |
| | | { |
| | | LoctionCode = value, |
| | | LocationStatus = value != 0 ? 100 : 0, |
| | | EnableStatus = 0, |
| | | }); |
| | | content.OK(data: list); |
| | | } |
| | | else if (getLocationInfo.WarehouseId == 4) |
| | | { |
| | | |
| | | List<Dt_HKLocationInfo> rGVLocationInfos = new List<Dt_HKLocationInfo>(); |
| | | if (!string.IsNullOrEmpty(getLocationInfo.AreaCode)) |
| | | rGVLocationInfos = _hKLocationInfoService.Repository.QueryData(x => x.WarehouseId == getLocationInfo.AreaCode.ObjToInt()); |
| | | else |
| | | rGVLocationInfos = _hKLocationInfoService.Repository.QueryData(); |
| | | foreach (var item in rGVLocationInfos) |
| | | { |
| | | list.Add(new |
| | | { |
| | | LoctionCode = item.LocationCode, |
| | | LocationStatus = item.LocationStatus, |
| | | EnableStatus = item.EnableStatus, |
| | | PalletCode = item.PalletCode, |
| | | AreaCode = item.WarehouseId |
| | | }); |
| | | } |
| | | content.OK(data: list); |
| | | } |
| | | else if (getLocationInfo.WarehouseId == 5) |
| | | { |
| | | //读åå
çµä¿¡å· |
| | | var device = Storage.Devices.FirstOrDefault(x => x.DeviceCode == "F1") as OtherDevice; |
| | | if (device == null) throw new Exception("æªæ¾å°1楼质æ£é¨è®¾å¤ä¿¡æ¯"); |
| | | if (!device.IsConnected) throw new Exception("PLC1楼质æ£é¨è®¾å¤è¿æ¥å¤±è´¥"); |
| | | var sta = _stationMangerService.Repository.QueryData(x => x.StationName.Contains("æåä»")); |
| | | foreach (var item in sta) |
| | | { |
| | | bool value = device.GetValue<QualityInspectionCommandEnum, bool>(QualityInspectionCommandEnum.R_StockAvailableSymbol, item.StationCode); |
| | | list.Add(new |
| | | { |
| | | LoctionCode = item.StationCode, |
| | | LocationStatus = value ? 100 : 0, |
| | | EnableStatus = 0, |
| | | }); |
| | | } |
| | | content.OK(data: list); |
| | | } |
| | | else if (getLocationInfo.WarehouseId == 6) |
| | | { |
| | | List<Dt_StationInfo> StationInfo = new List<Dt_StationInfo>(); |
| | | if (!string.IsNullOrEmpty(getLocationInfo.AreaCode)) |
| | | StationInfo = _stationInfo.Repository.QueryData(x => x.StationRegion == getLocationInfo.AreaCode.ObjToInt()); |
| | | else |
| | | StationInfo = _stationInfo.Repository.QueryData(); |
| | | foreach (var item in StationInfo) |
| | | { |
| | | list.Add(new |
| | | { |
| | | LoctionCode = item.StationCode, |
| | | LocationStatus = item.StationStatus, |
| | | EnableStatus = item.IsOccupied, |
| | | PalletCode = item.PalletCode, |
| | | AreaCode = item.StationRegion |
| | | |
| | | }); |
| | | } |
| | | content.OK(data: list); |
| | | } |
| | | } |
| | | catch (Exception ex) |
| | |
| | | { |
| | | throw new NotImplementedException(); |
| | | } |
| | | |
| | | public WebResponseContent InboundElevatorExit(string LocationCode, string containerCode) |
| | | { |
| | | WebResponseContent content = new WebResponseContent(); |
| | | inboundElevatorExitDTO inboundElevator = new inboundElevatorExitDTO(); |
| | | try |
| | | { |
| | | Dt_ApiInfo? apiInfo = _apiInfoService.Repository.QueryFirst(x => x.ApiCode == nameof(inboundElevatorExitDTO)) ?? throw new Exception("æªæ¾å°4Fæåæºåºå£æçå·ä¸æ¥WMSæ¥å£é
置信æ¯ï¼è¯·æ£æ¥æ¥å£é
ç½®"); |
| | | inboundElevator.containerCode = containerCode; |
| | | inboundElevator.toLocationCode = LocationCode; |
| | | string response = HttpHelper.Post(apiInfo.ApiAddress, inboundElevator.Serialize()); |
| | | content.OK(data: response); |
| | | return WebResponseContent.Instance.OK(); |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | return WebResponseContent.Instance.Error(ex.Message); |
| | | } |
| | | finally |
| | | { |
| | | _trackloginfoService.AddTrackLog(inboundElevator, content, "4Fæåæºåºå£æçå·ä¸æ¥WMS", "", ""); |
| | | } |
| | | } |
| | | /// <summary> |
| | | /// æç®±éªè¯ |
| | | /// </summary> |
| | |
| | | /// <returns></returns> |
| | | public WebResponseContent MaterialBoxInspection(string taskCode, string containerCode) |
| | | { |
| | | throw new NotImplementedException(); |
| | | WebResponseContent content = new WebResponseContent(); |
| | | inboundTransportCheckDTO checkDTO = new inboundTransportCheckDTO(); |
| | | try |
| | | { |
| | | checkDTO.containerCode = containerCode; |
| | | Dt_ApiInfo? apiInfo = _apiInfoService.Repository.QueryFirst(x => x.ApiCode == nameof(inboundTransportCheckDTO)) ?? throw new Exception("æªæ¾å°è£çå
¥åº3Få°4Fè¿è¾ç®±å·æ ¡éªæ¥å£é
置信æ¯ï¼è¯·æ£æ¥æ¥å£é
ç½®"); |
| | | string response = HttpHelper.Post(apiInfo.ApiAddress, checkDTO.Serialize()); |
| | | content.OK(data: response); |
| | | WMSReturn wMSReturn = response.DeserializeObject<WMSReturn>(); |
| | | if (wMSReturn == null) throw new Exception("WMSè¿åç»æè½¬æ¢å¤±è´¥ï¼"); |
| | | if (!wMSReturn.success) throw new Exception(wMSReturn.message); |
| | | string dataJson = wMSReturn.result.ToString(); |
| | | Exists? exists = JsonConvert.DeserializeObject<Exists>(dataJson); |
| | | if (exists == null) throw new Exception($"WMSè¿åç»æçresult转æ¢å¤±è´¥"); |
| | | //妿æåå°±ä¸è¿å |
| | | if (exists.taskExists) return WebResponseContent.Instance.OK(); |
| | | //å¦æå¤±è´¥äºå°±è¿åexists.errorAreaCode |
| | | return WebResponseContent.Instance.OK(exists.errorAreaCode); |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | return WebResponseContent.Instance.Error(ex.Message); |
| | | } |
| | | finally |
| | | { |
| | | _trackloginfoService.AddTrackLog(checkDTO, content, "è£çå
¥åº3Få°4Fè¿è¾ç®±å·æ ¡éª", "", ""); |
| | | } |
| | | } |
| | | |
| | | /// <summary> |
| | |
| | | throw new NotImplementedException(); |
| | | } |
| | | /// <summary> |
| | | /// å¹³åºè´§ä½ä¸ä¸æ¶å®¹å¨ |
| | | /// </summary> |
| | | /// <param name="wMSUpOrDown"></param> |
| | | /// <returns></returns> |
| | | public WebResponseContent UpOrDownContainer(WMSUpOrDownContainerDTO wMSUpOrDown) |
| | | { |
| | | WebResponseContent content = new WebResponseContent(); |
| | | try |
| | | { |
| | | Dt_StationInfo stationInfo = _stationInfo.Repository.QueryFirst(x => x.StationCode == wMSUpOrDown.locationCode) ?? throw new Exception($"æªæ¾å°è´§ä½ã{wMSUpOrDown.locationCode}ãä¿¡æ¯"); |
| | | if (wMSUpOrDown.direction == 1) |
| | | { |
| | | stationInfo.StationStatus = LocationStatusEnum.InStock.ObjToInt(); |
| | | stationInfo.PalletCode = wMSUpOrDown.containerCode; |
| | | } |
| | | else |
| | | { |
| | | stationInfo.StationStatus = LocationStatusEnum.Free.ObjToInt(); |
| | | stationInfo.PalletCode = ""; |
| | | } |
| | | _stationInfo.UpdateData(stationInfo); |
| | | content.OK(); |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | content.Error(ex.Message); |
| | | } |
| | | finally |
| | | { |
| | | _trackloginfoService.AddTrackLog(wMSUpOrDown, content, "å¹³åºè´§ä½ä¸ä¸æ¶å®¹å¨", "", ""); |
| | | } |
| | | return content; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 容卿µå¨è¯·æ± |
| | | /// </summary> |
| | | /// <param name="wMSContainerFlow"></param> |
| | |
| | | /// <exception cref="NotImplementedException"></exception> |
| | | public WebResponseContent ContainerRequest(WMSContainerFlow wMSContainerFlow) |
| | | { |
| | | WebResponseContent content = new WebResponseContent(); |
| | | try |
| | | { |
| | | Dt_StationManger stationManger = _stationMangerService.Repository.QueryFirst(x => x.StationCode == wMSContainerFlow.slotCode) ?? throw new Exception($"æªæ¾å°ç«å°ã{wMSContainerFlow.slotCode}ãä¿¡æ¯"); |
| | |
| | | if (wMSContainerFlow.direction == "200") |
| | | { |
| | | stationManger.IsOccupied = LocationStatusEnum.Free.ObjToInt(); |
| | | stationManger.Remark = ""; |
| | | FOURBOToccupyStation fOURBOToccupyStation = new FOURBOToccupyStation() |
| | | { |
| | | stationCode = wMSContainerFlow.slotCode, |
| | | }; |
| | | string response = HttpHelper.Post(apiInfo.ApiAddress, fOURBOToccupyStation.Serialize()); |
| | | FOURBOTReturn fOURBOTReturn = response.DeserializeObject<FOURBOTReturn>(); |
| | | content.OK(data: fOURBOTReturn); |
| | | if (fOURBOTReturn.returnCode != 0) throw new Exception(fOURBOTReturn.returnUserMsg); |
| | | _stationMangerService.UpdateData(stationManger); |
| | | } |
| | | return WebResponseContent.Instance.OK(); |
| | | return content.OK(); |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | return WebResponseContent.Instance.Error(ex.Message); |
| | | return content.Error(ex.Message); |
| | | } |
| | | finally |
| | | { |
| | | _trackloginfoService.AddTrackLog(wMSContainerFlow, content, "容卿µå¨è¯·æ±", "", ""); |
| | | } |
| | | } |
| | | /// <summary> |
| | |
| | | //task.TaskState = (int)TaskStatusEnum.Execut; |
| | | //BaseDal.UpdateData(task); |
| | | #endregion |
| | | |
| | | #region 䏿¶ä¸éè¦å°ç«å°ç¶ææ¹ä¸ºå ç¨ ç»å®å®¹å¨ç¼ç |
| | | stationManger.IsOccupied = LocationStatusEnum.Lock.ObjToInt(); |
| | | stationManger.Remark = iQC.ContainerCode; |
| | | _stationMangerService.UpdateData(stationManger); |
| | | #endregion |
| | | return WebResponseContent.Instance.OK(); |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | return WebResponseContent.Instance.Error(ex.Message); |
| | | } |
| | | finally |
| | | { |
| | | _trackloginfoService.AddTrackLog(iQC, content, "IQCè´¨æ£ç»æåé¦", "", ""); |
| | | } |
| | | } |
| | | |
| | |
| | | /// <exception cref="NotImplementedException"></exception> |
| | | public WebResponseContent multiSetNodeStatus(FOURBOTStorageStatusNotify fOURBOTStorageStatusNotify) |
| | | { |
| | | WebResponseContent content = new WebResponseContent(); |
| | | try |
| | | { |
| | | var Agvlocation = _rGVLocationInfoService.Repository.QueryData(x => fOURBOTStorageStatusNotify.storageCode.Contains(x.LocationCode)); |
| | |
| | | item.EnableStatus = (int)(fOURBOTStorageStatusNotify.disable == 0 ? EnableStatusEnum.Normal : EnableStatusEnum.Disable); |
| | | } |
| | | _rGVLocationInfoService.UpdateData(Agvlocation); |
| | | return WebResponseContent.Instance.OK(); |
| | | return content.OK(); |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | |
| | | return WebResponseContent.Instance.Error(ex.Message); |
| | | } |
| | | finally |
| | | { |
| | | _trackloginfoService.AddTrackLog(fOURBOTStorageStatusNotify, content, "æ¹éæ´æ°å¨ä½ç¶æ", "", ""); |
| | | } |
| | | } |
| | | |
| | | |
| | | public override WebResponseContent DeleteData(object[] keys) |
| | | { |
| | | try |
| | | { |
| | | // æ¥æ¾ææä»»å¡ä¸å
å«è¿ä¸ªidç |
| | | var take = BaseDal.QueryData(x => keys.Contains(x.TaskId)); |
| | | foreach (var item in take) |
| | | { |
| | | item.Modifier = App.User.UserName; |
| | | } |
| | | // æ§è¡ç§»å
¥å岿ä½ï¼å¹¶æ£æ¥ç»æ |
| | | bool moveResult = BaseDal.DeleteAndMoveIntoHty(take, OperateTypeEnum.人工å é¤); |
| | | |
| | | if (!moveResult) |
| | | { |
| | | // ç§»å
¥åå²å¤±è´¥ï¼è¿åéè¯¯ä¿¡æ¯ |
| | | return WebResponseContent.Instance.Error("ç§»å
¥åå²è®°å½å¤±è´¥"); |
| | | } |
| | | return WebResponseContent.Instance.OK("å 餿åï¼æ°æ®å·²ç§»å
¥åå²"); |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | // è®°å½å¼å¸¸æ¥å¿ |
| | | // Logger.Error(ex.Message); |
| | | return WebResponseContent.Instance.Error("å é¤å¤±è´¥ï¼" + ex.Message); |
| | | } |
| | | } |
| | | |
| | | /// <summary> |
| | | /// æ ¡éªä»»å¡ç¸å
³çåºä½ç¶æåç»å®å
³ç³» |
| | | /// </summary> |
| | | /// <param name="taskType">ä»»å¡ç±»å</param> |
| | | /// <param name="taskDTO">ä»»å¡DTO</param> |
| | | /// <returns>è¿åèµ·ç¹åºä½åç»ç¹åºä½ä¿¡æ¯</returns> |
| | | /// <exception cref="Exception">æ ¡éªå¤±è´¥æ¶æåºå¼å¸¸</exception> |
| | | private WebResponseContent ValidateLocationForTask(int taskType, TaskDTO taskDTO) |
| | | { |
| | | WebResponseContent content = new WebResponseContent(); |
| | | try |
| | | { |
| | | #region |
| | | // å
¥åºç±»ä»»å¡ï¼éè¦æ ¡éªç»ç¹åºä½ï¼ |
| | | if (taskType == (int)TaskTypeEnum.CK3F || taskType == (int)TaskTypeEnum.F03) |
| | | { |
| | | var toStation = _stationInfo.Repository.QueryFirst(x => x.StationName == taskDTO.toLocationCode) |
| | | ?? throw new Exception($"æªæ¾å°ç»ç¹åºä½ã{taskDTO.toLocationCode}ãï¼"); |
| | | |
| | | if (toStation.StationStatus != (int)LocationStatusEnum.Free) |
| | | throw new Exception($"ç»ç¹åºä½ã{taskDTO.toLocationCode}ãåºä½ç¶æä¸å¯å
¥åºï¼"); |
| | | } |
| | | // åºåºç±»ä»»å¡ï¼éè¦æ ¡éªèµ·ç¹åºä½ï¼ |
| | | else if (taskType == (int)TaskTypeEnum.RK3F || taskType == (int)TaskTypeEnum.F04) |
| | | { |
| | | var fromStation = _stationInfo.Repository.QueryFirst(x => x.StationName == taskDTO.fromLocationCode) |
| | | ?? throw new Exception($"æªæ¾å°èµ·ç¹åºä½ã{taskDTO.fromLocationCode}ãï¼"); |
| | | |
| | | if (fromStation.StationStatus != (int)LocationStatusEnum.InStock) |
| | | throw new Exception($"èµ·ç¹åºä½ã{taskDTO.fromLocationCode}ãå½ååºä½ç¶æä¸å¯åºåºï¼"); |
| | | |
| | | if (fromStation.PalletCode != taskDTO.containerCode) |
| | | throw new Exception($"èµ·ç¹åºä½ã{taskDTO.fromLocationCode}ãç»å®æç®±å·ã{fromStation.PalletCode}ãä¸ä»»å¡æç®±å·ã{taskDTO.containerCode}ãä¸å¹é
ï¼"); |
| | | } |
| | | // ç§»åºç±»ä»»å¡ï¼éè¦åæ¶æ ¡éªèµ·ç¹åç»ç¹ï¼ |
| | | else if (taskType == (int)TaskTypeEnum.F02) |
| | | { |
| | | // æ ¡éªç»ç¹åºä½ |
| | | var toStation = _stationInfo.Repository.QueryFirst(x => x.StationName == taskDTO.toLocationCode) |
| | | ?? throw new Exception($"æªæ¾å°ç»ç¹åºä½ã{taskDTO.toLocationCode}ãï¼"); |
| | | |
| | | if (toStation.StationStatus != (int)LocationStatusEnum.Free) |
| | | throw new Exception($"ç»ç¹åºä½ã{taskDTO.toLocationCode}ãåºä½ç¶æä¸å¯å
¥åºï¼"); |
| | | |
| | | // æ ¡éªèµ·ç¹åºä½ |
| | | var fromStation = _stationInfo.Repository.QueryFirst(x => x.StationName == taskDTO.fromLocationCode) |
| | | ?? throw new Exception($"æªæ¾å°èµ·ç¹åºä½ã{taskDTO.fromLocationCode}ãï¼"); |
| | | |
| | | if (fromStation.StationStatus != (int)LocationStatusEnum.InStock) |
| | | throw new Exception($"èµ·ç¹åºä½ã{taskDTO.fromLocationCode}ãå½ååºä½ç¶æä¸å¯åºåºï¼"); |
| | | |
| | | if (fromStation.PalletCode != taskDTO.containerCode) |
| | | throw new Exception($"èµ·ç¹åºä½ã{taskDTO.fromLocationCode}ãç»å®æç®±å·ã{fromStation.PalletCode}ãä¸ä»»å¡æç®±å·ã{taskDTO.containerCode}ãä¸å¹é
ï¼"); |
| | | } |
| | | #endregion |
| | | return content.OK(); |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | |
| | | return content.Error(ex.Message); |
| | | } |
| | | |
| | | |
| | | } |
| | | |
| | | |
| | | |
| | | /// <summary> |
| | | /// æ´æ°åºä½å¯ç¨ç¦ç¨ç¶æ |
| | | /// </summary> |
| | | /// <param name="upLocationStatusDTO"></param> |
| | | /// <returns></returns> |
| | | public WebResponseContent UpLocationStatus(UpLocationStatusDTO upLocationStatusDTO) |
| | | { |
| | | WebResponseContent content = new WebResponseContent(); |
| | | List<object> resultList = new List<object>(); |
| | | |
| | | try |
| | | { |
| | | // åæ°éªè¯ |
| | | if (upLocationStatusDTO == null) |
| | | { |
| | | return content.Error("请æ±åæ°ä¸è½ä¸ºç©º"); |
| | | } |
| | | |
| | | if (upLocationStatusDTO.LocationNubList == null || upLocationStatusDTO.LocationNubList.Length == 0) |
| | | { |
| | | return content.Error("è´§ä½ç¼å·å表ä¸è½ä¸ºç©º"); |
| | | } |
| | | |
| | | // æ ¹æ® EnableStatus çå¼å¤ææ¯å¯ç¨è¿æ¯ç¦ç¨ |
| | | // 0=å¯ç¨ï¼3=ç¦ç¨ |
| | | bool isEnable = (upLocationStatusDTO.EnableStatus == 0); |
| | | int targetStatus = isEnable ? (int)EnableStatusEnum.Normal : (int)EnableStatusEnum.Disable; |
| | | |
| | | var updatedList = new List<object>(); // ç¨äºæ¹éæ´æ° |
| | | var notFoundLocations = new List<string>(); |
| | | |
| | | // æååº (WarehouseId = 1) |
| | | if (upLocationStatusDTO.WarehouseId == 1) |
| | | { |
| | | var locationsToUpdate = new List<Dt_RGVLocationInfo>(); |
| | | |
| | | foreach (var locationCode in upLocationStatusDTO.LocationNubList) |
| | | { |
| | | var agv = _rGVLocationInfoService.Repository.QueryFirst(x => x.LocationCode == locationCode); |
| | | if (agv != null) |
| | | { |
| | | agv.EnableStatus = targetStatus; |
| | | locationsToUpdate.Add(agv); |
| | | |
| | | resultList.Add(new |
| | | { |
| | | LoctionCode = agv.LocationCode, |
| | | EnableStatus = agv.EnableStatus, |
| | | }); |
| | | } |
| | | else |
| | | { |
| | | notFoundLocations.Add(locationCode); |
| | | } |
| | | } |
| | | |
| | | if (locationsToUpdate.Any()) |
| | | { |
| | | _rGVLocationInfoService.UpdateData(locationsToUpdate); |
| | | |
| | | string message = $"æåæ´æ° {locationsToUpdate.Count} 个货ä½çç¶æ"; |
| | | if (notFoundLocations.Any()) |
| | | { |
| | | message += $"ï¼æªæ¾å°è´§ä½ï¼{string.Join(",", notFoundLocations)}"; |
| | | } |
| | | content.OK(data: resultList, message: message); |
| | | } |
| | | else |
| | | { |
| | | return content.Error($"æªæ¾å°ä»»ä½å¯æ´æ°çè´§ä½ãæªæ¾å°çè´§ä½ï¼{string.Join(",", notFoundLocations)}"); |
| | | } |
| | | } |
| | | // é¢æåº (WarehouseId = 2) |
| | | else if (upLocationStatusDTO.WarehouseId == 2) |
| | | { |
| | | var locationsToUpdate = new List<Dt_KLSLocationInfo>(); |
| | | |
| | | foreach (var locationCode in upLocationStatusDTO.LocationNubList) |
| | | { |
| | | var kls = _kLSLocationInfoService.Repository.QueryFirst(x => x.LocationCode == locationCode); |
| | | if (kls != null) |
| | | { |
| | | kls.EnableStatus = targetStatus; |
| | | locationsToUpdate.Add(kls); |
| | | |
| | | resultList.Add(new |
| | | { |
| | | LoctionCode = kls.LocationCode, |
| | | EnableStatus = kls.EnableStatus, |
| | | }); |
| | | } |
| | | else |
| | | { |
| | | notFoundLocations.Add(locationCode); |
| | | } |
| | | } |
| | | |
| | | if (locationsToUpdate.Any()) |
| | | { |
| | | _kLSLocationInfoService.UpdateData(locationsToUpdate); |
| | | |
| | | string message = $"æåæ´æ° {locationsToUpdate.Count} 个货ä½çç¶æ"; |
| | | if (notFoundLocations.Any()) |
| | | { |
| | | message += $"ï¼æªæ¾å°è´§ä½ï¼{string.Join(",", notFoundLocations)}"; |
| | | } |
| | | content.OK(data: resultList, message: message); |
| | | } |
| | | else |
| | | { |
| | | return content.Error($"æªæ¾å°ä»»ä½å¯æ´æ°çè´§ä½ãæªæ¾å°çè´§ä½ï¼{string.Join(",", notFoundLocations)}"); |
| | | } |
| | | } |
| | | // è£åªåº (WarehouseId = 3) |
| | | else if (upLocationStatusDTO.WarehouseId == 3) |
| | | { |
| | | var locationsToUpdate = new List<Dt_HKLocationInfo>(); |
| | | |
| | | foreach (var locationCode in upLocationStatusDTO.LocationNubList) |
| | | { |
| | | var hk = _hKLocationInfoService.Repository.QueryFirst(x => x.LocationCode == locationCode); |
| | | if (hk != null) |
| | | { |
| | | hk.EnableStatus = targetStatus; |
| | | locationsToUpdate.Add(hk); |
| | | |
| | | resultList.Add(new |
| | | { |
| | | LoctionCode = hk.LocationCode, |
| | | EnableStatus = hk.EnableStatus, |
| | | }); |
| | | } |
| | | else |
| | | { |
| | | notFoundLocations.Add(locationCode); |
| | | } |
| | | } |
| | | |
| | | if (locationsToUpdate.Any()) |
| | | { |
| | | _hKLocationInfoService.UpdateData(locationsToUpdate); |
| | | |
| | | string message = $"æåæ´æ° {locationsToUpdate.Count} 个货ä½çç¶æ"; |
| | | if (notFoundLocations.Any()) |
| | | { |
| | | message += $"ï¼æªæ¾å°è´§ä½ï¼{string.Join(",", notFoundLocations)}"; |
| | | } |
| | | content.OK(data: resultList, message: message); |
| | | } |
| | | else |
| | | { |
| | | return content.Error($"æªæ¾å°ä»»ä½å¯æ´æ°çè´§ä½ãæªæ¾å°çè´§ä½ï¼{string.Join(",", notFoundLocations)}"); |
| | | } |
| | | } |
| | | // 3-4å¹³åº |
| | | else if (upLocationStatusDTO.WarehouseId == 4) |
| | | { |
| | | var locationsToUpdate = new List<Dt_StationInfo>(); |
| | | |
| | | foreach (var locationCode in upLocationStatusDTO.LocationNubList) |
| | | { |
| | | var station = _stationInfo.Repository.QueryFirst(x => x.StationCode == locationCode); |
| | | if (station != null) |
| | | { |
| | | station.IsOccupied = upLocationStatusDTO.EnableStatus==0?0:1; |
| | | locationsToUpdate.Add(station); |
| | | |
| | | resultList.Add(new |
| | | { |
| | | LoctionCode = station.StationCode, |
| | | EnableStatus = station.IsOccupied, |
| | | }); |
| | | } |
| | | else |
| | | { |
| | | notFoundLocations.Add(locationCode); |
| | | } |
| | | } |
| | | |
| | | if (locationsToUpdate.Any()) |
| | | { |
| | | _stationInfo.UpdateData(locationsToUpdate); |
| | | |
| | | string message = $"æåæ´æ° {locationsToUpdate.Count} 个货ä½çç¶æ"; |
| | | if (notFoundLocations.Any()) |
| | | { |
| | | message += $"ï¼æªæ¾å°è´§ä½ï¼{string.Join(",", notFoundLocations)}"; |
| | | } |
| | | content.OK(data: resultList, message: message); |
| | | } |
| | | else |
| | | { |
| | | return content.Error($"æªæ¾å°ä»»ä½å¯æ´æ°çè´§ä½ãæªæ¾å°çè´§ä½ï¼{string.Join(",", notFoundLocations)}"); |
| | | } |
| | | } |
| | | else if (upLocationStatusDTO.WarehouseId == 5) |
| | | { |
| | | var locationsToUpdate = new List<Dt_StationManger>(); |
| | | |
| | | foreach (var locationCode in upLocationStatusDTO.LocationNubList) |
| | | { |
| | | var station = _stationMangerService.Repository.QueryFirst(x => x.StationCode == locationCode); |
| | | if (station != null) |
| | | { |
| | | station.IsOccupied = upLocationStatusDTO.EnableStatus == 0 ? 0 : 1; |
| | | locationsToUpdate.Add(station); |
| | | |
| | | resultList.Add(new |
| | | { |
| | | LoctionCode = station.StationCode, |
| | | EnableStatus = station.IsOccupied, |
| | | }); |
| | | } |
| | | else |
| | | { |
| | | notFoundLocations.Add(locationCode); |
| | | } |
| | | } |
| | | |
| | | if (locationsToUpdate.Any()) |
| | | { |
| | | _stationMangerService.UpdateData(locationsToUpdate); |
| | | |
| | | string message = $"æåæ´æ° {locationsToUpdate.Count} 个货ä½çç¶æ"; |
| | | if (notFoundLocations.Any()) |
| | | { |
| | | message += $"ï¼æªæ¾å°ç«å°ï¼{string.Join(",", notFoundLocations)}"; |
| | | } |
| | | content.OK(data: resultList, message: message); |
| | | } |
| | | else |
| | | { |
| | | return content.Error($"æªæ¾å°ä»»ä½å¯æ´æ°çç«å°ãæªæ¾å°çç«å°ï¼{string.Join(",", notFoundLocations)}"); |
| | | } |
| | | } |
| | | else |
| | | { |
| | | return content.Error($"䏿¯æçä»åºç±»åï¼{upLocationStatusDTO.WarehouseId}"); |
| | | } |
| | | |
| | | return content; |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | return content.Error($"æ´æ°ç«å°ç¶æå¤±è´¥ï¼{ex.Message}"); |
| | | } |
| | | } |
| | | } |
| | | } |