AgvTaskInfoService.cs 6.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117
  1. using SqlSugar;
  2. using WMS.BZModels;
  3. using WMS.Info;
  4. using wms.sqlsugar.model.fj;
  5. using WMS.BZSqlSugar;
  6. using WMS.BZModels.Dto.FJ.TaskDtos;
  7. namespace WMS.BZServices.FJ
  8. {
  9. public class AgvTaskInfoService
  10. {
  11. private readonly Repository<WCS_AgvTaskInfo> _agvtaskrepository;
  12. public AgvTaskInfoService(Repository<WCS_AgvTaskInfo> agvtaskrepository)
  13. {
  14. _agvtaskrepository = agvtaskrepository;
  15. }
  16. public PagedInfo<AgvTaskoldDto> GetPageList(Pagination pagination, AgvTaskoldQueryDto agvTaskoldQueryDto)
  17. {
  18. var predicate = Expressionable.Create<WCS_AgvTaskInfo>();
  19. predicate = predicate.AndIF(!string.IsNullOrEmpty(agvTaskoldQueryDto?.KeyWord), m => m.ID.ToString().Contains(agvTaskoldQueryDto.KeyWord) || m.AgvID.Contains(agvTaskoldQueryDto.KeyWord)
  20. || m.Station.Contains(agvTaskoldQueryDto.KeyWord) || m.Position.Contains(agvTaskoldQueryDto.KeyWord));
  21. predicate = predicate.AndIF(!string.IsNullOrEmpty(agvTaskoldQueryDto?.ID), m => m.ID.ToString().Contains(agvTaskoldQueryDto.ID));
  22. predicate = predicate.AndIF(!string.IsNullOrEmpty(agvTaskoldQueryDto?.AgvID), m => m.AgvID.Contains(agvTaskoldQueryDto.AgvID));
  23. predicate = predicate.AndIF(!string.IsNullOrEmpty(agvTaskoldQueryDto?.Station), m => m.Station.Contains(agvTaskoldQueryDto.Station));
  24. predicate = predicate.AndIF(!string.IsNullOrEmpty(agvTaskoldQueryDto?.Position), m => m.Position.Contains(agvTaskoldQueryDto.Position));
  25. predicate = predicate.AndIF(!string.IsNullOrEmpty(agvTaskoldQueryDto?.TaskType), m => m.TaskType.Equals(agvTaskoldQueryDto.TaskType));
  26. predicate = predicate.AndIF(!string.IsNullOrEmpty(agvTaskoldQueryDto?.AgvStatus), m => m.AgvStatus.Equals(agvTaskoldQueryDto.AgvStatus));
  27. predicate = predicate.AndIF(!string.IsNullOrEmpty(agvTaskoldQueryDto?.Status), m => m.Status.Equals(agvTaskoldQueryDto.Status));
  28. predicate = predicate.AndIF(!string.IsNullOrEmpty(agvTaskoldQueryDto?.TaskId), m => m.TaskId.GetValueOrDefault().ToString().Contains(agvTaskoldQueryDto.TaskId));
  29. predicate = predicate.And(p => p.Status < 99 || p.AgvStatus<99);
  30. predicate = predicate.And(p => p.AddTime >= DateTime.Now.AddDays(-3).Date);
  31. var query = _agvtaskrepository.Queryable().Where(predicate.ToExpression()).SplitTable(p => p.Take(1));
  32. //if (agvTaskoldQueryDto != null && agvTaskoldQueryDto.AddTimeFrom.HasValue)
  33. //{
  34. // var endtime = DateTime.Now;
  35. // if (agvTaskoldQueryDto.AddTimeTo.HasValue)
  36. // {
  37. // endtime = agvTaskoldQueryDto.AddTimeTo.Value;
  38. // }
  39. // query = _agvtaskoldrepository.Queryable().Where(predicate.ToExpression()).SplitTable(AgvTaskoldQueryDto.AddTimeFrom.Value, endtime);
  40. //}
  41. var list = query.ToPage<WCS_AgvTaskInfo, AgvTaskoldDto>(pagination);
  42. return list;
  43. }
  44. public PagedInfo<AgvTaskoldDto> GetPageList1(Pagination pagination, AgvTaskoldQueryDto agvTaskoldQueryDto)
  45. {
  46. var predicate = Expressionable.Create<WCS_AgvTaskInfo>();
  47. predicate = predicate.AndIF(!string.IsNullOrEmpty(agvTaskoldQueryDto?.KeyWord), m => m.ID.ToString().Contains(agvTaskoldQueryDto.KeyWord) || m.AgvID.Contains(agvTaskoldQueryDto.KeyWord)
  48. || m.Station.Contains(agvTaskoldQueryDto.KeyWord) || m.Position.Contains(agvTaskoldQueryDto.KeyWord));
  49. predicate = predicate.AndIF(!string.IsNullOrEmpty(agvTaskoldQueryDto?.ID), m => m.ID.ToString().Contains(agvTaskoldQueryDto.ID));
  50. predicate = predicate.AndIF(!string.IsNullOrEmpty(agvTaskoldQueryDto?.AgvID), m => m.AgvID.Contains(agvTaskoldQueryDto.AgvID));
  51. predicate = predicate.AndIF(!string.IsNullOrEmpty(agvTaskoldQueryDto?.Station), m => m.Station.Contains(agvTaskoldQueryDto.Station));
  52. predicate = predicate.AndIF(!string.IsNullOrEmpty(agvTaskoldQueryDto?.Position), m => m.Position.Contains(agvTaskoldQueryDto.Position));
  53. predicate = predicate.AndIF(!string.IsNullOrEmpty(agvTaskoldQueryDto?.TaskType), m => m.TaskType.Equals(agvTaskoldQueryDto.TaskType));
  54. predicate = predicate.AndIF(!string.IsNullOrEmpty(agvTaskoldQueryDto?.AgvStatus), m => m.AgvStatus.Equals(agvTaskoldQueryDto.AgvStatus));
  55. predicate = predicate.AndIF(!string.IsNullOrEmpty(agvTaskoldQueryDto?.Status), m => m.Status.Equals(agvTaskoldQueryDto.Status));
  56. predicate = predicate.AndIF(!string.IsNullOrEmpty(agvTaskoldQueryDto?.TaskId), m => m.TaskId.GetValueOrDefault().ToString().Contains(agvTaskoldQueryDto.TaskId));
  57. predicate = predicate.And(p => p.Status >= 99);
  58. var query = _agvtaskrepository.Queryable().Where(predicate.ToExpression()).SplitTable(p => p.Take(1));
  59. //if (agvTaskoldQueryDto != null && agvTaskoldQueryDto.AddTimeFrom.HasValue)
  60. //{
  61. // var endtime = DateTime.Now;
  62. // if (agvTaskoldQueryDto.AddTimeTo.HasValue)
  63. // {
  64. // endtime = agvTaskoldQueryDto.AddTimeTo.Value;
  65. // }
  66. // query = _agvtaskoldrepository.Queryable().Where(predicate.ToExpression()).SplitTable(AgvTaskoldQueryDto.AddTimeFrom.Value, endtime);
  67. //}
  68. var list = query.ToPage<WCS_AgvTaskInfo, AgvTaskoldDto>(pagination);
  69. return list;
  70. }
  71. public int GetTaskUnFinishCount()
  72. {
  73. var predicate = Expressionable.Create<WCS_AgvTaskInfo>();
  74. predicate = predicate.And(m => m.Status < (int)BZModels.TaskStatus.Finish);
  75. var count = _agvtaskrepository.Queryable().Where(predicate.ToExpression()).SplitTable(tabs => tabs.Take(3)).Count();
  76. return count;
  77. }
  78. public void UpdateAgvState(List<string> ids, string userId, int state)
  79. {
  80. if (!ids.Any())
  81. {
  82. throw new ArgumentException("没有选择任务!");
  83. }
  84. var list = _agvtaskrepository.Queryable().With(SqlWith.NoLock).SplitTable(tabs => tabs.Take(3)).Where(o => ids.Contains(o.ID.ToString())).ToList();
  85. if (!list.Any())
  86. {
  87. throw new ArgumentException("没有找到该任务!");
  88. }
  89. foreach (var id in list)
  90. {
  91. _agvtaskrepository.UseTranAction(() =>
  92. {
  93. _agvtaskrepository.AsUpdateable().With("WITH(ROWLOCK,UPDLOCK)").SetColumns(p => new WCS_AgvTaskInfo()
  94. {
  95. AgvStatus = state,
  96. EditTime = DateTime.Now,
  97. EditWho=userId,
  98. // ManualRemarks = "手动变更状态"
  99. }).Where(p => p.ID == id.ID).SplitTable(tabs => tabs.Take(3)).ExecuteCommand();
  100. });
  101. }
  102. }
  103. }
  104. }