Browse Source

组织能力-用户相关:直属网格柱状图

dev_shibei_match
yinzuomei 5 years ago
parent
commit
9482da2cab
  1. 60
      epmet-module/data-report/data-report-client/src/main/java/com/epmet/dto/DimAgencyDTO.java
  2. 45
      epmet-module/data-report/data-report-client/src/main/java/com/epmet/dto/DimGridDTO.java
  3. 3
      epmet-module/data-report/data-report-client/src/main/java/com/epmet/dto/result/user/UserSubAgencyResultDTO.java
  4. 21
      epmet-module/data-report/data-report-client/src/main/java/com/epmet/dto/result/user/UserSubGridResDTO.java
  5. 8
      epmet-module/data-report/data-report-client/src/main/java/com/epmet/dto/result/user/UserSubGridResultDTO.java
  6. 31
      epmet-module/data-report/data-report-server/src/main/java/com/epmet/dao/user/UserAnalysisDao.java
  7. 125
      epmet-module/data-report/data-report-server/src/main/java/com/epmet/service/user/impl/UserAnalysisServiceImpl.java
  8. 49
      epmet-module/data-report/data-report-server/src/main/resources/mapper/user/UserAnalysisDao.xml

60
epmet-module/data-report/data-report-client/src/main/java/com/epmet/dto/DimAgencyDTO.java

@ -20,7 +20,6 @@ package com.epmet.dto;
import lombok.Data; import lombok.Data;
import java.io.Serializable; import java.io.Serializable;
import java.util.Date;
/** /**
@ -44,63 +43,4 @@ public class DimAgencyDTO implements Serializable {
*/ */
private String agencyName; private String agencyName;
/**
* 客户ID
*/
private String customerId;
/**
* 上级组织机构ID根组织为0
*/
private String pid;
/**
* 所有上级组织机构ID(以英文:隔开)
*/
private String pids;
/**
* 所有上级名称,-连接
*/
private String allParentName;
/**
* 机关级别社区级community
街道:street,
区县级: district,
市级: city
省级:province
*/
private String level;
/**
* 删除标识0未删除1已删除
*/
private String delFlag;
/**
* 乐观锁
*/
private Integer revision;
/**
* 创建人
*/
private String createdBy;
/**
* 创建时间
*/
private Date createdTime;
/**
* 更新人
*/
private String updatedBy;
/**
* 更新时间
*/
private Date updatedTime;
} }

45
epmet-module/data-report/data-report-client/src/main/java/com/epmet/dto/DimGridDTO.java

@ -0,0 +1,45 @@
/**
* Copyright 2018 人人开源 https://www.renren.io
* <p>
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
* <p>
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* <p>
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.epmet.dto;
import lombok.Data;
import java.io.Serializable;
/**
* 客户网格维度
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2020-06-16
*/
@Data
public class DimGridDTO implements Serializable {
private static final long serialVersionUID = 1L;
/**
* GRID_ID
*/
private String id;
/**
* 网格名称
*/
private String gridName;
}

3
epmet-module/data-report/data-report-client/src/main/java/com/epmet/dto/result/user/UserSubAgencyResultDTO.java

@ -29,6 +29,9 @@ public class UserSubAgencyResultDTO implements Serializable {
*/ */
private String type; private String type;
/**
* 机关id
*/
private String agencyId; private String agencyId;
@JsonIgnore @JsonIgnore

21
epmet-module/data-report/data-report-client/src/main/java/com/epmet/dto/result/user/UserSubGridResDTO.java

@ -0,0 +1,21 @@
package com.epmet.dto.result.user;
import lombok.Data;
import java.io.Serializable;
/**
* 直属网格注册用户数参与用户注册用户通用类
*
* @author yinzuomei@elink-cn.com
* @date 2020/6/22 23:57
*/
@Data
public class UserSubGridResDTO implements Serializable {
private static final long serialVersionUID = 2203260762393704885L;
private String gridId;
private Integer regTotal;
private Integer resiTotal;
private Integer warmHeartedTotal;
private Integer partymemberTotal;
}

8
epmet-module/data-report/data-report-client/src/main/java/com/epmet/dto/result/user/UserSubGridResultDTO.java

@ -5,6 +5,7 @@ import lombok.Data;
import java.io.Serializable; import java.io.Serializable;
/** /**
* 直属网格注册用户数 返参DTO * 直属网格注册用户数 返参DTO
* *
@ -30,6 +31,11 @@ public class UserSubGridResultDTO implements Serializable {
*/ */
private String type; private String type;
@JsonIgnore /**
* 网格id
*/
private String gridId; private String gridId;
@JsonIgnore
private Integer total;
} }

31
epmet-module/data-report/data-report-server/src/main/java/com/epmet/dao/user/UserAnalysisDao.java

@ -2,7 +2,9 @@ package com.epmet.dao.user;
import com.epmet.dto.DimAgencyDTO; import com.epmet.dto.DimAgencyDTO;
import com.epmet.dto.DimGridDTO;
import com.epmet.dto.result.user.UserSubAgencyResDTO; import com.epmet.dto.result.user.UserSubAgencyResDTO;
import com.epmet.dto.result.user.UserSubGridResDTO;
import com.epmet.dto.result.user.UserSummaryInfoResultDTO; import com.epmet.dto.result.user.UserSummaryInfoResultDTO;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
@ -26,6 +28,15 @@ public interface UserAnalysisDao {
**/ **/
List<DimAgencyDTO> selectSubAgencyList(String myAgencyId); List<DimAgencyDTO> selectSubAgencyList(String myAgencyId);
/**
* @return java.util.List<com.epmet.dto.DimGridDTO>
* @param myAgencyId
* @author yinzuomei
* @description 根据机关id,查询它下面的直属网格列表
* @Date 2020/6/22 23:51
**/
List<DimGridDTO> selectSubGridList(String myAgencyId);
/** /**
* @param myAgencyId * @param myAgencyId
* @return com.epmet.user.result.UserSummaryInfoResultDTO * @return com.epmet.user.result.UserSummaryInfoResultDTO
@ -64,4 +75,24 @@ public interface UserAnalysisDao {
* @Date 2020/6/22 22:38 * @Date 2020/6/22 22:38
**/ **/
List<UserSubAgencyResDTO> selectRegSubAgencyRes(@Param("dateId") String dateId ,@Param("agencyId")String agencyId); List<UserSubAgencyResDTO> selectRegSubAgencyRes(@Param("dateId") String dateId ,@Param("agencyId")String agencyId);
/**
* @param dateId 20200618日期
* @param agencyId 用户所属机关id
* @return java.util.List<com.epmet.dto.result.user.UserSubGridResDTO>
* @author yinzuomei
* @description 参与用户机关下直属网格用户分析
* @Date 2020/6/23 0:18
**/
List<UserSubGridResDTO> selectParticipationSubGridRes(@Param("dateId") String dateId, @Param("agencyId") String agencyId);
/**
* @param dateId 20200618日期
* @param agencyId 用户所属机关id
* @return java.util.List<com.epmet.dto.result.user.UserSubGridResDTO>
* @author yinzuomei
* @description 注册用户机关下直属网格用户分析
* @Date 2020/6/23 0:18
**/
List<UserSubGridResDTO> selectRegSubGridRes(@Param("dateId")String dateId, @Param("agencyId") String agencyId);
} }

125
epmet-module/data-report/data-report-server/src/main/java/com/epmet/service/user/impl/UserAnalysisServiceImpl.java

@ -1,6 +1,7 @@
package com.epmet.service.user.impl; package com.epmet.service.user.impl;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.epmet.commons.tools.constant.NumConstant;
import com.epmet.commons.tools.exception.RenException; import com.epmet.commons.tools.exception.RenException;
import com.epmet.commons.tools.security.user.LoginUserUtil; import com.epmet.commons.tools.security.user.LoginUserUtil;
import com.epmet.commons.tools.utils.DateUtils; import com.epmet.commons.tools.utils.DateUtils;
@ -8,6 +9,7 @@ import com.epmet.commons.tools.utils.Result;
import com.epmet.constant.UserAnalysisConstant; import com.epmet.constant.UserAnalysisConstant;
import com.epmet.dao.user.UserAnalysisDao; import com.epmet.dao.user.UserAnalysisDao;
import com.epmet.dto.DimAgencyDTO; import com.epmet.dto.DimAgencyDTO;
import com.epmet.dto.DimGridDTO;
import com.epmet.dto.form.LoginUserDetailsFormDTO; import com.epmet.dto.form.LoginUserDetailsFormDTO;
import com.epmet.dto.form.user.UserIncrTrendFormDTO; import com.epmet.dto.form.user.UserIncrTrendFormDTO;
import com.epmet.dto.form.user.UserSubAgencyFormDTO; import com.epmet.dto.form.user.UserSubAgencyFormDTO;
@ -108,8 +110,9 @@ public class UserAnalysisServiceImpl implements UserAnalysisService {
//获取用户所属机关id //获取用户所属机关id
String myAgencyId = this.getMyAgency(); String myAgencyId = this.getMyAgency();
//初始化横坐标(用户所机关的下级机关列表) //初始化横坐标(用户所机关的下级机关列表)
List<UserSubAgencyResultDTO> returnList = this.initUserSubAgencyResultDTO(myAgencyId); List<UserSubAgencyResultDTO> dimList = this.initUserSubAgencyResultDTO(myAgencyId);
if(CollectionUtils.isEmpty(returnList)){ if(CollectionUtils.isEmpty(dimList)){
logger.info(String.format("当前机关(agencyId=%s)下没有下级机关",myAgencyId));
return new ArrayList<>(); return new ArrayList<>();
} }
//根据入参,查询注册用户或者参与用户的(机关、按日的查询结果) //根据入参,查询注册用户或者参与用户的(机关、按日的查询结果)
@ -124,33 +127,38 @@ public class UserAnalysisServiceImpl implements UserAnalysisService {
myAgencyId); myAgencyId);
} }
//根据维度表进行对比 //根据维度表进行对比
for(UserSubAgencyResultDTO dimInitResultDto:dimList){
boolean flag=false;
for(UserSubAgencyResDTO userSubAgencyResDTO:userSubAgencyResDTOList){ for(UserSubAgencyResDTO userSubAgencyResDTO:userSubAgencyResDTOList){
for(UserSubAgencyResultDTO returnResultDTO:returnList){ if(dimInitResultDto.getAgencyId().equals(userSubAgencyResDTO.getAgencyId())){
if(returnResultDTO.getAgencyId().equals(userSubAgencyResDTO.getAgencyId())){ flag=true;
//居民、热心居民、党员总数,用于排序 //居民、热心居民、党员总数,用于排序
returnResultDTO.setTotal(userSubAgencyResDTO.getPartymemberTotal() dimInitResultDto.setTotal(userSubAgencyResDTO.getPartymemberTotal()
+userSubAgencyResDTO.getWarmHeartedTotal() +userSubAgencyResDTO.getWarmHeartedTotal()
+userSubAgencyResDTO.getResiTotal()); +userSubAgencyResDTO.getResiTotal());
switch(returnResultDTO.getType()){ switch(dimInitResultDto.getType()){
case UserAnalysisConstant.REGISTERED_RESI: case UserAnalysisConstant.REGISTERED_RESI:
returnResultDTO.setValue(userSubAgencyResDTO.getResiTotal()); dimInitResultDto.setValue(userSubAgencyResDTO.getResiTotal());
break; break;
case UserAnalysisConstant.WARMHEARTED: case UserAnalysisConstant.WARMHEARTED:
returnResultDTO.setValue(userSubAgencyResDTO.getWarmHeartedTotal()); dimInitResultDto.setValue(userSubAgencyResDTO.getWarmHeartedTotal());
break; break;
case UserAnalysisConstant.PARTYMEMBER: case UserAnalysisConstant.PARTYMEMBER:
returnResultDTO.setValue(userSubAgencyResDTO.getPartymemberTotal()); dimInitResultDto.setValue(userSubAgencyResDTO.getPartymemberTotal());
break; break;
default: default:
break; break;
} }
} }
} }
if(!flag){
logger.error(String.format("各机关注册用户数缺少记录:date_id=%s,agencyId=%s",formDTO.getDateId(),dimInitResultDto.getAgencyId()));
}
} }
//返回集合按照total降序排序 //返回集合按照total降序排序
List<UserSubAgencyResultDTO> newList = returnList.stream().sorted(Comparator.comparing(UserSubAgencyResultDTO::getTotal)) List<UserSubAgencyResultDTO> returnList = dimList.stream().sorted(Comparator.comparing(UserSubAgencyResultDTO::getTotal))
.collect(Collectors.toList()); .collect(Collectors.toList());
return newList; return returnList;
} }
private List<UserSubAgencyResultDTO> initUserSubAgencyResultDTO(String myAgencyId) { private List<UserSubAgencyResultDTO> initUserSubAgencyResultDTO(String myAgencyId) {
@ -161,25 +169,25 @@ public class UserAnalysisServiceImpl implements UserAnalysisService {
UserSubAgencyResultDTO resi=new UserSubAgencyResultDTO(); UserSubAgencyResultDTO resi=new UserSubAgencyResultDTO();
resi.setAgencyId(agencyDTO.getId()); resi.setAgencyId(agencyDTO.getId());
resi.setName(agencyDTO.getAgencyName()); resi.setName(agencyDTO.getAgencyName());
resi.setValue(0); resi.setValue(NumConstant.ZERO);
resi.setType(UserAnalysisConstant.REGISTERED_RESI); resi.setType(UserAnalysisConstant.REGISTERED_RESI);
resi.setTotal(0); resi.setTotal(NumConstant.ZERO);
list.add(resi); list.add(resi);
//热心居民 //热心居民
UserSubAgencyResultDTO warm=new UserSubAgencyResultDTO(); UserSubAgencyResultDTO warm=new UserSubAgencyResultDTO();
warm.setAgencyId(agencyDTO.getId()); warm.setAgencyId(agencyDTO.getId());
warm.setName(agencyDTO.getAgencyName()); warm.setName(agencyDTO.getAgencyName());
warm.setValue(0); warm.setValue(NumConstant.ZERO);
warm.setType(UserAnalysisConstant.WARMHEARTED); warm.setType(UserAnalysisConstant.WARMHEARTED);
warm.setTotal(0); warm.setTotal(NumConstant.ZERO);
list.add(warm); list.add(warm);
//党员 //党员
UserSubAgencyResultDTO party=new UserSubAgencyResultDTO(); UserSubAgencyResultDTO party=new UserSubAgencyResultDTO();
party.setAgencyId(agencyDTO.getId()); party.setAgencyId(agencyDTO.getId());
party.setName(agencyDTO.getAgencyName()); party.setName(agencyDTO.getAgencyName());
party.setValue(0); party.setValue(NumConstant.ZERO);
party.setType(UserAnalysisConstant.PARTYMEMBER); party.setType(UserAnalysisConstant.PARTYMEMBER);
party.setTotal(0); party.setTotal(NumConstant.ZERO);
list.add(party); list.add(party);
} }
return list; return list;
@ -194,7 +202,88 @@ public class UserAnalysisServiceImpl implements UserAnalysisService {
**/ **/
@Override @Override
public List<UserSubGridResultDTO> subGrid(UserSubGridFormDTO formDTO) { public List<UserSubGridResultDTO> subGrid(UserSubGridFormDTO formDTO) {
return null; //获取用户所属机关id
String myAgencyId = this.getMyAgency();
//初始化横坐标(用户所机关的直属网格)
List<UserSubGridResultDTO> dimList = this.initUserSubGridResultDTO(myAgencyId);
if(CollectionUtils.isEmpty(dimList)){
logger.info(String.format("当前机关(agencyId=%s)下没有网格",myAgencyId));
return new ArrayList<>();
}
//根据入参,查询注册用户或者参与用户的(机关、按日的查询结果)
List<UserSubGridResDTO> userSubGridResDTOS=new ArrayList<>();
if (UserAnalysisConstant.PARTI_FLAG.equals(formDTO.getRegOrPartiFlag())) {
//参与用户
userSubGridResDTOS=userAnalysisDao.selectParticipationSubGridRes(formDTO.getDateId(),myAgencyId);
} else {
//注册用户
userSubGridResDTOS=userAnalysisDao.selectRegSubGridRes(formDTO.getDateId(),myAgencyId);
}
//根据维度表进行对比
for(UserSubGridResultDTO dimInitResultDto:dimList){
boolean flag=false;
for(UserSubGridResDTO userSubGridResDTO:userSubGridResDTOS){
if(dimInitResultDto.getGridId().equals(userSubGridResDTO.getGridId())){
flag=true;
//居民、热心居民、党员总数,用于排序
dimInitResultDto.setTotal(userSubGridResDTO.getPartymemberTotal()
+userSubGridResDTO.getWarmHeartedTotal()
+userSubGridResDTO.getResiTotal());
switch(dimInitResultDto.getType()){
case UserAnalysisConstant.REGISTERED_RESI:
dimInitResultDto.setValue(userSubGridResDTO.getResiTotal());
break;
case UserAnalysisConstant.WARMHEARTED:
dimInitResultDto.setValue(userSubGridResDTO.getWarmHeartedTotal());
break;
case UserAnalysisConstant.PARTYMEMBER:
dimInitResultDto.setValue(userSubGridResDTO.getPartymemberTotal());
break;
default:
break;
}
}
}
if(!flag){
logger.error(String.format("直属网格注册用户数缺少记录:date_id=%s,gridId=%s",formDTO.getDateId(),dimInitResultDto.getGridId()));
}
}
//返回集合按照total降序排序
List<UserSubGridResultDTO> returnList = dimList.stream().sorted(Comparator.comparing(UserSubGridResultDTO::getTotal))
.collect(Collectors.toList());
return returnList;
}
private List<UserSubGridResultDTO> initUserSubGridResultDTO(String myAgencyId) {
List<UserSubGridResultDTO> list=new ArrayList<>();
List<DimGridDTO> gridList=userAnalysisDao.selectSubGridList(myAgencyId);
for(DimGridDTO grid:gridList){
//居民
UserSubGridResultDTO resi=new UserSubGridResultDTO();
resi.setGridId(grid.getId());
resi.setName(grid.getGridName());
resi.setValue(NumConstant.ZERO);
resi.setType(UserAnalysisConstant.REGISTERED_RESI);
resi.setTotal(NumConstant.ZERO);
list.add(resi);
//热心居民
UserSubGridResultDTO warm=new UserSubGridResultDTO();
warm.setGridId(grid.getId());
warm.setName(grid.getGridName());
warm.setValue(NumConstant.ZERO);
warm.setType(UserAnalysisConstant.WARMHEARTED);
warm.setTotal(NumConstant.ZERO);
list.add(warm);
//党员
UserSubGridResultDTO party=new UserSubGridResultDTO();
party.setGridId(grid.getId());
party.setName(grid.getGridName());
party.setValue(NumConstant.ZERO);
party.setType(UserAnalysisConstant.PARTYMEMBER);
party.setTotal(NumConstant.ZERO);
list.add(party);
}
return list;
} }
/** /**

49
epmet-module/data-report/data-report-server/src/main/resources/mapper/user/UserAnalysisDao.xml

@ -13,6 +13,20 @@
da.DEL_FLAG = '0' da.DEL_FLAG = '0'
AND da.AGENCY_DIM_TYPE = 'all' AND da.AGENCY_DIM_TYPE = 'all'
AND da.PID =#{myAgencyId} AND da.PID =#{myAgencyId}
order by CONVERT ( da.AGENCY_NAME USING gbk ) ASC
</select>
<!-- 根据机关id,查询它下面的直属网格列表 -->
<select id="selectSubGridList" resultType="com.epmet.dto.DimGridDTO" parameterType="java.lang.String">
SELECT
dg.id,
dg.GRID_NAME
FROM
dim_grid dg
WHERE
DEL_FLAG = '0'
AND dg.AGENCY_ID = #{myAgencyId}
order by CONVERT ( dg.GRID_NAME USING gbk ) ASC
</select> </select>
<!-- 查询注册用户汇总信息 --> <!-- 查询注册用户汇总信息 -->
<select id="selectRegUserSummaryInfo" parameterType="java.lang.String" resultType="com.epmet.dto.result.user.UserSummaryInfoResultDTO"> <select id="selectRegUserSummaryInfo" parameterType="java.lang.String" resultType="com.epmet.dto.result.user.UserSummaryInfoResultDTO">
@ -35,7 +49,7 @@
LIMIT 1 LIMIT 1
</select> </select>
<!-- 查询注册用户的汇总信息 --> <!-- 查询参与用户的汇总信息 -->
<select id="selectParticipationUserSummaryInfo" parameterType="java.lang.String" <select id="selectParticipationUserSummaryInfo" parameterType="java.lang.String"
resultType="com.epmet.dto.result.user.UserSummaryInfoResultDTO"> resultType="com.epmet.dto.result.user.UserSummaryInfoResultDTO">
SELECT SELECT
@ -99,4 +113,37 @@
and m.DATE_ID=#{dateId} and m.DATE_ID=#{dateId}
order by m.REG_TOTAL desc order by m.REG_TOTAL desc
</select> </select>
<!-- 参与用户:机关下,直属网格用户分析 -->
<select id="selectParticipationSubGridRes" parameterType="map" resultType="com.epmet.dto.result.user.UserSubGridResDTO">
SELECT
m.GRID_ID,
m.AGENCY_ID,
m.REG_TOTAL,
M.RESI_TOTAL,
m.WARM_HEARTED_TOTAL,
m.PARTYMEMBER_TOTAL
FROM
fact_participation_user_grid_daily m
WHERE
m.DEL_FLAG = '0'
AND m.DATE_ID=#{dateId}
AND m.AGENCY_ID = #{agencyId}
</select>
<!-- 注册用户:机关下,直属网格用户分析 -->
<select id="selectRegSubGridRes" parameterType="map" resultType="com.epmet.dto.result.user.UserSubGridResDTO">
SELECT
m.GRID_ID,
m.AGENCY_ID,
m.REG_TOTAL,
M.RESI_TOTAL,
m.WARM_HEARTED_TOTAL,
m.PARTYMEMBER_TOTAL
FROM
fact_reg_user_grid_daily m
WHERE
m.DEL_FLAG = '0'
AND m.DATE_ID = #{dateId}
AND m.AGENCY_ID = #{agencyId}
</select>
</mapper> </mapper>
Loading…
Cancel
Save