| | |
| | | /// </summary> |
| | | /// <param name="agvcode"></param> |
| | | /// <returns></returns> |
| | | public WebResponseContent CheckTheCar() |
| | | public WebResponseContent CheckTheCar(string hkagvType) |
| | | { |
| | | WebResponseContent content = new WebResponseContent(); |
| | | List<HIKROBOTQueryData> dataList = new List<HIKROBOTQueryData>(); |
| | |
| | | |
| | | try |
| | | { |
| | | var agvInfo = Repository.QueryData(); |
| | | var agvInfo = Repository.QueryData(x => x.HkagvType == hkagvType); |
| | | if (agvInfo == null || !agvInfo.Any()) |
| | | { |
| | | content.Error("æªæ¥è¯¢å°AGVå°è½¦ä¿¡æ¯"); |
| | |
| | | |
| | | foreach (var item in agvInfo) |
| | | { |
| | | var headers = new Dictionary<string, string> |
| | | var headers = new Dictionary<string, string> |
| | | { |
| | | { "X-lr-request-id", DateTimeOffset.Now.ToUnixTimeSeconds().ToString() + item.AGVCode } |
| | | }; |
| | |
| | | dataList.Add(new HIKROBOTQueryData |
| | | { |
| | | singleRobotCode = item.AGVCode, |
| | | mapCode = queryData?.mapCode ?? string.Empty |
| | | mapCode = queryData?.mapCode ?? string.Empty, |
| | | CarType = item.HkagvType // 仿¬å°æ°æ®åºè·åå°è½¦ç±»å |
| | | }); |
| | | |
| | | successMessages.Add($"AGVå°è½¦-{item.AGVCode}æå¨æ¥¼å±{queryData?.mapCode}æ¥è¯¢æå"); |
| | |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | } |
| | | } |
| | |
| | | Outboundmaterialbox, |
| | | |
| | | /// <summary> |
| | | /// 4æ¥¼ç©ºç®±ç®±å· |
| | | /// 4楼åºåºç®±ç®± |
| | | /// </summary> |
| | | Emptycontainernumber, |
| | | |
| | |
| | | |
| | | |
| | | /// <summary> |
| | | /// å¼å«æµ·åº·æ¬è¿ä¸ 19 |
| | | /// å¼å«AGVå°è½¦ä¸ |
| | | /// </summary> |
| | | [Description("çå¾
海康AGVæ¬è¿å°ä½")] |
| | | [Description("å¼å«AGVå°è½¦ä¸")] |
| | | WaitingHkAGVMovePosition, |
| | | |
| | | |
| | | /// <summary> |
| | | /// å¼å«æµ·åº·æ¬è¿ä¸ |
| | | /// 海康AGV空车跨å±ä¸å |
| | | /// </summary> |
| | | [Description("å¼å«æµ·åº·AGVæ¬è¿")] |
| | | [Description("海康AGV空车跨å±ä¸å")] |
| | | CallingHKtransportation, |
| | | |
| | | /// <summary> |
| | | /// 海康AGVæ¬è¿ä¸ |
| | | /// 海康AGV空车跨å±è¿è¡ä¸ |
| | | /// </summary> |
| | | [Description("海康AGVæ¬è¿ä¸")] |
| | | [Description("海康AGV空车跨å±è¿è¡ä¸")] |
| | | HktransportIng, |
| | | |
| | | /// <summary> |
| | | /// 海康AGVæ¬è¿å®æ 22 |
| | | /// 海康AGV空车跨å±å®æ |
| | | /// </summary> |
| | | [Description("海康AGVæ¬è¿å®æ")] |
| | | [Description("海康AGV空车跨å±å®æ")] |
| | | HkTransportCompleted, |
| | | |
| | | |
| | |
| | | /// ç©ºè½¦è·¨æ¥¼å± |
| | | /// </summary> |
| | | [Description("空车跨楼å±")] |
| | | Move, |
| | | MOVE, |
| | | |
| | | /// <summary> |
| | | /// æåç§»åº |
| | |
| | | /// å°è½¦ç¼å· |
| | | /// </summary> |
| | | public string singleRobotCode { get; set; } |
| | | |
| | | /// <summary> |
| | | /// å°è½¦ç±»å |
| | | /// </summary> |
| | | public string CarType { get; set; } |
| | | } |
| | | |
| | | public class FloorMapping |
| | | { |
| | | public static Dictionary<string, FloorInfo> FloorMap = new Dictionary<string, FloorInfo> |
| | | { |
| | | { "AA", new FloorInfo { Floor = "1楼", PointCode = "1A" } }, |
| | | { "BB", new FloorInfo { Floor = "2楼", PointCode = "2B" } }, |
| | | { "CC", new FloorInfo { Floor = "3楼", PointCode = "3C" } }, |
| | | { "DD", new FloorInfo { Floor = "4楼", PointCode = "4D" } }, |
| | | { "EE", new FloorInfo { Floor = "5楼", PointCode = "5E" } }, |
| | | { "FF", new FloorInfo { Floor = "6楼", PointCode = "6F" } } |
| | | }; |
| | | } |
| | | |
| | | public class FloorInfo |
| | | { |
| | | public string Floor { get; set; } |
| | | public string PointCode { get; set; } |
| | | } |
| | | } |
| | |
| | | { |
| | | public string warehouseID { get; set; } = "HETU"; |
| | | public string clientCode { get; set; } = "WCS"; |
| | | public string requestID { get; set; } = DateTime.Now.ToString("yyyyMMddHHmmss"); |
| | | public string requestID { get; set; } = DateTime.Now.ToString("yyyyMMddHHmmssfff"); |
| | | } |
| | | } |
| | |
| | | /// <summary> |
| | | /// TRUE |
| | | /// </summary> |
| | | public string success { get; set; } |
| | | public bool success { get; set; } |
| | | /// <summary> |
| | | /// æå |
| | | /// </summary> |
| | | public string result { get; set; } |
| | | public object result { get; set; } |
| | | /// <summary> |
| | | /// æ¶é´æ³ |
| | | /// </summary> |
| | |
| | | /// </summary> |
| | | public object data { get; set; } |
| | | } |
| | | |
| | | public class Exists |
| | | { |
| | | /// <summary> |
| | | /// æ¯å¦å¨é |
| | | /// </summary> |
| | | public bool taskExists { get; set; } |
| | | /// <summary> |
| | | /// å¼å¸¸å°å |
| | | /// </summary> |
| | | public string errorAreaCode { get; set; } |
| | | } |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using System.Linq; |
| | | using System.Text; |
| | | using System.Threading.Tasks; |
| | | |
| | | namespace WIDESEAWCS_DTO.WMS |
| | | { |
| | | /// <summary> |
| | | /// 4Fæåæºåºå£æçå·ä¸æ¥WMS |
| | | /// </summary> |
| | | public class inboundElevatorExitDTO |
| | | { |
| | | public string containerCode { get; set; } |
| | | public string toLocationCode { get; set; } |
| | | } |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using System.Linq; |
| | | using System.Text; |
| | | using System.Threading.Tasks; |
| | | |
| | | namespace WIDESEAWCS_DTO.WMS |
| | | { |
| | | /// <summary> |
| | | /// è£çå
¥åº3Få°4Fè¿è¾ç®±å·æ ¡éª |
| | | /// </summary> |
| | | public class inboundTransportCheckDTO |
| | | { |
| | | /// <summary> |
| | | /// æçå· |
| | | /// </summary> |
| | | public string containerCode { get; set; } |
| | | } |
| | | } |
| | |
| | | /// æ£æ¥æµ·åº·å°è½¦ |
| | | /// </summary> |
| | | /// <returns></returns> |
| | | WebResponseContent CheckTheCar(); |
| | | WebResponseContent CheckTheCar(string hkagvType); |
| | | } |
| | | } |
| | |
| | | /// <returns></returns> |
| | | public WebResponseContent MaterialBoxInspection(string taskCode ,string containerCode); |
| | | |
| | | /// <summary> |
| | | /// 4Fæåæºåºå£æçå·ä¸æ¥WMS |
| | | /// </summary> |
| | | /// <param name="LocationCode"></param> |
| | | /// <param name="containerCode"></param> |
| | | /// <returns></returns> |
| | | public WebResponseContent InboundElevatorExit(string LocationCode, string containerCode); |
| | | |
| | | /// <summary> |
| | | /// wcsç§»åºæ°æ®åä¼ |
| | |
| | | /// <summary> |
| | | /// å°è½¦ç¼å· |
| | | /// </summary> |
| | | [SugarColumn(IsNullable = false, Length = 50, ColumnDescription = "ç«å°ç¼å·")] |
| | | [SugarColumn(IsNullable = false, Length = 50, ColumnDescription = "å°è½¦ç¼å·")] |
| | | public string AGVCode { get; set; } |
| | | |
| | | |
| | | /// <summary> |
| | | /// å°è½¦ç±»å |
| | | /// </summary> |
| | | [SugarColumn(IsNullable = false, Length = 50, ColumnDescription = "å°è½¦ç±»å")] |
| | | public string HkagvType { get; set; } |
| | | /// <summary> |
| | | /// 夿³¨ |
| | | /// </summary> |
| | |
| | | /// </summary> |
| | | [ImporterHeader(Name = "æçç¼å·")] |
| | | [ExporterHeader(DisplayName = "æçç¼å·")] |
| | | [SugarColumn(IsNullable = false, Length = 50, ColumnDescription = "æçç¼å·")] |
| | | [SugarColumn(IsNullable = true, Length = 50, ColumnDescription = "æçç¼å·")] |
| | | public string PalletCode { get; set; } |
| | | |
| | | /// <summary> |
| | |
| | | { |
| | | public class Dt_Task_Hty : Dt_Task, IBaseHistoryEntity |
| | | { |
| | | public new DateTime CreateDate { get; set; } = DateTime.Now; |
| | | public new DateTime CreateDate { get; set; } |
| | | public int SourceId { get; set; } |
| | | |
| | | public string OperateType { get; set; } |
| | |
| | | } |
| | | |
| | | [HttpPost,Route("CheckTheCar"), AllowAnonymous] |
| | | public WebResponseContent CheckTheCar() |
| | | public WebResponseContent CheckTheCar(string hkagvType) |
| | | { |
| | | return Service.CheckTheCar(); |
| | | return Service.CheckTheCar(hkagvType); |
| | | } |
| | | |
| | | } |
| | |
| | | using WIDESEAWCS_DTO.AGV.HIKROBOT; |
| | | using System.Diagnostics.CodeAnalysis; |
| | | using System.Reflection.PortableExecutable; |
| | | using WIDESEAWCS_QuartzJob; |
| | | |
| | | namespace WIDESEAWCS_TaskInfoService |
| | | { |
| | |
| | | //è·åè´§ä½ä¿¡æ¯ |
| | | else |
| | | hKLocationInfo = _hKLocationInfoService.GetFreeLocationInfo(taskDTO.toAreaCode) ?? throw new Exception($"æªæ¾å°ç»ç¹åºåºã{taskDTO.toAreaCode}ãå¯ç¨ç©ºè´§ä½ï¼"); |
| | | if (taskType == (int)TaskTypeEnum.Q1TSJ4) |
| | | { |
| | | var device = Storage.Devices.FirstOrDefault(x => x.DeviceCode == "TSJ") as OtherDevice; |
| | | if (device.IsConnected) |
| | | { |
| | | var reslu = device.GetValue<HoistEnum, string>(HoistEnum.Emptycontainernumber); |
| | | var result = reslu?.TrimEnd('\0')?.Substring(2); |
| | | if (reslu == taskDTO.containerCode && result != null) |
| | | { |
| | | throw new Exception($"å½åçæç®±å·ä¸º{reslu}ä¸{taskDTO.containerCode}æç®±å·ä¸å¹é
"); |
| | | } |
| | | } |
| | | else |
| | | { |
| | | throw new Exception("æåæºä¿¡æ¯è®¾å¤è¿æ¥å¤±è´¥"); |
| | | } |
| | | } |
| | | Dt_Task dt_Task = new Dt_Task() |
| | | { |
| | | TaskNum = GetTaskNum(nameof(SequenceEnum.SeqTaskNum)), |
| | |
| | | Dt_HKLocationInfo? hKLocationInfo = _hKLocationInfoService.Repository.QueryFirst(x => x.LocationCode == taskDTO.fromLocationCode) ?? throw new Exception($"æªæ¾å°èµ·ç¹åºä½ã{taskDTO.fromLocationCode}ãï¼"); |
| | | if (hKLocationInfo.LocationStatus != LocationStatusEnum.InStock.ObjToInt()) throw new Exception($"èµ·ç¹åºä½ã{taskDTO.fromLocationCode}ãå½ååºä½ç¶æä¸å¯åºåºï¼"); |
| | | if (hKLocationInfo.PalletCode != taskDTO.containerCode) throw new Exception($"èµ·ç¹åºä½ã{taskDTO.fromLocationCode}ãç»å®æç®±å·ã{hKLocationInfo.PalletCode}ãä¸ä»»å¡æç®±å·ã{taskDTO.containerCode}ãä¸å¹é
ï¼"); |
| | | //åºå
å°åºå¤çç¹å°ç¹ä»»å¡ï¼æ¯å¦éè¦å¤æè´§ä½ç¶æï¼ |
| | | |
| | | Dt_Task dt_Task = new Dt_Task() |
| | | { |
| | | TaskNum = GetTaskNum(nameof(SequenceEnum.SeqTaskNum)), |
| | |
| | | hIKROBOTTaskSubmit.initPriority = task.Grade; |
| | | hIKROBOTTaskSubmit.robotTaskCode = task.WMSTaskNum; |
| | | hIKROBOTTaskSubmit.taskType = tasktype.ToString(); ExtraDto extraDto = new ExtraDto(); |
| | | CarrierInfoDto carrierInfoDto = new CarrierInfoDto() |
| | | if (task.TaskType != (int)TaskTypeEnum.MOVE && task.TaskType != (int)TaskTypeEnum.Q3RK && task.TaskType != (int)TaskTypeEnum.Q3CK && task.TaskType != (int)TaskTypeEnum.F01) |
| | | { |
| | | carrierCode = task.PalletCode, |
| | | carrierType = task.PalletCode.Contains("LXM") ? "DX" : "SX" |
| | | }; |
| | | extraDto.carrierInfo.Add(carrierInfoDto); |
| | | hIKROBOTTaskSubmit.extra = extraDto; |
| | | CarrierInfoDto carrierInfoDto = new CarrierInfoDto() |
| | | { |
| | | carrierCode = task.PalletCode, |
| | | carrierType = task.PalletCode.Contains("LXM") ? "DX" : "SX" |
| | | }; |
| | | extraDto.carrierInfo.Add(carrierInfoDto); |
| | | hIKROBOTTaskSubmit.extra = extraDto; |
| | | } |
| | | switch (tasktype) |
| | | { |
| | | case TaskTypeEnum.CPInbound: |
| | | case TaskTypeEnum.CPOutbound: |
| | | case TaskTypeEnum.MLInbound: |
| | | case TaskTypeEnum.MLOutbound: |
| | | break; |
| | | case TaskTypeEnum.F01: |
| | | break; |
| | | case TaskTypeEnum.RK3F: |
| | | case TaskTypeEnum.CK3F: |
| | |
| | | break; |
| | | case TaskTypeEnum.Q3RK: |
| | | case TaskTypeEnum.Q3CK: |
| | | case TaskTypeEnum.Move: |
| | | case TaskTypeEnum.MOVE: |
| | | case TaskTypeEnum.F01: |
| | | { |
| | | TargetRouteDto target = new TargetRouteDto() |
| | | { |
| | |
| | | using WIDESEAWCS_ITaskInfoService; |
| | | using WIDESEAWCS_Core.Helper; |
| | | using WIDESEAWCS_QuartzJob; |
| | | using System.Reflection.Metadata; |
| | | |
| | | namespace WIDESEAWCS_TaskInfoService |
| | | { |
| | |
| | | WebResponseContent content = new WebResponseContent(); |
| | | try |
| | | { |
| | | Dt_HKLocationInfo? hKLocationInfo = null; |
| | | Dt_StationInfo? stationInfo = null; |
| | | Dt_StationManger? stationInfo = null; |
| | | Dt_Task dt_Task = null; |
| | | //å
¥åº å°ä¸æ¥¼ä¸ä¸ªç«å°çä½ç½® |
| | | if (taskType == (int)TaskTypeEnum.Q3RK) |
| | | { |
| | | //读åå
çµä¿¡å· |
| | | 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楼质æ£é¨è®¾å¤è¿æ¥å¤±è´¥"); |
| | | bool value = device.GetValue<QualityInspectionCommandEnum, bool>(QualityInspectionCommandEnum.R_StockAvailableSymbol, taskDTO.toLocationCode); |
| | | if (value) |
| | | { |
| | | content.Error($"{taskDTO.toLocationCode}ç«å°æè´§ï¼æ æ³å
¥åº"); |
| | | } |
| | | dt_Task = new Dt_Task() |
| | | { |
| | | TaskNum = GetTaskNum(nameof(SequenceEnum.SeqTaskNum)), |
| | | WMSTaskNum = taskDTO.taskCode, |
| | | Grade = taskDTO.taskPriority, |
| | | PalletCode = taskDTO.containerCode, |
| | | Roadway = hKLocationInfo.RoadwayNo, |
| | | Roadway = "1", |
| | | TaskState = (int)TaskStatusEnum.New, |
| | | TaskType = taskType, |
| | | SourceAddress = taskDTO.fromLocationCode, |
| | |
| | | TargetAddress = taskDTO.toLocationCode, |
| | | Creater = "WMS", |
| | | }; |
| | | |
| | | } |
| | | //åºåº |
| | | if (taskType == (int)TaskTypeEnum.Q3CK) |
| | | { |
| | | stationInfo = _stationInfo.Repository.QueryFirst(x => x.StationName == taskDTO.toLocationCode) ?? throw new Exception($"æªæ¾å°èµ·ç¹åºä½ã{taskDTO.toLocationCode}ãï¼"); |
| | | if (stationInfo.StationName != LocationStatusEnum.InStock.ToString()) throw new Exception($"èµ·ç¹åºä½ã{taskDTO.toLocationCode}ãå½ååºä½ç¶æä¸å¯åºåºï¼"); |
| | | if (stationInfo.PalletCode != taskDTO.containerCode) throw new Exception($"èµ·ç¹åºä½ã{taskDTO.toLocationCode}ãç»å®æç®±å·ã{stationInfo.PalletCode}ãä¸ä»»å¡æç®±å·ã{taskDTO.containerCode}ãä¸å¹é
ï¼"); |
| | | dt_Task = new Dt_Task() |
| | | //stationInfo = _stationMangerService.Repository.QueryFirst(x => x.StationCode == taskDTO.fromLocationCode) ?? throw new Exception($"æªæ¾å°èµ·ç¹åºä½ã{taskDTO.fromLocationCode}ãï¼"); |
| | | //if (stationInfo.IsOccupied != (int)LocationStatusEnum.InStock) throw new Exception($"èµ·ç¹åºä½ã{taskDTO.fromLocationCode}ãå½ååºä½ç¶æä¸å¯åºåºï¼"); |
| | | dt_Task = new Dt_Task() |
| | | { |
| | | TaskNum = GetTaskNum(nameof(SequenceEnum.SeqTaskNum)), |
| | | WMSTaskNum = taskDTO.taskCode, |
| | | //WMSId = GetTaskNum(nameof(SequenceEnum.SeqTaskNum)), |
| | | Grade = taskDTO.taskPriority, |
| | | PalletCode = taskDTO.containerCode, |
| | | Roadway = hKLocationInfo.RoadwayNo, |
| | | Roadway = "1", |
| | | TaskState = (int)TaskStatusEnum.New, |
| | | TaskType = taskType, |
| | | SourceAddress = taskDTO.fromLocationCode, |
| | |
| | | { |
| | | Db.Ado.BeginTran(); |
| | | BaseDal.AddData(dt_Task); |
| | | _hKLocationInfoService.Repository.UpdateData(hKLocationInfo); |
| | | _stationInfo.Repository.UpdateData(stationInfo); |
| | | Db.Ado.CommitTran(); |
| | | } |
| | | catch (Exception ex) |
| | |
| | | public WebResponseContent CJCarryTaske(TaskDTO taskDTO, int taskType) |
| | | { |
| | | WebResponseContent content = new WebResponseContent(); |
| | | Dt_StationInfo? stationInfo = null; |
| | | try |
| | | { |
| | | //#region æ¯å¦éè¦å¤æå¹³åºåºä½ç¶æ |
| | | //if (taskType!= (int)TaskTypeEnum.CK3F) |
| | | //{ |
| | | // stationInfo = _stationInfo.Repository.QueryFirst(x => x.StationName == taskDTO.fromLocationCode) ?? throw new Exception($"æªæ¾å°èµ·ç¹åºä½ã{taskDTO.fromLocationCode}ãï¼"); |
| | | // if (stationInfo.StationName != LocationStatusEnum.InStock.ToString()) throw new Exception($"èµ·ç¹åºä½ã{taskDTO.fromLocationCode}ãå½ååºä½ç¶æä¸å¯åºåºï¼"); |
| | | // if (stationInfo.PalletCode != taskDTO.containerCode) throw new Exception($"èµ·ç¹åºä½ã{taskDTO.fromLocationCode}ãç»å®æç®±å·ã{stationInfo.PalletCode}ãä¸ä»»å¡æç®±å·ã{taskDTO.containerCode}ãä¸å¹é
ï¼"); |
| | | //} |
| | | //else |
| | | //{ |
| | | // stationInfo = _stationInfo.Repository.QueryFirst(x => x.StationName == taskDTO.toLocationCode) ?? throw new Exception($"æªæ¾å°ç»ç¹åºä½ã{taskDTO.toLocationCode}ãï¼"); |
| | | // if (stationInfo.StationName != LocationStatusEnum.InStock.ToString()) throw new Exception($"èµ·ç¹åºä½ã{taskDTO.toLocationCode}ãå½ååºä½ç¶æä¸å¯åºåºï¼"); |
| | | //} |
| | | //#endregion |
| | | |
| | | Dt_Task dt_Task = new Dt_Task() |
| | | { |
| | | TaskNum = GetTaskNum(nameof(SequenceEnum.SeqTaskNum)), |
| | |
| | | return content; |
| | | } |
| | | #endregion |
| | | |
| | | |
| | | #region 5ç©ºè½¦è½¬è¿ |
| | | public WebResponseContent HKF01Transport(TaskDTO taskDTO, int taskType) |
| | | { |
| | | WebResponseContent content = new WebResponseContent(); |
| | | try |
| | | { |
| | | var stationInfo = _stationInfo.Repository.QueryFirst(x => x.StationName == taskDTO.fromLocationCode) ?? throw new Exception($"æªæ¾å°èµ·ç¹åºä½ã{taskDTO.fromLocationCode}ãï¼"); |
| | | var dt_Task = new Dt_Task() |
| | | { |
| | | TaskNum = GetTaskNum(nameof(SequenceEnum.SeqTaskNum)), |
| | | WMSTaskNum = taskDTO.taskCode, |
| | | //WMSId = GetTaskNum(nameof(SequenceEnum.SeqTaskNum)), |
| | | Grade = taskDTO.taskPriority, |
| | | PalletCode = taskDTO.containerCode, |
| | | Roadway = "1", |
| | | TaskState = (int)TaskStatusEnum.New, |
| | | TaskType = taskType, |
| | | SourceAddress = taskDTO.fromLocationCode, |
| | | CurrentAddress = taskDTO.fromLocationCode, |
| | | NextAddress = taskDTO.toLocationCode, |
| | | TargetAddress = taskDTO.toLocationCode, |
| | | Creater = "WMS", |
| | | }; |
| | | content = SendHIKROBOTTask(dt_Task); |
| | | if (!content.Status) throw new Exception(content.Message); |
| | | dt_Task.Dispatchertime = DateTime.Now; |
| | | BaseDal.AddData(dt_Task); |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | |
| | | content.Error(ex.Message); |
| | | } |
| | | return content; |
| | | } |
| | | #endregion |
| | | } |
| | | } |
| | |
| | | CurrentAddress = taskDTO.fromLocationCode, |
| | | NextAddress = stationManger.RGVStationCode, |
| | | TargetAddress = "", |
| | | Dispatchertime=DateTime.Now, |
| | | Creater = "WMS", |
| | | }; |
| | | BaseDal.AddData(dt_Task); |
| | |
| | | CurrentAddress = taskDTO.fromLocationCode, |
| | | NextAddress = taskDTO.toLocationCode, |
| | | TargetAddress = taskDTO.toLocationCode, |
| | | Dispatchertime = DateTime.Now, |
| | | Creater = "WMS", |
| | | }; |
| | | rGVLocationInfo.LocationStatus = LocationStatusEnum.OutLock.ObjToInt(); |
| | |
| | | }; |
| | | return content.Error(ex.Message); |
| | | } |
| | | |
| | | } |
| | | #endregion |
| | | /// <summary> |
| | |
| | | switch (hIKROBOT.extra.values.method) |
| | | { |
| | | case "start": |
| | | if (task.TaskState == (int)TaskStatusEnum.CallingHKtransportation && task.TaskType == (int)TaskTypeEnum.Move) |
| | | if (task.TaskState == (int)TaskStatusEnum.CallingHKtransportation && task.TaskType == (int)TaskTypeEnum.MOVE) |
| | | { |
| | | task.TaskState = (int)TaskStatusEnum.HktransportIng; |
| | | } |
| | | else if (task.TaskType == (int)TaskTypeEnum.Q3RK|| task.TaskType == (int)TaskTypeEnum.Q3CK) |
| | | { |
| | | UpdateStandStatus(task, task.TargetAddress, LocationStatusEnum.Lock); |
| | | task.TaskState = (int)TaskStatusEnum.Takeing; |
| | | TaskFeedback(task, 1); |
| | | BaseDal.UpdateData(task); |
| | | } |
| | | else |
| | | { |
| | |
| | | break; |
| | | case "outbin"://离å¼èµ·ç¹ |
| | | { |
| | | if (task.TaskType == (int)TaskTypeEnum.Q3RK|| task.TaskType == (int)TaskTypeEnum.Q3CK) |
| | | { |
| | | UpdateStandStatus(task, task.TargetAddress, LocationStatusEnum.Free); |
| | | task.TaskState = TaskStatusEnum.TakeFinish.ObjToInt(); |
| | | TaskFeedback(task, 1); |
| | | } |
| | | else |
| | | { |
| | | TaskFromCompleted(task, deviceTypeEnum); //ä»»å¡ç¶ä½æ¹ä¸º3åè´§å®æï¼æ´æ°èµ·ç¹è´§ä½ç¶æï¼å¹¶åé¦WMSèµ·ç¹å®æ |
| | | } |
| | | ///夿任塿¯å¦è·è®¾å¤æå
³ |
| | | TaskFromCompleted(task, deviceTypeEnum); //ä»»å¡ç¶ä½æ¹ä¸º3åè´§å®æï¼æ´æ°èµ·ç¹è´§ä½ç¶æï¼å¹¶åé¦WMSèµ·ç¹å®æ |
| | | } |
| | | break; |
| | | case "finish"://ç¦»å¼æåæº |
| | | { |
| | | |
| | | //å
¥æåæº |
| | | if (task.TaskType == TaskTypeEnum.RK3F.ObjToInt() && task.TaskState == (int)TaskStatusEnum.CheckPalletCodeFinish) |
| | | { |
| | |
| | | if (device == null) task.ExceptionMessage = "æªæ¾å°æåæºä¿¡æ¯"; |
| | | else |
| | | { |
| | | DeviceProDTO? deviceProDTO = device.DeviceProDTOs.FirstOrDefault((DeviceProDTO x) => x.DeviceProParamName == HoistEnum.Inboundboxon.ToString());//æ¾å°ä½äº |
| | | bool Work = false; |
| | | if (device.IsConnected) |
| | | device.SetValue(HoistEnum.Inboundboxon, 1); |
| | | else |
| | | task.ExceptionMessage = "æåæºä¿¡æ¯è®¾å¤è¿æ¥å¤±è´¥"; |
| | | { |
| | | int i = 0; |
| | | while (!Work && i <= 3) |
| | | { |
| | | i++; |
| | | Work = device.SetValue(HoistEnum.Inboundboxon, 1, task.TargetAddress); |
| | | Thread.Sleep(500); |
| | | } |
| | | } |
| | | if (!Work) |
| | | { |
| | | task.ExceptionMessage = $"ã{task.TargetAddress}ãåå
¥3楼å
¥åºç®±æ¾å°ä½å¤±è´¥"; |
| | | task.Remark = $"{device.DeviceCode}_Inboundboxon_{1}_{task.TargetAddress}"; |
| | | } |
| | | } |
| | | BaseDal.UpdateData(task); |
| | | } |
| | | |
| | | //åºæåæº |
| | | else if (task.TaskType == TaskTypeEnum.CK3F.ObjToInt() && task.TaskState == (int)TaskStatusEnum.AGV_ToExecute) |
| | | //3 åºæåæº ä¹åæ¯AGV_ToExecute |
| | | else if (task.TaskType == TaskTypeEnum.CK3F.ObjToInt() && task.TaskState == (int)TaskStatusEnum.TakeFinish) |
| | | { |
| | | var device = Storage.Devices.FirstOrDefault(x => x.DeviceCode == "TSJ") as OtherDevice; |
| | | if (device == null) task.ExceptionMessage = "æªæ¾å°æåæºä¿¡æ¯"; |
| | | else |
| | | { |
| | | bool Work = false; |
| | | if (device.IsConnected) |
| | | device.SetValue(HoistEnum.Outboundboxon, 1);//åºåºå®æ |
| | | else |
| | | task.ExceptionMessage = "æåæºä¿¡æ¯è®¾å¤è¿æ¥å¤±è´¥"; |
| | | { |
| | | int i = 0; |
| | | while (!Work && i <= 3) |
| | | { |
| | | i++; |
| | | Work = device.SetValue(HoistEnum.Outboundboxon, 1, task.SourceAddress);//åºåºå®æ |
| | | Thread.Sleep(500); |
| | | } |
| | | } |
| | | if (!Work) |
| | | { |
| | | task.ExceptionMessage = $"ã{task.SourceAddress}ãåå
¥3楼åºåºç®±æ¾å°ä½å¤±è´¥"; |
| | | task.Remark = $"{device.DeviceCode}_Outboundboxon_{1}_{task.SourceAddress}"; |
| | | } |
| | | } |
| | | BaseDal.UpdateData(task); |
| | | } |
| | | //忥¼ åºåº |
| | | //忥¼ åºåº |
| | | else if ((task.TaskType == TaskTypeEnum.CHUKU1.ObjToInt() || task.TaskType == TaskTypeEnum.F04.ObjToInt()) && task.TaskState == (int)TaskStatusEnum.AGV_ToExecute) |
| | | { |
| | | var device = Storage.Devices.FirstOrDefault(x => x.DeviceCode == "TSJ") as OtherDevice; |
| | | if (device == null) task.ExceptionMessage = "æªæ¾å°æåæºä¿¡æ¯"; |
| | | else |
| | | { |
| | | bool Work = false; |
| | | if (device.IsConnected) |
| | | device.SetValue(HoistEnum.Emptyboxplacedinposition, 1); |
| | | else |
| | | task.ExceptionMessage = "æåæºä¿¡æ¯è®¾å¤è¿æ¥å¤±è´¥"; |
| | | { |
| | | int i = 0; |
| | | while (!Work && i <= 3) |
| | | { |
| | | i++; |
| | | Work = device.SetValue(HoistEnum.Emptyboxplacedinposition, 1, task.TargetAddress); |
| | | Thread.Sleep(500); |
| | | } |
| | | } |
| | | if (!Work) |
| | | { |
| | | task.ExceptionMessage = $"ã{task.TargetAddress}ãåå
¥4楼空箱æ¾å°ä½å¤±è´¥"; |
| | | task.Remark = $"{device.DeviceCode}_Emptyboxplacedinposition_{1}_{task.TargetAddress}"; |
| | | } |
| | | } |
| | | BaseDal.UpdateData(task); |
| | | } |
| | | //忥¼ å
¥åº |
| | | // //忥¼åºæåæº å
¥åº ä¹åæ¯AGV_ToExecute //è¦åæåè´§å®æç¶æTakeFinish |
| | | else if ((task.TaskType == TaskTypeEnum.Q1TSJ4.ObjToInt() || task.TaskType == TaskTypeEnum.F03.ObjToInt()) && task.TaskState == (int)TaskStatusEnum.AGV_ToExecute) |
| | | { |
| | | var device = Storage.Devices.FirstOrDefault(x => x.DeviceCode == "TSJ") as OtherDevice; |
| | | if (device == null) task.ExceptionMessage = "æªæ¾å°æåæºä¿¡æ¯"; |
| | | else |
| | | { |
| | | bool Work = false; |
| | | if (device.IsConnected) |
| | | //å以ä¸ä¸ªåºåºå®æä¿¡å· |
| | | device.SetValue(HoistEnum.Outboundboxretrievalcompleted, 1, task.SourceAddress); |
| | | else |
| | | task.ExceptionMessage = "æåæºä¿¡æ¯è®¾å¤è¿æ¥å¤±è´¥"; |
| | | } |
| | | } |
| | | else if (task.TaskType == TaskTypeEnum.Q3RK.ObjToInt() || task.TaskType == TaskTypeEnum.Q3CK.ObjToInt() && task.TaskState == (int)TaskStatusEnum.AGV_ToExecute) |
| | | { |
| | | if (task.TaskType == TaskTypeEnum.Q3RK.ObjToInt()|| task.TaskType == TaskTypeEnum.Q3RK.ObjToInt()) |
| | | { |
| | | var device = Storage.Devices.FirstOrDefault(x => x.DeviceCode == "F1") as OtherDevice; |
| | | if (device == null) task.ExceptionMessage = "æªæ¾å°è´¨æ£é¨ä¿¡æ¯"; |
| | | |
| | | else |
| | | { |
| | | if (device.IsConnected) |
| | | //å以ä¸ä¸ªåºåºå®æä¿¡å· |
| | | device.SetValue(QualityInspectionCommandEnum.RequestToEnter, false, task.TargetAddress); |
| | | else |
| | | task.ExceptionMessage = "è´¨æ£é¨ä¿¡æ¯è®¾å¤è¿æ¥å¤±è´¥"; |
| | | int i = 0; |
| | | while (!Work && i <= 3) |
| | | { |
| | | i++; |
| | | Work = device.SetValue(HoistEnum.Outboundboxretrievalcompleted, 1, task.SourceAddress); |
| | | Thread.Sleep(500); |
| | | } |
| | | } |
| | | |
| | | if (!Work) |
| | | { |
| | | task.ExceptionMessage = $"ã{task.SourceAddress}ãåå
¥4楼åºåºåç®±å®æå¤±è´¥"; |
| | | task.Remark = $"{device.DeviceCode}_Outboundboxretrievalcompleted_{1}_{task.SourceAddress}"; |
| | | } |
| | | } |
| | | |
| | | BaseDal.UpdateData(task); |
| | | } |
| | | //è·¨æ¥¼å± |
| | | else if (task.TaskType == TaskTypeEnum.Q3RK.ObjToInt() || task.TaskType == TaskTypeEnum.Q3CK.ObjToInt()/* && task.TaskState == (int)TaskStatusEnum.TakeFinish*/) |
| | | { |
| | | var device = Storage.Devices.FirstOrDefault(x => x.DeviceCode == "F1") as OtherDevice; |
| | | if (device == null) task.ExceptionMessage = "æªæ¾å°è´¨æ£é¨ä¿¡æ¯"; |
| | | else |
| | | { |
| | | bool Wok = false; |
| | | var Address = task.TaskType == TaskTypeEnum.Q3RK.ObjToInt() ? task.TargetAddress : task.SourceAddress; |
| | | if (device.IsConnected) |
| | | { |
| | | int i = 0; |
| | | while (!Wok && i <= 3) |
| | | { |
| | | i++; |
| | | Wok = device.SetValue(QualityInspectionCommandEnum.RequestToEnter, false, Address); |
| | | Thread.Sleep(500); |
| | | } |
| | | } |
| | | if (!Wok) |
| | | { |
| | | task.ExceptionMessage = $"ã{Address}ãå
³é请æ±è¿å
¥å¤±è´¥ï¼"; |
| | | task.Remark = $"{device.DeviceCode}_RequestToEnter_{false}_{Address}"; |
| | | } |
| | | } |
| | | BaseDal.UpdateData(task); |
| | | } |
| | | } |
| | | break; |
| | |
| | | if (device == null) task.ExceptionMessage = "æªæ¾å°æåæºä¿¡æ¯"; |
| | | else |
| | | { |
| | | bool Wok = false; |
| | | if (device.IsConnected) |
| | | //å以ä¸ä¸ªåºåºå®æä¿¡å· |
| | | device.SetValue(HoistEnum.Outboundboxretrievalcompleted, 1, task.SourceAddress); |
| | | else |
| | | task.ExceptionMessage = "æåæºä¿¡æ¯è®¾å¤è¿æ¥å¤±è´¥"; |
| | | { |
| | | int i = 0; |
| | | while (!Wok && i <= 3) |
| | | { |
| | | i++; |
| | | Wok = device.SetValue<HoistEnum, short>(HoistEnum.Codereadingtriggered, 1, "TSJR3F"); |
| | | Thread.Sleep(500); |
| | | } |
| | | } |
| | | if (!Wok) |
| | | { |
| | | task.ExceptionMessage = $"ãTSJR3Fã3楼读ç 触å失败ï¼"; |
| | | task.Remark = $"{device.DeviceCode}_Codereadingtriggered_{1}_TSJR3F"; |
| | | } |
| | | } |
| | | task.TaskState = (int)TaskStatusEnum.CheckPalletCodeing; |
| | | BaseDal.UpdateData(task); |
| | |
| | | break; |
| | | case "end"://ä»»å¡å®æéç¥ |
| | | { |
| | | if (task.TaskType==(int)TaskTypeEnum.Move &&task.TaskState==(int)TaskStatusEnum.HkTransportCompleted) |
| | | if (task.TaskType == (int)TaskTypeEnum.MOVE) |
| | | { |
| | | task.TaskState = TaskStatusEnum.Finish.ObjToInt(); |
| | | TaskFeedback(task, 2); |
| | | BaseDal.DeleteAndMoveIntoHty(task, OperateTypeEnum.èªå¨å®æ); |
| | | } |
| | | else if (task.TaskType == (int)TaskTypeEnum.Q3RK || task.TaskType == (int)TaskTypeEnum.Q3CK) |
| | | { |
| | | task.TaskState = TaskStatusEnum.Finish.ObjToInt(); |
| | | TaskFeedback(task, 2); |
| | | BaseDal.DeleteAndMoveIntoHty(task, OperateTypeEnum.èªå¨å®æ); |
| | | var Task = BaseDal.QueryFirst(x => task.WMSTaskNum.Contains(x.WMSTaskNum)); |
| | | Task.TaskState = TaskStatusEnum.HkTransportCompleted.ObjToInt(); |
| | | BaseDal.UpdateData(Task); |
| | | } |
| | | else |
| | | { |
| | | ///夿任塿¯å¦è·è®¾å¤æå
³ |
| | | TaskCompleted(task, deviceTypeEnum); |
| | | } |
| | | } |
| | |
| | | case "intolift": //è¿å
¥çµæ¢¯ |
| | | { |
| | | //å
楼å°ä¸æ¥¼çå
¥åºä»»å¡ |
| | | if (task.TaskType==(int)TaskTypeEnum.Q3RK) |
| | | if (task.TaskType == (int)TaskTypeEnum.Q3RK || task.TaskType == (int)TaskTypeEnum.MOVE || task.TaskType == (int)TaskTypeEnum.F01) |
| | | { |
| | | task.TaskState = TaskStatusEnum.Hkintolift.ObjToInt(); |
| | | BaseDal.UpdateData(task); |
| | | } |
| | | } |
| | | break; |
| | | case "leavelift": //离å¼çµæ¢¯ |
| | | case "leavelift": //离å¼çµæ¢¯ |
| | | { |
| | | if (task.TaskType == (int)TaskTypeEnum.Q3RK) |
| | | if (task.TaskType == (int)TaskTypeEnum.Q3RK || task.TaskType == (int)TaskTypeEnum.MOVE || task.TaskType == (int)TaskTypeEnum.F01) |
| | | { |
| | | task.TaskState = TaskStatusEnum.HKleavelift.ObjToInt(); |
| | | BaseDal.UpdateData(task); |
| | | } |
| | | } |
| | | break; |
| | |
| | | try |
| | | { |
| | | dt_Task.TaskState = TaskStatusEnum.Finish.ObjToInt(); |
| | | TaskFeedback(dt_Task, 2); |
| | | TaskFeedback(dt_Task, 2, string.IsNullOrEmpty(dt_Task.Remark)); |
| | | //Db.Ado.BeginTran(); |
| | | UpdateLocationStatus(dt_Task.TargetAddress, dt_Task.PalletCode, deviceTypeEnum, LocationStatusEnum.InStock); |
| | | |
| | |
| | | stationInfo.StationStatus = locationStatusEnum.ObjToInt(); |
| | | _stationInfo.UpdateData(stationInfo); |
| | | } |
| | | Dt_StationManger stationManger = _stationMangerService.Repository.QueryFirst(x => x.StationCode == locationCode); |
| | | if (stationManger != null) |
| | | { |
| | | if (locationStatusEnum == LocationStatusEnum.Free) //å¦æèµ·ç¹å®æå°±ç»è´§ä½èµå¼æçå· |
| | | { |
| | | stationManger.Remark = ""; |
| | | stationManger.IsOccupied = LocationStatusEnum.Free.ObjToInt(); |
| | | } |
| | | else |
| | | { |
| | | stationManger.Remark = palletCode; |
| | | stationManger.IsOccupied = LocationStatusEnum.Lock.ObjToInt(); |
| | | } |
| | | _stationMangerService.UpdateData(stationManger); |
| | | } |
| | | } |
| | | else if (deviceTypeEnum == DeviceTypeEnum.YuanLiJuHe) |
| | | { |
| | |
| | | #endregion |
| | | |
| | | #region æ´æ°ä¸æ¥¼ç«å°ç¶æ |
| | | public WebResponseContent UpdateStandStatus(Dt_Task task,string stationCode,LocationStatusEnum locationStatusEnum) |
| | | public WebResponseContent UpdateStandStatus(Dt_Task task, string stationCode, LocationStatusEnum locationStatusEnum) |
| | | { |
| | | try |
| | | { |
| | |
| | | #endregion |
| | | |
| | | #region 䏿¥WMS |
| | | public WebResponseContent TaskFeedback(Dt_Task dt_Task, int Status) |
| | | public WebResponseContent TaskFeedback(Dt_Task dt_Task, int Status, bool Del = true) |
| | | { |
| | | WebResponseContent content = new WebResponseContent(); |
| | | WMSInOutBoundCompleteFeedback boundCompleteFeedback = new WMSInOutBoundCompleteFeedback(); |
| | |
| | | boundCompleteFeedback.toLocationCode = dt_Task.TargetAddress; |
| | | boundCompleteFeedback.status = Status; |
| | | boundCompleteFeedback.custStatus = ""; |
| | | string response = HttpHelper.Post(apiInfo.ApiAddress,boundCompleteFeedback.Serialize()); |
| | | string response = HttpHelper.Post(apiInfo.ApiAddress, boundCompleteFeedback.Serialize()); |
| | | agvContent = response.DeserializeObject<WMSReturn>(); |
| | | content.OK(data: agvContent); |
| | | if (agvContent.code != 200) |
| | |
| | | finally |
| | | { |
| | | _trackloginfoService.AddTrackLog(boundCompleteFeedback, content, "åºå
¥åºä»»å¡ç¶æåé¦WMS", "", ""); |
| | | if (agvContent != null && agvContent.code == 200 && Status == 2) |
| | | if (agvContent != null && agvContent.code == 200 && Del) |
| | | BaseDal.DeleteAndMoveIntoHty(dt_Task, OperateTypeEnum.èªå¨å®æ); |
| | | else |
| | | BaseDal.UpdateData(dt_Task); |
| | |
| | | #endregion << ç æ¬ 注 é >> |
| | | |
| | | using AutoMapper; |
| | | using Newtonsoft.Json; |
| | | using SixLabors.ImageSharp.ColorSpaces; |
| | | using SqlSugar; |
| | | using System.Collections.Generic; |
| | |
| | | continue; |
| | | //throw new Exception($"æçå·ã{task.containerCode}ãå·²åå¨ä»»å¡"); |
| | | } |
| | | if (BaseDal.QueryFirst(x => x.SourceAddress == task.fromLocationCode && x.TaskType == item.taskType&&x.TaskState<TaskStatusEnum.TakeFinish.ObjToInt())!=null) |
| | | if (BaseDal.QueryFirst(x => x.SourceAddress == task.fromLocationCode && x.TaskType == item.taskType && x.TaskState < TaskStatusEnum.TakeFinish.ObjToInt()) != null) |
| | | { |
| | | objects.Add(new |
| | | { |
| | |
| | | break; |
| | | #endregion |
| | | #region 海康AGV |
| | | case(int)TaskTypeEnum.STURR: |
| | | case (int)TaskTypeEnum.STURR: |
| | | case (int)TaskTypeEnum.Q1TSJ4: |
| | | content = CreateHKNewInTask(task, item.taskType); |
| | | objects.Add(content.Data); |
| | |
| | | content = CreateHKNewOutTask(task, item.taskType); |
| | | objects.Add(content.Data); |
| | | break; |
| | | case (int)TaskTypeEnum.F01: |
| | | |
| | | case (int)TaskTypeEnum.Q3RK: |
| | | case (int)TaskTypeEnum.Q3CK: |
| | | content = CarryTask(task, item.taskType); |
| | | objects.Add(content.Data); |
| | | break; |
| | | case (int)TaskTypeEnum.F01: |
| | | content = HKF01Transport(task, item.taskType); |
| | | break; |
| | | case (int)TaskTypeEnum.F04: |
| | | case (int)TaskTypeEnum.F03: |
| | | case (int)TaskTypeEnum.F02: |
| | | case (int)TaskTypeEnum.RK3F: |
| | | case (int)TaskTypeEnum.CK3F: |
| | |
| | | //åå车 |
| | | bool isAGV = dt_Task.TaskType == (int)TaskTypeEnum.CPInbound || dt_Task.TaskType == (int)TaskTypeEnum.CPOutbound; |
| | | //海康 |
| | | 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; |
| | | 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 å¯ä¹å£« |
| | |
| | | |
| | | 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(),headers: headers); |
| | | 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 == "æå") |
| | |
| | | LoctionCode = item.LocationCode, |
| | | LocationStatus = item.LocationStatus, |
| | | EnableStatus = item.EnableStatus, |
| | | PalletCode = item.PalletCode |
| | | PalletCode = item.PalletCode |
| | | }); |
| | | } |
| | | content.OK(data: list); |
| | |
| | | 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, "TSJ"); |
| | | var value = device.GetValue<HoistEnum, short>(HoistEnum.Outboundmaterialbox, "TSJC3F"); |
| | | list.Add(new |
| | | { |
| | | LoctionCode = value, |
| | | LocationStatus = value!=0? 100 : 0, |
| | | LocationStatus = value != 0 ? 100 : 0, |
| | | EnableStatus = 0, |
| | | }); |
| | | content.OK(data: list); |
| | | } |
| | | else if (getLocationInfo.WarehouseId == 4) |
| | | { |
| | |
| | | LoctionCode = item.LocationCode, |
| | | LocationStatus = item.LocationStatus, |
| | | EnableStatus = item.EnableStatus, |
| | | PalletCode = item.PalletCode |
| | | PalletCode = item.PalletCode |
| | | }); |
| | | } |
| | | content.OK(data: list); |
| | |
| | | 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.Remark == "æååº"); |
| | | 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); |
| | |
| | | { |
| | | 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转æ¢å¤±è´¥"); |
| | | return WebResponseContent.Instance.OK(exists.errorAreaCode); |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | return WebResponseContent.Instance.Error(ex.Message); |
| | | } |
| | | finally |
| | | { |
| | | _trackloginfoService.AddTrackLog(checkDTO, content, "è£çå
¥åº3Få°4Fè¿è¾ç®±å·æ ¡éª", "", ""); |
| | | } |
| | | } |
| | | |
| | | /// <summary> |
| | |
| | | { |
| | | [DisallowConcurrentExecution] |
| | | public class TSJJob : JobBase, IJob |
| | | { |
| | | { |
| | | private readonly ITaskService _taskService; |
| | | private readonly IStationMangerService _stationMangerService; |
| | | public TSJJob(ITaskService taskService, IStationMangerService stationMangerService) |
| | |
| | | } |
| | | continue; |
| | | } |
| | | |
| | | if (device.GetValue<HoistEnum, short>(HoistEnum.ROutScanningCompletionSignal, task.SourceAddress) != 1) |
| | | { |
| | | if (task.ExceptionMessage != "4楼æåæºåºå£æ«ç å®æä¿¡å·æ²¡æå®æ") |
| | |
| | | task.ExceptionMessage = ""; |
| | | Uptasks.Add(task); |
| | | } |
| | | |
| | | |
| | | } |
| | | |
| | | #region æçå·ç¡®è®¤ä¸ |
| | | //æ¥æ¾ä¸æ¥¼å
¥åºä»»å¡ç¶æä¸ºCheckPalletCodeingç任塿çå·ç¡®è®¤ä¸ |
| | | var RK3FTasks = _taskService.Repository.QueryFirst(x => x.TaskType == TaskTypeEnum.RK3F.ObjToInt() && x.TaskState == (int)TaskStatusEnum.CheckPalletCodeing); |
| | | if (RK3FTasks != null) |
| | | { |
| | | var Barcode = device.SetValue<HoistEnum, short>(HoistEnum.Codereadingtriggered, 1); |
| | | //æ£æ¥3楼å
¥åºç®±å·æ¯å¤å°ï¼ç¶åä¼ ç»wms |
| | | var BinNumber = device.GetValue<HoistEnum, string>(HoistEnum.Inboxnumber, RK3FTasks.TargetAddress); |
| | | if (device.GetValue<HoistEnum, short>(HoistEnum.RInScanningCompletionSignal, RK3FTasks.TargetAddress ) !=1 ) |
| | | { |
| | | RK3FTasks.ExceptionMessage = "3楼æ«ç å®æä¿¡å·æ²¡æå®æ"; |
| | | } |
| | | else //宿就æä»»å¡ç¶ææ¹ææçå·ç¡®è®¤å®æ |
| | | { |
| | | //æ ¹æ®è¯»å°çç®±å·è¿è¡æç®±æ£éªï¼æ£éªéè¿å°±è§¦å读ç å¨è¯»åï¼å¦æä¸éè¿å°±æåºå¼å¸¸ |
| | | //var Verification = _taskService.MaterialBoxInspection(RK3FTasks.WMSTaskNum, BinNumber.ToString()); |
| | | //if (!Verification.Status) |
| | | //{ |
| | | // if (!(RK3FTasks.ExceptionMessage == Verification.Message)) |
| | | // { |
| | | // RK3FTasks.ExceptionMessage = Verification.Message; |
| | | // Uptasks.Add(RK3FTasks); |
| | | // } |
| | | // //æç®±éªè¯å好åï¼éè¦æ´æ¹ |
| | | // RK3FTasks.TargetAddress = Verification.Data.ToString(); |
| | | //} |
| | | |
| | | //妿æç®±æ£éªæåå°±åå
¥è¯»ç å¨çå¼ |
| | | var result = _taskService.Hikvisiontaskscontinue(RK3FTasks.WMSTaskNum, RK3FTasks.TargetAddress); |
| | | if (result.Status == false) |
| | | { |
| | | if (RK3FTasks.ExceptionMessage != result.Message) |
| | | { |
| | | RK3FTasks.ExceptionMessage = result.Message; |
| | | Uptasks.Add(RK3FTasks); |
| | | } |
| | | } |
| | | RK3FTasks.TaskState = (int)TaskStatusEnum.CheckPalletCodeFinish; |
| | | } |
| | | Uptasks.Add(RK3FTasks); |
| | | } |
| | | #endregion |
| | | if (Uptasks.Count > 0) |
| | | { |
| | | _taskService.UpdateData(Uptasks); |
| | | } |
| | | WriteInfo(device.DeviceName, "infoLog"); |
| | | |
| | | WriteDebug(device.DeviceName, "debugLog"); |
| | | #region æçå·ç¡®è®¤ä¸ |
| | | //æ¥æ¾ä¸æ¥¼å
¥åºä»»å¡ç¶æä¸ºCheckPalletCodeingç任塿çå·ç¡®è®¤ä¸ |
| | | var RK3FTask = _taskService.Repository.QueryFirst(x => x.TaskType == TaskTypeEnum.RK3F.ObjToInt() && x.TaskState == (int)TaskStatusEnum.CheckPalletCodeing); |
| | | if (RK3FTask != null) |
| | | { |
| | | if (device.GetValue<HoistEnum, short>(HoistEnum.RInScanningCompletionSignal, RK3FTask.TargetAddress) != 1) |
| | | { |
| | | RK3FTask.ExceptionMessage = "3楼æ«ç å®æä¿¡å·æ²¡æå®æ"; |
| | | _taskService.UpdateData(RK3FTask); |
| | | } |
| | | else //宿就æä»»å¡ç¶ææ¹ææçå·ç¡®è®¤å®æ |
| | | { |
| | | //æ£æ¥3楼å
¥åºç®±å·æ¯å¤å°ï¼ç¶åä¼ ç»wms |
| | | var BinNumber = device.GetValue<HoistEnum, string>(HoistEnum.Inboxnumber, RK3FTask.TargetAddress); |
| | | if (!string.IsNullOrEmpty(BinNumber)) |
| | | { |
| | | BinNumber = BinNumber.TrimEnd('\0').Substring(2); |
| | | //æ ¹æ®è¯»å°çç®±å·è¿è¡æç®±æ£éªï¼æ£éªéè¿å°±è§¦å读ç å¨è¯»åï¼å¦æä¸éè¿å°±æåºå¼å¸¸ |
| | | var Verification = _taskService.MaterialBoxInspection(RK3FTask.WMSTaskNum, BinNumber); |
| | | if (!Verification.Status) |
| | | { |
| | | if (RK3FTask.ExceptionMessage != Verification.Message) |
| | | { |
| | | RK3FTask.ExceptionMessage = Verification.Message; |
| | | _taskService.UpdateData(RK3FTask); |
| | | } |
| | | } |
| | | else |
| | | { |
| | | if (!string.IsNullOrEmpty(Verification.Message)) RK3FTask.TargetAddress = Verification.Message; |
| | | //妿æç®±æ£éªæåå°±åå
¥è¯»ç å¨çå¼ |
| | | var result = _taskService.Hikvisiontaskscontinue(RK3FTask.WMSTaskNum, RK3FTask.TargetAddress); |
| | | if (result.Status) |
| | | { |
| | | RK3FTask.ExceptionMessage = ""; |
| | | RK3FTask.TaskState = (int)TaskStatusEnum.CheckPalletCodeFinish; |
| | | _taskService.UpdateData(RK3FTask); |
| | | } |
| | | else |
| | | { |
| | | if (RK3FTask.ExceptionMessage != result.Message) |
| | | { |
| | | RK3FTask.ExceptionMessage = result.Message; |
| | | _taskService.UpdateData(RK3FTask); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | #endregion |
| | | |
| | | #region 4Fæåæºåºå£æçå·ä¸æ¥WMS |
| | | var Address = "TSJC4F"; |
| | | if (device.GetValue<HoistEnum, short>(HoistEnum.ROutScanningCompletionSignal, Address) == 1) |
| | | { |
| | | var BinNumber = device.GetValue<HoistEnum, string>(HoistEnum.Emptycontainernumber, Address); |
| | | if (!string.IsNullOrEmpty(BinNumber)) |
| | | { |
| | | BinNumber = BinNumber.TrimEnd('\0').Substring(2); |
| | | _taskService.InboundElevatorExit(Address, BinNumber); |
| | | } |
| | | } |
| | | #endregion |
| | | //WriteInfo(device.DeviceName, "infoLog"); |
| | | |
| | | //WriteDebug(device.DeviceName, "debugLog"); |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | |
| | | } |
| | | else |
| | | { |
| | | WriteError(nameof(TestJob), "åæ°é误,æªä¼ é设å¤åæ°æè®¾å¤ç±»åé误"); |
| | | WriteError(nameof(TSJJob), "åæ°é误,æªä¼ é设å¤åæ°æè®¾å¤ç±»åé误"); |
| | | } |
| | | |
| | | |
| | |
| | | using System; |
| | | using OfficeOpenXml.FormulaParsing.Excel.Functions.Math; |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using System.Linq; |
| | | using System.Reflection.Emit; |
| | | using System.Reflection.Metadata; |
| | | using System.Text; |
| | | using System.Threading.Tasks; |
| | |
| | | { |
| | | foreach (var item in tasks) |
| | | { |
| | | if (item.TaskState == (int)TaskTypeEnum.Q3CK) |
| | | // åºåºä»»å¡å¤ç (ä»1楼åºåºå°6楼) |
| | | if (item.TaskType == (int)TaskTypeEnum.Q3CK || item.TaskType == (int)TaskTypeEnum.Q3RK) |
| | | { |
| | | // è°ç¨æ¥å£è·åå°è½¦ä¿¡æ¯ |
| | | var result = _agvcartInfoService.CheckTheCar(); |
| | | |
| | | // 夿æ¯å¦æ AA æ FF |
| | | bool hasAAOrFF = false; |
| | | |
| | | if (item.TaskState == (int)TaskTypeEnum.Q3CK) |
| | | var result = _agvcartInfoService.CheckTheCar("MR-Q3-600LE-D(M)(YWGP)"); |
| | | if (result != null && result.Status) |
| | | { |
| | | if (result != null && result.Status) |
| | | var dataList = result.Data as List<HIKROBOTQueryData>; |
| | | if (dataList != null && dataList.Any()) |
| | | { |
| | | var dataList = result.Data as List<HIKROBOTQueryData>; |
| | | if (dataList != null && dataList.Any()) |
| | | // åºåºä»»å¡ï¼æ£æ¥æ¯å¦æå¨1楼(AA)çå°è½¦ |
| | | // Q3CK æ¯AAâFFç跨楼å±ä»»å¡ï¼åªè½ä½¿ç¨ä¸ç¨å°è½¦ |
| | | var code = item.TaskType == (int)TaskTypeEnum.Q3CK ? "AA" : "FF"; |
| | | var specialCarInAA = dataList.FirstOrDefault(d => d.mapCode == code); |
| | | |
| | | if (specialCarInAA != null) |
| | | { |
| | | // æ£æ¥è¿åç mapCode åè¡¨ä¸æ¯å¦æ AA |
| | | hasAAOrFF = dataList.Any(d => d.mapCode == "AA"); |
| | | if (hasAAOrFF) |
| | | // æå¨1楼çå°è½¦ï¼ç´æ¥æ§è¡ä»»å¡ |
| | | var content = _taskService.SendHIKROBOTTask(item); |
| | | if (content.Status) |
| | | { |
| | | var content = _taskService.SendHIKROBOTTask(item); |
| | | item.TaskState = (int)TaskStatusEnum.Execut; |
| | | } |
| | | else//è¿éæå°±è¦å¼å«ç©ºè½¦æ¥ |
| | | } |
| | | else |
| | | { |
| | | // 没æä¸ç¨å°è½¦å¨1楼ï¼éè¦å¼å«ä¸ç¨å°è½¦æ¥å°1楼 |
| | | var anySpecialCar = dataList.FirstOrDefault(); |
| | | if (anySpecialCar != null) |
| | | { |
| | | //æ·»å 空车è¿è¾ä»»å¡ |
| | | AddAGVCartInfo(item); |
| | | item.TaskState = (int)TaskStatusEnum.WaitingHkAGVMovePosition; |
| | | // èµ·ç¹ï¼å°è½¦å½åæå¨æ¥¼å±çç¹ä½ï¼ç®æ ï¼1楼ç¹ä½ |
| | | var callCarResult = AddAGVCartInfo(item, anySpecialCar.mapCode, code); |
| | | if (callCarResult.Status) |
| | | { |
| | | // åä»»å¡ç¶ææ¹ä¸ºçå¾
空车 |
| | | item.TaskState = (int)TaskStatusEnum.WaitingHkAGVMovePosition; |
| | | } |
| | | } |
| | | else |
| | | { |
| | | item.ExceptionMessage = "æªæ¾å°å¯ç¨AGVå°è½¦"; |
| | | } |
| | | } |
| | | |
| | | } |
| | | } |
| | | else |
| | | { |
| | | if (result != null && result.Status) |
| | | item.ExceptionMessage = "è·åAGVå°è½¦ä¿¡æ¯å¤±è´¥"; |
| | | } |
| | | } |
| | | else if (item.TaskType == (int)TaskTypeEnum.F01) |
| | | { |
| | | // F01ä»»å¡å¤çï¼æ ¹æ®ç®æ å°å夿éè¦åªä¸ªæ¥¼å±çå°è½¦ |
| | | var result = _agvcartInfoService.CheckTheCar("MR-Q3-600LE-D(M)"); |
| | | |
| | | if (result != null && result.Status) |
| | | { |
| | | var dataList = result.Data as List<HIKROBOTQueryData>; |
| | | if (dataList != null && dataList.Any()) |
| | | { |
| | | if (hasAAOrFF) |
| | | // ä»ä»»å¡çèµ·å§å°å䏿åéè¦ç楼å±ä»£ç |
| | | string requiredMapCode = GetMapCodeFromAddress(item.SourceAddress); |
| | | if (string.IsNullOrEmpty(requiredMapCode)) |
| | | { |
| | | var content = _taskService.SendHIKROBOTTask(item); |
| | | item.TaskState = (int)TaskStatusEnum.Execut; |
| | | item.ExceptionMessage = $"æ æ³ä»ç®æ å°å {item.SourceAddress} ä¸è¯å«æ¥¼å±ä¿¡æ¯"; |
| | | _taskService.UpdateData(item); |
| | | continue; |
| | | } |
| | | else//è¿éæå°±è¦å¼å«ç©ºè½¦æ¥ |
| | | |
| | | // æ£æ¥æ¯å¦æå¨ç®æ 楼å±çå°è½¦ |
| | | var hasRequiredCar = dataList.FirstOrDefault(d => d.mapCode == requiredMapCode); |
| | | |
| | | if (hasRequiredCar != null) |
| | | { |
| | | //æ·»å 空车è¿è¾ä»»å¡ |
| | | AddAGVCartInfo(item); |
| | | item.TaskState = (int)TaskStatusEnum.WaitingHkAGVMovePosition; |
| | | // æå¨ç®æ 楼å±çå°è½¦ï¼ç´æ¥æ§è¡ä»»å¡ |
| | | var content = _taskService.SendHIKROBOTTask(item); |
| | | if (content.Status) |
| | | { |
| | | item.TaskState = (int)TaskStatusEnum.Execut; |
| | | } |
| | | } |
| | | else |
| | | { |
| | | // 没æç®æ 楼å±çå°è½¦ï¼éè¦å¼å«ç©ºè½¦ä»å½åä½ç½®å°ç®æ æ¥¼å± |
| | | var anySpecialCar = dataList.FirstOrDefault(d => d.CarType == "MR-Q3-600LE-D(M)"); |
| | | |
| | | if (anySpecialCar != null) |
| | | { |
| | | var callCarResult = AddAGVCartInfo(item, anySpecialCar.mapCode, requiredMapCode); |
| | | if (callCarResult.Status) |
| | | { |
| | | item.TaskState = (int)TaskStatusEnum.WaitingHkAGVMovePosition; |
| | | } |
| | | } |
| | | else |
| | | { |
| | | item.ExceptionMessage = "æªæ¾å°å¯ç¨AGVå°è½¦"; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | _taskService.UpdateData(item); |
| | | } |
| | | _taskService.UpdateData(tasks); |
| | | } |
| | | |
| | | #endregion |
| | | |
| | | |
| | | #region å¤ç海康agvæ¬è¿ä»»å¡ |
| | | public WebResponseContent AddAGVCartInfo(Dt_Task task) |
| | | /// <summary> |
| | | /// å建空车å¼å«ä»»å¡ï¼æ ¹æ®å°è½¦å½åä½ç½®åç®æ 楼å±ï¼è®¾ç½®ä»»å¡çèµ·ç¹ãå½åä½ç½®åç®æ ç¹ï¼å¹¶ä¸åç»æµ·åº·æ¥å£ |
| | | /// </summary> |
| | | /// <param name="task"></param> |
| | | /// <param name="currentMapCode">å½åä½ç½®</param> |
| | | /// <param name="targetMapCode">ç®æ å°å</param> |
| | | /// <returns></returns> |
| | | public WebResponseContent AddAGVCartInfo(Dt_Task task, string currentMapCode, string targetMapCode) |
| | | { |
| | | WebResponseContent content = new WebResponseContent(); |
| | | try |
| | | { |
| | | task.TaskNum = _taskService.GetTaskNum(nameof(SequenceEnum.SeqTaskNum)); |
| | | task.WMSTaskNum = null; |
| | | task.TaskType = (int)TaskTypeEnum.Move;//æ¢å±ä»»å¡ |
| | | task.TaskState = (int)TaskStatusEnum.CallingHKtransportation; |
| | | var result = _taskService.SendHIKROBOTTask(task); |
| | | _taskService.AddData(task); |
| | | // è·åèµ·ç¹æ¥¼å±ä¿¡æ¯ |
| | | if (!FloorMapping.FloorMap.ContainsKey(currentMapCode)) |
| | | { |
| | | content.Error($"æ æçèµ·ç¹æ¥¼å±ä»£ç ï¼{currentMapCode}"); |
| | | return content; |
| | | } |
| | | |
| | | // è·åç®æ 楼å±ä¿¡æ¯ |
| | | if (!FloorMapping.FloorMap.ContainsKey(targetMapCode)) |
| | | { |
| | | content.Error($"æ æçç®æ 楼å±ä»£ç ï¼{targetMapCode}"); |
| | | return content; |
| | | } |
| | | |
| | | var currentFloorInfo = FloorMapping.FloorMap[currentMapCode]; |
| | | var targetFloorInfo = FloorMapping.FloorMap[targetMapCode]; |
| | | |
| | | // 设置任å¡ä¿¡æ¯ |
| | | //task.SourceAddress = currentFloorInfo.PointCode; // èµ·ç¹ï¼å°è½¦å½åä½ç½®çç¹ä½ |
| | | //task.CurrentAddress = currentFloorInfo.PointCode; // å½åä½ç½®ï¼å°è½¦å½åä½ç½®çç¹ä½ |
| | | //task.TargetAddress = targetFloorInfo.PointCode; // ç®æ ç¹ï¼ç®æ 楼å±ç¹ä½ |
| | | //task.NextAddress = targetFloorInfo.PointCode; // è®°å½ç®æ 楼å±ä»£ç |
| | | |
| | | Dt_Task newTask = new Dt_Task |
| | | { |
| | | WMSTaskNum = "HK_" + task.WMSTaskNum, // çæå¯ä¸çWMSä»»å¡å· |
| | | TaskNum = _taskService.GetTaskNum(nameof(SequenceEnum.SeqTaskNum)), |
| | | SourceAddress = currentFloorInfo.PointCode, |
| | | CurrentAddress = currentFloorInfo.PointCode, |
| | | TargetAddress = targetFloorInfo.PointCode, |
| | | NextAddress = targetFloorInfo.PointCode, |
| | | TaskType = (int)TaskTypeEnum.MOVE, |
| | | Grade = task.Grade, |
| | | PalletCode = "", |
| | | TaskState = (int)TaskStatusEnum.CallingHKtransportation, |
| | | // å¤å¶å
¶ä»å¿
è¦å段 |
| | | CreateDate = DateTime.Now, |
| | | Creater = "System" |
| | | }; |
| | | var result = _taskService.SendHIKROBOTTask(newTask); |
| | | if (result.Status) |
| | | { |
| | | _taskService.AddData(newTask); // æ·»å æ°ä»»å¡ |
| | | content.OK("空车å¼å«ä»»å¡å建æå", newTask); |
| | | } |
| | | else |
| | | { |
| | | content.Error("空车å¼å«ä»»å¡ä¸å失败"); |
| | | } |
| | | return content; |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | content.Error($"å建失败ï¼{ex.Message}"); |
| | | content.Error($"å建空车å¼å«ä»»å¡å¤±è´¥ï¼{ex.Message}"); |
| | | } |
| | | return content; |
| | | } |
| | | #endregion |
| | | |
| | | #region å¤çagvå¾
空车æ¬è¿ä»»å¡ |
| | | public void SendHKWaitTask() |
| | | public void SendHKWaitTask(List<Dt_Task> Tasks) |
| | | { |
| | | try |
| | | { |
| | | List<Dt_Task> reslut = _taskService.Repository.QueryData(x => x.TaskType == (int)TaskTypeEnum.Move); |
| | | if (reslut.Count<0) |
| | | List<Dt_Task> Uptasks = new List<Dt_Task>(); |
| | | foreach (var item in Tasks) |
| | | { |
| | | foreach (var item in reslut) |
| | | var content = _taskService.SendHIKROBOTTask(item); |
| | | if (content.Status) |
| | | { |
| | | var content = _taskService.SendHIKROBOTTask(item); |
| | | } |
| | | reslut.ForEach(x => |
| | | { |
| | | x.TaskState =(int)TaskStatusEnum.Execut; |
| | | }); |
| | | |
| | | item.TaskState = (int)TaskStatusEnum.Execut; |
| | | Uptasks.Add(item); |
| | | } |
| | | } |
| | | _taskService.UpdateData(reslut); |
| | | |
| | | _taskService.UpdateData(Uptasks); |
| | | |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | |
| | | } |
| | | } |
| | | #endregion |
| | | |
| | | /// <summary> |
| | | /// ä»å°å䏿忥¼å±ä»£ç ï¼AAãBBãCCãDDãEEãFFï¼ |
| | | /// </summary> |
| | | /// <param name="address">ç¹ä½å°å</param> |
| | | /// <returns>楼å±ä»£ç </returns> |
| | | private string GetMapCodeFromAddress(string address) |
| | | { |
| | | if (string.IsNullOrEmpty(address)) |
| | | return null; |
| | | |
| | | // å°åæ ¼å¼ç¤ºä¾ ï¼AA å¯¹åº 0339050AA0309145 |
| | | // keys æ¯ AAãBBãCCãDDãEEãFFï¼vuleæ¯å¯¹åºçç¹ä½ä¿¡æ¯ |
| | | foreach (var floorCode in FloorMapping.FloorMap.Keys) |
| | | { |
| | | if (address.Contains(floorCode)) |
| | | { |
| | | return floorCode;//è¿åçå°±æ¯AAãBBãCCãDDãEEãFFä¸çä¸ä¸ªï¼ä»£è¡¨å¯¹åºçæ¥¼å± |
| | | } |
| | | } |
| | | return null; |
| | | } |
| | | |
| | | |
| | | } |
| | | } |
| | |
| | | try |
| | | { |
| | | Dt_ApiInfo? apiInfo = _apiInfoService.Repository.QueryFirst(x => x.ApiCode == nameof(FOURBOTnewMovePodTask)) ?? throw new Exception("æªæ¾å°åå车任å¡ä¸åæ¥å£é
置信æ¯ï¼è¯·æ£æ¥æ¥å£é
ç½®"); |
| | | int i = 0; |
| | | foreach (var task in tasks) |
| | | { |
| | | i++; |
| | | fOURBOTnewMovePodTask = new() |
| | | { |
| | | priority = task.Grade, |
| | |
| | | task.RGVTaskId = fOURBO.taskID; |
| | | task.ExceptionMessage = ""; |
| | | task.TaskState = (int)TaskStatusEnum.Execut; |
| | | task.Dispatchertime = DateTime.Now; |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | task.ExceptionMessage = ex.Message; |
| | | content.Error(ex.Message); |
| | | } |
| | | finally |
| | | { |
| | | _trackloginfoService.AddTrackLog(fOURBOTnewMovePodTask, content, "ä¸ååå车æ°å»ºå
¥åºä»»å¡", "", ""); |
| | | } |
| | | } |
| | | var uptasks = tasks.Where(task => string.IsNullOrEmpty(task.ExceptionMessage)).ToList(); |
| | |
| | | { |
| | | foreach (var item in errortasks) |
| | | { |
| | | Thread.Sleep(500); |
| | | _taskService.ErrorTaskFeedback(item, true); |
| | | } |
| | | } |
| | |
| | | catch (Exception ex) |
| | | { |
| | | content.Error(ex.Message); |
| | | } |
| | | finally |
| | | { |
| | | _trackloginfoService.AddTrackLog(fOURBOTnewMovePodTask, content, "ä¸ååå车æ°å»ºå
¥åºä»»å¡", "", ""); |
| | | } |
| | | } |
| | | |
| | |
| | | keepRobot = 1, |
| | | keepRobotTimeout = 1 |
| | | }; |
| | | fOURBOTnewMovePodTask.requestID += item.TaskId; |
| | | fOURBOTnewMovePodTask.desType = 1; |
| | | fOURBOTnewMovePodTask.desNodeID = item.NextAddress; |
| | | string response = HttpHelper.Post(apiInfo.ApiAddress, fOURBOTnewMovePodTask.Serialize()); |
| | |
| | | } |
| | | //FOURBOTnewMovePodTaskResponseData fOURBO = fOURBOTReturn.data as FOURBOTnewMovePodTaskResponseData ?? throw new Exception("æªè·åå°åå车è¿åçä»»å¡ID"); |
| | | item.RGVTaskId = fOURBO.taskID; |
| | | item.Dispatchertime = DateTime.Now; |
| | | item.TaskState = (int)TaskStatusEnum.TakeFinish; |
| | | } |
| | | } |
| | |
| | | }; |
| | | requestData = request; // ä¿åè¯·æ±æ°æ®ç¨äºæ¥å¿ |
| | | //content.candidatePodIDs = tasks.Select(x => x.PalletCode).ToList(); |
| | | string response = HttpHelper.Post(apiInfo.ApiAddress, request.Serialize()); |
| | | string response = HttpHelper.Post("http://127.0.0.1:4523/m2/6165241-5857331-default/440906899?apifoxApiId=440906899", request.Serialize()); |
| | | |
| | | //string response = HttpHelper.Post(apiInfo.ApiAddress, request.Serialize()); |
| | | FOURBOTReturn fOURBOTReturn = response.DeserializeObject<FOURBOTReturn>(); |
| | | content.OK(data: fOURBOTReturn); |
| | | if (fOURBOTReturn.returnCode == 0) |
| | |
| | | #endregion |
| | | var responseContent = AddMoveTask(item.blockPods, task);//æ·»å ç§»åºä»»å¡ |
| | | if (!responseContent.Status) task.ExceptionMessage = responseContent.Message; |
| | | else task.TaskState = (int)TaskStatusEnum.RGV_WaitMoveToExecute; |
| | | else |
| | | { |
| | | task.TaskState = (int)TaskStatusEnum.RGV_WaitMoveToExecute; |
| | | } |
| | | dt_Tasks.Add(task); |
| | | } |
| | | else |
| | |
| | | { |
| | | autoToRest = 1 |
| | | }; |
| | | fOURBOTnewMovePodTask.requestID = DateTime.Now.ToString("yyyyMMddHHmmssfff") + item.TaskId; |
| | | item.CurrentAddress = item.NextAddress; |
| | | item.NextAddress = rGVLocationInfo.LocationCode; |
| | | item.TargetAddress = rGVLocationInfo.LocationCode; |
| | |
| | | var fOURBO = data.DeserializeObject<FOURBOTnewMovePodTaskResponseData>(); |
| | | item.RGVTaskId = fOURBO.taskID; |
| | | item.TaskState = (int)TaskStatusEnum.Puting; |
| | | |
| | | rGVLocationInfo.LocationStatus = LocationStatusEnum.InLock.ObjToInt(); |
| | | item.Dispatchertime = DateTime.Now; |
| | | locationsToUpdate.Add(rGVLocationInfo); |
| | | |
| | | #region éæ¾å
¥åºç«å° |
| | | //var stationManger = _stationMangerService.GetInStationInfo(item.SourceAddress); |
| | | //if (stationManger != null) |
| | | //{ |
| | | // stationManger.IsOccupied = LocationStatusEnum.Free.ObjToInt(); |
| | | // stationsToUpdate.Add(stationManger); |
| | | //} |
| | | var stationManger = _stationMangerService.GetInStationInfo(item.SourceAddress); |
| | | if (stationManger != null) |
| | | { |
| | | stationManger.IsOccupied = LocationStatusEnum.Free.ObjToInt(); |
| | | stationsToUpdate.Add(stationManger); |
| | | } |
| | | content.OK(); |
| | | #endregion |
| | | } |
| | |
| | | item.ExceptionMessage = $"å¤çä»»å¡å¼å¸¸ï¼{ex.Message}"; |
| | | //WriteError($"{nameof(TaskJob)}-{item.TaskId}", ex.Message, ex); |
| | | content.Error($"åå车æ¥å£è¿åé误ï¼{ex.Message}"); |
| | | } |
| | | finally |
| | | { |
| | | |
| | | } |
| | | } |
| | | #region MyRegion |
| | |
| | | _taskService.UpdateData(tasksToUpdate); |
| | | if (locationsToUpdate.Any()) |
| | | _rGVLocationInfoService.UpdateData(locationsToUpdate); |
| | | //if (stationsToUpdate.Any()) |
| | | // _stationMangerService.UpdateData(stationsToUpdate); |
| | | if (stationsToUpdate.Any()) |
| | | _stationMangerService.UpdateData(stationsToUpdate); |
| | | |
| | | _unitOfWorkManage.CommitTran(); |
| | | } |
| | |
| | | } |
| | | item.RGVTaskId = fOURBO.taskID; |
| | | item.TaskState = (int)TaskStatusEnum.Puting; |
| | | item.Dispatchertime = DateTime.Now; |
| | | } |
| | | } |
| | | _taskService.UpdateData(tasks); |
| | |
| | | var task = tasks.First(x => x.PalletCode == item.podID); |
| | | task.RGVTaskId = item.taskID; |
| | | task.TaskState = TaskStatusEnum.RGV_MoveTaskSend.ObjToInt(); |
| | | task.Dispatchertime = DateTime.Now; |
| | | dt_Tasks.Add(task); |
| | | } |
| | | _taskService.UpdateData(dt_Tasks); |
| | |
| | | { |
| | | foreach (var item in tasks) |
| | | { |
| | | var takes = _taskService.Repository.QueryFirst(x => x.Roadway == item.Roadway && x.TaskType == (int)TaskTypeEnum.CPMoveInventory); |
| | | var takes = _taskService.Repository.QueryFirst(x => x.Roadway == item.Roadway && x.TaskType == (int)TaskTypeEnum.CPMoveInventory && (x.TaskState == (int)TaskStatusEnum.RGV_NewMoveTask || x.TaskState == (int)TaskStatusEnum.RGV_MoveTaskSend)); |
| | | if (takes == null) |
| | | { |
| | | item.TaskState = (int)TaskStatusEnum.RGV_WaitSend; |
| | | item.Dispatchertime = DateTime.Now; |
| | | } |
| | | } |
| | | _taskService.UpdateData(tasks); |
| | |
| | | autoToRest = 1 |
| | | }; |
| | | fOURBOTnewMovePodTask.desType = 5; |
| | | fOURBOTnewMovePodTask.requestID = DateTime.Now.ToString("yyyyMMddHHmmss") + item.TaskId; |
| | | fOURBOTnewMovePodTask.requestID = DateTime.Now.ToString("yyyyMMddHHmmssfff") + item.TaskId; |
| | | string response = HttpHelper.Post(apiInfo.ApiAddress, fOURBOTnewMovePodTask.Serialize()); |
| | | FOURBOTReturn fOURBOTReturn = response.DeserializeObject<FOURBOTReturn>(); |
| | | content.OK(data: fOURBOTReturn); |
| | |
| | | } |
| | | item.RGVTaskId = fOURBO.taskID; |
| | | item.TaskState = (int)TaskStatusEnum.Execut; |
| | | item.Dispatchertime = DateTime.Now; |
| | | //stationManger.IsOccupied = LocationStatusEnum.Lock.ObjToInt(); |
| | | //_stationMangerService.UpdateData(stationManger); |
| | | } |
| | |
| | | //#endregion |
| | | |
| | | #region ä¸å海康1å°6楼çAGVä»»å¡/ä¸å海康6å°1楼çAGVä»»å¡ |
| | | Tasks = newTasks.Where(x => (x.TaskType == (int)TaskTypeEnum.Q3CK) || x.TaskType == (int)TaskTypeEnum.Q3RK).OrderByDescending(x => x.Grade).ToList(); |
| | | Tasks = newTasks.Where(x => (x.TaskType == (int)TaskTypeEnum.Q3CK) || x.TaskType == (int)TaskTypeEnum.Q3RK||x.TaskType==(int)TaskTypeEnum.F01).OrderByDescending(x => x.Grade).ToList(); |
| | | if (Tasks.Count > 0) SendAGVTask(Tasks); |
| | | |
| | | |
| | |
| | | |
| | | |
| | | #region å¤çagvå¾
空车æ¬è¿ä»»å¡ |
| | | Tasks = ExecutTasks.Where(x => x.TaskState == (int)TaskStatusEnum.WaitingHkAGVMovePosition).OrderByDescending(x => x.Grade).ToList(); |
| | | if (Tasks.Count > 0) SendHKWaitTask(); |
| | | Tasks = ExecutTasks.Where(x => x.TaskState == (int)TaskStatusEnum.HkTransportCompleted).OrderByDescending(x => x.Grade).ToList(); |
| | | if (Tasks.Count > 0) SendHKWaitTask(Tasks); |
| | | #endregion |
| | | |
| | | |
| | |
| | | using HslCommunication; |
| | | using HslCommunication.Core; |
| | | using Microsoft.VisualBasic.FileIO; |
| | | using OfficeOpenXml.FormulaParsing.Excel.Functions.Text; |
| | | using Quartz; |
| | | using SixLabors.ImageSharp.PixelFormats; |
| | | using SqlSugar; |
| | |
| | | using WIDESEAWCS_Common.TaskEnum; |
| | | using WIDESEAWCS_Communicator; |
| | | using WIDESEAWCS_Core.BaseRepository; |
| | | using WIDESEAWCS_Core.Enums; |
| | | using WIDESEAWCS_Core.Helper; |
| | | using WIDESEAWCS_IBasicInfoService; |
| | | using WIDESEAWCS_ITaskInfoService; |
| | | using WIDESEAWCS_Model.Models; |
| | | using WIDESEAWCS_QuartzJob; |
| | | using WIDESEAWCS_QuartzJob.DeviceBase; |
| | | using WIDESEAWCS_QuartzJob.DTO; |
| | | using WIDESEAWCS_QuartzJob.StackerCrane.Enum; |
| | | |
| | | namespace WIDESEAWCS_Tasks |
| | |
| | | SendNewTask(); |
| | | |
| | | SendWaitToTask(); |
| | | |
| | | #region å¤çåå
¥è®¾å¤ä¿¡å·å¼å¸¸ä»»å¡ |
| | | var tasks = _taskService.Repository.QueryData(x => x.TaskState == TaskStatusEnum.Finish.ObjToInt() && !string.IsNullOrEmpty(x.Remark)); |
| | | if (tasks.Count > 0) |
| | | { |
| | | List<Dt_Task> list = new List<Dt_Task>(); |
| | | foreach (var item in tasks) |
| | | { |
| | | var infos = item.Remark.Split("_"); |
| | | var device = Storage.Devices.FirstOrDefault(x => x.DeviceCode == infos[0]) as OtherDevice; |
| | | if (device != null && device.IsConnected) |
| | | { |
| | | DeviceProDTO? devicePro = device.DeviceProDTOs.FirstOrDefault(x => x.DeviceProParamName == infos[1] && x.DeviceChildCode == infos[3]); |
| | | if (devicePro != null) |
| | | { |
| | | var W = device.Communicator.WriteObj(devicePro.DeviceProAddress, devicePro.DeviceDataType, infos[2]); |
| | | if (W) list.Add(item); |
| | | } |
| | | } |
| | | } |
| | | _taskService.Repository.DeleteAndMoveIntoHty(list, OperateTypeEnum.èªå¨å é¤); |
| | | } |
| | | #endregion |
| | | } |
| | | catch (Exception ex) |
| | | { |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using System.Linq; |
| | | using System.Text; |
| | | using System.Threading.Tasks; |
| | | using WIDESEAWCS_Common.LocationEnum; |
| | | using WIDESEAWCS_Common.TaskEnum; |
| | | using WIDESEAWCS_Common; |
| | | using WIDESEAWCS_Model.Models; |
| | | using WIDESEAWCS_Core.Helper; |
| | | using WIDESEAWCS_QuartzJob; |
| | | |
| | | namespace WIDESEAWCS_Tasks |
| | | { |
| | | public partial class TestJob |
| | | { |
| | | /// <summary> |
| | | /// åå车质æ£ä»»å¡ |
| | | /// </summary> |
| | | /// <param name="device"></param> |
| | | public void SXCTasks(OtherDevice device) |
| | | { |
| | | #region ååè½¦ä»»å¡ |
| | | List<Dt_Task> Uptasks = new List<Dt_Task>(); |
| | | var taskList = _taskService.Repository.QueryData(x => x.TaskType == TaskTypeEnum.CPInbound.ObjToInt() && x.TaskState == TaskStatusEnum.CheckShapeing.ObjToInt()); |
| | | //ä»»å¡çç®æ å°å对äºç«å°å·ï¼ |
| | | foreach (var task in taskList) |
| | | { |
| | | if (device.GetValue<QualityInspectionCommandEnum, bool>(QualityInspectionCommandEnum.R_QualityInspection, task.SourceAddress)) |
| | | { |
| | | device.SetValue(QualityInspectionCommandEnum.StartqualityInspection, false, task.SourceAddress); |
| | | //å读åè´¨æ£ç»æ |
| | | var qualityResult = device.GetValue<QualityInspectionCommandEnum, bool>(QualityInspectionCommandEnum.R_QualityInspectionInProgress, task.SourceAddress); |
| | | //å·¦è¶
宽è¦å |
| | | var R_LeftOverWidthWarning = device.GetValue<QualityInspectionCommandEnum, bool>(QualityInspectionCommandEnum.R_LeftOverWidthWarning, task.SourceAddress); |
| | | //å³è¶
宽è¦å |
| | | var R_RightWideWarning = device.GetValue<QualityInspectionCommandEnum, bool>(QualityInspectionCommandEnum.R_RightWideWarning, task.SourceAddress); |
| | | //è¶
é«è¦å |
| | | var R_ExtremeWarning = device.GetValue<QualityInspectionCommandEnum, bool>(QualityInspectionCommandEnum.R_ExtremeWarning, task.SourceAddress); |
| | | if (qualityResult) |
| | | { |
| | | //å¦æè´¨æ£éè¿äºï¼å°±æä»»å¡ç¶ææ¹ä¸ºè´¨æ£å®æ |
| | | task.TaskState = TaskStatusEnum.CheckShapeingOk.ObjToInt(); |
| | | task.ExceptionMessage = ""; |
| | | Uptasks.Add(task); |
| | | } |
| | | else |
| | | { |
| | | task.TaskState = TaskStatusEnum.CheckShapeingNG.ObjToInt(); |
| | | task.ExceptionMessage = "夿£å¤±è´¥"; |
| | | if (R_LeftOverWidthWarning) task.ExceptionMessage += ",å·¦è¶
宽"; |
| | | if (R_RightWideWarning) task.ExceptionMessage += ",å³è¶
宽"; |
| | | if (R_ExtremeWarning) task.ExceptionMessage += ",è¶
é«"; |
| | | Uptasks.Add(task); |
| | | //åå
¥å¤ä½ä¿¡å· |
| | | //device.SetValue(QualityInspectionCommandEnum.FaultReset, true, task.SourceAddress); |
| | | } |
| | | //åå
¥åæ¢è´¨æ£ä¿¡å· |
| | | device.SetValue(QualityInspectionCommandEnum.StopqualityInspection, true, task.SourceAddress); |
| | | Thread.Sleep(500); |
| | | device.SetValue(QualityInspectionCommandEnum.StopqualityInspection, false, task.SourceAddress); |
| | | } |
| | | //else |
| | | //{ |
| | | // //åå
¥åæ¢è´¨æ£ä¿¡å· |
| | | // device.SetValue(QualityInspectionCommandEnum.StopqualityInspection, false, task.SourceAddress); |
| | | // device.SetValue(QualityInspectionCommandEnum.StartqualityInspection, true, task.SourceAddress); |
| | | //} |
| | | else |
| | | { |
| | | task.TaskState = TaskStatusEnum.CheckShapeingNG.ObjToInt(); |
| | | task.ExceptionMessage = "æªæ£æµå°è´¨æ£å®æä¿¡å·"; |
| | | Uptasks.Add(task); |
| | | } |
| | | } |
| | | if (Uptasks.Count > 0) |
| | | { |
| | | _taskService.UpdateData(Uptasks); |
| | | } |
| | | #endregion |
| | | } |
| | | |
| | | |
| | | |
| | | /// <summary> |
| | | /// 海康AGV1-6æ¥¼ä»»å¡ |
| | | /// </summary> |
| | | /// <param name="device"></param> |
| | | public void KHTasks(OtherDevice device) |
| | | { |
| | | List<Dt_Task> Uptasks = new List<Dt_Task>(); |
| | | var AGVtaskList = _taskService.Repository.QueryData(x => x.TaskState == TaskStatusEnum.AGV_WaitToExecute.ObjToInt() && (x.TaskType == TaskTypeEnum.Q3RK.ObjToInt() || x.TaskType == TaskTypeEnum.Q3CK.ObjToInt()));//1-6å6-1æ¥¼ä»»å¡ |
| | | foreach (var item in AGVtaskList) |
| | | { |
| | | var address = item.TaskType == TaskTypeEnum.Q3RK.ObjToInt() ? item.TargetAddress : item.SourceAddress; |
| | | var stationManger = _stationMangerService.Repository.QueryFirst(x => x.StationCode == address); |
| | | if (stationManger == null) |
| | | { |
| | | item.ExceptionMessage = $"æªæ¾å°ã{address}ãç«å°ä¿¡æ¯"; |
| | | Uptasks.Add(item); |
| | | continue; |
| | | } |
| | | var StockAvailableSymbol = device.GetValue<QualityInspectionCommandEnum, bool>(QualityInspectionCommandEnum.R_StockAvailableSymbol, address); |
| | | if (item.TaskType == TaskTypeEnum.Q3RK.ObjToInt()) |
| | | { |
| | | if (StockAvailableSymbol) |
| | | { |
| | | item.ExceptionMessage = $"{address}ç«å°å
çµæ£æµæè´§ï¼"; |
| | | Uptasks.Add(item); |
| | | continue; |
| | | } |
| | | if (stationManger.IsOccupied == (int)LocationStatusEnum.Lock) |
| | | { |
| | | item.ExceptionMessage = $"ç«å°æè´§ï¼"; |
| | | Uptasks.Add(item); |
| | | continue; |
| | | } |
| | | } |
| | | else |
| | | { |
| | | if (!StockAvailableSymbol) |
| | | { |
| | | item.ExceptionMessage = $"{address}ç«å°å
çµæ£æµæ è´§ï¼"; |
| | | Uptasks.Add(item); |
| | | continue; |
| | | } |
| | | if (stationManger.IsOccupied == (int)LocationStatusEnum.Free) |
| | | { |
| | | item.ExceptionMessage = $"ç«å°æ è´§ï¼"; |
| | | Uptasks.Add(item); |
| | | continue; |
| | | } |
| | | } |
| | | //intoè¿å
¥ä¸æ¥¼ä½ç½®çæ¶åï¼åå
¥è¿å
¥ä¿¡å· |
| | | device.SetValue(QualityInspectionCommandEnum.RequestToEnter, true, address); |
| | | if (!device.GetValue<QualityInspectionCommandEnum, bool>(QualityInspectionCommandEnum.Blocking, address)) |
| | | { |
| | | item.ExceptionMessage = $"{address}ç«å°å
æ
ä¸ä¸ºtrueï¼1ï¼!"; |
| | | Uptasks.Add(item); |
| | | continue; |
| | | } |
| | | var result = _taskService.Hikvisiontaskscontinue(item.WMSTaskNum); |
| | | if (result.Status == false) |
| | | { |
| | | if (item.ExceptionMessage != result.Message) |
| | | { |
| | | item.ExceptionMessage = result.Message; |
| | | Uptasks.Add(item); |
| | | } |
| | | continue; |
| | | } |
| | | item.TaskState = (int)TaskStatusEnum.AGV_ToExecute; |
| | | item.ExceptionMessage = ""; |
| | | Uptasks.Add(item); |
| | | } |
| | | if (Uptasks.Count > 0) |
| | | { |
| | | _taskService.UpdateData(Uptasks); |
| | | } |
| | | } |
| | | } |
| | | } |
| | |
| | | using System.Text; |
| | | using System.Threading.Tasks; |
| | | using WIDESEAWCS_Common; |
| | | using WIDESEAWCS_Common.LocationEnum; |
| | | using WIDESEAWCS_Common.TaskEnum; |
| | | using WIDESEAWCS_Communicator; |
| | | using WIDESEAWCS_Core.Helper; |
| | |
| | | namespace WIDESEAWCS_Tasks |
| | | { |
| | | [DisallowConcurrentExecution] |
| | | public class TestJob : JobBase, IJob |
| | | public partial class TestJob : JobBase, IJob |
| | | { |
| | | private readonly ITaskService _taskService; |
| | | private readonly IStationMangerService _stationMangerService; |
| | |
| | | // _taskService.Repository ä»å¨å±ï¼è¿è¡æ°æ®åºè®¿é®- |
| | | try |
| | | { |
| | | List<Dt_Task> Uptasks = new List<Dt_Task>(); |
| | | var taskList = _taskService.Repository.QueryData(x => x.TaskType == TaskTypeEnum.CPInbound.ObjToInt() && x.TaskState == TaskStatusEnum.CheckShapeing.ObjToInt()); |
| | | var AGVtaskList = _taskService.Repository.QueryData(x => x.TaskState == TaskStatusEnum.AGV_WaitToExecute.ObjToInt()&& (x.TaskType == TaskTypeEnum.Q3RK.ObjToInt() || x.TaskType == TaskTypeEnum.Q3CK.ObjToInt()));//1-6å6-1æ¥¼ä»»å¡ |
| | | //ä»»å¡çç®æ å°å对äºç«å°å·ï¼ |
| | | foreach (var task in taskList) |
| | | { |
| | | if (device.GetValue<QualityInspectionCommandEnum, bool>(QualityInspectionCommandEnum.R_QualityInspection, task.SourceAddress)) |
| | | { |
| | | device.SetValue(QualityInspectionCommandEnum.StartqualityInspection, false, task.SourceAddress); |
| | | //å读åè´¨æ£ç»æ |
| | | var qualityResult = device.GetValue<QualityInspectionCommandEnum, bool>(QualityInspectionCommandEnum.R_QualityInspectionInProgress, task.SourceAddress); |
| | | //å·¦è¶
宽è¦å |
| | | var R_LeftOverWidthWarning = device.GetValue<QualityInspectionCommandEnum, bool>(QualityInspectionCommandEnum.R_LeftOverWidthWarning, task.SourceAddress); |
| | | //å³è¶
宽è¦å |
| | | var R_RightWideWarning = device.GetValue<QualityInspectionCommandEnum, bool>(QualityInspectionCommandEnum.R_RightWideWarning, task.SourceAddress); |
| | | //è¶
é«è¦å |
| | | var R_ExtremeWarning = device.GetValue<QualityInspectionCommandEnum, bool>(QualityInspectionCommandEnum.R_ExtremeWarning, task.SourceAddress); |
| | | //åå
¥åæ¢è´¨æ£ä¿¡å· |
| | | device.SetValue(QualityInspectionCommandEnum.StopqualityInspection, true, task.SourceAddress); |
| | | Thread.Sleep(500); |
| | | device.SetValue(QualityInspectionCommandEnum.StopqualityInspection, false, task.SourceAddress); |
| | | if (qualityResult) |
| | | { |
| | | //å¦æè´¨æ£éè¿äºï¼å°±æä»»å¡ç¶ææ¹ä¸ºè´¨æ£å®æ |
| | | task.TaskState = TaskStatusEnum.CheckShapeingOk.ObjToInt(); |
| | | task.ExceptionMessage = ""; |
| | | Uptasks.Add(task); |
| | | } |
| | | else |
| | | { |
| | | task.TaskState = TaskStatusEnum.CheckShapeingNG.ObjToInt(); |
| | | task.ExceptionMessage = "夿£å¤±è´¥"; |
| | | if (R_LeftOverWidthWarning) task.ExceptionMessage += ",å·¦è¶
宽"; |
| | | if (R_RightWideWarning) task.ExceptionMessage += ",å³è¶
宽"; |
| | | if (R_ExtremeWarning) task.ExceptionMessage += ",è¶
é«"; |
| | | Uptasks.Add(task); |
| | | //åå
¥å¤ä½ä¿¡å· |
| | | //device.SetValue(QualityInspectionCommandEnum.FaultReset, true, task.SourceAddress); |
| | | } |
| | | } |
| | | //else |
| | | //{ |
| | | // //åå
¥åæ¢è´¨æ£ä¿¡å· |
| | | // device.SetValue(QualityInspectionCommandEnum.StopqualityInspection, false, task.SourceAddress); |
| | | // device.SetValue(QualityInspectionCommandEnum.StartqualityInspection, true, task.SourceAddress); |
| | | //} |
| | | } |
| | | foreach (var item in AGVtaskList) |
| | | { |
| | | SXCTasks(device); |
| | | |
| | | //intoè¿å
¥ä¸æ¥¼ä½ç½®çæ¶åï¼åå
¥è¿å
¥ä¿¡å· |
| | | device.SetValue(QualityInspectionCommandEnum.RequestToEnter, true, item.TargetAddress); |
| | | if (!device.GetValue<QualityInspectionCommandEnum,bool>(QualityInspectionCommandEnum.Blocking)==true) |
| | | { |
| | | item.ExceptionMessage = $"{item.TargetAddress}ç«å°å
æ
ä¸ä¸ºtrueï¼1ï¼!"; |
| | | } |
| | | var result = _taskService.Hikvisiontaskscontinue(item.WMSTaskNum); |
| | | if (result.Status == false) |
| | | { |
| | | if (item.ExceptionMessage != result.Message) |
| | | { |
| | | item.ExceptionMessage = result.Message; |
| | | Uptasks.Add(item); |
| | | } |
| | | continue; |
| | | } |
| | | item.TaskState = (int)TaskStatusEnum.AGV_ToExecute; |
| | | item.ExceptionMessage = ""; |
| | | Uptasks.Add(item); |
| | | KHTasks(device); |
| | | |
| | | |
| | | } |
| | | //WriteInfo(device.DeviceName, "infoLog"); |
| | | |
| | | |
| | | _taskService.UpdateData(Uptasks); |
| | | WriteInfo(device.DeviceName, "infoLog"); |
| | | |
| | | WriteDebug(device.DeviceName, "debugLog"); |
| | | //WriteDebug(device.DeviceName, "debugLog"); |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | |
| | | { |
| | | WriteError(nameof(TestJob), "åæ°é误,æªä¼ é设å¤åæ°æè®¾å¤ç±»åé误"); |
| | | } |
| | | |
| | | |
| | | return Task.CompletedTask; |
| | | } |
| | | } |