| 4 小时以前 | yanjinhui | ![]() |
| 4 小时以前 | yanjinhui | ![]() |
| 4 小时以前 | dengjunjie | ![]() |
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_BasicInfoService/ApiInfoService.cs
@@ -3,8 +3,12 @@ using System.Linq; using System.Text; using System.Threading.Tasks; using WIDESEAWCS_Core; using WIDESEAWCS_Core.BaseRepository; using WIDESEAWCS_Core.BaseServices; using WIDESEAWCS_Core.Helper; using WIDESEAWCS_DTO; using WIDESEAWCS_DTO.RGV.FOURBOT; using WIDESEAWCS_IBasicInfoService; using WIDESEAWCS_Model.Models; @@ -12,10 +16,78 @@ { public class ApiInfoService : ServiceBase<Dt_ApiInfo, IRepository<Dt_ApiInfo>>, IApiInfoService { public ApiInfoService(IRepository<Dt_ApiInfo> BaseDal) : base(BaseDal) private readonly IInterfaceLogService _interfaceLogService; public ApiInfoService(IRepository<Dt_ApiInfo> BaseDal, IInterfaceLogService interfaceLogService) : base(BaseDal) { _interfaceLogService = interfaceLogService; } public IRepository<Dt_ApiInfo> Repository => BaseDal; /// <summary> /// Postæ¥å£è¯·æ± /// </summary> /// <param name="apiCode">æ¥å£ç¼å·</param> /// <param name="requestParameters">请æ±å 容</param> /// <param name="remark">夿³¨</param> /// <param name="isAdd">æ¯å¦æ·»å æ¥å¿</param> /// <returns></returns> public WebResponseContent PostInterfaceRequest(string apiCode, string requestParameters, string remark, bool isAdd = true) { WebResponseContent content = new WebResponseContent(); string response = string.Empty; Dt_ApiInfo? apiInfo = null; try { apiInfo = BaseDal.QueryFirst(x => x.ApiCode == apiCode) ?? throw new Exception($"æªæ¾å°{remark}æ¥å£é 置信æ¯ï¼è¯·æ£æ¥æ¥å£é ç½®"); response = HttpHelper.Post(apiInfo.ApiAddress, requestParameters); if (apiInfo.Remark.Contains("åå车")) { FOURBOTReturn fOURBOTReturn = response.DeserializeObject<FOURBOTReturn>(); if (fOURBOTReturn == null) throw new Exception($"{apiInfo.Remark}ååºå 容转æ¢å®ä½å¤±è´¥ï¼"); if (fOURBOTReturn.returnCode != 0) throw new Exception(fOURBOTReturn.returnUserMsg); content.Data = fOURBOTReturn; } else if (apiInfo.Remark.Contains("å¯ä¹å£«")) { } else if (apiInfo.Remark.Contains("海康")) { } else if (apiInfo.Remark.Contains("WMS")) { } content.OK(); } catch (Exception ex) { content.Error(ex.Message); } finally { if (isAdd && !string.IsNullOrEmpty(response) && apiInfo != null) { Dt_InterfaceLog interfaceLog = new Dt_InterfaceLog() { ApiCode = apiCode, RequestParameters = requestParameters, ApiAddress = apiInfo.ApiAddress, ApiName = apiInfo.ApiName, PushFrequency = 1, PushState = content.Status ? 1 : 2, Requestor = "WCS", Recipient = apiInfo.Remark, ResponseParameters = response, Creater = "System", Remark = content.Status ? remark : content.Message, }; _interfaceLogService.Repository.AddData(interfaceLog); } } return content; } } } ´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_BasicInfoService/InterfaceLogService.cs
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,52 @@ using Microsoft.AspNetCore.Mvc; using Newtonsoft.Json; using SqlSugar; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using WIDESEAWCS_Core; using WIDESEAWCS_Core.BaseRepository; using WIDESEAWCS_Core.BaseServices; using WIDESEAWCS_IBasicInfoService; using WIDESEAWCS_Model.Models; namespace WIDESEAWCS_BasicInfoService { public class InterfaceLogService : ServiceBase<Dt_InterfaceLog, IRepository<Dt_InterfaceLog>>, IInterfaceLogService { public InterfaceLogService(IRepository<Dt_InterfaceLog> BaseDal) : base(BaseDal) { } public IRepository<Dt_InterfaceLog> Repository => BaseDal; /// <summary> /// æ·»å æ¥å¿ /// </summary> /// <param name="ApiCode">æ¥å£ç¼å·</param> /// <param name="ApiName">æ¥å£åç§°</param> /// <param name="ApiAddress">æ¥å£å°å</param> /// <param name="Requestor">è¯·æ±æ¹</param> /// <param name="RequestParameters">请æ±å 容</param> /// <param name="Recipient">æ¥æ¶æ¹</param> /// <param name="ResponseParameters">ååºå 容</param> /// <param name="Add">æ¯å¦æ·»å </param> /// <returns></returns> public WebResponseContent AddInterfaceLog(string ApiCode, string ApiName, string ApiAddress, string Requestor, string RequestParameters, string Recipient, string ResponseParameters, bool Add) { WebResponseContent content = new WebResponseContent(); try { } catch (Exception ex) { content.Error(ex.Message); } return content; } } } ´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_BasicInfoService/RGVLocationInfoService.cs
@@ -60,7 +60,7 @@ if (rGVLocationInfo == null) break; Dt_Task dt_Task = new() { Grade = 1, Grade = 66, PalletCode = locationInfo.PalletCode, Roadway = locationInfo.RoadwayNo, TaskState = TaskStatusEnum.RGV_NewMoveTask.ObjToInt(), ´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_IBasicInfoService/IApiInfoService.cs
@@ -3,6 +3,7 @@ using System.Linq; using System.Text; using System.Threading.Tasks; using WIDESEAWCS_Core; using WIDESEAWCS_Core.BaseRepository; using WIDESEAWCS_Core.BaseServices; using WIDESEAWCS_Model.Models; @@ -12,5 +13,15 @@ public interface IApiInfoService : IService<Dt_ApiInfo> { public IRepository<Dt_ApiInfo> Repository { get; } /// <summary> /// Postæ¥å£è¯·æ± /// </summary> /// <param name="apiCode">æ¥å£ç¼å·</param> /// <param name="requestParameters">请æ±å 容</param> /// <param name="remark">夿³¨</param> /// <param name="isAdd">æ¯å¦æ·»å æ¥å¿</param> /// <returns></returns> public WebResponseContent PostInterfaceRequest(string apiCode, string requestParameters, string remark, bool isAdd = true); } } ´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_IBasicInfoService/IInterfaceLogService.cs
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,20 @@ using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using WIDESEAWCS_Core; using WIDESEAWCS_Core.BaseRepository; using WIDESEAWCS_Core.BaseServices; using WIDESEAWCS_Model.Models; namespace WIDESEAWCS_IBasicInfoService { public interface IInterfaceLogService : IService<Dt_InterfaceLog> { public IRepository<Dt_InterfaceLog> Repository { get; } } } ´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_Model/Models/BasicInfo/Dt_ApiInfo.cs
@@ -36,6 +36,12 @@ public string ApiAddress { get; set; } /// <summary> /// æ¨éæ¬¡æ° /// </summary> [SugarColumn(IsNullable = false, ColumnDescription = "è´§ä½è¡")] public int PushFrequency { get; set; } /// <summary> /// 夿³¨ /// </summary> [SugarColumn(IsNullable = true, Length = 50, ColumnDescription = "夿³¨")] ´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_Model/Models/BasicInfo/Dt_InterfaceLog.cs
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,83 @@ using SqlSugar; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using WIDESEAWCS_Core.DB.Models; namespace WIDESEAWCS_Model.Models { [SugarTable(nameof(Dt_InterfaceLog), "æ¥å£æ¥å¿")] public class Dt_InterfaceLog : BaseEntity { /// <summary> /// ä¸»é® /// </summary> [SugarColumn(IsPrimaryKey = true, IsIdentity = true, ColumnDescription = "主é®")] public int Id { get; set; } /// <summary> /// æ¥å£ç¼å· /// </summary> [SugarColumn(IsNullable = true, Length = 50, ColumnDescription = "æ¥å£ç¼å·")] public string ApiCode { get; set; } /// <summary> /// æ¥å£åç§° /// </summary> [SugarColumn(IsNullable = true, Length = 50, ColumnDescription = "æ¥å£åç§°")] public string ApiName { get; set; } /// <summary> /// æ¥å£å°å /// </summary> [SugarColumn(IsNullable = true, Length = 200, ColumnDescription = "æ¥å£å°å")] public string ApiAddress { get; set; } /// <summary> /// æ¨éæ¬¡æ° /// </summary> [SugarColumn(IsNullable = false, ColumnDescription = "æ¨é次æ°")] public int PushFrequency { get; set; } = 0; /// <summary> /// æ¨éç¶æ /// 0æªæ¨é /// 1æ¨éæå /// 2æ¨é失败 /// </summary> [SugarColumn(IsNullable = false, ColumnDescription = "æ¨éç¶æ")] public int PushState { get; set; } = 0; /// <summary> /// è¯·æ±æ¹ /// </summary> [SugarColumn(IsNullable = true, Length = 50, ColumnDescription = "è¯·æ±æ¹")] public string Requestor { get; set; } /// <summary> /// 请æ±å 容 /// </summary> [SugarColumn(IsNullable = true, Length = int.MaxValue, ColumnDescription = "请æ±å 容")] public string RequestParameters { get; set; } /// <summary> /// æ¥æ¶æ¹ /// </summary> [SugarColumn(IsNullable = true, Length = 50, ColumnDescription = "æ¥æ¶æ¹")] public string Recipient { get; set; } /// <summary> /// ååºå 容 /// </summary> [SugarColumn(IsNullable = true, Length = int.MaxValue, ColumnDescription = "ååºå 容")] public string ResponseParameters { get; set; } /// <summary> /// 夿³¨ /// </summary> [SugarColumn(IsNullable = true, Length = 100, ColumnDescription = "夿³¨")] public string Remark { get; set; } } } ´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Controllers/BasicInfo/InterfaceLogController.cs
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,22 @@ using Microsoft.AspNetCore.Mvc; using WIDESEAWCS_Core.BaseController; using WIDESEAWCS_IBasicInfoService; using WIDESEAWCS_Model.Models; namespace WIDESEAWCS_Server.Controllers.BasicInfo { /// <summary> ///æ¥å£ä¿¡æ¯ /// </summary> [Route("api/InterfaceLog")] [ApiController] public class InterfaceLogController : ApiBaseController<IInterfaceLogService, Dt_InterfaceLog> { public InterfaceLogController(IInterfaceLogService service) : base(service) { } } } ´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskMethods.cs
@@ -397,16 +397,24 @@ { task.ExceptionMessage = Rgv.content.errorReason; var Error = _taskErrorMessageService.Repository.QueryFirst(x => x.ErrorCode == Rgv.content.errorCode && x.DeviceType == (int)deviceTypeEnum); if (Error != null) if (task.TaskType == (int)TaskTypeEnum.CPOutbound && task.TaskState == (int)TaskStatusEnum.Execut && Rgv.content.errorCode == 1330003)//æååºåºä»»å¡ä¸ååå馿é»ç¢æï¼ä¿®æ¹ä»»å¡ç¶æä¸ºæ°å»ºéæ°æ¥è¯¢é»ç¢æå ³ç³» { task.ExceptionMessage = Error.ExceptionMessage; MatchCollection matches = Regex.Matches(Rgv.content.errorReason, @"\(([^)]+)\)"); if (matches.Count > 0) task.ExceptionMessage = ReplacePlaceholders(Rgv.content.errorReason, Error.ExceptionMessage); ErrorTaskFeedback(task, true, Error.ErrorCode.ToString()); task.TaskState = (int)TaskStatusEnum.New; BaseDal.UpdateData(task); } else ErrorTaskFeedback(task, true); { if (Error != null) { task.ExceptionMessage = Error.ExceptionMessage; MatchCollection matches = Regex.Matches(Rgv.content.errorReason, @"\(([^)]+)\)"); if (matches.Count > 0) task.ExceptionMessage = ReplacePlaceholders(Rgv.content.errorReason, Error.ExceptionMessage); ErrorTaskFeedback(task, true, Error.ErrorCode.ToString()); } else ErrorTaskFeedback(task, true); } } } } ´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/TSJExtend.cs
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,318 @@ 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); } } } } } ´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/TSJJob.cs
@@ -30,7 +30,7 @@ namespace WIDESEAWCS_Tasks { [DisallowConcurrentExecution] public class TSJJob : JobBase, IJob public partial class TSJJob : JobBase, IJob { private readonly ITaskService _taskService; private readonly IStationMangerService _stationMangerService; @@ -49,226 +49,11 @@ if (flag && value != null) { OtherDevice device = (OtherDevice)value; //Example //device.GetValue 读å //device.SetValue åå ¥ // _taskService.Repository ä»å¨å±ï¼è¿è¡æ°æ®åºè®¿é® try { 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; } } HKConexecutTask(device); PalletNumConfirmation(device); //ç¶åè°ç¨è¾é线æ¥å£ï¼éç¥è¾é线ææç®±éè¦å ¥åºï¼ä»»å¡ä¸¾è¡æ§è¡ 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); } #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 #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) { WriteError(device.DeviceName, "é误", ex); } PalletReportingToWMS(device); } else { ´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/Task/RGVTaskExtend.cs
@@ -161,15 +161,11 @@ /// <param name="tasks"></param> public void IsMoveTask(List<Dt_Task> tasks) { object requestData = null; // æ·»å åéè®°å½è¯·æ±æ°æ® WebResponseContent content = new WebResponseContent(); try { Dt_ApiInfo? apiInfo = _apiInfoService.Repository.QueryFirst(x => x.ApiCode == nameof(GetBlockPodContentDto)) ?? throw new Exception("æªæ¾å°æ¹éè·åé»ç¢æçå ³ç³»æ¥å£é 置信æ¯ï¼è¯·æ£æ¥æ¥å£é ç½®"); List<Dt_Task> dt_Tasks = new List<Dt_Task>(); var PalletCodes = tasks.Select(x => x.PalletCode).ToList(); //GetBlockPodContentDto content = new GetBlockPodContentDto(); var request = new GetBlockPodContentListDto { content = new List<GetBlockPodContentDto> @@ -181,21 +177,49 @@ } } }; requestData = request; // ä¿åè¯·æ±æ°æ®ç¨äºæ¥å¿ //content.candidatePodIDs = tasks.Select(x => x.PalletCode).ToList(); //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); content = _apiInfoService.PostInterfaceRequest(nameof(GetBlockPodContentDto), request.Serialize(), "æ¹éè·åé»ç¢æçå ³ç³»"); if (!content.Status) { foreach (var item in tasks) { item.ExceptionMessage = content.Message; } _taskService.UpdateData(tasks); return; } FOURBOTReturn fOURBOTReturn = content.Data as FOURBOTReturn; if (fOURBOTReturn.returnCode == 0) { //ReturnBlockPodResultDto getBlockPod = fOURBOTReturn.data as ReturnBlockPodResultDto ?? throw new Exception("æªè·åå°é»ç¢æçå ³ç³»æ°æ®"); var dataJson = fOURBOTReturn.data.ToString(); if (string.IsNullOrEmpty(dataJson)) { foreach (var item in tasks) { item.ExceptionMessage = "è·åé»ç¢æçå ³ç³»å¤±è´¥ï¼"; } _taskService.UpdateData(tasks); return; } ReturnBlockPodResultDto? getBlockPod = JsonConvert.DeserializeObject<ReturnBlockPodResultDto>(dataJson); if (getBlockPod == null) { foreach (var item in tasks) { item.ExceptionMessage = "é»ç¢æçå ³ç³»æ°æ®è½¬æ¢å®ä½å¤±è´¥ï¼"; } _taskService.UpdateData(tasks); return; } if (getBlockPod.Result.Count == 0) { throw new Exception("æªè·åå°é»ç¢æçå ³ç³»æ°æ®"); foreach (var item in tasks) { item.ExceptionMessage = "æªè·åå°é»ç¢æçå ³ç³»æ°æ®ï¼"; } _taskService.UpdateData(tasks); return; } foreach (var Result in getBlockPod.Result) { @@ -234,7 +258,7 @@ } finally { _trackloginfoService.AddTrackLog(requestData, content, "å¤çåºåºä»»å¡æ¯å¦éè¦ç§»åº", "", ""); //_trackloginfoService.AddTrackLog(requestData, content, "å¤çåºåºä»»å¡æ¯å¦éè¦ç§»åº", "", ""); } } #endregion