123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117 |
- 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<Land,Long> {
- @Autowired
- LandRepository landRepository;
- @Autowired
- TownRepository townRepository;
- @Autowired
- DistrictRepository districtRepository;
- @Autowired
- CityRepository cityRepository;
- public List<LandAreaStat> getLandAreaStat(String district, Integer townId, Date date){
- Double percent = getPercent(date);
- List<LandAreaStat> list = new ArrayList<>();
- List<Object[]> 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<CropAreaStat> getCropAreaStat(String district, Integer townId, Date date) {
- Double percent = getPercent(date);
- List<CropAreaStat> list = new ArrayList<>();
- List<Object[]> 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<Land> 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<Land, Long> r() {
- return landRepository;
- }
- }
|