Commit 1f5d6506 by zlr

更新殡葬

parent 966da1ce
...@@ -811,4 +811,6 @@ public class RedisUtils { ...@@ -811,4 +811,6 @@ public class RedisUtils {
log.debug("缓存删除数量:{}个", count); log.debug("缓存删除数量:{}个", count);
log.debug("--------------------------------------------"); log.debug("--------------------------------------------");
} }
} }
...@@ -27,11 +27,15 @@ public class BzStatsAdminController { ...@@ -27,11 +27,15 @@ public class BzStatsAdminController {
public final BzStatsService bzStatsService; public final BzStatsService bzStatsService;
@ApiOperation("统计该区域的殡葬火化量") @ApiOperation("获取区域殡葬火化分析列表")
@PostMapping(value = "/getCremationStats") @PostMapping(value = "/getCremationStatsList")
public ResultVo<Object> getCremationStats(@RequestBody StatsReqVo vo) { public ResultVo<Object> getCremationStatsList(@RequestBody StatsReqVo vo) {
return ResultVo.success(bzStatsService.getCacheCremationStats(vo)); return ResultVo.success(bzStatsService.getCacheCremationStatsList(vo));
} }
@ApiOperation("获取区域火化率占比")
@PostMapping(value = "/getCremationRateStats")
public ResultVo<Object> getCremationRateStats(@RequestBody StatsReqVo vo){
return ResultVo.success(bzStatsService.getCacheCremationRateStats(vo));
}
} }
...@@ -2,6 +2,7 @@ package com.zq.portal.dao; ...@@ -2,6 +2,7 @@ package com.zq.portal.dao;
import com.baomidou.dynamic.datasource.annotation.DS; import com.baomidou.dynamic.datasource.annotation.DS;
import com.zq.common.constant.DBName; import com.zq.common.constant.DBName;
import com.zq.portal.vo.StatsReqVo;
import com.zq.portal.vo.StatsVo; import com.zq.portal.vo.StatsVo;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
...@@ -14,4 +15,14 @@ public interface BzStatsDao { ...@@ -14,4 +15,14 @@ public interface BzStatsDao {
List<StatsVo> getDeathsPerYear(@Param("areaCode") String areaCode); List<StatsVo> getDeathsPerYear(@Param("areaCode") String areaCode);
/**
* 获取区域火化统计
*
* @param vo
* @return
*/
List<StatsVo> getAreaCremationStats(StatsReqVo vo);
StatsVo getCremationRateStats(StatsReqVo vo);
} }
package com.zq.portal.dao;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.zq.common.entity.VBzCremationStats;
import org.springframework.stereotype.Repository;
/**
*火化统计表(VBzCremationStats)表数据库访问层
* @author Administrater
*/
@Repository
public interface VBzCremationStatsDao extends BaseMapper<VBzCremationStats> {
}
...@@ -61,11 +61,6 @@ public abstract class PortalCacheKeys { ...@@ -61,11 +61,6 @@ public abstract class PortalCacheKeys {
return PREFIX + "getAgencyUnderChildStatsList." + vo.getAreaCode() + "." + vo.getYear(); return PREFIX + "getAgencyUnderChildStatsList." + vo.getAreaCode() + "." + vo.getYear();
} }
// 殡葬火化量统计
public static String getCremationStatsKey(StatsReqVo vo) {
return PREFIX + "getCremationStats." + vo.getAreaCode() + "." + vo.getYear();
}
// 残疾等级统计 // 残疾等级统计
public static String getDisabledLevelStatsKey(StatsReqVo vo) { public static String getDisabledLevelStatsKey(StatsReqVo vo) {
return PREFIX + "getDisabledLevelStats." + vo.getAreaCode() + "." + vo.getYear(); return PREFIX + "getDisabledLevelStats." + vo.getAreaCode() + "." + vo.getYear();
...@@ -85,4 +80,19 @@ public abstract class PortalCacheKeys { ...@@ -85,4 +80,19 @@ public abstract class PortalCacheKeys {
public static String getAreaNursingStatsListKey(StatsReqVo vo) { public static String getAreaNursingStatsListKey(StatsReqVo vo) {
return PREFIX + "getAreaNursingStatsList." + vo.getAreaCode() + "." + vo.getYear(); return PREFIX + "getAreaNursingStatsList." + vo.getAreaCode() + "." + vo.getYear();
} }
// 殡葬火化量统计列表
public static String getCremationStatsListKey(StatsReqVo vo) {
return PREFIX + "getCremationStatsList." + vo.getAreaCode() + "." + vo.getYear();
}
// 区域火化率占比
public static String getCremationRateStatsKey(StatsReqVo vo) {
return PREFIX + "getCremationRateStats." + vo.getAreaCode() + "." + vo.getYear();
}
//火化量汇总Key
public static String getCremationStatsKey(StatsReqVo vo) {
return PREFIX + "getCremationStats." + vo.getAreaCode() + "." + vo.getYear();
}
} }
package com.zq.portal.service; package com.zq.portal.service;
import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.NumberUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.zq.common.config.redis.RedisUtils; import com.zq.common.config.redis.RedisUtils;
import com.zq.common.entity.SystemArea; import com.zq.common.entity.SystemArea;
import com.zq.common.entity.VBzCremationStats; import com.zq.common.entity.VBzCremationStats;
import com.zq.common.entity.VChildWelfareStats;
import com.zq.portal.dao.AreaDao; import com.zq.portal.dao.AreaDao;
import com.zq.portal.dao.BzStatsDao; import com.zq.portal.dao.BzStatsDao;
import com.zq.portal.dao.HyStatsDao; import com.zq.portal.dao.VBzCremationStatsDao;
import com.zq.portal.dao.VChildWelfareStatsDao;
import com.zq.portal.manager.PortalCacheKeys; import com.zq.portal.manager.PortalCacheKeys;
import com.zq.portal.vo.StatsReqVo; import com.zq.portal.vo.StatsReqVo;
import com.zq.portal.vo.StatsVo;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.*;
@Service @Service
@RequiredArgsConstructor @RequiredArgsConstructor
public class BzStatsService { public class BzStatsService {
private final BzStatsDao bzStatsDao; private final BzStatsDao bzStatsDao;
// private final VBzCremationStatsDao vBzCremationStatsDao; private final VBzCremationStatsDao vBzCremationStatsDao;
private final AreaDao areaDao; private final AreaDao areaDao;
private final RedisUtils redisUtils; private final RedisUtils redisUtils;
/**
public VBzCremationStats getCacheCremationStats(StatsReqVo vo) { * 汇总数据量
* @param vo
* @return
*/
public VBzCremationStats getCacheCremationStats(StatsReqVo vo){
Object obj = redisUtils.getObj(PortalCacheKeys.getCremationStatsKey(vo)); Object obj = redisUtils.getObj(PortalCacheKeys.getCremationStatsKey(vo));
if (obj != null) { if (obj != null) {
return (VBzCremationStats) obj; return (VBzCremationStats) obj;
...@@ -33,28 +39,116 @@ public class BzStatsService { ...@@ -33,28 +39,116 @@ public class BzStatsService {
} }
/** /**
* 统计该区域的殡葬火化量 * 火化汇总量
*
* @param vo * @param vo
* @return
*/ */
private VBzCremationStats getCremationStats(StatsReqVo vo) { public VBzCremationStats getCremationStats(StatsReqVo vo) {
if (StrUtil.isBlank(vo.getAreaCode())) { if (StrUtil.isBlank(vo.getAreaCode())) {
vo.setAreaCode("450000000000"); vo.setAreaCode("450000000000");
} }
SystemArea systemArea = areaDao.selectById(vo.getAreaCode()); SystemArea systemArea = areaDao.selectById(vo.getAreaCode());
vo.setSubAreaCode(systemArea.subAreaCode()); vo.setSubAreaCode(systemArea.subAreaCode());
VBzCremationStats build = VBzCremationStats.builder() VBzCremationStats build=VBzCremationStats.builder()
.areaCode(systemArea.getCode()) .areaCode(systemArea.getCode())
.areaName(systemArea.getName()) .areaName(systemArea.getName())
.year(vo.getYear()) .year(vo.getYear())
.createTime(DateUtil.date()) .createTime(DateUtil.date())
.build(); .build();
List<StatsVo> sumStats = bzStatsDao.getAreaCremationStats(vo);
Iterator<StatsVo> iterator = sumStats.iterator();
while (iterator.hasNext()) {
StatsVo statsVo = iterator.next();
build.setCremationSum(statsVo.getNum());
}
StatsVo hastats=bzStatsDao.getCremationRateStats(vo);
build.setCremationRate(hastats.getNum());
redisUtils.setObj(PortalCacheKeys.getCremationStatsKey(vo),build);
// 放进数据库 有时间条件的不存库
VBzCremationStats vBzCremationStats = vBzCremationStatsDao.selectOne(Wrappers.lambdaQuery(VBzCremationStats.builder().year(vo.getYear() == null ? 0 : vo.getYear()).areaCode(systemArea.getCode()).createTime(DateUtil.parseDate(DateUtil.today())).build()));
if (vBzCremationStats == null) {
vBzCremationStatsDao.insert(build);
} else {
build.setId(vBzCremationStats.getId());
vBzCremationStatsDao.updateById(build);
}
return build; return build;
}
public Object getCacheCremationStatsList(StatsReqVo vo) {
Object obj = redisUtils.getObj(PortalCacheKeys.getCremationStatsListKey(vo));
if (obj != null) {
return obj;
}
return getCremationStatsList(vo);
}
/**
* 统计该区域的殡葬火化量列表
*
* @param vo
*/
public Object getCremationStatsList(StatsReqVo vo) {
SystemArea systemArea = areaDao.selectById(vo.getAreaCode());
vo.setSubAreaCode(systemArea.subAreaCode());
vo.setSize(SystemArea.getNextLevelLength(vo.getSubAreaCode()));
List<String> cityList = new ArrayList<>();
List<String> numList = new ArrayList<>();
List<StatsVo> statsList =bzStatsDao.getAreaCremationStats(vo);
Iterator<StatsVo> iterator = statsList.iterator();
while (iterator.hasNext()) {
StatsVo statsVo = iterator.next();
SystemArea area = areaDao.selectById(SystemArea.patchZero(statsVo.getCode()));
if (!"0".equals(area.getParentId())) {
statsVo.setName(area.getName());
cityList.add(area.getName());
numList.add(NumberUtil.toStr(statsVo.getNum(), "0"));
} else {
iterator.remove();
}
}
Map<String, Object> returnMap = new HashMap<>();
returnMap.put("cityList", cityList);
returnMap.put("numList", numList);
returnMap.put("statsLst", statsList);
redisUtils.setObj(PortalCacheKeys.getCremationStatsListKey(vo),returnMap);
return returnMap;
} }
/**
* 统计火化率占比
*
* @param vo
* @return
*/
public Object getCacheCremationRateStats(StatsReqVo vo) {
Object obj =redisUtils.getObj(PortalCacheKeys.getCremationRateStatsKey(vo));
if (obj != null) {
return obj;
}
return getCremationRateStats(vo);
}
/**
* 统计火化率占比
*
* @param vo
* @return
*/
public Object getCremationRateStats(StatsReqVo vo) {
return null;
}
} }
...@@ -14,4 +14,24 @@ ...@@ -14,4 +14,24 @@
LIMIT 3 LIMIT 3
</select> </select>
<select id="getAreaCremationStats" resultType="com.zq.portal.vo.StatsVo">
SELECT
LEFT(d.ups, 4) 'code',
COUNT( 1 ) 'num'
FROM
dic_city d
LEFT JOIN fis_cremation_info_sum f ON d.P_ID = f.POPULACE
WHERE 1=1
<if test="subAreaCode != null and subAreaCode != ''">
ANd d.ups LIKE CONCAT (#{subAreaCode},'%')
</if>
AND
LEFT(f.CREMATION_TIME, 4) >= '2017'
GROUP BY LEFT(d.ups, #{size})
</select>
<select id="getCremationRateStats" resultType="com.zq.portal.vo.StatsVo">
</select>
</mapper> </mapper>
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment