| ¶Ô±ÈÐÂÎļþ |
| | |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using System.Linq; |
| | | using System.Text; |
| | | using System.Threading.Tasks; |
| | | using WIDESEAWCS_Common.TaskEnum; |
| | | using WIDESEAWCS_Common; |
| | | using WIDESEAWCS_Model.Models; |
| | | using WIDESEAWCS_QuartzJob; |
| | | using WIDESEAWCS_Core.Helper; |
| | | using WIDESEAWCS_Common.LocationEnum; |
| | | using SixLabors.ImageSharp; |
| | | using Autofac.Core; |
| | | |
| | | namespace WIDESEAWCS_Tasks |
| | | { |
| | | public partial class TSJJob |
| | | { |
| | | /// <summary> |
| | | /// æµ·åº·ç»§ç»æ§è¡ä»»å¡ |
| | | /// </summary> |
| | | /// <param name="device"></param> |
| | | public void HKConexecutTask(OtherDevice device) |
| | | { |
| | | |
| | | List<Dt_Task> Uptasks = new List<Dt_Task>(); |
| | | //æ¥è¯¢ææä»»å¡ç±»å为3,4楼çå
¥åºä»»å¡ç±»åä¸ä»»å¡ç¶æä¸ºAGV_WaitToExecuteçä»»å¡ |
| | | var taskList = _taskService.Repository.QueryData(x => x.TaskState == TaskStatusEnum.AGV_WaitToExecute.ObjToInt()); |
| | | //ä»»å¡çç®æ å°å对äºç«å°å·ï¼ |
| | | foreach (var task in taskList) |
| | | { |
| | | //å
æ£æ¥è®¾å¤ç¶æ |
| | | if (device.GetValue<HoistEnum, short>(HoistEnum.EquipmentStatus, "TSJ") == 2) |
| | | { |
| | | if (task.ExceptionMessage == "æåæºè®¾å¤æ
é") |
| | | { |
| | | continue; |
| | | } |
| | | task.ExceptionMessage = "æåæºè®¾å¤æ
é"; |
| | | Uptasks.Add(task); |
| | | continue; |
| | | //throw new Exception("è®¾å¤æ
é"); |
| | | } |
| | | if (task.TaskType == TaskTypeEnum.RK3F.ObjToInt() || task.TaskType == TaskTypeEnum.CHUKU1.ObjToInt() || task.TaskType == TaskTypeEnum.F04.ObjToInt()) |
| | | { |
| | | if (task.TaskType == TaskTypeEnum.RK3F.ObjToInt()) |
| | | { |
| | | //夿3楼å
¥åºç®±å·ææ |
| | | if (device.GetValue<HoistEnum, short>(HoistEnum.OutboundInplace, task.TargetAddress) != 2) |
| | | { |
| | | if (task.ExceptionMessage == "3楼å
¥åºç®±å·æè´§ï¼è¯·å
å¤ç") |
| | | { |
| | | continue; |
| | | } |
| | | task.ExceptionMessage = "3楼å
¥åºç®±å·æè´§ï¼è¯·å
å¤ç"; |
| | | Uptasks.Add(task); |
| | | continue; |
| | | } |
| | | } |
| | | else |
| | | { |
| | | if (device.GetValue<HoistEnum, short>(HoistEnum.ReturnbinAvailable, task.TargetAddress) != 2) |
| | | { |
| | | if (task.ExceptionMessage != "4Fæåæºå
¥å£æè´§") |
| | | { |
| | | task.ExceptionMessage = "4Fæåæºå
¥å£æè´§"; |
| | | Uptasks.Add(task); |
| | | } |
| | | continue; |
| | | } |
| | | } |
| | | |
| | | |
| | | //ç¶åè°ç¨è¾é线æ¥å£ï¼éç¥è¾é线ææç®±éè¦å
¥åºï¼ä»»å¡ä¸¾è¡æ§è¡ |
| | | var result = _taskService.Hikvisiontaskscontinue(task.WMSTaskNum); |
| | | if (result.Status == false) |
| | | { |
| | | if (task.ExceptionMessage != result.Message) |
| | | { |
| | | task.ExceptionMessage = result.Message; |
| | | Uptasks.Add(task); |
| | | } |
| | | continue; |
| | | } |
| | | task.TaskState = (int)TaskStatusEnum.AGV_ToExecute; |
| | | task.ExceptionMessage = ""; |
| | | Uptasks.Add(task); |
| | | |
| | | //è¿éä»»å¡åæäºCheckPalletCodeing |
| | | |
| | | } |
| | | else if (task.TaskType == TaskTypeEnum.CK3F.ObjToInt() || task.TaskType == TaskTypeEnum.Q1TSJ4.ObjToInt() || task.TaskType == TaskTypeEnum.F03.ObjToInt()) //åºåº |
| | | { |
| | | ////åºåºæç®±ç¼åæ°é(è¿ä¸ªæ¯åºåºæ¥è¯¢çæ¶åè¦æ¥ä¸ä¸ï¼è¿ç»wms) |
| | | //if (device.GetValue<HoistEnum, short>(HoistEnum.Outboundmaterialbox, "TSJ") == 0) throw new Exception("没æåºåºæç®±ç¼åæ°é为空"); |
| | | |
| | | if (task.TaskType == TaskTypeEnum.CK3F.ObjToInt()) |
| | | { |
| | | //读å3楼åºåºæç®±å°ä½ |
| | | if (device.GetValue<HoistEnum, short>(HoistEnum.SOutboundmaterialbox, task.SourceAddress) != 1) |
| | | { |
| | | if (task.ExceptionMessage != "3楼æåæºåºå£å
çµå馿 è´§") |
| | | { |
| | | task.ExceptionMessage = "3楼æåæºåºå£å
çµå馿 è´§"; |
| | | Uptasks.Add(task); |
| | | } |
| | | continue; |
| | | } |
| | | } |
| | | else |
| | | { |
| | | if (device.GetValue<HoistEnum, short>(HoistEnum.FOutboundmaterialbox, task.SourceAddress) != 1) |
| | | { |
| | | if (task.ExceptionMessage != "4楼æåæºåºå£å
çµå馿 è´§") |
| | | { |
| | | task.ExceptionMessage = "4楼æåæºåºå£å
çµå馿 è´§"; |
| | | Uptasks.Add(task); |
| | | } |
| | | continue; |
| | | } |
| | | |
| | | if (device.GetValue<HoistEnum, short>(HoistEnum.ROutScanningCompletionSignal, task.SourceAddress) != 1) |
| | | { |
| | | if (task.ExceptionMessage != "4楼æåæºåºå£æ«ç å®æä¿¡å·æ²¡æå®æ") |
| | | { |
| | | task.ExceptionMessage = "4楼æåæºåºå£æ«ç å®æä¿¡å·æ²¡æå®æ"; |
| | | Uptasks.Add(task); |
| | | } |
| | | continue; |
| | | } |
| | | } |
| | | //ç¶åè°ç¨è¾é线æ¥å£ï¼éç¥è¾é线ææç®±éè¦å
¥åºï¼ä»»å¡ä¸¾è¡æ§è¡ |
| | | var result = _taskService.Hikvisiontaskscontinue(task.WMSTaskNum); |
| | | if (result.Status == false) |
| | | { |
| | | if (task.ExceptionMessage != result.Message) |
| | | { |
| | | task.ExceptionMessage = result.Message; |
| | | Uptasks.Add(task); |
| | | } |
| | | continue; |
| | | } |
| | | task.TaskState = (int)TaskStatusEnum.AGV_ToExecute; |
| | | task.ExceptionMessage = ""; |
| | | Uptasks.Add(task); |
| | | } |
| | | } |
| | | if (Uptasks.Count > 0) |
| | | { |
| | | _taskService.UpdateData(Uptasks); |
| | | } |
| | | |
| | | |
| | | |
| | | } |
| | | |
| | | |
| | | |
| | | /// <summary> |
| | | /// æçå·ç¡®è®¤ä¸ |
| | | /// </summary> |
| | | /// <param name="device"></param> |
| | | public void PalletNumConfirmation(OtherDevice device) |
| | | { |
| | | #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 |
| | | { |
| | | |
| | | //å¦æè´¨æ£éè¿å°±ä¸æ¹åRK3FTask.TargetAddressçå¼ï¼ |
| | | if (!string.IsNullOrEmpty(Verification.Message)) |
| | | { |
| | | //寻æ¾å¹³åºè´§ä½ |
| | | var Location = _stationInfoService.Repository.QueryFirst(x => x.StationRegion == Verification.Message.ObjToInt() && x.StationStatus == (int)LocationStatusEnum.Free && x.FloorNumber == "CC" && x.IsOccupied == (int)LocationStatusEnum.Free); |
| | | //è¿éè¦å¤æ |
| | | if (Location == null) |
| | | { |
| | | RK3FTask.ExceptionMessage = "$æªæ¾å°{Verification.Message}åºåçè´§ä½{Location}"; |
| | | } |
| | | RK3FTask.CurrentAddress = RK3FTask.TargetAddress; |
| | | RK3FTask.NextAddress = Location.StationCode; |
| | | RK3FTask.TargetAddress = Location.StationCode; |
| | | _taskService.UpdateData(RK3FTask); |
| | | } |
| | | //è°ç¨æµ·åº·è¿è¡æ§è¡å®ææ¥å£ |
| | | var result = _taskService.Hikvisiontaskscontinue(RK3FTask.WMSTaskNum, RK3FTask.NextAddress); |
| | | 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 |
| | | } |
| | | |
| | | |
| | | /// <summary> |
| | | /// 4Fæåæºåºå£æçå·ä¸æ¥WMS |
| | | /// </summary> |
| | | /// <param name="device"></param> |
| | | |
| | | public void PalletReportingToWMS(OtherDevice device) |
| | | { |
| | | #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 |
| | | } |
| | | |
| | | |
| | | /// <summary> |
| | | /// æåæºæ¥è¦ |
| | | /// </summary> |
| | | /// <param name="device"></param> |
| | | public void TSJAlarm(OtherDevice device) |
| | | { |
| | | |
| | | var alarmPoints = new Dictionary<HoistEnum, string>{ |
| | | { HoistEnum.EquipmentStatus, "设å¤ç¶æ" }, |
| | | { HoistEnum.R_ElectricDrumA301, "çµå¨æ»çA301æ¥è¦" }, |
| | | { HoistEnum.R_ElectricDrumA302, "çµå¨æ»çA302æ¥è¦" }, |
| | | { HoistEnum.R_ElectricDrumA303, "çµå¨æ»çA303æ¥è¦" }, |
| | | { HoistEnum.R_ElectricDrumA304, "çµå¨æ»çA304æ¥è¦" }, |
| | | { HoistEnum.R_ElectricDrumA305, "çµå¨æ»çA305æ¥è¦" }, |
| | | { HoistEnum.R_ElectricDrumA306, "çµå¨æ»çA306æ¥è¦" }, |
| | | { HoistEnum.R_ElectricDrumA307, "çµå¨æ»çA307æ¥è¦" }, |
| | | { HoistEnum.R_ElectricDrumT001, "çµå¨æ»çT001æ¥è¦" }, |
| | | { HoistEnum.R_InverterAlarm, "åé¢å¨æ¥è¦" }, |
| | | { HoistEnum.R_ElectricDrumA401, "çµå¨æ»çA401æ¥è¦" }, |
| | | { HoistEnum.R_ElectricDrumA402, "çµå¨æ»çA402æ¥è¦" }, |
| | | { HoistEnum.R_ElectricDrumA403, "çµå¨æ»çA403æ¥è¦" }, |
| | | { HoistEnum.R_ElectricDrumA404, "çµå¨æ»çA404æ¥è¦" }, |
| | | { HoistEnum.R_ElectricDrumA405, "çµå¨æ»çA405æ¥è¦" }, |
| | | { HoistEnum.R_ElectricDrumA406, "çµå¨æ»çA406æ¥è¦" }, |
| | | { HoistEnum.R_ElectricDrumA407, "çµå¨æ»çA407æ¥è¦" }, |
| | | { HoistEnum.R_ElectricDrumT002, "æåæº2åé¢å¨æ¥è¦" }, |
| | | { HoistEnum.R_UpperlimitAlarm1, "ä¸é使¥è¦1" }, |
| | | { HoistEnum.R_LowerlimitAlarm1, "ä¸é使¥è¦1" }, |
| | | { HoistEnum.R_UpperlimitAlarm2, "ä¸é使¥è¦2" }, |
| | | { HoistEnum.R_LowerlimitAlarm2, "ä¸é使¥è¦2" }, |
| | | { HoistEnum.R_ScancodeError1, "读ç å¨3楼æ«ç å¼å¸¸" }, |
| | | { HoistEnum.R_ScancodeError2, "读ç å¨4楼æ«ç å¼å¸¸" }, |
| | | { HoistEnum.R_EmergencSytop1, "æ¥å1" }, |
| | | { HoistEnum.R_EmergencSytop2, "æ¥å2" }, |
| | | { HoistEnum.R_TSJEmergencSytop1, "æåæºæ¥å1" }, |
| | | { HoistEnum.R_TSJEmergencSytop2, "æåæºæ¥å2" }, |
| | | { HoistEnum.R_DrumAlarmT002, "çµæ»ç4楼æ¥è¦T002" }, |
| | | { HoistEnum.R_TSJSpare1, "å¤ç¨æ¥è¦1" }, |
| | | { HoistEnum.R_TSJSpare2, "å¤ç¨æ¥è¦2" } |
| | | }; |
| | | var Address = "TSJ"; |
| | | |
| | | |
| | | foreach (var point in alarmPoints) |
| | | { |
| | | // 读åPLCå¼ï¼éè¦æ ¹æ®å®é
APIè°æ´ï¼ |
| | | bool isAlarming = device.GetValue<HoistEnum, bool>(point.Key,Address); |
| | | // æè
device.ReadBool(point.Key); |
| | | |
| | | if (isAlarming) |
| | | { |
| | | // ææ¥è¦ï¼åéç»WMS |
| | | //SendAlarmToWMS(device, point.Key, point.Value); |
| | | } |
| | | |
| | | } |
| | | } |
| | | |
| | | |
| | | } |
| | | |
| | | } |
| | | |