| | |
| | | #endregion << ç æ¬ 注 é >> |
| | | |
| | | using AutoMapper; |
| | | using Dm; |
| | | using SqlSugar; |
| | | using System.Diagnostics.CodeAnalysis; |
| | | using System.Threading.Tasks; |
| | | using WIDESEAWCS_BasicInfoService; |
| | | using WIDESEAWCS_Common; |
| | | 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.RGV.FOURBOT; |
| | | using WIDESEAWCS_DTO.TaskInfo; |
| | | using WIDESEAWCS_DTO.WMS; |
| | | using WIDESEAWCS_IBasicInfoService; |
| | |
| | | { |
| | | 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) : base(BaseDal) |
| | | { |
| | | _routerService = routerService; |
| | | _taskExecuteDetailService = taskExecuteDetailService; |
| | |
| | | _kLSLocationInfoService = kLSLocationInfoService; |
| | | _rGVLocationInfoService = rGVLocationInfoService; |
| | | _hKLocationInfoService = hKLocationInfoService; |
| | | _apiInfoService = apiInfoService; |
| | | _trackloginfoService = trackloginfoService; |
| | | } |
| | | public WebResponseContent ReceiveWMSTask([NotNull] List<WMSTasksDTO> taskDTOs) |
| | | { |
| | |
| | | { |
| | | continue; |
| | | } |
| | | if (item.taskType == TaskTypeEnum.MLInbound.ObjToInt()) |
| | | CreateKLSNewInTask(task, item.taskType); |
| | | else if (item.taskType == TaskTypeEnum.MLOutbound.ObjToInt()) |
| | | CreateKLSNewOutTask(task, item.taskType); |
| | | switch (item.taskType) |
| | | { |
| | | case (int)TaskTypeEnum.MLInbound: |
| | | CreateKLSNewInTask(task, item.taskType); |
| | | break; |
| | | case (int)TaskTypeEnum.MLOutbound: |
| | | CreateKLSNewOutTask(task, item.taskType); |
| | | break; |
| | | case (int)TaskTypeEnum.CPInbound: |
| | | CreateRGVNewInTask(task, item.taskType); |
| | | break; |
| | | case (int)TaskTypeEnum.CPOutbound: |
| | | CreateRGVNewOutTask(task, item.taskType); |
| | | break; |
| | | case (int)TaskTypeEnum.CJInbound: |
| | | CreateHKNewInTask(task, item.taskType); |
| | | break; |
| | | case (int)TaskTypeEnum.CJOutbound: |
| | | CreateHKNewOutTask(task, item.taskType); |
| | | break; |
| | | case (int)TaskTypeEnum.Carry: |
| | | CarryTask(task, item.taskType); |
| | | break; |
| | | case (int)TaskTypeEnum.CJCarry: |
| | | CJCarryTaske(task, item.taskType); |
| | | break; |
| | | default: |
| | | break; |
| | | } |
| | | } |
| | | } |
| | | } |
| | |
| | | } |
| | | return content; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// åæ¶ä»»å¡ |
| | | /// </summary> |
| | | /// <param name="taskCode">ä»»å¡å·</param> |
| | | /// <param name="containerCode">æç®±æ¡ç </param> |
| | | /// <returns></returns> |
| | | public WebResponseContent CancelWMSTask(WMSCancelTask wMSCancelTask) |
| | | { |
| | | WebResponseContent content = new WebResponseContent(); |
| | | 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) |
| | | { |
| | | var 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.èªå¨å®æ); |
| | | return content.OK("忶任塿å", dt_Task); |
| | | } |
| | | else |
| | | { |
| | | return content.Error($"ä»»å¡å¤±è´¥{agvContent.data.returnInfo}"); |
| | | |
| | | } |
| | | } |
| | | #endregion |
| | | |
| | | #region åå车 |
| | | if (isAGV) |
| | | { |
| | | CancelSXCTake cancelSXCTake = new CancelSXCTake |
| | | { |
| | | taskID = dt_Task.RGVTaskId |
| | | }; |
| | | 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.èªå¨å®æ); |
| | | return content.OK("忶任塿å", dt_Task); |
| | | } |
| | | else |
| | | { |
| | | return content.Error($"ä»»å¡å¤±è´¥{fOURBOTReturn.data}"); |
| | | } |
| | | } |
| | | #endregion |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | content.Error(ex.Message); |
| | | } |
| | | return content; |
| | | } |
| | | |
| | | |
| | | /// <summary> |
| | | /// ä¿®æ¹ä»»å¡ä¼å
级 |
| | | /// </summary> |
| | | /// <param name="updateTaskPriority"></param> |
| | | /// <returns></returns> |
| | | public WebResponseContent UpdateWMSTaskPriority(WMSUpdateTaskPriority updateTaskPriority) |
| | | { |
| | | WebResponseContent content = new WebResponseContent(); |
| | | 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) |
| | | { |
| | | var updateGALAXISTaskGrade = new UpdateGALAXISTaskGrade |
| | | { |
| | | taskId = dt_Task.WMSTaskNum, |
| | | reportTime = DateTime.Now.ToString(), |
| | | district = dt_Task.Roadway,//ä»»å¡åºåº |
| | | 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); |
| | | return content.OK("ä¿®æ¹ä»»å¡ä¼å
级æå", dt_Task); |
| | | } |
| | | else { |
| | | return content.Error($"ä»»å¡å¤±è´¥{agvContent.data.returnInfo}"); |
| | | } |
| | | } |
| | | #endregion |
| | | |
| | | #region åå车 |
| | | if (isAGV) |
| | | { |
| | | var 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("æªæ¾å°åå车AGVä»»å¡ä¸åæ¥å£é
置信æ¯ï¼è¯·æ£æ¥æ¥å£é
ç½®"); |
| | | string response = HttpHelper.Post(apiInfo.ApiAddress, request.Serialize()); |
| | | FOURBOTReturn fOURBOTReturn = response.DeserializeObject<FOURBOTReturn>(); |
| | | if (fOURBOTReturn.returnCode == 0 && fOURBOTReturn .returnUserMsg== "æå") |
| | | { |
| | | |
| | | return content.OK("ä¿®æ¹ä»»å¡ä¼å
级æå", dt_Task); |
| | | } |
| | | else |
| | | { |
| | | return content.Error($"ä»»å¡å¤±è´¥{fOURBOTReturn.data}"); |
| | | } |
| | | } |
| | | #endregion |
| | | |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | content.Error(ex.Message); |
| | | } |
| | | 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 Db.Ado.GetScalar($"SELECT NEXT VALUE FOR {sequenceName}").ObjToInt(); |
| | | } |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 容卿µå¨è¯·æ± |
| | | /// </summary> |
| | | /// <param name="wMSContainerFlow"></param> |
| | | /// <returns></returns> |
| | | /// <exception cref="NotImplementedException"></exception> |
| | | public WebResponseContent ContainerFlow(WMSContainerFlow wMSContainerFlow) |
| | | { |
| | | return WebResponseContent.Instance.Error("该æ¥å£ææªå®ç°"); |
| | | } |
| | | |
| | | |
| | | /// <summary> |
| | | /// åºååºä½ä¿¡æ¯æ¥è¯¢ |
| | | /// </summary> |
| | | /// <param name="AreaCode"></param> |
| | | /// <returns></returns> |
| | | /// <exception cref="NotImplementedException">åºåå·</exception> |
| | | public WebResponseContent LocationInquiry(string AreaCode) |
| | | { |
| | | if (AreaCode == null) |
| | | { |
| | | //æ¥è¯¢è¾é线空æç¼åä¿¡æ¯æ¶è¿åç©ºä½æ°é |
| | | } |
| | | return WebResponseContent.Instance.OK(); |
| | | |
| | | } |
| | | |
| | | |
| | | /// <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(); |
| | | } |
| | | } |
| | | } |