TbdmProvRepository.cs 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  1. using Microsoft.EntityFrameworkCore;
  2. using Ropin.Inspection.Model;
  3. using Ropin.Inspection.Model.Entities;
  4. using System;
  5. using System.Collections.Generic;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Threading.Tasks;
  9. namespace Ropin.Inspection.Repository
  10. {
  11. public class TbdmProvRepository : RepositoryBase<TBDM_Prov, Guid>, ITbdmProvRepository
  12. {
  13. public TbdmProvRepository(InspectionDbContext DbContext) : base(DbContext)
  14. {
  15. }
  16. public async Task<List<TbdmProvViewModel>> GetProvListTreeAsync()
  17. {
  18. //var query = from a in DbContext.TBDM_Prov
  19. // join b in DbContext.TBDM_City
  20. // on a.C_Code equals b.C_ProvCode
  21. // join c in DbContext.TBDM_Area
  22. // on b.C_Code equals c.C_CityCode
  23. // group a by a.C_Code into g
  24. // select new TbdmProvViewModel
  25. // {
  26. // C_Code = g.First().C_Code,
  27. // C_Name = g.First().C_Name,
  28. // I_Sort = g.First().I_Sort,
  29. // C_Status = g.First().C_Status,
  30. // //Citys = (from h in b group g by g
  31. // // select new TbdmCity
  32. // // {
  33. // // C_Code = h.First().C_Code,
  34. // // C_Name = h.First().C_Name,
  35. // // I_Sort = h.First().I_Sort,
  36. // // C_Status = h.First().C_Status,
  37. // // }).ToList<TbdmCity>(),
  38. // };
  39. //var v = query.ToList();
  40. var Prov = DbContext.TBDM_Prov.ToList();
  41. var City = DbContext.TBDM_City.ToList();
  42. var Area = DbContext.TBDM_Area.ToList();
  43. var treeList = new List<TbdmProvViewModel>();
  44. foreach (var itemProv in Prov.Where(p => p.C_Status == "1"))
  45. {
  46. TbdmProvViewModel provModel = new TbdmProvViewModel()
  47. {
  48. C_Code = itemProv.C_Code,
  49. C_Name = itemProv.C_Name,
  50. I_Sort = itemProv.I_Sort,
  51. C_Status = itemProv.C_Status
  52. };
  53. provModel.Children = new List<TbdmCity>();
  54. foreach (var itemCity in City.Where(c => c.C_Status == "1" && c.C_ProvCode == itemProv.C_Code))
  55. {
  56. TbdmCity cityModel
  57. = new TbdmCity()
  58. {
  59. C_Code = itemCity.C_Code,
  60. C_ProvCode = itemProv.C_Code,
  61. C_Name = itemCity.C_Name,
  62. I_Sort = itemCity.I_Sort,
  63. C_Status = itemCity.C_Status
  64. };
  65. provModel.Children.Add(cityModel);
  66. cityModel.Children = await RecursionArea(Area, itemCity.C_Code);
  67. //cityModel.Areas = new List<TbdmArea>();
  68. //foreach (var itemArea in Area.Where(a => a.C_Status == "1" && a.C_CityCode == itemCity.C_Code))
  69. //{
  70. // TbdmArea areaModel = new TbdmArea()
  71. // {
  72. // C_Code = itemArea.C_Code,
  73. // C_Name = itemArea.C_Name,
  74. // I_Sort = itemArea.I_Sort,
  75. // C_Status = itemArea.C_Status
  76. // };
  77. // cityModel.Areas.Add(areaModel);
  78. //}
  79. }
  80. treeList.Add(provModel);
  81. }
  82. return await Task.Run(() => treeList);
  83. }
  84. async Task<List<TbdmArea>> RecursionArea(List<TBDM_Area> Area, string cityCode)
  85. {
  86. var areaList = new List<TbdmArea>();
  87. foreach (var itemArea in Area.Where(a => a.C_Status == "1" && a.C_CityCode == cityCode))
  88. {
  89. TbdmArea areaModel = new TbdmArea()
  90. {
  91. C_Code = itemArea.C_Code,
  92. C_CityCode = cityCode,
  93. C_Name = itemArea.C_Name,
  94. I_Sort = itemArea.I_Sort,
  95. C_Status = itemArea.C_Status
  96. };
  97. areaList.Add(areaModel);
  98. }
  99. return await Task.Run(() => areaList);
  100. }
  101. }
  102. }