| 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/TaskEnum/TaskStatusEnum.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Model/Models/TaskInfo/Dt_Task.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Model/Models/TaskInfo/Dt_Task_Hty.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Controllers/AGV/KLSAGVController.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/appsettings.json | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/KLSTaskMethods.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskMethods.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/Task/TaskExtend.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/Task/TaskJob.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/TaskEnum/TaskStatusEnum.cs
@@ -7,6 +7,109 @@ namespace WIDESEAWCS_Common.TaskEnum { public enum TaskStatusEnum { /// <summary> /// æ°å»ºä»»å¡ /// </summary> [Description("æ°å»ºä»»å¡")] New, ///// <summary> ///// å¾ æ§è¡ ///// </summary> [Description("å¾ æ§è¡")] Execut, ///// <summary> ///// åè´§ä¸ ///// </summary> [Description("åè´§ä¸")] Takeing, /// <summary> /// åè´§å®æ /// </summary> [Description("åè´§å®æ")] TakeFinish, /// <summary> /// æ¾è´§ä¸ /// </summary> [Description("æ¾è´§ä¸")] Puting, /// <summary> /// 宿 /// </summary> [Description("宿")] Finish, /// <summary> /// å¤å½¢æ£æµä¸ /// </summary> [Description("å¤å½¢æ£æµä¸")] CheckShapeing, /// <summary> /// æçå·ç¡®è®¤ä¸ /// </summary> [Description("æçå·ç¡®è®¤ä¸")] CheckPalletCodeing, /// <summary> /// AGVå¾ ç»§ç»æ§è¡ /// </summary> [Description("AGVå¾ ç»§ç»æ§è¡")] AGV_WaitToExecute, #region å¯ä¹å£«AGVå ¶ä»ä»»å¡ç¶æ /// <summary> /// èµ·ç¹æ è´§ /// </summary> [Description("èµ·ç¹æ è´§")] FromOutOfStock, /// <summary> /// ç»ç¹æè´§ /// </summary> [Description("ç»ç¹æè´§")] ToaddInStock, /// <summary> /// ä»»å¡å·éå¤ /// </summary> [Description("ä»»å¡å·éå¤")] TaskNumRepetition, /// <summary> /// RCSç³»ç»æ¥æ¶å°ä»»å¡åæä½æ°æ®åºå¼å¸¸ /// </summary> [Description("RCSç³»ç»æ¥æ¶å°ä»»å¡åæä½æ°æ®åºå¼å¸¸")] RCSDataError, /// <summary> /// ä»»å¡ç±»åå¼å¸¸ /// </summary> [Description("ä»»å¡ç±»åå¼å¸¸")] TaskTypeError, /// <summary> /// åæ°å¼å¸¸ /// </summary> [Description("åæ°å¼å¸¸")] ParameterError, /// <summary> /// RCSç³»ç»æªç¥å¼å¸¸ /// </summary> [Description("RCSç³»ç»æªç¥å¼å¸¸")] RCSError, /// <summary> /// ä»»å¡åºæ¢ /// </summary> [Description("ä»»å¡åºæ¢")] Cancel #endregion #region 海康AGVå ¶ä»ä»»å¡ç¶æ #endregion #region ååè½¦å ¶ä»ä»»å¡ç¶æ #endregion } public enum TaskInStatusEnum { /// <summary> ´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_Model/Models/TaskInfo/Dt_Task.cs
@@ -62,11 +62,11 @@ public string PalletCode { get; set; } /// <summary> /// å··éå· /// åºå /// </summary> [ImporterHeader(Name = "å··éå·")] [ExporterHeader(DisplayName = "å··éå·")] [SugarColumn(IsNullable = true, Length = 10, ColumnDescription = "å··éå·")] [ImporterHeader(Name = "åºå")] [ExporterHeader(DisplayName = "åºå")] [SugarColumn(IsNullable = true, Length = 10, ColumnDescription = "åºå")] public string Roadway { get; set; } /// <summary> ´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_Model/Models/TaskInfo/Dt_Task_Hty.cs
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,18 @@ 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 { public class Dt_Task_Hty : Dt_Task, IBaseHistoryEntity { public int SourceId { get; set; } public string OperateType { get; set; } public DateTime InsertTime { get; set; } } } ´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Controllers/AGV/KLSAGVController.cs
@@ -24,7 +24,7 @@ /// <param name="taskDTOs"></param> /// <returns></returns> [HttpPost, Route("UpdateTaskStatus"), AllowAnonymous] public WebResponseContent UpdateTaskStatus(object TaskDTO) public WebResponseContent UpdateTaskStatus([FromBody] object TaskDTO) { return _taskService.UpdateTaskStatus(TaskDTO, DeviceTypeEnum.GALAXIS); } ´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/appsettings.json
@@ -17,7 +17,7 @@ //5.PostgreSQL "DBType": "SqlServer", //è¿æ¥å符串 "ConnectionString": "Data Source=.;Initial Catalog=WIDESEAWCS_GP;User ID=sa;Password=123456;Integrated Security=False;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False", "ConnectionString": "Data Source=.;Initial Catalog=WIDESEAWCS_GP;User ID=sa;Password=P@ssw0rd;Integrated Security=False;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False", //è·¨å "Cors": { "PolicyName": "CorsIpAccess", //çç¥åç§° ´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/KLSTaskMethods.cs
@@ -24,7 +24,7 @@ { try { int containerType = taskDTO.containerCode.Contains("") ? LocationTypeEnum.LargePallet.ObjToInt() : LocationTypeEnum.SmallPallet.ObjToInt(); int containerType = taskDTO.containerCode.Contains("LLM") ? LocationTypeEnum.LargePallet.ObjToInt() : LocationTypeEnum.SmallPallet.ObjToInt(); //è·åè´§ä½ä¿¡æ¯ Dt_KLSLocationInfo? kLSLocationInfo = _kLSLocationInfoService.Repository.QueryFirst(x => x.WarehouseId.ToString() == taskDTO.toAreaCode && x.EnableStatus == EnableStatusEnum.Normal.ObjToInt() && x.LocationStatus == LocationStatusEnum.Free.ObjToInt() && x.LocationType == containerType); if (kLSLocationInfo == null) throw new Exception($"æªæ¾å°ç»ç¹åºåºã{taskDTO.toAreaCode}ãå¯ç¨ç©ºè´§ä½ï¼"); @@ -34,7 +34,7 @@ WMSTaskNum = taskDTO.taskCode, Grade = taskDTO.taskPriority, PalletCode = taskDTO.containerCode, TaskState = TaskInStatusEnum.InNew.ObjToInt(), TaskState = TaskStatusEnum.New.ObjToInt(), TaskType = taskType, SourceAddress = taskDTO.fromLocationCode, CurrentAddress = taskDTO.fromLocationCode, @@ -68,7 +68,7 @@ WMSTaskNum = taskDTO.taskCode, Grade = taskDTO.taskPriority, PalletCode = taskDTO.containerCode, TaskState = TaskOutStatusEnum.OutNew.ObjToInt(), TaskState = TaskStatusEnum.New.ObjToInt(), TaskType = taskType, SourceAddress = taskDTO.fromLocationCode, CurrentAddress = taskDTO.fromLocationCode, ´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskMethods.cs
@@ -1,15 +1,26 @@ using System; using Magicodes.IE.Core; using NetTaste; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Text.Json; using System.Threading.Tasks; using WIDESEAWCS_Common; using WIDESEAWCS_Common.LocationEnum; using WIDESEAWCS_Common.TaskEnum; using WIDESEAWCS_Core; using WIDESEAWCS_Core.Enums; using WIDESEAWCS_Core.Helper; using WIDESEAWCS_DTO; using WIDESEAWCS_Model.Models; namespace WIDESEAWCS_TaskInfoService { public partial class TaskService { #region æ´æ°ä»»å¡ç¶æ /// <summary> /// æ´æ°ä»»å¡ç¶æ /// </summary> @@ -23,7 +34,23 @@ { if (deviceTypeEnum == DeviceTypeEnum.GALAXIS) { GALAXISUpdateTaskStatus? gALAXIS = TaskDTO.Serialize().DeserializeObject<GALAXISUpdateTaskStatus>(); if (gALAXIS == null) throw new Exception("åæ°è½¬æ¢å¤±è´¥ï¼"); var task = BaseDal.QueryFirst(x => x.WMSTaskNum == gALAXIS.taskId); if (task == null) throw new Exception($"æªæ¾å°ä»»å¡,ä»»å¡ç¼å·ã{gALAXIS.taskId}ã"); switch (gALAXIS.taskStatus) { case 0: TaskCompleted(task, deviceTypeEnum); break; case 4: TaskFromCompleted(task, deviceTypeEnum); break; default: task.TaskState = ReturnTaskStatus(gALAXIS.taskStatus, deviceTypeEnum); BaseDal.UpdateData(task); break; } } else if (deviceTypeEnum == DeviceTypeEnum.HIKROBOT) { @@ -37,8 +64,154 @@ } catch (Exception ex) { return WebResponseContent.Instance.Error(ex.Message); throw new Exception(ex.Message); } } } #endregion #region ä»»å¡ç¶æè½¬æ¢ public int ReturnTaskStatus(object status, DeviceTypeEnum deviceTypeEnum) { try { if (deviceTypeEnum == DeviceTypeEnum.GALAXIS) { TaskStatusEnum taskStatus = status switch { 1 => TaskStatusEnum.FromOutOfStock, 2 => TaskStatusEnum.ToaddInStock, 3 => TaskStatusEnum.TaskNumRepetition, 5 => TaskStatusEnum.RCSDataError, 6 => TaskStatusEnum.TaskTypeError, 7 => TaskStatusEnum.ParameterError, 8 => TaskStatusEnum.RCSError, 13 => TaskStatusEnum.Cancel, _ => throw new ArgumentOutOfRangeException( nameof(status), status, $"æªç¥çä»»å¡ç¶æç : {status}" ) }; return (int)taskStatus; } else if (deviceTypeEnum == DeviceTypeEnum.HIKROBOT) { return 0; } else { return 0; } } catch (Exception ex) { throw new Exception(ex.Message); } } #endregion #region ä»»å¡èµ·ç¹å®æ /// <summary> /// ä»»å¡èµ·ç¹å®æ /// </summary> /// <param name="dt_Task"></param> /// <param name="deviceTypeEnum"></param> /// <returns></returns> public WebResponseContent TaskFromCompleted(Dt_Task dt_Task, DeviceTypeEnum deviceTypeEnum) { try { dt_Task.TaskState = TaskStatusEnum.TakeFinish.ObjToInt(); Db.Ado.BeginTran(); UpdateLocationStatus(dt_Task.SourceAddress, deviceTypeEnum, LocationStatusEnum.Free); BaseDal.UpdateData(dt_Task); Db.Ado.CommitTran(); return WebResponseContent.Instance.OK(); } catch (Exception ex) { Db.Ado.RollbackTran(); throw new Exception(ex.Message); } } #endregion #region ä»»å¡å®æ /// <summary> /// ä»»å¡å®æ /// </summary> /// <param name=""></param> /// <param name="deviceTypeEnum"></param> /// <returns></returns> public WebResponseContent TaskCompleted(Dt_Task dt_Task, DeviceTypeEnum deviceTypeEnum) { try { dt_Task.TaskState = TaskStatusEnum.Finish.ObjToInt(); Db.Ado.BeginTran(); UpdateLocationStatus(dt_Task.TargetAddress, deviceTypeEnum, LocationStatusEnum.InStock); BaseDal.DeleteAndMoveIntoHty(dt_Task, OperateTypeEnum.èªå¨å®æ); Db.Ado.CommitTran(); return WebResponseContent.Instance.OK(); } catch (Exception ex) { Db.Ado.RollbackTran(); throw new Exception(ex.Message); } } #endregion #region æ´æ°è´§ä½ç¶æ /// <summary> /// æ´æ°è´§ä½ç¶æ /// </summary> /// <param name="LocationCode"></param> /// <param name="deviceTypeEnum"></param> /// <param name="locationStatusEnum"></param> /// <returns></returns> public WebResponseContent UpdateLocationStatus(string LocationCode, DeviceTypeEnum deviceTypeEnum, LocationStatusEnum locationStatusEnum) { try { if (deviceTypeEnum == DeviceTypeEnum.GALAXIS) { Dt_KLSLocationInfo? dt_KLSLocationInfo = _kLSLocationInfoService.Repository.QueryFirst(x => x.LocationCode == LocationCode); if (dt_KLSLocationInfo != null) { dt_KLSLocationInfo.LocationStatus = locationStatusEnum.ObjToInt(); _kLSLocationInfoService.Repository.UpdateData(dt_KLSLocationInfo); } } else if (deviceTypeEnum == DeviceTypeEnum.HIKROBOT) { Dt_HKLocationInfo? dt_HKLocationInfo = _hKLocationInfoService.Repository.QueryFirst(x => x.LocationCode == LocationCode); if (dt_HKLocationInfo != null) { dt_HKLocationInfo.LocationStatus = locationStatusEnum.ObjToInt(); _hKLocationInfoService.Repository.UpdateData(dt_HKLocationInfo); } } else if (deviceTypeEnum == DeviceTypeEnum.YuanLiJuHe) { Dt_RGVLocationInfo dt_RGVLocationInfo = _rGVLocationInfoService.Repository.QueryFirst(x => x.LocationCode == LocationCode); if (dt_RGVLocationInfo != null) { dt_RGVLocationInfo.LocationStatus = locationStatusEnum.ObjToInt(); _rGVLocationInfoService.Repository.UpdateData(dt_RGVLocationInfo); } } else//åºå¤ç«å° { } return WebResponseContent.Instance.OK(); } catch (Exception ex) { throw new Exception(ex.Message); } } #endregion } } ´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/Task/TaskExtend.cs
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,73 @@ using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using WIDESEAWCS_Common.TaskEnum; using WIDESEAWCS_Core.Helper; using WIDESEAWCS_Model.Models; namespace WIDESEAWCS_Tasks { public partial class TaskJob { #region ä¸åä»»å¡ /// <summary> /// ä¸åä»»å¡ /// </summary> public void SendTask() { try { var newTask = _taskService.Db.Queryable<Dt_Task>().Where(x => x.TaskState == TaskStatusEnum.New.ObjToInt()).ToList(); if (newTask.Count > 0) { } } catch (Exception ex) { WriteError(nameof(TaskJob), ex.Message, ex); } } #endregion #region ä¸åå¾ æ§è¡ä»»å¡ /// <summary> /// ä¸åå¾ æ§è¡ä»»å¡ /// </summary> public void SendWaitToTask() { try { } catch (Exception ex) { WriteError(nameof(TaskJob), ex.Message, ex); } } #endregion #region ä¸åå¯ä¹å£«AGVä»»å¡ public void SendGALAXISTask(List<Dt_Task> tasks) { } #endregion #region ä¸åååè½¦ä»»å¡ public void SendRGVTask(List<Dt_Task> tasks) { } #endregion #region ä¸å海康AGVä»»å¡ public void SendHIKROBOTTask(List<Dt_Task> tasks) { } #endregion } } ´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/Task/TaskJob.cs
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,53 @@ using Autofac.Core; using HslCommunication; using HslCommunication.Core; using Microsoft.VisualBasic.FileIO; using Quartz; using SixLabors.ImageSharp.PixelFormats; using System; using System.Collections.Generic; using System.ComponentModel; using System.Linq; using System.Reflection; using System.Text; using System.Threading.Tasks; using WIDESEAWCS_Common.TaskEnum; using WIDESEAWCS_Communicator; using WIDESEAWCS_Core.Helper; using WIDESEAWCS_IBasicInfoService; using WIDESEAWCS_ITaskInfoService; using WIDESEAWCS_Model.Models; using WIDESEAWCS_QuartzJob; using WIDESEAWCS_QuartzJob.DeviceBase; using WIDESEAWCS_QuartzJob.StackerCrane.Enum; namespace WIDESEAWCS_Tasks { [DisallowConcurrentExecution] public partial class TaskJob : JobBase, IJob { private readonly ITaskService _taskService; private readonly IApiInfoService _apiInfoService; public TaskJob(ITaskService taskService, IApiInfoService apiInfoService) { _taskService = taskService;//æ³¨å ¥ _apiInfoService = apiInfoService; } public Task Execute(IJobExecutionContext context) { try { SendTask(); SendWaitToTask(); } catch (Exception ex) { Console.Out.WriteLine(nameof(TaskJob) + ":" + ex.Message); } return Task.CompletedTask; } } }