Commit 18a10678 by wqc

app数据修改

parent 9060fe45
package com.zq.api.controller; package com.zq.api.controller;
import cn.hutool.core.exceptions.ExceptionUtil; import cn.hutool.core.exceptions.ExceptionUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import cn.hutool.extra.servlet.ServletUtil; import cn.hutool.extra.servlet.ServletUtil;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.zq.api.constant.ApiCodeEnum; import com.zq.api.constant.ApiCodeEnum;
import com.zq.api.constant.ApiMethod; import com.zq.api.constant.ApiMethod;
import com.zq.api.form.ApiForm; import com.zq.api.form.ApiForm;
import com.zq.api.form.ApiResp; import com.zq.api.form.ApiResp;
import com.zq.api.service.ApiService; import com.zq.api.service.ApiService;
import com.zq.api.service.IApiLogic; import com.zq.api.service.IApiLogic;
import com.zq.api.utils.ApiUtils; import com.zq.api.utils.ApiUtils;
import com.zq.common.utils.ThrowableUtil; import com.zq.common.utils.ThrowableUtil;
import com.zq.common.vo.ResultVo; import com.zq.common.vo.ResultVo;
import feign.FeignException; import feign.FeignException;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.springframework.core.annotation.AnnotationUtils; import org.springframework.core.annotation.AnnotationUtils;
import org.springframework.web.bind.annotation.RequestHeader; import org.springframework.web.bind.annotation.RequestHeader;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import java.lang.reflect.Method; import java.lang.reflect.Method;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
@Api(tags = "API接口") @Api(tags = "API接口")
@RestController @RestController
@RequiredArgsConstructor @RequiredArgsConstructor
@RequestMapping("/api") @RequestMapping("/api")
public class ApiController { public class ApiController {
private final ApiService apiService; private final ApiService apiService;
/** /**
* 获取信息入口 * 获取信息入口
* <p> * <p>
* 2016年10月3日 下午1:38:27 * 2016年10月3日 下午1:38:27
*/ */
@RequestMapping("/action") @RequestMapping("/action")
public ApiResp action(@RequestHeader(required = false) String appId, @RequestHeader(required = false) String appSecret, @RequestHeader(required = false) String Authorization, HttpServletRequest request) { public ApiResp action(@RequestHeader(required = false) String appId, @RequestHeader(required = false) String appSecret, @RequestHeader(required = false) String Authorization, HttpServletRequest request) {
long start = System.currentTimeMillis(); long start = System.currentTimeMillis();
ApiForm form = ServletUtil.toBean(request, ApiForm.class, true); ApiForm form = ServletUtil.toBean(request, ApiForm.class, true);
// 不处理Request Method:OPTIONS的请求 // 不处理Request Method:OPTIONS的请求
if (request.getMethod().equals("OPTIONS")) { if (request.getMethod().equals("OPTIONS")) {
return ApiUtils.getSuccessResp(form); return ApiUtils.getSuccessResp(form);
} }
form.setType(2); form.setType(1);
String method = form.getMethod(); String method = form.getMethod();
if (StrUtil.isBlank(method)) { if (StrUtil.isBlank(method)) {
method = request.getParameter("method"); method = request.getParameter("method");
form.setMethod(method); form.setMethod(method);
} }
String stackTrace = ""; String stackTrace = "";
ApiResp resp; ApiResp resp;
try { try {
// 身份验证 // 身份验证
resp = apiService.auth(form, appId, appSecret, Authorization); resp = apiService.auth(form, appId, appSecret, Authorization);
if (resp.isSuccess()) { if (resp.isSuccess()) {
//解析业务参数 //解析业务参数
if (!form.parseBizContent()) { if (!form.parseBizContent()) {
return ApiUtils.getParamError(form); return ApiUtils.getParamError(form);
} }
// 调用接口方法 // 调用接口方法
resp = apiService.action(form); resp = apiService.action(form);
} }
} catch (Exception e) { } catch (Exception e) {
stackTrace = ThrowableUtil.getStackTrace(e); stackTrace = ThrowableUtil.getStackTrace(e);
// 判断指定异常是否来自或者包含指定异常 // 判断指定异常是否来自或者包含指定异常
if (ExceptionUtil.isFromOrSuppressedThrowable(e, FeignException.Unauthorized.class)) { if (ExceptionUtil.isFromOrSuppressedThrowable(e, FeignException.Unauthorized.class)) {
resp = ApiUtils.toApiResp(form, ResultVo.fail(401, "Unauthorized")); resp = ApiUtils.toApiResp(form, ResultVo.fail(401, "Unauthorized"));
} else if (stackTrace.contains("Load balancer does not have available server for client")) { } else if (stackTrace.contains("Load balancer does not have available server for client")) {
resp = ApiUtils.getServiceNotAvailableError(form); resp = ApiUtils.getServiceNotAvailableError(form);
} else if (stackTrace.contains("Connection refused: connect executing")) { } else if (stackTrace.contains("Connection refused: connect executing")) {
resp = ApiUtils.getServiceNotAvailableError(form); resp = ApiUtils.getServiceNotAvailableError(form);
} else { } else {
resp = ApiUtils.getMethodHandlerError(form); resp = ApiUtils.getMethodHandlerError(form);
} }
} }
// 没有数据输出空 // 没有数据输出空
resp = resp == null ? new ApiResp(form) : resp; resp = resp == null ? new ApiResp(form) : resp;
String logType = resp.isSuccess() ? "INFO" : "400".equals(resp.getCode()) ? "WARN" : "ERROR"; String logType = resp.isSuccess() ? "INFO" : "400".equals(resp.getCode()) ? "WARN" : "ERROR";
// 如果是500错误, 服务会返回错误的堆栈信息 // 如果是500错误, 服务会返回错误的堆栈信息
if (resp.getCode().equals(ApiCodeEnum.SERVER_ERROR.code())) { if (resp.getCode().equals(ApiCodeEnum.SERVER_ERROR.code())) {
stackTrace = resp.getMsg(); stackTrace = resp.getMsg();
resp.setMsg(ApiCodeEnum.SERVER_ERROR.msg()); resp.setMsg(ApiCodeEnum.SERVER_ERROR.msg());
} }
// 调试日志 // 调试日志
if (ApiUtils.DEBUG) { if (ApiUtils.DEBUG) {
System.out.println("API DEBUG ACTION \n[from=" + form + "]" + "\n[resp=" + JSON.toJSONString(resp) + "]" + "\n[time=" + (System.currentTimeMillis() - start) + "ms]"); System.out.println("API DEBUG ACTION \n[from=" + form + "]" + "\n[resp=" + JSON.toJSONString(resp) + "]" + "\n[time=" + (System.currentTimeMillis() - start) + "ms]");
} }
String clientIP = ServletUtil.getClientIP(request); String clientIP = ServletUtil.getClientIP(request);
apiService.addLog(form, clientIP, logType, resp.getMsg(), stackTrace, System.currentTimeMillis() - start); apiService.addLog(form, clientIP, logType, resp.getMsg(), stackTrace, System.currentTimeMillis() - start);
return resp; return resp;
} }
/** /**
* 开关调试日志 * 开关调试日志
* <p> * <p>
* 2016年10月3日 下午5:47:46 * 2016年10月3日 下午5:47:46
*/ */
@RequestMapping("/debug") @RequestMapping("/debug")
public ApiResp debug(HttpServletRequest request) { public ApiResp debug(HttpServletRequest request) {
ApiForm from = ServletUtil.toBean(request, ApiForm.class, true); ApiForm from = ServletUtil.toBean(request, ApiForm.class, true);
ApiUtils.DEBUG = !ApiUtils.DEBUG; ApiUtils.DEBUG = !ApiUtils.DEBUG;
return new ApiResp(from).setData(ApiUtils.DEBUG); return new ApiResp(from).setData(ApiUtils.DEBUG);
} }
@RequestMapping("/method") @RequestMapping("/method")
public ApiResp getAllMethod(@RequestParam(required = false) String service, @RequestParam(required = false) String name) { public ApiResp getAllMethod(@RequestParam(required = false) String service, @RequestParam(required = false) String name) {
List<Map<String, Object>> methodList = new ArrayList<>(); List<Map<String, Object>> methodList = new ArrayList<>();
Method[] methods = IApiLogic.class.getMethods(); Method[] methods = IApiLogic.class.getMethods();
for (Method method : methods) { for (Method method : methods) {
Class<?>[] params = method.getParameterTypes(); Class<?>[] params = method.getParameterTypes();
if (params.length == 1 && (params[0] == ApiForm.class)) { if (params.length == 1 && (params[0] == ApiForm.class)) {
ApiMethod apiMethod = AnnotationUtils.getAnnotation(method, ApiMethod.class); ApiMethod apiMethod = AnnotationUtils.getAnnotation(method, ApiMethod.class);
if (StrUtil.isNotBlank(service)) { if (StrUtil.isNotBlank(service)) {
if (apiMethod == null || !apiMethod.service().equals(service)) { if (apiMethod == null || !apiMethod.service().equals(service)) {
continue; continue;
} }
} }
if (StrUtil.isNotBlank(name)) { if (StrUtil.isNotBlank(name)) {
if ((apiMethod == null || !apiMethod.value().contains(name)) && !method.getName().toLowerCase().contains(name.toLowerCase())) { if ((apiMethod == null || !apiMethod.value().contains(name)) && !method.getName().toLowerCase().contains(name.toLowerCase())) {
continue; continue;
} }
} }
Map<String, Object> data = new HashMap<>(); Map<String, Object> data = new HashMap<>();
data.put("value", method.getName()); data.put("value", method.getName());
data.put("name", apiMethod == null ? "" : apiMethod.value()); data.put("name", apiMethod == null ? "" : apiMethod.value());
data.put("service", apiMethod == null ? "" : apiMethod.service()); data.put("service", apiMethod == null ? "" : apiMethod.service());
methodList.add(data); methodList.add(data);
} }
} }
return ApiUtils.toApiResp(new ApiForm(), ResultVo.success(methodList)); return ApiUtils.toApiResp(new ApiForm(), ResultVo.success(methodList));
} }
} }
package com.zq.api.feign; package com.zq.api.feign;
import com.zq.api.config.FeignConfig; import com.zq.api.config.FeignConfig;
import com.zq.common.vo.ResultVo; import com.zq.common.vo.ResultVo;
import org.springframework.cloud.openfeign.FeignClient; import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import java.util.Map; import java.util.Map;
@FeignClient(name = "PORTAL-SERVER", configuration = FeignConfig.class) //指定调用哪个微服务 @FeignClient(name = "PORTAL-SERVER", configuration = FeignConfig.class) //指定调用哪个微服务
@RequestMapping("/portal/app") @RequestMapping("/portal/app")
public interface PortalFeign { public interface PortalFeign {
@GetMapping("/area/getChildAreaList") @GetMapping("/area/getChildAreaList")
ResultVo getChildAreaList(@RequestParam String areaCode); ResultVo getChildAreaList(@RequestParam String areaCode);
@PostMapping("/stats/getMarriageStats") @PostMapping("/stats/getMarriageStats")
ResultVo getMarriageStats(@RequestBody Map<String, Object> paramsMap); ResultVo getMarriageStats(@RequestBody Map<String, Object> paramsMap);
@PostMapping("/stats/getAreaUnderMarriageStatsList") @PostMapping("/stats/getYearMarriedCouple")
ResultVo getAreaUnderMarriageStatsList(@RequestBody Map<String, Object> paramsMap); ResultVo getYearMarriedCouple(@RequestBody Map<String, Object> paramsMap);
@PostMapping("/stats/getFivesYearMarriageLine") @PostMapping("/stats/getAreaUnderMarriageStatsList")
ResultVo getFivesYearMarriageLine(@RequestBody Map<String, Object> paramsMap); ResultVo getAreaUnderMarriageStatsList(@RequestBody Map<String, Object> paramsMap);
@PostMapping("/stats/getAreaDisabledIssueStats") @PostMapping("/stats/getFivesYearMarriageLine")
ResultVo getAreaDisabledIssueStats(@RequestBody Map<String, Object> paramsMap); ResultVo getFivesYearMarriageLine(@RequestBody Map<String, Object> paramsMap);
@PostMapping("/stats/getYearDisabledIssueStats") @PostMapping("/stats/getAreaDisabledIssueStats")
ResultVo getYearDisabledIssueStats(@RequestBody Map<String, Object> paramsMap); ResultVo getAreaDisabledIssueStats(@RequestBody Map<String, Object> paramsMap);
@PostMapping("/stats/getAreaShjzStats") @PostMapping("/stats/getYearDisabledIssueStats")
ResultVo getAreaShjzStats(@RequestBody Map<String, Object> paramsMap); ResultVo getYearDisabledIssueStats(@RequestBody Map<String, Object> paramsMap);
@PostMapping("/stats/getFivesYearShjzAchieveStats") @PostMapping("/stats/getAreaShjzStats")
ResultVo getFivesYearShjzAchieveStats(@RequestBody Map<String, Object> paramsMap); ResultVo getAreaShjzStats(@RequestBody Map<String, Object> paramsMap);
@PostMapping("/stats/getFivesYearShjzProvideStats") @PostMapping("/stats/getFivesYearShjzAchieveStats")
ResultVo getFivesYearShjzProvideStats(@RequestBody Map<String, Object> paramsMap); ResultVo getFivesYearShjzAchieveStats(@RequestBody Map<String, Object> paramsMap);
@PostMapping("/stats/getSoorganStats") @PostMapping("/stats/getFivesYearShjzProvideStats")
ResultVo getSoorganStats(@RequestBody Map<String, Object> paramsMap); ResultVo getFivesYearShjzProvideStats(@RequestBody Map<String, Object> paramsMap);
@PostMapping("/stats/getAreaUnderSoorganStatsList") @PostMapping("/stats/getSoorganStats")
ResultVo getAreaUnderSoorganStatsList(@RequestBody Map<String, Object> paramsMap); ResultVo getSoorganStats(@RequestBody Map<String, Object> paramsMap);
@PostMapping("/stats/getAppMapStats") @PostMapping("/stats/getAreaUnderSoorganStatsList")
ResultVo getAppMapStats(@RequestBody Map<String, Object> paramsMap); ResultVo getAreaUnderSoorganStatsList(@RequestBody Map<String, Object> paramsMap);
@PostMapping("/stats/gatherSearch") @PostMapping("/stats/getAppMapStats")
ResultVo gatherSearch(@RequestBody Map<String, Object> paramsMap); ResultVo getAppMapStats(@RequestBody Map<String, Object> paramsMap);
@PostMapping("/stats/getAgencyChildStats") @PostMapping("/stats/gatherSearch")
ResultVo getAgencyChildStats(@RequestBody Map<String, Object> paramsMap); ResultVo gatherSearch(@RequestBody Map<String, Object> paramsMap);
@PostMapping("/stats/getAgencyChildStatsList") @PostMapping("/stats/getAgencyChildStats")
ResultVo getAgencyChildStatsList(@RequestBody Map<String, Object> paramsMap); ResultVo getAgencyChildStats(@RequestBody Map<String, Object> paramsMap);
@PostMapping("/stats/getCremationStats") @PostMapping("/stats/getAgencyChildStatsList")
ResultVo getCremationStats(@RequestBody Map<String, Object> paramsMap); ResultVo getAgencyChildStatsList(@RequestBody Map<String, Object> paramsMap);
@PostMapping("/stats/getCremationStatsList") @PostMapping("/stats/getCremationStats")
ResultVo getCremationStatsList(@RequestBody Map<String, Object> paramsMap); ResultVo getCremationStats(@RequestBody Map<String, Object> paramsMap);
@PostMapping("/stats/getCremationStatsById") @PostMapping("/stats/getCremationStatsList")
ResultVo getCremationStatsById(@RequestBody Map<String, Object> paramsMap); ResultVo getCremationStatsList(@RequestBody Map<String, Object> paramsMap);
@PostMapping("/stats/getAreaUnderNumStats") @PostMapping("/stats/getCremationStatsById")
ResultVo getAreaUnderNumStats(@RequestBody Map<String, Object> paramsMap); ResultVo getCremationStatsById(@RequestBody Map<String, Object> paramsMap);
@PostMapping("/stats/getEnjoySubsidyStats") @PostMapping("/stats/getAreaUnderNumStats")
ResultVo getEnjoySubsidyStats(@RequestBody Map<String, Object> paramsMap); ResultVo getAreaUnderNumStats(@RequestBody Map<String, Object> paramsMap);
@PostMapping("/stats/getEnjoySumStatsData") @PostMapping("/stats/getEnjoySubsidyStats")
ResultVo getEnjoySumStatsData(@RequestBody Map<String, Object> paramsMap); ResultVo getEnjoySubsidyStats(@RequestBody Map<String, Object> paramsMap);
}
@PostMapping("/stats/getEnjoySumStatsData")
ResultVo getEnjoySumStatsData(@RequestBody Map<String, Object> paramsMap);
}
package com.zq.api.service; package com.zq.api.service;
import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.codec.Base64; import cn.hutool.core.codec.Base64;
import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import cn.hutool.core.util.URLUtil; import cn.hutool.core.util.URLUtil;
import com.zq.api.dao.ApiLogDao; import com.zq.api.dao.ApiLogDao;
import com.zq.api.entity.ApiLog; import com.zq.api.entity.ApiLog;
import com.zq.api.entity.ApiUser; import com.zq.api.entity.ApiUser;
import com.zq.api.feign.SysFeign; import com.zq.api.feign.SysFeign;
import com.zq.api.form.ApiForm; import com.zq.api.form.ApiForm;
import com.zq.api.form.ApiResp; import com.zq.api.form.ApiResp;
import com.zq.api.utils.ApiUtils; import com.zq.api.utils.ApiUtils;
import com.zq.api.utils.ReflectionUtils; import com.zq.api.utils.ReflectionUtils;
import com.zq.common.config.redis.RedisUtils; import com.zq.common.config.redis.RedisUtils;
import com.zq.common.vo.ApiTokenVo; import com.zq.common.vo.ApiTokenVo;
import com.zq.common.vo.ResultVo; import com.zq.common.vo.ResultVo;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.scheduling.annotation.Async; import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.lang.reflect.Method; import java.lang.reflect.Method;
import java.nio.charset.StandardCharsets; import java.nio.charset.StandardCharsets;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
import java.util.List; import java.util.List;
/** /**
* @author wilmiam * @author wilmiam
* @since 2021-09-28 15:44 * @since 2021-09-28 15:44
*/ */
@Slf4j @Slf4j
@Service @Service
@RequiredArgsConstructor @RequiredArgsConstructor
public class ApiService { public class ApiService {
private final ApiLogDao apiLogDao; private final ApiLogDao apiLogDao;
private final SysFeign sysFeign; private final SysFeign sysFeign;
private final RedisUtils redisUtils; private final RedisUtils redisUtils;
/** /**
* 允许用户未登录状态下执行的方法名 * 允许用户未登录状态下执行的方法名
*/ */
private final String[] allowMethod = {"sendCode", "resetPassword", "phoneLogin", "passwdLogin", "getAppVersion","cremationSearch","marriageSearch","naturalPersonSearch"}; private final String[] allowMethod = {"sendCode", "resetPassword", "phoneLogin", "passwdLogin", "getAppVersion","cremationSearch","marriageSearch","naturalPersonSearch"};
private static final List<String> METHOD_LIST; private static final List<String> METHOD_LIST;
static { static {
METHOD_LIST = methodList(); METHOD_LIST = methodList();
} }
public IApiLogic getApiLogic(ApiForm form) { public IApiLogic getApiLogic(ApiForm form) {
IApiLogic apiLogic = ApiUtils.getApiLogic(form); IApiLogic apiLogic = ApiUtils.getApiLogic(form);
return apiLogic; return apiLogic;
} }
public static List<String> methodList() { public static List<String> methodList() {
List<String> methodList = new ArrayList<>(); List<String> methodList = new ArrayList<>();
Method[] methods = IApiLogic.class.getMethods(); Method[] methods = IApiLogic.class.getMethods();
for (Method method : methods) { for (Method method : methods) {
Class<?>[] params = method.getParameterTypes(); Class<?>[] params = method.getParameterTypes();
if (params.length == 1 && (params[0] == ApiForm.class)) { if (params.length == 1 && (params[0] == ApiForm.class)) {
methodList.add(method.getName()); methodList.add(method.getName());
} }
} }
return methodList; return methodList;
} }
public ApiResp action(ApiForm form) throws Exception { public ApiResp action(ApiForm form) throws Exception {
if (!METHOD_LIST.contains(form.getMethod())) { if (!METHOD_LIST.contains(form.getMethod())) {
return ApiUtils.getMethodError(form); return ApiUtils.getMethodError(form);
} }
// 调用接口方法,利用反射更简洁 // 调用接口方法,利用反射更简洁
IApiLogic apiLogic = getApiLogic(form); IApiLogic apiLogic = getApiLogic(form);
return (ApiResp) ReflectionUtils.invokeMethod(apiLogic, form.getMethod(), new Class<?>[]{ApiForm.class}, new Object[]{form}); return (ApiResp) ReflectionUtils.invokeMethod(apiLogic, form.getMethod(), new Class<?>[]{ApiForm.class}, new Object[]{form});
} }
/** /**
* 身份验证 * 身份验证
* *
* @param form * @param form
* @param appId * @param appId
* @param appSecret * @param appSecret
* @return * @return
*/ */
public ApiResp auth(ApiForm form, String appId, String appSecret, String token) { public ApiResp auth(ApiForm form, String appId, String appSecret, String token) {
boolean contains = Arrays.asList(allowMethod).contains(form.getMethod()); boolean contains = Arrays.asList(allowMethod).contains(form.getMethod());
if (contains) { if (contains) {
return ApiUtils.getSuccessResp(form); return ApiUtils.getSuccessResp(form);
} else if (StrUtil.isBlank(token)) { } else if (StrUtil.isBlank(token)) {
return ApiUtils.getLoginValidError(form); return ApiUtils.getLoginValidError(form);
} }
ResultVo resultVo = sysFeign.getApiUserByAppId(appId, appSecret); ResultVo resultVo = sysFeign.getApiUserByAppId(appId, appSecret);
if (!resultVo.isSuccess() || resultVo.getData() == null) { if (!resultVo.isSuccess() || resultVo.getData() == null) {
return ApiUtils.getAppIdValidError(form); return ApiUtils.getAppIdValidError(form);
} }
// 认证签名 // 认证签名
String key = redisUtils.getStr("civil.apiKey." + token); String key = redisUtils.getStr("civil.apiKey." + token);
String sign = ApiUtils.getSign(form.getSignStr(key == null ? "" : key)); String sign = ApiUtils.getSign(form.getSignStr(key == null ? "" : key));
if (!sign.equals(form.getSign())) { if (!sign.equals(form.getSign())) {
return ApiUtils.getCheckSignValidError(form); return ApiUtils.getCheckSignValidError(form);
} }
ApiUser apiUser = BeanUtil.copyProperties(resultVo.getData(), ApiUser.class); ApiUser apiUser = BeanUtil.copyProperties(resultVo.getData(), ApiUser.class);
ApiTokenVo apiTokenVo = ApiTokenVo.builder() ApiTokenVo apiTokenVo = ApiTokenVo.builder()
.userId(apiUser.getId()) .userId(apiUser.getId())
.name(apiUser.getName()) .name(apiUser.getName())
.roleLevel(apiUser.getRoleLevel()) .roleLevel(apiUser.getRoleLevel())
.build(); .build();
form.setUserId(apiUser.getId() == null ? null : apiUser.getId().toString()); form.setUserId(apiUser.getId() == null ? null : apiUser.getId().toString());
form.setAppId(apiUser.getAppId()); form.setAppId(apiUser.getAppId());
form.setApiTokenVo(apiTokenVo); form.setApiTokenVo(apiTokenVo);
return ApiUtils.getSuccessResp(form); return ApiUtils.getSuccessResp(form);
} }
@Async @Async
public void addLog(ApiForm form, String ip, String logType, String respMsg, String errorInfo, Long timeCost) { public void addLog(ApiForm form, String ip, String logType, String respMsg, String errorInfo, Long timeCost) {
apiLogDao.insert(ApiLog.builder() apiLogDao.insert(ApiLog.builder()
.appId(form.getAppId()) .appId(form.getAppId())
.userId(form.getUserId()) .userId(form.getUserId())
.method(form.getMethod()) .method(form.getMethod())
.version(form.getVersion()) .version(form.getVersion())
.bizContent(form.getBizContent()) .bizContent(form.getBizContent())
.ip(ip) .ip(ip)
.logType(logType) .logType(logType)
.respMsg(respMsg) .respMsg(respMsg)
.stackTrace(errorInfo) .stackTrace(errorInfo)
.timeCost(timeCost) .timeCost(timeCost)
.createTime(DateUtil.date().toJdkDate()) .createTime(DateUtil.date().toJdkDate())
.build()); .build());
} }
} }
package com.zq.api.service; package com.zq.api.service;
import com.zq.api.constant.ApiMethod; import com.zq.api.constant.ApiMethod;
import com.zq.api.form.ApiForm; import com.zq.api.form.ApiForm;
import com.zq.api.form.ApiResp; import com.zq.api.form.ApiResp;
/** /**
* api实现接口 * api实现接口
* <p> * <p>
* 2016年9月29日 上午11:45:08 * 2016年9月29日 上午11:45:08
*/ */
public interface IApiLogic extends IApiCommon { public interface IApiLogic extends IApiCommon {
/*↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓SYS APP接口↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓*/ /*↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓SYS APP接口↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓*/
@ApiMethod(name = "获取用户信息", service = "SYS-SERVER") @ApiMethod(name = "获取用户信息", service = "SYS-SERVER")
ApiResp getUserInfo(ApiForm form); ApiResp getUserInfo(ApiForm form);
@ApiMethod(name = "发送验证码", service = "SYS-SERVER") @ApiMethod(name = "发送验证码", service = "SYS-SERVER")
ApiResp sendCode(ApiForm form); ApiResp sendCode(ApiForm form);
@ApiMethod(name = "重置密码", service = "SYS-SERVER") @ApiMethod(name = "重置密码", service = "SYS-SERVER")
ApiResp resetPassword(ApiForm form); ApiResp resetPassword(ApiForm form);
@ApiMethod(name = "用户手机号登录", service = "SYS-SERVER") @ApiMethod(name = "用户手机号登录", service = "SYS-SERVER")
ApiResp phoneLogin(ApiForm form); ApiResp phoneLogin(ApiForm form);
@ApiMethod(name = "密码登录", service = "SYS-SERVER") @ApiMethod(name = "密码登录", service = "SYS-SERVER")
ApiResp passwdLogin(ApiForm form); ApiResp passwdLogin(ApiForm form);
/*↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓门户接口↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓*/ /*↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓门户接口↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓*/
@ApiMethod(name = "获取婚姻统计", service = "PORTAL-SERVER") @ApiMethod(name = "获取婚姻统计", service = "PORTAL-SERVER")
ApiResp getMarriageStats(ApiForm form); ApiResp getMarriageStats(ApiForm form);
@ApiMethod(name = "获取区域下的婚姻统计列表", service = "PORTAL-SERVER") @ApiMethod(name = "获取1年结婚离婚对数", service = "PORTAL-SERVER")
ApiResp getAreaUnderMarriageStatsList(ApiForm form); ApiResp getYearMarriedCouple(ApiForm form);
@ApiMethod(name = "获取近5年婚姻走势", service = "PORTAL-SERVER") @ApiMethod(name = "获取区域下的婚姻统计列表", service = "PORTAL-SERVER")
ApiResp getFivesYearMarriageLine(ApiForm form); ApiResp getAreaUnderMarriageStatsList(ApiForm form);
@ApiMethod(name = "获取区域残疾发放统计", service = "PORTAL-SERVER") @ApiMethod(name = "获取近5年婚姻走势", service = "PORTAL-SERVER")
ApiResp getAreaDisabledIssueStats(ApiForm form); ApiResp getFivesYearMarriageLine(ApiForm form);
@ApiMethod(name = "近五年发放人数和金额统计", service = "PORTAL-SERVER") @ApiMethod(name = "获取区域残疾发放统计", service = "PORTAL-SERVER")
ApiResp getYearDisabledIssueStats(ApiForm form); ApiResp getAreaDisabledIssueStats(ApiForm form);
@ApiMethod(name = "获取在享补贴统计", service = "PORTAL-SERVER") @ApiMethod(name = "近五年发放人数和金额统计", service = "PORTAL-SERVER")
ApiResp getEnjoySubsidyStats(ApiForm form); ApiResp getYearDisabledIssueStats(ApiForm form);
@ApiMethod(name = "获取区域统计列表", service = "PORTAL-SERVER") @ApiMethod(name = "获取在享补贴统计", service = "PORTAL-SERVER")
ApiResp getAreaShjzStats(ApiForm form); ApiResp getEnjoySubsidyStats(ApiForm form);
@ApiMethod(name = "获取区域社会救助统计列表", service = "PORTAL-SERVER") @ApiMethod(name = "获取区域统计列表", service = "PORTAL-SERVER")
ApiResp getAreaUnderNumStats(ApiForm form); ApiResp getAreaShjzStats(ApiForm form);
@ApiMethod(name = "获取近五年城市农村低保发放人数统计", service = "PORTAL-SERVER") @ApiMethod(name = "获取区域社会救助统计列表", service = "PORTAL-SERVER")
ApiResp getFivesYearShjzAchieveStats(ApiForm form); ApiResp getAreaUnderNumStats(ApiForm form);
@ApiMethod(name = "获取近五年城市农村低保发放金额统计", service = "PORTAL-SERVER") @ApiMethod(name = "获取近五年城市农村低保发放人数统计", service = "PORTAL-SERVER")
ApiResp getFivesYearShjzProvideStats(ApiForm form); ApiResp getFivesYearShjzAchieveStats(ApiForm form);
@ApiMethod(name = "修改登录密码", service = "PORTAL-SERVER") @ApiMethod(name = "获取近五年城市农村低保发放金额统计", service = "PORTAL-SERVER")
ApiResp modifyPasswd(ApiForm form); ApiResp getFivesYearShjzProvideStats(ApiForm form);
@ApiMethod(name = "获取App最新版本", service = "PORTAL-SERVER") @ApiMethod(name = "修改登录密码", service = "PORTAL-SERVER")
ApiResp getAppVersion(ApiForm form); ApiResp modifyPasswd(ApiForm form);
@ApiMethod(name = "获取子区域列表", service = "PORTAL-SERVER") @ApiMethod(name = "获取App最新版本", service = "PORTAL-SERVER")
ApiResp getChildAreaList(ApiForm form); ApiResp getAppVersion(ApiForm form);
@ApiMethod(name = "获取社会机构统计", service = "PORTAL-SERVER") @ApiMethod(name = "获取子区域列表", service = "PORTAL-SERVER")
ApiResp getSoorganStats(ApiForm form); ApiResp getChildAreaList(ApiForm form);
@ApiMethod(name = "获取地区下面社会机构统计列表", service = "PORTAL-SERVER") @ApiMethod(name = "获取社会机构统计", service = "PORTAL-SERVER")
ApiResp getAreaUnderSoorganStatsList(ApiForm form); ApiResp getSoorganStats(ApiForm form);
@ApiMethod(name = "获取App首页地图数据", service = "PORTAL-SERVER") @ApiMethod(name = "获取地区下面社会机构统计列表", service = "PORTAL-SERVER")
ApiResp getAppMapStats(ApiForm form); ApiResp getAreaUnderSoorganStatsList(ApiForm form);
@ApiMethod(name = "汇总搜索", service = "PORTAL-SERVER") @ApiMethod(name = "获取App首页地图数据", service = "PORTAL-SERVER")
ApiResp gatherSearch(ApiForm form); ApiResp getAppMapStats(ApiForm form);
@ApiMethod(name = "指定区域下的儿童福利数据统计", service = "PORTAL-SERVER") @ApiMethod(name = "汇总搜索", service = "PORTAL-SERVER")
ApiResp getAgencyChildStats(ApiForm form); ApiResp gatherSearch(ApiForm form);
@ApiMethod(name = "指定区域下级区域的儿童福利数据统计列表", service = "PORTAL-SERVER") @ApiMethod(name = "指定区域下的儿童福利数据统计", service = "PORTAL-SERVER")
ApiResp getAgencyChildStatsList(ApiForm form); ApiResp getAgencyChildStats(ApiForm form);
@ApiMethod(name = "火化量统计", service = "PORTAL-SERVER") @ApiMethod(name = "指定区域下级区域的儿童福利数据统计列表", service = "PORTAL-SERVER")
ApiResp getCremationStats(ApiForm form); ApiResp getAgencyChildStatsList(ApiForm form);
@ApiMethod(name = "火化量统计列表", service = "PORTAL-SERVER") @ApiMethod(name = "火化量统计", service = "PORTAL-SERVER")
ApiResp getCremationStatsList(ApiForm form); ApiResp getCremationStats(ApiForm form);
@ApiMethod(name = "殡仪馆火化量统计列表", service = "PORTAL-SERVER") @ApiMethod(name = "火化量统计列表", service = "PORTAL-SERVER")
ApiResp getCremationStatsById(ApiForm form); ApiResp getCremationStatsList(ApiForm form);
/*↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓SYS单点登录接口↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓*/ @ApiMethod(name = "殡仪馆火化量统计列表", service = "PORTAL-SERVER")
ApiResp getCremationStatsById(ApiForm form);
@ApiMethod(name = "获取单点登录用户信息", service = "SYS-SERVER")
ApiResp getSsoUserInfo(ApiForm form); /*↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓SYS单点登录接口↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓*/
@ApiMethod(name = "单点登出", service = "SYS-SERVER") @ApiMethod(name = "获取单点登录用户信息", service = "SYS-SERVER")
ApiResp ssoLogout(ApiForm form); ApiResp getSsoUserInfo(ApiForm form);
/*↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓开放接口↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓*/ @ApiMethod(name = "单点登出", service = "SYS-SERVER")
ApiResp ssoLogout(ApiForm form);
@ApiMethod(name = "婚姻搜索接口", service = "OPEN-SERVER") /*↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓开放接口↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓*/
ApiResp marriageSearch(ApiForm form);
@ApiMethod(name = "自然人搜索接口", service = "OPEN-SERVER") @ApiMethod(name = "婚姻搜索接口", service = "OPEN-SERVER")
ApiResp naturalPersonSearch(ApiForm form); ApiResp marriageSearch(ApiForm form);
@ApiMethod(name = "火化搜索接口", service = "OPEN-SERVER") @ApiMethod(name = "自然人搜索接口", service = "OPEN-SERVER")
ApiResp cremationSearch(ApiForm form); ApiResp naturalPersonSearch(ApiForm form);
}
@ApiMethod(name = "火化搜索接口", service = "OPEN-SERVER")
ApiResp cremationSearch(ApiForm form);
}
package com.zq.api.service.impl; package com.zq.api.service.impl;
import com.zq.api.feign.OpenFeign; import com.zq.api.feign.OpenFeign;
import com.zq.api.feign.PortalFeign; import com.zq.api.feign.PortalFeign;
import com.zq.api.feign.SysFeign; import com.zq.api.feign.SysFeign;
import com.zq.api.form.ApiForm; import com.zq.api.form.ApiForm;
import com.zq.api.form.ApiResp; import com.zq.api.form.ApiResp;
import com.zq.api.service.IApiLogic; import com.zq.api.service.IApiLogic;
import com.zq.api.utils.ApiUtils; import com.zq.api.utils.ApiUtils;
import com.zq.common.config.security.ApiTokenUtils; import com.zq.common.config.security.ApiTokenUtils;
import com.zq.common.vo.ApiTokenVo; import com.zq.common.vo.ApiTokenVo;
import com.zq.common.vo.ResultVo; import com.zq.common.vo.ResultVo;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import java.util.Map; import java.util.Map;
@Component @Component
public class ApiV100Logic extends BaseApiLogic implements IApiLogic { public class ApiV100Logic extends BaseApiLogic implements IApiLogic {
@Autowired @Autowired
private SysFeign sysFeign; private SysFeign sysFeign;
@Autowired @Autowired
private PortalFeign portalFeign; private PortalFeign portalFeign;
@Autowired @Autowired
private OpenFeign openFeign; private OpenFeign openFeign;
@Override @Override
public ApiResp getUserInfo(ApiForm form) { public ApiResp getUserInfo(ApiForm form) {
return ApiUtils.toApiResp(form, ResultVo.success(ApiTokenUtils.getAppTokenVo(form.getToken()))); return ApiUtils.toApiResp(form, ResultVo.success(ApiTokenUtils.getAppTokenVo(form.getToken())));
} }
@Override @Override
public ApiResp sendCode(ApiForm form) { public ApiResp sendCode(ApiForm form) {
return ApiUtils.toApiResp(form, sysFeign.sendCode(form.getString("phone"))); return ApiUtils.toApiResp(form, sysFeign.sendCode(form.getString("phone")));
} }
@Override @Override
public ApiResp resetPassword(ApiForm form) { public ApiResp resetPassword(ApiForm form) {
return ApiUtils.toApiResp(form, sysFeign.resetPassword(form.getParamsMap())); return ApiUtils.toApiResp(form, sysFeign.resetPassword(form.getParamsMap()));
} }
@Override @Override
public ApiResp phoneLogin(ApiForm form) { public ApiResp phoneLogin(ApiForm form) {
return ApiUtils.toApiResp(form, sysFeign.phoneLogin(form.getParamsMap())); return ApiUtils.toApiResp(form, sysFeign.phoneLogin(form.getParamsMap()));
} }
@Override @Override
public ApiResp passwdLogin(ApiForm form) { public ApiResp passwdLogin(ApiForm form) {
return ApiUtils.toApiResp(form, sysFeign.passwdLogin(form.getParamsMap())); return ApiUtils.toApiResp(form, sysFeign.passwdLogin(form.getParamsMap()));
} }
@Override @Override
public ApiResp modifyPasswd(ApiForm form) { public ApiResp modifyPasswd(ApiForm form) {
return ApiUtils.toApiResp(form, sysFeign.modifyPasswd(form.getParamsMap())); return ApiUtils.toApiResp(form, sysFeign.modifyPasswd(form.getParamsMap()));
} }
@Override @Override
public ApiResp getAppVersion(ApiForm form) { public ApiResp getAppVersion(ApiForm form) {
return ApiUtils.toApiResp(form, sysFeign.getAppVersion(form.getString("appName"))); return ApiUtils.toApiResp(form, sysFeign.getAppVersion(form.getString("appName")));
} }
@Override @Override
public ApiResp getChildAreaList(ApiForm form) { public ApiResp getChildAreaList(ApiForm form) {
return ApiUtils.toApiResp(form, portalFeign.getChildAreaList(form.getString("areaCode"))); return ApiUtils.toApiResp(form, portalFeign.getChildAreaList(form.getString("areaCode")));
} }
@Override @Override
public ApiResp getMarriageStats(ApiForm form) { public ApiResp getMarriageStats(ApiForm form) {
return ApiUtils.toApiResp(form, portalFeign.getMarriageStats(form.getParamsMap())); return ApiUtils.toApiResp(form, portalFeign.getMarriageStats(form.getParamsMap()));
} }
@Override @Override
public ApiResp getAreaUnderMarriageStatsList(ApiForm form) { public ApiResp getYearMarriedCouple(ApiForm form) {
return ApiUtils.toApiResp(form, portalFeign.getAreaUnderMarriageStatsList(form.getParamsMap())); return ApiUtils.toApiResp(form, portalFeign.getYearMarriedCouple(form.getParamsMap()));
} }
@Override @Override
public ApiResp getFivesYearMarriageLine(ApiForm form) { public ApiResp getAreaUnderMarriageStatsList(ApiForm form) {
return ApiUtils.toApiResp(form, portalFeign.getFivesYearMarriageLine(form.getParamsMap())); return ApiUtils.toApiResp(form, portalFeign.getAreaUnderMarriageStatsList(form.getParamsMap()));
} }
@Override @Override
public ApiResp getAreaDisabledIssueStats(ApiForm form) { public ApiResp getFivesYearMarriageLine(ApiForm form) {
return ApiUtils.toApiResp(form, portalFeign.getAreaDisabledIssueStats(form.getParamsMap())); return ApiUtils.toApiResp(form, portalFeign.getFivesYearMarriageLine(form.getParamsMap()));
} }
@Override @Override
public ApiResp getYearDisabledIssueStats(ApiForm form) { public ApiResp getAreaDisabledIssueStats(ApiForm form) {
return ApiUtils.toApiResp(form, portalFeign.getYearDisabledIssueStats(form.getParamsMap())); return ApiUtils.toApiResp(form, portalFeign.getAreaDisabledIssueStats(form.getParamsMap()));
} }
@Override @Override
public ApiResp getEnjoySubsidyStats(ApiForm form) { public ApiResp getYearDisabledIssueStats(ApiForm form) {
return ApiUtils.toApiResp(form, portalFeign.getEnjoySubsidyStats(form.getParamsMap())); return ApiUtils.toApiResp(form, portalFeign.getYearDisabledIssueStats(form.getParamsMap()));
} }
@Override @Override
public ApiResp getAreaShjzStats(ApiForm form) { public ApiResp getEnjoySubsidyStats(ApiForm form) {
return ApiUtils.toApiResp(form, portalFeign.getAreaShjzStats(form.getParamsMap())); return ApiUtils.toApiResp(form, portalFeign.getEnjoySubsidyStats(form.getParamsMap()));
} }
@Override @Override
public ApiResp getAreaUnderNumStats(ApiForm form) { public ApiResp getAreaShjzStats(ApiForm form) {
return ApiUtils.toApiResp(form, portalFeign.getAreaUnderNumStats(form.getParamsMap())); return ApiUtils.toApiResp(form, portalFeign.getAreaShjzStats(form.getParamsMap()));
} }
@Override @Override
public ApiResp getFivesYearShjzAchieveStats(ApiForm form) { public ApiResp getAreaUnderNumStats(ApiForm form) {
return ApiUtils.toApiResp(form, portalFeign.getFivesYearShjzAchieveStats(form.getParamsMap())); return ApiUtils.toApiResp(form, portalFeign.getAreaUnderNumStats(form.getParamsMap()));
} }
@Override @Override
public ApiResp getFivesYearShjzProvideStats(ApiForm form) { public ApiResp getFivesYearShjzAchieveStats(ApiForm form) {
return ApiUtils.toApiResp(form, portalFeign.getFivesYearShjzProvideStats(form.getParamsMap())); return ApiUtils.toApiResp(form, portalFeign.getFivesYearShjzAchieveStats(form.getParamsMap()));
} }
@Override @Override
public ApiResp getSoorganStats(ApiForm form) { public ApiResp getFivesYearShjzProvideStats(ApiForm form) {
return ApiUtils.toApiResp(form, portalFeign.getSoorganStats(form.getParamsMap())); return ApiUtils.toApiResp(form, portalFeign.getFivesYearShjzProvideStats(form.getParamsMap()));
} }
@Override @Override
public ApiResp getAreaUnderSoorganStatsList(ApiForm form) { public ApiResp getSoorganStats(ApiForm form) {
return ApiUtils.toApiResp(form, portalFeign.getAreaUnderSoorganStatsList(form.getParamsMap())); return ApiUtils.toApiResp(form, portalFeign.getSoorganStats(form.getParamsMap()));
} }
@Override @Override
public ApiResp getAppMapStats(ApiForm form) { public ApiResp getAreaUnderSoorganStatsList(ApiForm form) {
return ApiUtils.toApiResp(form, portalFeign.getAppMapStats(form.getParamsMap())); return ApiUtils.toApiResp(form, portalFeign.getAreaUnderSoorganStatsList(form.getParamsMap()));
} }
@Override @Override
public ApiResp gatherSearch(ApiForm form) { public ApiResp getAppMapStats(ApiForm form) {
return ApiUtils.toApiResp(form, portalFeign.gatherSearch(form.getParamsMap())); return ApiUtils.toApiResp(form, portalFeign.getAppMapStats(form.getParamsMap()));
} }
@Override @Override
public ApiResp getAgencyChildStats(ApiForm form) { public ApiResp gatherSearch(ApiForm form) {
return ApiUtils.toApiResp(form, portalFeign.getAgencyChildStats(form.getParamsMap())); return ApiUtils.toApiResp(form, portalFeign.gatherSearch(form.getParamsMap()));
} }
@Override @Override
public ApiResp getAgencyChildStatsList(ApiForm form) { public ApiResp getAgencyChildStats(ApiForm form) {
return ApiUtils.toApiResp(form, portalFeign.getAgencyChildStatsList(form.getParamsMap())); return ApiUtils.toApiResp(form, portalFeign.getAgencyChildStats(form.getParamsMap()));
} }
@Override @Override
public ApiResp getCremationStats(ApiForm form) { public ApiResp getAgencyChildStatsList(ApiForm form) {
return ApiUtils.toApiResp(form, portalFeign.getCremationStats(form.getParamsMap())); return ApiUtils.toApiResp(form, portalFeign.getAgencyChildStatsList(form.getParamsMap()));
} }
@Override @Override
public ApiResp getCremationStatsList(ApiForm form) { public ApiResp getCremationStats(ApiForm form) {
return ApiUtils.toApiResp(form, portalFeign.getCremationStatsList(form.getParamsMap())); return ApiUtils.toApiResp(form, portalFeign.getCremationStats(form.getParamsMap()));
} }
@Override @Override
public ApiResp getCremationStatsById(ApiForm form) { public ApiResp getCremationStatsList(ApiForm form) {
return ApiUtils.toApiResp(form, portalFeign.getCremationStatsById(form.getParamsMap())); return ApiUtils.toApiResp(form, portalFeign.getCremationStatsList(form.getParamsMap()));
} }
@Override @Override
public ApiResp getSsoUserInfo(ApiForm form) { public ApiResp getCremationStatsById(ApiForm form) {
return ApiUtils.toApiResp(form, sysFeign.getSsoUserInfo(form.getAppId())); return ApiUtils.toApiResp(form, portalFeign.getCremationStatsById(form.getParamsMap()));
} }
@Override @Override
public ApiResp ssoLogout(ApiForm form) { public ApiResp getSsoUserInfo(ApiForm form) {
return ApiUtils.toApiResp(form, sysFeign.ssoLogout()); return ApiUtils.toApiResp(form, sysFeign.getSsoUserInfo(form.getAppId()));
} }
@Override @Override
public ApiResp marriageSearch(ApiForm form) { public ApiResp ssoLogout(ApiForm form) {
Map<String, Object> paramsMap = form.getParamsMap(); return ApiUtils.toApiResp(form, sysFeign.ssoLogout());
ApiTokenVo apiTokenVo = form.getApiTokenVo(); }
if (apiTokenVo != null && apiTokenVo.getRoleLevel() == 1) {
paramsMap.put("queryType", 1); @Override
} public ApiResp marriageSearch(ApiForm form) {
return ApiUtils.toApiResp(form, openFeign.marriageSearch(paramsMap)); Map<String, Object> paramsMap = form.getParamsMap();
} ApiTokenVo apiTokenVo = form.getApiTokenVo();
if (apiTokenVo != null && apiTokenVo.getRoleLevel() == 1) {
@Override paramsMap.put("queryType", 1);
public ApiResp naturalPersonSearch(ApiForm form) { }
return ApiUtils.toApiResp(form, openFeign.naturalPersonSearch(form.getParamsMap())); return ApiUtils.toApiResp(form, openFeign.marriageSearch(paramsMap));
} }
@Override @Override
public ApiResp cremationSearch(ApiForm form) { public ApiResp naturalPersonSearch(ApiForm form) {
return ApiUtils.toApiResp(form, openFeign.cremationSearch(form.getParamsMap())); return ApiUtils.toApiResp(form, openFeign.naturalPersonSearch(form.getParamsMap()));
} }
}
@Override
public ApiResp cremationSearch(ApiForm form) {
return ApiUtils.toApiResp(form, openFeign.cremationSearch(form.getParamsMap()));
}
}
package com.zq.portal.controller.app; package com.zq.portal.controller.app;
import com.zq.common.vo.ResultVo; import com.zq.common.vo.ResultVo;
import com.zq.portal.entity.VMarriageStats; import com.zq.portal.entity.VMarriageStats;
import com.zq.portal.service.HyStatsService; import com.zq.portal.service.HyStatsService;
import com.zq.portal.vo.StatsReqVo; import com.zq.portal.vo.StatsReqVo;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody; 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;
@Api(tags = "婚姻相关接口") @Api(tags = "婚姻相关接口")
@RequiredArgsConstructor @RequiredArgsConstructor
@RestController @RestController
@RequestMapping(value = "/portal/app/stats") @RequestMapping(value = "/portal/app/stats")
public class HyStatsController { public class HyStatsController {
public final HyStatsService hyStatsService; public final HyStatsService hyStatsService;
@ApiOperation("获取结婚离婚人数") @ApiOperation("获取结婚离婚人数")
@PostMapping(value = "/getMarriageStats") @PostMapping(value = "/getMarriageStats")
public ResultVo<VMarriageStats> getMarriageStats(@RequestBody StatsReqVo vo) { public ResultVo<VMarriageStats> getMarriageStats(@RequestBody StatsReqVo vo) {
return ResultVo.success(hyStatsService.getCacheMarriageStats(vo)); return ResultVo.success(hyStatsService.getCacheMarriageStats(vo));
} }
@ApiOperation("获取地区下面婚姻统计列表") @ApiOperation("获取地区下面婚姻统计列表")
@PostMapping(value = "/getAreaUnderMarriageStatsList") @PostMapping(value = "/getAreaUnderMarriageStatsList")
public ResultVo getAreaUnderMarriageStatsList(@RequestBody StatsReqVo vo) { public ResultVo getAreaUnderMarriageStatsList(@RequestBody StatsReqVo vo) {
return ResultVo.success(hyStatsService.getCacheAreaUnderMarriageStatsList(vo)); return ResultVo.success(hyStatsService.getCacheAreaUnderMarriageStatsList(vo));
} }
@ApiOperation("获取近5年结婚离婚走势") @ApiOperation("获取近5年结婚离婚走势")
@PostMapping(value = "/getFivesYearMarriageLine") @PostMapping(value = "/getFivesYearMarriageLine")
public ResultVo getFivesYearMarriageLine(@RequestBody StatsReqVo vo) { public ResultVo getFivesYearMarriageLine(@RequestBody StatsReqVo vo) {
return ResultVo.success(hyStatsService.getCacheFivesYearMarriageLine(vo)); return ResultVo.success(hyStatsService.getCacheFivesYearMarriageLine(vo));
} }
} @ApiOperation("获取1年结婚离婚对数")
@PostMapping(value = "/getYearMarriedCouple")
public ResultVo getYearMarriedCouple(@RequestBody StatsReqVo vo) {
return ResultVo.success(hyStatsService.getCacheYearMarriedCouple(vo));
}
}
package com.zq.portal.dao; 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.SearchReqVo; import com.zq.portal.vo.SearchReqVo;
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.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
@DS(DBName.GXHY) @DS(DBName.GXHY)
@Repository @Repository
public interface HyStatsDao { public interface HyStatsDao {
/** /**
* 获取近5年的折线 * 获取近5年的折线
* *
* @return * @return
*/ */
List<StatsVo> getFivesYearMarriageLine(StatsReqVo vo); List<StatsVo> getFivesYearMarriageLine(StatsReqVo vo);
/** /**
* 月统计折线 * 月统计折线
* *
* @return * @return
*/ */
List<StatsVo> getMonthMarriageLine(StatsReqVo vo); List<StatsVo> getMonthMarriageLine(StatsReqVo vo);
/** /**
* 获取结婚离婚人数 * 获取结婚离婚人数
* *
* @param vo * @param vo
* @return * @return
*/ */
List<StatsVo> getMarriageStats(StatsReqVo vo); List<StatsVo> getMarriageStats(StatsReqVo vo);
/** /**
* 获取下级区域婚姻统计列表 * 获取下级区域婚姻统计列表
* *
* @param vo * @param vo
* @return * @return
*/ */
List<StatsVo> getAreaUnderMarriageStatsList(StatsReqVo vo); List<StatsVo> getAreaUnderMarriageStatsList(StatsReqVo vo);
/** /**
* 获取跨地结婚离婚人数 * 获取跨地结婚离婚人数
* *
* @param vo * @param vo
* @return * @return
*/ */
List<StatsVo> getCrossMarriageStats(StatsReqVo vo); List<StatsVo> getCrossMarriageStats(StatsReqVo vo);
// 获取结婚人数 // 获取结婚人数
StatsVo getMarryNum(StatsReqVo vo); StatsVo getMarryNum(StatsReqVo vo);
// 获取离婚中的人数 // 获取离婚中的人数
StatsVo getInDivorceNum(StatsReqVo vo); StatsVo getInDivorceNum(StatsReqVo vo);
// 获取每月冷静期数据 // 获取每月冷静期数据
List<StatsVo> getMonthDivorceCoolingData(StatsReqVo vo); List<StatsVo> getMonthDivorceCoolingData(StatsReqVo vo);
/** /**
* 搜索 * 搜索
* *
* @param vo * @param vo
* @return * @return
*/ */
List<Map<String, Object>> search(SearchReqVo vo); List<Map<String, Object>> search(SearchReqVo vo);
} /**
* 获取结婚离婚对数
*
* @param vo
* @return
*/
List<StatsVo> getYearMarriedCouple(StatsReqVo vo);
}
package com.zq.portal.entity; package com.zq.portal.entity;
import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Builder; import lombok.Builder;
import lombok.Data; import lombok.Data;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
import java.util.Date; import java.util.Date;
/** /**
* 地区婚姻统计(VMarriageStats)实体类 * 地区婚姻统计(VMarriageStats)实体类
* *
* @author makejava * @author makejava
* @since 2021-06-24 11:57:43 * @since 2021-06-24 11:57:43
*/ */
@Data @Data
@AllArgsConstructor @AllArgsConstructor
@NoArgsConstructor @NoArgsConstructor
@Builder @Builder
@TableName(value = "v_marriage_stats") @TableName(value = "v_marriage_stats")
public class VMarriageStats { public class VMarriageStats {
/** /**
* id * id
*/ */
@TableId(type = IdType.AUTO) @TableId(type = IdType.AUTO)
private Long id; private Long id;
/** /**
* 区域码 * 区域码
*/ */
@ApiModelProperty("区域码") @ApiModelProperty("区域码")
private String areaCode; private String areaCode;
/** /**
* 区域名 * 区域名
*/ */
@ApiModelProperty("区域名") @ApiModelProperty("区域名")
private String areaName; private String areaName;
/** /**
* 年份 * 年份
*/ */
@ApiModelProperty("年份") @ApiModelProperty("年份")
private Integer year; private Integer year;
/** /**
* 结婚人数 * 结婚人数
*/ */
@ApiModelProperty("结婚人数") @ApiModelProperty("结婚人数")
private Integer marryNum; private Integer marryNum;
/** /**
* 申请离婚人数 * 申请离婚人数
*/ */
@ApiModelProperty("申请离婚人数") @ApiModelProperty("申请离婚人数")
private Integer inDivorceNum; private Integer inDivorceNum;
/** /**
* 离婚成功 * 离婚成功
*/ */
@ApiModelProperty("离婚成功") @ApiModelProperty("离婚成功")
private Integer divorceNum; private Integer divorceNum;
/** /**
* 跨地区结婚人数 * 跨地区结婚人数
*/ */
@ApiModelProperty("跨地区结婚人数") @ApiModelProperty("跨地区结婚人数")
private Integer crossMarryNum; private Integer crossMarryNum;
/** /**
* 跨地区离婚人数 * 跨地区离婚人数
*/ */
@ApiModelProperty("跨地区离婚人数") @ApiModelProperty("跨地区离婚人数")
private Integer crossDivorceNum; private Integer crossDivorceNum;
/** /**
* 跨地区结婚人数 * 跨地区结婚人数
*/ */
@ApiModelProperty("补领结婚证人数") @ApiModelProperty("补领结婚证人数")
private Integer patchMarryCaNum; private Integer patchMarryCaNum;
/** /**
* 补领离婚证人数 * 补领离婚证人数
*/ */
@ApiModelProperty("补领离婚证人数") @ApiModelProperty("补领离婚证人数")
private Integer patchDivorceCaNum; private Integer patchDivorceCaNum;
/** /**
* createTime * createTime
*/ */
private Date createTime; private Date createTime;
} }
package com.zq.portal.manager; package com.zq.portal.manager;
import com.zq.portal.vo.StatsReqVo; import com.zq.portal.vo.StatsReqVo;
public abstract class PortalCacheKeys { public abstract class PortalCacheKeys {
public static final String PREFIX = "portal."; public static final String PREFIX = "portal.";
// 获取婚姻统计列表key // 获取婚姻统计列表key
public static String getAreaUnderMarriageStatsListKey(StatsReqVo vo) { public static String getAreaUnderMarriageStatsListKey(StatsReqVo vo) {
return PREFIX + "getAreaUnderMarriageStatsList." + vo.getAreaCode() + "." + vo.getYear(); return PREFIX + "getAreaUnderMarriageStatsList." + vo.getAreaCode() + "." + vo.getYear();
} }
// 获取婚姻统计key // 获取婚姻统计key
public static String getMarriageStatsKey(StatsReqVo vo) { public static String getMarriageStatsKey(StatsReqVo vo) {
return PREFIX + "getMarriageStats." + vo.getAreaCode() + "." + vo.getYear(); return PREFIX + "getMarriageStats." + vo.getAreaCode() + "." + vo.getYear();
} }
// 获取近5年结婚离婚走势key // 获取近5年结婚离婚走势key
public static String getFivesYearMarriageLineKey(String areaCode) { public static String getFivesYearMarriageLineKey(String areaCode) {
return PREFIX + "getFivesYearMarriageLine." + areaCode; return PREFIX + "getFivesYearMarriageLine." + areaCode;
} }
// 获取近一年每个月结婚离婚走势key // 获取近一年每个月结婚离婚走势key
public static String getMonthMarriageLineKey(String areaCode) { public static String getMonthMarriageLineKey(String areaCode) {
return PREFIX + "getMonthMarriageLine." + areaCode; return PREFIX + "getMonthMarriageLine." + areaCode;
} }
// 获取社会机构统计 // 获取社会机构统计
public static String getSoorganStatsListKey(StatsReqVo vo) { public static String getSoorganStatsListKey(StatsReqVo vo) {
return PREFIX + "getSoorganStatsList." + vo.getAreaCode() + "." + vo.getYear(); return PREFIX + "getSoorganStatsList." + vo.getAreaCode() + "." + vo.getYear();
} }
// 获取社会机构统计 // 获取社会机构统计
public static String getSoorganStatsKey(StatsReqVo vo) { public static String getSoorganStatsKey(StatsReqVo vo) {
return PREFIX + "getSoorganStats." + vo.getAreaCode() + "." + vo.getYear(); return PREFIX + "getSoorganStats." + vo.getAreaCode() + "." + vo.getYear();
} }
// 获取社会机构区域占比统计 // 获取社会机构区域占比统计
public static String getSoorganPercentageStatsKey(StatsReqVo vo) { public static String getSoorganPercentageStatsKey(StatsReqVo vo) {
return PREFIX + "getSoorganPercentageStats." + vo.getAreaCode() + "." + vo.getYear(); return PREFIX + "getSoorganPercentageStats." + vo.getAreaCode() + "." + vo.getYear();
} }
// 儿童机构福利统计列表 // 儿童机构福利统计列表
public static String getAgencyChildStatsListKey(StatsReqVo vo) { public static String getAgencyChildStatsListKey(StatsReqVo vo) {
return PREFIX + "getAgencyChildStatsList." + vo.getAreaCode() + "." + vo.getYear(); return PREFIX + "getAgencyChildStatsList." + vo.getAreaCode() + "." + vo.getYear();
} }
// 儿童机构福利统计 // 儿童机构福利统计
public static String getAgencyChildStatsKey(StatsReqVo vo) { public static String getAgencyChildStatsKey(StatsReqVo vo) {
return PREFIX + "getAgencyChildStats." + vo.getAreaCode() + "." + vo.getYear(); return PREFIX + "getAgencyChildStats." + vo.getAreaCode() + "." + vo.getYear();
} }
// 区域机构占比 // 区域机构占比
public static String getAgencyPercentageStatsKey(StatsReqVo vo) { public static String getAgencyPercentageStatsKey(StatsReqVo vo) {
return PREFIX + "getAgencyPercentageStats." + vo.getAreaCode() + "." + vo.getYear(); return PREFIX + "getAgencyPercentageStats." + vo.getAreaCode() + "." + vo.getYear();
} }
// 获取福利院下的儿童统计 // 获取福利院下的儿童统计
public static String getAgencyUnderChildStatsListKey(StatsReqVo vo) { public static String getAgencyUnderChildStatsListKey(StatsReqVo vo) {
return PREFIX + "getAgencyUnderChildStatsList." + vo.getAreaCode() + "." + vo.getYear(); return PREFIX + "getAgencyUnderChildStatsList." + 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();
} }
// 统计年发放人数和金额 // 统计年发放人数和金额
public static String getYearDisabledIssueStatsKey(StatsReqVo vo) { public static String getYearDisabledIssueStatsKey(StatsReqVo vo) {
return PREFIX + "getYearDisabledIssueStats." + vo.getAreaCode(); return PREFIX + "getYearDisabledIssueStats." + vo.getAreaCode();
} }
// 获取区域残疾统计 // 获取区域残疾统计
public static String getAreaDisabledIssueStatsKey(StatsReqVo vo) { public static String getAreaDisabledIssueStatsKey(StatsReqVo vo) {
return PREFIX + "getAreaDisabledIssueStats." + vo.getAreaCode() + "." + vo.getYear(); return PREFIX + "getAreaDisabledIssueStats." + vo.getAreaCode() + "." + vo.getYear();
} }
public static String getEnjoySubsidyStatsKey(StatsReqVo vo) { public static String getEnjoySubsidyStatsKey(StatsReqVo vo) {
return PREFIX + "getEnjoySubsidyStats." + vo.getAreaCode() + "." + vo.getYear(); return PREFIX + "getEnjoySubsidyStats." + vo.getAreaCode() + "." + vo.getYear();
} }
// 获取区域养老院统计列表 // 获取区域养老院统计列表
public static String getAreaNursingStatsListKey(StatsReqVo vo) { public static String getAreaNursingStatsListKey(StatsReqVo vo) {
return PREFIX + "getAreaNursingStatsList." + vo.getAreaCode() + "." + vo.getYear() + "." + vo.getType(); return PREFIX + "getAreaNursingStatsList." + vo.getAreaCode() + "." + vo.getYear() + "." + vo.getType();
} }
// 殡葬火化量统计列表 // 殡葬火化量统计列表
public static String getCremationStatsListKey(StatsReqVo vo) { public static String getCremationStatsListKey(StatsReqVo vo) {
return PREFIX + "getCremationStatsList." + vo.getAreaCode() + "." + vo.getYear(); return PREFIX + "getCremationStatsList." + vo.getAreaCode() + "." + vo.getYear();
} }
//殡葬火化量殡仪馆数据统计 //殡葬火化量殡仪馆数据统计
public static String getCremationStatsByIdKey(StatsReqVo vo) { public static String getCremationStatsByIdKey(StatsReqVo vo) {
return PREFIX + "getCremationStatsById." + vo.getAreaCode() + "." + vo.getYear(); return PREFIX + "getCremationStatsById." + vo.getAreaCode() + "." + vo.getYear();
} }
// 区域火化率占比 // 区域火化率占比
public static String getCremationRateStatsKey(StatsReqVo vo) { public static String getCremationRateStatsKey(StatsReqVo vo) {
return PREFIX + "getCremationRateStats." + vo.getAreaCode() + "." + vo.getYear(); return PREFIX + "getCremationRateStats." + vo.getAreaCode() + "." + vo.getYear();
} }
// 火化量汇总Key // 火化量汇总Key
public static String getCremationStatsKey(StatsReqVo vo) { public static String getCremationStatsKey(StatsReqVo vo) {
return PREFIX + "getCremationStats." + vo.getAreaCode() + "." + vo.getYear(); return PREFIX + "getCremationStats." + vo.getAreaCode() + "." + vo.getYear();
} }
// 获取App首页地图 // 获取App首页地图
public static String getAppMapStatsKey(StatsReqVo vo) { public static String getAppMapStatsKey(StatsReqVo vo) {
return PREFIX + "getAppMapStats." + vo.getAreaCode(); return PREFIX + "getAppMapStats." + vo.getAreaCode();
} }
// 聚合搜索 // 聚合搜索
public static String gatherSearchKey(StatsReqVo vo) { public static String gatherSearchKey(StatsReqVo vo) {
return PREFIX + "gatherSearch." + vo.getKeyword(); return PREFIX + "gatherSearch." + vo.getKeyword();
} }
// 社会组织搜索 // 社会组织搜索
public static String soorganSearchKey() { public static String soorganSearchKey() {
return PREFIX + "soorganSearch."; return PREFIX + "soorganSearch.";
} }
// 低保 获取当前享受低保人数 // 低保 获取当前享受低保人数
public static String getEnjoyEnbuzNumKey(StatsReqVo vo) { public static String getEnjoyEnbuzNumKey(StatsReqVo vo) {
return PREFIX + "getEnjoyEnbuzNum." + vo.getAreaCode() + "." + vo.getYear(); return PREFIX + "getEnjoyEnbuzNum." + vo.getAreaCode() + "." + vo.getYear();
} }
// 低保 获取指定区域下的人数统计 // 低保 获取指定区域下的人数统计
public static String getAreaUnderEnbuzNumStatsKey(StatsReqVo vo) { public static String getAreaUnderEnbuzNumStatsKey(StatsReqVo vo) {
return PREFIX + "getAreaUnderEnbuzNumStats." + vo.getAreaCode() + "." + vo.getYear(); return PREFIX + "getAreaUnderEnbuzNumStats." + vo.getAreaCode() + "." + vo.getYear();
} }
// 低保 获取近5年折线图 // 低保 获取近5年折线图
public static String getFivesYearEnbuzEnjoyStatsKey(StatsReqVo vo) { public static String getFivesYearEnbuzEnjoyStatsKey(StatsReqVo vo) {
return PREFIX + "getFivesYearEnbuzEnjoyStats." + vo.getAreaCode(); return PREFIX + "getFivesYearEnbuzEnjoyStats." + vo.getAreaCode();
} }
// 获取区域下的救助统计 // 获取区域下的救助统计
public static String getAreaShjzStats(StatsReqVo vo) { public static String getAreaShjzStats(StatsReqVo vo) {
return PREFIX + "getAreaShjzStats." + vo.getAreaCode(); return PREFIX + "getAreaShjzStats." + vo.getAreaCode();
} }
//获取两项补贴统计 //获取两项补贴统计
public static String getEnjoySumStatsKey(StatsReqVo vo) { public static String getEnjoySumStatsKey(StatsReqVo vo) {
return PREFIX + "getEnjoySumStats." + vo.getAreaCode(); return PREFIX + "getEnjoySumStats." + vo.getAreaCode();
} }
}
public static String getYearMarriedCoupleKey() {
return PREFIX+"getYearMarriedCouple";
}
}
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.NumberUtil;
import cn.hutool.core.util.StrUtil; 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.utils.PagingUtils; import com.zq.common.utils.PagingUtils;
import com.zq.common.utils.StringUtils; import com.zq.common.utils.StringUtils;
import com.zq.portal.dao.AreaDao; import com.zq.portal.dao.AreaDao;
import com.zq.portal.dao.HyStatsDao; import com.zq.portal.dao.HyStatsDao;
import com.zq.portal.dao.VMarriageStatsDao; import com.zq.portal.dao.VMarriageStatsDao;
import com.zq.portal.entity.SystemArea; import com.zq.portal.entity.SystemArea;
import com.zq.portal.entity.VMarriageStats; import com.zq.portal.entity.VMarriageStats;
import com.zq.portal.manager.PortalCacheKeys; import com.zq.portal.manager.PortalCacheKeys;
import com.zq.portal.vo.LineDataVo; import com.zq.portal.vo.LineDataVo;
import com.zq.portal.vo.SearchReqVo; import com.zq.portal.vo.SearchReqVo;
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 lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.*; import java.util.*;
@Service @Service
@RequiredArgsConstructor @RequiredArgsConstructor
public class HyStatsService { public class HyStatsService {
private final HyStatsDao hyStatsDao; private final HyStatsDao hyStatsDao;
private final AreaDao areaDao; private final AreaDao areaDao;
private final VMarriageStatsDao vMarriageStatsDao; private final VMarriageStatsDao vMarriageStatsDao;
private final RedisUtils redisUtils; private final RedisUtils redisUtils;
/** /**
* 获取缓存婚姻统计 * 获取缓存婚姻统计
* *
* @param vo * @param vo
* @return * @return
*/ */
public VMarriageStats getCacheMarriageStats(StatsReqVo vo) { public VMarriageStats getCacheMarriageStats(StatsReqVo vo) {
Object obj = redisUtils.getObj(PortalCacheKeys.getMarriageStatsKey(vo)); Object obj = redisUtils.getObj(PortalCacheKeys.getMarriageStatsKey(vo));
if (obj != null) { if (obj != null) {
return (VMarriageStats) obj; return (VMarriageStats) obj;
} }
return getMarriageStats(vo); return getMarriageStats(vo);
} }
/** /**
* 婚姻统计 * 婚姻统计
* *
* @param vo * @param vo
* @return * @return
*/ */
public VMarriageStats getMarriageStats(StatsReqVo vo) { public VMarriageStats getMarriageStats(StatsReqVo vo) {
if (StringUtils.isBlank(vo.getAreaCode())) { if (StringUtils.isBlank(vo.getAreaCode())) {
vo.setAreaCode("450000000000"); vo.setAreaCode("450000000000");
} }
SystemArea area = areaDao.getAreaByCode(vo.getAreaCode()); SystemArea area = areaDao.getAreaByCode(vo.getAreaCode());
vo.setSubAreaCode(area.subAreaCode()); vo.setSubAreaCode(area.subAreaCode());
// 统计实体 // 统计实体
VMarriageStats build = VMarriageStats.builder() VMarriageStats build = VMarriageStats.builder()
.areaCode(area.getCode()) .areaCode(area.getCode())
.areaName(area.getName()) .areaName(area.getName())
.year(vo.getYear()) .year(2022)
.createTime(DateUtil.parseDate(DateUtil.today())) .createTime(DateUtil.parseDate(DateUtil.today()))
.build(); .build();
// 结婚 离婚 补领结婚证 补领离婚证 // 结婚 离婚 补领结婚证 补领离婚证
List<StatsVo> marriageStatsList = hyStatsDao.getMarriageStats(vo); List<StatsVo> marriageStatsList = hyStatsDao.getMarriageStats(vo);
for (StatsVo statsVo : marriageStatsList) { for (StatsVo statsVo : marriageStatsList) {
if ("IA".equals(statsVo.getType())) { if ("IA".equals(statsVo.getType())) {
build.setMarryNum(statsVo.getNum()); build.setMarryNum(statsVo.getNum());
} else if ("IB".equals(statsVo.getType())) { } else if ("IB".equals(statsVo.getType())) {
build.setDivorceNum(statsVo.getNum()); build.setDivorceNum(statsVo.getNum());
} else if ("ICA".equals(statsVo.getType())) { } else if ("ICA".equals(statsVo.getType())) {
build.setPatchMarryCaNum(statsVo.getNum()); build.setPatchMarryCaNum(statsVo.getNum());
} else if ("ICB".equals(statsVo.getType())) { } else if ("ICB".equals(statsVo.getType())) {
build.setPatchDivorceCaNum(statsVo.getNum()); build.setPatchDivorceCaNum(statsVo.getNum());
} }
} }
// 获取离婚中的人数 // 获取离婚中的人数
StatsVo inDivorceNum = hyStatsDao.getInDivorceNum(vo); StatsVo inDivorceNum = hyStatsDao.getInDivorceNum(vo);
build.setInDivorceNum(inDivorceNum.getNum()); build.setInDivorceNum(inDivorceNum.getNum());
// 获取跨地结婚离婚人数 // 获取跨地结婚离婚人数
List<StatsVo> crossMarriageStats = hyStatsDao.getCrossMarriageStats(vo); List<StatsVo> crossMarriageStats = hyStatsDao.getCrossMarriageStats(vo);
for (StatsVo crossMarriageStat : crossMarriageStats) { for (StatsVo crossMarriageStat : crossMarriageStats) {
if ("IA".equals(crossMarriageStat.getType())) { if ("IA".equals(crossMarriageStat.getType())) {
build.setCrossMarryNum(crossMarriageStat.getNum()); build.setCrossMarryNum(crossMarriageStat.getNum());
} else if ("IB".equals(crossMarriageStat.getType())) { } else if ("IB".equals(crossMarriageStat.getType())) {
build.setCrossDivorceNum(crossMarriageStat.getNum()); build.setCrossDivorceNum(crossMarriageStat.getNum());
} }
} }
// 放进缓存 // 放进缓存
redisUtils.setObj(PortalCacheKeys.getMarriageStatsKey(vo), build); redisUtils.setObj(PortalCacheKeys.getMarriageStatsKey(vo), 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())); // 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) { VMarriageStats marriageStats = vMarriageStatsDao.selectOne(Wrappers.lambdaQuery(VMarriageStats.builder().year(2022).areaCode(area.getCode()).createTime(DateUtil.parseDate(DateUtil.today())).build()));
vMarriageStatsDao.insert(build); if (marriageStats == null) {
} else { vMarriageStatsDao.insert(build);
build.setId(marriageStats.getId()); } else {
vMarriageStatsDao.updateById(build); build.setId(marriageStats.getId());
} vMarriageStatsDao.updateById(build);
}
return build;
} return build;
}
/**
* 获取缓存区域下的结婚离婚数据 /**
* * 获取缓存区域下的结婚离婚数据
* @param vo *
* @return * @param vo
*/ * @return
public Object getCacheAreaUnderMarriageStatsList(StatsReqVo vo) { */
Object obj = redisUtils.getObj(PortalCacheKeys.getAreaUnderMarriageStatsListKey(vo)); public Object getCacheAreaUnderMarriageStatsList(StatsReqVo vo) {
if (obj != null) { Object obj = redisUtils.getObj(PortalCacheKeys.getAreaUnderMarriageStatsListKey(vo));
return obj; if (obj != null) {
} return obj;
return getAreaUnderMarriageStatsList(vo); }
} return getAreaUnderMarriageStatsList(vo);
}
/**
* 获取区域下的结婚离婚数据 /**
* * 获取区域下的结婚离婚数据
* @param vo *
* @return * @param vo
*/ * @return
public Object getAreaUnderMarriageStatsList(StatsReqVo vo) { */
String cacheKey = PortalCacheKeys.getAreaUnderMarriageStatsListKey(vo); public Object getAreaUnderMarriageStatsList(StatsReqVo vo) {
SystemArea area = areaDao.selectById(vo.getAreaCode()); String cacheKey = PortalCacheKeys.getAreaUnderMarriageStatsListKey(vo);
vo.setSubAreaCode(area.subAreaCode()); SystemArea area = areaDao.selectById(vo.getAreaCode());
vo.setSize(SystemArea.getNextLevelLength(area.getType())); vo.setSubAreaCode(area.subAreaCode());
vo.setSize(SystemArea.getNextLevelLength(area.getType()));
List<VMarriageStats> returnData = new ArrayList<>();
List<VMarriageStats> returnData = new ArrayList<>();
// List<StatsVo> statsList = hyStatsDao.getAreaUnderMarriageStatsList(vo);
// statsList: // List<StatsVo> statsList = hyStatsDao.getAreaUnderMarriageStatsList(vo);
// for (StatsVo stats : statsList) { // statsList:
// if ("IA".equals(stats.getType())) { // for (StatsVo stats : statsList) {
// for (VMarriageStats marriageStats : returnData) { // if ("IA".equals(stats.getType())) {
// if (marriageStats.getAreaCode().startsWith(stats.getCode())) { // for (VMarriageStats marriageStats : returnData) {
// marriageStats.setMarryNum(stats.getNum()); // if (marriageStats.getAreaCode().startsWith(stats.getCode())) {
// continue statsList;// 继续下一个统计 // marriageStats.setMarryNum(stats.getNum());
// } // continue statsList;// 继续下一个统计
// } // }
// // }
// SystemArea systemArea = areaDao.selectById(SystemArea.patchZero(stats.getCode())); //
// VMarriageStats build = VMarriageStats.builder() // SystemArea systemArea = areaDao.selectById(SystemArea.patchZero(stats.getCode()));
// .areaCode(systemArea.getCode()) // VMarriageStats build = VMarriageStats.builder()
// .areaName(systemArea.getName()) // .areaCode(systemArea.getCode())
// .year(vo.getYear()) // .areaName(systemArea.getName())
// .marryNum(stats.getNum()) // .year(vo.getYear())
// .build(); // .marryNum(stats.getNum())
// returnData.add(build); // .build();
// } else if ("IB".equals(stats.getType())) { // returnData.add(build);
// for (VMarriageStats marriageStats : returnData) { // } else if ("IB".equals(stats.getType())) {
// if (marriageStats.getAreaCode().startsWith(stats.getCode())) { // for (VMarriageStats marriageStats : returnData) {
// marriageStats.setDivorceNum(stats.getNum()); // if (marriageStats.getAreaCode().startsWith(stats.getCode())) {
// continue statsList;// 继续下一个统计 // marriageStats.setDivorceNum(stats.getNum());
// } // continue statsList;// 继续下一个统计
// } // }
// // }
// SystemArea systemArea = areaDao.selectById(SystemArea.patchZero(stats.getCode())); //
// VMarriageStats build = VMarriageStats.builder() // SystemArea systemArea = areaDao.selectById(SystemArea.patchZero(stats.getCode()));
// .areaCode(systemArea.getCode()) // VMarriageStats build = VMarriageStats.builder()
// .areaName(systemArea.getName()) // .areaCode(systemArea.getCode())
// .year(vo.getYear()) // .areaName(systemArea.getName())
// .marryNum(stats.getNum()) // .year(vo.getYear())
// .build(); // .marryNum(stats.getNum())
// returnData.add(build); // .build();
// } // returnData.add(build);
// } // }
// returnData.sort(Comparator.comparing(VMarriageStats::getAreaCode)); // }
// returnData.sort(Comparator.comparing(VMarriageStats::getAreaCode));
List<SystemArea> systemAreaList = areaDao.selectList(Wrappers.lambdaQuery(SystemArea.builder().parentId(vo.getAreaCode()).build()));
for (SystemArea systemArea : systemAreaList) { List<SystemArea> systemAreaList = areaDao.selectList(Wrappers.lambdaQuery(SystemArea.builder().parentId(vo.getAreaCode()).build()));
vo.setAreaCode(systemArea.getCode()); for (SystemArea systemArea : systemAreaList) {
VMarriageStats marriageStats = getCacheMarriageStats(vo); vo.setAreaCode(systemArea.getCode());
returnData.add(marriageStats); VMarriageStats marriageStats = getCacheMarriageStats(vo);
} returnData.add(marriageStats);
}
List<String> cityList = new ArrayList<>();
List<String> iaList = new ArrayList<>(); List<String> cityList = new ArrayList<>();
List<String> ibList = new ArrayList<>(); List<String> iaList = new ArrayList<>();
for (VMarriageStats marriageStats : returnData) { List<String> ibList = new ArrayList<>();
cityList.add(marriageStats.getAreaName()); for (VMarriageStats marriageStats : returnData) {
iaList.add(NumberUtil.toStr(marriageStats.getMarryNum(), "0")); cityList.add(marriageStats.getAreaName());
ibList.add(NumberUtil.toStr(marriageStats.getDivorceNum(), "0")); iaList.add(NumberUtil.toStr(marriageStats.getMarryNum(), "0"));
} ibList.add(NumberUtil.toStr(marriageStats.getDivorceNum(), "0"));
}
Map<String, Object> returnMap = new HashMap<>();
returnMap.put("cityList", cityList); Map<String, Object> returnMap = new HashMap<>();
returnMap.put("iaList", iaList); returnMap.put("cityList", cityList);
returnMap.put("ibList", ibList); returnMap.put("iaList", iaList);
returnMap.put("statsList", returnData); returnMap.put("ibList", ibList);
returnMap.put("statsList", returnData);
redisUtils.setObj(cacheKey, returnMap);
redisUtils.setObj(cacheKey, returnMap);
return returnMap;
} return returnMap;
}
/**
* 获取冷静期和真正离婚的折线图数据 /**
* * 获取冷静期和真正离婚的折线图数据
* @param vo *
* @return * @param vo
*/ * @return
public Object getDivorceCoolingLine(StatsReqVo vo) { */
// 获取冷静期 public Object getDivorceCoolingLine(StatsReqVo vo) {
List<StatsVo> statsVoList = hyStatsDao.getMonthDivorceCoolingData(vo); // 获取冷静期
return null; List<StatsVo> statsVoList = hyStatsDao.getMonthDivorceCoolingData(vo);
} return null;
}
/**
* 缓存获取近5年结婚离婚走势 /**
* * 缓存获取近5年结婚离婚走势
* @param vo *
* @return * @param vo
*/ * @return
public Object getCacheFivesYearMarriageLine(StatsReqVo vo) { */
Object obj = redisUtils.getObj(PortalCacheKeys.getFivesYearMarriageLineKey(vo.getAreaCode())); public Object getCacheFivesYearMarriageLine(StatsReqVo vo) {
if (obj != null) { Object obj = redisUtils.getObj(PortalCacheKeys.getFivesYearMarriageLineKey(vo.getAreaCode()));
return obj; if (obj != null) {
} return obj;
return getFivesYearMarriageLine(vo); }
} return getFivesYearMarriageLine(vo);
}
/**
* 获取近5年结婚离婚走势 /**
* * 获取近5年结婚离婚走势
* @param vo *
* @return * @param vo
*/ * @return
public Object getFivesYearMarriageLine(StatsReqVo vo) { */
if (StringUtils.isBlank(vo.getAreaCode())) { public Object getFivesYearMarriageLine(StatsReqVo vo) {
vo.setAreaCode("450000000000"); if (StringUtils.isBlank(vo.getAreaCode())) {
} vo.setAreaCode("450000000000");
SystemArea area = areaDao.getAreaByCode(SystemArea.patchZero(vo.getAreaCode())); }
vo.setSubAreaCode(area.subAreaCode()); SystemArea area = areaDao.getAreaByCode(SystemArea.patchZero(vo.getAreaCode()));
vo.setSubAreaCode(area.subAreaCode());
vo.setType("IA");
List<StatsVo> ia = hyStatsDao.getFivesYearMarriageLine(vo); vo.setType("IA");
ia.sort(Comparator.comparing(StatsVo::getYear)); List<StatsVo> ia = hyStatsDao.getFivesYearMarriageLine(vo);
List<String> iaDateList = new ArrayList<>(); ia.sort(Comparator.comparing(StatsVo::getYear));
List<String> iaAmountList = new ArrayList<>(); List<String> iaDateList = new ArrayList<>();
ia.forEach(statsVo -> { List<String> iaAmountList = new ArrayList<>();
iaDateList.add(statsVo.getYear()); ia.forEach(statsVo -> {
iaAmountList.add(String.valueOf(statsVo.getNum())); iaDateList.add(statsVo.getYear());
}); iaAmountList.add(String.valueOf(statsVo.getNum()));
LineDataVo iaLineData = LineDataVo.builder().dateList(iaDateList).amountList(iaAmountList).build(); });
LineDataVo iaLineData = LineDataVo.builder().dateList(iaDateList).amountList(iaAmountList).build();
vo.setType("IB");
List<StatsVo> ib = hyStatsDao.getFivesYearMarriageLine(vo); vo.setType("IB");
ib.sort(Comparator.comparing(StatsVo::getYear)); List<StatsVo> ib = hyStatsDao.getFivesYearMarriageLine(vo);
List<String> ibDateList = new ArrayList<>(); ib.sort(Comparator.comparing(StatsVo::getYear));
List<String> ibAmountList = new ArrayList<>(); List<String> ibDateList = new ArrayList<>();
ib.forEach(statsVo -> { List<String> ibAmountList = new ArrayList<>();
ibDateList.add(statsVo.getYear()); ib.forEach(statsVo -> {
ibAmountList.add(String.valueOf(statsVo.getNum())); ibDateList.add(statsVo.getYear());
}); ibAmountList.add(String.valueOf(statsVo.getNum()));
LineDataVo ibLineData = LineDataVo.builder().dateList(ibDateList).amountList(ibAmountList).build(); });
LineDataVo ibLineData = LineDataVo.builder().dateList(ibDateList).amountList(ibAmountList).build();
// 结婚总对数
int iaTotalNum = 0; // 结婚总对数
for (String num : iaAmountList) { int iaTotalNum = 0;
iaTotalNum += Integer.parseInt(num); for (String num : iaAmountList) {
} iaTotalNum += Integer.parseInt(num);
}
// 后台管理数据
Map<String, Object> adminData = new HashMap<>(); // 后台管理数据
adminData.put("iaLineData", iaLineData); Map<String, Object> adminData = new HashMap<>();
adminData.put("ibLineData", ibLineData); adminData.put("iaLineData", iaLineData);
adminData.put("iaTotalNum", iaTotalNum); adminData.put("ibLineData", ibLineData);
adminData.put("iaTotalNum", iaTotalNum);
//App数据
Map<String, Object> appData = new HashMap<>(); //App数据
appData.put("categories", iaDateList); Map<String, Object> appData = new HashMap<>();
appData.put("categories", iaDateList);
Map<String, Object> iaLine = new HashMap<>();
iaLine.put("name", "结婚对数"); Map<String, Object> iaLine = new HashMap<>();
iaLine.put("data", iaAmountList); iaLine.put("name", "结婚对数");
Map<String, Object> ibLine = new HashMap<>(); iaLine.put("data", iaAmountList);
ibLine.put("name", "离婚对数"); Map<String, Object> ibLine = new HashMap<>();
ibLine.put("data", ibAmountList); ibLine.put("name", "离婚对数");
List<Map<String, Object>> seriesList = new ArrayList<>(); ibLine.put("data", ibAmountList);
seriesList.add(iaLine); List<Map<String, Object>> seriesList = new ArrayList<>();
seriesList.add(ibLine); seriesList.add(iaLine);
appData.put("series", seriesList); seriesList.add(ibLine);
appData.put("series", seriesList);
Map<String, Object> returnData = new HashMap<>();
returnData.put("admin", adminData); Map<String, Object> returnData = new HashMap<>();
returnData.put("app", appData); returnData.put("admin", adminData);
returnData.put("app", appData);
redisUtils.setObj(PortalCacheKeys.getFivesYearMarriageLineKey(vo.getAreaCode()), returnData);
return returnData; redisUtils.setObj(PortalCacheKeys.getFivesYearMarriageLineKey(vo.getAreaCode()), returnData);
} return returnData;
}
/**
* 获取缓存月统计折线 /**
* * 获取缓存月统计折线
* @param vo *
* @return * @param vo
*/ * @return
public Object getCacheMonthMarriageLine(StatsReqVo vo) { */
Object obj = redisUtils.getObj(PortalCacheKeys.getMonthMarriageLineKey(vo.getAreaCode())); public Object getCacheMonthMarriageLine(StatsReqVo vo) {
if (obj != null) { Object obj = redisUtils.getObj(PortalCacheKeys.getMonthMarriageLineKey(vo.getAreaCode()));
return obj; if (obj != null) {
} return obj;
return getMonthMarriageLine(vo); }
} return getMonthMarriageLine(vo);
}
/**
* 月统计折线 /**
* * 月统计折线
* @param vo *
* @return * @param vo
*/ * @return
public Object getMonthMarriageLine(StatsReqVo vo) { */
if (StringUtils.isBlank(vo.getAreaCode())) { public Object getMonthMarriageLine(StatsReqVo vo) {
vo.setAreaCode("450000000000"); if (StringUtils.isBlank(vo.getAreaCode())) {
} vo.setAreaCode("450000000000");
SystemArea area = areaDao.getAreaByCode(vo.getAreaCode()); }
vo.setSubAreaCode(area.subAreaCode()); SystemArea area = areaDao.getAreaByCode(vo.getAreaCode());
vo.setSubAreaCode(area.subAreaCode());
vo.setType("IA");
List<StatsVo> ia = hyStatsDao.getMonthMarriageLine(vo); vo.setType("IA");
ia.sort(Comparator.comparing(StatsVo::getMonth)); List<StatsVo> ia = hyStatsDao.getMonthMarriageLine(vo);
List<String> iaDateList = new ArrayList<>(); ia.sort(Comparator.comparing(StatsVo::getMonth));
List<String> iaAmountList = new ArrayList<>(); List<String> iaDateList = new ArrayList<>();
ia.forEach(statsVo -> { List<String> iaAmountList = new ArrayList<>();
iaDateList.add(statsVo.getMonth()); ia.forEach(statsVo -> {
iaAmountList.add(String.valueOf(statsVo.getNum())); iaDateList.add(statsVo.getMonth());
}); iaAmountList.add(String.valueOf(statsVo.getNum()));
LineDataVo iaLineData = LineDataVo.builder().dateList(iaDateList).amountList(iaAmountList).build(); });
LineDataVo iaLineData = LineDataVo.builder().dateList(iaDateList).amountList(iaAmountList).build();
vo.setType("IB");
List<StatsVo> ib = hyStatsDao.getMonthMarriageLine(vo); vo.setType("IB");
ib.sort(Comparator.comparing(StatsVo::getMonth)); List<StatsVo> ib = hyStatsDao.getMonthMarriageLine(vo);
List<String> ibDateList = new ArrayList<>(); ib.sort(Comparator.comparing(StatsVo::getMonth));
List<String> ibAmountList = new ArrayList<>(); List<String> ibDateList = new ArrayList<>();
ib.forEach(statsVo -> { List<String> ibAmountList = new ArrayList<>();
ibDateList.add(statsVo.getMonth()); ib.forEach(statsVo -> {
ibAmountList.add(String.valueOf(statsVo.getNum())); ibDateList.add(statsVo.getMonth());
}); ibAmountList.add(String.valueOf(statsVo.getNum()));
LineDataVo ibLineData = LineDataVo.builder().dateList(ibDateList).amountList(ibAmountList).build(); });
LineDataVo ibLineData = LineDataVo.builder().dateList(ibDateList).amountList(ibAmountList).build();
// 后台管理数据
Map<String, Object> adminData = new HashMap<>(); // 后台管理数据
adminData.put("iaLineData", iaLineData); Map<String, Object> adminData = new HashMap<>();
adminData.put("ibLineData", ibLineData); adminData.put("iaLineData", iaLineData);
adminData.put("ibLineData", ibLineData);
//App数据
Map<String, Object> appData = new HashMap<>(); //App数据
appData.put("categories", iaDateList); Map<String, Object> appData = new HashMap<>();
appData.put("categories", iaDateList);
Map<String, Object> iaLine = new HashMap<>();
iaLine.put("name", "结婚对数"); Map<String, Object> iaLine = new HashMap<>();
iaLine.put("data", iaAmountList); iaLine.put("name", "结婚对数");
Map<String, Object> ibLine = new HashMap<>(); iaLine.put("data", iaAmountList);
ibLine.put("name", "离婚对数"); Map<String, Object> ibLine = new HashMap<>();
ibLine.put("data", ibAmountList); ibLine.put("name", "离婚对数");
List<Map<String, Object>> seriesList = new ArrayList<>(); ibLine.put("data", ibAmountList);
seriesList.add(iaLine); List<Map<String, Object>> seriesList = new ArrayList<>();
seriesList.add(ibLine); seriesList.add(iaLine);
appData.put("series", seriesList); seriesList.add(ibLine);
appData.put("series", seriesList);
Map<String, Object> returnData = new HashMap<>();
returnData.put("admin", adminData); Map<String, Object> returnData = new HashMap<>();
returnData.put("app", appData); returnData.put("admin", adminData);
returnData.put("app", appData);
redisUtils.setObj(PortalCacheKeys.getMonthMarriageLineKey(vo.getAreaCode()), returnData);
return returnData; redisUtils.setObj(PortalCacheKeys.getMonthMarriageLineKey(vo.getAreaCode()), returnData);
} return returnData;
}
/**
* 搜索 /**
* * 搜索
* @param vo *
* @return * @param vo
*/ * @return
public Object marriageSearch(SearchReqVo vo) { */
if (StrUtil.isBlank(vo.getKeyword())) { public Object marriageSearch(SearchReqVo vo) {
SystemArea systemArea = areaDao.selectById(vo.getAreaCode()); if (StrUtil.isBlank(vo.getKeyword())) {
vo.setSubAreaCode(systemArea.subAreaCode()); SystemArea systemArea = areaDao.selectById(vo.getAreaCode());
} vo.setSubAreaCode(systemArea.subAreaCode());
return PagingUtils.paging(vo, hyStatsDao::search); }
} return PagingUtils.paging(vo, hyStatsDao::search);
}
}
/**
* 获取缓存年统计结婚对数
*
* @param vo
* @return
*/
public Object getCacheYearMarriedCouple(StatsReqVo vo) {
Object obj = redisUtils.getObj(PortalCacheKeys.getYearMarriedCoupleKey());
if (obj != null) {
return obj;
}
return getYearMarriedCouple(vo);
}
/**
* 年统计结婚离婚对数
*
* @param vo
* @return
*/
private Object getYearMarriedCouple(StatsReqVo vo) {
Integer iaCount=null;
Integer ibCount=null;
Map<String, Object> returnData = new HashMap<>();
List<StatsVo> yearMarriedCouple = hyStatsDao.getYearMarriedCouple(vo);
for (StatsVo statsVo:yearMarriedCouple) {
if ("IA".equals(statsVo.getType())) {
iaCount = statsVo.getNum();
} else if ("IB".equals(statsVo.getType())) {
ibCount = statsVo.getNum();
}
}
returnData.put("结婚对数",iaCount);
returnData.put("离婚对数",ibCount);
return returnData;
}
}
package com.zq.portal.vo; package com.zq.portal.vo;
import lombok.*; import lombok.*;
/** /**
* @author 婚姻 * @author 婚姻
*/ */
@Getter @Getter
@Setter @Setter
@NoArgsConstructor @NoArgsConstructor
@AllArgsConstructor @AllArgsConstructor
@Builder @Builder
public class HYVo { public class HYVo {
private String id; private String id;
private String bookId; private String bookId;
/** /**
* IA或C 结婚 IB 离婚 * IA或C 结婚 IB 离婚
*/ */
private String opType; private String opType;
private String marryType; private String marryType;
private String redoType; private String redoType;
private String deptCode; private String deptCode;
private String deptName; private String deptName;
private String nameMan; private String nameMan;
private String nameWoman; private String nameWoman;
private String birthMan; private String birthMan;
private String birthWoman; private String birthWoman;
private String idTypeMan; private String idTypeMan;
private String idTypeWoman; private String idTypeWoman;
private String certTypeMan; private String certTypeMan;
private String certTypeWoman; private String certTypeWoman;
private String certNumMan; private String certNumMan;
private String certNumWoman; private String certNumWoman;
private String nationMan; private String nationMan;
private String nationWoman; private String nationWoman;
private String folkMan; private String folkMan;
private String folkWoman; private String folkWoman;
private String jobMan; private String jobMan;
private String jobWoman; private String jobWoman;
private String degreeMan; private String degreeMan;
private String degreeWoman; private String degreeWoman;
private String marryStatusMan; private String marryStatusMan;
private String marryStatusWoman; private String marryStatusWoman;
private String registypeMan; private String registypeMan;
private String registypeWoman; private String registypeWoman;
private String regSjMan; private String regSjMan;
private String regSjWoman; private String regSjWoman;
private String regDsMan; private String regDsMan;
private String regDsWoman; private String regDsWoman;
private String regQxMan; private String regQxMan;
private String regQxWoman; private String regQxWoman;
private String regJxMan; private String regJxMan;
private String regJxWoman; private String regJxWoman;
private String regDetailMan; private String regDetailMan;
private String regDetailWoman; private String regDetailWoman;
private String printNumMan; private String printNumMan;
private String printNumWoman; private String printNumWoman;
private String picIdMan; private String picIdMan;
private String picIdWoman; private String picIdWoman;
private String certProofMan; private String certProofMan;
private String certProofWoman; private String certProofWoman;
private String oldCertNo; private String oldCertNo;
private String oldDeptId; private String oldDeptId;
private String oldDeptCode; private String oldDeptCode;
private String oldDeptName; private String oldDeptName;
private String oldOpDate; private String oldOpDate;
private String certNo; private String certNo;
private String opDate; private String opDate;
private String operator; private String operator;
private String operatorId; private String operatorId;
private String checkCode; private String checkCode;
private String checkData; private String checkData;
private String renewFlag; private String renewFlag;
private String remedyFlag; private String remedyFlag;
private String cohabitDate; private String cohabitDate;
private String cancelProof; private String cancelProof;
private String dataSource; private String dataSource;
private String docCode; private String docCode;
private String docYear; private String docYear;
private String docPageNum; private String docPageNum;
private String docNo; private String docNo;
private String divorceReason; private String divorceReason;
private String redoReason; private String redoReason;
private String applyMan; private String applyMan;
private String applyDate; private String applyDate;
private String delegateFlag; private String delegateFlag;
private String delegateType; private String delegateType;
private String delegatedName; private String delegatedName;
private String delegatedCertType; private String delegatedCertType;
private String delegatedCertNo; private String delegatedCertNo;
private String linkKindMan; private String linkKindMan;
private String linkKindWoman; private String linkKindWoman;
private String addressNowMan; private String addressNowMan;
private String addressNowWoman; private String addressNowWoman;
private String remark; private String remark;
private String validFlag; private String validFlag;
private String printRemark; private String printRemark;
private String nameManEn; private String nameManEn;
private String nameWomanEn; private String nameWomanEn;
} }
package com.zq.portal.vo; package com.zq.portal.vo;
import com.zq.common.vo.PageReqVo; import com.zq.common.vo.PageReqVo;
import com.zq.portal.entity.SystemArea; import com.zq.portal.entity.SystemArea;
import lombok.*; import lombok.*;
@Data @Data
@EqualsAndHashCode(callSuper = true) @EqualsAndHashCode(callSuper = true)
@Builder @Builder
@AllArgsConstructor @AllArgsConstructor
@NoArgsConstructor @NoArgsConstructor
public class SearchReqVo extends PageReqVo { public class SearchReqVo extends PageReqVo {
@Builder.Default @Builder.Default
private String areaCode = "450000000000"; private String areaCode = "450000000000";
private String subAreaCode; private String subAreaCode;
private String keyword; private String keyword;
public String getAreaCode() { private String IAcount;
return SystemArea.patchZero(areaCode);
} private String IBcount;
} public String getAreaCode() {
return SystemArea.patchZero(areaCode);
}
}
<?xml version="1.0" encoding="UTF-8"?> <?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"> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.zq.portal.dao.CjStatsDao"> <mapper namespace="com.zq.portal.dao.CjStatsDao">
<select id="getPeopleAmountStats" resultType="com.zq.portal.vo.StatsVo"> <select id="getPeopleAmountStats" resultType="com.zq.portal.vo.StatsVo">
SELECT COUNT(1) 'num', SUM( SUBSIDY_STANDARD_MONEY ) 'amount', `YEAR` 'year' SELECT COUNT(1) 'num', SUM( SUBSIDY_STANDARD_MONEY ) 'amount', `YEAR` 'year'
FROM `cjrjz_application` FROM `cjrjz_application`
WHERE CHECK_STATUS = 1 WHERE CHECK_STATUS = 1
AND `STATUS` = 0 AND `STATUS` = 0
AND APPROVE_DATE IS NOT NULL AND APPROVE_DATE IS NOT NULL
GROUP BY `YEAR` GROUP BY `YEAR`
ORDER BY `YEAR` DESC LIMIT 5 ORDER BY `YEAR` DESC LIMIT 5
</select> </select>
<select id="getDisabledLevelStats" resultType="com.zq.portal.vo.StatsVo"> <select id="getDisabledLevelStats" resultType="com.zq.portal.vo.StatsVo">
SELECT ENSURE_LEVEL_ID 'type', COUNT( 1 ) 'num' SELECT ENSURE_LEVEL_ID 'type', COUNT( 1 ) 'num'
FROM `cjrjz_proposer` FROM `cjrjz_proposer`
WHERE ENSURE_LEVEL_ID IS NOT NULL WHERE ENSURE_LEVEL_ID IS NOT NULL
<if test="type != null"> <if test="type != null">
AND ENSURE_LEVEL_ID = #{type} AND ENSURE_LEVEL_ID = #{type}
</if> </if>
<if test="subAreaCode != null and subAreaCode != ''"> <if test="subAreaCode != null and subAreaCode != ''">
AND CARD_CODE LIKE CONCAT(#{subAreaCode}, '%') AND CARD_CODE LIKE CONCAT(#{subAreaCode}, '%')
</if> </if>
<if test="year != null"> <if test="year != null">
AND LEFT(CREATE_DATE, 4) = #{year} AND LEFT(CREATE_DATE, 4) = #{year}
</if> </if>
GROUP BY ENSURE_LEVEL_ID GROUP BY ENSURE_LEVEL_ID
</select> </select>
<!--获取近年重度残疾人数--> <!--获取近年重度残疾人数-->
<select id="getYearSevereDisabledStats" resultType="com.zq.portal.vo.StatsVo"> <select id="getYearSevereDisabledStats" resultType="com.zq.portal.vo.StatsVo">
SELECT SELECT
LEFT ( CREATE_DATE, 4 ) 'year', LEFT ( CREATE_DATE, 4 ) 'year',
COUNT( 1 ) 'num' COUNT( 1 ) 'num'
FROM FROM
`cjrjz_proposer` `cjrjz_proposer`
WHERE WHERE
ENSURE_LEVEL_ID IS NOT NULL ENSURE_LEVEL_ID IS NOT NULL
AND ENSURE_LEVEL_ID IN (1,2) AND ENSURE_LEVEL_ID IN (1,2)
<if test="subAreaCode != null and subAreaCode != ''"> <if test="subAreaCode != null and subAreaCode != ''">
AND CARD_CODE LIKE CONCAT(#{subAreaCode}, '%') AND CARD_CODE LIKE CONCAT(#{subAreaCode}, '%')
</if> </if>
<if test="year != null"> <if test="year != null">
AND LEFT(CREATE_DATE, 4) = #{year} AND LEFT(CREATE_DATE, 4) = #{year}
</if> </if>
GROUP BY LEFT ( CREATE_DATE, 4 ) GROUP BY LEFT ( CREATE_DATE, 4 )
ORDER BY LEFT ( CREATE_DATE, 4 ) DESC ORDER BY LEFT ( CREATE_DATE, 4 ) DESC
LIMIT #{size} LIMIT #{size}
</select> </select>
<select id="getSeverePeopleNumStats" resultType="com.zq.portal.vo.StatsVo"> <select id="getSeverePeopleNumStats" resultType="com.zq.portal.vo.StatsVo">
SELECT SELECT
COUNT( 1 ) 'num' COUNT( 1 ) 'num'
FROM FROM
`cjrjz_proposer` `cjrjz_proposer`
WHERE WHERE
ENSURE_LEVEL_ID IS NOT NULL ENSURE_LEVEL_ID IS NOT NULL
AND ENSURE_LEVEL_ID IN (1,2) AND ENSURE_LEVEL_ID IN (1,2)
<if test="subAreaCode != null and subAreaCode != ''"> <if test="subAreaCode != null and subAreaCode != ''">
AND CARD_CODE LIKE CONCAT(#{subAreaCode}, '%') AND CARD_CODE LIKE CONCAT(#{subAreaCode}, '%')
</if> </if>
<if test="year != null"> <if test="year != null">
AND LEFT(CREATE_DATE, 4) = #{year} AND LEFT(CREATE_DATE, 4) = #{year}
</if> </if>
</select> </select>
<select id="getDifficultPeopleNumStats" resultType="com.zq.portal.vo.StatsVo"> <select id="getDifficultPeopleNumStats" resultType="com.zq.portal.vo.StatsVo">
SELECT SELECT
COUNT( 1 ) 'num' COUNT( 1 ) 'num'
FROM FROM
`cjrjz_proposer` `cjrjz_proposer`
WHERE WHERE
ENSURE_LEVEL_ID IS NOT NULL ENSURE_LEVEL_ID IS NOT NULL
AND ENSURE_LEVEL_ID IN (3,4) AND ENSURE_LEVEL_ID IN (3,4)
<if test="subAreaCode != null and subAreaCode != ''"> <if test="subAreaCode != null and subAreaCode != ''">
AND CARD_CODE LIKE CONCAT(#{subAreaCode}, '%') AND CARD_CODE LIKE CONCAT(#{subAreaCode}, '%')
</if> </if>
<if test="year != null"> <if test="year != null">
AND LEFT(CREATE_DATE, 4) = #{year} AND LEFT(CREATE_DATE, 4) = #{year}
</if> </if>
</select> </select>
<select id="getAreaIssueStats" resultType="com.zq.portal.vo.StatsVo"> <select id="getAreaIssueStats" resultType="com.zq.portal.vo.StatsVo">
SELECT LEFT(UNIT_ID, #{size}) 'code', APPLY_TYPE_ID 'type', GRANT_YEAR 'year', COUNT_PEOPLE 'num', SUM_MONEY SELECT LEFT(UNIT_ID, #{size}) 'code', APPLY_TYPE_ID 'type', GRANT_YEAR 'year', COUNT_PEOPLE 'num', SUM_MONEY
'amount' 'amount'
FROM `statics_grant` FROM `statics_grant`
WHERE DATE_FORMAT(create_time, '%Y-%m-%d') = (SELECT DATE_FORMAT(create_time, '%Y-%m-%d') FROM statics_grant ORDER BY create_time DESC LIMIT 1) WHERE
AND CHAR_LENGTH (LEFT ( UNIT_ID, #{size} )) = #{size} # DATE_FORMAT(create_time, '%Y-%m-%d') = (SELECT DATE_FORMAT(create_time, '%Y-%m-%d') FROM statics_grant ORDER BY create_time DESC LIMIT 1)
<if test="year != null"> CHAR_LENGTH (LEFT ( UNIT_ID, #{size} )) = #{size}
AND GRANT_YEAR = #{year} <if test="year != null">
</if> AND GRANT_YEAR = #{year}
<if test="type != null"> </if>
AND APPLY_TYPE_ID = #{type} <if test="type != null">
</if> AND APPLY_TYPE_ID = #{type}
<if test="subAreaCode != null and subAreaCode != ''"> </if>
AND UNIT_ID LIKE CONCAT(#{subAreaCode}, '%') <if test="subAreaCode != null and subAreaCode != ''">
</if> AND UNIT_ID LIKE CONCAT(#{subAreaCode}, '%')
GROUP BY LEFT(UNIT_ID, #{size}) </if>
</select> GROUP BY LEFT(UNIT_ID, #{size})
</select>
<select id="getAreaSubsidyStats" resultType="com.zq.portal.vo.StatsVo">
SELECT LEFT(AREACODE, #{size}) 'code', FF_DATE 'month',SUM(FF_ZD_PC ) 'hlnum', SUM(FF_ZD_MC) 'hlamount',SUM(FF_KUN_PC) 'shnum', SUM(FF_KUN_MC) 'shamount' <select id="getAreaSubsidyStats" resultType="com.zq.portal.vo.StatsVo">
FROM `ff_data_jm` SELECT LEFT(AREACODE, #{size}) 'code', FF_DATE 'month',SUM(FF_ZD_PC ) 'hlnum', SUM(FF_ZD_MC) 'hlamount',SUM(FF_KUN_PC) 'shnum', SUM(FF_KUN_MC) 'shamount'
WHERE FROM `ff_data_jm`
CHAR_LENGTH (LEFT ( AREACODE, #{size} )) = #{size} WHERE
AND FF_DATE = DATE_FORMAT(NOW(),'%Y-%m') CHAR_LENGTH (LEFT ( AREACODE, #{size} )) = #{size}
<if test="subAreaCode != null and subAreaCode != ''"> AND FF_DATE = DATE_FORMAT(NOW(),'%Y-%m')
AND AREACODE LIKE CONCAT(#{subAreaCode}, '%') <if test="subAreaCode != null and subAreaCode != ''">
</if> AND AREACODE LIKE CONCAT(#{subAreaCode}, '%')
GROUP BY LEFT(AREACODE, #{size}) </if>
</select> GROUP BY LEFT(AREACODE, #{size})
</select>
<select id="getEnjoySumStats" resultType="com.zq.portal.vo.StatsVo">
SELECT SUM(S_PC) 'num' , SUM(S_MC) 'amount' <select id="getEnjoySumStats" resultType="com.zq.portal.vo.StatsVo">
FROM ff_data_jm SELECT SUM(S_PC) 'num' , SUM(S_MC) 'amount'
WHERE FF_DATE = DATE_FORMAT(NOW(),'%Y-%m') FROM ff_data_jm
</select> WHERE FF_DATE = DATE_FORMAT(NOW(),'%Y-%m')
</select>
<select id="getYearIssueStats" resultType="com.zq.portal.vo.StatsVo">
SELECT APPLY_TYPE_ID 'type', GRANT_YEAR 'year', SUM( COUNT_PEOPLE ) 'num', SUM( SUM_MONEY ) 'amount' <select id="getYearIssueStats" resultType="com.zq.portal.vo.StatsVo">
FROM `statics_grant` SELECT APPLY_TYPE_ID 'type', GRANT_YEAR 'year', SUM( COUNT_PEOPLE ) 'num', SUM( SUM_MONEY ) 'amount'
WHERE DATE_FORMAT(create_time, '%Y-%m-%d') = (SELECT DATE_FORMAT(create_time, '%Y-%m-%d') FROM statics_grant FROM `statics_grant`
ORDER BY create_time DESC LIMIT 1) WHERE 1=1
<if test="subAreaCode != null and subAreaCode != ''"> # DATE_FORMAT(create_time, '%Y-%m-%d') = (SELECT DATE_FORMAT(create_time, '%Y-%m-%d') FROM statics_grant
AND UNIT_ID LIKE CONCAT( #{subAreaCode}, '%' ) # ORDER BY create_time DESC LIMIT 1)
</if> <if test="subAreaCode != null and subAreaCode != ''">
<if test="type != null"> AND UNIT_ID LIKE CONCAT( #{subAreaCode}, '%' )
AND APPLY_TYPE_ID = #{type} </if>
</if> <if test="type != null">
GROUP BY GRANT_YEAR AND APPLY_TYPE_ID = #{type}
ORDER BY GRANT_YEAR DESC LIMIT #{size} </if>
</select> GROUP BY GRANT_YEAR
ORDER BY GRANT_YEAR DESC LIMIT #{size}
<select id="getYearList" resultType="java.lang.String"> </select>
SELECT GRANT_YEAR 'year'
FROM `statics_grant` <select id="getYearList" resultType="java.lang.String">
GROUP BY GRANT_YEAR SELECT GRANT_YEAR 'year'
ORDER BY GRANT_YEAR DESC LIMIT 5 FROM `statics_grant`
</select> GROUP BY GRANT_YEAR
ORDER BY GRANT_YEAR DESC LIMIT 5
<select id="search" resultType="java.util.Map"> </select>
SELECT NAME 'name', CARD_CODE 'idCard',MARRY_TYPE_ID 'marryType', REGISTER_ADDRESS_NAME
'addressName',ENSURE_LEVEL_ID 'levelId', CREATE_DATE 'createTime' <select id="search" resultType="java.util.Map">
FROM SELECT NAME 'name', CARD_CODE 'idCard',MARRY_TYPE_ID 'marryType', REGISTER_ADDRESS_NAME
cjrjz_proposer 'addressName',ENSURE_LEVEL_ID 'levelId', CREATE_DATE 'createTime'
WHERE 1=1 FROM
<if test="keyword != null and keyword != ''"> cjrjz_proposer
AND (NAME =#{keyword} OR CARD_CODE =#{keyword}) WHERE 1=1
</if> <if test="keyword != null and keyword != ''">
<if test="subAreaCode != null and subAreaCode != ''"> AND (NAME =#{keyword} OR CARD_CODE =#{keyword})
AND CARD_CODE LIKE CONCAT(#{subAreaCode}, '%') </if>
</if> <if test="subAreaCode != null and subAreaCode != ''">
ORDER BY CREATE_DATE DESC AND CARD_CODE LIKE CONCAT(#{subAreaCode}, '%')
</select> </if>
ORDER BY CREATE_DATE DESC
</mapper> </select>
</mapper>
<?xml version="1.0" encoding="UTF-8"?> <?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"> <!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="getFivesYearMarriageLine" 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 LEFT JOIN taorg t ON m.AIAX0003 = t.ORGID 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 DATE_FORMAT(m.AIAX0048, "%Y") &lt;= YEAR(NOW()) AND DATE_FORMAT(m.AIAX0048, "%Y") &lt;= YEAR(NOW())
AND m.AIAX0001 = #{type} AND m.AIAX0001 = #{type}
<if test="subAreaCode != null and subAreaCode != ''"> <if test="subAreaCode != null and subAreaCode != ''">
AND t.YAB003 LIKE CONCAT(#{subAreaCode},'%') AND t.YAB003 LIKE CONCAT(#{subAreaCode},'%')
</if> </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 id="getMonthMarriageLine" resultType="com.zq.portal.vo.StatsVo">
SELECT COUNT(1) 'num', m.AIAX0001 'type', DATE_FORMAT( m.AIAX0048, "%Y-%m" ) 'month' 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 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="subAreaCode != null and subAreaCode != ''"> <if test="subAreaCode != null and subAreaCode != ''">
AND t.YAB003 LIKE CONCAT(#{subAreaCode},'%') AND t.YAB003 LIKE CONCAT(#{subAreaCode},'%')
</if> </if>
GROUP BY DATE_FORMAT(m.AIAX0048, '%Y-%m') GROUP BY DATE_FORMAT(m.AIAX0048, '%Y-%m')
ORDER BY DATE_FORMAT(m.AIAX0048, '%Y-%m') DESC LIMIT 12 ORDER BY DATE_FORMAT(m.AIAX0048, '%Y-%m') DESC LIMIT 12
</select> </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',
m.AIAX0001 'type' m.AIAX0001 'type'
FROM FROM
mrcase m LEFT JOIN taorg t ON m.AIAX0003 = t.ORGID mrcase m LEFT JOIN taorg t ON m.AIAX0003 = t.ORGID
WHERE WHERE
m.AIAX0072 = '1' m.AIAX0072 = '1'
AND m.BIAX0075 = '1' AND m.BIAX0075 = '1'
<if test="year != null"> <if test="year != null">
AND m.AIAX0059 = #{year} AND m.AIAX0059 = #{year}
</if> </if>
<if test="subAreaCode != null and subAreaCode != ''"> <if test="subAreaCode != null and subAreaCode != ''">
AND t.YAB003 LIKE CONCAT(#{subAreaCode},'%') AND t.YAB003 LIKE CONCAT(#{subAreaCode},'%')
</if> </if>
GROUP BY GROUP BY
m.AIAX0001 m.AIAX0001
</select> </select>
<!--获取下级区域婚姻统计列表--> <!--获取下级区域婚姻统计列表-->
<select id="getAreaUnderMarriageStatsList" resultType="com.zq.portal.vo.StatsVo"> <select id="getAreaUnderMarriageStatsList" resultType="com.zq.portal.vo.StatsVo">
SELECT SELECT
LEFT ( t.YAB003, #{size} ) 'code', LEFT ( t.YAB003, #{size} ) 'code',
m.AIAX0001 'type' , m.AIAX0001 'type' ,
COUNT( 1 ) 'num' COUNT( 1 ) 'num'
FROM FROM
mrcase m LEFT JOIN taorg t ON m.AIAX0003 = t.ORGID mrcase m LEFT JOIN taorg t ON m.AIAX0003 = t.ORGID
WHERE WHERE
m.AIAX0072 = '1' m.AIAX0072 = '1'
AND m.BIAX0075 = '1' AND m.BIAX0075 = '1'
AND CHAR_LENGTH (LEFT ( t.YAB003, #{size} )) = #{size} AND CHAR_LENGTH (LEFT ( t.YAB003, #{size} )) = #{size}
<if test="year != null"> <if test="year != null">
AND m.AIAX0059 = #{year} AND m.AIAX0059 = #{year}
</if> </if>
<if test="type != null and type != ''"> <if test="type != null and type != ''">
AND m.AIAX0001 = #{type} AND m.AIAX0001 = #{type}
</if> </if>
<if test="subAreaCode != null and subAreaCode != ''"> <if test="subAreaCode != null and subAreaCode != ''">
AND t.YAB003 LIKE CONCAT( #{subAreaCode}, '%' ) AND t.YAB003 LIKE CONCAT( #{subAreaCode}, '%' )
</if> </if>
GROUP BY GROUP BY
LEFT ( t.YAB003, #{size} ), m.AIAX0001 LEFT ( t.YAB003, #{size} ), m.AIAX0001
</select> </select>
<!--获取跨地婚姻统计--> <!--获取跨地婚姻统计-->
<select id="getCrossMarriageStats" resultType="com.zq.portal.vo.StatsVo"> <select id="getCrossMarriageStats" resultType="com.zq.portal.vo.StatsVo">
SELECT SELECT
COUNT( 1 ) 'num', COUNT( 1 ) 'num',
m.AIAX0001 'type' m.AIAX0001 'type'
FROM FROM
mrcase m LEFT JOIN taorg t ON m.AIAX0003 = t.ORGID mrcase m LEFT JOIN taorg t ON m.AIAX0003 = t.ORGID
WHERE WHERE
m.AIAX0072 = '1' m.AIAX0072 = '1'
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"> <if test="year != null">
AND m.AIAX0059 = #{year} AND m.AIAX0059 = #{year}
</if> </if>
<if test="subAreaCode != null and subAreaCode != ''"> <if test="subAreaCode != null and subAreaCode != ''">
AND t.YAB003 LIKE CONCAT(#{subAreaCode},'%') AND t.YAB003 LIKE CONCAT(#{subAreaCode},'%')
</if> </if>
GROUP BY GROUP BY
m.AIAX0001 m.AIAX0001
</select> </select>
<!--获取离婚中的人数--> <!--获取离婚中的人数-->
<select id="getInDivorceNum" resultType="com.zq.portal.vo.StatsVo"> <select id="getInDivorceNum" resultType="com.zq.portal.vo.StatsVo">
SELECT COUNT(1) 'num', m.AIAX0001 'type' SELECT COUNT(1) 'num', m.AIAX0001 'type'
FROM mrcase m LEFT JOIN taorg t ON m.AIAX0003 = t.ORGID FROM mrcase m LEFT JOIN taorg t ON m.AIAX0003 = t.ORGID
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"> <if test="year != null">
AND m.AIAX0059 = #{year} AND m.AIAX0059 = #{year}
</if> </if>
<if test="subAreaCode != null and subAreaCode != ''"> <if test="subAreaCode != null and subAreaCode != ''">
AND t.YAB003 LIKE CONCAT(#{subAreaCode},'%') AND t.YAB003 LIKE CONCAT(#{subAreaCode},'%')
</if> </if>
</select> </select>
<!--获取结婚人数--> <!--获取结婚人数-->
<select id="getMarryNum" resultType="com.zq.portal.vo.StatsVo"> <select id="getMarryNum" resultType="com.zq.portal.vo.StatsVo">
SELECT COUNT(1) 'num', m.AIAX0001 'type' SELECT COUNT(1) 'num', m.AIAX0001 'type'
FROM mrcase m JOIN taorg t ON m.AIAX0003 = t.ORGID FROM mrcase m JOIN taorg t ON m.AIAX0003 = t.ORGID
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"> <if test="year != null">
AND m.AIAX0059 = #{year} AND m.AIAX0059 = #{year}
</if> </if>
<if test="subAreaCode != null and subAreaCode != ''"> <if test="subAreaCode != null and subAreaCode != ''">
AND t.YAB003 LIKE CONCAT(#{subAreaCode},'%') AND t.YAB003 LIKE CONCAT(#{subAreaCode},'%')
</if> </if>
</select> </select>
<select id="getMonthDivorceCoolingData" resultType="com.zq.portal.vo.StatsVo"> <select id="getMonthDivorceCoolingData" resultType="com.zq.portal.vo.StatsVo">
SELECT SELECT
LEFT (m.AIAX0048, 10), LEFT (m.AIAX0048, 10),
COUNT (1) 'num' COUNT (1) 'num'
FROM FROM
mrcheck m mrcheck m
LEFT JOIN mrcheckappend ma LEFT JOIN mrcheckappend ma
ON m.BIAX0069 = ma.BIAX0069 ON m.BIAX0069 = ma.BIAX0069
WHERE WHERE
m.AIAX0001 = 'IB' m.AIAX0001 = 'IB'
AND m.AIAX0072 = '1' AND m.AIAX0072 = '1'
AND m.BIAX0015 = '6' AND m.BIAX0015 = '6'
AND ma.COLEENDTIME AND ma.COLEENDTIME
&lt; CURDATE() &lt; CURDATE()
GROUP BY LEFT (m.AIAX0048, 10) GROUP BY LEFT (m.AIAX0048, 10)
</select> </select>
<!-- <select id="search" resultType="java.util.Map">--> <!-- <select id="search" resultType="java.util.Map">-->
<!-- SELECT m.AIAX0001 'businessType', m.AIAP0005 'manName', m.AIAP0006 'girlName', m.AIAP0013 'manIdCard', m.AIAP0014--> <!-- SELECT m.AIAX0001 'businessType', m.AIAP0005 'manName', m.AIAP0006 'girlName', m.AIAP0013 'manIdCard', m.AIAP0014-->
<!-- 'girlIdCard',--> <!-- 'girlIdCard',-->
<!-- m.AIAP0015 'manNationality', m.AIAP0016 'girlNationality', m.AIAP0023 'manState', m.AIAP0024 'girlState',--> <!-- m.AIAP0015 'manNationality', m.AIAP0016 'girlNationality', m.AIAP0023 'manState', m.AIAP0024 'girlState',-->
<!-- m.AIAP0027--> <!-- m.AIAP0027-->
<!-- 'manDomicile', m.AIAP0028 'girlDomicile', m.AIAX0035 'manContact', m.AIAX0036 'girlContact', m.AIAX0059--> <!-- 'manDomicile', m.AIAP0028 'girlDomicile', m.AIAX0035 'manContact', m.AIAX0036 'girlContact', m.AIAX0059-->
<!-- 'archiveYear',--> <!-- 'archiveYear',-->
<!-- LEFT (m.AIAX0048, 10) 'registerDate', m.AIAE0004 'orgName'--> <!-- LEFT (m.AIAX0048, 10) 'registerDate', m.AIAE0004 'orgName'-->
<!-- FROM `mrcase` m LEFT JOIN taorg t ON m.AIAX0003 = t.ORGID--> <!-- FROM `mrcase` m LEFT JOIN taorg t ON m.AIAX0003 = t.ORGID-->
<!-- WHERE 1=1--> <!-- WHERE 1=1-->
<!-- <if test="keyword != null and keyword != ''">--> <!-- <if test="keyword != null and keyword != ''">-->
<!-- AND (m.AIAP0005 = #{keyword} OR AIAP0006 = #{keyword} OR AIAP0013 = #{keyword} OR AIAP0014 = #{keyword})--> <!-- AND (m.AIAP0005 = #{keyword} OR AIAP0006 = #{keyword} OR AIAP0013 = #{keyword} OR AIAP0014 = #{keyword})-->
<!-- </if>--> <!-- </if>-->
<!-- <if test="subAreaCode != null and subAreaCode != ''">--> <!-- <if test="subAreaCode != null and subAreaCode != ''">-->
<!-- AND t.YAB003 LIKE CONCAT(#{subAreaCode},'%')--> <!-- AND t.YAB003 LIKE CONCAT(#{subAreaCode},'%')-->
<!-- </if>--> <!-- </if>-->
<!-- ORDER BY m.AIAX0048 DESC--> <!-- ORDER BY m.AIAX0048 DESC-->
<!-- </select>--> <!-- </select>-->
<select id="search" resultType="java.util.Map"> <select id="search" resultType="java.util.Map">
SELECT businessType, manName, girlName, manIdCard, girlIdCard, SELECT businessType, manName, girlName, manIdCard, girlIdCard,
manNationality, girlNationality, manState, girlState, manDomicile, manNationality, girlNationality, manState, girlState, manDomicile,
girlDomicile, manContact, girlContact, archiveYear, registerDate, orgName, areaCode girlDomicile, manContact, girlContact, archiveYear, registerDate, orgName, areaCode
FROM `search_data` FROM `search_data`
WHERE 1=1 WHERE 1=1
<if test="keyword != null and keyword != ''"> <if test="keyword != null and keyword != ''">
AND (manName = #{keyword} OR girlName = #{keyword} OR manIdCard = #{keyword} OR girlIdCard = #{keyword}) AND (manName = #{keyword} OR girlName = #{keyword} OR manIdCard = #{keyword} OR girlIdCard = #{keyword})
</if> </if>
<if test="subAreaCode != null and subAreaCode != ''"> <if test="subAreaCode != null and subAreaCode != ''">
AND areaCode LIKE CONCAT(#{subAreaCode},'%') AND areaCode LIKE CONCAT(#{subAreaCode},'%')
</if> </if>
ORDER BY registerDate DESC ORDER BY registerDate DESC
</select> </select>
<select id="getYearMarriedCouple" resultType="com.zq.portal.vo.StatsVo">
</mapper> SELECT
COUNT( 1 )
FROM
MRCASE m
WHERE
1=1
<if test="type != null and type != ''">
AND m.AIAX0001 = #{type}
</if>
AND BIAX0075 = '1'
AND AIAX0072 = '1'
AND DATE_FORMAT(AIAX0048,'%Y%m') >= '202201'
AND DATE_FORMAT(AIAX0048,'%Y%m') &lt;= '202212'
</select>
</mapper>
<?xml version="1.0" encoding="UTF-8"?> <?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"> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.zq.portal.dao.ShjzStatsDao"> <mapper namespace="com.zq.portal.dao.ShjzStatsDao">
<!-- <select id="search" resultType="java.util.Map">--> <!-- <select id="search" resultType="java.util.Map">-->
<!-- SELECT AXDF0002 'name', AXDF0004 'mainIdCard', AXDF0011 'phone',AXDF0008 'address', AXAA2701 'unitCode'--> <!-- SELECT AXDF0002 'name', AXDF0004 'mainIdCard', AXDF0011 'phone',AXDF0008 'address', AXAA2701 'unitCode'-->
<!-- ,UPDATETIME 'createTime'--> <!-- ,UPDATETIME 'createTime'-->
<!-- FROM--> <!-- FROM-->
<!-- baf01--> <!-- baf01-->
<!-- WHERE 1 = 1--> <!-- WHERE 1 = 1-->
<!-- <choose>--> <!-- <choose>-->
<!-- <when test="keyword != null and keyword != ''">--> <!-- <when test="keyword != null and keyword != ''">-->
<!-- AND (AXDF0002 = #{keyword}--> <!-- AND (AXDF0002 = #{keyword}-->
<!-- OR AXDF0004 = #{keyword})--> <!-- OR AXDF0004 = #{keyword})-->
<!-- </when>--> <!-- </when>-->
<!-- <otherwise>--> <!-- <otherwise>-->
<!-- ORDER BY UPDATETIME DESC LIMIT 20--> <!-- ORDER BY UPDATETIME DESC LIMIT 20-->
<!-- </otherwise>--> <!-- </otherwise>-->
<!-- </choose>--> <!-- </choose>-->
<!-- </select>--> <!-- </select>-->
<select id="search" resultType="java.util.Map"> <select id="search" resultType="java.util.Map">
SELECT SELECT
REPLACE(address, '广西壮族自治区-', '') 'address', REPLACE(address, '广西壮族自治区-', '') 'address',
NAME 'name', NAME 'name',
id_card 'idCard', id_card 'idCard',
help_type 'helpType', help_type 'helpType',
help_amount 'helpAmount', help_amount 'helpAmount',
provide_state 'provideState', provide_state 'provideState',
start_provide_date 'startProvideDate', start_provide_date 'startProvideDate',
end_provide_date 'endProvideDate' end_provide_date 'endProvideDate'
FROM FROM
`gw_temptable_20210630` `gw_temptable_20210630`
WHERE 1 = 1 WHERE 1 = 1
<if test="keyword != null and keyword != ''"> <if test="keyword != null and keyword != ''">
AND (NAME = #{keyword} AND (NAME = #{keyword}
OR id_card = #{keyword}) OR id_card = #{keyword})
</if> </if>
<if test="subAreaCode != null and subAreaCode != ''"> <if test="subAreaCode != null and subAreaCode != ''">
AND id_card LIKE CONCAT(#{subAreaCode},'%') AND id_card LIKE CONCAT(#{subAreaCode},'%')
</if> </if>
ORDER BY start_provide_date DESC ORDER BY start_provide_date DESC
</select> </select>
<select id="getEnjoyNum" resultType="com.zq.portal.vo.StatsVo"> <select id="getEnjoyNum" resultType="com.zq.portal.vo.StatsVo">
SELECT SELECT
( CASE h.ISCITY ( CASE h.ISCITY
WHEN 0 THEN '农村低保' WHEN 0 THEN '农村低保'
WHEN 1 THEN '城市低保' WHEN 1 THEN '城市低保'
WHEN 6 THEN '特困供养' WHEN 6 THEN '特困供养'
WHEN 10 THEN '农村低收入' WHEN 10 THEN '农村低收入'
WHEN 11 THEN '城市低收入' WHEN 11 THEN '城市低收入'
WHEN 21 THEN '住房救助' WHEN 21 THEN '住房救助'
WHEN 31 THEN '城市特困' WHEN 31 THEN '城市特困'
ELSE '其他' END ) 'type', ELSE '其他' END ) 'type',
SUM( h.SURE_POPULATION ) 'num' SUM( h.SURE_POPULATION ) 'num'
FROM ENBUZ_APPLY_HOME h FROM ENBUZ_APPLY_HOME h
WHERE h.VP_STATE = 4 WHERE h.VP_STATE = 4
<if test="subAreaCode != null and subAreaCode != ''"> <if test="subAreaCode != null and subAreaCode != ''">
AND h.UNIT_ID LIKE CONCAT(#{subAreaCode}, '%') AND h.UNIT_ID LIKE CONCAT(#{subAreaCode}, '%')
</if> </if>
AND DATE_FORMAT( h.PERMIT_DATE, "%Y-%m-%d" ) &lt;= #{date} AND DATE_FORMAT( h.PERMIT_DATE, "%Y-%m-%d" ) &lt;= #{date}
AND DATE_FORMAT( h.STOP_DATE, "%Y-%m-%d" ) >= #{date} AND DATE_FORMAT( h.STOP_DATE, "%Y-%m-%d" ) >= #{date}
GROUP BY GROUP BY
ISCITY ISCITY
</select> </select>
<select id="getTemporaryNumStats" resultType="com.zq.portal.vo.StatsVo"> <select id="getTemporaryNumStats" resultType="com.zq.portal.vo.StatsVo">
SELECT SELECT
LEFT(h.UNIT_ID, 4) 'code', LEFT(h.UNIT_ID, 4) 'code',
SUM(h.SURE_POPULATION ) 'num' SUM(h.SURE_POPULATION ) 'num'
FROM FROM
tem_home_his h tem_home_his h
WHERE WHERE
h.VP_STATE = 4 h.VP_STATE = 4
<if test="subAreaCode != null and subAreaCode != ''"> <if test="subAreaCode != null and subAreaCode != ''">
AND h.UNIT_ID LIKE CONCAT(#{subAreaCode}, '%') AND h.UNIT_ID LIKE CONCAT(#{subAreaCode}, '%')
</if> </if>
<choose> <choose>
<when test="year != null"> <when test="year != null">
AND DATE_FORMAT( h.PERMIT_DATE, "%Y" ) = #{year} AND DATE_FORMAT( h.PERMIT_DATE, "%Y" ) = #{year}
</when> </when>
<otherwise> <otherwise>
AND DATE_FORMAT( h.PERMIT_DATE, "%Y" ) = DATE_FORMAT(NOW(), "%Y" ) AND DATE_FORMAT( h.PERMIT_DATE, "%Y" ) = DATE_FORMAT(NOW(), "%Y" )
</otherwise> </otherwise>
</choose> </choose>
</select> </select>
<select id="getBorderNumStats" resultType="com.zq.portal.vo.StatsVo"> <select id="getBorderNumStats" resultType="com.zq.portal.vo.StatsVo">
SELECT SELECT
LEFT(h.UNIT_ID, #{size}) 'code', LEFT(h.UNIT_ID, #{size}) 'code',
sum( h.SURE_POPULATION ) 'num' sum( h.SURE_POPULATION ) 'num'
FROM FROM
border_region_home h border_region_home h
WHERE h.VP_STATE = 4 WHERE h.VP_STATE = 4
AND h.ISCITY = 8 AND h.ISCITY = 8
<if test="subAreaCode != null and subAreaCode != ''"> <if test="subAreaCode != null and subAreaCode != ''">
AND h.UNIT_ID LIKE CONCAT(#{subAreaCode}, '%') AND h.UNIT_ID LIKE CONCAT(#{subAreaCode}, '%')
</if> </if>
<choose> <choose>
<when test="year != null"> <when test="year != null">
AND DATE_FORMAT( h.PERMIT_DATE, "%Y" ) = #{year} AND DATE_FORMAT( h.PERMIT_DATE, "%Y" ) = #{year}
</when> </when>
<otherwise> <otherwise>
AND DATE_FORMAT( h.PERMIT_DATE, "%Y" ) = DATE_FORMAT(NOW(), "%Y" ) AND DATE_FORMAT( h.PERMIT_DATE, "%Y" ) = DATE_FORMAT(NOW(), "%Y" )
</otherwise> </otherwise>
</choose> </choose>
</select> </select>
<select id="getAreaUnderNumStats" resultType="com.zq.portal.vo.StatsVo"> <select id="getAreaUnderNumStats" resultType="com.zq.portal.vo.StatsVo">
SELECT SELECT
LEFT(h.UNIT_ID, #{size}) 'code', LEFT(h.UNIT_ID, #{size}) 'code',
h.ISCITY 'type', h.ISCITY 'type',
SUM( h.SURE_POPULATION ) 'num' SUM( h.SURE_POPULATION ) 'num'
FROM FROM
ENBUZ_APPLY_HOME h ENBUZ_APPLY_HOME h
WHERE h.VP_STATE = 4 WHERE h.VP_STATE = 4
AND LEFT(h.UNIT_ID, #{size}) IS NOT NULL AND LEFT(h.UNIT_ID, #{size}) IS NOT NULL
<if test="subAreaCode != null and subAreaCode != ''"> <if test="subAreaCode != null and subAreaCode != ''">
AND h.UNIT_ID LIKE CONCAT(#{subAreaCode}, '%') AND h.UNIT_ID LIKE CONCAT(#{subAreaCode}, '%')
</if> </if>
<if test="type != null and type != ''"> <if test="type != null and type != ''">
AND h.ISCITY = #{type} AND h.ISCITY = #{type}
</if> </if>
AND DATE_FORMAT( h.PERMIT_DATE, "%Y-%m-%d" ) &lt;= '2021-12-01' AND DATE_FORMAT( h.PERMIT_DATE, "%Y-%m-%d" ) &lt;= '2021-12-01'
AND DATE_FORMAT( h.STOP_DATE, "%Y-%m-%d" ) >= '2021-12-01' AND DATE_FORMAT( h.STOP_DATE, "%Y-%m-%d" ) >= '2021-12-01'
GROUP BY GROUP BY
LEFT(h.UNIT_ID, #{size}), LEFT(h.UNIT_ID, #{size}),
type type
</select> </select>
<select id="getAreaTotalNumStats" resultType="com.zq.portal.vo.StatsVo"> <select id="getAreaTotalNumStats" resultType="com.zq.portal.vo.StatsVo">
SELECT SELECT
h.ISCITY 'type', h.ISCITY 'type',
SUM( h.SURE_POPULATION ) 'num' SUM( h.SURE_POPULATION ) 'num'
FROM FROM
ENBUZ_APPLY_HOME h ENBUZ_APPLY_HOME h
WHERE h.VP_STATE = 4 WHERE h.VP_STATE = 4
AND DATE_FORMAT( h.PERMIT_DATE, "%Y-%m-%d" ) &lt;= '2021-12-01' AND DATE_FORMAT( h.PERMIT_DATE, "%Y-%m-%d" ) &lt;= '2021-12-01'
AND DATE_FORMAT( h.STOP_DATE, "%Y-%m-%d" ) >= '2021-12-01' AND DATE_FORMAT( h.STOP_DATE, "%Y-%m-%d" ) >= '2021-12-01'
AND h.ISCITY IN(0,1) AND h.ISCITY IN(0,1)
GROUP BY GROUP BY
type type
</select> </select>
<!-- <!--
SELECT DATE_FORMAT(h.PERMIT_DATE, "%Y-%m") 'date', SELECT DATE_FORMAT(h.PERMIT_DATE, "%Y-%m") 'date',
( CASE h.ISCITY ( CASE h.ISCITY
WHEN 0 THEN '农村低保' WHEN 0 THEN '农村低保'
WHEN 1 THEN '城市低保' WHEN 1 THEN '城市低保'
WHEN 6 THEN '特困供养' WHEN 6 THEN '特困供养'
WHEN 10 THEN '农村低收入' WHEN 10 THEN '农村低收入'
WHEN 11 THEN '城市低收入' WHEN 11 THEN '城市低收入'
WHEN 21 THEN '住房救助' WHEN 21 THEN '住房救助'
WHEN 31 THEN '城市特困' WHEN 31 THEN '城市特困'
ELSE '其他' END ) 'type', ELSE '其他' END ) 'type',
SUM( h.SURE_POPULATION ) 'num' SUM( h.SURE_POPULATION ) 'num'
FROM ENBUZ_APPLY_HOME h FROM ENBUZ_APPLY_HOME h
WHERE h.VP_STATE = 4 WHERE h.VP_STATE = 4
AND h.ISCITY IN(0, 1) AND h.ISCITY IN(0, 1)
AND DATE_FORMAT( h.PERMIT_DATE, "%Y" ) > DATE_FORMAT(NOW(), "%Y" ) - 5 AND DATE_FORMAT( h.PERMIT_DATE, "%Y" ) > DATE_FORMAT(NOW(), "%Y" ) - 5
AND DATE_FORMAT( h.PERMIT_DATE, "%Y" ) &lt;= DATE_FORMAT(NOW(), "%Y" ) AND DATE_FORMAT( h.PERMIT_DATE, "%Y" ) &lt;= DATE_FORMAT(NOW(), "%Y" )
AND DATE_FORMAT( h.PERMIT_DATE, "%Y-%m" ) &lt;= DATE_FORMAT(DATE_SUB(NOW(), INTERVAL 1 MONTH), "%Y-%m") AND DATE_FORMAT( h.PERMIT_DATE, "%Y-%m" ) &lt;= DATE_FORMAT(DATE_SUB(NOW(), INTERVAL 1 MONTH), "%Y-%m")
AND h.UNIT_ID LIKE CONCAT('45', '%') AND h.UNIT_ID LIKE CONCAT('45', '%')
GROUP BY GROUP BY
DATE_FORMAT( h.PERMIT_DATE, "%Y-%m" ), DATE_FORMAT( h.PERMIT_DATE, "%Y-%m" ),
ISCITY ISCITY
--> -->
<select id="getFivesYearEnjoyStats" resultType="com.zq.portal.vo.StatsVo"> <select id="getFivesYearEnjoyStats" resultType="com.zq.portal.vo.StatsVo">
SELECT LEFT(date, 4) 'year', type, SUM(num) 'num' FROM ( SELECT DATE_FORMAT(h.PERMIT_DATE, "%Y-%m") 'date', SELECT LEFT(date, 4) 'year', type, SUM(num) 'num' FROM ( SELECT DATE_FORMAT(h.PERMIT_DATE, "%Y-%m") 'date',
( CASE h.ISCITY ( CASE h.ISCITY
WHEN 0 THEN '农村低保' WHEN 0 THEN '农村低保'
WHEN 1 THEN '城市低保' WHEN 1 THEN '城市低保'
WHEN 6 THEN '特困供养' WHEN 6 THEN '特困供养'
WHEN 10 THEN '农村低收入' WHEN 10 THEN '农村低收入'
WHEN 11 THEN '城市低收入' WHEN 11 THEN '城市低收入'
WHEN 21 THEN '住房救助' WHEN 21 THEN '住房救助'
WHEN 31 THEN '城市特困' WHEN 31 THEN '城市特困'
ELSE '其他' END ) 'type', ELSE '其他' END ) 'type',
SUM( h.SURE_POPULATION ) 'num' SUM( h.SURE_POPULATION ) 'num'
FROM ENBUZ_APPLY_HOME h FROM ENBUZ_APPLY_HOME h
WHERE h.VP_STATE = 4 WHERE h.VP_STATE = 4
AND h.ISCITY IN(0, 1) AND h.ISCITY IN(0, 1)
AND DATE_FORMAT( h.PERMIT_DATE, "%Y" ) > DATE_FORMAT(NOW(), "%Y" ) - 5 AND DATE_FORMAT( h.PERMIT_DATE, "%Y" ) > DATE_FORMAT(NOW(), "%Y" ) - 5
AND DATE_FORMAT( h.PERMIT_DATE, "%Y" ) &lt;= DATE_FORMAT(NOW(), "%Y" ) AND DATE_FORMAT( h.PERMIT_DATE, "%Y" ) &lt;= DATE_FORMAT(NOW(), "%Y" )
<if test="subAreaCode != null and subAreaCode != ''"> <if test="subAreaCode != null and subAreaCode != ''">
AND h.UNIT_ID LIKE CONCAT(#{subAreaCode}, '%') AND h.UNIT_ID LIKE CONCAT(#{subAreaCode}, '%')
</if> </if>
GROUP BY GROUP BY
DATE_FORMAT( h.PERMIT_DATE, "%Y-%m" ), DATE_FORMAT( h.PERMIT_DATE, "%Y-%m" ),
ISCITY) t ISCITY) t
WHERE type IN("城市低保","农村低保") WHERE type IN("城市低保","农村低保")
GROUP BY GROUP BY
LEFT(date, 4), LEFT(date, 4),
type type
</select> </select>
<select id="getPeopleNumStats" resultType="com.zq.portal.vo.StatsVo"> <select id="getPeopleNumStats" resultType="com.zq.portal.vo.StatsVo">
SELECT SELECT
LEFT ( a.area_code, #{size} ) 'code', LEFT ( a.area_code, #{size} ) 'code',
a.type 'type', a.type 'type',
SUM(a.people_num) 'num' SUM(a.people_num) 'num'
FROM city_coutry_2021 a FROM city_coutry a
WHERE WHERE
CHAR_LENGTH (LEFT ( a.area_code, #{size} )) = #{size} CHAR_LENGTH (LEFT ( a.area_code, #{size} )) = #{size}
<if test="subAreaCode != null and subAreaCode != ''"> <if test="subAreaCode != null and subAreaCode != ''">
AND a.area_code LIKE CONCAT(#{subAreaCode}, '%') AND a.area_code LIKE CONCAT(#{subAreaCode}, '%')
</if> </if>
<if test="type != null and type != ''"> <if test="type != null and type != ''">
AND a.type = #{type} AND a.type = #{type}
</if> </if>
GROUP BY GROUP BY
LEFT ( a.area_code, #{size} ), LEFT ( a.area_code, #{size} ),
a.type a.type
</select> </select>
<!-- iscity = 1 是城市 0是农村 --> <!-- iscity = 1 是城市 0是农村 -->
<select id="getMonyNumStats" resultType="com.zq.portal.vo.StatsVo"> <select id="getMonyNumStats" resultType="com.zq.portal.vo.StatsVo">
SELECT SELECT
LEFT(p.unit_id, #{size}) 'code', LEFT(p.unit_id, #{size}) 'code',
p.iscity 'type', p.iscity 'type',
SUM( p.money ) 'amount' SUM( p.money ) 'amount'
FROM FROM
mon_pay p mon_pay p
WHERE WHERE
p.pay_state = 2 p.pay_state = 2
AND p.vp_state = 4 AND p.vp_state = 4
AND DATE_FORMAT( p.pmonth, "%Y-%m-%d" ) >= '2021-12-01' AND DATE_FORMAT( p.pmonth, "%Y-%m-%d" ) >= '2021-12-01'
AND DATE_FORMAT( p.pmonth, "%Y-%m-%d" ) &lt;= '2021-12-01' AND DATE_FORMAT( p.pmonth, "%Y-%m-%d" ) &lt;= '2021-12-01'
AND CHAR_LENGTH (LEFT ( p.unit_id, #{size} )) = #{size} AND CHAR_LENGTH (LEFT ( p.unit_id, #{size} )) = #{size}
<if test="subAreaCode != null and subAreaCode != ''"> <if test="subAreaCode != null and subAreaCode != ''">
AND p.unit_id LIKE CONCAT(#{subAreaCode}, '%') AND p.unit_id LIKE CONCAT(#{subAreaCode}, '%')
</if> </if>
<if test="type != null and type != ''"> <if test="type != null and type != ''">
AND p.iscity = #{type} AND p.iscity = #{type}
</if> </if>
GROUP BY GROUP BY
LEFT(p.unit_id, #{size}), LEFT(p.unit_id, #{size}),
p.iscity p.iscity
</select> </select>
</mapper> </mapper>
package com.zq.resource.controller; package com.zq.resource.controller;
import com.zq.common.utils.AssertUtils; import com.zq.common.annotation.AnonymousAccess;
import com.zq.common.vo.IdVo; import com.zq.common.utils.AssertUtils;
import com.zq.common.vo.PageVo; import com.zq.common.vo.IdVo;
import com.zq.common.vo.ResultVo; import com.zq.common.vo.PageVo;
import com.zq.resource.entity.OrgDept; import com.zq.common.vo.ResultVo;
import com.zq.resource.service.DeptService; import com.zq.resource.entity.OrgDept;
import com.zq.resource.vo.OrgDeptFindVo; import com.zq.resource.service.DeptService;
import com.zq.resource.vo.OrgDeptVo; import com.zq.resource.vo.OrgDeptFindVo;
import io.swagger.annotations.Api; import com.zq.resource.vo.OrgDeptVo;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.Api;
import lombok.RequiredArgsConstructor; import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.*; import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.*;
import java.util.List;
import java.util.List;
/**
* @author wilmiam /**
* @since 2021/8/19 14:33 * @author wilmiam
*/ * @since 2021/8/19 14:33
@Api(tags = "机构部门相关接口") */
@RequiredArgsConstructor @Api(tags = "机构部门相关接口")
@RestController @RequiredArgsConstructor
@RequestMapping(value = "/resource/dept") @RestController
public class DeptController { @RequestMapping(value = "/resource/dept")
public class DeptController {
private final DeptService deptService;
private final DeptService deptService;
@ApiOperation("获取机构列表")
@PostMapping(value = "/getDeptList") @ApiOperation("获取机构列表")
public ResultVo<PageVo<OrgDept>> getDeptList(@RequestBody OrgDeptFindVo vo) { @PostMapping(value = "/getDeptList")
vo.setState(1); public ResultVo<PageVo<OrgDept>> getDeptList(@RequestBody OrgDeptFindVo vo) {
return ResultVo.success(deptService.getDeptList(vo)); vo.setState(1);
} return ResultVo.success(deptService.getDeptList(vo));
}
@ApiOperation("获取机构信息")
@GetMapping(value = "/getDeptInfo/{deptId}") @ApiOperation("获取机构信息")
public ResultVo<OrgDeptVo> getDeptInfo(@PathVariable String deptId) { @GetMapping(value = "/getDeptInfo/{deptId}")
AssertUtils.notNull(deptId, "缺少机构ID"); public ResultVo<OrgDeptVo> getDeptInfo(@PathVariable String deptId) {
return ResultVo.success(deptService.getDeptInfo(deptId)); AssertUtils.notNull(deptId, "缺少机构ID");
} return ResultVo.success(deptService.getDeptInfo(deptId));
}
@ApiOperation("根据部门PID查询子机构")
@GetMapping(value = "/getDeptByPid/{parentId}") @ApiOperation("根据部门PID查询子机构")
public ResultVo<List<OrgDept>> getDeptByPid(@PathVariable String parentId) { @GetMapping(value = "/getDeptByPid/{parentId}")
return ResultVo.success(deptService.getDeptByPid(parentId)); public ResultVo<List<OrgDept>> getDeptByPid(@PathVariable String parentId) {
} return ResultVo.success(deptService.getDeptByPid(parentId));
}
@ApiOperation("添加机构")
@PostMapping(value = "/addDept") @ApiOperation("添加机构")
public ResultVo addDept(@RequestBody OrgDept vo) { @PostMapping(value = "/addDept")
AssertUtils.hasText(vo.getDeptName(), "缺少机构名称"); public ResultVo addDept(@RequestBody OrgDept vo) {
AssertUtils.hasText(vo.getCreditCode(), "缺少部门的统一信用代码"); AssertUtils.hasText(vo.getDeptName(), "缺少机构名称");
AssertUtils.hasText(vo.getCreditCode(), "缺少部门的统一信用代码");
deptService.addDept(vo);
return ResultVo.success(); deptService.addDept(vo);
} return ResultVo.success();
}
@ApiOperation("修改机构")
@PostMapping(value = "/modifyDept") @ApiOperation("修改机构")
public ResultVo modifyDept(@RequestBody OrgDept vo) { @PostMapping(value = "/modifyDept")
AssertUtils.hasText(vo.getId(), "ID不能为空"); public ResultVo modifyDept(@RequestBody OrgDept vo) {
AssertUtils.hasText(vo.getId(), "ID不能为空");
deptService.modifyDept(vo);
return ResultVo.success(); deptService.modifyDept(vo);
} return ResultVo.success();
}
@ApiOperation("获取机构树")
@GetMapping(value = "/getDeptTree") @ApiOperation("获取机构树")
public ResultVo getDeptTree() { @GetMapping(value = "/getDeptTree")
return ResultVo.success(deptService.getDeptTree()); public ResultVo getDeptTree() {
} return ResultVo.success(deptService.getDeptTree());
}
@ApiOperation("机构注册")
@PostMapping(value = "/share/registerDept") @ApiOperation("机构注册")
public ResultVo registerDept(@RequestBody IdVo vo) { @PostMapping(value = "/share/registerDept")
AssertUtils.notEmpty(vo.getIds(), "至少选择一项"); @AnonymousAccess
public ResultVo registerDept(@RequestBody IdVo vo) {
deptService.registerDept(vo.getIds()); AssertUtils.notEmpty(vo.getIds(), "至少选择一项");
return ResultVo.success();
} deptService.registerDept(vo.getIds());
return ResultVo.success();
} }
}
/* /*
* Copyright 2019-2020 Zheng Jie * Copyright 2019-2020 Zheng Jie
* *
* Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.
* You may obtain a copy of the License at * You may obtain a copy of the License at
* *
* http://www.apache.org/licenses/LICENSE-2.0 * http://www.apache.org/licenses/LICENSE-2.0
* *
* Unless required by applicable law or agreed to in writing, software * Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, * distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and * See the License for the specific language governing permissions and
* limitations under the License. * limitations under the License.
*/ */
package com.zq.system.modules.system.service; package com.zq.system.modules.system.service;
import com.zq.system.modules.tools.domain.vo.EmailVo; import com.zq.system.modules.tools.domain.vo.EmailVo;
/** /**
* @author Zheng Jie * @author Zheng Jie
* @date 2018-12-26 * @date 2018-12-26
*/ */
public interface VerifyService { public interface VerifyService {
/** /**
* 发送验证码 * 发送验证码
* *
* @param email / * @param email /
* @param key / * @param key /
* @return / * @return /
*/ */
EmailVo sendEmail(String email, String key); EmailVo sendEmail(String email, String key);
/** /**
* 验证 * 验证
* *
* @param code / * @param code /
* @param key / * @param key /
*/ */
void validated(String key, String code); void validated(String key, String code);
} }
/* /*
* Copyright 2019-2020 Zheng Jie * Copyright 2019-2020 Zheng Jie
* *
* Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.
* You may obtain a copy of the License at * You may obtain a copy of the License at
* *
* http://www.apache.org/licenses/LICENSE-2.0 * http://www.apache.org/licenses/LICENSE-2.0
* *
* Unless required by applicable law or agreed to in writing, software * Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, * distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and * See the License for the specific language governing permissions and
* limitations under the License. * limitations under the License.
*/ */
package com.zq.system.modules.system.service.impl; package com.zq.system.modules.system.service.impl;
import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.RandomUtil; import cn.hutool.core.util.RandomUtil;
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.config.security.ApiTokenUtils; import com.zq.common.config.security.ApiTokenUtils;
import com.zq.common.constant.SystemName; import com.zq.common.constant.SystemName;
import com.zq.common.utils.AssertUtils; import com.zq.common.utils.AssertUtils;
import com.zq.common.utils.StringUtils; import com.zq.common.utils.StringUtils;
import com.zq.common.utils.UploadUtils; import com.zq.common.utils.UploadUtils;
import com.zq.common.vo.ApiTokenVo; import com.zq.common.vo.ApiTokenVo;
import com.zq.system.config.CacheKeys; import com.zq.system.config.CacheKeys;
import com.zq.system.config.FileProperties; import com.zq.system.config.FileProperties;
import com.zq.system.exception.EntityExistException; import com.zq.system.exception.EntityExistException;
import com.zq.system.exception.EntityNotFoundException; import com.zq.system.exception.EntityNotFoundException;
import com.zq.system.modules.system.dao.PfuserDao; import com.zq.system.modules.system.dao.PfuserDao;
import com.zq.system.modules.system.domain.Job; import com.zq.system.modules.system.domain.Job;
import com.zq.system.modules.system.domain.Role; import com.zq.system.modules.system.domain.Role;
import com.zq.system.modules.system.domain.User; import com.zq.system.modules.system.domain.User;
import com.zq.system.modules.system.domain.vo.LoginVo; import com.zq.system.modules.system.domain.vo.LoginVo;
import com.zq.system.modules.system.entity.Pfuser; import com.zq.system.modules.system.entity.Pfuser;
import com.zq.system.modules.system.repository.DeptRepository; import com.zq.system.modules.system.repository.DeptRepository;
import com.zq.system.modules.system.repository.JobRepository; import com.zq.system.modules.system.repository.JobRepository;
import com.zq.system.modules.system.repository.RoleRepository; import com.zq.system.modules.system.repository.RoleRepository;
import com.zq.system.modules.system.repository.UserRepository; import com.zq.system.modules.system.repository.UserRepository;
import com.zq.system.modules.system.service.OnlineUserService; import com.zq.system.modules.system.service.OnlineUserService;
import com.zq.system.modules.system.service.UserCacheClean; import com.zq.system.modules.system.service.UserCacheClean;
import com.zq.system.modules.system.service.UserService; import com.zq.system.modules.system.service.UserService;
import com.zq.system.modules.system.service.dto.JobSmallDto; import com.zq.system.modules.system.service.dto.JobSmallDto;
import com.zq.system.modules.system.service.dto.RoleSmallDto; import com.zq.system.modules.system.service.dto.RoleSmallDto;
import com.zq.system.modules.system.service.dto.UserDto; import com.zq.system.modules.system.service.dto.UserDto;
import com.zq.system.modules.system.service.dto.UserQueryCriteria; import com.zq.system.modules.system.service.dto.UserQueryCriteria;
import com.zq.system.modules.system.service.mapstruct.UserMapper; import com.zq.system.modules.system.service.mapstruct.UserMapper;
import com.zq.system.utils.*; import com.zq.system.utils.*;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.cache.annotation.CacheConfig; import org.springframework.cache.annotation.CacheConfig;
import org.springframework.cache.annotation.Cacheable; import org.springframework.cache.annotation.Cacheable;
import org.springframework.data.domain.Page; import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Pageable;
import org.springframework.security.crypto.password.PasswordEncoder; import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotBlank;
import java.io.IOException; import java.io.IOException;
import java.util.*; import java.util.*;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /**
* @author Zheng Jie * @author Zheng Jie
* @date 2018-11-23 * @date 2018-11-23
*/ */
@Slf4j @Slf4j
@Service @Service
@RequiredArgsConstructor @RequiredArgsConstructor
@CacheConfig(cacheNames = "user") @CacheConfig(cacheNames = "user")
public class UserServiceImpl implements UserService { public class UserServiceImpl implements UserService {
private final UserRepository userRepository; private final UserRepository userRepository;
private final UserMapper userMapper; private final UserMapper userMapper;
private final FileProperties properties; private final FileProperties properties;
private final RedisUtils redisUtils; private final RedisUtils redisUtils;
private final UserCacheClean userCacheClean; private final UserCacheClean userCacheClean;
private final OnlineUserService onlineUserService; private final OnlineUserService onlineUserService;
private final PfuserDao pfuserDao; private final PfuserDao pfuserDao;
private final PasswordEncoder passwordEncoder; private final PasswordEncoder passwordEncoder;
private final DeptRepository deptRepository; private final DeptRepository deptRepository;
private final RoleRepository roleRepository; private final RoleRepository roleRepository;
private final JobRepository jobRepository; private final JobRepository jobRepository;
@Override @Override
public Object queryAll(UserQueryCriteria criteria, Pageable pageable) { public Object queryAll(UserQueryCriteria criteria, Pageable pageable) {
Page<User> page = userRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root, criteria, criteriaBuilder), pageable); Page<User> page = userRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root, criteria, criteriaBuilder), pageable);
return PageUtil.toPage(page.map(userMapper::toDto)); return PageUtil.toPage(page.map(userMapper::toDto));
} }
@Override @Override
public List<UserDto> queryAll(UserQueryCriteria criteria) { public List<UserDto> queryAll(UserQueryCriteria criteria) {
List<User> users = userRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root, criteria, criteriaBuilder)); List<User> users = userRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root, criteria, criteriaBuilder));
return userMapper.toDto(users); return userMapper.toDto(users);
} }
@Override @Override
@Cacheable(key = "'id:' + #p0") @Cacheable(key = "'id:' + #p0")
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public UserDto findById(long id) { public UserDto findById(long id) {
User user = userRepository.findById(id).orElseGet(User::new); User user = userRepository.findById(id).orElseGet(User::new);
ValidationUtil.isNull(user.getId(), "User", "id", id); ValidationUtil.isNull(user.getId(), "User", "id", id);
return userMapper.toDto(user); return userMapper.toDto(user);
} }
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void create(User resources) { public void create(User resources) {
if (userRepository.findByUsername(resources.getUsername()) != null) { if (userRepository.findByUsername(resources.getUsername()) != null) {
throw new EntityExistException(User.class, "username", resources.getUsername()); throw new EntityExistException(User.class, "username", resources.getUsername());
} }
if (StringUtils.isNotBlank(resources.getEmail()) && userRepository.findByEmail(resources.getEmail()) != null) { if (StringUtils.isNotBlank(resources.getEmail()) && userRepository.findByEmail(resources.getEmail()) != null) {
throw new EntityExistException(User.class, "email", resources.getEmail()); throw new EntityExistException(User.class, "email", resources.getEmail());
} }
if (userRepository.findByPhone(resources.getPhone()) != null) { if (userRepository.findByPhone(resources.getPhone()) != null) {
throw new EntityExistException(User.class, "phone", resources.getPhone()); throw new EntityExistException(User.class, "phone", resources.getPhone());
} }
userRepository.save(resources); userRepository.save(resources);
} }
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void update(User resources) throws Exception { public void update(User resources) throws Exception {
User user = userRepository.findById(resources.getId()).orElseGet(User::new); User user = userRepository.findById(resources.getId()).orElseGet(User::new);
ValidationUtil.isNull(user.getId(), "User", "id", resources.getId()); ValidationUtil.isNull(user.getId(), "User", "id", resources.getId());
User user1 = userRepository.findByUsername(resources.getUsername()); User user1 = userRepository.findByUsername(resources.getUsername());
User user2 = userRepository.findByEmail(resources.getEmail()); User user2 = userRepository.findByEmail(resources.getEmail());
User user3 = userRepository.findByPhone(resources.getPhone()); User user3 = userRepository.findByPhone(resources.getPhone());
if (user1 != null && !user.getId().equals(user1.getId())) { if (user1 != null && !user.getId().equals(user1.getId())) {
throw new EntityExistException(User.class, "username", resources.getUsername()); throw new EntityExistException(User.class, "username", resources.getUsername());
} }
if (user2 != null && !user.getId().equals(user2.getId())) { if (user2 != null && !user.getId().equals(user2.getId())) {
throw new EntityExistException(User.class, "email", resources.getEmail()); throw new EntityExistException(User.class, "email", resources.getEmail());
} }
if (user3 != null && !user.getId().equals(user3.getId())) { if (user3 != null && !user.getId().equals(user3.getId())) {
throw new EntityExistException(User.class, "phone", resources.getPhone()); throw new EntityExistException(User.class, "phone", resources.getPhone());
} }
// 如果用户的角色改变 // 如果用户的角色改变
if (!resources.getRoles().equals(user.getRoles())) { if (!resources.getRoles().equals(user.getRoles())) {
redisUtils.del(CacheKey.DATA_USER + resources.getId()); redisUtils.del(CacheKey.DATA_USER + resources.getId());
redisUtils.del(CacheKey.MENU_USER + resources.getId()); redisUtils.del(CacheKey.MENU_USER + resources.getId());
redisUtils.del(CacheKey.ROLE_AUTH + resources.getId()); redisUtils.del(CacheKey.ROLE_AUTH + resources.getId());
} }
// 如果用户被禁用,则清除用户登录信息 // 如果用户被禁用,则清除用户登录信息
if (!resources.getEnabled()) { if (!resources.getEnabled()) {
onlineUserService.kickOutForUsername(resources.getUsername()); onlineUserService.kickOutForUsername(resources.getUsername());
} }
user.setUsername(resources.getUsername()); user.setUsername(resources.getUsername());
user.setEmail(resources.getEmail()); user.setEmail(resources.getEmail());
user.setEnabled(resources.getEnabled()); user.setEnabled(resources.getEnabled());
user.setRoles(resources.getRoles()); user.setRoles(resources.getRoles());
user.setDept(resources.getDept()); user.setDept(resources.getDept());
user.setJobs(resources.getJobs()); user.setJobs(resources.getJobs());
user.setPhone(resources.getPhone()); user.setPhone(resources.getPhone());
user.setNickName(resources.getNickName()); user.setNickName(resources.getNickName());
user.setGender(resources.getGender()); user.setGender(resources.getGender());
userRepository.save(user); userRepository.save(user);
// 清除缓存 // 清除缓存
delCaches(user.getId(), user.getUsername()); delCaches(user.getId(), user.getUsername());
} }
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void updateCenter(User resources) { public void updateCenter(User resources) {
User user = userRepository.findById(resources.getId()).orElseGet(User::new); User user = userRepository.findById(resources.getId()).orElseGet(User::new);
User user1 = userRepository.findByPhone(resources.getPhone()); User user1 = userRepository.findByPhone(resources.getPhone());
if (user1 != null && !user.getId().equals(user1.getId())) { if (user1 != null && !user.getId().equals(user1.getId())) {
throw new EntityExistException(User.class, "phone", resources.getPhone()); throw new EntityExistException(User.class, "phone", resources.getPhone());
} }
user.setNickName(resources.getNickName()); user.setNickName(resources.getNickName());
user.setPhone(resources.getPhone()); user.setPhone(resources.getPhone());
user.setGender(resources.getGender()); user.setGender(resources.getGender());
userRepository.save(user); userRepository.save(user);
// 清理缓存 // 清理缓存
delCaches(user.getId(), user.getUsername()); delCaches(user.getId(), user.getUsername());
} }
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void delete(Set<Long> ids) { public void delete(Set<Long> ids) {
for (Long id : ids) { for (Long id : ids) {
// 清理缓存 // 清理缓存
UserDto user = findById(id); UserDto user = findById(id);
delCaches(user.getId(), user.getUsername()); delCaches(user.getId(), user.getUsername());
} }
userRepository.deleteAllByIdIn(ids); userRepository.deleteAllByIdIn(ids);
} }
@Override @Override
public UserDto findByName(String userName) { public UserDto findByName(String userName) {
User user = userRepository.findByUsername(userName); User user = userRepository.findByUsername(userName);
if (user == null) { if (user == null) {
throw new EntityNotFoundException(User.class, "name", userName); throw new EntityNotFoundException(User.class, "name", userName);
} else { } else {
return userMapper.toDto(user); return userMapper.toDto(user);
} }
} }
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void updatePass(String username, String pass) { public void updatePass(String username, String pass) {
userRepository.updatePass(username, pass, new Date()); userRepository.updatePass(username, pass, new Date());
flushCache(username); flushCache(username);
} }
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public Map<String, String> updateAvatar(MultipartFile multipartFile) { public Map<String, String> updateAvatar(MultipartFile multipartFile) {
User user = userRepository.findByUsername(SecurityUtils.getCurrentUsername()); User user = userRepository.findByUsername(SecurityUtils.getCurrentUsername());
String oldPath = user.getAvatarPath(); String oldPath = user.getAvatarPath();
String imaUrl = UploadUtils.saveImg(multipartFile, SystemName.SYS); String imaUrl = UploadUtils.saveImg(multipartFile, SystemName.SYS);
user.setAvatarPath(imaUrl); user.setAvatarPath(imaUrl);
user.setAvatarName(imaUrl); user.setAvatarName(imaUrl);
userRepository.save(user); userRepository.save(user);
if (StringUtils.isNotBlank(oldPath)) { if (StringUtils.isNotBlank(oldPath)) {
FileUtil.del(oldPath); FileUtil.del(oldPath);
} }
@NotBlank String username = user.getUsername(); @NotBlank String username = user.getUsername();
flushCache(username); flushCache(username);
return new HashMap<String, String>(1) {{ return new HashMap<String, String>(1) {{
put("avatar", imaUrl); put("avatar", imaUrl);
}}; }};
} }
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void updateEmail(String username, String email) { public void updateEmail(String username, String email) {
userRepository.updateEmail(username, email); userRepository.updateEmail(username, email);
flushCache(username); flushCache(username);
} }
@Override @Override
public void download(List<UserDto> queryAll, HttpServletResponse response) throws IOException { public void download(List<UserDto> queryAll, HttpServletResponse response) throws IOException {
List<Map<String, Object>> list = new ArrayList<>(); List<Map<String, Object>> list = new ArrayList<>();
for (UserDto userDTO : queryAll) { for (UserDto userDTO : queryAll) {
List<String> roles = userDTO.getRoles().stream().map(RoleSmallDto::getName).collect(Collectors.toList()); List<String> roles = userDTO.getRoles().stream().map(RoleSmallDto::getName).collect(Collectors.toList());
Map<String, Object> map = new LinkedHashMap<>(); Map<String, Object> map = new LinkedHashMap<>();
map.put("用户名", userDTO.getUsername()); map.put("用户名", userDTO.getUsername());
map.put("角色", roles); map.put("角色", roles);
map.put("部门", userDTO.getDept().getName()); map.put("部门", userDTO.getDept().getName());
map.put("岗位", userDTO.getJobs().stream().map(JobSmallDto::getName).collect(Collectors.toList())); map.put("岗位", userDTO.getJobs().stream().map(JobSmallDto::getName).collect(Collectors.toList()));
map.put("邮箱", userDTO.getEmail()); map.put("邮箱", userDTO.getEmail());
map.put("状态", userDTO.getEnabled() ? "启用" : "禁用"); map.put("状态", userDTO.getEnabled() ? "启用" : "禁用");
map.put("手机号码", userDTO.getPhone()); map.put("手机号码", userDTO.getPhone());
map.put("修改密码的时间", userDTO.getPwdResetTime()); map.put("修改密码的时间", userDTO.getPwdResetTime());
map.put("创建日期", userDTO.getCreateTime()); map.put("创建日期", userDTO.getCreateTime());
list.add(map); list.add(map);
} }
FileUtil.downloadExcel(list, response); FileUtil.downloadExcel(list, response);
} }
/** /**
* 清理缓存 * 清理缓存
* *
* @param id / * @param id /
*/ */
public void delCaches(Long id, String username) { public void delCaches(Long id, String username) {
redisUtils.del(CacheKey.USER_ID + id); redisUtils.del(CacheKey.USER_ID + id);
flushCache(username); flushCache(username);
} }
/** /**
* 清理 登陆时 用户缓存信息 * 清理 登陆时 用户缓存信息
* *
* @param username / * @param username /
*/ */
private void flushCache(String username) { private void flushCache(String username) {
userCacheClean.cleanUserCache(username); userCacheClean.cleanUserCache(username);
} }
@Override @Override
public void sendCode(String phone) { public void sendCode(String phone) {
User user = userRepository.findByUsername(phone); User user = userRepository.findByUsername(phone);
if (user == null) { if (user == null) {
Pfuser pfuser = pfuserDao.selectOne(Wrappers.lambdaQuery(Pfuser.builder().phone(phone).build())); Pfuser pfuser = pfuserDao.selectOne(Wrappers.lambdaQuery(Pfuser.builder().phone(phone).build()));
AssertUtils.notNull(pfuser, "手机号不存在"); AssertUtils.notNull(pfuser, "手机号不存在");
} }
String code = RandomUtil.randomNumbers(6); String code = RandomUtil.randomNumbers(6);
String content = "您的验证码为:" + code + "(5分钟内有效)。为了保障信息安全,如非本人操作请忽略本短信。"; String content = "您的验证码为:" + code + "(5分钟内有效)。为了保障信息安全,如非本人操作请忽略本短信。";
boolean sendMsg = MobileSmsUtils.sendMsg(phone, content); boolean sendMsg = MobileSmsUtils.sendMsg(phone, content);
log.info(">> phone: {}, sendCode: {}, success: {}", phone, code, sendMsg); log.info(">> phone: {}, sendCode: {}, success: {}", phone, code, sendMsg);
redisUtils.setStr(CacheKeys.authCodeKey(phone), code, 5); redisUtils.setStr(CacheKeys.authCodeKey(phone), code, 5);
} }
@Override @Override
public void resetPassword(LoginVo vo) { public void resetPassword(LoginVo vo) {
verificationCode(vo.getPhone(), vo.getVerifyCode()); verificationCode(vo.getPhone(), vo.getVerifyCode());
User user = userRepository.findByUsername(vo.getPhone()); User user = userRepository.findByUsername(vo.getPhone());
if (user == null) { if (user == null) {
user = addUser(vo.getPhone()); user = addUser(vo.getPhone());
} }
AssertUtils.notNull(user, "手机号不存在"); AssertUtils.notNull(user, "手机号不存在");
updatePass(user.getUsername(), passwordEncoder.encode(vo.getPasswd())); updatePass(user.getUsername(), passwordEncoder.encode(vo.getPasswd()));
} }
/** /**
* 保存用户 * 保存用户
* *
* @param phone * @param phone
* @return * @return
*/ */
private User addUser(String phone) { private User addUser(String phone) {
Pfuser pfuser = pfuserDao.selectOne(Wrappers.lambdaQuery(Pfuser.builder().phone(phone).build())); Pfuser pfuser = pfuserDao.selectOne(Wrappers.lambdaQuery(Pfuser.builder().phone(phone).build()));
if (pfuser == null) { if (pfuser == null) {
return null; return null;
} }
User user = userRepository.findByUsername(phone); User user = userRepository.findByUsername(phone);
if (user == null) { if (user == null) {
user = new User(); user = new User();
List<Role> roleList = roleRepository.findAllById(Collections.singletonList(2L)); List<Role> roleList = roleRepository.findAllById(Collections.singletonList(2L));
user.setRoles(new HashSet<>(roleList)); user.setRoles(new HashSet<>(roleList));
List<Job> jobList = jobRepository.findAllById(Collections.singletonList(13L)); List<Job> jobList = jobRepository.findAllById(Collections.singletonList(13L));
user.setJobs(new HashSet<>(jobList)); user.setJobs(new HashSet<>(jobList));
deptRepository.findById(8L).ifPresent(user::setDept); deptRepository.findById(8L).ifPresent(user::setDept);
user.setUsername(phone); user.setUsername(phone);
user.setNickName(pfuser.getUsername()); user.setNickName(pfuser.getUsername());
user.setGender(pfuser.getSex() == null ? "未知" : pfuser.getSex() == 0 ? "男" : "女"); user.setGender(pfuser.getSex() == null ? "未知" : pfuser.getSex() == 0 ? "男" : "女");
user.setPhone(phone); user.setPhone(phone);
user.setEmail(pfuser.getSourcemail()); user.setEmail(pfuser.getSourcemail());
user.setPassword(passwordEncoder.encode("gxmz!23")); user.setPassword(passwordEncoder.encode("gxmz!23"));
user.setIsAdmin(false); user.setIsAdmin(false);
user.setEnabled(true); user.setEnabled(true);
user.setCreateBy("admin"); user.setCreateBy("admin");
user.setUpdatedBy("admin"); user.setUpdatedBy("admin");
user.setCreateTime(DateUtil.date().toTimestamp()); user.setCreateTime(DateUtil.date().toTimestamp());
user.setUpdateTime(DateUtil.date().toTimestamp()); user.setUpdateTime(DateUtil.date().toTimestamp());
create(user); create(user);
} }
return user; return user;
} }
/** /**
* 判断验证码 * 判断验证码
* *
* @param phone * @param phone
* @param code * @param code
*/ */
public void verificationCode(String phone, String code) { public void verificationCode(String phone, String code) {
String cacheCode = redisUtils.getStr(CacheKeys.authCodeKey(phone)); String cacheCode = redisUtils.getStr(CacheKeys.authCodeKey(phone));
AssertUtils.isTrue(org.apache.commons.lang3.StringUtils.isNotBlank(cacheCode) && cacheCode.equalsIgnoreCase(code), "验证码错误"); AssertUtils.isTrue(org.apache.commons.lang3.StringUtils.isNotBlank(cacheCode) && cacheCode.equalsIgnoreCase(code), "验证码错误");
redisUtils.deleteStr(CacheKeys.authCodeKey(phone)); redisUtils.deleteStr(CacheKeys.authCodeKey(phone));
} }
@Override @Override
public void modifyPasswd(LoginVo vo) { public void modifyPasswd(LoginVo vo) {
verificationCode(vo.getPhone(), vo.getVerifyCode()); verificationCode(vo.getPhone(), vo.getVerifyCode());
User user = userRepository.findByUsername(vo.getPhone()); User user = userRepository.findByUsername(vo.getPhone());
AssertUtils.notNull(user, "手机号不存在"); AssertUtils.notNull(user, "手机号不存在");
updatePass(user.getUsername(), passwordEncoder.encode(vo.getPasswd())); updatePass(user.getUsername(), passwordEncoder.encode(vo.getPasswd()));
} }
@Override @Override
public ApiTokenVo phoneLogin(LoginVo vo) { public ApiTokenVo phoneLogin(LoginVo vo) {
User user = userRepository.findByUsername(vo.getPhone()); User user = userRepository.findByUsername(vo.getPhone());
if (user == null) { if (user == null) {
user = addUser(vo.getPhone()); user = addUser(vo.getPhone());
} }
AssertUtils.notNull(user, "手机号不存在"); AssertUtils.notNull(user, "手机号不存在");
verificationCode(vo.getPhone(), vo.getVerifyCode()); verificationCode(vo.getPhone(), vo.getVerifyCode());
AssertUtils.isTrue(user.getEnabled(), "账号已禁用"); AssertUtils.isTrue(user.getEnabled(), "账号已禁用");
return getApiToken(user); return getApiToken(user);
} }
/** /**
* 获取ApiToken * 获取ApiToken
* *
* @param user * @param user
* @return * @return
*/ */
private ApiTokenVo getApiToken(User user) { private ApiTokenVo getApiToken(User user) {
ApiTokenVo tokenVo = ApiTokenVo.builder() ApiTokenVo tokenVo = ApiTokenVo.builder()
.userId(user.getId()) .userId(user.getId())
.phone(user.getPhone()) .phone(user.getPhone())
.username(user.getUsername()) .username(user.getUsername())
.name(user.getNickName()) .name(user.getNickName())
.nickname(user.getNickName()) .nickname(user.getNickName())
.sex(user.getGender()) .sex(user.getGender())
.avatar(user.getAvatarPath()) .avatar(user.getAvatarPath())
.build(); .build();
String token = ApiTokenUtils.createToken(tokenVo, CacheKeys.APP_TOKEN_EXPIRE_MINUTES); String token = ApiTokenUtils.createToken(tokenVo, CacheKeys.APP_TOKEN_EXPIRE_MINUTES);
tokenVo.setToken(token); tokenVo.setToken(token);
// 重新登录删除前一个token实现单机登录 // 重新登录删除前一个token实现单机登录
String cacheToken = redisUtils.getStr(CacheKeys.liveAppTokenKey(user.getId().toString())); String cacheToken = redisUtils.getStr(CacheKeys.liveAppTokenKey(user.getId().toString()));
redisUtils.deleteObj(CacheKeys.appTokenKey(cacheToken)); redisUtils.deleteObj(CacheKeys.appTokenKey(cacheToken));
redisUtils.deleteStr(CacheKeys.liveAppTokenKey(user.getId().toString())); redisUtils.deleteStr(CacheKeys.liveAppTokenKey(user.getId().toString()));
// 缓存登录用户 // 缓存登录用户
redisUtils.setObj(CacheKeys.appTokenKey(token), tokenVo, CacheKeys.APP_TOKEN_EXPIRE_MINUTES); redisUtils.setObj(CacheKeys.appTokenKey(token), tokenVo, CacheKeys.APP_TOKEN_EXPIRE_MINUTES);
// 用户ID作为key保存token, 再次登录可以找出该用户的token // 用户ID作为key保存token, 再次登录可以找出该用户的token
redisUtils.setStr(CacheKeys.liveAppTokenKey(user.getId().toString()), token, CacheKeys.APP_TOKEN_EXPIRE_MINUTES); redisUtils.setStr(CacheKeys.liveAppTokenKey(user.getId().toString()), token, CacheKeys.APP_TOKEN_EXPIRE_MINUTES);
return tokenVo; return tokenVo;
} }
@Override @Override
public ApiTokenVo passwdLogin(LoginVo vo) { public ApiTokenVo passwdLogin(LoginVo vo) {
User user = userRepository.findByUsername(vo.getPhone()); User user = userRepository.findByUsername(vo.getPhone());
AssertUtils.notNull(user, "手机号不存在"); AssertUtils.notNull(user, "手机号不存在");
AssertUtils.hasText(user.getPassword(), "未设置密码"); AssertUtils.hasText(user.getPassword(), "未设置密码");
AssertUtils.isTrue(passwordEncoder.matches(vo.getPasswd(), user.getPassword()), "密码错误"); AssertUtils.isTrue(passwordEncoder.matches(vo.getPasswd(), user.getPassword()), "密码错误");
AssertUtils.isTrue(user.getEnabled(), "账号已禁用"); AssertUtils.isTrue(user.getEnabled(), "账号已禁用");
return getApiToken(user); return getApiToken(user);
} }
} }
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