From 7ffb3e46be019dd9a449405f765ceae20cbece81 Mon Sep 17 00:00:00 2001 From: icewint Date: Fri, 7 Jun 2024 13:10:02 +0800 Subject: [PATCH] =?UTF-8?q?[important]=E5=AE=8C=E5=96=84=E4=BB=BB?= =?UTF-8?q?=E5=8A=A1=E8=A7=A3=E6=9E=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../GetStackerTaskNewDestinationRequest.cs | 31 +++++ .../Dto/WcsDto/ElTag/QueryTaskRequest.cs | 6 + .../WmsController/WmsTaskController.cs | 12 ++ .../Service/WmsService/WmsTaskService.cs | 43 ++++++- .../CirculationTask/ElTag/LightElTag.cs | 23 +++- .../CirculationTask/ElTag/OffElTag.cs | 2 +- .../CirculationTask/Stacker/CheckAccount.cs | 4 +- .../Stacker/ExeTaskDoubleFork.cs | 2 +- .../TaskData/ResolveWmsTask.cs | 109 ++++++++++++------ WcsMain/ConsoleLog.cs | 14 +-- WcsMain/DataBase/Dao/AppElTagTaskDao.cs | 8 +- WcsMain/DataBase/Dao/AppWmsTaskDao.cs | 12 ++ WcsMain/DataBase/MixDao/TaskDao.cs | 29 +++++ WcsMain/DataBase/TableEntity/AppElTagTask.cs | 7 ++ WcsMain/ElTag/Atop/BaseOprDataHandler.cs | 5 +- WcsMain/Enum/TaskEnum/ElTagTaskTypeEnum.cs | 10 ++ WcsMain/appsettings.json | 2 +- 17 files changed, 259 insertions(+), 60 deletions(-) create mode 100644 WcsMain/ApiServe/Controllers/Dto/WcsDto/ElTag/GetStackerTaskNewDestinationRequest.cs create mode 100644 WcsMain/Enum/TaskEnum/ElTagTaskTypeEnum.cs diff --git a/WcsMain/ApiServe/Controllers/Dto/WcsDto/ElTag/GetStackerTaskNewDestinationRequest.cs b/WcsMain/ApiServe/Controllers/Dto/WcsDto/ElTag/GetStackerTaskNewDestinationRequest.cs new file mode 100644 index 0000000..972bac3 --- /dev/null +++ b/WcsMain/ApiServe/Controllers/Dto/WcsDto/ElTag/GetStackerTaskNewDestinationRequest.cs @@ -0,0 +1,31 @@ +using DataCheck; +using System.Text.Json.Serialization; + +namespace WcsMain.ApiServe.Controllers.Dto.WcsDto.ElTag; + +public class GetStackerTaskNewDestinationRequest +{ + + /// + /// 任务号 + /// + [DataRules] + [JsonPropertyName("taskId")] + public string? TaskId { get; set; } + + /// + /// 新终点 + /// + [DataRules] + [JsonPropertyName("destination")] + public string? Destination { get; set; } + + /// + /// 载具号 + /// + [DataRules] + [JsonPropertyName("vehicleNo")] + public string? VehicleNo { get; set; } + + +} diff --git a/WcsMain/ApiServe/Controllers/Dto/WcsDto/ElTag/QueryTaskRequest.cs b/WcsMain/ApiServe/Controllers/Dto/WcsDto/ElTag/QueryTaskRequest.cs index 4ef6ac1..1f52c31 100644 --- a/WcsMain/ApiServe/Controllers/Dto/WcsDto/ElTag/QueryTaskRequest.cs +++ b/WcsMain/ApiServe/Controllers/Dto/WcsDto/ElTag/QueryTaskRequest.cs @@ -11,6 +11,12 @@ public class QueryTaskRequest [JsonPropertyName("searchStr")] public string? SearchStr { get; set; } + /// + /// 任务类型 + /// + [JsonPropertyName("elTagTaskType")] + public List? TaskType { get; set; } + /// /// 任务状态 /// diff --git a/WcsMain/ApiServe/Controllers/WmsController/WmsTaskController.cs b/WcsMain/ApiServe/Controllers/WmsController/WmsTaskController.cs index db5884a..e2325c1 100644 --- a/WcsMain/ApiServe/Controllers/WmsController/WmsTaskController.cs +++ b/WcsMain/ApiServe/Controllers/WmsController/WmsTaskController.cs @@ -1,5 +1,6 @@ using Microsoft.AspNetCore.Mvc; using WcsMain.ApiServe.ControllerFilter; +using WcsMain.ApiServe.Controllers.Dto.WcsDto.ElTag; using WcsMain.ApiServe.Controllers.Dto.WMSEntity; using WcsMain.ApiServe.Controllers.Dto.WMSEntity.WmsTask; using WcsMain.ApiServe.Service.WmsService; @@ -41,6 +42,17 @@ public class WmsTaskController(WmsTaskService wmsTaskService) : ControllerBase return _wmsTaskService.UpdateStackerTaskStatus(request); } + /// + /// WMS向WCS发送任务新终点,卸货位置有货的时候 + /// + /// + /// + [HttpPost("setStackerTaskNewDestination")] + public WmsApiResponse GetStackerTaskNewDestination([FromBody] GetStackerTaskNewDestinationRequest request) + { + return _wmsTaskService.GetStackerTaskNewDestination(request); + } + diff --git a/WcsMain/ApiServe/Service/WmsService/WmsTaskService.cs b/WcsMain/ApiServe/Service/WmsService/WmsTaskService.cs index e8afdcc..8020732 100644 --- a/WcsMain/ApiServe/Service/WmsService/WmsTaskService.cs +++ b/WcsMain/ApiServe/Service/WmsService/WmsTaskService.cs @@ -1,4 +1,5 @@ using DataCheck; +using WcsMain.ApiServe.Controllers.Dto.WcsDto.ElTag; using WcsMain.ApiServe.Controllers.Dto.WMSEntity; using WcsMain.ApiServe.Controllers.Dto.WMSEntity.WmsTask; using WcsMain.ApiServe.Factory; @@ -17,16 +18,16 @@ namespace WcsMain.ApiServe.Service.WmsService; /// Wms任务接口逻辑 /// [Service] -public class WmsTaskService(WmsTaskAction wmsTaskAction, AppWmsTaskDao wmsTaskDao) +public class WmsTaskService(WmsTaskAction wmsTaskAction, AppWmsTaskDao wmsTaskDao, AppWcsTaskDao wcsTaskDao) { private readonly AppWmsTaskDao _wmsTaskDao = wmsTaskDao; private readonly WmsTaskAction _wmsTaskAction = wmsTaskAction; + private readonly AppWcsTaskDao _wcsTaskDao = wcsTaskDao; /// /// 接收WMS任务数据处理 /// - /// - /// + /// /// public WmsApiResponse GetStackerTask(List request) { @@ -100,10 +101,10 @@ public class WmsTaskService(WmsTaskAction wmsTaskAction, AppWmsTaskDao wmsTaskDa case 0: string resetErrText = _wmsTaskAction.ResetWmsTaskStatus(request.TaskId, request.Destination, StaticString.WMS); // 重置任务 return string.IsNullOrEmpty(resetErrText) ? WmsApiResponseFactory.Success() : WmsApiResponseFactory.Fail(resetErrText); - case 3: + case 2: string completeErrText = _wmsTaskAction.CompleteWmsTaskStatus(request.TaskId, StaticString.WMS); // 完成任务 return string.IsNullOrEmpty(completeErrText) ? WmsApiResponseFactory.Success() : WmsApiResponseFactory.Fail(completeErrText); - case 999: + case 1: string deleteErrText = _wmsTaskAction.DeleteWmsTaskStatus(request.TaskId, StaticString.WMS); // 删除任务 return string.IsNullOrEmpty(deleteErrText) ? WmsApiResponseFactory.Success() : WmsApiResponseFactory.Fail(deleteErrText); default: @@ -111,6 +112,36 @@ public class WmsTaskService(WmsTaskAction wmsTaskAction, AppWmsTaskDao wmsTaskDa } } - + /// + /// WMS向WCS发送任务新终点,卸货位置有货的时候 + /// + /// + /// + public WmsApiResponse GetStackerTaskNewDestination(GetStackerTaskNewDestinationRequest request) + { + return WmsApiResponseFactory.Fail(); + // if(!CheckData.CheckDataRules(request)) return WmsApiResponseFactory.RequestErr(); + // /* 查找该任务有没有无法卸货 */ + // List? wcsTasks = _wcsTaskDao.Select(new AppWcsTask { TaskId = request.TaskId, TaskStatus = (int)WcsTaskStatusEnum.doubleIn }); + // if(wcsTasks == default) return WmsApiResponseFactory.DataBaseErr(); + // if(wcsTasks.Count() < 1) return WmsApiResponseFactory.Fail($"任务号:{request.TaskId} 没有无法卸货的情况"); + // wcsTasks = [.. wcsTasks.OrderByDescending(x => x.CompleteTime)]; + // var wcsTask = wcsTasks[0]; // 获取最新的一条任务 + // /* 如果是最后一条任务则更新WMS任务终点 */ + // if(wcsTask.IsLastTask()) + // { + // _wmsTaskDao.Update(new AppWmsTask { TaskId = request.TaskId, Destination = request.Destination, TaskMsg = "WMS修改终点" }); + // + // + // + // } + + + + + } + + + } \ No newline at end of file diff --git a/WcsMain/Business/CirculationTask/ElTag/LightElTag.cs b/WcsMain/Business/CirculationTask/ElTag/LightElTag.cs index 8e8dbf5..aaba4a7 100644 --- a/WcsMain/Business/CirculationTask/ElTag/LightElTag.cs +++ b/WcsMain/Business/CirculationTask/ElTag/LightElTag.cs @@ -1,8 +1,10 @@ using CirculateTool; +using LedSimple; using WcsMain.Common; using WcsMain.DataBase.Dao; using WcsMain.DataBase.TableEntity; using WcsMain.ElTag.Atop; +using WcsMain.ElTag.Atop.AtopEnum; using WcsMain.ElTag.Atop.Entity; using WcsMain.Enum.TaskEnum; using WcsMain.EquipOperation.ElTag; @@ -57,7 +59,19 @@ public class LightElTag(AppElTagTaskDao tagTaskDao, AtopOperation atopOperation, return; } /* 点亮标签 */ - var resultException = _atopOperation.ShowMsg(tagInfo.ControllerDisplayName, tagInfo.TagId, tagTask.NeedNum); + LedColor lEDColor = new Func(() => + { + switch (tagTask.TaskType) + { + case (int)ElTagTaskTypeEnum.PICK: + return LedColor.Green; + case (int)ElTagTaskTypeEnum.STOCK: + return LedColor.Blue; + default: + return LedColor.Red; + }; + }).Invoke(); + var resultException = _atopOperation.ShowMsg(tagInfo.ControllerDisplayName, tagInfo.TagId, tagTask.NeedNum, lEDColor); if(resultException == default ) { ConsoleLog.Success($"点亮电子标签成功,点位:{tagTask.Location},数据:{tagTask.NeedNum},载具号:{tagTask.VehicleNo},标签号:{tagInfo.TagId}"); @@ -73,4 +87,11 @@ public class LightElTag(AppElTagTaskDao tagTaskDao, AtopOperation atopOperation, ConsoleLog.Warning($"【警告】点亮电子标签失败,点位:{tagTask.Location},数据:{tagTask.NeedNum},载具号:{tagTask.VehicleNo},标签号:{tagInfo.TagId},异常信息:{resultException.Message}"); } + + + public void LightPickTask() + { + + } + } diff --git a/WcsMain/Business/CirculationTask/ElTag/OffElTag.cs b/WcsMain/Business/CirculationTask/ElTag/OffElTag.cs index 6f0cb66..33512c1 100644 --- a/WcsMain/Business/CirculationTask/ElTag/OffElTag.cs +++ b/WcsMain/Business/CirculationTask/ElTag/OffElTag.cs @@ -18,7 +18,7 @@ namespace WcsMain.Business.CirculationTask.ElTag; /// /// 熄灭电子标签 /// -[Circulation] +//[Circulation] public class OffElTag(AppElTagTaskDao tagTaskDao, AtopOperation atopOperation) { private readonly AppElTagTaskDao _tagTaskDao = tagTaskDao; diff --git a/WcsMain/Business/CirculationTask/Stacker/CheckAccount.cs b/WcsMain/Business/CirculationTask/Stacker/CheckAccount.cs index 36472b2..452e1f1 100644 --- a/WcsMain/Business/CirculationTask/Stacker/CheckAccount.cs +++ b/WcsMain/Business/CirculationTask/Stacker/CheckAccount.cs @@ -27,8 +27,8 @@ public class CheckAccount(StackerOperation stackerOperation, AppWcsTaskDao wcsTa [Circulation("监控PLC地址,过账", 1000)] public bool CheckAccountTask() { - var openStackers = CommonData.AppStackers.Open(); - List? taskFeedBackEntities = _stackerOperation.GetTaskFeedBackData(1, openStackers); + var openStackers = CommonData.AppStackers.Open(); // 只获取开放的堆垛机 + List? taskFeedBackEntities = _stackerOperation.GetTaskFeedBackData(20, openStackers); if (taskFeedBackEntities == default || taskFeedBackEntities.Count < 1) { return true; diff --git a/WcsMain/Business/CirculationTask/Stacker/ExeTaskDoubleFork.cs b/WcsMain/Business/CirculationTask/Stacker/ExeTaskDoubleFork.cs index d24c3c4..520a756 100644 --- a/WcsMain/Business/CirculationTask/Stacker/ExeTaskDoubleFork.cs +++ b/WcsMain/Business/CirculationTask/Stacker/ExeTaskDoubleFork.cs @@ -424,7 +424,7 @@ public class ExeTaskDoubleFork( /* 判断这个任务是否出现卸货位置有货 */ if(doubleTask.TaskStatus != (int)WcsTaskStatusEnum.doubleIn) { return false; } // 没有重复入库不执行下面方法 /* 查找这个任务的新任务 */ - List? newTasks = _wcsTaskDao.Select(new AppWcsTask { TaskId = doubleTask.TaskId, TaskType = (int)WcsTaskTypeEnum.newTaskForDoubleIn, TaskStatus = (int)WmsTaskStatusEnum.create }); + List? newTasks = _wcsTaskDao.Select(new AppWcsTask { TaskId = doubleTask.TaskId, TaskType = (int)WcsTaskTypeEnum.newTaskForDoubleIn, TaskStatus = (int)WcsTaskStatusEnum.create }); if (newTasks == default) { ConsoleLog.Error($"【异常】{stackerId} 号堆垛机重复入库任务新任务查询失败,与数据库连接异常"); diff --git a/WcsMain/Business/CirculationTask/TaskData/ResolveWmsTask.cs b/WcsMain/Business/CirculationTask/TaskData/ResolveWmsTask.cs index 7f40d71..1205f4b 100644 --- a/WcsMain/Business/CirculationTask/TaskData/ResolveWmsTask.cs +++ b/WcsMain/Business/CirculationTask/TaskData/ResolveWmsTask.cs @@ -7,6 +7,8 @@ using WcsMain.Enum.TaskEnum; using WcsMain.Business.CommonAction; using WcsMain.Common; using WcsMain.StaticData; +using System.Linq.Expressions; +using WcsMain.DataBase.MixDao; namespace WcsMain.Business.CirculationTask.TaskData; @@ -14,11 +16,12 @@ namespace WcsMain.Business.CirculationTask.TaskData; /// WMS任务解析类 /// [Circulation()] -public class ResolveWmsTask(AppWmsTaskDao wmsTaskDao, SendWmsTaskStatus sendWmsTaskStatus, DataBaseData dataBaseData) +public class ResolveWmsTask(AppWmsTaskDao wmsTaskDao, SendWmsTaskStatus sendWmsTaskStatus, DataBaseData dataBaseData, TaskDao taskDao) { private readonly DataBaseData _dataBaseData = dataBaseData; private readonly SendWmsTaskStatus _sendWmsTaskStatus = sendWmsTaskStatus; private readonly AppWmsTaskDao _wmsTaskDao = wmsTaskDao; + private readonly TaskDao _taskDao = taskDao; /// /// 解析WMS任务 @@ -63,12 +66,7 @@ public class ResolveWmsTask(AppWmsTaskDao wmsTaskDao, SendWmsTaskStatus sendWmsT return; } /* 解析任务转换为WCS任务,一般根据项目,此处自定义规则 */ - List? wcsTasks = TransToWcsTask(wmsTask); - if(wcsTasks == default || wcsTasks.Count < 1) - { - - } - + TransToWcsTask(wmsTask); } @@ -78,20 +76,25 @@ public class ResolveWmsTask(AppWmsTaskDao wmsTaskDao, SendWmsTaskStatus sendWmsT /// /// /// - private List? TransToWcsTask(AppWmsTask task) + private void TransToWcsTask(AppWmsTask task) { - return task.TaskType switch + switch (task.TaskType) { - // 入库 - (int)WmsTaskTypeEnum.inTask => TransInTaskToWcsTask(task)?.ToList(), - // 出库 - (int)WmsTaskTypeEnum.outTask => TransOutTaskToWcsTask(task)?.ToList(), - // 移库 - (int)WmsTaskTypeEnum.moveTask => TransMoveTaskToWcsTask(task)?.ToList(), - // 拣选 - (int)WmsTaskTypeEnum.pick => TransPickTaskToWcsTask(task)?.ToList(), - // 其他任务,未识别的任务类型,直接报错 - _ => TransOtherTaskToWcsTask(task)?.ToList(), + case (int)WmsTaskTypeEnum.inTask:// 入库 + TransInTaskToWcsTask(task); + break; + case (int)WmsTaskTypeEnum.outTask:// 出库 + TransOutTaskToWcsTask(task); + break; + case (int)WmsTaskTypeEnum.moveTask:// 移库 + TransMoveTaskToWcsTask(task); + break; + case (int)WmsTaskTypeEnum.pick:// 拣选 + TransPickTaskToWcsTask(task); + break; + default: // 其他任务,未识别的任务类型,直接报错 + TransOtherTaskToWcsTask(task); + break; }; } @@ -100,13 +103,13 @@ public class ResolveWmsTask(AppWmsTaskDao wmsTaskDao, SendWmsTaskStatus sendWmsT /// /// /// - private IEnumerable? TransInTaskToWcsTask(AppWmsTask wmsTask) + private void TransInTaskToWcsTask(AppWmsTask wmsTask) { AppLocation? wcsOrigin = CommonData.AppLocations.DetailWithWmsLocation(wmsTask.Origin); AppLocation? wcsDestination = CommonData.AppLocations.DetailWithWmsLocation(wmsTask.Destination); - if (wcsOrigin == default || wcsDestination == default) { yield break; } + if (wcsOrigin == default || wcsDestination == default) { return; } int? plcId = _dataBaseData.GetNewPlcTaskId(); - if(plcId == default) { yield break; } + if(plcId == default) { return; } AppWcsTask wcsTask = new() { PlcId = plcId, @@ -125,7 +128,15 @@ public class ResolveWmsTask(AppWmsTaskDao wmsTaskDao, SendWmsTaskStatus sendWmsT CreatePerson = wmsTask.CreatePerson, CreateTime = DateTime.Now, }; - yield return wcsTask; + /* 插入新任务同时更新 wms 任务为排队中 */ + string? errMessage = _taskDao.CreateWcsTask(wcsTask); + if(string.IsNullOrWhiteSpace(errMessage)) + { + ConsoleLog.Info($"【提示】任务:{wmsTask.TaskId} 已经进入队列"); + return; + } + ConsoleLog.Warning($"【警告】任务:{wmsTask.TaskId} 无法处理,异常信息:{errMessage}"); + return; } /// @@ -133,13 +144,13 @@ public class ResolveWmsTask(AppWmsTaskDao wmsTaskDao, SendWmsTaskStatus sendWmsT /// /// /// - private IEnumerable? TransOutTaskToWcsTask(AppWmsTask wmsTask) + private void TransOutTaskToWcsTask(AppWmsTask wmsTask) { AppLocation? wcsOrigin = CommonData.AppLocations.DetailWithWmsLocation(wmsTask.Origin); AppLocation? wcsDestination = CommonData.AppLocations.DetailWithWmsLocation(wmsTask.Destination); - if (wcsOrigin == default || wcsDestination == default) { yield break; } + if (wcsOrigin == default || wcsDestination == default) { return; } int? plcId = _dataBaseData.GetNewPlcTaskId(); - if (plcId == default) { yield break; } + if (plcId == default) { return; } AppWcsTask wcsTask = new() { PlcId = plcId, @@ -157,7 +168,15 @@ public class ResolveWmsTask(AppWmsTaskDao wmsTaskDao, SendWmsTaskStatus sendWmsT CreatePerson = wmsTask.CreatePerson, CreateTime = DateTime.Now, }; - yield return wcsTask; + /* 插入新任务同时更新 wms 任务为排队中 */ + string? errMessage = _taskDao.CreateWcsTask(wcsTask); + if (string.IsNullOrWhiteSpace(errMessage)) + { + ConsoleLog.Info($"【提示】任务:{wmsTask.TaskId} 已经进入队列"); + return; + } + ConsoleLog.Warning($"【警告】任务:{wmsTask.TaskId} 无法处理,异常信息:{errMessage}"); + return; } /// @@ -165,13 +184,13 @@ public class ResolveWmsTask(AppWmsTaskDao wmsTaskDao, SendWmsTaskStatus sendWmsT /// /// /// - private IEnumerable? TransPickTaskToWcsTask(AppWmsTask wmsTask) + private void TransPickTaskToWcsTask(AppWmsTask wmsTask) { AppLocation? wcsOrigin = CommonData.AppLocations.DetailWithWmsLocation(wmsTask.Origin); AppLocation? wcsDestination = CommonData.AppLocations.DetailWithWmsLocation(wmsTask.Destination); - if (wcsOrigin == default || wcsDestination == default) { yield break; } + if (wcsOrigin == default || wcsDestination == default) { return; } int? plcId = _dataBaseData.GetNewPlcTaskId(); - if (plcId == default) { yield break; } + if (plcId == default) { return; } AppWcsTask wcsTask = new() { PlcId = plcId, @@ -189,7 +208,15 @@ public class ResolveWmsTask(AppWmsTaskDao wmsTaskDao, SendWmsTaskStatus sendWmsT CreatePerson = wmsTask.CreatePerson, CreateTime = DateTime.Now, }; - yield return wcsTask; + /* 插入新任务同时更新 wms 任务为排队中 */ + string? errMessage = _taskDao.CreateWcsTask(wcsTask); + if (string.IsNullOrWhiteSpace(errMessage)) + { + ConsoleLog.Info($"【提示】任务:{wmsTask.TaskId} 已经进入队列"); + return; + } + ConsoleLog.Warning($"【警告】任务:{wmsTask.TaskId} 无法处理,异常信息:{errMessage}"); + return; } /// @@ -197,13 +224,13 @@ public class ResolveWmsTask(AppWmsTaskDao wmsTaskDao, SendWmsTaskStatus sendWmsT /// /// /// - private IEnumerable? TransMoveTaskToWcsTask(AppWmsTask wmsTask) + private void TransMoveTaskToWcsTask(AppWmsTask wmsTask) { AppLocation? wcsOrigin = CommonData.AppLocations.DetailWithWmsLocation(wmsTask.Origin); AppLocation? wcsDestination = CommonData.AppLocations.DetailWithWmsLocation(wmsTask.Destination); - if (wcsOrigin == default || wcsDestination == default) { yield break; } + if (wcsOrigin == default || wcsDestination == default) { return; } int? plcId = _dataBaseData.GetNewPlcTaskId(); - if (plcId == default) { yield break; } + if (plcId == default) { return; } AppWcsTask wcsTask = new() { PlcId = plcId, @@ -222,7 +249,15 @@ public class ResolveWmsTask(AppWmsTaskDao wmsTaskDao, SendWmsTaskStatus sendWmsT CreatePerson = wmsTask.CreatePerson, CreateTime = DateTime.Now, }; - yield return wcsTask; + /* 插入新任务同时更新 wms 任务为排队中 */ + string? errMessage = _taskDao.CreateWcsTask(wcsTask); + if (string.IsNullOrWhiteSpace(errMessage)) + { + ConsoleLog.Info($"【提示】任务:{wmsTask.TaskId} 已经进入队列"); + return; + } + ConsoleLog.Warning($"【警告】任务:{wmsTask.TaskId} 无法处理,异常信息:{errMessage}"); + return; } /// @@ -230,8 +265,8 @@ public class ResolveWmsTask(AppWmsTaskDao wmsTaskDao, SendWmsTaskStatus sendWmsT /// /// /// - private IEnumerable? TransOtherTaskToWcsTask(AppWmsTask wmsTask) + private List? TransOtherTaskToWcsTask(AppWmsTask wmsTask) { - yield break; + return default; } } \ No newline at end of file diff --git a/WcsMain/ConsoleLog.cs b/WcsMain/ConsoleLog.cs index 320dd48..1ea34b1 100644 --- a/WcsMain/ConsoleLog.cs +++ b/WcsMain/ConsoleLog.cs @@ -26,7 +26,7 @@ public class ConsoleLog public static void Info(bool isShow, params string[] messages) { if (!isShow) return; - if (messages == default || messages.Length == 0) return; + if (messages.Length == 0) return; DateTime now = DateTime.Now; StringBuilder stringBuilder = new(); stringBuilder.AppendLine(now.ToString("yyyy-MM-dd HH:mm:ss:fff")); @@ -57,7 +57,7 @@ public class ConsoleLog public static void Error(bool isShow, params string[] messages) { if (!isShow) return; - if (messages == default || messages.Length == 0) return; + if (messages.Length == 0) return; DateTime now = DateTime.Now; StringBuilder stringBuilder = new(); stringBuilder.AppendLine(now.ToString("yyyy-MM-dd HH:mm:ss:fff")); @@ -88,7 +88,7 @@ public class ConsoleLog public static void Exception(bool isShow, params string[] messages) { if (!isShow) return; - if (messages == default || messages.Length == 0) return; + if (messages.Length == 0) return; DateTime now = DateTime.Now; StringBuilder stringBuilder = new(); stringBuilder.AppendLine(now.ToString("yyyy-MM-dd HH:mm:ss:fff")); @@ -119,7 +119,7 @@ public class ConsoleLog public static void Success(bool isShow, params string[] messages) { if (!isShow) return; - if (messages == default || messages.Length == 0) return; + if (messages.Length == 0) return; DateTime now = DateTime.Now; StringBuilder stringBuilder = new(); stringBuilder.AppendLine(now.ToString("yyyy-MM-dd HH:mm:ss:fff")); @@ -150,7 +150,7 @@ public class ConsoleLog public static void Warning(bool isShow, params string[] messages) { if (!isShow) return; - if (messages == default || messages.Length == 0) return; + if (messages.Length == 0) return; DateTime now = DateTime.Now; StringBuilder stringBuilder = new(); stringBuilder.AppendLine(now.ToString("yyyy-MM-dd HH:mm:ss:fff")); @@ -181,7 +181,7 @@ public class ConsoleLog public static void Tip(bool isShow, params string[] messages) { if (!isShow) return; - if (messages == default || messages.Length == 0) return; + if (messages.Length == 0) return; DateTime now = DateTime.Now; StringBuilder stringBuilder = new(); stringBuilder.AppendLine(now.ToString("yyyy-MM-dd HH:mm:ss:fff")); @@ -211,7 +211,7 @@ public class ConsoleLog public static void Tcp(bool isShow, params string[] messages) { if (!isShow) return; - if (messages == default || messages.Length == 0) return; + if (messages.Length == 0) return; DateTime now = DateTime.Now; StringBuilder stringBuilder = new(); stringBuilder.AppendLine(now.ToString("yyyy-MM-dd HH:mm:ss:fff")); diff --git a/WcsMain/DataBase/Dao/AppElTagTaskDao.cs b/WcsMain/DataBase/Dao/AppElTagTaskDao.cs index b72cdd8..53451ee 100644 --- a/WcsMain/DataBase/Dao/AppElTagTaskDao.cs +++ b/WcsMain/DataBase/Dao/AppElTagTaskDao.cs @@ -108,7 +108,13 @@ public class AppElTagTaskDao || w.VehicleNo!.Contains(request.SearchStr!) || w.GoodsId!.Contains(request.SearchStr!) || w.Remark!.Contains(request.SearchStr!)); - if(request.TaskStatus != default) + if (request.TaskType != default) + { + List taskTaskType = []; + request.TaskType.ForEach(item => taskTaskType.Add(item)); + sqlFuc.Where(w => taskTaskType.Contains(w.TaskType)); + } + if (request.TaskStatus != default) { List taskStatus = []; request.TaskStatus.ForEach(item => taskStatus.Add(item)); diff --git a/WcsMain/DataBase/Dao/AppWmsTaskDao.cs b/WcsMain/DataBase/Dao/AppWmsTaskDao.cs index 10ca691..d5d6644 100644 --- a/WcsMain/DataBase/Dao/AppWmsTaskDao.cs +++ b/WcsMain/DataBase/Dao/AppWmsTaskDao.cs @@ -139,6 +139,18 @@ public class AppWmsTaskDao } } + /// + /// 将taskId更新成新的 + /// + /// + /// + /// + public int UpdateTaskId(string? oldTaskId, string? newTaskId) + { + return 0; + + + } /// diff --git a/WcsMain/DataBase/MixDao/TaskDao.cs b/WcsMain/DataBase/MixDao/TaskDao.cs index 72e4309..0812862 100644 --- a/WcsMain/DataBase/MixDao/TaskDao.cs +++ b/WcsMain/DataBase/MixDao/TaskDao.cs @@ -16,6 +16,35 @@ namespace WcsMain.DataBase.MixDao; [Component] public class TaskDao { + /// + /// 插入WCS任务,同时将WMS任务更成排队中 + /// + /// + /// + public string? CreateWcsTask(params AppWcsTask[] wcsTasks) + { + if(wcsTasks.Length < 1) return "未传入任务"; + DateTime dateTime = DateTime.Now; + var result = CommonTool.DbServe.Ado.UseTran(() => + { + /* 插入WCS任务表 */ + CommonTool.DbServe.Insertable(wcsTasks).ExecuteCommand(); + /* 更新WMS任务表状态为排队中 */ + foreach(var wcsTask in wcsTasks) + { + CommonTool.DbServe.Updateable(new AppWmsTask + { + TaskId = wcsTask.TaskId, + TaskStatus = (int)WmsTaskStatusEnum.queuing, + StartTime = dateTime + }).IgnoreColumns(ignoreAllNullColumns: true).ExecuteCommand(); + } + }); + return result.Data ? string.Empty : result.ErrorException.Message; + } + + + /// /// wcs任务开始 /// diff --git a/WcsMain/DataBase/TableEntity/AppElTagTask.cs b/WcsMain/DataBase/TableEntity/AppElTagTask.cs index 1b62361..84ad4cf 100644 --- a/WcsMain/DataBase/TableEntity/AppElTagTask.cs +++ b/WcsMain/DataBase/TableEntity/AppElTagTask.cs @@ -20,6 +20,13 @@ public class AppElTagTask [JsonPropertyName("taskGroup")] public string? TaskGroup { get; set; } + /// + /// 任务类型 + /// + [SugarColumn(ColumnName = "task_type")] + [JsonPropertyName("taskType")] + public int? TaskType { get; set; } + /// /// 点位 /// diff --git a/WcsMain/ElTag/Atop/BaseOprDataHandler.cs b/WcsMain/ElTag/Atop/BaseOprDataHandler.cs index a28aef7..94d07cc 100644 --- a/WcsMain/ElTag/Atop/BaseOprDataHandler.cs +++ b/WcsMain/ElTag/Atop/BaseOprDataHandler.cs @@ -1,5 +1,4 @@ using System.Text.RegularExpressions; -using WcsMain.Common; using WcsMain.DataBase.Dao; using WcsMain.DataBase.TableEntity; using WcsMain.ElTag.Atop.AtopEnum; @@ -58,7 +57,7 @@ public class BaseOprDataHandler(AppElTagBaseDao tagBaseDao, AppElTagTaskDao tagT /// public void Confirm(TagReturnInfo tcpServe) { - _atopOperation.ShowMsgOnly(tcpServe.ControllerDisplayName, tcpServe.TagId, tcpServe.Data); // 重新点亮标签,仅显示字符 + // _atopOperation.ShowMsgOnly(tcpServe.ControllerDisplayName, tcpServe.TagId, tcpServe.Data); // 重新点亮标签,仅显示字符 /* 找出这个标签最新点亮的那条记录 */ List? eltags = _tagBaseDao.Query(new AppElTagBase { ControllerDisplayName = tcpServe.ControllerDisplayName, TagId = tcpServe.TagId }); if(eltags == default) @@ -97,7 +96,7 @@ public class BaseOprDataHandler(AppElTagBaseDao tagBaseDao, AppElTagTaskDao tagT var tagTask = tagTasks[0]; // 获取到的任务 int pickNum = Regex.Replace(tcpServe.Data!, "\\D", "").IsNumber() ? Convert.ToInt32(tcpServe.Data) : -1; /* 更新任务状态为确认 */ - _tagTaskDao.Update(new AppElTagTask() { TaskId = tagTask.TaskId, ConfirmTime = DateTime.Now, TaskStatus = (int)ElTagTaskStatusEnum.Confirm, PickNum = pickNum, Remark = "标签确认" }); + _tagTaskDao.Update(new AppElTagTask() { TaskId = tagTask.TaskId, ConfirmTime = DateTime.Now, TaskStatus = (int)ElTagTaskStatusEnum.Confirm, PickNum = pickNum, Remark = "标签确认", OffTime = DateTime.Now }); /* 更新绑定的库位信息为空 */ _tagBaseDao.ResetLocation(eltag.Location!); ConsoleLog.Success($"电子标签确认按钮按下,标签任务号:{tagTask.TaskId} 已经确认,箱号:{tagTask.VehicleNo},拣选数量:{tagTask.NeedNum}({pickNum}) 控制器:{tcpServe.ControllerDisplayName},标签号:{tcpServe.TagId},数据:{tcpServe.Data}"); diff --git a/WcsMain/Enum/TaskEnum/ElTagTaskTypeEnum.cs b/WcsMain/Enum/TaskEnum/ElTagTaskTypeEnum.cs new file mode 100644 index 0000000..458f582 --- /dev/null +++ b/WcsMain/Enum/TaskEnum/ElTagTaskTypeEnum.cs @@ -0,0 +1,10 @@ +namespace WcsMain.Enum.TaskEnum; + +/// +/// 电子标签的任务类型 +/// +public enum ElTagTaskTypeEnum +{ + PICK = 1, // 拣选任务 + STOCK = 2, // 存储确认 +} diff --git a/WcsMain/appsettings.json b/WcsMain/appsettings.json index 2f6a46a..33113d0 100644 --- a/WcsMain/appsettings.json +++ b/WcsMain/appsettings.json @@ -14,7 +14,7 @@ "DBMssqlLocal": "Data Source=192.168.142.131;Initial Catalog=wcs_stacker;User Id=sa;Password=Sa123;", "ApplicationConfig": { - "ApiOnly": false, + "ApiOnly": true, "Language": "zh-CN" }, "UseUrls": [ "http://*:890" ]