<update>[important]完善任务解析

This commit is contained in:
葛林强 2024-06-07 13:10:02 +08:00
parent fcf6acb39b
commit 7ffb3e46be
17 changed files with 259 additions and 60 deletions

View File

@ -0,0 +1,31 @@
using DataCheck;
using System.Text.Json.Serialization;
namespace WcsMain.ApiServe.Controllers.Dto.WcsDto.ElTag;
public class GetStackerTaskNewDestinationRequest
{
/// <summary>
/// 任务号
/// </summary>
[DataRules]
[JsonPropertyName("taskId")]
public string? TaskId { get; set; }
/// <summary>
/// 新终点
/// </summary>
[DataRules]
[JsonPropertyName("destination")]
public string? Destination { get; set; }
/// <summary>
/// 载具号
/// </summary>
[DataRules]
[JsonPropertyName("vehicleNo")]
public string? VehicleNo { get; set; }
}

View File

@ -11,6 +11,12 @@ public class QueryTaskRequest
[JsonPropertyName("searchStr")] [JsonPropertyName("searchStr")]
public string? SearchStr { get; set; } public string? SearchStr { get; set; }
/// <summary>
/// 任务类型
/// </summary>
[JsonPropertyName("elTagTaskType")]
public List<int>? TaskType { get; set; }
/// <summary> /// <summary>
/// 任务状态 /// 任务状态
/// </summary> /// </summary>

View File

@ -1,5 +1,6 @@
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
using WcsMain.ApiServe.ControllerFilter; using WcsMain.ApiServe.ControllerFilter;
using WcsMain.ApiServe.Controllers.Dto.WcsDto.ElTag;
using WcsMain.ApiServe.Controllers.Dto.WMSEntity; using WcsMain.ApiServe.Controllers.Dto.WMSEntity;
using WcsMain.ApiServe.Controllers.Dto.WMSEntity.WmsTask; using WcsMain.ApiServe.Controllers.Dto.WMSEntity.WmsTask;
using WcsMain.ApiServe.Service.WmsService; using WcsMain.ApiServe.Service.WmsService;
@ -41,6 +42,17 @@ public class WmsTaskController(WmsTaskService wmsTaskService) : ControllerBase
return _wmsTaskService.UpdateStackerTaskStatus(request); return _wmsTaskService.UpdateStackerTaskStatus(request);
} }
/// <summary>
/// WMS向WCS发送任务新终点卸货位置有货的时候
/// </summary>
/// <param name="request"></param>
/// <returns></returns>
[HttpPost("setStackerTaskNewDestination")]
public WmsApiResponse GetStackerTaskNewDestination([FromBody] GetStackerTaskNewDestinationRequest request)
{
return _wmsTaskService.GetStackerTaskNewDestination(request);
}

View File

@ -1,4 +1,5 @@
using DataCheck; using DataCheck;
using WcsMain.ApiServe.Controllers.Dto.WcsDto.ElTag;
using WcsMain.ApiServe.Controllers.Dto.WMSEntity; using WcsMain.ApiServe.Controllers.Dto.WMSEntity;
using WcsMain.ApiServe.Controllers.Dto.WMSEntity.WmsTask; using WcsMain.ApiServe.Controllers.Dto.WMSEntity.WmsTask;
using WcsMain.ApiServe.Factory; using WcsMain.ApiServe.Factory;
@ -17,16 +18,16 @@ namespace WcsMain.ApiServe.Service.WmsService;
/// Wms任务接口逻辑 /// Wms任务接口逻辑
/// </summary> /// </summary>
[Service] [Service]
public class WmsTaskService(WmsTaskAction wmsTaskAction, AppWmsTaskDao wmsTaskDao) public class WmsTaskService(WmsTaskAction wmsTaskAction, AppWmsTaskDao wmsTaskDao, AppWcsTaskDao wcsTaskDao)
{ {
private readonly AppWmsTaskDao _wmsTaskDao = wmsTaskDao; private readonly AppWmsTaskDao _wmsTaskDao = wmsTaskDao;
private readonly WmsTaskAction _wmsTaskAction = wmsTaskAction; private readonly WmsTaskAction _wmsTaskAction = wmsTaskAction;
private readonly AppWcsTaskDao _wcsTaskDao = wcsTaskDao;
/// <summary> /// <summary>
/// 接收WMS任务数据处理 /// 接收WMS任务数据处理
/// </summary> /// </summary>
/// <param name="taskEntity"></param> /// <param name="request"></param>
/// <param name="createPerson"></param>
/// <returns></returns> /// <returns></returns>
public WmsApiResponse GetStackerTask(List<GetStackerRequest> request) public WmsApiResponse GetStackerTask(List<GetStackerRequest> request)
{ {
@ -100,10 +101,10 @@ public class WmsTaskService(WmsTaskAction wmsTaskAction, AppWmsTaskDao wmsTaskDa
case 0: case 0:
string resetErrText = _wmsTaskAction.ResetWmsTaskStatus(request.TaskId, request.Destination, StaticString.WMS); // 重置任务 string resetErrText = _wmsTaskAction.ResetWmsTaskStatus(request.TaskId, request.Destination, StaticString.WMS); // 重置任务
return string.IsNullOrEmpty(resetErrText) ? WmsApiResponseFactory.Success() : WmsApiResponseFactory.Fail(resetErrText); return string.IsNullOrEmpty(resetErrText) ? WmsApiResponseFactory.Success() : WmsApiResponseFactory.Fail(resetErrText);
case 3: case 2:
string completeErrText = _wmsTaskAction.CompleteWmsTaskStatus(request.TaskId, StaticString.WMS); // 完成任务 string completeErrText = _wmsTaskAction.CompleteWmsTaskStatus(request.TaskId, StaticString.WMS); // 完成任务
return string.IsNullOrEmpty(completeErrText) ? WmsApiResponseFactory.Success() : WmsApiResponseFactory.Fail(completeErrText); return string.IsNullOrEmpty(completeErrText) ? WmsApiResponseFactory.Success() : WmsApiResponseFactory.Fail(completeErrText);
case 999: case 1:
string deleteErrText = _wmsTaskAction.DeleteWmsTaskStatus(request.TaskId, StaticString.WMS); // 删除任务 string deleteErrText = _wmsTaskAction.DeleteWmsTaskStatus(request.TaskId, StaticString.WMS); // 删除任务
return string.IsNullOrEmpty(deleteErrText) ? WmsApiResponseFactory.Success() : WmsApiResponseFactory.Fail(deleteErrText); return string.IsNullOrEmpty(deleteErrText) ? WmsApiResponseFactory.Success() : WmsApiResponseFactory.Fail(deleteErrText);
default: default:
@ -111,6 +112,36 @@ public class WmsTaskService(WmsTaskAction wmsTaskAction, AppWmsTaskDao wmsTaskDa
} }
} }
/// <summary>
/// WMS向WCS发送任务新终点卸货位置有货的时候
/// </summary>
/// <param name="request"></param>
/// <returns></returns>
public WmsApiResponse GetStackerTaskNewDestination(GetStackerTaskNewDestinationRequest request)
{
return WmsApiResponseFactory.Fail();
// if(!CheckData.CheckDataRules(request)) return WmsApiResponseFactory.RequestErr();
// /* 查找该任务有没有无法卸货 */
// List<AppWcsTask>? 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修改终点" });
//
//
//
// }
}
} }

View File

@ -1,8 +1,10 @@
using CirculateTool; using CirculateTool;
using LedSimple;
using WcsMain.Common; using WcsMain.Common;
using WcsMain.DataBase.Dao; using WcsMain.DataBase.Dao;
using WcsMain.DataBase.TableEntity; using WcsMain.DataBase.TableEntity;
using WcsMain.ElTag.Atop; using WcsMain.ElTag.Atop;
using WcsMain.ElTag.Atop.AtopEnum;
using WcsMain.ElTag.Atop.Entity; using WcsMain.ElTag.Atop.Entity;
using WcsMain.Enum.TaskEnum; using WcsMain.Enum.TaskEnum;
using WcsMain.EquipOperation.ElTag; using WcsMain.EquipOperation.ElTag;
@ -57,7 +59,19 @@ public class LightElTag(AppElTagTaskDao tagTaskDao, AtopOperation atopOperation,
return; return;
} }
/* 点亮标签 */ /* 点亮标签 */
var resultException = _atopOperation.ShowMsg(tagInfo.ControllerDisplayName, tagInfo.TagId, tagTask.NeedNum); LedColor lEDColor = new Func<LedColor>(() =>
{
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 ) if(resultException == default )
{ {
ConsoleLog.Success($"点亮电子标签成功,点位:{tagTask.Location},数据:{tagTask.NeedNum},载具号:{tagTask.VehicleNo},标签号:{tagInfo.TagId}"); 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}"); ConsoleLog.Warning($"【警告】点亮电子标签失败,点位:{tagTask.Location},数据:{tagTask.NeedNum},载具号:{tagTask.VehicleNo},标签号:{tagInfo.TagId},异常信息:{resultException.Message}");
} }
public void LightPickTask()
{
}
} }

View File

@ -18,7 +18,7 @@ namespace WcsMain.Business.CirculationTask.ElTag;
/// <summary> /// <summary>
/// 熄灭电子标签 /// 熄灭电子标签
/// </summary> /// </summary>
[Circulation] //[Circulation]
public class OffElTag(AppElTagTaskDao tagTaskDao, AtopOperation atopOperation) public class OffElTag(AppElTagTaskDao tagTaskDao, AtopOperation atopOperation)
{ {
private readonly AppElTagTaskDao _tagTaskDao = tagTaskDao; private readonly AppElTagTaskDao _tagTaskDao = tagTaskDao;

View File

@ -27,8 +27,8 @@ public class CheckAccount(StackerOperation stackerOperation, AppWcsTaskDao wcsTa
[Circulation("监控PLC地址过账", 1000)] [Circulation("监控PLC地址过账", 1000)]
public bool CheckAccountTask() public bool CheckAccountTask()
{ {
var openStackers = CommonData.AppStackers.Open(); var openStackers = CommonData.AppStackers.Open(); // 只获取开放的堆垛机
List<TaskFeedBackEntity>? taskFeedBackEntities = _stackerOperation.GetTaskFeedBackData(1, openStackers); List<TaskFeedBackEntity>? taskFeedBackEntities = _stackerOperation.GetTaskFeedBackData(20, openStackers);
if (taskFeedBackEntities == default || taskFeedBackEntities.Count < 1) if (taskFeedBackEntities == default || taskFeedBackEntities.Count < 1)
{ {
return true; return true;

View File

@ -424,7 +424,7 @@ public class ExeTaskDoubleFork(
/* 判断这个任务是否出现卸货位置有货 */ /* 判断这个任务是否出现卸货位置有货 */
if(doubleTask.TaskStatus != (int)WcsTaskStatusEnum.doubleIn) { return false; } // 没有重复入库不执行下面方法 if(doubleTask.TaskStatus != (int)WcsTaskStatusEnum.doubleIn) { return false; } // 没有重复入库不执行下面方法
/* 查找这个任务的新任务 */ /* 查找这个任务的新任务 */
List<AppWcsTask>? newTasks = _wcsTaskDao.Select(new AppWcsTask { TaskId = doubleTask.TaskId, TaskType = (int)WcsTaskTypeEnum.newTaskForDoubleIn, TaskStatus = (int)WmsTaskStatusEnum.create }); List<AppWcsTask>? newTasks = _wcsTaskDao.Select(new AppWcsTask { TaskId = doubleTask.TaskId, TaskType = (int)WcsTaskTypeEnum.newTaskForDoubleIn, TaskStatus = (int)WcsTaskStatusEnum.create });
if (newTasks == default) if (newTasks == default)
{ {
ConsoleLog.Error($"【异常】{stackerId} 号堆垛机重复入库任务新任务查询失败,与数据库连接异常"); ConsoleLog.Error($"【异常】{stackerId} 号堆垛机重复入库任务新任务查询失败,与数据库连接异常");

View File

@ -7,6 +7,8 @@ using WcsMain.Enum.TaskEnum;
using WcsMain.Business.CommonAction; using WcsMain.Business.CommonAction;
using WcsMain.Common; using WcsMain.Common;
using WcsMain.StaticData; using WcsMain.StaticData;
using System.Linq.Expressions;
using WcsMain.DataBase.MixDao;
namespace WcsMain.Business.CirculationTask.TaskData; namespace WcsMain.Business.CirculationTask.TaskData;
@ -14,11 +16,12 @@ namespace WcsMain.Business.CirculationTask.TaskData;
/// WMS任务解析类 /// WMS任务解析类
/// </summary> /// </summary>
[Circulation()] [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 DataBaseData _dataBaseData = dataBaseData;
private readonly SendWmsTaskStatus _sendWmsTaskStatus = sendWmsTaskStatus; private readonly SendWmsTaskStatus _sendWmsTaskStatus = sendWmsTaskStatus;
private readonly AppWmsTaskDao _wmsTaskDao = wmsTaskDao; private readonly AppWmsTaskDao _wmsTaskDao = wmsTaskDao;
private readonly TaskDao _taskDao = taskDao;
/// <summary> /// <summary>
/// 解析WMS任务 /// 解析WMS任务
@ -63,12 +66,7 @@ public class ResolveWmsTask(AppWmsTaskDao wmsTaskDao, SendWmsTaskStatus sendWmsT
return; return;
} }
/* 解析任务转换为WCS任务一般根据项目此处自定义规则 */ /* 解析任务转换为WCS任务一般根据项目此处自定义规则 */
List<AppWcsTask>? wcsTasks = TransToWcsTask(wmsTask); TransToWcsTask(wmsTask);
if(wcsTasks == default || wcsTasks.Count < 1)
{
}
} }
@ -78,20 +76,25 @@ public class ResolveWmsTask(AppWmsTaskDao wmsTaskDao, SendWmsTaskStatus sendWmsT
/// </summary> /// </summary>
/// <param name="task"></param> /// <param name="task"></param>
/// <returns></returns> /// <returns></returns>
private List<AppWcsTask>? TransToWcsTask(AppWmsTask task) private void TransToWcsTask(AppWmsTask task)
{ {
return task.TaskType switch switch (task.TaskType)
{ {
// 入库 case (int)WmsTaskTypeEnum.inTask:// 入库
(int)WmsTaskTypeEnum.inTask => TransInTaskToWcsTask(task)?.ToList(), TransInTaskToWcsTask(task);
// 出库 break;
(int)WmsTaskTypeEnum.outTask => TransOutTaskToWcsTask(task)?.ToList(), case (int)WmsTaskTypeEnum.outTask:// 出库
// 移库 TransOutTaskToWcsTask(task);
(int)WmsTaskTypeEnum.moveTask => TransMoveTaskToWcsTask(task)?.ToList(), break;
// 拣选 case (int)WmsTaskTypeEnum.moveTask:// 移库
(int)WmsTaskTypeEnum.pick => TransPickTaskToWcsTask(task)?.ToList(), TransMoveTaskToWcsTask(task);
// 其他任务,未识别的任务类型,直接报错 break;
_ => TransOtherTaskToWcsTask(task)?.ToList(), case (int)WmsTaskTypeEnum.pick:// 拣选
TransPickTaskToWcsTask(task);
break;
default: // 其他任务,未识别的任务类型,直接报错
TransOtherTaskToWcsTask(task);
break;
}; };
} }
@ -100,13 +103,13 @@ public class ResolveWmsTask(AppWmsTaskDao wmsTaskDao, SendWmsTaskStatus sendWmsT
/// </summary> /// </summary>
/// <param name="wmsTask"></param> /// <param name="wmsTask"></param>
/// <returns></returns> /// <returns></returns>
private IEnumerable<AppWcsTask>? TransInTaskToWcsTask(AppWmsTask wmsTask) private void TransInTaskToWcsTask(AppWmsTask wmsTask)
{ {
AppLocation? wcsOrigin = CommonData.AppLocations.DetailWithWmsLocation(wmsTask.Origin); AppLocation? wcsOrigin = CommonData.AppLocations.DetailWithWmsLocation(wmsTask.Origin);
AppLocation? wcsDestination = CommonData.AppLocations.DetailWithWmsLocation(wmsTask.Destination); AppLocation? wcsDestination = CommonData.AppLocations.DetailWithWmsLocation(wmsTask.Destination);
if (wcsOrigin == default || wcsDestination == default) { yield break; } if (wcsOrigin == default || wcsDestination == default) { return; }
int? plcId = _dataBaseData.GetNewPlcTaskId(); int? plcId = _dataBaseData.GetNewPlcTaskId();
if(plcId == default) { yield break; } if(plcId == default) { return; }
AppWcsTask wcsTask = new() AppWcsTask wcsTask = new()
{ {
PlcId = plcId, PlcId = plcId,
@ -125,7 +128,15 @@ public class ResolveWmsTask(AppWmsTaskDao wmsTaskDao, SendWmsTaskStatus sendWmsT
CreatePerson = wmsTask.CreatePerson, CreatePerson = wmsTask.CreatePerson,
CreateTime = DateTime.Now, 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;
} }
/// <summary> /// <summary>
@ -133,13 +144,13 @@ public class ResolveWmsTask(AppWmsTaskDao wmsTaskDao, SendWmsTaskStatus sendWmsT
/// </summary> /// </summary>
/// <param name="wmsTask"></param> /// <param name="wmsTask"></param>
/// <returns></returns> /// <returns></returns>
private IEnumerable<AppWcsTask>? TransOutTaskToWcsTask(AppWmsTask wmsTask) private void TransOutTaskToWcsTask(AppWmsTask wmsTask)
{ {
AppLocation? wcsOrigin = CommonData.AppLocations.DetailWithWmsLocation(wmsTask.Origin); AppLocation? wcsOrigin = CommonData.AppLocations.DetailWithWmsLocation(wmsTask.Origin);
AppLocation? wcsDestination = CommonData.AppLocations.DetailWithWmsLocation(wmsTask.Destination); AppLocation? wcsDestination = CommonData.AppLocations.DetailWithWmsLocation(wmsTask.Destination);
if (wcsOrigin == default || wcsDestination == default) { yield break; } if (wcsOrigin == default || wcsDestination == default) { return; }
int? plcId = _dataBaseData.GetNewPlcTaskId(); int? plcId = _dataBaseData.GetNewPlcTaskId();
if (plcId == default) { yield break; } if (plcId == default) { return; }
AppWcsTask wcsTask = new() AppWcsTask wcsTask = new()
{ {
PlcId = plcId, PlcId = plcId,
@ -157,7 +168,15 @@ public class ResolveWmsTask(AppWmsTaskDao wmsTaskDao, SendWmsTaskStatus sendWmsT
CreatePerson = wmsTask.CreatePerson, CreatePerson = wmsTask.CreatePerson,
CreateTime = DateTime.Now, 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;
} }
/// <summary> /// <summary>
@ -165,13 +184,13 @@ public class ResolveWmsTask(AppWmsTaskDao wmsTaskDao, SendWmsTaskStatus sendWmsT
/// </summary> /// </summary>
/// <param name="wmsTask"></param> /// <param name="wmsTask"></param>
/// <returns></returns> /// <returns></returns>
private IEnumerable<AppWcsTask>? TransPickTaskToWcsTask(AppWmsTask wmsTask) private void TransPickTaskToWcsTask(AppWmsTask wmsTask)
{ {
AppLocation? wcsOrigin = CommonData.AppLocations.DetailWithWmsLocation(wmsTask.Origin); AppLocation? wcsOrigin = CommonData.AppLocations.DetailWithWmsLocation(wmsTask.Origin);
AppLocation? wcsDestination = CommonData.AppLocations.DetailWithWmsLocation(wmsTask.Destination); AppLocation? wcsDestination = CommonData.AppLocations.DetailWithWmsLocation(wmsTask.Destination);
if (wcsOrigin == default || wcsDestination == default) { yield break; } if (wcsOrigin == default || wcsDestination == default) { return; }
int? plcId = _dataBaseData.GetNewPlcTaskId(); int? plcId = _dataBaseData.GetNewPlcTaskId();
if (plcId == default) { yield break; } if (plcId == default) { return; }
AppWcsTask wcsTask = new() AppWcsTask wcsTask = new()
{ {
PlcId = plcId, PlcId = plcId,
@ -189,7 +208,15 @@ public class ResolveWmsTask(AppWmsTaskDao wmsTaskDao, SendWmsTaskStatus sendWmsT
CreatePerson = wmsTask.CreatePerson, CreatePerson = wmsTask.CreatePerson,
CreateTime = DateTime.Now, 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;
} }
/// <summary> /// <summary>
@ -197,13 +224,13 @@ public class ResolveWmsTask(AppWmsTaskDao wmsTaskDao, SendWmsTaskStatus sendWmsT
/// </summary> /// </summary>
/// <param name="wmsTask"></param> /// <param name="wmsTask"></param>
/// <returns></returns> /// <returns></returns>
private IEnumerable<AppWcsTask>? TransMoveTaskToWcsTask(AppWmsTask wmsTask) private void TransMoveTaskToWcsTask(AppWmsTask wmsTask)
{ {
AppLocation? wcsOrigin = CommonData.AppLocations.DetailWithWmsLocation(wmsTask.Origin); AppLocation? wcsOrigin = CommonData.AppLocations.DetailWithWmsLocation(wmsTask.Origin);
AppLocation? wcsDestination = CommonData.AppLocations.DetailWithWmsLocation(wmsTask.Destination); AppLocation? wcsDestination = CommonData.AppLocations.DetailWithWmsLocation(wmsTask.Destination);
if (wcsOrigin == default || wcsDestination == default) { yield break; } if (wcsOrigin == default || wcsDestination == default) { return; }
int? plcId = _dataBaseData.GetNewPlcTaskId(); int? plcId = _dataBaseData.GetNewPlcTaskId();
if (plcId == default) { yield break; } if (plcId == default) { return; }
AppWcsTask wcsTask = new() AppWcsTask wcsTask = new()
{ {
PlcId = plcId, PlcId = plcId,
@ -222,7 +249,15 @@ public class ResolveWmsTask(AppWmsTaskDao wmsTaskDao, SendWmsTaskStatus sendWmsT
CreatePerson = wmsTask.CreatePerson, CreatePerson = wmsTask.CreatePerson,
CreateTime = DateTime.Now, 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;
} }
/// <summary> /// <summary>
@ -230,8 +265,8 @@ public class ResolveWmsTask(AppWmsTaskDao wmsTaskDao, SendWmsTaskStatus sendWmsT
/// </summary> /// </summary>
/// <param name="wmsTask"></param> /// <param name="wmsTask"></param>
/// <returns></returns> /// <returns></returns>
private IEnumerable<AppWcsTask>? TransOtherTaskToWcsTask(AppWmsTask wmsTask) private List<AppWcsTask>? TransOtherTaskToWcsTask(AppWmsTask wmsTask)
{ {
yield break; return default;
} }
} }

View File

@ -26,7 +26,7 @@ public class ConsoleLog
public static void Info(bool isShow, params string[] messages) public static void Info(bool isShow, params string[] messages)
{ {
if (!isShow) return; if (!isShow) return;
if (messages == default || messages.Length == 0) return; if (messages.Length == 0) return;
DateTime now = DateTime.Now; DateTime now = DateTime.Now;
StringBuilder stringBuilder = new(); StringBuilder stringBuilder = new();
stringBuilder.AppendLine(now.ToString("yyyy-MM-dd HH:mm:ss:fff")); 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) public static void Error(bool isShow, params string[] messages)
{ {
if (!isShow) return; if (!isShow) return;
if (messages == default || messages.Length == 0) return; if (messages.Length == 0) return;
DateTime now = DateTime.Now; DateTime now = DateTime.Now;
StringBuilder stringBuilder = new(); StringBuilder stringBuilder = new();
stringBuilder.AppendLine(now.ToString("yyyy-MM-dd HH:mm:ss:fff")); 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) public static void Exception(bool isShow, params string[] messages)
{ {
if (!isShow) return; if (!isShow) return;
if (messages == default || messages.Length == 0) return; if (messages.Length == 0) return;
DateTime now = DateTime.Now; DateTime now = DateTime.Now;
StringBuilder stringBuilder = new(); StringBuilder stringBuilder = new();
stringBuilder.AppendLine(now.ToString("yyyy-MM-dd HH:mm:ss:fff")); 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) public static void Success(bool isShow, params string[] messages)
{ {
if (!isShow) return; if (!isShow) return;
if (messages == default || messages.Length == 0) return; if (messages.Length == 0) return;
DateTime now = DateTime.Now; DateTime now = DateTime.Now;
StringBuilder stringBuilder = new(); StringBuilder stringBuilder = new();
stringBuilder.AppendLine(now.ToString("yyyy-MM-dd HH:mm:ss:fff")); 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) public static void Warning(bool isShow, params string[] messages)
{ {
if (!isShow) return; if (!isShow) return;
if (messages == default || messages.Length == 0) return; if (messages.Length == 0) return;
DateTime now = DateTime.Now; DateTime now = DateTime.Now;
StringBuilder stringBuilder = new(); StringBuilder stringBuilder = new();
stringBuilder.AppendLine(now.ToString("yyyy-MM-dd HH:mm:ss:fff")); 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) public static void Tip(bool isShow, params string[] messages)
{ {
if (!isShow) return; if (!isShow) return;
if (messages == default || messages.Length == 0) return; if (messages.Length == 0) return;
DateTime now = DateTime.Now; DateTime now = DateTime.Now;
StringBuilder stringBuilder = new(); StringBuilder stringBuilder = new();
stringBuilder.AppendLine(now.ToString("yyyy-MM-dd HH:mm:ss:fff")); 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) public static void Tcp(bool isShow, params string[] messages)
{ {
if (!isShow) return; if (!isShow) return;
if (messages == default || messages.Length == 0) return; if (messages.Length == 0) return;
DateTime now = DateTime.Now; DateTime now = DateTime.Now;
StringBuilder stringBuilder = new(); StringBuilder stringBuilder = new();
stringBuilder.AppendLine(now.ToString("yyyy-MM-dd HH:mm:ss:fff")); stringBuilder.AppendLine(now.ToString("yyyy-MM-dd HH:mm:ss:fff"));

View File

@ -108,6 +108,12 @@ public class AppElTagTaskDao
|| w.VehicleNo!.Contains(request.SearchStr!) || w.VehicleNo!.Contains(request.SearchStr!)
|| w.GoodsId!.Contains(request.SearchStr!) || w.GoodsId!.Contains(request.SearchStr!)
|| w.Remark!.Contains(request.SearchStr!)); || w.Remark!.Contains(request.SearchStr!));
if (request.TaskType != default)
{
List<int?> taskTaskType = [];
request.TaskType.ForEach(item => taskTaskType.Add(item));
sqlFuc.Where(w => taskTaskType.Contains(w.TaskType));
}
if (request.TaskStatus != default) if (request.TaskStatus != default)
{ {
List<int?> taskStatus = []; List<int?> taskStatus = [];

View File

@ -139,6 +139,18 @@ public class AppWmsTaskDao
} }
} }
/// <summary>
/// 将taskId更新成新的
/// </summary>
/// <param name="oldTaskId"></param>
/// <param name="newTaskId"></param>
/// <returns></returns>
public int UpdateTaskId(string? oldTaskId, string? newTaskId)
{
return 0;
}
/// <summary> /// <summary>

View File

@ -16,6 +16,35 @@ namespace WcsMain.DataBase.MixDao;
[Component] [Component]
public class TaskDao public class TaskDao
{ {
/// <summary>
/// 插入WCS任务同时将WMS任务更成排队中
/// </summary>
/// <param name="wcsTasks"></param>
/// <returns></returns>
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;
}
/// <summary> /// <summary>
/// wcs任务开始 /// wcs任务开始
/// </summary> /// </summary>

View File

@ -20,6 +20,13 @@ public class AppElTagTask
[JsonPropertyName("taskGroup")] [JsonPropertyName("taskGroup")]
public string? TaskGroup { get; set; } public string? TaskGroup { get; set; }
/// <summary>
/// 任务类型
/// </summary>
[SugarColumn(ColumnName = "task_type")]
[JsonPropertyName("taskType")]
public int? TaskType { get; set; }
/// <summary> /// <summary>
/// 点位 /// 点位
/// </summary> /// </summary>

View File

@ -1,5 +1,4 @@
using System.Text.RegularExpressions; using System.Text.RegularExpressions;
using WcsMain.Common;
using WcsMain.DataBase.Dao; using WcsMain.DataBase.Dao;
using WcsMain.DataBase.TableEntity; using WcsMain.DataBase.TableEntity;
using WcsMain.ElTag.Atop.AtopEnum; using WcsMain.ElTag.Atop.AtopEnum;
@ -58,7 +57,7 @@ public class BaseOprDataHandler(AppElTagBaseDao tagBaseDao, AppElTagTaskDao tagT
/// <param name="tcpServe"></param> /// <param name="tcpServe"></param>
public void Confirm(TagReturnInfo tcpServe) public void Confirm(TagReturnInfo tcpServe)
{ {
_atopOperation.ShowMsgOnly(tcpServe.ControllerDisplayName, tcpServe.TagId, tcpServe.Data); // 重新点亮标签,仅显示字符 // _atopOperation.ShowMsgOnly(tcpServe.ControllerDisplayName, tcpServe.TagId, tcpServe.Data); // 重新点亮标签,仅显示字符
/* 找出这个标签最新点亮的那条记录 */ /* 找出这个标签最新点亮的那条记录 */
List<AppElTagBase>? eltags = _tagBaseDao.Query(new AppElTagBase { ControllerDisplayName = tcpServe.ControllerDisplayName, TagId = tcpServe.TagId }); List<AppElTagBase>? eltags = _tagBaseDao.Query(new AppElTagBase { ControllerDisplayName = tcpServe.ControllerDisplayName, TagId = tcpServe.TagId });
if(eltags == default) if(eltags == default)
@ -97,7 +96,7 @@ public class BaseOprDataHandler(AppElTagBaseDao tagBaseDao, AppElTagTaskDao tagT
var tagTask = tagTasks[0]; // 获取到的任务 var tagTask = tagTasks[0]; // 获取到的任务
int pickNum = Regex.Replace(tcpServe.Data!, "\\D", "").IsNumber() ? Convert.ToInt32(tcpServe.Data) : -1; 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!); _tagBaseDao.ResetLocation(eltag.Location!);
ConsoleLog.Success($"电子标签确认按钮按下,标签任务号:{tagTask.TaskId} 已经确认,箱号:{tagTask.VehicleNo},拣选数量:{tagTask.NeedNum}({pickNum}) 控制器:{tcpServe.ControllerDisplayName},标签号:{tcpServe.TagId},数据:{tcpServe.Data}"); ConsoleLog.Success($"电子标签确认按钮按下,标签任务号:{tagTask.TaskId} 已经确认,箱号:{tagTask.VehicleNo},拣选数量:{tagTask.NeedNum}({pickNum}) 控制器:{tcpServe.ControllerDisplayName},标签号:{tcpServe.TagId},数据:{tcpServe.Data}");

View File

@ -0,0 +1,10 @@
namespace WcsMain.Enum.TaskEnum;
/// <summary>
/// 电子标签的任务类型
/// </summary>
public enum ElTagTaskTypeEnum
{
PICK = 1, // 拣选任务
STOCK = 2, // 存储确认
}

View File

@ -14,7 +14,7 @@
"DBMssqlLocal": "Data Source=192.168.142.131;Initial Catalog=wcs_stacker;User Id=sa;Password=Sa123;", "DBMssqlLocal": "Data Source=192.168.142.131;Initial Catalog=wcs_stacker;User Id=sa;Password=Sa123;",
"ApplicationConfig": { "ApplicationConfig": {
"ApiOnly": false, "ApiOnly": true,
"Language": "zh-CN" "Language": "zh-CN"
}, },
"UseUrls": [ "http://*:890" ] "UseUrls": [ "http://*:890" ]