MaterialCostRepository.cs 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. using OASystem.Domain.Dtos.Resource;
  2. using OASystem.Domain.Entities.District;
  3. using OASystem.Domain.Entities.Resource;
  4. using OASystem.Domain.Entities.System;
  5. using OASystem.Domain.ViewModels.Resource;
  6. using System;
  7. using System.Collections.Generic;
  8. using System.Linq;
  9. using System.Text;
  10. using System.Threading.Tasks;
  11. namespace OASystem.Infrastructure.Repositories.Resource
  12. {
  13. public class MaterialCostRepository : BaseRepository<Res_MaterialCost, MaterialCostView>
  14. {
  15. public MaterialCostRepository(SqlSugarClient sqlSugar) : base(sqlSugar)
  16. {
  17. }
  18. /// <summary>
  19. /// 获取物料成本分页列表
  20. /// </summary>
  21. /// <param name="dto"></param>
  22. /// <returns></returns>
  23. public async Task<MaterialCostListView> GetListAsync(QueryMaterialCostDto dto)
  24. {
  25. var query = _sqlSugar.Queryable<Res_MaterialCost, Sys_SetData, Dis_City>((m, s, c) => new JoinQueryInfos(
  26. JoinType.Left, m.SetDataId == s.Id,
  27. JoinType.Left, m.CityId == c.Id
  28. ))
  29. .Where((m, s, c) => m.IsDel == 0);
  30. if (dto.TypeId.HasValue && dto.TypeId > 0)
  31. query = query.Where((m, s, c) => m.TypeId == dto.TypeId.Value);
  32. if (!string.IsNullOrEmpty(dto.Name))
  33. query = query.Where((m, s, c) => m.Name.Contains(dto.Name));
  34. if (dto.SetDataId.HasValue && dto.SetDataId > 0)
  35. query = query.Where((m, s, c) => m.SetDataId == dto.SetDataId.Value);
  36. if (dto.CityId.HasValue && dto.CityId > 0)
  37. query = query.Where((m, s, c) => m.CityId == dto.CityId.Value);
  38. int totalCount = 0;
  39. var list = await query.OrderBy((m, s, c) => m.Id, OrderByType.Desc)
  40. .Select((m, s, c) => new MaterialCostView
  41. {
  42. Id = m.Id,
  43. TypeId = m.TypeId,
  44. Name = m.Name,
  45. Price = m.Price,
  46. Number = m.Number,
  47. Unit = m.Unit,
  48. SetDataId = m.SetDataId,
  49. SetDataName = s.Name,
  50. CityId = m.CityId,
  51. CityName = c.CnName,
  52. Remark = m.Remark,
  53. CreateTime = m.CreateTime
  54. })
  55. .ToPageListAsync(dto.PageIndex, dto.PageSize, totalCount);
  56. return new MaterialCostListView
  57. {
  58. DataList = list,
  59. DataCount = totalCount,
  60. CurrPageIndex = dto.PageIndex,
  61. CurrPageSize = dto.PageSize
  62. };
  63. }
  64. /// <summary>
  65. /// 获取单条详情
  66. /// </summary>
  67. /// <param name="id"></param>
  68. /// <returns></returns>
  69. public async Task<MaterialCostView> GetDetailAsync(int id)
  70. {
  71. return await _sqlSugar.Queryable<Res_MaterialCost, Sys_SetData, Dis_City>((m, s, c) => new JoinQueryInfos(
  72. JoinType.Left, m.SetDataId == s.Id,
  73. JoinType.Left, m.CityId == c.Id
  74. ))
  75. .Where((m, s, c) => m.Id == id && m.IsDel == 0)
  76. .Select((m, s, c) => new MaterialCostView
  77. {
  78. Id = m.Id,
  79. TypeId = m.TypeId,
  80. Name = m.Name,
  81. Price = m.Price,
  82. Number = m.Number,
  83. Unit = m.Unit,
  84. SetDataId = m.SetDataId,
  85. SetDataName = s.Name,
  86. CityId = m.CityId,
  87. CityName = c.CnName,
  88. Remark = m.Remark,
  89. CreateTime = m.CreateTime
  90. })
  91. .FirstAsync();
  92. }
  93. }
  94. }