BillBomInfoService.cs 8.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147
  1. using Mapster;
  2. using SqlSugar;
  3. using System;
  4. using System.Collections.Generic;
  5. using System.Linq;
  6. using System.Text;
  7. using System.Threading.Tasks;
  8. using wms.sqlsugar.model.fj;
  9. using WMS.BZModels;
  10. using WMS.BZModels.Dto.FJ.BillBom;
  11. using WMS.Info;
  12. using WMS.BZSqlSugar;
  13. namespace WMS.BZServices.FJ
  14. {
  15. public class BillBomInfoService
  16. {
  17. private readonly Repository<BillBominfo> _billBominfoRepository;
  18. public BillBomInfoService(Repository<BillBominfo> billBominfoRepository)
  19. {
  20. _billBominfoRepository = billBominfoRepository;
  21. }
  22. public PagedInfo<BillBominfoDto> GetPageList(Pagination pagination, BillBominfoQueryDto billBominfoQueryDto)
  23. {
  24. var total = 0;
  25. var codes = GetQueryable(billBominfoQueryDto).Select(o => o.Code).Distinct()
  26. .ToPageList(pagination.page, pagination.rows, ref total);
  27. var arr=new List<string>();
  28. if (billBominfoQueryDto != null && !string.IsNullOrWhiteSpace(billBominfoQueryDto.StrSpoolType))
  29. {
  30. arr = billBominfoQueryDto.StrSpoolType.Split(',').ToList();
  31. }
  32. var list = _billBominfoRepository.Context.Queryable<BillBominfo, BaseMatinfo,BaseMatinfo>((billBominfo, baseMatinfo, ProbaseMatinfo) => new object[] {
  33. JoinType.Left,billBominfo.MatId == baseMatinfo.Id ,
  34. JoinType.Left,billBominfo.ProMatCode == ProbaseMatinfo.Code ,
  35. })
  36. .Select((billBominfo, baseMatinfo, ProbaseMatinfo) => new BillBominfoDto
  37. {
  38. Id = billBominfo.Id.ToString(),
  39. ProCode = billBominfo.ProCode,
  40. IsStop = billBominfo.IsStop,
  41. IsDelete = billBominfo.IsDelete == null ? 0 : billBominfo.IsDelete.Value,
  42. Code = billBominfo.Code,
  43. Name = billBominfo.Name,
  44. MatCode = billBominfo.MatCode,
  45. MatId = billBominfo.MatId.ToString(),
  46. ProMatCode = billBominfo.ProMatCode,
  47. ProMatName= ProbaseMatinfo.Name,
  48. HWCountQty = billBominfo.HWCountQty,
  49. Memo = billBominfo.Memo,
  50. AddWho = billBominfo.AddWho,
  51. AddTime = billBominfo.AddTime,
  52. EditWho = billBominfo.EditWho,
  53. EditTime = billBominfo.EditTime,
  54. SpoolType = baseMatinfo.SpoolType,
  55. TimeOut = ProbaseMatinfo.TimeOut
  56. }).MergeTable().Where(o => codes.Contains(o.Code))
  57. .WhereIF(arr!=null && arr.Count>0,o=> arr.Contains(o.SpoolType))
  58. .OrderByIF(!pagination.sidx.IsEmpty(), $"{pagination.sidx.ToSqlFilter()} {(!string.IsNullOrWhiteSpace(pagination.sord) && pagination.sord.ToLower().Contains("desc") ? "desc" : "asc")}").ToList().Adapt<List<BillBominfoDto>>();
  59. var page = new PagedInfo<BillBominfoDto>
  60. {
  61. PageSize = pagination.rows,
  62. PageIndex = pagination.page,
  63. TotalNum = total,
  64. Result = list
  65. };
  66. return page;
  67. }
  68. private ISugarQueryable<BillBominfo> GetQueryable(BillBominfoQueryDto billBominfoQueryDto)
  69. {
  70. var predicate = Expressionable.Create<BillBominfo, BaseMatinfo>();
  71. predicate = predicate.AndIF(!string.IsNullOrEmpty(billBominfoQueryDto?.KeyWord), (billBominfo, baseMatinfo) => billBominfo.Code.Contains(billBominfoQueryDto.KeyWord) || billBominfo.Name.Contains(billBominfoQueryDto.KeyWord) || billBominfo.MatCode.Contains(billBominfoQueryDto.KeyWord));
  72. predicate = predicate.AndIF(!string.IsNullOrEmpty(billBominfoQueryDto?.Code), (billBominfo, baseMatinfo) => billBominfo.Code.Contains(billBominfoQueryDto.Code));
  73. predicate = predicate.AndIF(!string.IsNullOrEmpty(billBominfoQueryDto?.ProCode), (billBominfo, baseMatinfo) => billBominfo.ProCode.Contains(billBominfoQueryDto.ProCode));
  74. predicate = predicate.AndIF(!string.IsNullOrEmpty(billBominfoQueryDto?.Name), (billBominfo, baseMatinfo) => billBominfo.Name.Contains(billBominfoQueryDto.Name));
  75. predicate = predicate.AndIF(billBominfoQueryDto != null && billBominfoQueryDto.IsStop.HasValue, (billBominfo, baseMatinfo) => billBominfo.IsStop == billBominfoQueryDto.IsStop);
  76. predicate = predicate.AndIF(billBominfoQueryDto != null && billBominfoQueryDto.IsDelete.HasValue, (billBominfo, baseMatinfo) => billBominfo.IsDelete == billBominfoQueryDto.IsDelete);
  77. if (billBominfoQueryDto != null && billBominfoQueryDto.SpoolType != null && billBominfoQueryDto.SpoolType.Count() > 0)
  78. {
  79. predicate = predicate.And((billBominfo, baseMatinfo) => billBominfoQueryDto.SpoolType.Contains(baseMatinfo.SpoolType.ToLower()));
  80. }
  81. if(billBominfoQueryDto != null && !string.IsNullOrWhiteSpace(billBominfoQueryDto.StrSpoolType))
  82. {
  83. var arr = billBominfoQueryDto.StrSpoolType.Split(',');
  84. predicate = predicate.And((billBominfo, baseMatinfo) => arr.Contains(baseMatinfo.SpoolType ));
  85. }
  86. var sugarQueryable = _billBominfoRepository.Context.Queryable<BillBominfo, BaseMatinfo>((billBominfo, baseMatinfo) => new object[] {
  87. JoinType.Left,billBominfo.MatId == baseMatinfo.Id }).Where(predicate.ToExpression()).MergeTable();
  88. return sugarQueryable;
  89. }
  90. public IList<BillBominfoDto> GetList(BillBominfoQueryDto billBominfoQueryDto)
  91. {
  92. var predicate = Expressionable.Create<BillBominfo, BaseMatinfo>();
  93. predicate = predicate.AndIF(!string.IsNullOrEmpty(billBominfoQueryDto?.KeyWord), (billBominfo, baseMatinfo) => billBominfo.Code.Contains(billBominfoQueryDto.KeyWord) || billBominfo.Name.Contains(billBominfoQueryDto.KeyWord) || billBominfo.MatCode.Contains(billBominfoQueryDto.KeyWord));
  94. predicate = predicate.AndIF(!string.IsNullOrEmpty(billBominfoQueryDto?.Code), (billBominfo, baseMatinfo) => billBominfo.Code.Contains(billBominfoQueryDto.Code));
  95. predicate = predicate.AndIF(!string.IsNullOrEmpty(billBominfoQueryDto?.ProCode), (billBominfo, baseMatinfo) => billBominfo.ProCode.Contains(billBominfoQueryDto.ProCode));
  96. predicate = predicate.AndIF(!string.IsNullOrEmpty(billBominfoQueryDto?.Name), (billBominfo, baseMatinfo) => billBominfo.Name.Contains(billBominfoQueryDto.Name));
  97. predicate = predicate.AndIF(billBominfoQueryDto != null && billBominfoQueryDto.IsStop.HasValue, (billBominfo, baseMatinfo) => billBominfo.IsStop == billBominfoQueryDto.IsStop);
  98. predicate = predicate.AndIF(billBominfoQueryDto != null && billBominfoQueryDto.IsDelete.HasValue, (billBominfo, baseMatinfo) => billBominfo.IsDelete == billBominfoQueryDto.IsDelete);
  99. if (billBominfoQueryDto != null && billBominfoQueryDto.SpoolType != null && billBominfoQueryDto.SpoolType.Count() > 0)
  100. {
  101. predicate = predicate.And((billBominfo, baseMatinfo) => billBominfoQueryDto.SpoolType.Contains(baseMatinfo.SpoolType.ToLower()));
  102. }
  103. var sugarQueryable = _billBominfoRepository.Context.Queryable<BillBominfo, BaseMatinfo>((billBominfo, baseMatinfo) => new object[] {
  104. JoinType.Left,billBominfo.MatId == baseMatinfo.Id }).Where(predicate.ToExpression())
  105. .Select((billBominfo, baseMatinfo) => new BillBominfoDto
  106. {
  107. Id = billBominfo.Id.ToString(),
  108. ProCode= billBominfo.ProCode,
  109. IsStop = billBominfo.IsStop,
  110. IsDelete = billBominfo.IsDelete == null ? 0 : billBominfo.IsDelete.Value,
  111. Code = billBominfo.Code,
  112. Name = billBominfo.Name,
  113. MatCode = billBominfo.MatCode,
  114. MatId = billBominfo.MatId.ToString(),
  115. ProMatCode = billBominfo.ProMatCode,
  116. HWCountQty = billBominfo.HWCountQty,
  117. Memo = billBominfo.Memo,
  118. AddWho = billBominfo.AddWho,
  119. AddTime = billBominfo.AddTime,
  120. EditWho = billBominfo.EditWho,
  121. EditTime = billBominfo.EditTime,
  122. SpoolType = baseMatinfo.SpoolType
  123. }).MergeTable();
  124. var list = sugarQueryable.ToList() .Adapt<List<BillBominfoDto>>();
  125. return list;
  126. }
  127. public IList<BillBominfoDto> GetBillBominfoItem(string matCode)
  128. {
  129. var predicate = Expressionable.Create<BillBominfo>();
  130. predicate = predicate.AndIF(!string.IsNullOrEmpty(matCode), m => m.MatCode.Contains(matCode));
  131. var list = _billBominfoRepository.Queryable().Where(predicate.ToExpression()).ToList().Adapt<List<BillBominfoDto>>();
  132. return list;
  133. }
  134. }
  135. }