Commit 167ff4ca by 袁伟铭

新增社会组织和儿童福利院的统计

parent b880f187
...@@ -17,6 +17,9 @@ public interface PortalFeign { ...@@ -17,6 +17,9 @@ public interface PortalFeign {
@PostMapping("/stats/getAreaUnderMarriageStatsList") @PostMapping("/stats/getAreaUnderMarriageStatsList")
ResultVo getAreaUnderMarriageStatsList(@RequestBody Map<String, Object> paramsMap); ResultVo getAreaUnderMarriageStatsList(@RequestBody Map<String, Object> paramsMap);
@PostMapping("/stats/getFivesYearMarriageLine")
ResultVo getFivesYearMarriageLine(@RequestBody Map<String, Object> paramsMap);
@GetMapping("/area/getChildAreaList") @GetMapping("/area/getChildAreaList")
ResultVo getChildAreaList(@RequestParam String areaCode); ResultVo getChildAreaList(@RequestParam String areaCode);
......
...@@ -61,6 +61,14 @@ public interface IApiLogic extends IApiCommon { ...@@ -61,6 +61,14 @@ public interface IApiLogic extends IApiCommon {
ApiResp getAreaUnderMarriageStatsList(ApiForm form); ApiResp getAreaUnderMarriageStatsList(ApiForm form);
/** /**
* 获取近5年婚姻走势
*
* @param form
* @return
*/
ApiResp getFivesYearMarriageLine(ApiForm form);
/**
* 获取子区域列表 * 获取子区域列表
* *
* @param form * @param form
......
...@@ -48,6 +48,11 @@ public class ApiV100Logic extends BaseApiLogic implements IApiLogic { ...@@ -48,6 +48,11 @@ public class ApiV100Logic extends BaseApiLogic implements IApiLogic {
} }
@Override @Override
public ApiResp getFivesYearMarriageLine(ApiForm form) {
return ApiUtils.toApiResp(form, portalFeign.getFivesYearMarriageLine(form.getParamsMap()));
}
@Override
public ApiResp getChildAreaList(ApiForm form) { public ApiResp getChildAreaList(ApiForm form) {
return ApiUtils.toApiResp(form, portalFeign.getChildAreaList(form.get("areaCode"))); return ApiUtils.toApiResp(form, portalFeign.getChildAreaList(form.get("areaCode")));
} }
......
package com.zq.common.constant; package com.zq.common.constant;
public class DBName { public class DBName {
// mz_big_data
public final static String MASTER = "master"; public final static String MASTER = "master";
// 殡葬
public final static String GXBZ = "gxbz"; public final static String GXBZ = "gxbz";
// 残疾
public final static String GXCJ = "gxcj"; public final static String GXCJ = "gxcj";
// 低保
public final static String GXDB = "gxdb"; public final static String GXDB = "gxdb";
// 婚姻
public final static String GXHY = "gxhy"; public final static String GXHY = "gxhy";
// 社会组织
public final static String GXSHZZ = "gxshzz"; public final static String GXSHZZ = "gxshzz";
// 儿童
public final static String GXET = "gxet";
// 养老
public final static String GXYL = "gxyl";
} }
package com.zq.common.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.Date;
/**
* 儿童福利机构统计表(VChildWelfareStats)实体类
*
* @author makejava
* @since 2021-06-25 18:18:35
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
@TableName(value = "v_child_welfare_stats")
public class VChildWelfareStats {
/**
* id
*/
@TableId(type = IdType.AUTO)
private Long id;
/**
* 区域码
*/
@ApiModelProperty("区域码")
private String areaCode;
/**
* 区域名
*/
@ApiModelProperty("区域名")
private String areaName;
/**
* 年份
*/
@ApiModelProperty("年份")
private Integer year;
/**
* 机构数量
*/
@ApiModelProperty("机构数量")
private Integer agencyNum;
/**
* 收养儿童数量
*/
@ApiModelProperty("收养儿童数量")
private Integer childNum;
/**
* 日期
*/
@ApiModelProperty("日期")
private Date createTime;
}
...@@ -40,6 +40,12 @@ public class VMarriageStats { ...@@ -40,6 +40,12 @@ public class VMarriageStats {
private String areaName; private String areaName;
/** /**
* 年份
*/
@ApiModelProperty("年份")
private Integer year;
/**
* 结婚人数 * 结婚人数
*/ */
@ApiModelProperty("结婚人数") @ApiModelProperty("结婚人数")
......
package com.zq.common.entity;
import java.util.Date;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModelProperty;
import lombok.*;
/**
* (VSoorganStats)实体类
*
* @author makejava
* @since 2021-06-25 17:02:32
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
@TableName(value = "v_soorgan_stats")
public class VSoorganStats {
/**
* id
*/
@TableId(type = IdType.AUTO)
private Long id;
/**
* 区域码
*/
@ApiModelProperty("区域码")
private String areaCode;
/**
* 区域名
*/
@ApiModelProperty("区域名")
private String areaName;
/**
* 年份
*/
@ApiModelProperty("年份")
private Integer year;
/**
* 数量
*/
@ApiModelProperty("数量")
private Integer totalNum;
/**
* 社团数量
*/
@ApiModelProperty("社团数量")
private Integer leagueNum;
/**
* 民办非企业单位
*/
@ApiModelProperty("民办非企业单位")
private Integer minFeiNum;
/**
* 基金会
*/
@ApiModelProperty("基金会")
private Integer foundationNum;
/**
* 日期
*/
@ApiModelProperty("日期")
private Date createTime;
}
...@@ -35,9 +35,15 @@ public class HyStatsAdminController { ...@@ -35,9 +35,15 @@ public class HyStatsAdminController {
} }
@ApiOperation("获取近5年结婚离婚走势") @ApiOperation("获取近5年结婚离婚走势")
@PostMapping(value = "/getMarryPerYear") @PostMapping(value = "/getFivesYearMarriageLine")
public ResultVo getMarryPerYear(@RequestBody StatsReqVo vo) { public ResultVo FivesYearMarriageLine(@RequestBody StatsReqVo vo) {
return ResultVo.success(hyStatsService.getCacheMarryPerYear(vo)); return ResultVo.success(hyStatsService.getCacheFivesYearMarriageLine(vo));
}
@ApiOperation("获取月结婚离婚统计折线")
@PostMapping(value = "/getMonthMarriageLine")
public ResultVo getMonthMarriageLine(@RequestBody StatsReqVo vo) {
return ResultVo.success(hyStatsService.getCacheMonthMarriageLine(vo));
} }
// @ApiOperation("获取地区结婚离婚人数列表") // @ApiOperation("获取地区结婚离婚人数列表")
......
package com.zq.portal.controller.app;
import com.zq.common.vo.ResultVo;
import com.zq.portal.service.EtStatsService;
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;
@Api(tags = "儿童统计相关接口")
@RequiredArgsConstructor
@RestController
@RequestMapping(value = "/portal/app/stats")
public class EtStatsController {
public final EtStatsService etStatsService;
@ApiOperation("儿童机构福利统计列表")
@PostMapping(value = "/getEtAgencyWelfareStatsList")
public ResultVo getEtAgencyWelfareStatsList(@RequestBody StatsReqVo vo) {
return ResultVo.success(etStatsService.getCacheAgencyChildStatsList(vo));
}
}
...@@ -35,9 +35,9 @@ public class HyStatsController { ...@@ -35,9 +35,9 @@ public class HyStatsController {
} }
@ApiOperation("获取近5年结婚离婚走势") @ApiOperation("获取近5年结婚离婚走势")
@PostMapping(value = "/getMarryPerYear") @PostMapping(value = "/getFivesYearMarriageLine")
public ResultVo getMarryPerYear(@RequestBody StatsReqVo vo) { public ResultVo getFivesYearMarriageLine(@RequestBody StatsReqVo vo) {
return ResultVo.success(hyStatsService.getCacheMarryPerYear(vo)); return ResultVo.success(hyStatsService.getCacheFivesYearMarriageLine(vo));
} }
} }
package com.zq.portal.controller.app; package com.zq.portal.controller.app;
import com.zq.common.vo.ResultVo;
import com.zq.portal.service.ShzzStatsService; import com.zq.portal.service.ShzzStatsService;
import com.zq.portal.vo.StatsReqVo;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor; 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.RequestMapping;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
...@@ -14,4 +19,23 @@ public class ShzzStatsController { ...@@ -14,4 +19,23 @@ public class ShzzStatsController {
public final ShzzStatsService shzzStatsService; public final ShzzStatsService shzzStatsService;
@ApiOperation("获取社会机构统计")
@PostMapping(value = "/getSoorganStats")
public ResultVo getSoorganStats(@RequestBody StatsReqVo vo) {
return ResultVo.success(shzzStatsService.getCacheSoorganStats(vo));
}
@ApiOperation("获取地区下面社会机构统计列表")
@PostMapping(value = "/getAreaUnderSoorganStatsList")
public ResultVo getAreaUnderSoorganStatsList(@RequestBody StatsReqVo vo) {
return ResultVo.success(shzzStatsService.getCacheAreaUnderSoorganStatsList(vo));
}
@ApiOperation("获取社会机构区域占比统计")
@PostMapping(value = "/getCachePercentageStats")
public ResultVo getCachePercentageStats(@RequestBody StatsReqVo vo) {
return ResultVo.success(shzzStatsService.getCachePercentageStats(vo));
}
} }
package com.zq.portal.controller.app;
import com.zq.portal.service.YlStatsService;
import io.swagger.annotations.Api;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@Api(tags = "养老统计相关接口")
@RequiredArgsConstructor
@RestController
@RequestMapping(value = "/portal/app/stats")
public class YlStatsController {
public final YlStatsService ylStatsService;
}
package com.zq.portal.dao;
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.springframework.stereotype.Repository;
@DS(DBName.GXET)
@Repository
public interface EtStatsDao {
/**
* 统计区域下的福利院数量
*
* @param vo
* @return
*/
StatsVo getAreaAgencyStats(StatsReqVo vo);
/**
* 统计区域下的儿童人口
*
* @param vo
* @return
*/
StatsVo getAreaChildStats(StatsReqVo vo);
/**
* 统计福利院下的儿童人口
*
* @param vo
* @return
*/
StatsVo getAgencyChildStats(StatsReqVo vo);
}
...@@ -4,7 +4,6 @@ import com.baomidou.dynamic.datasource.annotation.DS; ...@@ -4,7 +4,6 @@ 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.StatsReqVo;
import com.zq.portal.vo.StatsVo; import com.zq.portal.vo.StatsVo;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
import java.util.List; import java.util.List;
...@@ -18,7 +17,14 @@ public interface HyStatsDao { ...@@ -18,7 +17,14 @@ public interface HyStatsDao {
* *
* @return * @return
*/ */
List<StatsVo> getMarryPerYear(@Param("type") String type); List<StatsVo> getFivesYearMarriageLine(StatsReqVo vo);
/**
* 月统计折线
*
* @return
*/
List<StatsVo> getMonthMarriageLine(StatsReqVo vo);
/** /**
* 获取结婚离婚人数 * 获取结婚离婚人数
......
...@@ -2,8 +2,8 @@ package com.zq.portal.dao; ...@@ -2,8 +2,8 @@ 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.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
import java.util.List; import java.util.List;
...@@ -13,11 +13,19 @@ import java.util.List; ...@@ -13,11 +13,19 @@ import java.util.List;
public interface ShzzStatsDao { public interface ShzzStatsDao {
/** /**
* 获取每年登记的社会组织数量 * 获取社会组织统计数量
* *
* @param areaCode * @param vo
* @return * @return
*/ */
List<StatsVo> getSoorganPerYear(@Param("areaCode") String areaCode); StatsVo getSoorganStats(StatsReqVo vo);
/**
* 按组织类型分钟
*
* @param vo
* @return
*/
List<StatsVo> getSoorganTypeStats(StatsReqVo vo);
} }
package com.zq.portal.dao;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.zq.common.entity.VChildWelfareStats;
import org.springframework.stereotype.Repository;
/**
* 儿童福利机构统计表(VChildWelfareStats)表数据库访问层
*
* @author makejava
* @since 2021-06-25 18:19:30
*/
@Repository
public interface VChildWelfareStatsDao extends BaseMapper<VChildWelfareStats> {
}
package com.zq.portal.dao;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.zq.common.entity.VSoorganStats;
import org.springframework.stereotype.Repository;
/**
* (VSoorganStats)表数据库访问层
*
* @author makejava
* @since 2021-06-25 16:13:32
*/
@Repository
public interface VSoorganStatsDao extends BaseMapper<VSoorganStats> {
}
package com.zq.portal.dao;
import com.baomidou.dynamic.datasource.annotation.DS;
import com.zq.common.constant.DBName;
import org.springframework.stereotype.Repository;
@DS(DBName.GXYL)
@Repository
public interface YlStatsDao {
}
package com.zq.portal.manager; package com.zq.portal.manager;
import com.zq.portal.vo.StatsReqVo;
public abstract class CacheKeys { public abstract class CacheKeys {
public static final String PREFIX = "portal."; public static final String PREFIX = "portal.";
public static String getMapDataKey(String areaCode) { // 获取婚姻统计列表key
return PREFIX + "map." + areaCode; public static String getAreaUnderMarriageStatsListKey(StatsReqVo vo) {
return PREFIX + "getAreaUnderMarriageStatsList." + vo.getAreaCode() + "." + vo.getYear();
}
// 获取婚姻统计key
public static String getMarriageStatsKey(StatsReqVo vo) {
return PREFIX + "getMarriageStats." + vo.getAreaCode() + "." + vo.getYear();
}
// 获取近5年结婚离婚走势key
public static String getFivesYearMarriageLineKey(String areaCode) {
return PREFIX + "getFivesYearMarriageLine." + areaCode;
}
// 获取近一年每个月结婚离婚走势key
public static String getMonthMarriageLineKey(String areaCode) {
return PREFIX + "getMonthMarriageLine." + areaCode;
}
// 获取社会机构统计
public static String getSoorganStatsListKey(StatsReqVo vo) {
return PREFIX + "getSoorganStatsList." + vo.getAreaCode() + "." + vo.getYear();
}
// 获取社会机构统计
public static String getSoorganStatsKey(StatsReqVo vo) {
return PREFIX + "getSoorganStats." + vo.getAreaCode() + "." + vo.getYear();
}
// 获取社会机构区域占比统计
public static String getSoorganPercentageStatsKey(StatsReqVo vo) {
return PREFIX + "getSoorganPercentageStats." + vo.getAreaCode() + "." + vo.getYear();
} }
public static String getAreaMarriageStatsListKey(String areaCode) { // 儿童机构福利统计列表
return PREFIX + "AreaMarriageStatsList." + areaCode; public static String getAgencyChildStatsListKey(StatsReqVo vo) {
return PREFIX + "getAgencyChildStatsList." + vo.getAreaCode() + "." + vo.getYear();
} }
public static String getMarriageStatsKey(String areaCode) { // 儿童机构福利统计
return PREFIX + "MarriageStats." + areaCode; public static String getAgencyChildStatsKey(StatsReqVo vo) {
return PREFIX + "getAgencyChildStats." + vo.getAreaCode() + "." + vo.getYear();
} }
public static String getMarryPerYearKey() { // 区域机构占比
return PREFIX + "MarryPerYear"; public static String getAgencyPercentageStatsKey(StatsReqVo vo) {
return PREFIX + "getAgencyPercentageStats." + vo.getAreaCode() + "." + vo.getYear();
} }
} }
package com.zq.portal.service;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.zq.common.config.redis.RedisUtils;
import com.zq.common.entity.SystemArea;
import com.zq.common.entity.VChildWelfareStats;
import com.zq.portal.dao.AreaDao;
import com.zq.portal.dao.EtStatsDao;
import com.zq.portal.dao.VChildWelfareStatsDao;
import com.zq.portal.manager.CacheKeys;
import com.zq.portal.vo.StatsReqVo;
import com.zq.portal.vo.StatsVo;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Service
@RequiredArgsConstructor
public class EtStatsService {
private final EtStatsDao etStatsDao;
private final VChildWelfareStatsDao vChildWelfareStatsDao;
private final AreaDao areaDao;
private final RedisUtils redisUtils;
public VChildWelfareStats getCacheAgencyChildStats(StatsReqVo vo) {
Object obj = redisUtils.getObj(CacheKeys.getAgencyChildStatsKey(vo));
if (obj != null) {
return (VChildWelfareStats) obj;
}
return getAgencyChildStats(vo);
}
/**
* 统计该区域的机构和孩子数量
*
* @param vo
* @return
*/
public VChildWelfareStats getAgencyChildStats(StatsReqVo vo) {
String cacheKey = CacheKeys.getAgencyChildStatsKey(vo);
if (StrUtil.isBlank(vo.getAreaCode())) {
vo.setAreaCode("450000000000");
}
SystemArea systemArea = areaDao.selectById(vo.getAreaCode());
vo.setAreaCode(systemArea.subAreaCode());
VChildWelfareStats build = VChildWelfareStats.builder()
.areaCode(systemArea.getCode())
.areaName(systemArea.getName())
.year(vo.getYear())
.createTime(DateUtil.date())
.build();
StatsVo orgStat = etStatsDao.getAreaAgencyStats(vo);
build.setAgencyNum(orgStat.getNum());
StatsVo childStats = etStatsDao.getAreaChildStats(vo);
build.setChildNum(childStats.getNum());
redisUtils.setObj(cacheKey, build);
// 放进数据库 有时间条件的不存库
VChildWelfareStats childWelfareStats = vChildWelfareStatsDao.selectOne(Wrappers.lambdaQuery(VChildWelfareStats.builder().year(vo.getYear() == null ? 0 : vo.getYear()).areaCode(systemArea.getCode()).createTime(DateUtil.parseDate(DateUtil.today())).build()));
if (childWelfareStats == null) {
vChildWelfareStatsDao.insert(build);
}
return build;
}
public List<VChildWelfareStats> getCacheAgencyChildStatsList(StatsReqVo vo) {
Object obj = redisUtils.getObj(CacheKeys.getAgencyChildStatsListKey(vo));
if (obj != null) {
return (List<VChildWelfareStats>) obj;
}
return getAgencyChildStatsList(vo);
}
/**
* 获取区域下的福利机构和儿童数量统计
*
* @param vo
* @return
*/
public List<VChildWelfareStats> getAgencyChildStatsList(StatsReqVo vo) {
String cacheKey = CacheKeys.getAgencyChildStatsListKey(vo);
if (StrUtil.isBlank(vo.getAreaCode())) {
vo.setAreaCode("450000000000");
}
List<VChildWelfareStats> returnData = new ArrayList<>();
List<SystemArea> systemAreaList = areaDao.selectList(Wrappers.lambdaQuery(SystemArea.builder().parentId(vo.getAreaCode()).build()));
for (SystemArea systemArea : systemAreaList) {
vo.setAreaCode(systemArea.getCode());
VChildWelfareStats etAgencyWelfareStats = getAgencyChildStats(vo);
returnData.add(etAgencyWelfareStats);
}
redisUtils.setObj(cacheKey, returnData);
return returnData;
}
/**
* 统计机构占比
*
* @param vo
* @return
*/
public Object getCacheAgencyPercentageStats(StatsReqVo vo) {
Object obj = redisUtils.getObj(CacheKeys.getAgencyChildStatsListKey(vo));
if (obj != null) {
return obj;
}
return getAgencyPercentageStats(vo);
}
/**
* 统计机构占比
*
* @param vo
* @return
*/
public Object getAgencyPercentageStats(StatsReqVo vo) {
String cacheKey = CacheKeys.getAgencyPercentageStatsKey(vo);
List<VChildWelfareStats> agencyChildStatsList = getAgencyChildStatsList(vo);
List<Map<String, Object>> returnData = new ArrayList<>();
for (VChildWelfareStats childWelfareStats : agencyChildStatsList) {
Map<String, Object> data = new HashMap<>();
data.put("name", childWelfareStats.getAreaName());
data.put("vakue", childWelfareStats.getAgencyNum());
}
redisUtils.setObj(cacheKey, returnData);
return returnData;
}
}
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.StrUtil;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; 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;
...@@ -36,7 +35,7 @@ public class HyStatsService { ...@@ -36,7 +35,7 @@ public class HyStatsService {
* @return * @return
*/ */
public VMarriageStats getCacheMarriageStats(StatsReqVo vo) { public VMarriageStats getCacheMarriageStats(StatsReqVo vo) {
Object obj = redisUtils.getObj(CacheKeys.getMarriageStatsKey(vo.getAreaCode() + vo.getStartTime() + vo.getEndTime())); Object obj = redisUtils.getObj(CacheKeys.getMarriageStatsKey(vo));
if (obj != null) { if (obj != null) {
return (VMarriageStats) obj; return (VMarriageStats) obj;
} }
...@@ -50,14 +49,8 @@ public class HyStatsService { ...@@ -50,14 +49,8 @@ public class HyStatsService {
* @return * @return
*/ */
public VMarriageStats getMarriageStats(StatsReqVo vo) { public VMarriageStats getMarriageStats(StatsReqVo vo) {
String marriageStatsKey = CacheKeys.getMarriageStatsKey(vo.getAreaCode() + vo.getStartTime() + vo.getEndTime()); String marriageStatsKey = CacheKeys.getMarriageStatsKey(vo);
if (StrUtil.isNotBlank(vo.getStartTime())) {
vo.setStartTime(vo.getStartTime() + "-01-01 00:00:00");
}
if (StrUtil.isNotBlank(vo.getEndTime())) {
vo.setEndTime(DateUtil.endOfYear(DateUtil.parseDateTime(vo.getEndTime() + "-01-01 00:00:00")).toStringDefaultTimeZone());
}
if (StringUtils.isBlank(vo.getAreaCode())) { if (StringUtils.isBlank(vo.getAreaCode())) {
vo.setAreaCode("450000000000"); vo.setAreaCode("450000000000");
} }
...@@ -68,6 +61,7 @@ public class HyStatsService { ...@@ -68,6 +61,7 @@ public class HyStatsService {
VMarriageStats build = VMarriageStats.builder() VMarriageStats build = VMarriageStats.builder()
.areaCode(area.getCode()) .areaCode(area.getCode())
.areaName(area.getName()) .areaName(area.getName())
.year(vo.getYear())
.createTime(DateUtil.parseDate(DateUtil.today())) .createTime(DateUtil.parseDate(DateUtil.today()))
.build(); .build();
...@@ -100,7 +94,7 @@ public class HyStatsService { ...@@ -100,7 +94,7 @@ public class HyStatsService {
} }
// 放进缓存 // 放进缓存
if (StrUtil.isNotBlank(vo.getStartTime()) || StrUtil.isNotBlank(vo.getEndTime())) { if (vo.getYear() != null) {
// 有时间条件的设置过期时间避免内存暂用 // 有时间条件的设置过期时间避免内存暂用
redisUtils.setObj(marriageStatsKey, build, 1, TimeUnit.DAYS); redisUtils.setObj(marriageStatsKey, build, 1, TimeUnit.DAYS);
} else { } else {
...@@ -108,8 +102,8 @@ public class HyStatsService { ...@@ -108,8 +102,8 @@ public class HyStatsService {
} }
// 放进数据库 有时间条件的不存库 // 放进数据库 有时间条件的不存库
VMarriageStats marriageStats = vMarriageStatsDao.selectOne(Wrappers.lambdaQuery(VMarriageStats.builder().areaCode(area.getCode()).createTime(DateUtil.parseDate(DateUtil.today())).build())); VMarriageStats marriageStats = vMarriageStatsDao.selectOne(Wrappers.lambdaQuery(VMarriageStats.builder().year(vo.getYear() == null ? 0 : vo.getYear()).areaCode(area.getCode()).createTime(DateUtil.parseDate(DateUtil.today())).build()));
if (marriageStats == null && StrUtil.isBlank(vo.getStartTime()) && StrUtil.isBlank(vo.getEndTime())) { if (marriageStats == null) {
vMarriageStatsDao.insert(build); vMarriageStatsDao.insert(build);
} }
...@@ -123,7 +117,7 @@ public class HyStatsService { ...@@ -123,7 +117,7 @@ public class HyStatsService {
* @return * @return
*/ */
public List<VMarriageStats> getCacheAreaUnderMarriageStatsList(StatsReqVo vo) { public List<VMarriageStats> getCacheAreaUnderMarriageStatsList(StatsReqVo vo) {
Object obj = redisUtils.getObj(CacheKeys.getAreaMarriageStatsListKey(vo.getAreaCode() + vo.getStartTime() + vo.getEndTime())); Object obj = redisUtils.getObj(CacheKeys.getAreaUnderMarriageStatsListKey(vo));
if (obj != null) { if (obj != null) {
return (List<VMarriageStats>) obj; return (List<VMarriageStats>) obj;
} }
...@@ -137,7 +131,7 @@ public class HyStatsService { ...@@ -137,7 +131,7 @@ public class HyStatsService {
* @return * @return
*/ */
public List<VMarriageStats> getAreaUnderMarriageStatsList(StatsReqVo vo) { public List<VMarriageStats> getAreaUnderMarriageStatsList(StatsReqVo vo) {
String areaMarriageStatsListKey = CacheKeys.getAreaMarriageStatsListKey(vo.getAreaCode() + vo.getStartTime() + vo.getEndTime()); String areaMarriageStatsListKey = CacheKeys.getAreaUnderMarriageStatsListKey(vo);
if (StringUtils.isBlank(vo.getAreaCode())) { if (StringUtils.isBlank(vo.getAreaCode())) {
vo.setAreaCode("450000000000"); vo.setAreaCode("450000000000");
...@@ -147,10 +141,11 @@ public class HyStatsService { ...@@ -147,10 +141,11 @@ public class HyStatsService {
List<SystemArea> systemAreaList = areaDao.selectList(Wrappers.lambdaQuery(SystemArea.builder().parentId(vo.getAreaCode()).build())); List<SystemArea> systemAreaList = areaDao.selectList(Wrappers.lambdaQuery(SystemArea.builder().parentId(vo.getAreaCode()).build()));
for (SystemArea systemArea : systemAreaList) { for (SystemArea systemArea : systemAreaList) {
vo.setAreaCode(systemArea.getCode()); vo.setAreaCode(systemArea.getCode());
returnData.add(getMarriageStats(vo)); VMarriageStats marriageStats = getCacheMarriageStats(vo);
returnData.add(marriageStats);
} }
if (StrUtil.isNotBlank(vo.getStartTime()) || StrUtil.isNotBlank(vo.getEndTime())) { if (vo.getYear() != null) {
// 搜索的有过期时间避免内存暂用 // 搜索的有过期时间避免内存暂用
redisUtils.setObj(areaMarriageStatsListKey, returnData, 1, TimeUnit.DAYS); redisUtils.setObj(areaMarriageStatsListKey, returnData, 1, TimeUnit.DAYS);
} else { } else {
...@@ -178,12 +173,12 @@ public class HyStatsService { ...@@ -178,12 +173,12 @@ public class HyStatsService {
* @param vo * @param vo
* @return * @return
*/ */
public Object getCacheMarryPerYear(StatsReqVo vo) { public Object getCacheFivesYearMarriageLine(StatsReqVo vo) {
Object obj = redisUtils.getObj(CacheKeys.getMarryPerYearKey()); Object obj = redisUtils.getObj(CacheKeys.getFivesYearMarriageLineKey(vo.getAreaCode()));
if (obj != null) { if (obj != null) {
return obj; return obj;
} }
return getMarryPerYear(vo); return getFivesYearMarriageLine(vo);
} }
/** /**
...@@ -192,8 +187,15 @@ public class HyStatsService { ...@@ -192,8 +187,15 @@ public class HyStatsService {
* @param vo * @param vo
* @return * @return
*/ */
public Object getMarryPerYear(StatsReqVo vo) { public Object getFivesYearMarriageLine(StatsReqVo vo) {
List<StatsVo> ia = hyStatsDao.getMarryPerYear("IA"); if (StringUtils.isBlank(vo.getAreaCode())) {
vo.setAreaCode("450000000000");
}
SystemArea area = areaDao.getAreaByCode(vo.getAreaCode());
vo.setAreaCode(area.subAreaCode());
vo.setType("IA");
List<StatsVo> ia = hyStatsDao.getFivesYearMarriageLine(vo);
ia.sort(Comparator.comparing(StatsVo::getYear)); ia.sort(Comparator.comparing(StatsVo::getYear));
List<String> iaDateList = new ArrayList<>(); List<String> iaDateList = new ArrayList<>();
List<String> iaAmountList = new ArrayList<>(); List<String> iaAmountList = new ArrayList<>();
...@@ -203,7 +205,8 @@ public class HyStatsService { ...@@ -203,7 +205,8 @@ public class HyStatsService {
}); });
LineDataVo iaLineData = LineDataVo.builder().dateList(iaDateList).amountList(iaAmountList).build(); LineDataVo iaLineData = LineDataVo.builder().dateList(iaDateList).amountList(iaAmountList).build();
List<StatsVo> ib = hyStatsDao.getMarryPerYear("IB"); vo.setType("IB");
List<StatsVo> ib = hyStatsDao.getFivesYearMarriageLine(vo);
ib.sort(Comparator.comparing(StatsVo::getYear)); ib.sort(Comparator.comparing(StatsVo::getYear));
List<String> ibDateList = new ArrayList<>(); List<String> ibDateList = new ArrayList<>();
List<String> ibAmountList = new ArrayList<>(); List<String> ibAmountList = new ArrayList<>();
...@@ -213,12 +216,109 @@ public class HyStatsService { ...@@ -213,12 +216,109 @@ public class HyStatsService {
}); });
LineDataVo ibLineData = LineDataVo.builder().dateList(ibDateList).amountList(ibAmountList).build(); LineDataVo ibLineData = LineDataVo.builder().dateList(ibDateList).amountList(ibAmountList).build();
Map<String, Object> data = new HashMap<>(); // 后台管理数据
data.put("iaLineData", iaLineData); Map<String, Object> adminData = new HashMap<>();
data.put("ibLineData", ibLineData); adminData.put("iaLineData", iaLineData);
adminData.put("ibLineData", ibLineData);
//App数据
Map<String, Object> appData = new HashMap<>();
appData.put("categories", iaDateList);
Map<String, Object> iaLine = new HashMap<>();
iaLine.put("name", "结婚对数");
iaLine.put("data", iaAmountList);
Map<String, Object> ibLine = new HashMap<>();
ibLine.put("name", "离婚对数");
ibLine.put("data", ibAmountList);
List<Map<String, Object>> seriesList = new ArrayList<>();
seriesList.add(iaLine);
seriesList.add(ibLine);
appData.put("series", seriesList);
Map<String, Object> returnData = new HashMap<>();
returnData.put("admin", adminData);
returnData.put("app", appData);
redisUtils.setObj(CacheKeys.getFivesYearMarriageLineKey(vo.getAreaCode()), returnData);
return returnData;
}
/**
* 获取缓存月统计折线
*
* @param vo
* @return
*/
public Object getCacheMonthMarriageLine(StatsReqVo vo) {
Object obj = redisUtils.getObj(CacheKeys.getMonthMarriageLineKey(vo.getAreaCode()));
if (obj != null) {
return obj;
}
return getMonthMarriageLine(vo);
}
/**
* 月统计折线
*
* @param vo
* @return
*/
public Object getMonthMarriageLine(StatsReqVo vo) {
if (StringUtils.isBlank(vo.getAreaCode())) {
vo.setAreaCode("450000000000");
}
SystemArea area = areaDao.getAreaByCode(vo.getAreaCode());
vo.setAreaCode(area.subAreaCode());
vo.setType("IA");
List<StatsVo> ia = hyStatsDao.getMonthMarriageLine(vo);
ia.sort(Comparator.comparing(StatsVo::getMonth));
List<String> iaDateList = new ArrayList<>();
List<String> iaAmountList = new ArrayList<>();
ia.forEach(statsVo -> {
iaDateList.add(statsVo.getMonth());
iaAmountList.add(String.valueOf(statsVo.getNum()));
});
LineDataVo iaLineData = LineDataVo.builder().dateList(iaDateList).amountList(iaAmountList).build();
vo.setType("IB");
List<StatsVo> ib = hyStatsDao.getMonthMarriageLine(vo);
ib.sort(Comparator.comparing(StatsVo::getMonth));
List<String> ibDateList = new ArrayList<>();
List<String> ibAmountList = new ArrayList<>();
ib.forEach(statsVo -> {
ibDateList.add(statsVo.getMonth());
ibAmountList.add(String.valueOf(statsVo.getNum()));
});
LineDataVo ibLineData = LineDataVo.builder().dateList(ibDateList).amountList(ibAmountList).build();
// 后台管理数据
Map<String, Object> adminData = new HashMap<>();
adminData.put("iaLineData", iaLineData);
adminData.put("ibLineData", ibLineData);
//App数据
Map<String, Object> appData = new HashMap<>();
appData.put("categories", iaDateList);
redisUtils.setObj(CacheKeys.getMarryPerYearKey(), data); Map<String, Object> iaLine = new HashMap<>();
return data; iaLine.put("name", "结婚对数");
iaLine.put("data", iaAmountList);
Map<String, Object> ibLine = new HashMap<>();
ibLine.put("name", "离婚对数");
ibLine.put("data", ibAmountList);
List<Map<String, Object>> seriesList = new ArrayList<>();
seriesList.add(iaLine);
seriesList.add(ibLine);
appData.put("series", seriesList);
Map<String, Object> returnData = new HashMap<>();
returnData.put("admin", adminData);
returnData.put("app", appData);
redisUtils.setObj(CacheKeys.getMonthMarriageLineKey(vo.getAreaCode()), returnData);
return returnData;
} }
} }
package com.zq.portal.service; package com.zq.portal.service;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.zq.common.config.redis.RedisUtils;
import com.zq.common.entity.SystemArea;
import com.zq.common.entity.VSoorganStats;
import com.zq.portal.dao.AreaDao;
import com.zq.portal.dao.ShzzStatsDao;
import com.zq.portal.dao.VSoorganStatsDao;
import com.zq.portal.manager.CacheKeys;
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.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Service @Service
@RequiredArgsConstructor @RequiredArgsConstructor
public class ShzzStatsService { public class ShzzStatsService {
private final ShzzStatsDao shzzStatsDao;
private final VSoorganStatsDao vSoorganStatsDao;
private final AreaDao areaDao;
private final RedisUtils redisUtils;
/**
* 获取社会机构统计
*
* @param vo
* @return
*/
public VSoorganStats getCacheSoorganStats(StatsReqVo vo) {
Object obj = redisUtils.getObj(CacheKeys.getSoorganStatsKey(vo));
if (obj != null) {
return (VSoorganStats) obj;
}
return getSoorganStats(vo);
}
/**
* 获取社会机构统计
*
* @param vo
* @return
*/
public VSoorganStats getSoorganStats(StatsReqVo vo) {
String soorganStatsListKey = CacheKeys.getSoorganStatsKey(vo);
if (StrUtil.isBlank(vo.getAreaCode())) {
vo.setAreaCode("450000000000");
}
SystemArea systemArea = areaDao.selectById(vo.getAreaCode());
vo.setAreaCode(systemArea.subAreaCode());
VSoorganStats build = VSoorganStats.builder()
.areaCode(systemArea.getCode())
.areaName(systemArea.getName())
.year(vo.getYear())
.createTime(DateUtil.date())
.build();
StatsVo stats = shzzStatsDao.getSoorganStats(vo);
build.setTotalNum(stats.getNum());
List<StatsVo> statsVoList = shzzStatsDao.getSoorganTypeStats(vo);
for (StatsVo statsVo : statsVoList) {
if ("0".equals(statsVo.getType())) {
build.setLeagueNum(statsVo.getNum());
} else if ("1".equals(statsVo.getType())) {
build.setMinFeiNum(statsVo.getNum());
} else if ("2".equals(statsVo.getType())) {
build.setFoundationNum(statsVo.getNum());
}
}
redisUtils.setObj(soorganStatsListKey, build);
// 放进数据库 有时间条件的不存库
VSoorganStats soorganStats = vSoorganStatsDao.selectOne(Wrappers.lambdaQuery(VSoorganStats.builder().year(vo.getYear() == null ? 0 : vo.getYear()).areaCode(systemArea.getCode()).createTime(DateUtil.parseDate(DateUtil.today())).build()));
if (soorganStats == null) {
vSoorganStatsDao.insert(build);
}
return build;
}
/**
* 获取社会机构统计
*
* @param vo
* @return
*/
public List<VSoorganStats> getCacheAreaUnderSoorganStatsList(StatsReqVo vo) {
Object obj = redisUtils.getObj(CacheKeys.getSoorganStatsListKey(vo));
if (obj != null) {
return (List<VSoorganStats>) obj;
}
return getAreaUnderSoorganStatsList(vo);
}
/**
* 获取社会机构统计
*
* @param vo
* @return
*/
public List<VSoorganStats> getAreaUnderSoorganStatsList(StatsReqVo vo) {
String soorganStatsListKey = CacheKeys.getSoorganStatsListKey(vo);
if (StrUtil.isBlank(vo.getAreaCode())) {
vo.setAreaCode("450000000000");
}
List<VSoorganStats> returnData = new ArrayList<>();
List<SystemArea> systemAreaList = areaDao.selectList(Wrappers.lambdaQuery(SystemArea.builder().parentId(vo.getAreaCode()).build()));
for (SystemArea systemArea : systemAreaList) {
vo.setAreaCode(systemArea.getCode());
VSoorganStats soorganStats = getCacheSoorganStats(vo);
returnData.add(soorganStats);
}
redisUtils.setObj(soorganStatsListKey, returnData);
return returnData;
}
/**
* 获取社会机构区域占比统计
*
* @param vo
* @return
*/
public Object getCachePercentageStats(StatsReqVo vo) {
Object obj = redisUtils.getObj(CacheKeys.getSoorganPercentageStatsKey(vo));
if (obj != null) {
return obj;
}
return getSoorganPercentageStats(vo);
}
/**
* 获取社会机构区域占比统计
*
* @param vo
* @return
*/
public Object getSoorganPercentageStats(StatsReqVo vo) {
String cacheKey = CacheKeys.getSoorganPercentageStatsKey(vo);
List<VSoorganStats> cacheAreaUnderSoorganStatsList = getCacheAreaUnderSoorganStatsList(vo);
List<Map<String, Object>> returnData = new ArrayList<>();
for (VSoorganStats vSoorganStats : cacheAreaUnderSoorganStatsList) {
Map<String, Object> data = new HashMap<>();
data.put("name", vSoorganStats.getAreaName());
data.put("vakue", vSoorganStats.getTotalNum());
}
redisUtils.setObj(cacheKey, returnData);
return returnData;
}
} }
package com.zq.portal.service;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
@Service
@RequiredArgsConstructor
public class YlStatsService {
}
package com.zq.portal.task; package com.zq.portal.task;
import cn.hutool.core.date.DateUtil;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.zq.common.entity.SystemArea; import com.zq.common.entity.SystemArea;
import com.zq.portal.dao.AreaDao; import com.zq.portal.dao.AreaDao;
...@@ -28,16 +27,16 @@ public class HyTask { ...@@ -28,16 +27,16 @@ public class HyTask {
public void sync() { public void sync() {
System.out.println("婚姻基本数统计 触发时间 :" + new Date()); System.out.println("婚姻基本数统计 触发时间 :" + new Date());
hyStatsService.getMarryPerYear(StatsReqVo.builder().areaCode("450000000000").build()); hyStatsService.getFivesYearMarriageLine(StatsReqVo.builder().areaCode("450000000000").build());
hyStatsService.getMarriageStats(StatsReqVo.builder().areaCode("450000000000").build()); hyStatsService.getMarriageStats(StatsReqVo.builder().areaCode("450000000000").build());
hyStatsService.getAreaUnderMarriageStatsList(StatsReqVo.builder().areaCode("450000000000").build()); hyStatsService.getAreaUnderMarriageStatsList(StatsReqVo.builder().areaCode("450000000000").build());
List<SystemArea> systemAreaList = areaDao.selectList(Wrappers.lambdaQuery(SystemArea.builder().parentId("450000000000").build())); List<SystemArea> systemAreaList = areaDao.selectList(Wrappers.lambdaQuery(SystemArea.builder().parentId("450000000000").build()));
for (SystemArea systemArea : systemAreaList) { for (SystemArea systemArea : systemAreaList) {// 市
hyStatsService.getAreaUnderMarriageStatsList(StatsReqVo.builder().areaCode(systemArea.getCode()).build()); hyStatsService.getAreaUnderMarriageStatsList(StatsReqVo.builder().areaCode(systemArea.getCode()).build());
List<SystemArea> systemAreas = areaDao.selectList(Wrappers.lambdaQuery(SystemArea.builder().parentId(systemArea.getCode()).build())); List<SystemArea> systemAreas = areaDao.selectList(Wrappers.lambdaQuery(SystemArea.builder().parentId(systemArea.getCode()).build()));
for (SystemArea area : systemAreas) { for (SystemArea area : systemAreas) {// 区
hyStatsService.getAreaUnderMarriageStatsList(StatsReqVo.builder().areaCode(area.getCode()).build()); hyStatsService.getAreaUnderMarriageStatsList(StatsReqVo.builder().areaCode(area.getCode()).build());
} }
} }
......
...@@ -11,29 +11,16 @@ import lombok.NoArgsConstructor; ...@@ -11,29 +11,16 @@ import lombok.NoArgsConstructor;
@NoArgsConstructor @NoArgsConstructor
public class StatsReqVo { public class StatsReqVo {
/**
* 区域ID
*/
private String areaCode; private String areaCode;
/**
* 年份
*/
private Integer year; private Integer year;
/**
* 年份
*/
private Integer month; private Integer month;
/**
* 开始时间
*/
private String startTime; private String startTime;
/**
* 结算时间
*/
private String endTime; private String endTime;
private String type;
} }
...@@ -13,4 +13,6 @@ public class StatsVo { ...@@ -13,4 +13,6 @@ public class StatsVo {
private String month; private String month;
private String name;
} }
...@@ -65,6 +65,18 @@ spring: ...@@ -65,6 +65,18 @@ spring:
username: root username: root
password: rooT123!321 password: rooT123!321
driver-class-name: com.mysql.cj.jdbc.Driver driver-class-name: com.mysql.cj.jdbc.Driver
gxet:
type: com.alibaba.druid.pool.DruidDataSource
url: jdbc:mysql://192.168.0.193:3306/gx-et?characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai
username: root
password: rooT123!321
driver-class-name: com.mysql.cj.jdbc.Driver
gxyl:
type: com.alibaba.druid.pool.DruidDataSource
url: jdbc:mysql://192.168.0.193:3306/gx-yl?characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai
username: root
password: rooT123!321
driver-class-name: com.mysql.cj.jdbc.Driver
druid: druid:
# 初始连接数 # 初始连接数
initial-size: 5 initial-size: 5
......
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.zq.portal.dao.EtStatsDao">
<!--统计区域下的福利院数量-->
<select id="getAreaAgencyStats" resultType="com.zq.portal.vo.StatsVo">
SELECT
count( 1 ) 'num'
FROM
jee01 o
WHERE 1=1
<if test="areaCode !=null and areaCode != ''">
AND o.AXAA0001 LIKE CONCAT(#{areaCode}, '%')
</if>
<if test="year != null">
AND DATE_FORMAT(c.AJAX0107, "%Y") = #{year}
</if>
</select>
<!--统计区域下的儿童人口-->
<select id="getAreaChildStats" resultType="com.zq.portal.vo.StatsVo">
SELECT
count( 1 ) 'num'
FROM
JAX01 c
WHERE 1=1
<if test="areaCode !=null and areaCode != ''">
AND c.AXAA0001 LIKE CONCAT(#{areaCode}, '%')
</if>
<if test="year != null">
AND DATE_FORMAT(c.AJAX0107, "%Y") = #{year}
</if>
</select>
<!--统计福利院下的儿童人口-->
<select id="getAgencyChildStats" resultType="com.zq.portal.vo.StatsVo">
SELECT c.AJEE0100 'code', o.AXBE0003_1 'name', COUNT( 1 ) 'num'
FROM JAX01 c
LEFT JOIN jee01 o ON c.AJEE0100 = o.AJEE0100
WHERE 1=1
<if test="areaCode !=null and areaCode != ''">
AND c.AXAA0001 LIKE CONCAT(#{areaCode}, '%')
</if>
<if test="year != null">
AND DATE_FORMAT(c.AJAX0107, "%Y") = #{year}
</if>
GROUP BY c.AJEE0100
ORDER BY COUNT( 1 ) DESC
LIMIT 15
</select>
</mapper>
...@@ -2,16 +2,32 @@ ...@@ -2,16 +2,32 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.zq.portal.dao.HyStatsDao"> <mapper namespace="com.zq.portal.dao.HyStatsDao">
<select id="getMarryPerYear" resultType="com.zq.portal.vo.StatsVo"> <select id="getFivesYearMarriageLine" resultType="com.zq.portal.vo.StatsVo">
SELECT COUNT(1) 'num', m.AIAX0001 'type', DATE_FORMAT( m.AIAX0048, "%Y" ) 'year' SELECT COUNT(1) 'num', m.AIAX0001 'type', DATE_FORMAT( m.AIAX0048, "%Y" ) 'year'
FROM mrcase m FROM mrcase m LEFT JOIN taorg t ON m.AIAX0003 = t.ORGID
WHERE m.AIAX0072 = '1' WHERE m.AIAX0072 = '1'
AND m.BIAX0075 = '1' AND m.BIAX0075 = '1'
AND m.AIAX0001 = #{type} AND m.AIAX0001 = #{type}
<if test="areaCode != null and areaCode != ''">
AND t.YAB003 LIKE CONCAT(#{areaCode},'%')
</if>
GROUP BY DATE_FORMAT(m.AIAX0048, "%Y") GROUP BY DATE_FORMAT(m.AIAX0048, "%Y")
ORDER BY DATE_FORMAT(m.AIAX0048, "%Y") DESC LIMIT 5 ORDER BY DATE_FORMAT(m.AIAX0048, "%Y") DESC LIMIT 5
</select> </select>
<select id="getMonthMarriageLine" resultType="com.zq.portal.vo.StatsVo">
SELECT COUNT(1) 'num', m.AIAX0001 'type', DATE_FORMAT( m.AIAX0048, "%Y-%m" ) 'month'
FROM mrcase m LEFT JOIN taorg t ON m.AIAX0003 = t.ORGID
WHERE m.AIAX0072 = '1'
AND m.BIAX0075 = '1'
AND m.AIAX0001 = #{type}
<if test="areaCode != null and areaCode != ''">
AND t.YAB003 LIKE CONCAT(#{areaCode},'%')
</if>
GROUP BY DATE_FORMAT(m.AIAX0048, '%Y-%m')
ORDER BY DATE_FORMAT(m.AIAX0048, '%Y-%m') DESC LIMIT 12
</select>
<select id="getMarriageStats" resultType="com.zq.portal.vo.StatsVo"> <select id="getMarriageStats" resultType="com.zq.portal.vo.StatsVo">
SELECT SELECT
COUNT( 1 ) 'num', COUNT( 1 ) 'num',
...@@ -21,6 +37,9 @@ ...@@ -21,6 +37,9 @@
WHERE WHERE
m.AIAX0072 = '1' m.AIAX0072 = '1'
AND m.BIAX0075 = '1' AND m.BIAX0075 = '1'
<if test="year != null">
AND DATE_FORMAT(m.AIAX0048, "%Y") = #{year}
</if>
<if test="startTime != null and startTime != ''"> <if test="startTime != null and startTime != ''">
AND m.AIAX0048 >= #{startTime} AND m.AIAX0048 >= #{startTime}
</if> </if>
...@@ -46,6 +65,9 @@ ...@@ -46,6 +65,9 @@
AND m.BIAX0075 = '1' AND m.BIAX0075 = '1'
AND LEFT(m.AIAP0013,4) != LEFT(t.YAB003,4) AND LEFT(m.AIAP0013,4) != LEFT(t.YAB003,4)
AND LEFT(m.AIAP0014,4) != LEFT(t.YAB003,4) AND LEFT(m.AIAP0014,4) != LEFT(t.YAB003,4)
<if test="year != null">
AND DATE_FORMAT(m.AIAX0048, "%Y") = #{year}
</if>
<if test="startTime != null and startTime != ''"> <if test="startTime != null and startTime != ''">
AND m.AIAX0048 >= #{startTime} AND m.AIAX0048 >= #{startTime}
</if> </if>
...@@ -66,6 +88,9 @@ ...@@ -66,6 +88,9 @@
WHERE m.AIAX0001 = 'IB' WHERE m.AIAX0001 = 'IB'
AND m.BIAX0075 = '1' AND m.BIAX0075 = '1'
AND m.AIAX0072 != '1' AND m.AIAX0072 != '1'
<if test="year != null">
AND DATE_FORMAT(m.AIAX0048, "%Y") = #{year}
</if>
<if test="startTime != null and startTime != ''"> <if test="startTime != null and startTime != ''">
AND m.AIAX0048 >= #{startTime} AND m.AIAX0048 >= #{startTime}
</if> </if>
...@@ -84,6 +109,9 @@ ...@@ -84,6 +109,9 @@
WHERE m.AIAX0001 = 'IA' WHERE m.AIAX0001 = 'IA'
AND m.BIAX0075 = '1' AND m.BIAX0075 = '1'
AND m.AIAX0072 = '1' AND m.AIAX0072 = '1'
<if test="year != null">
AND DATE_FORMAT(m.AIAX0048, "%Y") = #{year}
</if>
<if test="startTime != null and startTime != ''"> <if test="startTime != null and startTime != ''">
AND m.AIAX0048 >= #{startTime} AND m.AIAX0048 >= #{startTime}
</if> </if>
...@@ -112,22 +140,4 @@ ...@@ -112,22 +140,4 @@
GROUP BY LEFT (m.AIAX0048, 10) GROUP BY LEFT (m.AIAX0048, 10)
</select> </select>
<select id="getMonthDivorceData" resultType="com.zq.portal.vo.StatsVo">
SELECT
LEFT (m.AIAX0048, 10),
COUNT (1) 'num'
FROM
mrcheck m
LEFT JOIN mrcheckappend ma
ON m.BIAX0069 = ma.BIAX0069
WHERE
m.AIAX0001 = 'IB'
AND m.AIAX0072 = '1'
AND m.BIAX0015 = '6'
AND ma.COLEENDTIME
> CURDATE()
GROUP BY LEFT (m.AIAX0048, 10)
</select>
</mapper> </mapper>
...@@ -2,16 +2,34 @@ ...@@ -2,16 +2,34 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.zq.portal.dao.ShzzStatsDao"> <mapper namespace="com.zq.portal.dao.ShzzStatsDao">
<select id="getSoorganPerYear" resultType="com.zq.portal.vo.StatsVo"> <select id="getSoorganStats" resultType="com.zq.portal.vo.StatsVo">
SELECT SELECT
COUNT(1) 'num', DATE_FORMAT(s.issueTime,"%Y") 'year' COUNT(1) 'num'
FROM FROM
soorgan s soorgan s LEFT JOIN pfdept P ON s.DEPTID = p.DEPTID
WHERE s.adminCodeId LIKE CONCAT('45','%') WHERE 1=1
GROUP BY <if test="areaCode != null and areaCode != ''">
DATE_FORMAT(s.issueTime,"%Y") AND p.DEPTCODE LIKE CONCAT(#{areaCode},'%')
ORDER BY DATE_FORMAT(s.issueTime,"%Y") DESC </if>
LIMIT 3 <if test="year != null">
AND DATE_FORMAT(s.issueTime, "%Y") = #{year}
</if>
</select>
<select id="getSoorganTypeStats" resultType="com.zq.portal.vo.StatsVo">
SELECT
COUNT(1) 'num',
s.type
FROM
soorgan s LEFT JOIN pfdept P ON s.DEPTID = p.DEPTID
WHERE 1=1
<if test="areaCode != null and areaCode != ''">
AND p.DEPTCODE LIKE CONCAT(#{areaCode},'%')
</if>
<if test="year != null">
AND DATE_FORMAT(s.issueTime, "%Y") = #{year}
</if>
GROUP BY s.orgType
</select> </select>
</mapper> </mapper>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.zq.portal.dao.YlStatsDao">
</mapper>
...@@ -3,6 +3,7 @@ package com.zq.user.service; ...@@ -3,6 +3,7 @@ package com.zq.user.service;
import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.IdcardUtil; import cn.hutool.core.util.IdcardUtil;
import cn.hutool.core.util.RandomUtil; import cn.hutool.core.util.RandomUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.extra.servlet.ServletUtil; import cn.hutool.extra.servlet.ServletUtil;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.zq.common.config.redis.RedisUtils; import com.zq.common.config.redis.RedisUtils;
...@@ -56,21 +57,9 @@ public class UserService { ...@@ -56,21 +57,9 @@ public class UserService {
AppUser appUser = userDao.selectOne(Wrappers.lambdaQuery(AppUser.builder().phone(vo.getPhone()).build())); AppUser appUser = userDao.selectOne(Wrappers.lambdaQuery(AppUser.builder().phone(vo.getPhone()).build()));
if (appUser == null) { if (appUser == null) {
Pfuser pfuser = pfuserDao.selectOne(Wrappers.lambdaQuery(Pfuser.builder().phone(vo.getPhone()).state(0L).build())); appUser = addUser(vo.getPhone());
if (pfuser != null) {
appUser = AppUser.builder()
.name(pfuser.getUsername())
.age(pfuser.getSex().intValue())
.phone(pfuser.getPhone())
.password(DigestUtils.md5DigestAsHex(vo.getPasswd().getBytes()))
.userType(pfuser.getType().intValue())
.age(IdcardUtil.getAgeByIdCard(pfuser.getIdcardno()))
.status(pfuser.getState().intValue())
.build();
userDao.insert(appUser);
return;
}
} }
AssertUtils.notNull(appUser, "手机号不存在"); AssertUtils.notNull(appUser, "手机号不存在");
appUser.setPassword(DigestUtils.md5DigestAsHex(vo.getPasswd().getBytes())); appUser.setPassword(DigestUtils.md5DigestAsHex(vo.getPasswd().getBytes()));
...@@ -82,19 +71,7 @@ public class UserService { ...@@ -82,19 +71,7 @@ public class UserService {
AppUser appUser = userDao.selectOne(Wrappers.lambdaQuery(AppUser.builder().phone(vo.getPhone()).build())); AppUser appUser = userDao.selectOne(Wrappers.lambdaQuery(AppUser.builder().phone(vo.getPhone()).build()));
if (appUser == null) { if (appUser == null) {
Pfuser pfuser = pfuserDao.selectOne(Wrappers.lambdaQuery(Pfuser.builder().phone(vo.getPhone()).state(0L).build())); appUser = addUser(vo.getPhone());
if (pfuser != null) {
appUser = AppUser.builder()
.name(pfuser.getUsername())
.age(pfuser.getSex().intValue())
.phone(pfuser.getPhone())
.password(DigestUtils.md5DigestAsHex("123456".getBytes()))
.userType(pfuser.getType().intValue())
.age(IdcardUtil.getAgeByIdCard(pfuser.getIdcardno()))
.status(pfuser.getState().intValue())
.build();
userDao.insert(appUser);
}
} }
AssertUtils.notNull(appUser, "手机号不存在"); AssertUtils.notNull(appUser, "手机号不存在");
...@@ -122,6 +99,25 @@ public class UserService { ...@@ -122,6 +99,25 @@ public class UserService {
return getApiToken(appUser); return getApiToken(appUser);
} }
private AppUser addUser(String phone) {
Pfuser pfuser = pfuserDao.selectOne(Wrappers.lambdaQuery(Pfuser.builder().phone(phone).build()));
if (pfuser == null) {
return null;
}
AppUser appUser = AppUser.builder()
.name(pfuser.getUsername())
.age(pfuser.getSex().intValue())
.phone(pfuser.getPhone())
.password(DigestUtils.md5DigestAsHex("123456".getBytes()))
.userType(pfuser.getType().intValue())
.age(StrUtil.isBlank(pfuser.getIdcardno()) ? 0 : IdcardUtil.getAgeByIdCard(pfuser.getIdcardno()))
.status(pfuser.getState().intValue())
.build();
userDao.insert(appUser);
return appUser;
}
/** /**
* 判断验证码 * 判断验证码
* *
......
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