TaskInfoService.cs 6.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  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.sx;
  8. using WMS.BZModels;
  9. using WMS.Info;
  10. using WMS.BZSqlSugar;
  11. using NPOI.SS.Formula.Functions;
  12. using WMS.BZModels.Dto.SX.TaskDtos;
  13. namespace WMS.BZServices.SX
  14. {
  15. public class TaskInfoService
  16. {
  17. private readonly Repository<WCSTaskInfo> _wcstaskinforepository;
  18. private readonly Repository<WCS_TaskOld> _wcstaskoldrepository;
  19. public TaskInfoService(Repository<WCSTaskInfo> wcstaskinforepository, Repository<WCS_TaskOld> wcstaskoldrepository)
  20. {
  21. _wcstaskinforepository = wcstaskinforepository;
  22. _wcstaskoldrepository = wcstaskoldrepository;
  23. }
  24. public PagedInfo<WCSTaskinfoDto> GetPageList(Pagination pagination, WCSTaskinfoQueryDto wCSTaskinfoQueryDto)
  25. {
  26. var predicate = Expressionable.Create<WCSTaskInfo>();
  27. predicate = predicate.AndIF(!string.IsNullOrEmpty(wCSTaskinfoQueryDto?.ID), m => m.ID.ToString().Contains(wCSTaskinfoQueryDto.ID));
  28. 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)
  29. || m.Floor.ToString() == wCSTaskinfoQueryDto.KeyWord || m.Tunnel.Contains(wCSTaskinfoQueryDto.KeyWord) || m.Device.Contains(wCSTaskinfoQueryDto.KeyWord) || m.MaterialCode.Contains(wCSTaskinfoQueryDto.KeyWord));
  30. predicate = predicate.AndIF(!string.IsNullOrEmpty(wCSTaskinfoQueryDto?.BarCode), m => m.BarCode.Contains(wCSTaskinfoQueryDto.BarCode));
  31. predicate = predicate.AndIF(!string.IsNullOrEmpty(wCSTaskinfoQueryDto?.MaterialCode), m => m.MaterialCode.Contains(wCSTaskinfoQueryDto.MaterialCode));
  32. predicate = predicate.AndIF(!string.IsNullOrEmpty(wCSTaskinfoQueryDto?.AddrFrom), m => m.AddrFrom.Contains(wCSTaskinfoQueryDto.AddrFrom));
  33. predicate = predicate.AndIF(!string.IsNullOrEmpty(wCSTaskinfoQueryDto?.AddrTo), m => m.AddrTo.Contains(wCSTaskinfoQueryDto.AddrTo));
  34. predicate = predicate.AndIF(!string.IsNullOrEmpty(wCSTaskinfoQueryDto?.AddrNext), m => m.AddrNext.Contains(wCSTaskinfoQueryDto.AddrNext));
  35. predicate = predicate.AndIF(!string.IsNullOrEmpty(wCSTaskinfoQueryDto?.WmsTask), m => m.WmsTask.ToString().Contains(wCSTaskinfoQueryDto.WmsTask));
  36. predicate = predicate.AndIF(!string.IsNullOrEmpty(wCSTaskinfoQueryDto?.AgvTaskID), m => m.AgvTaskID.ToString().Contains(wCSTaskinfoQueryDto.AgvTaskID));
  37. predicate = predicate.AndIF(!string.IsNullOrEmpty(wCSTaskinfoQueryDto?.Type), m => m.Type.Equals(wCSTaskinfoQueryDto.Type));
  38. predicate = predicate.AndIF(!string.IsNullOrEmpty(wCSTaskinfoQueryDto?.Status), m => m.Status.Equals(wCSTaskinfoQueryDto.Status));
  39. predicate = predicate.AndIF(!string.IsNullOrEmpty(wCSTaskinfoQueryDto?.BusType), m => m.BusType.Equals(wCSTaskinfoQueryDto.BusType));
  40. predicate = predicate.AndIF(wCSTaskinfoQueryDto != null && wCSTaskinfoQueryDto.AddTimeFrom.HasValue, m => m.AddTime >= wCSTaskinfoQueryDto.AddTimeFrom);
  41. predicate = predicate.AndIF(wCSTaskinfoQueryDto != null && wCSTaskinfoQueryDto.AddTimeTo.HasValue, m => m.AddTime <= wCSTaskinfoQueryDto.AddTimeTo);
  42. predicate = predicate.AndIF(wCSTaskinfoQueryDto != null && wCSTaskinfoQueryDto.StartTimeBegin.HasValue, m => m.StartTime >= wCSTaskinfoQueryDto.StartTimeBegin);
  43. predicate = predicate.AndIF(wCSTaskinfoQueryDto != null && wCSTaskinfoQueryDto.StartTimeEnd.HasValue, m => m.StartTime <= wCSTaskinfoQueryDto.StartTimeEnd);
  44. predicate = predicate.AndIF(wCSTaskinfoQueryDto != null && wCSTaskinfoQueryDto.EndTimeBegin.HasValue, m => m.EedTime >= wCSTaskinfoQueryDto.EndTimeBegin);
  45. predicate = predicate.AndIF(wCSTaskinfoQueryDto != null && wCSTaskinfoQueryDto.EndTimeEnd.HasValue, m => m.EedTime <= wCSTaskinfoQueryDto.EndTimeEnd);
  46. predicate = predicate.AndIF(!string.IsNullOrEmpty(wCSTaskinfoQueryDto?.Tunnel), m => m.Tunnel.Contains(wCSTaskinfoQueryDto.Tunnel));
  47. predicate = predicate.AndIF(!string.IsNullOrEmpty(wCSTaskinfoQueryDto?.Floor), m => m.Floor.ToString().Contains(wCSTaskinfoQueryDto.Floor));
  48. predicate = predicate.AndIF(!string.IsNullOrEmpty(wCSTaskinfoQueryDto?.Device), m => m.Device.Contains(wCSTaskinfoQueryDto.Device));
  49. predicate = predicate.AndIF(wCSTaskinfoQueryDto != null && wCSTaskinfoQueryDto.OutType.HasValue, m => m.OutType.Equals(wCSTaskinfoQueryDto.OutType));
  50. predicate = predicate.AndIF(wCSTaskinfoQueryDto != null && !string.IsNullOrEmpty(wCSTaskinfoQueryDto?.PalletizingId), m => m.PalletizingId.ToString().Contains(wCSTaskinfoQueryDto.PalletizingId));
  51. predicate = predicate.AndIF(wCSTaskinfoQueryDto != null && wCSTaskinfoQueryDto.IsPalletizing.HasValue && wCSTaskinfoQueryDto.IsPalletizing > 0, m => SqlFunc.Subqueryable<Palletizing>().Where(s => s.Id == m.PalletizingId && s.PalletizState == 0).Any());
  52. var list = _wcstaskinforepository.Queryable().With(SqlWith.NoLock).Where(predicate.ToExpression())
  53. .ToPage<WCSTaskInfo, WCSTaskinfoDto>(pagination);
  54. return list;
  55. }
  56. public void UpdateTaskState(List<string> ids, string userId, int state)
  57. {
  58. if (!ids.Any())
  59. {
  60. throw new ArgumentException("没有选择任务!");
  61. }
  62. var list = _wcstaskinforepository.Queryable().With(SqlWith.NoLock).Where(o => ids.Contains(o.ID.ToString())).ToList();
  63. if (!list.Any())
  64. {
  65. throw new ArgumentException("没有找到该任务!");
  66. }
  67. foreach (var id in list)
  68. {
  69. //_wcstaskinforepository.UpdateSetColumnsTrue(p => new WCSTaskInfo()
  70. //{
  71. // Status = state,
  72. // EditTime = DateTime.Now,
  73. // ManualRemarks = "手动变更状态"
  74. //}, p => p.ID == id.ID);
  75. _wcstaskinforepository.AsUpdateable().With("WITH(ROWLOCK,UPDLOCK)").SetColumns(p => new WCSTaskInfo()
  76. {
  77. Status = state,
  78. EditTime = DateTime.Now,
  79. ManualRemarks = "手动变更状态"
  80. }).Where(p => p.ID == id.ID).ExecuteCommand();
  81. _wcstaskoldrepository.AsUpdateable().With("WITH(ROWLOCK,UPDLOCK)").SetColumns(p => new WCS_TaskOld()
  82. {
  83. Status = state,
  84. EditTime = DateTime.Now,
  85. ManualRemarks = "手动变更状态"
  86. }).Where(p => p.ID == id.ID).SplitTable(p => p.Take(2)).ExecuteCommand();
  87. }
  88. }
  89. }
  90. }