32 changed files with 651 additions and 94 deletions
			
			
		| @ -0,0 +1,27 @@ | |||
| package com.epmet.dto.indexcal; | |||
| 
 | |||
| import lombok.Data; | |||
| 
 | |||
| import java.io.Serializable; | |||
| import java.math.BigDecimal; | |||
| 
 | |||
| /** | |||
|  * @Description 党员指标得分查询DTO | |||
|  * @ClassName CpcScoreResultDTO | |||
|  * @Auth wangc | |||
|  * @Date 2020-09-25 16:52 | |||
|  */ | |||
| @Data | |||
| public class CpcScoreResultDTO implements Serializable { | |||
|     private static final long serialVersionUID = -7129757727997430029L; | |||
| 
 | |||
|     /** | |||
|      * 用户Id | |||
|      * */ | |||
|     private String userId; | |||
| 
 | |||
|     /** | |||
|      * 党员指标得分 | |||
|      * */ | |||
|     private BigDecimal score; | |||
| } | |||
| @ -0,0 +1,26 @@ | |||
| package com.epmet.dto.point; | |||
| 
 | |||
| import lombok.Data; | |||
| 
 | |||
| import java.io.Serializable; | |||
| 
 | |||
| /** | |||
|  * @Description 用户积分DTO | |||
|  * @ClassName UserPointDTO | |||
|  * @Auth wangc | |||
|  * @Date 2020-09-25 15:42 | |||
|  */ | |||
| @Data | |||
| public class UserPointDTO implements Serializable { | |||
|     private static final long serialVersionUID = 6976982699085437418L; | |||
| 
 | |||
|     /** | |||
|      * 用户Id | |||
|      * */ | |||
|     private String userId; | |||
| 
 | |||
|     /** | |||
|      * 用户累计积分 | |||
|      * */ | |||
|     private Integer pointTotal; | |||
| } | |||
| @ -0,0 +1,27 @@ | |||
| package com.epmet.dao.point; | |||
| 
 | |||
| import com.epmet.dto.point.UserPointDTO; | |||
| import org.apache.ibatis.annotations.Mapper; | |||
| import org.apache.ibatis.annotations.Param; | |||
| 
 | |||
| import java.util.List; | |||
| 
 | |||
| /** | |||
|  * 积分查询DAO | |||
|  * | |||
|  * @author generator generator@elink-cn.com | |||
|  * @since v1.0.0 2020-03-16 | |||
|  */ | |||
| @Mapper | |||
| public interface PointDao { | |||
| 
 | |||
|     /** | |||
|      * @Description 查询客户下的用户积分 | |||
|      * @param customerId | |||
|      * @return | |||
|      * @author wangc | |||
|      * @date 2020.09.25 15:51 | |||
|     **/ | |||
|     List<UserPointDTO> selectUserPointByCustomerId(@Param("customerId") String customerId); | |||
| 
 | |||
| } | |||
| @ -0,0 +1,29 @@ | |||
| package com.epmet.service.evaluationindex.extract.toscreen; | |||
| 
 | |||
| import com.epmet.dto.screen.form.ScreenCentralZoneDataFormDTO; | |||
| 
 | |||
| /** | |||
|  * 基层治理 | |||
|  * 热心市民积分 党员能力值 | |||
|  * 难点赌点 | |||
|  * */ | |||
| public interface ScreenGrassrootsGovernDataAbsorptionService { | |||
| 
 | |||
|     /** | |||
|      * @Description 用户积分、党员分值数据中转站 | |||
|      * @param param | |||
|      * @return | |||
|      * @author wangc | |||
|      * @date 2020.09.25 09:53 | |||
|     **/ | |||
|     void userScoreDataHub(ScreenCentralZoneDataFormDTO param); | |||
| 
 | |||
|     /** | |||
|      * @Description 难点赌点数据中转站 | |||
|      * @param param | |||
|      * @return | |||
|      * @author wangc | |||
|      * @date 2020.09.25 10:00 | |||
|     **/ | |||
|     void difficultyDataHub(ScreenCentralZoneDataFormDTO param); | |||
| } | |||
| @ -0,0 +1,119 @@ | |||
| package com.epmet.service.evaluationindex.extract.toscreen.impl; | |||
| 
 | |||
| import com.epmet.commons.tools.constant.NumConstant; | |||
| import com.epmet.commons.tools.utils.DateUtils; | |||
| import com.epmet.dto.org.GridInfoDTO; | |||
| import com.epmet.dto.screen.form.ScreenCentralZoneDataFormDTO; | |||
| import com.epmet.entity.evaluationindex.screen.ScreenPartyUserRankDataEntity; | |||
| import com.epmet.service.evaluationindex.extract.toscreen.ScreenGrassrootsGovernDataAbsorptionService; | |||
| import com.epmet.service.evaluationindex.indexcal.CpcIndexCalculateService; | |||
| import com.epmet.service.evaluationindex.screen.ScreenPartyUserRankDataService; | |||
| import com.epmet.service.org.CustomerGridService; | |||
| import com.epmet.service.point.UserPointService; | |||
| import com.epmet.service.user.UserService; | |||
| import lombok.extern.slf4j.Slf4j; | |||
| import org.springframework.beans.factory.annotation.Autowired; | |||
| import org.springframework.stereotype.Service; | |||
| import org.springframework.util.CollectionUtils; | |||
| import org.springframework.util.StringUtils; | |||
| 
 | |||
| import java.math.BigDecimal; | |||
| import java.util.HashMap; | |||
| import java.util.List; | |||
| import java.util.Map; | |||
| 
 | |||
| 
 | |||
| /** | |||
|  * @Description 基层治理数据 | |||
|  * @ClassName ScreenGrassrootsGovernDataAbsorptionServiceImpl | |||
|  * @Auth wangc | |||
|  * @Date 2020-09-25 09:48 | |||
|  */ | |||
| 
 | |||
| @Service | |||
| @Slf4j | |||
| public class ScreenGrassrootsGovernDataAbsorptionServiceImpl implements ScreenGrassrootsGovernDataAbsorptionService { | |||
| 
 | |||
|     @Autowired | |||
|     private UserService userService; | |||
|     @Autowired | |||
|     private CustomerGridService customerGridService; | |||
|     @Autowired | |||
|     private UserPointService userPointService; | |||
|     @Autowired | |||
|     private CpcIndexCalculateService cpcIndexCalculateService; | |||
|     @Autowired | |||
|     private ScreenPartyUserRankDataService screenPartyUserRankDataService; | |||
|     /** | |||
|      * @Description 用户积分、党员分值数据中转站 | |||
|      * @param param | |||
|      * @return | |||
|      * @author wangc | |||
|      * @date 2020.09.25 09:53 | |||
|      **/ | |||
|     @Override | |||
|     public void userScoreDataHub(ScreenCentralZoneDataFormDTO param) { | |||
|         //1.查询出客户下的网格注册用户
 | |||
|         List<ScreenPartyUserRankDataEntity> registeredUsers = userService.getRegisteredUserList(param.getCustomerId()); | |||
| 
 | |||
|         //2.查询出客户下网格的相关信息
 | |||
|         List<GridInfoDTO> gridList = customerGridService.queryGridInfoList(param.getCustomerId()); | |||
|         Map<String,GridInfoDTO> gridMap = new HashMap<>(); | |||
|         gridList.forEach(grid -> {gridMap.put(grid.getGridId(),grid);}); | |||
| 
 | |||
|         //3.查询出客户下用户的累计积分(累计值,没有时间概念,否则需要查询积分明细计算出评价周期末的得分)
 | |||
|         Map<String,Integer> pointMap = userPointService.getUserPointMap(param.getCustomerId()); | |||
|         //4.查询出客户下党员的分值
 | |||
|         String dateId = param.getDateId(); | |||
|         if(StringUtils.isEmpty(dateId)){ | |||
|             //如果没有传月份,则使用当前时间的上一个月
 | |||
|             dateId = DateUtils.getBeforeNMonth(NumConstant.ONE); | |||
|         }else{ | |||
|             String dateType = DateUtils.identifyTimeDimension(dateId); | |||
|             if(StringUtils.isEmpty(dateType) || !org.apache.commons.lang3.StringUtils.equalsAny(dateType,"date","month")){ | |||
|                 dateId = DateUtils.getBeforeNMonth(NumConstant.ONE); | |||
|             }else if(org.apache.commons.lang3.StringUtils.equals(dateType,"date")){ | |||
|                 dateId = dateId.substring(NumConstant.ZERO,dateId.length() - NumConstant.TWO); | |||
|             } | |||
|         } | |||
|         final String finalDateId = dateId; | |||
| 
 | |||
|         Map<String, BigDecimal> scoreMap = cpcIndexCalculateService.getCpcScore(param.getCustomerId(),dateId); | |||
| 
 | |||
|         //5.整合数据
 | |||
|         if(!CollectionUtils.isEmpty(registeredUsers)){ | |||
|             registeredUsers.forEach(user -> { | |||
|                 GridInfoDTO gridInfo = gridMap.get(user.getGridId()); | |||
|                 if(null != gridInfo){ | |||
|                     user.setGridName(gridInfo.getGridName()); | |||
|                     user.setOrgId(gridInfo.getAgencyId()); | |||
|                     user.setOrgName(gridInfo.getOrgName()); | |||
|                     user.setAllParentIds(gridInfo.getPids()); | |||
|                 } | |||
|                 Integer point = pointMap.get(user.getUserId()); | |||
|                 BigDecimal score = scoreMap.get(user.getUserId()); | |||
| 
 | |||
|                 user.setPointTotal(null == point ? NumConstant.ZERO : point); | |||
|                 user.setIndexScore(null == score ? new BigDecimal(NumConstant.ZERO) : score); | |||
| 
 | |||
|                 user.setDataEndTime(finalDateId); | |||
|             }); | |||
| 
 | |||
|         } | |||
| 
 | |||
|         //6.存入数据库
 | |||
|         screenPartyUserRankDataService.dataClean(registeredUsers,param.getCustomerId(),dateId); | |||
|     } | |||
| 
 | |||
|     /** | |||
|      * @Description 难点赌点数据中转站 | |||
|      * @param param | |||
|      * @return | |||
|      * @author wangc | |||
|      * @date 2020.09.25 10:00 | |||
|      **/ | |||
|     @Override | |||
|     public void difficultyDataHub(ScreenCentralZoneDataFormDTO param) { | |||
| 
 | |||
|     } | |||
| } | |||
| @ -0,0 +1,18 @@ | |||
| package com.epmet.service.point; | |||
| 
 | |||
| import java.util.Map; | |||
| 
 | |||
| /** | |||
|  * 用户积分库 | |||
|  * */ | |||
| public interface UserPointService { | |||
| 
 | |||
|     /** | |||
|      * @Description 根据客户Id查询用户积分Map | |||
|      * @param customerId | |||
|      * @return | |||
|      * @author wangc | |||
|      * @date 2020.09.25 16:00 | |||
|     **/ | |||
|     Map<String,Integer> getUserPointMap(String customerId); | |||
| } | |||
| @ -0,0 +1,46 @@ | |||
| package com.epmet.service.point.impl; | |||
| 
 | |||
| import com.epmet.commons.dynamic.datasource.annotation.DataSource; | |||
| import com.epmet.constant.DataSourceConstant; | |||
| import com.epmet.dao.point.PointDao; | |||
| import com.epmet.dto.point.UserPointDTO; | |||
| import com.epmet.service.point.UserPointService; | |||
| import lombok.extern.slf4j.Slf4j; | |||
| import org.springframework.beans.factory.annotation.Autowired; | |||
| import org.springframework.stereotype.Service; | |||
| import org.springframework.util.CollectionUtils; | |||
| 
 | |||
| import java.util.HashMap; | |||
| import java.util.List; | |||
| import java.util.Map; | |||
| 
 | |||
| /** | |||
|  * @Description | |||
|  * @ClassName UserPointServiceImpl | |||
|  * @Auth wangc | |||
|  * @Date 2020-09-25 15:54 | |||
|  */ | |||
| @Service | |||
| @Slf4j | |||
| @DataSource(DataSourceConstant.EPMET_POINT) | |||
| public class UserPointServiceImpl implements UserPointService { | |||
| 
 | |||
|     @Autowired | |||
|     private PointDao pointDao; | |||
|     /** | |||
|      * @Description 根据客户Id查询用户积分Map | |||
|      * @param customerId | |||
|      * @return | |||
|      * @author wangc | |||
|      * @date 2020.09.25 16:00 | |||
|      **/ | |||
|     @Override | |||
|     public Map<String, Integer> getUserPointMap(String customerId) { | |||
|         List<UserPointDTO> points = pointDao.selectUserPointByCustomerId(customerId); | |||
|         Map<String,Integer> map = new HashMap<>(); | |||
|         if(!CollectionUtils.isEmpty(points)){ | |||
|             points.forEach(point -> {map.put(point.getUserId(),point.getPointTotal());}); | |||
|         } | |||
|         return map; | |||
|     } | |||
| } | |||
| @ -0,0 +1,19 @@ | |||
| <?xml version="1.0" encoding="UTF-8"?> | |||
| <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> | |||
| 
 | |||
| <mapper namespace="com.epmet.dao.point.PointDao"> | |||
| 
 | |||
|     <select id="selectUserPointByCustomerId" resultType="com.epmet.dto.point.UserPointDTO"> | |||
|         SELECT | |||
|             USER_ID, | |||
|             TOTAL_POINT | |||
|         FROM | |||
|             USER_POINT_TOTAL point | |||
|         WHERE | |||
|             DEL_FLAG = '0' | |||
|             AND CUSTOMER_ID = #{customerId} | |||
|     </select> | |||
| 
 | |||
| 
 | |||
| </mapper> | |||
| 
 | |||
					Loading…
					
					
				
		Reference in new issue