| | |
| | | using WIDESEAWCS_Core.Enums; |
| | | using WIDESEAWCS_Core.Helper; |
| | | using WIDESEAWCS_DTO; |
| | | using WIDESEAWCS_DTO.AGV.HIKROBOT; |
| | | using WIDESEAWCS_DTO.RGV.FOURBOT; |
| | | using WIDESEAWCS_DTO.WMS; |
| | | using WIDESEAWCS_Model.Models; |
| | | |
| | |
| | | |
| | | WebResponseContent content = new WebResponseContent(); |
| | | GALAXISUpdateTaskStatus gALAXIS = new(); |
| | | FOURBOTTaskStatusNotify Rgv = new();//åå车任å¡ç¶æéç¥ |
| | | HIKROBOTTaskProcessReport hIKROBOT = new();//海康æºå¨äºº |
| | | try |
| | | { |
| | | if (deviceTypeEnum == DeviceTypeEnum.GALAXIS) |
| | |
| | | } |
| | | else if (deviceTypeEnum == DeviceTypeEnum.HIKROBOT) |
| | | { |
| | | |
| | | hIKROBOT=TaskDTO.Serialize().DeserializeObject<HIKROBOTTaskProcessReport>(); |
| | | if (hIKROBOT==null) throw new Exception("åæ°è½¬æ¢å¤±è´¥ï¼"); |
| | | var task = BaseDal.QueryFirst(x => x.WMSTaskNum == hIKROBOT.robotTaskCode); |
| | | if (task == null) throw new Exception($"æªæ¾å°ä»»å¡,ä»»å¡ç¼å·ã{hIKROBOT.robotTaskCode}ã"); |
| | | switch (hIKROBOT.extra.values.method) |
| | | { |
| | | case "start": |
| | | TaskCompleted(task, deviceTypeEnum); |
| | | break; |
| | | case "end": |
| | | TaskFromCompleted(task, deviceTypeEnum); |
| | | break; |
| | | default: |
| | | task.TaskState = ReturnTaskStatus(gALAXIS.taskStatus, deviceTypeEnum); |
| | | BaseDal.UpdateData(task); |
| | | break; |
| | | } |
| | | } |
| | | else //åå车 |
| | | { |
| | | Rgv = TaskDTO.Serialize().DeserializeObject<FOURBOTTaskStatusNotify>(); |
| | | if (Rgv==null) throw new Exception("åæ°è½¬æ¢å¤±è´¥ï¼"); |
| | | var task = BaseDal.QueryFirst(x => x.WMSTaskNum == Rgv.taskID.ToString()); |
| | | if (task==null) throw new Exception($"æªæ¾å°ä»»å¡,ä»»å¡ç¼å·ã{Rgv.taskID}ã"); |
| | | switch (Rgv.status) |
| | | { |
| | | case 2: |
| | | TaskCompleted(task, deviceTypeEnum); |
| | | break; |
| | | case 4: |
| | | TaskFromCompleted(task, deviceTypeEnum); |
| | | break; |
| | | default: |
| | | task.TaskState = ReturnTaskStatus(gALAXIS.taskStatus, deviceTypeEnum); |
| | | break; |
| | | } |
| | | |
| | | |
| | | } |
| | | //return WebResponseContent.Instance.OK(); |
| | | return content.OK(); |
| | | } |
| | | catch (Exception ex) |
| | |
| | | } |
| | | finally |
| | | { |
| | | _trackloginfoService.AddTrackLog(gALAXIS, content, "ä¸åå¯ä¹å£«AGVä»»å¡", "", ""); |
| | | // å¨ finally ä¸å¤æåªä¸ªå¯¹è±¡è¢«èµå¼äº |
| | | object logObject = null; |
| | | string deviceName = ""; |
| | | |
| | | if (gALAXIS != null && gALAXIS.taskId != null) |
| | | { |
| | | logObject = gALAXIS; |
| | | deviceName = "å¯ä¹å£«AGV"; |
| | | } |
| | | else if (hIKROBOT != null && hIKROBOT.robotTaskCode != null) |
| | | { |
| | | logObject = hIKROBOT; |
| | | deviceName = "海康æºå¨äºº"; |
| | | } |
| | | else if (Rgv != null && Rgv.taskID != 0) |
| | | { |
| | | logObject = Rgv; |
| | | deviceName = "åå车"; |
| | | } |
| | | |
| | | if (logObject != null) |
| | | { |
| | | _trackloginfoService.AddTrackLog(logObject, content, $"ä¸å{deviceName}ä»»å¡", "", ""); |
| | | } |
| | | } |
| | | } |
| | | #endregion |
| | |
| | | { |
| | | dt_Task.TaskState = TaskStatusEnum.TakeFinish.ObjToInt(); |
| | | Db.Ado.BeginTran(); |
| | | UpdateLocationStatus(dt_Task.SourceAddress, deviceTypeEnum, LocationStatusEnum.Free); |
| | | UpdateLocationStatus(dt_Task, deviceTypeEnum, LocationStatusEnum.Free); |
| | | BaseDal.UpdateData(dt_Task); |
| | | Db.Ado.CommitTran(); |
| | | return WebResponseContent.Instance.OK(); |
| | |
| | | if (agvContent.code != 0) dt_Task.ExceptionMessage = agvContent.msg; |
| | | } |
| | | Db.Ado.BeginTran(); |
| | | UpdateLocationStatus(dt_Task.TargetAddress, deviceTypeEnum, LocationStatusEnum.InStock); |
| | | UpdateLocationStatus(dt_Task, deviceTypeEnum, LocationStatusEnum.InStock); |
| | | if (agvContent != null && agvContent.code == 0) |
| | | BaseDal.DeleteAndMoveIntoHty(dt_Task, OperateTypeEnum.èªå¨å®æ); |
| | | else |
| | |
| | | /// <param name="deviceTypeEnum"></param> |
| | | /// <param name="locationStatusEnum"></param> |
| | | /// <returns></returns> |
| | | public WebResponseContent UpdateLocationStatus(string LocationCode, DeviceTypeEnum deviceTypeEnum, LocationStatusEnum locationStatusEnum) |
| | | public WebResponseContent UpdateLocationStatus(Dt_Task takse, DeviceTypeEnum deviceTypeEnum, LocationStatusEnum locationStatusEnum) |
| | | { |
| | | try |
| | | { |
| | | if (deviceTypeEnum == DeviceTypeEnum.GALAXIS) |
| | | { |
| | | Dt_KLSLocationInfo? dt_KLSLocationInfo = _kLSLocationInfoService.Repository.QueryFirst(x => x.LocationCode == LocationCode); |
| | | Dt_KLSLocationInfo? dt_KLSLocationInfo = _kLSLocationInfoService.Repository.QueryFirst(x => x.LocationCode == takse.SourceAddress); |
| | | if (dt_KLSLocationInfo != null) |
| | | { |
| | | if (locationStatusEnum== LocationStatusEnum.Free) //å¦æèµ·ç¹å®æå°±ç»è´§ä½èµå¼æçå· |
| | | { |
| | | dt_KLSLocationInfo.PalletCode = ""; |
| | | } |
| | | else |
| | | { |
| | | dt_KLSLocationInfo.PalletCode = takse.PalletCode; |
| | | } |
| | | dt_KLSLocationInfo.LocationStatus = locationStatusEnum.ObjToInt(); |
| | | _kLSLocationInfoService.Repository.UpdateData(dt_KLSLocationInfo); |
| | | } |
| | | } |
| | | else if (deviceTypeEnum == DeviceTypeEnum.HIKROBOT) |
| | | { |
| | | Dt_HKLocationInfo? dt_HKLocationInfo = _hKLocationInfoService.Repository.QueryFirst(x => x.LocationCode == LocationCode); |
| | | Dt_HKLocationInfo? dt_HKLocationInfo = _hKLocationInfoService.Repository.QueryFirst(x => x.LocationCode == takse.SourceAddress); |
| | | if (dt_HKLocationInfo != null) |
| | | { |
| | | if (locationStatusEnum == LocationStatusEnum.Free) //å¦æèµ·ç¹å®æå°±ç»è´§ä½èµå¼æçå· |
| | | { |
| | | dt_HKLocationInfo.PalletCode = ""; |
| | | } |
| | | else |
| | | { |
| | | dt_HKLocationInfo.PalletCode = takse.PalletCode; |
| | | } |
| | | dt_HKLocationInfo.LocationStatus = locationStatusEnum.ObjToInt(); |
| | | _hKLocationInfoService.Repository.UpdateData(dt_HKLocationInfo); |
| | | } |
| | | } |
| | | else if (deviceTypeEnum == DeviceTypeEnum.YuanLiJuHe) |
| | | { |
| | | Dt_RGVLocationInfo dt_RGVLocationInfo = _rGVLocationInfoService.Repository.QueryFirst(x => x.LocationCode == LocationCode); |
| | | Dt_RGVLocationInfo dt_RGVLocationInfo = _rGVLocationInfoService.Repository.QueryFirst(x => x.LocationCode == takse.SourceAddress); |
| | | //è¿éå°ä»»å¡çæçå·ç»è´§ä½è¡¨ä¸çPalletCodeåæ®µã |
| | | |
| | | if (dt_RGVLocationInfo != null) |
| | | { |
| | | if (locationStatusEnum == LocationStatusEnum.Free) //å¦æèµ·ç¹å®æå°±ç»è´§ä½èµå¼æçå· |
| | | { |
| | | dt_RGVLocationInfo.PalletCode = ""; |
| | | } |
| | | else |
| | | { |
| | | dt_RGVLocationInfo.PalletCode = takse.PalletCode; |
| | | } |
| | | dt_RGVLocationInfo.LocationStatus = locationStatusEnum.ObjToInt(); |
| | | _rGVLocationInfoService.Repository.UpdateData(dt_RGVLocationInfo); |
| | | } |