Commit 4a5bec58 by 袁伟铭

修改 添加App聚合搜索接口

parent d26f4ecd
......@@ -46,4 +46,7 @@ public interface PortalFeign {
@PostMapping("/stats/getAppMapStats")
ResultVo getAppMapStats(@RequestBody Map<String, Object> paramsMap);
@PostMapping("/stats/gatherSearch")
ResultVo gatherSearch(@RequestBody Map<String, Object> paramsMap);
}
......@@ -139,4 +139,12 @@ public interface IApiLogic extends IApiCommon {
* @return
*/
ApiResp getAppMapStats(ApiForm form);
/**
* 汇总搜索
*
* @param form
* @return
*/
ApiResp gatherSearch(ApiForm form);
}
......@@ -96,4 +96,9 @@ public class ApiV100Logic extends BaseApiLogic implements IApiLogic {
public ApiResp getAppMapStats(ApiForm form) {
return ApiUtils.toApiResp(form, portalFeign.getAppMapStats(form.getParamsMap()));
}
@Override
public ApiResp gatherSearch(ApiForm form) {
return ApiUtils.toApiResp(form, portalFeign.gatherSearch(form.getParamsMap()));
}
}
......@@ -33,7 +33,7 @@ public class Swagger implements WebMvcConfigurer {
public Docket api() {
return new Docket(DocumentationType.SWAGGER_2)
.groupName("admin")
// .enable(!"product".equals(profile)) //生产环境关闭
.enable(!"product".equals(profile)) //生产环境关闭
.select()
.apis(RequestHandlerSelectors.basePackage("com.zq.portal.controller.admin"))
.paths(PathSelectors.any())
......
package com.zq.portal.controller.app;
import com.zq.common.config.redis.RedisUtils;
import com.zq.common.vo.ResultVo;
import com.zq.portal.service.BzStatsService;
import com.zq.portal.service.HyStatsService;
import com.zq.portal.vo.StatsReqVo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
......@@ -15,6 +18,22 @@ import org.springframework.web.bind.annotation.RestController;
public class BzStatsController {
public final BzStatsService bzStatsService;
public final RedisUtils redisUtils;
@ApiOperation("统计该区域火化量和火化率")
@PostMapping(value = "/getCremationStats")
public ResultVo<Object> getCremationStats(@RequestBody StatsReqVo vo) {
return ResultVo.success(bzStatsService.getCacheCremationStats(vo));
}
@ApiOperation("获取区域殡葬火化分析列表")
@PostMapping(value = "/getCremationStatsList")
public ResultVo<Object> getCremationStatsList(@RequestBody StatsReqVo vo) {
return ResultVo.success(bzStatsService.getCacheCremationStatsList(vo));
}
@ApiOperation("获取区域火化率占比")
@PostMapping(value = "/getCremationRateStats")
public ResultVo<Object> getCremationRateStats(@RequestBody StatsReqVo vo) {
return ResultVo.success(bzStatsService.getCacheCremationRateStats(vo));
}
}
......@@ -19,10 +19,16 @@ public class StatsController {
private final StatsService statsService;
@ApiOperation("首页地")
@ApiOperation("首页地")
@PostMapping(value = "/getAppMapStats")
public ResultVo getAppMapStats(@RequestBody StatsReqVo vo) {
return ResultVo.success(statsService.getCacheAppMapStats(vo));
}
@ApiOperation("汇总搜索")
@PostMapping(value = "/gatherSearch")
public ResultVo gatherSearch(@RequestBody StatsReqVo vo) {
return ResultVo.success(statsService.gatherSearch(vo));
}
}
......@@ -4,7 +4,6 @@ import com.baomidou.dynamic.datasource.annotation.DS;
import com.zq.common.constant.DBName;
import com.zq.portal.vo.StatsReqVo;
import com.zq.portal.vo.StatsVo;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;
import java.util.List;
......@@ -13,8 +12,6 @@ import java.util.List;
@Repository
public interface BzStatsDao {
List<StatsVo> getDeathsPerYear(@Param("areaCode") String areaCode);
/**
* 获取区域火化统计
*
......@@ -25,8 +22,17 @@ public interface BzStatsDao {
/**
* 获取火化率
*
* @param vo
* @return
*/
StatsVo getCremationRateStats(StatsReqVo vo);
/**
* 获取近三年死亡统计
*
* @param vo
* @return
*/
List<StatsVo> getThreeYearDeadStats(StatsReqVo vo);
}
......@@ -91,7 +91,7 @@ public abstract class PortalCacheKeys {
return PREFIX + "getCremationRateStats." + vo.getAreaCode() + "." + vo.getYear();
}
//火化量汇总Key
// 火化量汇总Key
public static String getCremationStatsKey(StatsReqVo vo) {
return PREFIX + "getCremationStats." + vo.getAreaCode() + "." + vo.getYear();
}
......@@ -100,4 +100,9 @@ public abstract class PortalCacheKeys {
public static String getAppMapStatsKey(StatsReqVo vo) {
return PREFIX + "getAppMapStats." + vo.getAreaCode();
}
// 聚合搜索
public static String gatherSearchKey(StatsReqVo vo) {
return PREFIX + "gatherSearch." + vo.getKeyword();
}
}
......@@ -14,6 +14,7 @@ import com.zq.portal.vo.StatsReqVo;
import com.zq.portal.vo.StatsVo;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import java.util.*;
@Service
......@@ -26,10 +27,11 @@ public class BzStatsService {
/**
* 汇总数据量
*
* @param vo
* @return
*/
public VBzCremationStats getCacheCremationStats(StatsReqVo vo){
public VBzCremationStats getCacheCremationStats(StatsReqVo vo) {
Object obj = redisUtils.getObj(PortalCacheKeys.getCremationStatsKey(vo));
if (obj != null) {
return (VBzCremationStats) obj;
......@@ -39,6 +41,7 @@ public class BzStatsService {
/**
* 火化汇总量
*
* @param vo
* @return
*/
......@@ -48,24 +51,24 @@ public class BzStatsService {
}
SystemArea systemArea = areaDao.selectById(vo.getAreaCode());
vo.setSubAreaCode(systemArea.subAreaCode());
vo.setSize(vo.getSubAreaCode().length());
VBzCremationStats build=VBzCremationStats.builder()
VBzCremationStats build = VBzCremationStats.builder()
.areaCode(systemArea.getCode())
.areaName(systemArea.getName())
.year(vo.getYear())
.cremationSum(0)
.createTime(DateUtil.date())
.build();
List<StatsVo> sumStats = bzStatsDao.getAreaCremationStats(vo);
Iterator<StatsVo> iterator = sumStats.iterator();
while (iterator.hasNext()) {
StatsVo statsVo = iterator.next();
build.setCremationSum(statsVo.getNum());
for (StatsVo statsVo : sumStats) {
build.setCremationSum(build.getCremationSum() + statsVo.getNum());
}
StatsVo hastats=bzStatsDao.getCremationRateStats(vo);
StatsVo hastats = bzStatsDao.getCremationRateStats(vo);
build.setCremationRate(hastats.getNum());
redisUtils.setObj(PortalCacheKeys.getCremationStatsKey(vo),build);
redisUtils.setObj(PortalCacheKeys.getCremationStatsKey(vo), build);
return build;
}
......@@ -74,7 +77,7 @@ public class BzStatsService {
public Object getCacheCremationStatsList(StatsReqVo vo) {
Object obj = redisUtils.getObj(PortalCacheKeys.getCremationStatsListKey(vo));
if (obj != null) {
return obj;
return obj;
}
return getCremationStatsList(vo);
}
......@@ -91,7 +94,7 @@ public class BzStatsService {
List<String> cityList = new ArrayList<>();
List<String> numList = new ArrayList<>();
List<StatsVo> statsList =bzStatsDao.getAreaCremationStats(vo);
List<StatsVo> statsList = bzStatsDao.getAreaCremationStats(vo);
Iterator<StatsVo> iterator = statsList.iterator();
while (iterator.hasNext()) {
......@@ -109,7 +112,7 @@ public class BzStatsService {
returnMap.put("cityList", cityList);
returnMap.put("numList", numList);
returnMap.put("statsLst", statsList);
redisUtils.setObj(PortalCacheKeys.getCremationStatsListKey(vo),returnMap);
redisUtils.setObj(PortalCacheKeys.getCremationStatsListKey(vo), returnMap);
return returnMap;
}
......@@ -121,7 +124,7 @@ public class BzStatsService {
* @return
*/
public Object getCacheCremationRateStats(StatsReqVo vo) {
Object obj =redisUtils.getObj(PortalCacheKeys.getCremationRateStatsKey(vo));
Object obj = redisUtils.getObj(PortalCacheKeys.getCremationRateStatsKey(vo));
if (obj != null) {
return obj;
}
......@@ -138,17 +141,15 @@ public class BzStatsService {
List<VBzCremationStats> list = (List<VBzCremationStats>) getCremationStatsList(vo);
List<Map<String, Object>> returnData = new ArrayList<>();
for (VBzCremationStats vBzCremationStats:list){
for (VBzCremationStats vBzCremationStats : list) {
Map<String, Object> data = new HashMap<>();
data.put("name",vBzCremationStats.getAreaName());
data.put("value",vBzCremationStats.getCremationSum());
data.put("name", vBzCremationStats.getAreaName());
data.put("value", vBzCremationStats.getCremationSum());
returnData.add(data);
}
redisUtils.setObj(PortalCacheKeys.getCremationRateStatsKey(vo),returnData);
redisUtils.setObj(PortalCacheKeys.getCremationRateStatsKey(vo), returnData);
return returnData;
}
}
......@@ -3,9 +3,7 @@ package com.zq.portal.service;
import cn.hutool.core.util.NumberUtil;
import com.zq.common.config.redis.RedisUtils;
import com.zq.common.entity.SystemArea;
import com.zq.portal.dao.AreaDao;
import com.zq.portal.dao.HyStatsDao;
import com.zq.portal.dao.ShzzStatsDao;
import com.zq.portal.dao.*;
import com.zq.portal.manager.PortalCacheKeys;
import com.zq.portal.vo.StatsReqVo;
import com.zq.portal.vo.StatsVo;
......@@ -13,12 +11,15 @@ import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import java.util.*;
import java.util.concurrent.TimeUnit;
@Service
@RequiredArgsConstructor
public class StatsService {
private final HyStatsDao hyStatsDao;
private final YlStatsDao ylStatsDao;
private final BzStatsDao bzStatsDao;
private final ShzzStatsDao shzzStatsDao;
private final AreaDao areaDao;
private final RedisUtils redisUtils;
......@@ -45,8 +46,7 @@ public class StatsService {
* @return
*/
public Object getAppMapStats(StatsReqVo vo) {
SystemArea systemArea = areaDao.selectById(vo.getAreaCode());
SystemArea systemArea = areaDao.selectById(SystemArea.patchZero(vo.getAreaCode()));
vo.setSubAreaCode(systemArea.subAreaCode());
List<Map<String, Object>> returnData = new ArrayList<>();
......@@ -56,7 +56,7 @@ public class StatsService {
List<StatsVo> fivesYearMarriageLine = hyStatsDao.getFivesYearMarriageLine(vo);
vo.setType(null);// 用完设置为null不影响后台的统计
Collections.reverse(fivesYearMarriageLine);
Map<String, Object> hy = getMapStatsObj(fivesYearMarriageLine, "婚姻");
Map<String, Object> hy = getMapStatsObj(fivesYearMarriageLine, "结婚数据");
returnData.add(hy);
// 社会组织
......@@ -65,6 +65,12 @@ public class StatsService {
Map<String, Object> shzz = getMapStatsObj(soorganThreeYearStats, "社会组织");
returnData.add(shzz);
// 殡葬信息
List<StatsVo> threeYearDeadStats = bzStatsDao.getThreeYearDeadStats(vo);
Collections.reverse(threeYearDeadStats);
Map<String, Object> bz = getMapStatsObj(threeYearDeadStats, "死亡人口");
returnData.add(bz);
redisUtils.setObj(PortalCacheKeys.getAppMapStatsKey(vo), returnData);
return returnData;
}
......@@ -93,4 +99,25 @@ public class StatsService {
}
return mapObj;
}
/**
* App 搜索
*
* @param vo
* @return
*/
public Object gatherSearch(StatsReqVo vo) {
Object obj = redisUtils.getObj(PortalCacheKeys.gatherSearchKey(vo));
if (obj != null) {
return obj;
}
Map<Object, Object> returnMap = new HashMap<>();
List<Map<String, Object>> search = hyStatsDao.search(vo.getKeyword());
returnMap.put("marriage", search);
redisUtils.setObj(PortalCacheKeys.gatherSearchKey(vo), returnMap, 1L, TimeUnit.DAYS);
return returnMap;
}
}
......@@ -2,40 +2,47 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.zq.portal.dao.BzStatsDao">
<select id="getDeathsPerYear" resultType="com.zq.portal.vo.StatsVo">
<select id="getAreaCremationStats" resultType="com.zq.portal.vo.StatsVo">
SELECT
COUNT(1) 'num', LEFT(i.DEATH_DATE,4) 'year'
LEFT(d.ups, 4) 'code',
COUNT( 1 ) 'num'
FROM
fis_scatter_dead_info i
WHERE i.ID_CARD LIKE CONCAT(#{areaCode}, '%')
GROUP BY
LEFT(i.DEATH_DATE,4)
ORDER BY LEFT(i.DEATH_DATE,4) DESC
LIMIT 3
</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
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 ROUND(hhsum.c1/rksum.c2*100)
FROM
(SELECT count(1)as c1 FROM fis_cremation_info_sum) hhsum,
(SELECT count(1)as c2 FROM fis_dead_info)rksum
SELECT ROUND(hhsum.c1 / rksum.c2 * 100)
FROM (SELECT count(1) as c1 FROM fis_cremation_info_sum) hhsum,
(SELECT count(1) as c2 FROM fis_dead_info) rksum
</select>
<!--近三年死亡人口-->
<select id="getThreeYearDeadStats" resultType="com.zq.portal.vo.StatsVo">
SELECT
LEFT ( di.CREATE_TIME, 4 ) 'year',
COUNT( 1 ) 'num'
FROM
`fis_dead_info` di LEFT JOIN dic_city dc ON di.POPULACE = dc.P_ID
WHERE 1=1
<if test="year != null">
AND LEFT ( di.CREATE_TIME, 4 ) = #{year}
</if>
<if test="subAreaCode != null and subAreaCode != ''">
AND dc.UPS LIKE CONCAT(#{subAreaCode}, '%' )
</if>
GROUP BY
LEFT ( di.CREATE_TIME, 4 )
ORDER BY
LEFT ( di.CREATE_TIME, 4 ) DESC
LIMIT 3
</select>
</mapper>
......@@ -117,7 +117,7 @@
</select>
<select id="search" resultType="java.util.Map">
SELECT AIAP0005 'manName', AIAP0006 'girl', AIAP0013 'manIdCard', AIAP0014 'girlIdCard', AIAP0015 'manNationality', AIAP0016 'girlNationality', AIAP0023 'manState', AIAP0024 'girlState', AIAP0027 'manDomicile', AIAP0028 'girlDomicile', AIAX0035 'manContact', AIAX0036 'girlContact', AIAX0059 'archiveYear', AIAX0048 'registerDate'
SELECT AIAX0001 'type', AIAP0005 'manName', AIAP0006 'girl', AIAP0013 'manIdCard', AIAP0014 'girlIdCard', AIAP0015 'manNationality', AIAP0016 'girlNationality', AIAP0023 'manState', AIAP0024 'girlState', AIAP0027 'manDomicile', AIAP0028 'girlDomicile', AIAX0035 'manContact', AIAX0036 'girlContact', AIAX0059 'archiveYear', AIAX0048 'registerDate'
FROM `mrcase`
WHERE AIAP0005 = #{keyword}
OR AIAP0006 = #{keyword}
......
......@@ -20,4 +20,23 @@
GROUP BY LEFT(AHAE0033, #{size})
</select>
<!--获取区域进三年养老信息-->
<select id="getAreaNursingThreeYearStats" resultType="com.zq.portal.vo.StatsVo">
SELECT
LEFT(AHAE0033, #{size}) 'code',
COUNT( 1 ) 'num'
FROM `hdef1`
WHERE 1=1
<if test="subAreaCode != null and subAreaCode != ''">
AND AHAE0033 LIKE CONCAT(#{subAreaCode},'%')
</if>
<if test="year != null">
AND DATE_FORMAT(AXBE0015, "%Y") = #{year}
</if>
<if test="type != null">
AND AHAE0043 = #{type}
</if>
GROUP BY LEFT(AHAE0033, #{size})
</select>
</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