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.support.system.user.User; 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.data.domain.PageRequest; 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; @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; } public List list(String district, Integer townId, Integer limit){ limit = limit == null ? 50 : limit; String wkt = null; if(townId != null) { wkt = townRepository.findWktById(townId); }else if(StringUtils.isNotBlank(district)) { wkt = districtRepository.findWktByCode(district); } if(wkt == null) { Pageable pageable = PageRequest.of(1, limit, Sort.by(Land.FIELDS.id)); return landRepository.findAll(pageable).toList(); }else{ return landRepository.findListByWkt(wkt, limit); } } @Override public JpaPlusRepository r() { return landRepository; } }