| | |
| | | using NewLife; |
| | | using WCS.Application.Entity; |
| | | using WCS.Application.Service.WcsTask.Dto; |
| | | using WCS.Application.Util; |
| | | |
| | | namespace WCS.Application; |
| | | |
| | |
| | | private readonly IHubContext<TaskLogHub, ITaskLogHub> _taskLogHubContext; |
| | | private readonly SqlSugarRepository<WcsCheckTask> _wcsCheckTaskRep; |
| | | private readonly SqlSugarRepository<WcsMateialPzInfo> _wcsMateialPzInfoRep; |
| | | private readonly object _lockObj = new object(); |
| | | |
| | | public WcsTaskService(SqlSugarRepository<WcsTask> wcsTaskRep, IHubContext<TaskLogHub, ITaskLogHub> taskLogHubContext, SqlSugarRepository<WcsCheckTask> wcsCheckTaskRep, SqlSugarRepository<WcsMateialPzInfo> wcsMateialPzInfoRep) |
| | | { |
| | |
| | | { |
| | | //生成任务号 |
| | | entity.TaskNo = GetTaskCode(); |
| | | // 判断是否穿梭车任务 |
| | | if (entity.Type != PLCTypeEnum.AGV) |
| | | { |
| | | entity.TaskId = FourWayCarUtil.GetTaskId(); |
| | | } |
| | | |
| | | |
| | | if (string.IsNullOrEmpty(entity.TaskNo)) |
| | | { |
| | | throw Oops.Bah("任务号生成失败"); |
| | |
| | | { |
| | | modTask.IsSuccess = TaskSuccessEnum.Fail; |
| | | modTask.CancelDate = DateTime.Now;//取消时间 |
| | | } |
| | | //如果是四向车任务 |
| | | if (modTask.Type == PLCTypeEnum.ShuttleCar) |
| | | { |
| | | var carTaskList = _db.Queryable<WcsCarTasks>().Where(m => m.Status <= TaskStatusEnum.Doing && m.IsDelete == false).ToList(); |
| | | foreach (var carTask in carTaskList) |
| | | { |
| | | carTask.Status = input.Status; |
| | | } |
| | | await _wcsTaskRep.Context.Updateable(carTaskList).ExecuteCommandAsync(); |
| | | } |
| | | modTask.Status = input.Status; |
| | | modTask.Levels = 999; |
| | |
| | | [NonAction] |
| | | public string GetTaskCode(string codeFlag = "WCS") |
| | | { |
| | | var list = _db.Queryable<WcsTask>().Where(m => m.TaskNo.StartsWith("WCS")).ToList(); |
| | | string maxNo = list.Max(m => m.TaskNo); |
| | | if (!string.IsNullOrEmpty(maxNo)) |
| | | lock (_lockObj) |
| | | { |
| | | maxNo = maxNo.Substring(codeFlag.Length); |
| | | } |
| | | //获取数据库时间八位 |
| | | string date = DateTime.Now.ToString("yyyyMMdd").Trim(); |
| | | string no = ""; |
| | | if (string.IsNullOrEmpty(maxNo)) |
| | | { |
| | | no = codeFlag + date + "0001"; |
| | | } |
| | | else |
| | | { |
| | | if (maxNo.Length == 12 && maxNo.Substring(0, 8) == date) |
| | | var list = _db.Queryable<WcsTask>().Where(m => m.TaskNo.StartsWith("WCS")).ToList(); |
| | | string maxNo = list.Max(m => m.TaskNo); |
| | | if (!string.IsNullOrEmpty(maxNo)) |
| | | { |
| | | int lastNo = Convert.ToInt32(maxNo.Substring(8, 4)) + 1; |
| | | no = codeFlag + date + (lastNo.ToString().PadLeft(4, '0')); |
| | | maxNo = maxNo.Substring(codeFlag.Length); |
| | | } |
| | | else |
| | | //获取数据库时间八位 |
| | | string date = DateTime.Now.ToString("yyyyMMdd").Trim(); |
| | | string no = ""; |
| | | if (string.IsNullOrEmpty(maxNo)) |
| | | { |
| | | no = codeFlag + date + "0001"; |
| | | } |
| | | else |
| | | { |
| | | if (maxNo.Length == 12 && maxNo.Substring(0, 8) == date) |
| | | { |
| | | int lastNo = Convert.ToInt32(maxNo.Substring(8, 4)) + 1; |
| | | no = codeFlag + date + (lastNo.ToString().PadLeft(4, '0')); |
| | | } |
| | | else |
| | | { |
| | | no = codeFlag + date + "0001"; |
| | | } |
| | | } |
| | | return no; |
| | | } |
| | | return no; |
| | | |
| | | } |
| | | } |