using DataCheck; using WcsMain.ApiServe.Dto; using WcsMain.ApiServe.Dto.WcsDto.WmsTask; using WcsMain.ApiServe.Dto.WMSEntity.WmsTask; using WcsMain.ApiServe.Factory; using WcsMain.Business.CommonAction; using WcsMain.Common.DataService; using WcsMain.Constant.Enum.Stacker; using WcsMain.DataBase.Dao; using WcsMain.DataBase.TableEntity; using WcsMain.StaticData; using WcsMain.Constant.WcsAttribute.AutoFacAttribute; namespace WcsMain.ApiServe.Service.WcsService; [Service] public class WmsTaskService(WmsTaskAction wmsTaskAction, AppWmsTaskDao wmsTaskDao, DataBaseData dataBaseData) { /// /// 查询Wms 任务表 /// /// public WcsApiResponse> GetWmsTask() { List? wmsTasks = wmsTaskDao.SelectToWeb(); if(wmsTasks == default) { return WcsApiResponseFactory.DataBaseErr>(); } return WcsApiResponseFactory.Success(wmsTasks, "查询成功"); } /// /// 分页查询 Wms 任务表 /// /// /// public WcsApiResponse> GetWmsTaskWithPage(GetWmsTaskWithPageRequest request) { (List? wmsTasks, int totalRows) = wmsTaskDao.SelectPage(request); if(wmsTasks == default) { return WcsApiResponseFactory.DataBaseErr>(); } return WcsApiResponseFactory.Success(totalRows, wmsTasks); } /// /// Wcs 前端发来的任务 /// /// /// public WcsApiResponse GetStackerTask(SetWmsTask request) { request.TaskId = dataBaseData.GetNewUUID(); bool checkData = CheckData.CheckDataRules(request); if (!checkData) { return WcsApiResponseFactory.RequestErr(); } /* 插入库存信息 */ // ---- 库存由WMS管理,数据库表也无需操作 AppWmsTask wmsTask = new() { TaskId = request.TaskId, TaskType = request.TaskType, TaskStatus = (int)WmsTaskStatusEnum.create, Priority = request.Priority ?? 0, Origin = request.Origin, MidPoint = request.Midpoint, Destination = request.Destination, VehicleNo = request.VehicleNo, VehicleSize = request.VehicleSize ?? -1, Weight = request.Weight ?? -1, CreateTime = DateTime.Now, ModifyTime = DateTime.Now, CreatePerson = StaticString.WCS, }; /* 插入任务数据 */ //int insertRows = wmsTaskDao.Insert(wmsTasks.ToArray()); // ---- 直接插入任务数据 int insertRows = wmsTaskDao.InsertTaskAndMarkErr(wmsTask); // ---- 先清除这个料箱之前未作的任务,然后插入新数据 if (insertRows > 0) { return WcsApiResponseFactory.Success($"任务创建成功,任务号:{request.TaskId}"); } return WcsApiResponseFactory.Fail("数据插入失败,请稍后重试或者联系我们"); } /// /// 变更任务状态 /// /// /// public WcsApiResponse UpdateStackerTaskStatus(UpdateStackerTaskStatusRequest request) { bool checkData = CheckData.CheckDataRules(request); if (!checkData) { return WcsApiResponseFactory.RequestErr(); } /* 校验任务是否存在 */ var tasks = wmsTaskDao.Select(new AppWmsTask { TaskId = request.TaskId }); if (tasks == default) { // 查询失败 return WcsApiResponseFactory.DataBaseErr(); } if (tasks.Count == 0) { // 任务不存在 return WcsApiResponseFactory.Fail($"任务不存在,任务号:{request.TaskId}"); } int? status = request.TaskStatus; switch (status) { case 0: string resetErrText = wmsTaskAction.ResetWmsTaskStatus(request.TaskId, request.Destination, StaticString.WCS); // 重置任务 return string.IsNullOrEmpty(resetErrText) ? WcsApiResponseFactory.Success() : WcsApiResponseFactory.Fail(resetErrText); case 3: string completeErrText = wmsTaskAction.CompleteWmsTaskStatus(request.TaskId, StaticString.WCS); // 完成任务 return string.IsNullOrEmpty(completeErrText) ? WcsApiResponseFactory.Success() : WcsApiResponseFactory.Fail(completeErrText); case 999: string deleteErrText = wmsTaskAction.DeleteWmsTaskStatus(request.TaskId, StaticString.WCS); // 删除任务 return string.IsNullOrEmpty(deleteErrText) ? WcsApiResponseFactory.Success() : WcsApiResponseFactory.Fail(deleteErrText); default: return WcsApiResponseFactory.Fail($"任务状态不支持:任务状态:{request.TaskStatus}"); } } }