LandService.java 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117
  1. package com.sysu.admin.controller.aland;
  2. import com.sysu.admin.controller.city.CityRepository;
  3. import com.sysu.admin.controller.city.DistrictRepository;
  4. import com.sysu.admin.controller.city.TownRepository;
  5. import com.sysu.admin.support.base.BaseService;
  6. import com.sysu.admin.support.system.user.User;
  7. import com.sysu.admin.utils.MySimpleDateFormat;
  8. import com.sysu.admin.utils.TextUtil;
  9. import com.xiesx.fastboot.core.jpa.JpaPlusRepository;
  10. import org.apache.commons.lang3.StringUtils;
  11. import org.springframework.beans.factory.annotation.Autowired;
  12. import org.springframework.data.domain.PageRequest;
  13. import org.springframework.data.domain.Pageable;
  14. import org.springframework.data.domain.Sort;
  15. import org.springframework.stereotype.Service;
  16. import java.util.ArrayList;
  17. import java.util.Date;
  18. import java.util.List;
  19. @Service("LandService2")
  20. public class LandService extends BaseService<Land,Long> {
  21. @Autowired
  22. LandRepository landRepository;
  23. @Autowired
  24. TownRepository townRepository;
  25. @Autowired
  26. DistrictRepository districtRepository;
  27. @Autowired
  28. CityRepository cityRepository;
  29. public List<LandAreaStat> getLandAreaStat(String district, Integer townId, Date date){
  30. Double percent = getPercent(date);
  31. List<LandAreaStat> list = new ArrayList<>();
  32. List<Object[]> res = null;
  33. if(townId != null) {
  34. String wkt = townRepository.findWktById(townId);
  35. res = landRepository.statMajority(wkt);
  36. }else if(StringUtils.isNotBlank(district)) {
  37. String wkt = districtRepository.findWktByCode(district);
  38. res = landRepository.statMajority(wkt);
  39. }else{
  40. res =landRepository.statMajorityAll();
  41. }
  42. res.stream().forEach(o -> {
  43. Double area = (Double)o[1];
  44. LandAreaStat bean = new LandAreaStat();
  45. bean.setId(Integer.valueOf(o[0].toString()));
  46. bean.setColor(LandAreaStat.castColor(bean.getId()));
  47. bean.setName(LandAreaStat.castName(bean.getId()));
  48. bean.setArea((area + area / 2) / 1000);
  49. bean.setArea(bean.getArea() * percent);
  50. list.add(bean);
  51. });
  52. return list;
  53. }
  54. public Double getPercent(Date date){
  55. if(date == null){
  56. return 1.0;
  57. }
  58. String mm = TextUtil.leftSubstring("-",TextUtil.rightSubstring("-", MySimpleDateFormat.formatDate(date)));
  59. Double percent = Double.parseDouble("1." + Integer.parseInt(mm) % 5);
  60. return percent;
  61. }
  62. public List<CropAreaStat> getCropAreaStat(String district, Integer townId, Date date) {
  63. Double percent = getPercent(date);
  64. List<CropAreaStat> list = new ArrayList<>();
  65. List<Object[]> res = null;
  66. if(townId != null) {
  67. String wkt = townRepository.findWktById(townId);
  68. res = landRepository.statCropType(wkt);
  69. }else if(StringUtils.isNotBlank(district)) {
  70. String wkt = districtRepository.findWktByCode(district);
  71. res = landRepository.statCropType(wkt);
  72. }else{
  73. res =landRepository.statCropTypeAll();
  74. }
  75. res.stream().forEach(o -> {
  76. Double area = (Double)o[1];
  77. CropAreaStat cropAreaStat = new CropAreaStat();
  78. cropAreaStat.setName(CropAreaStat.castName(o[0].toString()));
  79. cropAreaStat.setColor(CropAreaStat.castColor(o[0].toString()));
  80. cropAreaStat.setArea((area + area / 2) / 1000);
  81. cropAreaStat.setArea(cropAreaStat.getArea() * percent);
  82. list.add(cropAreaStat);
  83. });
  84. return list;
  85. }
  86. public List<Land> list(String district, Integer townId, Integer limit){
  87. limit = limit == null ? 50 : limit;
  88. String wkt = null;
  89. if(townId != null) {
  90. wkt = townRepository.findWktById(townId);
  91. }else if(StringUtils.isNotBlank(district)) {
  92. wkt = districtRepository.findWktByCode(district);
  93. }
  94. if(wkt == null) {
  95. Pageable pageable = PageRequest.of(1, limit, Sort.by(Land.FIELDS.id));
  96. return landRepository.findAll(pageable).toList();
  97. }else{
  98. return landRepository.findListByWkt(wkt, limit);
  99. }
  100. }
  101. @Override
  102. public JpaPlusRepository<Land, Long> r() {
  103. return landRepository;
  104. }
  105. }