123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189 |
- using SqlSugar;
- using WMS.BZModels;
- using WMS.BZModels.Dto.KLHC.TaskDtos;
- using WMS.BZModels.Models.KLHC;
- using WMS.BZSqlSugar;
- using WMS.Info;
- namespace WMS.BZServices.KLHC
- {
- /// <summary>
- /// 当前任务查询
- /// </summary>
- public class TaskInfoService
- {
- private readonly Repository<WCS_TaskInfo> _wcstaskinforepository;
- private readonly Repository<WCS_TaskOld> _wcstaskoldrepository;
- private readonly Repository<BillBomsetgrp> _billBomsetgrprepository;
- public TaskInfoService(Repository<WCS_TaskInfo> wcstaskinforepository, Repository<WCS_TaskOld> wcstaskoldrepository, Repository<BillBomsetgrp> billBomsetgrprepository)
- {
- _wcstaskinforepository = wcstaskinforepository;
- _wcstaskoldrepository = wcstaskoldrepository;
- _billBomsetgrprepository = billBomsetgrprepository;
- }
- public PagedInfo<WCSTaskinfoDto> GetPageList(Pagination pagination, WCSTaskinfoQueryDto wCSTaskinfoQueryDto)
- {
- var predicate = Expressionable.Create<WCS_TaskOld>().And(o => o.Status < 99);
- predicate = predicate.Or(o => o.ManualRemarks.Contains("手动变更状态") && o.EditTime >= DateTime.Now.AddDays(-3));
- predicate = predicate.AndIF(!string.IsNullOrEmpty(wCSTaskinfoQueryDto?.ID), m => m.ID.ToString().Contains(wCSTaskinfoQueryDto.ID));
- predicate = predicate.AndIF(!string.IsNullOrEmpty(wCSTaskinfoQueryDto?.KeyWord), m => m.ID.ToString().Contains(wCSTaskinfoQueryDto.KeyWord) || m.BarCode.Contains(wCSTaskinfoQueryDto.KeyWord) || m.AddrTo.Contains(wCSTaskinfoQueryDto.KeyWord) || m.AddrFrom.Contains(wCSTaskinfoQueryDto.KeyWord)
- || m.Floor.ToString() == wCSTaskinfoQueryDto.KeyWord || m.Tunnel.Contains(wCSTaskinfoQueryDto.KeyWord) || m.Device.Contains(wCSTaskinfoQueryDto.KeyWord) || m.MaterialCode.Contains(wCSTaskinfoQueryDto.KeyWord));
- predicate = predicate.AndIF(!string.IsNullOrEmpty(wCSTaskinfoQueryDto?.BarCode), m => m.BarCode.Contains(wCSTaskinfoQueryDto.BarCode));
- predicate = predicate.AndIF(!string.IsNullOrEmpty(wCSTaskinfoQueryDto?.Grade), m => m.Grade.Contains(wCSTaskinfoQueryDto.Grade));
- predicate = predicate.AndIF(!string.IsNullOrEmpty(wCSTaskinfoQueryDto?.MaterialCode), m => m.MaterialCode.Contains(wCSTaskinfoQueryDto.MaterialCode));
- predicate = predicate.AndIF(!string.IsNullOrEmpty(wCSTaskinfoQueryDto?.AddrFrom), m => m.AddrFrom.Contains(wCSTaskinfoQueryDto.AddrFrom));
- predicate = predicate.AndIF(!string.IsNullOrEmpty(wCSTaskinfoQueryDto?.AddrTo), m => m.AddrTo.Contains(wCSTaskinfoQueryDto.AddrTo));
- predicate = predicate.AndIF(!string.IsNullOrEmpty(wCSTaskinfoQueryDto?.AddrNext), m => m.AddrNext.Contains(wCSTaskinfoQueryDto.AddrNext));
- predicate = predicate.AndIF(!string.IsNullOrEmpty(wCSTaskinfoQueryDto?.WmsTask), m => m.WmsTask.ToString().Contains(wCSTaskinfoQueryDto.WmsTask));
- predicate = predicate.AndIF(!string.IsNullOrEmpty(wCSTaskinfoQueryDto?.AgvTaskID), m => m.AgvTaskID.ToString().Contains(wCSTaskinfoQueryDto.AgvTaskID));
- predicate = predicate.AndIF(!string.IsNullOrEmpty(wCSTaskinfoQueryDto?.Type), m => m.Type.Equals(wCSTaskinfoQueryDto.Type));
- predicate = predicate.AndIF(!string.IsNullOrEmpty(wCSTaskinfoQueryDto?.Status), m => m.Status.Equals(wCSTaskinfoQueryDto.Status));
- predicate = predicate.AndIF(!string.IsNullOrEmpty(wCSTaskinfoQueryDto?.BusType), m => m.BusType.Equals(wCSTaskinfoQueryDto.BusType));
- predicate = predicate.AndIF(wCSTaskinfoQueryDto != null && wCSTaskinfoQueryDto.AddTimeFrom.HasValue, m => m.AddTime >= wCSTaskinfoQueryDto.AddTimeFrom);
- predicate = predicate.AndIF(wCSTaskinfoQueryDto != null && wCSTaskinfoQueryDto.AddTimeTo.HasValue, m => m.AddTime <= wCSTaskinfoQueryDto.AddTimeTo);
- predicate = predicate.AndIF(wCSTaskinfoQueryDto != null && wCSTaskinfoQueryDto.StartTimeBegin.HasValue, m => m.StartTime >= wCSTaskinfoQueryDto.StartTimeBegin);
- predicate = predicate.AndIF(wCSTaskinfoQueryDto != null && wCSTaskinfoQueryDto.StartTimeEnd.HasValue, m => m.StartTime <= wCSTaskinfoQueryDto.StartTimeEnd);
- predicate = predicate.AndIF(wCSTaskinfoQueryDto != null && wCSTaskinfoQueryDto.EndTimeBegin.HasValue, m => m.EndTime >= wCSTaskinfoQueryDto.EndTimeBegin);
- predicate = predicate.AndIF(wCSTaskinfoQueryDto != null && wCSTaskinfoQueryDto.EndTimeEnd.HasValue, m => m.EndTime <= wCSTaskinfoQueryDto.EndTimeEnd);
- predicate = predicate.AndIF(!string.IsNullOrEmpty(wCSTaskinfoQueryDto?.Tunnel), m => m.Tunnel.Contains(wCSTaskinfoQueryDto.Tunnel));
- predicate = predicate.AndIF(!string.IsNullOrEmpty(wCSTaskinfoQueryDto?.Floor), m => m.Floor.ToString().Contains(wCSTaskinfoQueryDto.Floor));
- predicate = predicate.AndIF(!string.IsNullOrEmpty(wCSTaskinfoQueryDto?.Device), m => m.Device.Contains(wCSTaskinfoQueryDto.Device));
- predicate = predicate.AndIF(wCSTaskinfoQueryDto != null && wCSTaskinfoQueryDto.OutType.HasValue, m => m.OutType.Equals(wCSTaskinfoQueryDto.OutType));
- predicate = predicate.AndIF(!string.IsNullOrEmpty(wCSTaskinfoQueryDto?.WorkBench), m => m.WorkBench.Contains(wCSTaskinfoQueryDto.WorkBench));
- predicate = predicate.AndIF(!string.IsNullOrEmpty(wCSTaskinfoQueryDto?.WarehouseCode), m => m.WarehouseCode.Equals(wCSTaskinfoQueryDto.WarehouseCode));
- predicate = predicate.AndIF(!string.IsNullOrEmpty(wCSTaskinfoQueryDto?.MatCode), m => m.MatCode.Contains(wCSTaskinfoQueryDto.MatCode));
- #region "连表查询"
- //var taskQueryable = _wcstaskoldrepository.Queryable().Where(predicate.ToExpression()).SplitTable(o => o.Take(3));
- //var lists = taskQueryable.LeftJoin(_billBomsetgrprepository.Queryable(), (taskold, bomset) => taskold.PalletType == bomset.ShortCode)
- // .Select((taskold, bomset) => new WCSTaskinfoDto
- // {
- // ID = taskold.ID.ToString(),
- // BarCode = taskold.BarCode,
- // Type = taskold.Type,
- // Status = taskold.Status,
- // AddrFrom = taskold.AddrFrom,
- // AddrTo = taskold.AddrTo,
- // AddrNext = taskold.AddrNext,
- // Tunnel = taskold.Tunnel,
- // Floor = taskold.Floor,
- // Device = taskold.Device,
- // LastInteractionPoint = taskold.LastInteractionPoint,
- // SrmStation = taskold.SrmStation,
- // WorkBench = taskold.WorkBench,
- // WarehouseCode = taskold.WarehouseCode,
- // WmsTask = taskold.WmsTask,
- // TaskGroupKey = taskold.TaskGroupKey,
- // WorkOrder = taskold.WorkOrder,
- // PalletType = taskold.PalletType,
- // ProdLine = taskold.ProdLine,
- // FullQty = taskold.FullQty,
- // Height = taskold.Height,
- // Weight = taskold.Weight,
- // Length = taskold.Length,
- // AddTime = taskold.AddTime,
- // AddWho = taskold.AddWho,
- // StartTime = taskold.StartTime,
- // EditWho = taskold.EditWho,
- // EditTime = taskold.EditTime,
- // EndTime = taskold.EndTime,
- // MatCode = taskold.MatCode,
- // InvBarCode = taskold.InvBarCode,
- // IsFast = taskold.IsFast,
- // Grade = taskold.Grade,
- // IsSurplus = taskold.IsSurplus,
- // IsRework = taskold.IsRework,
- // Uploaded = taskold.Uploaded,
- // AgvTaskID = taskold.AgvTaskID,
- // Priority = taskold.Priority,
- // ManualRemarks = taskold.ManualRemarks,
- // OutType = taskold.OutType,
- // MaterialCode = taskold.MaterialCode,
- // BusType = taskold.BusType,
- // GoodsType = taskold.GoodsType,
- // Line = taskold.Line,
- // Col = taskold.Col,
- // Layer = taskold.Layer,
- // Depth = taskold.Depth,
- // SetGrpCode= bomset.Code
- // }).MergeTable().ToPage(pagination);
- #endregion "连表查询"
- var list = _wcstaskoldrepository.Queryable().With(SqlWith.NoLock).Where(predicate.ToExpression()).SplitTable(o => o.Take(3))
- .ToPage<WCS_TaskOld, WCSTaskinfoDto>(pagination);
- return list;
- }
- public void UpdateTaskState(List<string> ids, string userId, int state)
- {
- if (!ids.Any())
- {
- throw new ArgumentException("没有选择任务!");
- }
- var list = _wcstaskinforepository.Queryable().With(SqlWith.NoLock).Where(o => ids.Contains(o.ID.ToString())).ToList();
- if (!list.Any())
- {
- throw new ArgumentException("没有找到该任务!");
- }
- foreach (var id in list)
- {
- _wcstaskinforepository.UseTranAction(() =>
- {
- _wcstaskinforepository.AsUpdateable().With("WITH(ROWLOCK,UPDLOCK)").SetColumns(p => new WCS_TaskInfo()
- {
- Status = state,
- EditTime = DateTime.Now,
- ManualRemarks = "手动变更状态"
- }).Where(p => p.ID == id.ID).ExecuteCommand();
- _wcstaskoldrepository.AsUpdateable().With("WITH(ROWLOCK,UPDLOCK)").SetColumns(p => new WCS_TaskOld()
- {
- Status = state,
- EditTime = DateTime.Now,
- ManualRemarks = "手动变更状态"
- }).Where(p => p.ID == id.ID).SplitTable(p => p.Take(3)).ExecuteCommand();
- });
- }
- }
- public List<int> ReRgvTask(List<int> ids, string userId, string mark)
- {
- if (!ids.Any())
- {
- throw new ArgumentException("没有选择任务!");
- }
- var list = _wcstaskinforepository.Queryable().With(SqlWith.NoLock).Where(o => ids.Contains(o.ID) && o.BusType == "码垛入库" && o.Type == 1).ToList();
- if (!list.Any())
- {
- throw new ArgumentException("没有找到入库任务、码垛入库业务和RGV执行的状态的数据!");
- }
- foreach (var item in list)
- {
- _wcstaskinforepository.UseTranAction(() =>
- {
- _wcstaskinforepository.AsUpdateable().With("WITH(ROWLOCK,UPDLOCK)").SetColumns(p => new WCS_TaskInfo()
- {
- Status = (int)FJTaskStatus.ConveyorExecution,
- EditTime = DateTime.Now,
- ManualRemarks = item.ManualRemarks + mark
- }).Where(p => p.ID == item.ID).ExecuteCommand();
- _wcstaskoldrepository.AsUpdateable().With("WITH(ROWLOCK,UPDLOCK)").SetColumns(p => new WCS_TaskOld()
- {
- Status = (int)FJTaskStatus.ConveyorExecution,
- EditTime = DateTime.Now,
- ManualRemarks = item.ManualRemarks + mark
- }).Where(p => p.ID == item.ID).SplitTable(p => p.Take(3)).ExecuteCommand();
- });
- }
- var excepts = ids.Except(list.Select(o => o.ID).ToList()).ToList();
- return excepts;
- }
- }
- }
|