123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252 |
- package com.nokia.financeapi.service.house;
- import com.google.gson.Gson;
- import com.google.gson.reflect.TypeToken;
- import com.nokia.financeapi.common.R;
- import com.nokia.financeapi.dao.house.AreaDao;
- import com.nokia.financeapi.dao.house.HouseResourceMapMapper;
- import com.nokia.financeapi.pojo.dto.GetBuildingAreaStatDto;
- import com.nokia.financeapi.pojo.dto.GetBuildingMapDto;
- import com.nokia.financeapi.pojo.dto.GetBuildingOptionsDto;
- import com.nokia.financeapi.pojo.dto.GetBuildingRepairStatDto;
- import com.nokia.financeapi.pojo.dto.GetHouseNoticeDto;
- import com.nokia.financeapi.pojo.dto.GetLandBuildingStatDto;
- import com.nokia.financeapi.pojo.po.AreaPo;
- import com.nokia.financeapi.pojo.vo.GetBuildingAreaStatVo;
- import com.nokia.financeapi.pojo.vo.GetBuildingMapVo;
- import com.nokia.financeapi.pojo.vo.GetBuildingOptionsVo;
- import com.nokia.financeapi.pojo.vo.GetBuildingRepairStatVo;
- import com.nokia.financeapi.pojo.vo.GetHouseNoticeVo;
- import com.nokia.financeapi.pojo.vo.GetLandBuildingStatVo;
- import com.nokia.financeapi.pojo.vo.GetRentOutStatVo;
- import com.nokia.financeapi.pojo.vo.TreeAreaVo;
- import com.nokia.financeapi.service.common.file.FileService;
- import org.springframework.stereotype.Service;
- import org.springframework.util.StringUtils;
- import javax.validation.Valid;
- import java.time.LocalDate;
- import java.time.format.DateTimeFormatter;
- import java.util.ArrayList;
- import java.util.HashMap;
- import java.util.List;
- import java.util.Map;
- @Service
- public class HouseResourceMapService {
- private final HouseResourceMapMapper houseResourceMapMapper;
- private final AreaDao areaDao;
- private final FileService fileService;
- public HouseResourceMapService(HouseResourceMapMapper houseResourceMapMapper, AreaDao areaDao, FileService fileService) {
- this.houseResourceMapMapper = houseResourceMapMapper;
- this.areaDao = areaDao;
- this.fileService = fileService;
- }
- public R<GetBuildingAreaStatVo> getBuildingAreaStat(GetBuildingAreaStatDto dto) {
- GetBuildingAreaStatVo vo = houseResourceMapMapper.getBuildingAreaStat(dto);
- return R.ok(vo);
- }
- public R<List<GetLandBuildingStatVo>> getLandBuildingStat(GetLandBuildingStatDto dto) {
- if (StringUtils.hasText(dto.getCity())) {
- List<GetLandBuildingStatVo> vo = houseResourceMapMapper.getDistrictLandBuildingStat(dto);
- return R.ok(vo);
- }
- List<GetLandBuildingStatVo> vo = houseResourceMapMapper.getCityLandBuildingStat();
- return R.ok(vo);
- }
- public R<TreeAreaVo> treeArea() {
- // 查询所有地区
- List<AreaPo> areas = areaDao.getAll();
- Map<Integer, List<AreaPo>> parentMap = getAreaParentMap(areas);
- // 地市列表
- List<AreaPo> cityList = parentMap.get(130000);
- TreeAreaVo vo = new TreeAreaVo();
- vo.setLabel("河北省");
- vo.setValue(130000);
- List<TreeAreaVo> cityVoList = new ArrayList<>();
- vo.setChildren(cityVoList);
- for (AreaPo tt : cityList) {
- List<TreeAreaVo> districtVoList = new ArrayList<>();
- TreeAreaVo cityVo = new TreeAreaVo();
- cityVo.setLabel(tt.getAreaName());
- cityVo.setValue(tt.getAreaId());
- cityVo.setChildren(districtVoList);
- cityVoList.add(cityVo);
- // 区县列表
- List<AreaPo> districtList = parentMap.get(tt.getAreaId());
- for (AreaPo ttt : districtList) {
- TreeAreaVo districtVo = new TreeAreaVo();
- districtVo.setLabel(ttt.getAreaName());
- districtVo.setValue(ttt.getAreaId());
- districtVoList.add(districtVo);
- }
- }
- return R.ok(vo);
- }
- /**
- * 得到地区父地图
- *
- * @param areas 区域
- */
- private Map<Integer, List<AreaPo>> getAreaParentMap(List<AreaPo> areas) {
- Map<Integer, List<AreaPo>> parentMap = new HashMap<>();
- for (AreaPo t : areas) {
- parentMap.putIfAbsent(t.getParentId(), new ArrayList<>());
- parentMap.get(t.getParentId()).add(t);
- }
- return parentMap;
- }
- public R<List<GetBuildingMapVo>> getBuildingMap(GetBuildingMapDto dto) {
- Integer endDate = dto.getEndDate();
- // 账期为空则取最新的账期
- if (dto.getEndDate() == null) {
- endDate = houseResourceMapMapper.getBuildingMonthMaxDate();
- }
- if (endDate == null) {
- return R.ok();
- }
- dto.setEndDate(endDate);
- LocalDate endLocalDate = LocalDate.parse(endDate + "01", DateTimeFormatter.ofPattern("yyyyMMdd"));
- LocalDate startLocalDate = endLocalDate.withDayOfYear(1);
- Integer startDate = Integer.valueOf(startLocalDate.format(DateTimeFormatter.ofPattern("yyyyMM")));
- dto.setStartDate(startDate);
- // 坐标为空根据区县获取建筑
- if (dto.getLeftLng() == null || dto.getRightLng() == null || dto.getLeftLat() == null || dto.getRightLat() == null) {
- List<GetBuildingMapVo> vo = houseResourceMapMapper.getBuildingByDistrict(dto);
- return R.ok(vo);
- }
- // 查询坐标范围内的建筑
- List<GetBuildingMapVo> vo = houseResourceMapMapper.getBuildingByCoordinate(dto);
- vo.forEach(t -> {
- if (StringUtils.hasText(t.getBuildingImg())) {
- t.setBuildingImg(fileService.getBucket() + t.getBuildingImg());
- }
- });
- return R.ok(vo);
- }
- public R<List<GetBuildingRepairStatVo>> getBuildingRepairStat(@Valid GetBuildingRepairStatDto dto) {
- if (StringUtils. hasText(dto.getCity())) {
- List<GetBuildingRepairStatVo> vo = houseResourceMapMapper.getDistrictRepairStat(dto);
- return R.ok(vo);
- }
- List<GetBuildingRepairStatVo> vo = houseResourceMapMapper.getCityRepairStat();
- return R.ok(vo);
- }
- public R<List<GetHouseNoticeVo>> getNotice(GetHouseNoticeDto dto) {
- if (!StringUtils.hasText(dto.getCity())) {
- dto.setCity("全省");
- }
- List<GetHouseNoticeVo> vo = houseResourceMapMapper.getNotice(dto);
- return R.ok(vo);
- }
- public R<List<GetRentOutStatVo>> getRentOutStat() {
- String s = """
- [
- {
- "unit": "石家庄",
- "income": "1058.74",
- "finishingRate": 57.00
- },
- {
- "unit": "唐山",
- "income": "1214.61",
- "finishingRate": "55.30"
- },
- {
- "unit": "秦皇岛",
- "income": "402.7",
- "finishingRate": "63.70"
- },
- {
- "unit": "邯郸",
- "income": "508.25",
- "finishingRate": "52.20"
- },
- {
- "unit": "邢台",
- "income": "441.54",
- "finishingRate": "57.70"
- },
- {
- "unit": "保定",
- "income": "1361.7",
- "finishingRate": "68.70"
- },
- {
- "unit": "张家口",
- "income": "534.46",
- "finishingRate": "45.40"
- },
- {
- "unit": "承德",
- "income": "480.68",
- "finishingRate": "49.40"
- },
- {
- "unit": "廊坊",
- "income": "490.37",
- "finishingRate": "53.00"
- },
- {
- "unit": "沧州",
- "income": "1008.13",
- "finishingRate": "54.20"
- },
- {
- "unit": "衡水",
- "income": "368.94",
- "finishingRate": "52.60"
- },
- {
- "unit": "雄安",
- "income": "28.52",
- "finishingRate": "66.20"
- },
- {
- "unit": "传输局",
- "income": "269.96",
- "finishingRate": "52.10"
- },
- {
- "unit": "省本部",
- "income": "1044.94",
- "finishingRate": "62.10"
- }
- ]
- """;
- return R.ok(new Gson().fromJson(s, new TypeToken<List<GetRentOutStatVo>>() {
- }.getType()));
- }
- public R<List<GetBuildingOptionsVo>> getBuildingOptions(GetBuildingOptionsDto dto) {
- Integer endDate = dto.getEndDate();
- // 账期为空则取最新的账期
- if (dto.getEndDate() == null) {
- endDate = houseResourceMapMapper.getBuildingMonthMaxDate();
- }
- if (endDate == null) {
- return R.ok();
- }
- dto.setEndDate(endDate);
- LocalDate endLocalDate = LocalDate.parse(endDate + "01", DateTimeFormatter.ofPattern("yyyyMMdd"));
- LocalDate startLocalDate = endLocalDate.withDayOfYear(1);
- Integer startDate = Integer.valueOf(startLocalDate.format(DateTimeFormatter.ofPattern("yyyyMM")));
- dto.setStartDate(startDate);
- List<GetBuildingOptionsVo> vo = houseResourceMapMapper.getBuildingOptions(dto);
- vo.forEach(t -> {
- if (StringUtils.hasText(t.getBuildingImg())) {
- t.setBuildingImg(fileService.getBucket() + t.getBuildingImg());
- }
- });
- return R.ok(vo);
- }
- }
|