| | |
| | | package org.springblade.modules.yw.service.impl; |
| | | |
| | | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | import org.apache.logging.log4j.util.Strings; |
| | | import org.springblade.core.tool.utils.BeanUtil; |
| | | import org.springblade.modules.system.entity.Region; |
| | | import org.springblade.modules.system.service.IRegionService; |
| | | import org.springblade.modules.yw.entity.EmergencySpaceEntity; |
| | | import org.springblade.modules.yw.entity.IndParkInfoEntity; |
| | | import org.springblade.modules.yw.entity.RescueTeamEntity; |
| | | import org.springblade.modules.yw.excel.IndParkInfoExcel; |
| | | import org.springblade.modules.yw.service.*; |
| | | import org.springblade.modules.yw.vo.IndParkInfoVO; |
| | | import org.springblade.modules.yw.mapper.IndParkInfoMapper; |
| | | import org.springblade.modules.yw.service.IIndParkInfoService; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Service; |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import java.util.List; |
| | | import java.util.Objects; |
| | | |
| | | /** |
| | | * 园区基本信息表 服务实现类 |
| | |
| | | @Service |
| | | public class IndParkInfoServiceImpl extends ServiceImpl<IndParkInfoMapper, IndParkInfoEntity> implements IIndParkInfoService { |
| | | |
| | | @Autowired |
| | | private IRegionService regionService; |
| | | |
| | | @Autowired |
| | | private IFirmInfoService firmInfoService; |
| | | |
| | | @Autowired |
| | | private IRescueTeamService rescueTeamService; |
| | | |
| | | @Autowired |
| | | private IRiskSourceService riskSourceService; |
| | | |
| | | @Autowired |
| | | private IProTarService proTarService; |
| | | |
| | | @Autowired |
| | | private IEmergencySpaceService emergencySpaceService; |
| | | |
| | | /** |
| | | * 自定义分页查询 |
| | | * @param page |
| | | * @param indParkInfo |
| | | * @return |
| | | */ |
| | | @Override |
| | | public IPage<IndParkInfoVO> selectIndParkInfoPage(IPage<IndParkInfoVO> page, IndParkInfoVO indParkInfo) { |
| | | return page.setRecords(baseMapper.selectIndParkInfoPage(page, indParkInfo)); |
| | | } |
| | | |
| | | /** |
| | | * 导入园区信息 |
| | | * @param data |
| | | * @param isCovered 是否覆盖 |
| | | * @return |
| | | */ |
| | | @Override |
| | | public String importIndParkInfo(List<IndParkInfoExcel> data, boolean isCovered) { |
| | | for (IndParkInfoExcel parkInfoExcel : data) { |
| | | // 数据转换 |
| | | IndParkInfoEntity indParkInfoEntity = Objects.requireNonNull(BeanUtil.copy(parkInfoExcel, IndParkInfoEntity.class)); |
| | | // 区划转换 |
| | | if (!Strings.isBlank(parkInfoExcel.getAreaCode())) { |
| | | String adCode = shiftResidentResidentAdCode(parkInfoExcel.getAreaCode()); |
| | | // 转换行政区code |
| | | indParkInfoEntity.setAreaCode(adCode); |
| | | } |
| | | // 判断是否已经录入 |
| | | Long id = isSave(indParkInfoEntity); |
| | | if (null!=id){ |
| | | // 更新 |
| | | if (isCovered){ |
| | | indParkInfoEntity.setId(id); |
| | | updateById(indParkInfoEntity); |
| | | continue; |
| | | } |
| | | } |
| | | // 保存 |
| | | boolean save = save(indParkInfoEntity); |
| | | } |
| | | return null; |
| | | } |
| | | |
| | | /** |
| | | * 判断是否已保存 |
| | | * @param indParkInfoEntity |
| | | * @return |
| | | */ |
| | | private Long isSave(IndParkInfoEntity indParkInfoEntity) { |
| | | QueryWrapper<IndParkInfoEntity> wrapper = new QueryWrapper<>(); |
| | | wrapper.eq("name",indParkInfoEntity.getName()).eq("is_deleted",0); |
| | | IndParkInfoEntity one = getOne(wrapper); |
| | | if (null!=one){ |
| | | return one.getId(); |
| | | } |
| | | return null; |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 根据名称转成code |
| | | * |
| | | * @param areaCode 行政区划 |
| | | */ |
| | | public String shiftResidentResidentAdCode(String areaCode) { |
| | | String[] split = areaCode.split("-"); |
| | | // 根据省市县三级查询对应的区县code |
| | | QueryWrapper<Region> wrapper = new QueryWrapper<>(); |
| | | wrapper.eq("province_name", split[0]) |
| | | .eq("city_name", split[1]); |
| | | List<Region> list = regionService.list(wrapper); |
| | | if (list.size() > 0) { |
| | | return list.get(0).getProvinceCode()+","+list.get(0).getCityCode(); |
| | | } |
| | | return ""; |
| | | } |
| | | |
| | | /** |
| | | * 园区基本信息查询(包含企业统计信息) |
| | | * @param indParkInfo |
| | | * @return |
| | | */ |
| | | @Override |
| | | public IndParkInfoVO getDetail(IndParkInfoEntity indParkInfo) { |
| | | // 查询详情信息 |
| | | IndParkInfoVO indParkInfoVO = baseMapper.getDetail(indParkInfo); |
| | | // 查询企业的数量 |
| | | long count = firmInfoService.count(); |
| | | // 设置企业数量 |
| | | indParkInfoVO.setFirmNum((int) count); |
| | | // 设置行政区划 |
| | | setRegionInfo(indParkInfoVO); |
| | | // 设置救援人员数量 |
| | | indParkInfoVO.setRecNum(getRecNum()); |
| | | // 设置应急池容量 |
| | | indParkInfoVO.setEmePool(getEmePool()); |
| | | // 设置风险企业数量 |
| | | indParkInfoVO.setRiskFirmNum(getRiskFirmNum()); |
| | | // 设置保护目标数量 |
| | | indParkInfoVO.setProTarNum(getProTarNum()); |
| | | // 设置应急空间数量 |
| | | indParkInfoVO.setSpaceNum(getSpaceNum()); |
| | | // 返回 |
| | | return indParkInfoVO; |
| | | } |
| | | |
| | | /** |
| | | * 获取应急池容量 |
| | | * @return |
| | | */ |
| | | private String getEmePool() { |
| | | return emergencySpaceService.getEmePool(); |
| | | } |
| | | |
| | | /** |
| | | * 查询应急空间数量 |
| | | * @return |
| | | */ |
| | | private Integer getSpaceNum() { |
| | | QueryWrapper<EmergencySpaceEntity> wrapper = new QueryWrapper<>(); |
| | | wrapper.eq("is_deleted",0); |
| | | return (int)emergencySpaceService.count(wrapper); |
| | | } |
| | | |
| | | /** |
| | | * 查询保护目标数量 |
| | | * @return |
| | | */ |
| | | private Integer getProTarNum() { |
| | | return (int)proTarService.count(); |
| | | } |
| | | |
| | | /** |
| | | * 查询风险企业数量 |
| | | * @return |
| | | */ |
| | | private Integer getRiskFirmNum() { |
| | | return (int)riskSourceService.count(); |
| | | } |
| | | |
| | | /** |
| | | * 获取救援人员数量 |
| | | * @return |
| | | */ |
| | | private Integer getRecNum() { |
| | | QueryWrapper<RescueTeamEntity> wrapper = new QueryWrapper<>(); |
| | | wrapper.eq("type",1); |
| | | long count = rescueTeamService.count(wrapper); |
| | | return (int)count; |
| | | } |
| | | |
| | | /** |
| | | * 设置行政区划 |
| | | * @param indParkInfoVO |
| | | */ |
| | | private void setRegionInfo(IndParkInfoVO indParkInfoVO) { |
| | | QueryWrapper<Region> wrapper = new QueryWrapper<>(); |
| | | wrapper.eq("ancestors","000000000000,"+indParkInfoVO.getAreaCode()); |
| | | List<Region> list = regionService.list(wrapper); |
| | | if (list.size()>0){ |
| | | Region region = list.get(0); |
| | | indParkInfoVO.setRegionName(region.getProvinceName()+"-"+region.getCityName()); |
| | | } |
| | | } |
| | | } |