|
@@ -4,6 +4,7 @@ import com.querydsl.core.types.Predicate;
|
|
|
import com.sysu.admin.controller.city.CityRepository;
|
|
|
import com.sysu.admin.controller.city.DistrictRepository;
|
|
|
import com.sysu.admin.controller.city.TownRepository;
|
|
|
+import com.sysu.admin.controller.city.TownService;
|
|
|
import com.sysu.admin.support.base.BaseService;
|
|
|
import com.sysu.admin.utils.MySimpleDateFormat;
|
|
|
import com.sysu.admin.utils.TextUtil;
|
|
@@ -15,47 +16,62 @@ import org.springframework.data.domain.Pageable;
|
|
|
import org.springframework.data.domain.Sort;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
-import java.util.ArrayList;
|
|
|
-import java.util.Date;
|
|
|
-import java.util.List;
|
|
|
+import java.util.*;
|
|
|
+
|
|
|
@Service("LandService2")
|
|
|
public class LandService extends BaseService<Land,Long> {
|
|
|
@Autowired
|
|
|
LandRepository landRepository;
|
|
|
@Autowired
|
|
|
- TownRepository townRepository;
|
|
|
+ TownService townService;
|
|
|
@Autowired
|
|
|
DistrictRepository districtRepository;
|
|
|
@Autowired
|
|
|
CityRepository cityRepository;
|
|
|
|
|
|
|
|
|
- public List<LandAreaStat> getLandAreaStat(String district, Integer townId, Date date){
|
|
|
+ public List<TownStat> getLandAreaStat(Date date, String districtCode){
|
|
|
Double percent = getPercent(date);
|
|
|
+ List<Object[]> res = landRepository.statParcelTypeAll();
|
|
|
+ List<TownStat> townStatList = new ArrayList<>(30);
|
|
|
+ Integer currentTownId = null;
|
|
|
+ TownStat townStat = null;
|
|
|
+ Map<Integer,String> namesMap = townService.getNames(districtCode);
|
|
|
+ TownStat sumStat = new TownStat();
|
|
|
+ sumStat.setTownName("汇总信息");
|
|
|
+ sumStat.setSumMap(new HashMap<>());
|
|
|
+ townStatList.add(sumStat);
|
|
|
+
|
|
|
+ for(Object[] o : res){
|
|
|
+ if(currentTownId == null || !o[0].toString().equals(currentTownId.toString())){
|
|
|
+ townStat = new TownStat();
|
|
|
+ townStat.setList(new ArrayList<>());
|
|
|
+ currentTownId = Integer.valueOf(o[0].toString());
|
|
|
+ townStat.setTownId(currentTownId);
|
|
|
+ townStat.setTownName(namesMap.get(currentTownId));
|
|
|
+ townStatList.add(townStat);
|
|
|
+ }
|
|
|
|
|
|
- List<LandAreaStat> list = new ArrayList<>();
|
|
|
- List<Object[]> res = null;
|
|
|
- if(townId != null) {
|
|
|
- String wkt = townRepository.findWktById(townId);
|
|
|
- res = landRepository.statParcelType(wkt);
|
|
|
- }else if(StringUtils.isNotBlank(district)) {
|
|
|
- String wkt = districtRepository.findWktByCode(district);
|
|
|
- res = landRepository.statParcelType(wkt);
|
|
|
- }else{
|
|
|
- res = landRepository.statParcelTypeAll();
|
|
|
- }
|
|
|
- res.stream().forEach(o -> {
|
|
|
- Double area = (Double)o[1];
|
|
|
LandAreaStat bean = new LandAreaStat();
|
|
|
- bean.setId(Integer.valueOf(o[0].toString()));
|
|
|
- bean.setColor(LandAreaStat.castColor(bean.getId()));
|
|
|
- bean.setName(LandAreaStat.castName(bean.getId()));
|
|
|
+ bean.setParcelType(Integer.valueOf(o[1].toString()));
|
|
|
+ bean.setColor(LandAreaStat.castColor(bean.getParcelType()));
|
|
|
+ bean.setName(LandAreaStat.castName(bean.getParcelType()));
|
|
|
+ Double area = (Double)o[2];
|
|
|
bean.setArea((area + area / 2) / 1000);
|
|
|
bean.setArea(bean.getArea() * percent);
|
|
|
- bean.setCount(Integer.valueOf(o[2].toString()));
|
|
|
- list.add(bean);
|
|
|
- });
|
|
|
- return list;
|
|
|
+ bean.setCount(Integer.valueOf(o[3].toString()));
|
|
|
+ townStat.getList().add(bean);
|
|
|
+ //汇总信息
|
|
|
+ LandAreaStat sum = sumStat.getSumMap().get(bean.getParcelType());
|
|
|
+ if(sum == null){
|
|
|
+ sum = new LandAreaStat(bean.getParcelType(), bean.getName(), bean.getColor());
|
|
|
+ sumStat.getSumMap().put(bean.getParcelType(), sum);
|
|
|
+ }
|
|
|
+ sum.setArea(sum.getArea() + bean.getArea());
|
|
|
+ sum.setCount(sum.getCount() + bean.getCount());
|
|
|
+ }
|
|
|
+
|
|
|
+ return townStatList;
|
|
|
}
|
|
|
|
|
|
|
|
@@ -74,7 +90,7 @@ public class LandService extends BaseService<Land,Long> {
|
|
|
List<CropAreaStat> list = new ArrayList<>();
|
|
|
List<Object[]> res = null;
|
|
|
if(townId != null) {
|
|
|
- String wkt = townRepository.findWktById(townId);
|
|
|
+ String wkt = townService.findWktById(townId);
|
|
|
res = landRepository.statCropType(wkt);
|
|
|
}else if(StringUtils.isNotBlank(district)) {
|
|
|
String wkt = districtRepository.findWktByCode(district);
|
|
@@ -99,7 +115,7 @@ public class LandService extends BaseService<Land,Long> {
|
|
|
limit = limit == null ? 50 : limit;
|
|
|
String wkt = null;
|
|
|
if(townId != null) {
|
|
|
- wkt = townRepository.findWktById(townId);
|
|
|
+ wkt = townService.findWktById(townId);
|
|
|
}else if(StringUtils.isNotBlank(district)) {
|
|
|
wkt = districtRepository.findWktByCode(district);
|
|
|
}
|