| | |
| | | using AngleSharp.Dom; |
| | | using COSXML.Network; |
| | | using DocumentFormat.OpenXml.Drawing.Charts; |
| | | using DocumentFormat.OpenXml.Math; |
| | | using Elastic.Clients.Elasticsearch.Tasks; |
| | | using Furion.DatabaseAccessor; |
| | | using Furion.Logging; |
| | | using Microsoft.AspNetCore.SignalR; |
| | | using NewLife; |
| | | using WCS.Application.Entity; |
| | | using WCS.Application.Service.WcsTask.Dto; |
| | | |
| | |
| | | .WhereIF(!string.IsNullOrWhiteSpace(input.PalletNo), u => u.PalletNo.Contains(input.PalletNo.Trim())) |
| | | .WhereIF(!string.IsNullOrWhiteSpace(input.Origin), u => u.Origin.Contains(input.Origin.Trim())) |
| | | .Select<WcsTaskOutput>(); |
| | | return await query.OrderBuilder(input).ToPagedListAsync(input.Page, input.PageSize); |
| | | return await query.OrderBy(o=>o.Levels).OrderByDescending(o=>o.CreateTime).ToPagedListAsync(input.Page, input.PageSize); |
| | | } |
| | | |
| | | /// <summary> |
| | |
| | | modTask.CancelDate = DateTime.Now;//取消时间 |
| | | } |
| | | modTask.Status = input.Status; |
| | | modTask.Levels = 999; |
| | | await _wcsTaskRep.Context.Updateable(modTask).UpdateColumns(s => new { s.Status, s.IsSuccess, s.FinishDate, s.CancelDate, s.UpdateTime, s.UpdateUserId, s.UpdateUserName }).ExecuteCommandAsync(); |
| | | //写入任务明细表 |
| | | WcsTaskMonitor modTaskMonitor = new WcsTaskMonitor() |
| | |
| | | //下发任务日志 |
| | | HubUtil.PublicTaskMonitor(modTaskMonitor.Adapt<WcsTaskMonitorOutput>()); |
| | | } |
| | | /// <summary> |
| | | /// 任务置顶 |
| | | /// </summary> |
| | | /// <param name="input"></param> |
| | | /// <returns></returns> |
| | | [HttpPost] |
| | | [ApiDescriptionSettings(Name = "TopUpTask")] |
| | | [DisplayName("任务置顶")] |
| | | public async Task TopUpTask(UpdateWcsTaskInput input) |
| | | { |
| | | var modTask = await _wcsTaskRep.GetByIdAsync(input.Id); |
| | | if (modTask.Status != TaskStatusEnum.Wait) |
| | | { |
| | | throw Oops.Oh("只有等待执行的任务才能置顶!"); |
| | | } |
| | | int editNum = 1; |
| | | List<string> _editTaskNoList = new List<string>(); |
| | | //储位深度 |
| | | string locatDepth = ""; |
| | | if (modTask.TaskType == TaskTypeEnum.Out || modTask.TaskType == TaskTypeEnum.Move)//出库任务或入库任务 |
| | | { |
| | | locatDepth = modTask.StartLocate.Substring(modTask.StartLocate.Length - 1, 1);//起始储位深度 |
| | | if (locatDepth == "2")//判断当前储位是否深度为2,内侧储位 |
| | | { |
| | | string locatString = modTask.StartLocate.Substring(0, modTask.StartLocate.Length - 1) + "1";//获取外侧储位地址 |
| | | //判断外侧储位是否有等待执行的任务,有就优先执行 |
| | | var modTask2 = _db.Queryable<WcsTask>().First(w => w.IsDelete == false && w.Status == TaskStatusEnum.Wait && w.StartLocate == locatString); |
| | | if (modTask2 != null) |
| | | { |
| | | modTask2.Levels = 1; |
| | | await _wcsTaskRep.Context.Updateable(modTask2).UpdateColumns(s => new { s.Levels }).ExecuteCommandAsync(); |
| | | _editTaskNoList.Add(modTask2.TaskNo); |
| | | |
| | | modTask.Levels = 2; |
| | | await _wcsTaskRep.Context.Updateable(modTask).UpdateColumns(s => new { s.Levels }).ExecuteCommandAsync(); |
| | | _editTaskNoList.Add(modTask.TaskNo); |
| | | |
| | | editNum = 2; |
| | | } |
| | | else |
| | | { |
| | | modTask.Levels = 1; |
| | | await _wcsTaskRep.Context.Updateable(modTask).UpdateColumns(s => new { s.Levels }).ExecuteCommandAsync(); |
| | | _editTaskNoList.Add(modTask.TaskNo); |
| | | } |
| | | } |
| | | else |
| | | { |
| | | modTask.Levels = 1; |
| | | await _wcsTaskRep.Context.Updateable(modTask).UpdateColumns(s => new { s.Levels }).ExecuteCommandAsync(); |
| | | _editTaskNoList.Add(modTask.TaskNo); |
| | | } |
| | | } |
| | | if (modTask.TaskType == TaskTypeEnum.In)//入库任务 |
| | | { |
| | | if (string.IsNullOrEmpty(modTask.EndLocate)) |
| | | { |
| | | throw Oops.Oh("该入库任务还未分配储位,置顶失败!"); |
| | | } |
| | | locatDepth = modTask.EndLocate.Substring(modTask.EndLocate.Length - 1, 1);//目标储位深度 |
| | | if (locatDepth == "1")//判断当前储位是否深度为1,外侧储位 |
| | | { |
| | | string locatString = modTask.EndLocate.Substring(0, modTask.EndLocate.Length - 1) + "2";//获取内侧储位地址 |
| | | //判断内侧储位是否有等待执行的任务,有就优先执行 |
| | | var modTask2 = _db.Queryable<WcsTask>().First(w => w.IsDelete == false && w.Status == TaskStatusEnum.Wait && (w.StartLocate == locatString || w.EndLocate == locatString)); |
| | | if (modTask2 != null) |
| | | { |
| | | modTask2.Levels = 1; |
| | | await _wcsTaskRep.Context.Updateable(modTask2).UpdateColumns(s => new { s.Levels }).ExecuteCommandAsync(); |
| | | _editTaskNoList.Add(modTask2.TaskNo); |
| | | |
| | | modTask.Levels = 2; |
| | | await _wcsTaskRep.Context.Updateable(modTask).UpdateColumns(s => new { s.Levels }).ExecuteCommandAsync(); |
| | | _editTaskNoList.Add(modTask.TaskNo); |
| | | |
| | | editNum = 2; |
| | | } |
| | | else |
| | | { |
| | | modTask.Levels = 1; |
| | | await _wcsTaskRep.Context.Updateable(modTask).UpdateColumns(s => new { s.Levels }).ExecuteCommandAsync(); |
| | | _editTaskNoList.Add(modTask.TaskNo); |
| | | } |
| | | } |
| | | else |
| | | { |
| | | modTask.Levels = 1; |
| | | await _wcsTaskRep.Context.Updateable(modTask).UpdateColumns(s => new { s.Levels }).ExecuteCommandAsync(); |
| | | _editTaskNoList.Add(modTask.TaskNo); |
| | | } |
| | | } |
| | | //顺延其他置顶任务 |
| | | var modTaskList = _db.Queryable<WcsTask>().Where(w => w.IsDelete == false && w.Status == TaskStatusEnum.Wait && w.Levels != 999 && !_editTaskNoList.Contains(w.TaskNo)).ToList(); |
| | | foreach (var item in modTaskList) |
| | | { |
| | | item.Levels += editNum; |
| | | } |
| | | await _wcsTaskRep.Context.Updateable(modTaskList).UpdateColumns(s => new { s.Levels }).ExecuteCommandAsync(); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 自动生成任务号 |