package com.sysu.admin.controller.aland; 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.support.base.BaseService; import com.sysu.admin.utils.MySimpleDateFormat; import com.sysu.admin.utils.TextUtil; import com.xiesx.fastboot.core.jpa.JpaPlusRepository; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.ArrayList; import java.util.Date; import java.util.List; @Service("LandService2") public class LandService extends BaseService { @Autowired LandRepository landRepository; @Autowired TownRepository townRepository; @Autowired DistrictRepository districtRepository; @Autowired CityRepository cityRepository; public List getLandAreaStat(String district, Integer townId, Date date){ Double percent = getPercent(date); List list = new ArrayList<>(); List res = null; if(townId != null) { String wkt = townRepository.findWktById(townId); res = landRepository.statMajority(wkt); }else if(StringUtils.isNotBlank(district)) { String wkt = districtRepository.findWktByCode(district); res = landRepository.statMajority(wkt); }else{ res =landRepository.statMajorityAll(); } 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.setArea((area + area / 2) / 1000); bean.setArea(bean.getArea() * percent); list.add(bean); }); return list; } public Double getPercent(Date date){ if(date == null){ return 1.0; } String mm = TextUtil.leftSubstring("-",TextUtil.rightSubstring("-", MySimpleDateFormat.formatDate(date))); Double percent = Double.parseDouble("1." + Integer.parseInt(mm) % 5); return percent; } public List getCropAreaStat(String district, Integer townId, Date date) { Double percent = getPercent(date); List list = new ArrayList<>(); List res = null; if(townId != null) { String wkt = townRepository.findWktById(townId); res = landRepository.statCropType(wkt); }else if(StringUtils.isNotBlank(district)) { String wkt = districtRepository.findWktByCode(district); res = landRepository.statCropType(wkt); }else{ res =landRepository.statCropTypeAll(); } res.stream().forEach(o -> { Double area = (Double)o[1]; CropAreaStat cropAreaStat = new CropAreaStat(); cropAreaStat.setName(CropAreaStat.castName(o[0].toString())); cropAreaStat.setColor(CropAreaStat.castColor(o[0].toString())); cropAreaStat.setArea((area + area / 2) / 1000); cropAreaStat.setArea(cropAreaStat.getArea() * percent); list.add(cropAreaStat); }); return list; } @Override public JpaPlusRepository r() { return landRepository; } }