LandService.java 3.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  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.utils.MySimpleDateFormat;
  7. import com.sysu.admin.utils.TextUtil;
  8. import com.xiesx.fastboot.core.jpa.JpaPlusRepository;
  9. import org.apache.commons.lang3.StringUtils;
  10. import org.springframework.beans.factory.annotation.Autowired;
  11. import org.springframework.stereotype.Service;
  12. import java.util.ArrayList;
  13. import java.util.Date;
  14. import java.util.List;
  15. @Service("LandService2")
  16. public class LandService extends BaseService<Land,Long> {
  17. @Autowired
  18. LandRepository landRepository;
  19. @Autowired
  20. TownRepository townRepository;
  21. @Autowired
  22. DistrictRepository districtRepository;
  23. @Autowired
  24. CityRepository cityRepository;
  25. public List<LandAreaStat> getLandAreaStat(String district, Integer townId, Date date){
  26. Double percent = getPercent(date);
  27. List<LandAreaStat> list = new ArrayList<>();
  28. List<Object[]> res = null;
  29. if(townId != null) {
  30. String wkt = townRepository.findWktById(townId);
  31. res = landRepository.statMajority(wkt);
  32. }else if(StringUtils.isNotBlank(district)) {
  33. String wkt = districtRepository.findWktByCode(district);
  34. res = landRepository.statMajority(wkt);
  35. }else{
  36. res =landRepository.statMajorityAll();
  37. }
  38. res.stream().forEach(o -> {
  39. Double area = (Double)o[1];
  40. LandAreaStat bean = new LandAreaStat();
  41. bean.setId(Integer.valueOf(o[0].toString()));
  42. bean.setColor(LandAreaStat.castColor(bean.getId()));
  43. bean.setName(LandAreaStat.castName(bean.getId()));
  44. bean.setArea((area + area / 2) / 1000);
  45. bean.setArea(bean.getArea() * percent);
  46. list.add(bean);
  47. });
  48. return list;
  49. }
  50. public Double getPercent(Date date){
  51. if(date == null){
  52. return 1.0;
  53. }
  54. String mm = TextUtil.leftSubstring("-",TextUtil.rightSubstring("-", MySimpleDateFormat.formatDate(date)));
  55. Double percent = Double.parseDouble("1." + Integer.parseInt(mm) % 5);
  56. return percent;
  57. }
  58. public List<CropAreaStat> getCropAreaStat(String district, Integer townId, Date date) {
  59. Double percent = getPercent(date);
  60. List<CropAreaStat> list = new ArrayList<>();
  61. List<Object[]> res = null;
  62. if(townId != null) {
  63. String wkt = townRepository.findWktById(townId);
  64. res = landRepository.statCropType(wkt);
  65. }else if(StringUtils.isNotBlank(district)) {
  66. String wkt = districtRepository.findWktByCode(district);
  67. res = landRepository.statCropType(wkt);
  68. }else{
  69. res =landRepository.statCropTypeAll();
  70. }
  71. res.stream().forEach(o -> {
  72. Double area = (Double)o[1];
  73. CropAreaStat cropAreaStat = new CropAreaStat();
  74. cropAreaStat.setName(CropAreaStat.castName(o[0].toString()));
  75. cropAreaStat.setColor(CropAreaStat.castColor(o[0].toString()));
  76. cropAreaStat.setArea((area + area / 2) / 1000);
  77. cropAreaStat.setArea(cropAreaStat.getArea() * percent);
  78. list.add(cropAreaStat);
  79. });
  80. return list;
  81. }
  82. @Override
  83. public JpaPlusRepository<Land, Long> r() {
  84. return landRepository;
  85. }
  86. }