#region << 版 本 注 释 >> /*---------------------------------------------------------------- * 命名空间:WIDESEA_TaskInfoService * 创建者:胡童庆 * 创建时间:2024/8/2 16:13:36 * 版本:V1.0.0 * 描述: * * ---------------------------------------------------------------- * 修改人: * 修改时间: * 版本:V1.0.1 * 修改说明: * *----------------------------------------------------------------*/ #endregion << 版 本 注 释 >> using AutoMapper; using SqlSugar; using System.Reflection; using WIDESEA_Common.TaskEnum; using WIDESEA_Core; using WIDESEA_Core.BaseRepository; using WIDESEA_Core.BaseServices; using WIDESEA_Core.Helper; using WIDESEA_DTO.Task; using WIDESEA_IBasicService; using WIDESEA_IInboundService; using WIDESEA_IOutboundService; using WIDESEA_IRecordService; using WIDESEA_IStockService; using WIDESEA_ITaskInfoService; using WIDESEA_Model.Models; namespace WIDESEA_TaskInfoService { public partial class TaskService : ServiceBase>, ITaskService { private readonly IMapper _mapper; private readonly IUnitOfWorkManage _unitOfWorkManage; private readonly IStockInfoService _stockInfoService; private readonly ILocationInfoService _locationInfoService; private readonly IWarehouseService _warehouseService; private readonly IRoadWayinfoService _roadWayinfoService; public IRepository Repository => BaseDal; private Dictionary _taskOrderBy = new() { {nameof(Dt_Task.Grade),OrderByType.Desc }, {nameof(Dt_Task.CreateDate),OrderByType.Asc}, }; public List TaskTypes => typeof(TaskTypeEnum).GetEnumIndexList(); public List TaskOutboundTypes => typeof(TaskTypeEnum).GetEnumIndexList(); public TaskService(IRepository BaseDal, IMapper mapper, IUnitOfWorkManage unitOfWorkManage) : base(BaseDal) { _mapper = mapper; _unitOfWorkManage = unitOfWorkManage; } /// /// 任务完成接口 /// /// /// public WebResponseContent TaskCompleted(WCSTaskDTO wCSTask) { try { Dt_Task task = BaseDal.QueryFirst(x => x.TaskId == wCSTask.TaskNum && x.PalletCode == wCSTask.PalletCode); if (task == null) return WebResponseContent.Instance.Error("未找到任务信息"); switch ((TaskTypeEnum)task.TaskType) { case TaskTypeEnum.Inbound: return HandleInboundTask(task, wCSTask.TaskType); case TaskTypeEnum.Outbound: return HandleOutboundTask(task, wCSTask.TaskType); case TaskTypeEnum.Relocation: return HandleRelocationTask(task, wCSTask.TaskType); default: return WebResponseContent.Instance.Error($"任务类型错误,任务号:{task.TaskId},托盘编号:{task.PalletCode},类型:{task.TaskType}"); } } catch (Exception ex) { return WebResponseContent.Instance.Error($"WMS任务完成错误:{ex.Message}"); } } private WebResponseContent HandleInboundTask(Dt_Task task, int wcsTaskType) { switch (wcsTaskType) { case 1: task.TaskStatus = (int)InTaskStatusEnum.PLC_InFinish; BaseDal.UpdateData(task); return WebResponseContent.Instance.OK($"已接收入库输送线完成信息,任务号:{task.TaskId},托盘编号:{task.PalletCode}"); case 2: task.TaskStatus = (int)InTaskStatusEnum.SC_OutFinish; BaseDal.UpdateData(task); return WebResponseContent.Instance.OK($"已接收入库堆垛机完成信息,任务号:{task.TaskId},托盘编号:{task.PalletCode}"); default: return WebResponseContent.Instance.Error($"WCS上报类型错误:{wcsTaskType}"); } } private WebResponseContent HandleOutboundTask(Dt_Task task, int wcsTaskType) { switch (wcsTaskType) { case 1: task.TaskStatus = (int)OutTaskStatusEnum.PLC_OutFinish; BaseDal.UpdateData(task); return WebResponseContent.Instance.OK($"已接收出库输送线完成信息,任务号:{task.TaskId},托盘编号:{task.PalletCode}"); case 2: task.TaskStatus = (int)OutTaskStatusEnum.SC_OutFinish; BaseDal.UpdateData(task); return WebResponseContent.Instance.OK($"已接收出库堆垛机完成信息,任务号:{task.TaskId},托盘编号:{task.PalletCode}"); default: return WebResponseContent.Instance.Error($"WCS上报类型错误:{wcsTaskType}"); } } private WebResponseContent HandleRelocationTask(Dt_Task task, int wcsTaskType) { if (wcsTaskType == 2) { task.TaskStatus = (int)RelocationTaskStatusEnum.RelocationFinish; BaseDal.UpdateData(task); return WebResponseContent.Instance.OK($"已接收移库堆垛机完成信息,任务号:{task.TaskId},托盘编号:{task.PalletCode}"); } return WebResponseContent.Instance.Error($"WCS上报类型错误:{wcsTaskType}"); } } }