| | |
| | | #endregion << ç æ¬ 注 é >> |
| | | |
| | | using AutoMapper; |
| | | using SixLabors.ImageSharp.ColorSpaces; |
| | | using SqlSugar; |
| | | using System.Diagnostics.CodeAnalysis; |
| | | using WIDESEAWCS_BasicInfoService; |
| | | using WIDESEAWCS_Common; |
| | | using WIDESEAWCS_Common.LocationEnum; |
| | | using WIDESEAWCS_Common.TaskEnum; |
| | | using WIDESEAWCS_Core; |
| | | using WIDESEAWCS_Core.BaseRepository; |
| | | using WIDESEAWCS_Core.BaseServices; |
| | | using WIDESEAWCS_Core.Enums; |
| | | using WIDESEAWCS_Core.Helper; |
| | | using WIDESEAWCS_DTO; |
| | | using WIDESEAWCS_DTO.AGV.HIKROBOT; |
| | | using WIDESEAWCS_DTO.RGV.FOURBOT; |
| | | using WIDESEAWCS_DTO.TaskInfo; |
| | | using WIDESEAWCS_DTO.WMS; |
| | | using WIDESEAWCS_IBasicInfoService; |
| | | using WIDESEAWCS_ITaskInfoService; |
| | | using WIDESEAWCS_Model.Models; |
| | |
| | | { |
| | | public partial class TaskService : ServiceBase<Dt_Task, IRepository<Dt_Task>>, ITaskService |
| | | { |
| | | private readonly ITrackloginfoService _trackloginfoService; |
| | | private readonly IRouterService _routerService; |
| | | private readonly ITaskExecuteDetailService _taskExecuteDetailService; |
| | | private readonly IHKLocationInfoService _hKLocationInfoService; |
| | | private readonly IKLSLocationInfoService _kLSLocationInfoService; |
| | | private readonly IRGVLocationInfoService _rGVLocationInfoService; |
| | | private readonly IRepository<Dt_TaskExecuteDetail> _taskExecuteDetailRepository; |
| | | private readonly IApiInfoService _apiInfoService; |
| | | private readonly IStationMangerService _stationMangerService; |
| | | 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) : 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) : base(BaseDal) |
| | | { |
| | | _routerService = routerService; |
| | | _taskExecuteDetailService = taskExecuteDetailService; |
| | |
| | | _kLSLocationInfoService = kLSLocationInfoService; |
| | | _rGVLocationInfoService = rGVLocationInfoService; |
| | | _hKLocationInfoService = hKLocationInfoService; |
| | | _apiInfoService = apiInfoService; |
| | | _trackloginfoService = trackloginfoService; |
| | | _stationMangerService = stationMangerService; |
| | | } |
| | | public WebResponseContent ReceiveWMSTask([NotNull] List<WMSTasksDTO> taskDTOs) |
| | | { |
| | | WebResponseContent content = new WebResponseContent(); |
| | | try |
| | | { |
| | | List<object> objects = new List<object>(); |
| | | foreach (var item in taskDTOs) |
| | | { |
| | | if (item.taskType == TaskTypeEnum.MLInbound.ObjToInt()) |
| | | foreach (var task in item.tasks) |
| | | { |
| | | foreach (var task in item.tasks) |
| | | #region 夿 |
| | | content = TaskHelpMethods.isOkTaskInfo(task, true, true); |
| | | if (!content.Status) |
| | | { |
| | | content = TaskHelpMethods.isOkTaskInfo(task, true, true); |
| | | if (!content.Status) throw new Exception(content.Message); |
| | | if (BaseDal.QueryFirst(x => x.WMSTaskNum == task.taskCode || x.PalletCode == task.containerCode) != null) |
| | | objects.Add(new |
| | | { |
| | | continue; |
| | | } |
| | | CreateNewInTask(task); |
| | | taskCode = task.taskCode, |
| | | Message = $"ä»»å¡å·ã{task.taskCode}ã{content.Message}" |
| | | }); |
| | | continue; |
| | | //throw new Exception(content.Message); |
| | | } |
| | | if (BaseDal.QueryFirst(x => x.WMSTaskNum == task.taskCode) != null) |
| | | { |
| | | objects.Add(new |
| | | { |
| | | taskCode = task.taskCode, |
| | | Message = $"ä»»å¡å·ã{task.taskCode}ãå·²åå¨ä»»å¡" |
| | | }); |
| | | continue; |
| | | //throw new Exception($"ä»»å¡å·ã{task.taskCode}ãå·²åå¨ä»»å¡"); |
| | | } |
| | | if (BaseDal.QueryFirst(x => x.PalletCode == task.containerCode) != null) |
| | | { |
| | | objects.Add(new |
| | | { |
| | | taskCode = task.taskCode, |
| | | Message = $"æçå·ã{task.containerCode}ãå·²åå¨ä»»å¡" |
| | | }); |
| | | continue; |
| | | //throw new Exception($"æçå·ã{task.containerCode}ãå·²åå¨ä»»å¡"); |
| | | } |
| | | if (BaseDal.QueryFirst(x => x.SourceAddress == task.fromLocationCode) != null) |
| | | { |
| | | objects.Add(new |
| | | { |
| | | taskCode = task.taskCode, |
| | | Message = $"èµ·ç¹ä½ç½®ã{task.containerCode}ãå·²åå¨ä»»å¡" |
| | | }); |
| | | continue; |
| | | //throw new Exception($"èµ·ç¹ä½ç½®ã{task.containerCode}ãå·²åå¨ä»»å¡"); |
| | | } |
| | | #endregion |
| | | switch (item.taskType) |
| | | { |
| | | case (int)TaskTypeEnum.MLInbound: |
| | | content = CreateKLSNewInTask(task, item.taskType); |
| | | objects.Add(content.Data); |
| | | break; |
| | | case (int)TaskTypeEnum.MLOutbound: |
| | | content = CreateKLSNewOutTask(task, item.taskType); |
| | | objects.Add(content.Data); |
| | | break; |
| | | case (int)TaskTypeEnum.CPInbound: |
| | | content = CreateRGVNewInTask(task, item.taskType); |
| | | objects.Add(content.Data); |
| | | break; |
| | | case (int)TaskTypeEnum.CPOutbound: |
| | | content = CreateRGVNewOutTask(task, item.taskType); |
| | | objects.Add(content.Data); |
| | | break; |
| | | case (int)TaskTypeEnum.CJInbound: |
| | | content = CreateHKNewInTask(task, item.taskType); |
| | | objects.Add(content.Data); |
| | | break; |
| | | case (int)TaskTypeEnum.CJOutbound: |
| | | content = CreateHKNewOutTask(task, item.taskType); |
| | | objects.Add(content.Data); |
| | | break; |
| | | case (int)TaskTypeEnum.Carry: |
| | | content = CarryTask(task, item.taskType); |
| | | objects.Add(content.Data); |
| | | break; |
| | | case (int)TaskTypeEnum.CJCarry: |
| | | content = CJCarryTaske(task, item.taskType); |
| | | objects.Add(content.Data); |
| | | break; |
| | | default: |
| | | objects.Add(new |
| | | { |
| | | taskCode = task.taskCode, |
| | | Message = $"æªå®ä¹çä»»å¡ç±»å" |
| | | }); |
| | | break; |
| | | } |
| | | } |
| | | } |
| | | content.Data = objects; |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | |
| | | } |
| | | return content; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// åæ¶ä»»å¡ |
| | | /// </summary> |
| | | /// <param name="taskCode">ä»»å¡å·</param> |
| | | /// <param name="containerCode">æç®±æ¡ç </param> |
| | | /// <returns></returns> |
| | | public WebResponseContent CancelWMSTask(WMSCancelTask wMSCancelTask) |
| | | { |
| | | WebResponseContent content = new WebResponseContent(); |
| | | var KLS = new CancelGALAXISTask(); |
| | | CancelHIKROBOTTask cancelHIKROBOTTask = new CancelHIKROBOTTask(); |
| | | CancelSXCTake cancelSXCTake = new CancelSXCTake(); |
| | | try |
| | | { |
| | | Dt_Task dt_Task = BaseDal.QueryFirst(x => x.WMSTaskNum == wMSCancelTask.TaskCode); |
| | | if (dt_Task == null) throw new Exception("æªæ¥è¯¢å°ä»»å¡å·ç¸å
³ä»»å¡"); |
| | | |
| | | // 夿å½å任塿¯å¦ä¸ºå¯ä¹å£«ä»»å¡ |
| | | bool isGALAXISTask = dt_Task.TaskType == (int)TaskTypeEnum.MLInbound || |
| | | dt_Task.TaskType == (int)TaskTypeEnum.MLOutbound; |
| | | //åå车 |
| | | 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; |
| | | //è¿éå°ç¶ææ¹åäº198åæ¶ä»»å¡ |
| | | dt_Task.TaskType = TaskStatusEnum.WMSCancel.ObjToInt(); |
| | | #region å¯ä¹å£« |
| | | if (isGALAXISTask) |
| | | { |
| | | KLS = new CancelGALAXISTask |
| | | { |
| | | taskId = dt_Task.WMSTaskNum, |
| | | reportTime = DateTime.Now.ToString() |
| | | }; |
| | | Dt_ApiInfo? apiInfo = _apiInfoService.Repository.QueryFirst(x => x.ApiCode == nameof(CancelGALAXISTask)); |
| | | if (apiInfo == null) throw new Exception("æªæ¾å°å¯ä¹å£«AGVä»»å¡ä¸åæ¥å£é
置信æ¯ï¼è¯·æ£æ¥æ¥å£é
ç½®"); |
| | | string response = HttpHelper.Post(apiInfo.ApiAddress, KLS.Serialize()); |
| | | GALAXISReturn agvContent = response.DeserializeObject<GALAXISReturn>(); |
| | | if (agvContent.success == true && agvContent.code == 0) |
| | | { |
| | | //ç´æ¥ç§»å
¥åå² |
| | | BaseDal.DeleteAndMoveIntoHty(dt_Task, OperateTypeEnum.èªå¨å®æ); |
| | | content.OK($"åæ¶{dt_Task.WMSTaskNum}任塿å", dt_Task); |
| | | } |
| | | else |
| | | { |
| | | content.Error($"ä»»å¡{dt_Task.WMSTaskNum}失败{agvContent.data.returnInfo}"); |
| | | |
| | | } |
| | | } |
| | | #endregion |
| | | |
| | | #region åå车 |
| | | if (isAGV) |
| | | { |
| | | 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>(); |
| | | 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) |
| | | { |
| | | cancelHIKROBOTTask = new CancelHIKROBOTTask |
| | | { |
| | | robotTaskCode = dt_Task.WMSTaskNum, |
| | | cancelType = "CANCEL"//åè½¯åæ¶ï¼DROP人工ä»å
¥ï¼åç¡¬åæ¶ï¼ |
| | | }; |
| | | 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()); |
| | | HIKROBOTReturn hIKROBOTReturn = response.DeserializeObject<HIKROBOTReturn>(); |
| | | if (hIKROBOTReturn.code == "SUCCESS" && hIKROBOTReturn.message == "æå") |
| | | { |
| | | //ç´æ¥ç§»å
¥åå² |
| | | BaseDal.DeleteAndMoveIntoHty(dt_Task, OperateTypeEnum.èªå¨å®æ); |
| | | content.OK("åæ¶{dt_Task.WMSTaskNum}任塿å", dt_Task); |
| | | } |
| | | else |
| | | { |
| | | content.Error($"ä»»å¡{dt_Task.WMSTaskNum}失败ï¼é误信æ¯ï¼{hIKROBOTReturn.data}"); |
| | | } |
| | | |
| | | } |
| | | |
| | | #endregion |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | content.Error(ex.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}ä»»å¡,", "", ""); |
| | | } |
| | | } |
| | | return content; |
| | | } |
| | | |
| | | |
| | | /// <summary> |
| | | /// ä¿®æ¹ä»»å¡ä¼å
级 |
| | | /// </summary> |
| | | /// <param name="updateTaskPriority"></param> |
| | | /// <returns></returns> |
| | | public WebResponseContent UpdateWMSTaskPriority(WMSUpdateTaskPriority updateTaskPriority) |
| | | { |
| | | WebResponseContent content = new WebResponseContent(); |
| | | var updateGALAXISTaskGrade = new UpdateGALAXISTaskGrade(); |
| | | var request = new UpdateAgvSXCTake(); |
| | | var Hkrequest = new HIKROBOTTaskGrade(); |
| | | try |
| | | { |
| | | Dt_Task dt_Task = BaseDal.QueryFirst(x => x.WMSTaskNum == updateTaskPriority.taskCode); |
| | | if (dt_Task == null) throw new Exception("æªæ¥è¯¢å°ä»»å¡å·ç¸å
³ä»»å¡"); |
| | | |
| | | // 夿å½å任塿¯å¦ä¸ºå¯ä¹å£«ä»»å¡ |
| | | bool isGALAXISTask = dt_Task.TaskType == (int)TaskTypeEnum.MLInbound || |
| | | dt_Task.TaskType == (int)TaskTypeEnum.MLOutbound; |
| | | |
| | | //åå车 |
| | | 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; |
| | | //ä¿®æ¹åæ¬ä»»å¡ä¼å
级 |
| | | dt_Task.Grade = updateTaskPriority.taskPriority; |
| | | #region å¯ä¹å£« |
| | | if (isGALAXISTask) |
| | | { |
| | | updateGALAXISTaskGrade = new UpdateGALAXISTaskGrade |
| | | { |
| | | taskId = dt_Task.WMSTaskNum, |
| | | reportTime = DateTime.Now.ToString(), |
| | | priorityCode = updateTaskPriority.taskPriority, |
| | | }; |
| | | Dt_ApiInfo? apiInfo = _apiInfoService.Repository.QueryFirst(x => x.ApiCode == nameof(UpdateGALAXISTaskGrade)); |
| | | if (apiInfo == null) throw new Exception("æªæ¾å°å¯ä¹å£«AGVä»»å¡ä¸åæ¥å£é
置信æ¯ï¼è¯·æ£æ¥æ¥å£é
ç½®"); |
| | | string response = HttpHelper.Post(apiInfo.ApiAddress, updateGALAXISTaskGrade.Serialize()); |
| | | GALAXISReturn agvContent = response.DeserializeObject<GALAXISReturn>(); |
| | | if (agvContent.success == true && agvContent.code == 0) |
| | | { |
| | | |
| | | BaseDal.UpdateData(dt_Task); |
| | | content.OK($"ä¿®æ¹{dt_Task.WMSTaskNum}ä»»å¡ä¼å
级æå", dt_Task); |
| | | } |
| | | else |
| | | { |
| | | content.Error($"{dt_Task.WMSTaskNum}ä»»å¡å¤±è´¥,é误信æ¯ï¼{agvContent.data.returnInfo}"); |
| | | } |
| | | } |
| | | #endregion |
| | | |
| | | #region åå车 |
| | | if (isAGV) |
| | | { |
| | | request = new UpdateAgvSXCTake |
| | | { |
| | | taskID = dt_Task.RGVTaskId, |
| | | priority = updateTaskPriority.taskPriority |
| | | }; |
| | | Dt_ApiInfo? apiInfo = _apiInfoService.Repository.QueryFirst(x => x.ApiCode == nameof(UpdateAgvSXCTake)); |
| | | if (apiInfo == null) throw new Exception("æªæ¾å°æ´æ°åå车任å¡ä¼å
级æ¥å£é
置信æ¯ï¼è¯·æ£æ¥æ¥å£é
ç½®"); |
| | | string response = HttpHelper.Post(apiInfo.ApiAddress, request.Serialize()); |
| | | FOURBOTReturn fOURBOTReturn = response.DeserializeObject<FOURBOTReturn>(); |
| | | if (fOURBOTReturn.returnCode == 0 && fOURBOTReturn.returnUserMsg == "æå") |
| | | { |
| | | BaseDal.UpdateData(dt_Task); |
| | | content.OK("ä¿®æ¹{dt_Task.WMSTaskNum}ä»»å¡ä¼å
级æå", dt_Task); |
| | | } |
| | | else |
| | | { |
| | | content.Error($"ä»»å¡{dt_Task.WMSTaskNum}失败ï¼é误信æ¯ï¼{fOURBOTReturn.data}"); |
| | | } |
| | | } |
| | | |
| | | #endregion |
| | | #region 海康 |
| | | if (isHK) |
| | | { |
| | | Hkrequest = new HIKROBOTTaskGrade |
| | | { |
| | | robotTaskCode = dt_Task.WMSTaskNum,//ä»»å¡å· |
| | | 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()); |
| | | HIKROBOTReturn hIKROBOTReturn = response.DeserializeObject<HIKROBOTReturn>(); |
| | | if (hIKROBOTReturn.code == "SUCCESS0" && hIKROBOTReturn.message == "æå") |
| | | { |
| | | BaseDal.UpdateData(dt_Task); |
| | | content.OK("ä¿®æ¹{dt_Task.WMSTaskNum}ä»»å¡ä¼å
级æå", dt_Task); |
| | | } |
| | | else |
| | | { |
| | | content.Error($"ä»»å¡{dt_Task.WMSTaskNum}失败ï¼é误信æ¯{hIKROBOTReturn.data}"); |
| | | } |
| | | } |
| | | #endregion |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | content.Error(ex.Message); |
| | | } |
| | | finally |
| | | { |
| | | // å¨ finally ä¸å¤æåªä¸ªå¯¹è±¡è¢«èµå¼äº |
| | | object logObject = null; |
| | | string deviceName = ""; |
| | | |
| | | if (updateGALAXISTaskGrade != null) |
| | | { |
| | | logObject = updateGALAXISTaskGrade; |
| | | deviceName = "å¯ä¹å£«AGV"; |
| | | } |
| | | else if (Hkrequest != null) |
| | | { |
| | | logObject = Hkrequest; |
| | | deviceName = "海康æºå¨äºº"; |
| | | } |
| | | else if (request != null) |
| | | { |
| | | logObject = request; |
| | | deviceName = "åå车"; |
| | | } |
| | | |
| | | if (logObject != null) |
| | | { |
| | | _trackloginfoService.AddTrackLog(logObject, content, $"ä¿®æ¹{deviceName}ä»»å¡ä¼å
级", "", ""); |
| | | } |
| | | } |
| | | return content; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// ä¿®æ¹åºä½ååº |
| | | /// </summary> |
| | | /// <returns></returns> |
| | | public WebResponseContent ModifyWMSLayoutZone(WMSUpdateLocationArea wMSUpdateLocationArea) |
| | | { |
| | | WebResponseContent content = new WebResponseContent(); |
| | | try |
| | | { |
| | | var rgv = new List<Dt_RGVLocationInfo>(); |
| | | var kls = new List<Dt_KLSLocationInfo>(); |
| | | var hk = new List<Dt_HKLocationInfo>(); |
| | | if (wMSUpdateLocationArea.WarehouseId == 1) |
| | | { |
| | | var rgvList = _rGVLocationInfoService.Repository.QueryData(x => wMSUpdateLocationArea.LocationCodes.Contains(x.LocationCode)).ToList(); |
| | | foreach (var item in rgvList) |
| | | { |
| | | item.WarehouseId = wMSUpdateLocationArea.UpdateAreaCode.ObjToInt(); |
| | | } |
| | | rgv.AddRange(rgvList); |
| | | } |
| | | if (wMSUpdateLocationArea.WarehouseId == 2) |
| | | { |
| | | |
| | | var KLSLocationInfoList = _kLSLocationInfoService.Repository.QueryData(x => wMSUpdateLocationArea.LocationCodes.Contains(x.LocationCode)).ToList(); |
| | | foreach (var item in KLSLocationInfoList) |
| | | { |
| | | item.WarehouseId = wMSUpdateLocationArea.UpdateAreaCode.ObjToInt(); |
| | | } |
| | | kls.AddRange(KLSLocationInfoList); |
| | | } |
| | | if (wMSUpdateLocationArea.WarehouseId == 3) |
| | | { |
| | | var hkList = _hKLocationInfoService.Repository.QueryData(x => wMSUpdateLocationArea.LocationCodes.Contains(x.LocationCode)).ToList(); |
| | | foreach (var item in hkList) |
| | | { |
| | | item.WarehouseId = wMSUpdateLocationArea.UpdateAreaCode.ObjToInt(); |
| | | } |
| | | hk.AddRange(hkList); |
| | | } |
| | | Db.Ado.BeginTran(); |
| | | _rGVLocationInfoService.UpdateData(rgv); |
| | | _kLSLocationInfoService.UpdateData(kls); |
| | | _hKLocationInfoService.UpdateData(hk); |
| | | Db.Ado.CommitTran(); |
| | | content.OK(); |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | content.Error(ex.Message); |
| | | } |
| | | return content; |
| | | } |
| | | |
| | | private void UpdateLocationCode(object LocationInfo, string updateAreaCode) |
| | | { |
| | | |
| | | } |
| | | |
| | | |
| | | /// <summary> |
| | | /// æ¥æ¶WMSä»»å¡ä¿¡æ¯ |
| | | /// </summary> |
| | |
| | | } |
| | | return content; |
| | | } |
| | | |
| | | static object lock_taskNum = new object(); |
| | | public int GetTaskNum(string sequenceName) |
| | | { |
| | | lock (lock_taskNum) |
| | | { |
| | | return Db.Ado.GetScalar($"SELECT NEXT VALUE FOR {sequenceName}").ObjToInt(); |
| | | } |
| | | } |
| | | |
| | | /// <summary> |
| | | /// åºååºä½ä¿¡æ¯æ¥è¯¢ |
| | | /// </summary> |
| | | /// <param name="AreaCode"></param> |
| | | /// <returns></returns> |
| | | /// <exception cref="NotImplementedException">åºåå·</exception> |
| | | public WebResponseContent LocationInquiry(WMSGetLocationInfo getLocationInfo) |
| | | { |
| | | WebResponseContent content = new WebResponseContent(); |
| | | List<object> list = new List<object>(); |
| | | try |
| | | { |
| | | if (getLocationInfo == null) throw new Exception("请æ±åæ°ä¸è½ä¸ºç©ºï¼"); |
| | | if (getLocationInfo.AreaCode == null) throw new Exception("åºåºç¼å·ä¸è½ä¸ºç©ºï¼"); |
| | | if (getLocationInfo.WarehouseId == 0) throw new Exception("ä»åºIDä¸è½ä¸ºç©ºï¼"); |
| | | if (getLocationInfo.WarehouseId == 1) |
| | | { |
| | | List<Dt_RGVLocationInfo> rGVLocationInfos = _rGVLocationInfoService.Repository.QueryData(x => x.WarehouseId == getLocationInfo.AreaCode.ObjToInt()); |
| | | foreach (var item in rGVLocationInfos) |
| | | { |
| | | list.Add(new |
| | | { |
| | | LoctionCode = item.LocationCode, |
| | | LocationStatus = item.LocationStatus, |
| | | EnableStatus = item.EnableStatus |
| | | }); |
| | | } |
| | | content.Data = list; |
| | | } |
| | | else if (getLocationInfo.WarehouseId == 2) |
| | | { |
| | | |
| | | } |
| | | else if (getLocationInfo.WarehouseId == 3) |
| | | { |
| | | |
| | | } |
| | | else if (getLocationInfo.WarehouseId == 4) |
| | | { |
| | | |
| | | } |
| | | else if (getLocationInfo.WarehouseId == 5) |
| | | { |
| | | |
| | | } |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | content.Error(ex.Message); |
| | | } |
| | | return content; |
| | | } |
| | | |
| | | |
| | | /// <summary> |
| | | /// å°å¾åæ¥ |
| | | /// </summary> |
| | | /// <param name="mapSynchronizationDto"></param> |
| | | /// <returns></returns> |
| | | public WebResponseContent MapSynchronize(MapSynchronizationDto mapSynchronizationDto) |
| | | { |
| | | return WebResponseContent.Instance; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// åºå
¥åºå®æ |
| | | /// </summary> |
| | | /// <param name=""></param> |
| | | /// <returns></returns> |
| | | /// <exception cref="NotImplementedException"></exception> |
| | | public WebResponseContent InandoutCompleted(WMSInOutBoundCompleteFeedback wMSInOutBoundCompleteFeedback) |
| | | { |
| | | throw new NotImplementedException(); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// æç®±éªè¯ |
| | | /// </summary> |
| | | /// <param name="taskCode">ä»»å¡å·</param> |
| | | /// <param name="containerCode">容å¨ç¼ç </param> |
| | | /// <returns></returns> |
| | | public WebResponseContent MaterialBoxInspection(string taskCode, string containerCode) |
| | | { |
| | | throw new NotImplementedException(); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// wcsç§»åºæ°æ®åä¼ |
| | | /// </summary> |
| | | /// <param name="wMSMoveLocationFeedback"></param> |
| | | public WebResponseContent WcsMovingDataBack(WMSMoveLocationFeedback wMSMoveLocationFeedback) |
| | | { |
| | | throw new NotImplementedException(); |
| | | } |
| | | /// <summary> |
| | | /// 容卿µå¨è¯·æ± |
| | | /// </summary> |
| | | /// <param name="wMSContainerFlow"></param> |
| | | /// <returns></returns> |
| | | /// <exception cref="NotImplementedException"></exception> |
| | | public WebResponseContent ContainerRequest(WMSContainerFlow wMSContainerFlow) |
| | | { |
| | | try |
| | | { |
| | | Dt_StationManger stationManger = _stationMangerService.Repository.QueryFirst(x => x.StationCode == wMSContainerFlow.slotCode) ?? throw new Exception($"æªæ¾å°ç«å°ã{wMSContainerFlow.slotCode}ãä¿¡æ¯"); |
| | | Dt_ApiInfo? apiInfo = _apiInfoService.Repository.QueryFirst(x => x.ApiCode == "releaseStation") ?? throw new Exception("æªæ¾å°ç«ç¹å®¹å¨éæ¾æ¥å£é
置信æ¯ï¼è¯·æ£æ¥æ¥å£é
ç½®"); |
| | | if (wMSContainerFlow.direction == "200") |
| | | { |
| | | stationManger.IsOccupied = LocationStatusEnum.Free.ObjToInt(); |
| | | FOURBOToccupyStation fOURBOToccupyStation = new FOURBOToccupyStation() |
| | | { |
| | | stationCode = wMSContainerFlow.slotCode, |
| | | }; |
| | | string response = HttpHelper.Post(apiInfo.ApiAddress, fOURBOToccupyStation.Serialize()); |
| | | FOURBOTReturn fOURBOTReturn = response.DeserializeObject<FOURBOTReturn>(); |
| | | if (fOURBOTReturn.returnCode != 0) throw new Exception(fOURBOTReturn.returnUserMsg); |
| | | _stationMangerService.UpdateData(stationManger); |
| | | } |
| | | return WebResponseContent.Instance.OK(); |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | return WebResponseContent.Instance.Error(ex.Message); |
| | | } |
| | | } |
| | | /// <summary> |
| | | /// è´¨æ£ç»æåé¦ |
| | | /// </summary> |
| | | /// <param name="iQC"></param> |
| | | /// <returns></returns> |
| | | /// <exception cref="NotImplementedException"></exception> |
| | | public WebResponseContent IQCResult(IQCResultDTO iQC) |
| | | { |
| | | WebResponseContent content = new WebResponseContent(); |
| | | try |
| | | { |
| | | #region 容å¨ä¸æ¶ |
| | | Dt_StationManger stationManger = _stationMangerService.Repository.QueryFirst(x => x.StationCode == iQC.StationCode) ?? throw new Exception($"æªæ¾å°ç«å°ã{iQC.StationCode}ãä¿¡æ¯"); |
| | | Dt_ApiInfo? apiInfo = _apiInfoService.Repository.QueryFirst(x => x.ApiCode == nameof(FOURBOToccupyStation)) ?? throw new Exception("æªæ¾å°ç«ç¹å®¹å¨ä¸æ¶æ¥å£é
置信æ¯ï¼è¯·æ£æ¥æ¥å£é
ç½®"); |
| | | FOURBOToccupyStation fOURBOToccupyStation = new FOURBOToccupyStation() |
| | | { |
| | | stationCode = iQC.StationCode, |
| | | podID = iQC.ContainerCode, |
| | | }; |
| | | string response = HttpHelper.Post(apiInfo.ApiAddress, fOURBOToccupyStation.Serialize()); |
| | | FOURBOTReturn fOURBOTReturn = response.DeserializeObject<FOURBOTReturn>(); |
| | | if (fOURBOTReturn.returnCode != 0 /*&& fOURBOTReturn.returnUserMsg != $"ç«ç¹å·²è¢«å ç¨,(podID={iQC.ContainerCode})"*/) |
| | | throw new Exception(fOURBOTReturn.returnUserMsg); |
| | | #endregion |
| | | |
| | | #region å建ååè½¦ä»»å¡ |
| | | //var task = BaseDal.QueryFirst(x => x.PalletCode == iQC.ContainerCode && x.SourceAddress == iQC.StationCode && x.TaskState == (int)TaskStatusEnum.New); |
| | | #endregion |
| | | #region å¼å«åå车 |
| | | //apiInfo = _apiInfoService.Repository.QueryFirst(x => x.ApiCode == nameof(FOURBOTnewMovePodTask)) ?? throw new Exception("æªæ¾å°åå车任å¡ä¸åæ¥å£é
置信æ¯ï¼è¯·æ£æ¥æ¥å£é
ç½®"); |
| | | //FOURBOTnewMovePodTask fOURBOTnewMovePodTask = new() |
| | | //{ |
| | | // priority = task.Grade, |
| | | // podID = task.PalletCode, |
| | | // //desNodeID = task.SourceAddress, |
| | | // desExt = new |
| | | // { |
| | | // unload = 0//æ¯å¦æ¾ä¸å®¹å¨,0å¦1æ¯ |
| | | // }, |
| | | // desStationCodes = task.SourceAddress, |
| | | // desType = 5 |
| | | //}; |
| | | //response = HttpHelper.Post(apiInfo.ApiAddress, fOURBOTnewMovePodTask.Serialize()); |
| | | //fOURBOTReturn = response.DeserializeObject<FOURBOTReturn>(); |
| | | //content.Data = fOURBOTReturn; |
| | | //if (fOURBOTReturn.returnCode != 0) throw new Exception(fOURBOTReturn.returnUserMsg); |
| | | //task.TaskState = (int)TaskStatusEnum.Execut; |
| | | //BaseDal.UpdateData(task); |
| | | #endregion |
| | | return WebResponseContent.Instance.OK(); |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | return WebResponseContent.Instance.Error(ex.Message); |
| | | } |
| | | } |
| | | |
| | | /// <summary> |
| | | /// æ¹éæ´æ°å¨ä½ç¶æ |
| | | /// </summary> |
| | | /// <param name="fOURBOTStorageStatusNotify"></param> |
| | | /// <returns></returns> |
| | | /// <exception cref="NotImplementedException"></exception> |
| | | public WebResponseContent multiSetNodeStatus(FOURBOTStorageStatusNotify fOURBOTStorageStatusNotify) |
| | | { |
| | | try |
| | | { |
| | | var Agvlocation = _rGVLocationInfoService.Repository.QueryData(x => fOURBOTStorageStatusNotify.storageCode.Contains(x.LocationCode)); |
| | | foreach (var item in Agvlocation) |
| | | { |
| | | item.EnableStatus = (int)(fOURBOTStorageStatusNotify.disable == 0 ? EnableStatusEnum.Normal : EnableStatusEnum.Disable); |
| | | } |
| | | _rGVLocationInfoService.UpdateData(Agvlocation); |
| | | return WebResponseContent.Instance.OK(); |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | |
| | | return WebResponseContent.Instance.Error(ex.Message); |
| | | } |
| | | } |
| | | } |
| | | } |