BillBomInfoService.cs 8.7 KB

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