TaskInfoService.cs 7.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126
  1. using SqlSugar;
  2. using System;
  3. using System.Collections.Generic;
  4. using System.Linq;
  5. using System.Text;
  6. using System.Threading.Tasks;
  7. using wms.sqlsugar.model.cp;
  8. using WMS.BZModels;
  9. using WMS.Info;
  10. using WMS.BZSqlSugar;
  11. using NPOI.SS.Formula.Functions;
  12. using WMS.BZModels.Dto.CP.TaskDtos;
  13. using System.Collections;
  14. namespace WMS.BZServices.CP
  15. {
  16. public class TaskInfoService
  17. {
  18. private readonly Repository<WCSTaskinfo> _wcstaskinforepository;
  19. private readonly Repository<WCS_TaskOld> _wcstaskoldrepository;
  20. public TaskInfoService(Repository<WCSTaskinfo> wcstaskinforepository, Repository<WCS_TaskOld> wcstaskoldrepository)
  21. {
  22. _wcstaskinforepository = wcstaskinforepository;
  23. _wcstaskoldrepository = wcstaskoldrepository;
  24. }
  25. public PagedInfo<WCSTaskinfoDto> GetPageList(Pagination pagination, WCSTaskinfoQueryDto wCSTaskinfoQueryDto)
  26. {
  27. var predicate = Expressionable.Create<WCSTaskinfo>();
  28. predicate = predicate.AndIF(!string.IsNullOrEmpty(wCSTaskinfoQueryDto?.ID), m => m.ID.ToString().Contains(wCSTaskinfoQueryDto.ID));
  29. 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)
  30. || m.Floor.ToString() == wCSTaskinfoQueryDto.KeyWord || m.Tunnel.Contains(wCSTaskinfoQueryDto.KeyWord) || m.Device.Contains(wCSTaskinfoQueryDto.KeyWord) || m.MaterialCode.Contains(wCSTaskinfoQueryDto.KeyWord));
  31. predicate = predicate.AndIF(!string.IsNullOrEmpty(wCSTaskinfoQueryDto?.BarCode), m => m.BarCode.Contains(wCSTaskinfoQueryDto.BarCode));
  32. predicate = predicate.AndIF(!string.IsNullOrEmpty(wCSTaskinfoQueryDto?.MaterialCode), m => m.MaterialCode.Contains(wCSTaskinfoQueryDto.MaterialCode));
  33. predicate = predicate.AndIF(!string.IsNullOrEmpty(wCSTaskinfoQueryDto?.AddrFrom), m => m.AddrFrom.Contains(wCSTaskinfoQueryDto.AddrFrom));
  34. predicate = predicate.AndIF(!string.IsNullOrEmpty(wCSTaskinfoQueryDto?.AddrTo), m => m.AddrTo.Contains(wCSTaskinfoQueryDto.AddrTo));
  35. predicate = predicate.AndIF(!string.IsNullOrEmpty(wCSTaskinfoQueryDto?.AddrNext), m => m.AddrNext.Contains(wCSTaskinfoQueryDto.AddrNext));
  36. predicate = predicate.AndIF(!string.IsNullOrEmpty(wCSTaskinfoQueryDto?.Type), m => m.Type.Equals(wCSTaskinfoQueryDto.Type));
  37. predicate = predicate.AndIF(!string.IsNullOrEmpty(wCSTaskinfoQueryDto?.Status), m => m.Status.Equals(wCSTaskinfoQueryDto.Status));
  38. predicate = predicate.AndIF(!string.IsNullOrEmpty(wCSTaskinfoQueryDto?.BusType), m => m.BusType.Equals(wCSTaskinfoQueryDto.BusType));
  39. predicate = predicate.AndIF(wCSTaskinfoQueryDto != null && wCSTaskinfoQueryDto.AddTimeFrom.HasValue, m => m.AddTime >= wCSTaskinfoQueryDto.AddTimeFrom);
  40. predicate = predicate.AndIF(wCSTaskinfoQueryDto != null && wCSTaskinfoQueryDto.AddTimeTo.HasValue, m => m.AddTime <= wCSTaskinfoQueryDto.AddTimeTo);
  41. predicate = predicate.AndIF(wCSTaskinfoQueryDto != null && wCSTaskinfoQueryDto.StartTimeBegin.HasValue, m => m.StartTime >= wCSTaskinfoQueryDto.StartTimeBegin);
  42. predicate = predicate.AndIF(wCSTaskinfoQueryDto != null && wCSTaskinfoQueryDto.StartTimeEnd.HasValue, m => m.StartTime <= wCSTaskinfoQueryDto.StartTimeEnd);
  43. predicate = predicate.AndIF(wCSTaskinfoQueryDto != null && wCSTaskinfoQueryDto.EndTimeBegin.HasValue, m => m.EedTime >= wCSTaskinfoQueryDto.EndTimeBegin);
  44. predicate = predicate.AndIF(wCSTaskinfoQueryDto != null && wCSTaskinfoQueryDto.EndTimeEnd.HasValue, m => m.EedTime <= wCSTaskinfoQueryDto.EndTimeEnd);
  45. predicate = predicate.AndIF(!string.IsNullOrEmpty(wCSTaskinfoQueryDto?.Tunnel), m => m.Tunnel.Contains(wCSTaskinfoQueryDto.Tunnel));
  46. predicate = predicate.AndIF(!string.IsNullOrEmpty(wCSTaskinfoQueryDto?.Device), m => m.Device.Contains(wCSTaskinfoQueryDto.Device));
  47. predicate = predicate.AndIF(wCSTaskinfoQueryDto != null && wCSTaskinfoQueryDto.OutType.HasValue, m => m.OutType.Equals(wCSTaskinfoQueryDto.OutType));
  48. predicate = predicate.AndIF(!string.IsNullOrEmpty(wCSTaskinfoQueryDto?.TaskGroupKey), m => m.TaskGroupKey.Contains(wCSTaskinfoQueryDto.TaskGroupKey));
  49. var list = _wcstaskinforepository.Queryable().Where(predicate.ToExpression())
  50. .ToPage<WCSTaskinfo, WCSTaskinfoDto>(pagination);
  51. return list;
  52. }
  53. public void Priority(TaskPriorityDto dto)
  54. {
  55. if (dto == null) throw new ArgumentException("数据不能为空!");
  56. if (!dto.TaskIds.Any())
  57. {
  58. throw new ArgumentException("没有数据!");
  59. }
  60. var lists = _wcstaskinforepository.Queryable().With(SqlWith.NoLock).Where(o => dto.TaskIds.Contains(o.ID.ToString())).ToList();
  61. if (!lists.Any())
  62. {
  63. throw new ArgumentException("没有任务数据!");
  64. }
  65. _wcstaskinforepository.UseTranAction(() =>
  66. {
  67. foreach (var item in lists)
  68. {
  69. _wcstaskinforepository.AsUpdateable().With("WITH(ROWLOCK,UPDLOCK)").SetColumns(p => new WCSTaskinfo()
  70. {
  71. Priority = Convert.ToInt32(dto.Priority),
  72. ManualRemarks = dto.ManualRemarks,
  73. EditWho = dto.User,
  74. EditTime = DateTime.Now,
  75. }).Where(p => p.ID == item.ID).ExecuteCommand();
  76. }
  77. });
  78. }
  79. public void ReScanCode(TaskPriorityDto dto)
  80. {
  81. if (dto == null) throw new ArgumentException("数据不能为空!");
  82. if (!dto.TaskIds.Any())
  83. {
  84. throw new ArgumentException("没有数据!");
  85. }
  86. var lists = _wcstaskinforepository.Queryable().With(SqlWith.NoLock).Where(o => dto.TaskIds.Contains(o.ID.ToString())).ToList();
  87. if (!lists.Any())
  88. {
  89. throw new ArgumentException("没有任务数据!");
  90. }
  91. var oldlists = _wcstaskoldrepository.Queryable().With(SqlWith.NoLock).SplitTable(tabs => tabs.Take(3)).Where(o => dto.TaskIds.Contains(o.ID.ToString())).ToList();
  92. _wcstaskinforepository.UseTranAction(() =>
  93. {
  94. foreach (var item in lists)
  95. {
  96. _wcstaskinforepository.AsUpdateable().With("WITH(ROWLOCK,UPDLOCK)").SetColumns(p => new WCSTaskinfo()
  97. {
  98. BarCode = "",
  99. AddrNext = "8058",
  100. EditWho = dto.User,
  101. EditTime = DateTime.Now,
  102. }).Where(p => p.ID == item.ID).ExecuteCommand();
  103. }
  104. foreach (var olditem in oldlists)
  105. {
  106. _wcstaskoldrepository.AsUpdateable().With("WITH(ROWLOCK,UPDLOCK)").SetColumns(p => new WCS_TaskOld()
  107. {
  108. BarCode = "",
  109. AddrNext = "8058",
  110. EditWho = dto.User,
  111. EditTime = DateTime.Now,
  112. }).Where(p => p.ID == olditem.ID).SplitTable(p => p.Take(3)).ExecuteCommand();
  113. }
  114. });
  115. }
  116. }
  117. }