WCSTaskOldService.cs 9.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6. using wms.sqlsugar.model.fj;
  7. using WMS.BZModels;
  8. using WMS.BZSqlSugar;
  9. using WMS.Info;
  10. using SqlSugar;
  11. using WMS.Util;
  12. using WMS.BZModels.Dto.FJ.BillInvDtos;
  13. using NPOI.SS.Formula.PTG;
  14. using WMS.BZModels.Dto.FJ.TaskDtos;
  15. using Mapster;
  16. namespace WMS.BZServices.FJ
  17. {
  18. public class WCSTaskOldService
  19. {
  20. private readonly Repository<WCS_TaskOld> _wcstaskoldrepository;
  21. private readonly Repository<BillBomsetgrp> _billBomsetgrprepository;
  22. public WCSTaskOldService(Repository<WCS_TaskOld> wcstaskoldrepository, Repository<BillBomsetgrp> billBomsetgrprepository)
  23. {
  24. _wcstaskoldrepository = wcstaskoldrepository;
  25. _billBomsetgrprepository = billBomsetgrprepository;
  26. }
  27. public PagedInfo<WCSTaskoldDto> GetPageList(Pagination pagination, WCSTaskoldQueryDto WCSTaskoldQueryDto)
  28. {
  29. ISugarQueryable<WCS_TaskOld> taskQueryable = GetQueryable(WCSTaskoldQueryDto);
  30. #region "连表查询"
  31. //var lists = taskQueryable.LeftJoin(_billBomsetgrprepository.Queryable(), (taskold, bomset) => taskold.PalletType == bomset.ShortCode)
  32. // .Select((taskold, bomset) => new WCSTaskinfoDto
  33. // {
  34. // ID = taskold.ID.ToString(),
  35. // BarCode = taskold.BarCode,
  36. // Type = taskold.Type,
  37. // Status = taskold.Status,
  38. // AddrFrom = taskold.AddrFrom,
  39. // AddrTo = taskold.AddrTo,
  40. // AddrNext = taskold.AddrNext,
  41. // Tunnel = taskold.Tunnel,
  42. // Floor = taskold.Floor,
  43. // Device = taskold.Device,
  44. // LastInteractionPoint = taskold.LastInteractionPoint,
  45. // SrmStation = taskold.SrmStation,
  46. // WorkBench = taskold.WorkBench,
  47. // WarehouseCode = taskold.WarehouseCode,
  48. // WmsTask = taskold.WmsTask,
  49. // TaskGroupKey = taskold.TaskGroupKey,
  50. // WorkOrder = taskold.WorkOrder,
  51. // PalletType = taskold.PalletType,
  52. // ProdLine = taskold.ProdLine,
  53. // FullQty = taskold.FullQty,
  54. // Height = taskold.Height,
  55. // Weight = taskold.Weight,
  56. // Length = taskold.Length,
  57. // AddTime = taskold.AddTime,
  58. // AddWho = taskold.AddWho,
  59. // StartTime = taskold.StartTime,
  60. // EditWho = taskold.EditWho,
  61. // EditTime = taskold.EditTime,
  62. // EndTime = taskold.EndTime,
  63. // MatCode = taskold.MatCode,
  64. // InvBarCode = taskold.InvBarCode,
  65. // IsFast = taskold.IsFast,
  66. // Grade = taskold.Grade,
  67. // IsSurplus = taskold.IsSurplus,
  68. // IsRework = taskold.IsRework,
  69. // Uploaded = taskold.Uploaded,
  70. // AgvTaskID = taskold.AgvTaskID,
  71. // Priority = taskold.Priority,
  72. // ManualRemarks = taskold.ManualRemarks,
  73. // OutType = taskold.OutType,
  74. // MaterialCode = taskold.MaterialCode,
  75. // BusType = taskold.BusType,
  76. // GoodsType = taskold.GoodsType,
  77. // Line = taskold.Line,
  78. // Col = taskold.Col,
  79. // Layer = taskold.Layer,
  80. // Depth = taskold.Depth,
  81. // SetGrpCode = bomset.Code
  82. // }).MergeTable().ToPage(pagination);
  83. #endregion
  84. var list = taskQueryable.ToPage<WCS_TaskOld, WCSTaskoldDto>(pagination);
  85. return list;
  86. }
  87. private ISugarQueryable<WCS_TaskOld> GetQueryable(WCSTaskoldQueryDto WCSTaskoldQueryDto)
  88. {
  89. var predicate = Expressionable.Create<WCS_TaskOld>();
  90. predicate = predicate.AndIF(!string.IsNullOrEmpty(WCSTaskoldQueryDto?.ID), m => m.ID.ToString().Contains(WCSTaskoldQueryDto.ID));
  91. predicate = predicate.AndIF(!string.IsNullOrEmpty(WCSTaskoldQueryDto?.KeyWord), m => m.ID.ToString().Contains(WCSTaskoldQueryDto.KeyWord) || m.BarCode.Contains(WCSTaskoldQueryDto.KeyWord) || m.MaterialCode.Contains(WCSTaskoldQueryDto.KeyWord)
  92. || m.InvBarCode.Contains(WCSTaskoldQueryDto.KeyWord) || m.AddrFrom.Contains(WCSTaskoldQueryDto.KeyWord) || m.AddrTo.Contains(WCSTaskoldQueryDto.KeyWord) ||
  93. m.Floor.ToString() == WCSTaskoldQueryDto.KeyWord || m.Tunnel.Contains(WCSTaskoldQueryDto.KeyWord) || m.Device.Contains(WCSTaskoldQueryDto.KeyWord));
  94. predicate = predicate.AndIF(!string.IsNullOrEmpty(WCSTaskoldQueryDto?.BarCode), m => m.BarCode.Contains(WCSTaskoldQueryDto.BarCode));
  95. predicate = predicate.AndIF(!string.IsNullOrEmpty(WCSTaskoldQueryDto?.Grade), m => m.Grade.Contains(WCSTaskoldQueryDto.Grade));
  96. predicate = predicate.AndIF(!string.IsNullOrEmpty(WCSTaskoldQueryDto?.MaterialCode), m => m.MaterialCode.Contains(WCSTaskoldQueryDto.MaterialCode));
  97. predicate = predicate.AndIF(!string.IsNullOrEmpty(WCSTaskoldQueryDto?.AddrFrom), m => m.AddrFrom.Contains(WCSTaskoldQueryDto.AddrFrom));
  98. predicate = predicate.AndIF(!string.IsNullOrEmpty(WCSTaskoldQueryDto?.AddrTo), m => m.AddrTo.Contains(WCSTaskoldQueryDto.AddrTo));
  99. predicate = predicate.AndIF(!string.IsNullOrEmpty(WCSTaskoldQueryDto?.AddrNext), m => m.AddrNext.Contains(WCSTaskoldQueryDto.AddrNext));
  100. predicate = predicate.AndIF(!string.IsNullOrEmpty(WCSTaskoldQueryDto?.WmsTask), m => m.WmsTask.ToString().Contains(WCSTaskoldQueryDto.WmsTask));
  101. predicate = predicate.AndIF(!string.IsNullOrEmpty(WCSTaskoldQueryDto?.AgvTaskID), m => m.AgvTaskID.ToString().Contains(WCSTaskoldQueryDto.AgvTaskID));
  102. predicate = predicate.AndIF(!string.IsNullOrEmpty(WCSTaskoldQueryDto?.Type), m => ((int)m.Type).Equals(WCSTaskoldQueryDto.Type));
  103. predicate = predicate.AndIF(!string.IsNullOrEmpty(WCSTaskoldQueryDto?.Status), m => ((int)m.Status).Equals(WCSTaskoldQueryDto.Status));
  104. predicate = predicate.AndIF(!string.IsNullOrEmpty(WCSTaskoldQueryDto?.BusType), m => m.BusType.Equals(WCSTaskoldQueryDto.BusType));
  105. predicate = predicate.AndIF(!string.IsNullOrEmpty(WCSTaskoldQueryDto?.Tunnel), m => m.Tunnel.Contains(WCSTaskoldQueryDto.Tunnel));
  106. predicate = predicate.AndIF(!string.IsNullOrEmpty(WCSTaskoldQueryDto?.Floor), m => m.Floor.ToString().Contains(WCSTaskoldQueryDto.Floor));
  107. predicate = predicate.AndIF(!string.IsNullOrEmpty(WCSTaskoldQueryDto?.Device), m => m.Device.Contains(WCSTaskoldQueryDto.Device));
  108. predicate = predicate.AndIF(WCSTaskoldQueryDto != null && WCSTaskoldQueryDto.AddTimeFrom.HasValue, m => m.AddTime >= WCSTaskoldQueryDto.AddTimeFrom);
  109. predicate = predicate.AndIF(WCSTaskoldQueryDto != null && WCSTaskoldQueryDto.AddTimeTo.HasValue, m => m.AddTime <= WCSTaskoldQueryDto.AddTimeTo);
  110. predicate = predicate.AndIF(WCSTaskoldQueryDto != null && WCSTaskoldQueryDto.StartTimeBegin.HasValue, m => m.StartTime >= WCSTaskoldQueryDto.StartTimeBegin);
  111. predicate = predicate.AndIF(WCSTaskoldQueryDto != null && WCSTaskoldQueryDto.StartTimeEnd.HasValue, m => m.StartTime <= WCSTaskoldQueryDto.StartTimeEnd);
  112. predicate = predicate.AndIF(WCSTaskoldQueryDto != null && WCSTaskoldQueryDto.EndTimeBegin.HasValue, m => m.EndTime >= WCSTaskoldQueryDto.EndTimeBegin);
  113. predicate = predicate.AndIF(WCSTaskoldQueryDto != null && WCSTaskoldQueryDto.EndTimeEnd.HasValue, m => m.EndTime <= WCSTaskoldQueryDto.EndTimeEnd);
  114. predicate = predicate.AndIF(WCSTaskoldQueryDto != null && WCSTaskoldQueryDto.OutType.HasValue, m => m.OutType.Equals(WCSTaskoldQueryDto.OutType));
  115. predicate = predicate.AndIF(!string.IsNullOrEmpty(WCSTaskoldQueryDto?.WorkBench), m => m.WorkBench.Contains(WCSTaskoldQueryDto.WorkBench));
  116. predicate = predicate.AndIF(!string.IsNullOrEmpty(WCSTaskoldQueryDto?.WarehouseCode), m => m.WarehouseCode.Equals(WCSTaskoldQueryDto.WarehouseCode));
  117. predicate = predicate.AndIF(!string.IsNullOrEmpty(WCSTaskoldQueryDto?.MatCode), m => m.MatCode.Contains(WCSTaskoldQueryDto.MatCode));
  118. var taskQueryable = _wcstaskoldrepository.Queryable().With(SqlWith.NoLock).Where(predicate.ToExpression()).SplitTable(p => p.Take(3));
  119. if (WCSTaskoldQueryDto != null && WCSTaskoldQueryDto.AddTimeFrom.HasValue)
  120. {
  121. var endtime = DateTime.Now;
  122. if (WCSTaskoldQueryDto.AddTimeTo.HasValue)
  123. {
  124. endtime = WCSTaskoldQueryDto.AddTimeTo.Value;
  125. }
  126. taskQueryable = _wcstaskoldrepository.Queryable().With(SqlWith.NoLock).Where(predicate.ToExpression()).SplitTable(WCSTaskoldQueryDto.AddTimeFrom.Value, endtime);
  127. }
  128. return taskQueryable;
  129. }
  130. public IList<WCSTaskoldDto> GetList(WCSTaskoldQueryDto WCSTaskoldQueryDto)
  131. {
  132. ISugarQueryable<WCS_TaskOld> sugarQueryable = GetQueryable(WCSTaskoldQueryDto);
  133. var list = sugarQueryable.ToList();
  134. return list.Adapt<List<WCSTaskoldDto>>();
  135. }
  136. public int GetTaskUnFinishCount()
  137. {
  138. var predicate = Expressionable.Create<WCS_TaskOld>();
  139. predicate = predicate.And(m => m.Status < (int)BZModels.TaskStatus.Finish);
  140. var count = _wcstaskoldrepository.Queryable().With(SqlWith.NoLock).Where(predicate.ToExpression()).SplitTable(tabs => tabs.Take(3)).Count();
  141. return count;
  142. }
  143. }
  144. }