Browse Source

小组数据抽取

master
wangchao 5 years ago
parent
commit
a702adc62c
  1. 6
      epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/extract/FactOriginGroupMainDailyDTO.java
  2. 20
      epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/extract/form/GridHeartedFormDTO.java
  3. 41
      epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/group/result/ExtractGroupMemberActionRecordResultDTO.java
  4. 6
      epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/project/result/ProjectOrgPeriodResultDTO.java
  5. 36
      epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/stats/result/GridAttributesResultDTO.java
  6. 33
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/controller/FactOriginController.java
  7. 75
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/evaluationindex/extract/FactOriginGroupMainDailyDao.java
  8. 10
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/group/GroupDataDao.java
  9. 10
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/stats/DimGridDao.java
  10. 7
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/user/UserDao.java
  11. 2
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/entity/evaluationindex/extract/FactOriginProjectOrgPeriodDailyEntity.java
  12. 11
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/GroupExtractService.java
  13. 116
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/impl/GroupExtractServiceImpl.java
  14. 1
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/impl/ProjectPeriodExtractServiceImpl.java
  15. 11
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/group/GroupDataService.java
  16. 18
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/group/impl/GroupDataServiceImpl.java
  17. 11
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/project/impl/ProjectProcessServiceImpl.java
  18. 10
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/stats/DimGridService.java
  19. 20
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/stats/impl/DimGridServiceImpl.java
  20. 20
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/user/UserService.java
  21. 25
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/user/impl/UserServiceImpl.java
  22. 178
      epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/extract/FactOriginGroupMainDailyDao.xml
  23. 33
      epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/extract/FactOriginProjectOrgPeriodDailyDao.xml
  24. 58
      epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/group/GroupDataDao.xml
  25. 11
      epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/project/ProjectProcessDao.xml
  26. 19
      epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/stats/DimGridDao.xml
  27. 33
      epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/user/UserDao.xml

6
epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/extract/FactOriginGroupMainDailyDTO.java

@ -18,7 +18,11 @@
package com.epmet.dto.extract;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import com.epmet.dto.group.result.ExtractGroupMemberActionRecordResultDTO;
import lombok.Data;
@ -146,4 +150,6 @@ Ps: 如果一个小组被拒绝,当前小组的状态将永久停留在“审
*/
private Date updatedTime;
private List<ExtractGroupMemberActionRecordResultDTO> members = new ArrayList();
}

20
epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/extract/form/GridHeartedFormDTO.java

@ -0,0 +1,20 @@
package com.epmet.dto.extract.form;
import lombok.Data;
import java.io.Serializable;
/**
* @Description
* @ClassName GridHeartedFormDTO
* @Auth wangc
* @Date 2020-09-20 12:42
*/
@Data
public class GridHeartedFormDTO implements Serializable {
private static final long serialVersionUID = 9069263069122734316L;
private String userId;
private String gridId;
}

41
epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/group/result/ExtractGroupMemberActionRecordResultDTO.java

@ -0,0 +1,41 @@
package com.epmet.dto.group.result;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
/**
* @Description
* @ClassName ExtractGroupMemberActionRecordResultDTO
* @Auth wangc
* @Date 2020-09-18 21:18
*/
@Data
public class ExtractGroupMemberActionRecordResultDTO implements Serializable {
private static final long serialVersionUID = -74883228267461785L;
private String customerId;
private String groupId;
private String memberId;
private String leaderFlag;
private String dateId;
private String weekId;
private String monthId;
private String quarterId;
private String yearId;
private Date joinDate;
/**
* 目前只有join leader也是join
* */
private String actionCode;
}

6
epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/project/result/ProjectOrgPeriodResultDTO.java

@ -86,4 +86,10 @@ public class ProjectOrgPeriodResultDTO implements Serializable {
* */
private Date periodTillReplyFirstly;
private String customerId;
private String staffId;
private String isResolved;
}

36
epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/stats/result/GridAttributesResultDTO.java

@ -0,0 +1,36 @@
package com.epmet.dto.stats.result;
import lombok.Data;
import java.io.Serializable;
/**
* @Description
* @ClassName GridAttributesResultDTO
* @Auth wangc
* @Date 2020-09-20 12:50
*/
@Data
public class GridAttributesResultDTO implements Serializable {
private static final long serialVersionUID = 466974582608407121L;
/**
* 网格ID
*/
private String gridId;
/**
* 网格所属机关ID
*/
private String agencyId;
/**
* 机关的上级ID
*/
private String parentId;
/**
* 所有上级Id
* */
private String pids;
}

33
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/controller/FactOriginController.java

@ -4,10 +4,7 @@ import com.epmet.commons.tools.utils.DateUtils;
import com.epmet.commons.tools.utils.Result;
import com.epmet.commons.tools.validator.ValidatorUtils;
import com.epmet.dto.extract.form.ExtractFormDTO;
import com.epmet.service.evaluationindex.extract.FactOriginExtractService;
import com.epmet.service.evaluationindex.extract.FactOriginTopicMainDailyService;
import com.epmet.service.evaluationindex.extract.IssueExtractService;
import com.epmet.service.evaluationindex.extract.ProjectExtractService;
import com.epmet.service.evaluationindex.extract.*;
import com.epmet.util.DimIdGenerator;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
@ -36,6 +33,8 @@ public class FactOriginController {
private FactOriginTopicMainDailyService factOriginTopicMainDailyService;
@Autowired
private ProjectExtractService projectExtractService;
@Autowired
private GroupExtractService groupExtractService;
/**
* desc:
@ -107,4 +106,30 @@ public class FactOriginController {
projectExtractService.saveOriginProjectDaily(extractFormDTO);
return new Result();
}
/**
* @Description 项目节点历时数据清洗
* @param param
* @return
* @author wangc
* @date 2020.09.20 16:11
**/
@PostMapping("projectorgperiodcleanning")
public Result projectOrgPeriodCleaning(@RequestBody ExtractFormDTO param){
projectExtractService.extractProjectPeriodData(param);
return new Result();
}
/**
* @Description 小组数据清洗
* @param
* @return
* @author wangc
* @date 2020.09.20 16:11
**/
@PostMapping("groupdatacleaning")
public Result groupDataCleaning(@RequestBody ExtractFormDTO param){
groupExtractService.extractGroupData(param);
return new Result();
}
}

75
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/evaluationindex/extract/FactOriginGroupMainDailyDao.java

@ -19,6 +19,9 @@ package com.epmet.dao.evaluationindex.extract;
import com.epmet.commons.mybatis.dao.BaseDao;
import com.epmet.dto.extract.result.PartyCreateGroupCountResultDTO;
import com.epmet.dto.extract.FactOriginGroupMainDailyDTO;
import com.epmet.dto.extract.form.GridHeartedFormDTO;
import com.epmet.dto.group.result.ExtractGroupMemberActionRecordResultDTO;
import com.epmet.entity.evaluationindex.extract.FactOriginGroupMainDailyEntity;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
@ -43,4 +46,76 @@ public interface FactOriginGroupMainDailyDao extends BaseDao<FactOriginGroupMain
*/
List<PartyCreateGroupCountResultDTO> selectPartyCreateGroupCount(@Param("customerId") String customerId,@Param("monthId") String monthId);
/**
* @Description 查询是否存在该客户下的数据
* @param customerId
* @return
* @author wangc
* @date 2020.09.18 23:30
**/
int selectIfExist(@Param("customerId")String customerId);
/**
* @Description 按照客户Id清除组数据
* @param customerId
* @return
* @author wangc
* @date 2020.09.20 09:58
**/
void deleteBatchByCustomerId(@Param("customerId")String customerId);
/**
* @Description 按照客户Id清除组员数据
* @param customerId
* @return
* @author wangc
* @date 2020.09.20 09:58
**/
void deleteBatchMemberByCustomerId(@Param("customerId")String customerId);
/**
* @Description 按照组Id清除组和组员数据
* @param list
* @return
* @author wangc
* @date 2020.09.20 12:16
**/
void deleteBatchByGroupId(@Param("list") List<String> list);
/**
* @Description 更新群主的党员信息
* @param list
* @return
* @author wangc
* @date 2020.09.20 12:44
**/
int updatePartyFlag(@Param("list") List<String> list);
/**
* @Description 更新群主的热心居民信息
* @param list
* @return
* @author wangc
* @date 2020.09.20 12:44
**/
int updateHeartedFlag(@Param("list") List<GridHeartedFormDTO> list);
/**
* @Description 批量插入组主表
* @param list
* @return
* @author wangc
* @date 2020.09.20 15:37
**/
int insertBatchMain(@Param("list") List<FactOriginGroupMainDailyDTO> list);
/**
* @Description 批量插入组员表
* @param list
* @return
* @author wangc
* @date 2020.09.20 15:37
**/
int insertBatchMembers(List<ExtractGroupMemberActionRecordResultDTO> list);
}

10
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/group/GroupDataDao.java

@ -1,5 +1,6 @@
package com.epmet.dao.group;
import com.epmet.dto.extract.FactOriginGroupMainDailyDTO;
import com.epmet.dto.group.form.GridGroupPeopleFormDTO;
import com.epmet.dto.group.form.GridGroupPeopleTotalFormDTO;
import com.epmet.dto.group.form.GridGroupTotalFormDTO;
@ -80,4 +81,13 @@ public interface GroupDataDao {
* @author zxc
*/
List<GroupPeopleCountResultDTO> getAgencyGrid(@Param("gridIds")List<String> gridIds);
/**
* @Description 抽取小组数据
* @param customerId
* @return
* @author wangc
* @date 2020.09.18 22:45
**/
List<FactOriginGroupMainDailyDTO> groupExtracting(@Param("customerId")String customerId,@Param("dateId") String dateId);
}

10
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/stats/DimGridDao.java

@ -21,6 +21,7 @@ import com.epmet.commons.mybatis.dao.BaseDao;
import com.epmet.dto.group.AgencyDTO;
import com.epmet.dto.group.result.AgencyGridInfoResultDTO;
import com.epmet.dto.group.result.SubAgencyIdResultDTO;
import com.epmet.dto.stats.result.GridAttributesResultDTO;
import com.epmet.dto.stats.result.GridBelongAgencyResultDTO;
import com.epmet.entity.stats.DimGridEntity;
import org.apache.ibatis.annotations.Mapper;
@ -69,4 +70,13 @@ public interface DimGridDao extends BaseDao<DimGridEntity> {
* @date 2020/9/17 2:34 下午
*/
List<GridBelongAgencyResultDTO> selectGridBelongAgencyInfo(@Param("gridIds") List<String> gridIds);
/**
* @Description 查询网格的所有所属上级属性
* @param gridIds
* @return
* @author wangc
* @date 2020.09.20 13:01
**/
List<GridAttributesResultDTO> selectGridAttributes(@Param("gridIds") List<String> gridIds);
}

7
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/user/UserDao.java

@ -1,5 +1,6 @@
package com.epmet.dao.user;
import com.epmet.dto.extract.form.GridHeartedFormDTO;
import com.epmet.dto.extract.result.UserPartyResultDTO;
import com.epmet.dto.user.result.CommonTotalAndIncCountResultDTO;
import org.apache.ibatis.annotations.Mapper;
@ -105,5 +106,9 @@ public interface UserDao {
* @author zxc
* @date 2020/9/15 4:23 下午
*/
List<UserPartyResultDTO> selectUserIsParty(@Param("userIds") List<String> userIds);;
List<UserPartyResultDTO> selectUserIsParty(@Param("userIds") List<String> userIds);
List<String> selectPartymembersByCustomerId(@Param("customerId")String customerId);
List<GridHeartedFormDTO> selectWarmHeartedByCustomerId(@Param("customerId")String customerId);
}

2
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/entity/evaluationindex/extract/FactOriginProjectOrgPeriodDailyEntity.java

@ -83,7 +83,7 @@ public class FactOriginProjectOrgPeriodDailyEntity extends BaseEpmetEntity {
/**
* 截至第一次响应时长从流转到第一次处理(响应结案流转)耗时大于等于上一项值
*/
private Integer periodTillReplyFirstly;
private Date periodTillReplyFirstly;
/**
* resloved unresolved

11
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/GroupExtractService.java

@ -4,6 +4,8 @@ import com.epmet.dto.extract.result.PartyCreateGroupCountResultDTO;
import java.util.List;
import com.epmet.dto.extract.form.ExtractFormDTO;
/**
* @Desc 业务数据抽取 - 组相关
* @Author wangc
@ -20,4 +22,13 @@ public interface GroupExtractService {
*/
List<PartyCreateGroupCountResultDTO> selectPartyCreateGroupCount(String customerId,String monthId);
/**
* @Description 业务抽取 - 小组祥光
* @param param
* @return
* @author wangc
* @date 2020.09.18 21:07
**/
void extractGroupData(ExtractFormDTO param);
}

116
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/impl/GroupExtractServiceImpl.java

@ -2,10 +2,34 @@ package com.epmet.service.evaluationindex.extract.impl;
import com.epmet.dao.evaluationindex.extract.FactOriginGroupMainDailyDao;
import com.epmet.dto.extract.result.PartyCreateGroupCountResultDTO;
import com.epmet.commons.tools.constant.NumConstant;
import com.epmet.commons.tools.utils.DateUtils;
import com.epmet.dao.evaluationindex.extract.FactOriginGroupMainDailyDao;
import com.epmet.dto.extract.FactOriginGroupMainDailyDTO;
import com.epmet.dto.extract.form.ExtractFormDTO;
import com.epmet.dto.extract.form.GridHeartedFormDTO;
import com.epmet.dto.group.result.ExtractGroupMemberActionRecordResultDTO;
import com.epmet.dto.stats.result.GridAttributesResultDTO;
import com.epmet.service.evaluationindex.extract.GroupExtractService;
import com.epmet.service.group.GroupDataService;
import com.epmet.service.stats.DimAgencyService;
import com.epmet.service.stats.DimGridService;
import com.epmet.service.user.UserService;
import com.epmet.util.DimIdGenerator;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.function.Function;
import java.util.stream.Collectors;
import java.util.List;
@ -33,4 +57,96 @@ public class GroupExtractServiceImpl implements GroupExtractService {
public List<PartyCreateGroupCountResultDTO> selectPartyCreateGroupCount(String customerId, String monthId) {
return groupMainDailyDao.selectPartyCreateGroupCount(customerId, monthId);
}
@Autowired
private GroupDataService groupDataService;
@Autowired
private FactOriginGroupMainDailyDao factOriginGroupMainDailyDao;
@Autowired
private UserService userService;
@Autowired
private DimGridService dimGridService;
/**
* @Description 业务抽取 - 小组祥光
* @param param
* @return
* @author wangc
* @date 2020.09.18 21:07
**/
@Override
public void extractGroupData(ExtractFormDTO param) {
int count = factOriginGroupMainDailyDao.selectIfExist(param.getCustomerId());
if(StringUtils.isBlank(param.getDateId())){
Date yesterday = new Date(System.currentTimeMillis() - 1000 * 60 * 60 * 24);
SimpleDateFormat format = new SimpleDateFormat(DateUtils.DATE_PATTERN_YYYYMMDD);
param.setDateId(format.format(yesterday));
}
//原生数据,如果是首次,则为全部组,如果非首次,则只有新创建以及新进人的组
//但是每个组每天都要更新一次组长的身份信息
List<FactOriginGroupMainDailyDTO> originGroupData = groupDataService.extractGroupData(
count <= NumConstant.ZERO ? true : false,
param.getCustomerId(), param.getDateId());
List<ExtractGroupMemberActionRecordResultDTO> memberList = new LinkedList<>();
if (!CollectionUtils.isEmpty(originGroupData)) {
List<GridAttributesResultDTO> gridList = dimGridService.getGridAttributes(originGroupData.stream().map(FactOriginGroupMainDailyDTO::getGridId).distinct().collect(Collectors.toList()));
if (!CollectionUtils.isEmpty(gridList)) {
Map<String, GridAttributesResultDTO> gridMap =
gridList.stream().collect(Collectors.toMap(GridAttributesResultDTO::getGridId, Function.identity(), (key1, key2) -> key2));
if (!CollectionUtils.isEmpty(originGroupData)) {
originGroupData.forEach(group -> {
if (!CollectionUtils.isEmpty(group.getMembers())) {
group.setMemberTotal(group.getMembers().size());
group.getMembers().forEach(member -> {
DimIdGenerator.DimIdBean dateInfo = DimIdGenerator.getDimIdBean(member.getJoinDate());
member.setDateId(dateInfo.getDateId());
member.setWeekId(dateInfo.getWeekId());
member.setMonthId(dateInfo.getMonthId());
member.setQuarterId(dateInfo.getQuarterId());
member.setYearId(dateInfo.getYearId());
memberList.add(member);
});
}
GridAttributesResultDTO attr = gridMap.get(group.getGridId());
if (null != attr) {
group.setAgencyId(attr.getAgencyId());
group.setParentId(attr.getParentId());
group.setPids(attr.getPids());
}
if(null != group.getCreatedTime()){
DimIdGenerator.DimIdBean dateInfo = DimIdGenerator.getDimIdBean(group.getCreatedTime());
group.setDateId(dateInfo.getDateId());
group.setWeekId(dateInfo.getWeekId());
group.setMonthId(dateInfo.getMonthId());
group.setQuarterId(dateInfo.getQuarterId());
group.setYearId(dateInfo.getYearId());
}
});
}
if (count <= NumConstant.ZERO) {
//isFirst
factOriginGroupMainDailyDao.deleteBatchByCustomerId(param.getCustomerId());
factOriginGroupMainDailyDao.deleteBatchMemberByCustomerId(param.getCustomerId());
factOriginGroupMainDailyDao.insertBatchMain(originGroupData);
factOriginGroupMainDailyDao.insertBatchMembers(memberList);
} else {
factOriginGroupMainDailyDao.deleteBatchByGroupId(originGroupData.stream().map(FactOriginGroupMainDailyDTO :: getId).distinct().collect(Collectors.toList()));
factOriginGroupMainDailyDao.insertBatchMembers(memberList);
}
}
List<String> partyIds = userService.getPartymembersByCustomerId(param.getCustomerId());
List<GridHeartedFormDTO> heartedIds = userService.getWarmHeartedByCustomerId(param.getCustomerId());
factOriginGroupMainDailyDao.updatePartyFlag(partyIds);
factOriginGroupMainDailyDao.updateHeartedFlag(heartedIds);
}
}
}

1
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/impl/ProjectPeriodExtractServiceImpl.java

@ -6,7 +6,6 @@ import com.epmet.commons.tools.utils.DateUtils;
import com.epmet.dao.evaluationindex.extract.FactOriginProjectOrgPeriodDailyDao;
import com.epmet.dto.extract.form.ExtractFormDTO;
import com.epmet.dto.project.result.ProjectOrgPeriodResultDTO;
import com.epmet.dto.project.result.ProjectOrgRelationWhenResponseResultDTO;
import com.epmet.entity.evaluationindex.extract.FactOriginProjectOrgPeriodDailyEntity;
import com.epmet.service.evaluationindex.extract.ProjectPeriodExtractService;
import com.epmet.service.project.ProjectProcessService;

11
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/group/GroupDataService.java

@ -1,5 +1,6 @@
package com.epmet.service.group;
import com.epmet.dto.extract.FactOriginGroupMainDailyDTO;
import com.epmet.dto.group.result.*;
import com.epmet.util.DimIdGenerator;
import org.apache.ibatis.annotations.Param;
@ -55,4 +56,14 @@ public interface GroupDataService {
*/
List<GroupPeopleCountResultDTO> getAgencyGrid(@Param("gridIds") List<String> gridIds);
/**
* @Description 业务抽取 - 小组数据
* @param isFirst
* @param customerId
* @return
* @author wangc
* @date 2020.09.18 22:52
**/
List<FactOriginGroupMainDailyDTO> extractGroupData(Boolean isFirst,String customerId,String dateId);
}

18
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/group/impl/GroupDataServiceImpl.java

@ -4,6 +4,7 @@ import com.epmet.commons.dynamic.datasource.annotation.DataSource;
import com.epmet.commons.tools.constant.NumConstant;
import com.epmet.constant.DataSourceConstant;
import com.epmet.dao.group.GroupDataDao;
import com.epmet.dto.extract.FactOriginGroupMainDailyDTO;
import com.epmet.dto.group.form.GridGroupPeopleFormDTO;
import com.epmet.dto.group.form.GridGroupPeopleTotalFormDTO;
import com.epmet.dto.group.form.GridGroupTotalFormDTO;
@ -12,9 +13,12 @@ import com.epmet.dto.group.result.*;
import com.epmet.entity.stats.DimGridEntity;
import com.epmet.service.group.GroupDataService;
import com.epmet.util.DimIdGenerator;
import org.apache.commons.lang3.StringUtils;
import org.apache.poi.util.StringUtil;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import java.util.*;
import java.util.stream.Collectors;
@ -193,4 +197,18 @@ public class GroupDataServiceImpl implements GroupDataService {
}
/**
* @Description 业务抽取 - 小组数据
* * @param isFirst
* @param customerId
* @return
* @author wangc
* @date 2020.09.18 22:52
**/
@Override
public List<FactOriginGroupMainDailyDTO> extractGroupData(Boolean isFirst ,String customerId,String dateId) {
return groupDataDao.groupExtracting(customerId,isFirst?null:dateId);
}
}

11
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/project/impl/ProjectProcessServiceImpl.java

@ -143,19 +143,16 @@ public class ProjectProcessServiceImpl extends BaseServiceImpl<ProjectProcessDao
if(StringUtils.equalsAny(staffResponseTraceUnit.get(index).getOperation(),
"transfer","return","close")){
replaceFirstResponseDate(dest,index,staffResponseTraceUnit,false);
replaceFirstResponseDate(dest,index,staffResponseTraceUnit,true);
lastEndCount = index;
}else{
if(lastEndCount == NumConstant.ONE_NEG) continue;
if(index - NumConstant.ONE == lastEndCount){
replaceFirstResponseDate(dest,index,staffResponseTraceUnit,true);
replaceFirstResponseDate(dest,index,staffResponseTraceUnit,false);
}else{continue;}
}
}
}
});
@ -169,7 +166,9 @@ public class ProjectProcessServiceImpl extends BaseServiceImpl<ProjectProcessDao
List<ProjectOrgPeriodResultDTO> processSingleList =
dest.get(staffResponseTraceUnit.get(index).getProcessId());
if(!CollectionUtils.isEmpty(processSingleList)){
ProjectOrgPeriodResultDTO element = processSingleList.get(NumConstant.ZERO);
//ProjectOrgPeriodResultDTO element = processSingleList.get(NumConstant.ZERO);
ProjectOrgPeriodResultDTO element = processSingleList.stream().filter(node ->
StringUtils.equals(node.getStaffId(),staffResponseTraceUnit.get(index).getStaffId())).findFirst().get();
if(!ifResponsed && null == element.getHandledDate()){
log.warn("com.epmet.service.project.impl.ProjectProcessServiceImpl.skipLevelGrouping::已流出节点没有办结日期,节点ID{}",element.getProcessId() );
}

10
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/stats/DimGridService.java

@ -23,6 +23,7 @@ import com.epmet.dto.group.AgencyDTO;
import com.epmet.dto.group.result.AgencyGridInfoResultDTO;
import com.epmet.dto.group.result.SubAgencyIdResultDTO;
import com.epmet.dto.stats.DimGridDTO;
import com.epmet.dto.stats.result.GridAttributesResultDTO;
import com.epmet.dto.stats.result.GridBelongAgencyResultDTO;
import com.epmet.entity.stats.DimGridEntity;
import com.epmet.entity.stats.LastExecRecordEntity;
@ -138,4 +139,13 @@ public interface DimGridService extends BaseService<DimGridEntity> {
* @date 2020/9/17 2:34 下午
*/
List<GridBelongAgencyResultDTO> selectGridBelongAgencyInfo(List<String> gridIds);
/**
* @Description 查询网格的所有所属上级属性
* @param gridIds
* @return
* @author wangc
* @date 2020.09.20 13:01
**/
List<GridAttributesResultDTO> getGridAttributes(List<String> gridIds);
}

20
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/stats/impl/DimGridServiceImpl.java

@ -34,6 +34,7 @@ import com.epmet.dto.group.AgencyDTO;
import com.epmet.dto.group.result.AgencyGridInfoResultDTO;
import com.epmet.dto.group.result.SubAgencyIdResultDTO;
import com.epmet.dto.stats.DimGridDTO;
import com.epmet.dto.stats.result.GridAttributesResultDTO;
import com.epmet.dto.stats.result.GridBelongAgencyResultDTO;
import com.epmet.entity.stats.DimGridEntity;
import com.epmet.service.stats.DimGridService;
@ -41,11 +42,9 @@ import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.*;
/**
* 客户网格维度
@ -177,4 +176,17 @@ public class DimGridServiceImpl extends BaseServiceImpl<DimGridDao, DimGridEntit
public List<GridBelongAgencyResultDTO> selectGridBelongAgencyInfo(List<String> gridIds) {
return baseDao.selectGridBelongAgencyInfo(gridIds);
}
/**
* @Description 查询网格的所有所属上级属性
* @param gridIds
* @return
* @author wangc
* @date 2020.09.20 13:01
**/
@Override
public List<GridAttributesResultDTO> getGridAttributes(List<String> gridIds) {
if(CollectionUtils.isEmpty(gridIds)) return Collections.EMPTY_LIST;
return baseDao.selectGridAttributes(gridIds);
}
}

20
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/user/UserService.java

@ -1,8 +1,10 @@
package com.epmet.service.user;
import com.epmet.dto.AgencySubTreeDto;
import com.epmet.dto.extract.form.GridHeartedFormDTO;
import com.epmet.dto.stats.user.result.UserStatisticalData;
import com.epmet.util.DimIdGenerator;
import org.apache.ibatis.annotations.Param;
import java.util.Date;
import java.util.List;
@ -35,4 +37,22 @@ public interface UserService {
* @date 2020/9/15 4:23 下午
*/
Map<String,Integer> selectUserIsParty(List<String> userIds);
/**
* @Description 查询客户下的党员userId
* @param customerId
* @return
* @author wangc
* @date 2020.09.20 15:01
**/
List<String> getPartymembersByCustomerId(String customerId);
/**
* @Description 查询客户下的热心居民Id以及所在网格Id
* @param customerId
* @return
* @author wangc
* @date 2020.09.20 15:01
**/
List<GridHeartedFormDTO> getWarmHeartedByCustomerId(String customerId);
}

25
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/user/impl/UserServiceImpl.java

@ -6,6 +6,7 @@ import com.epmet.constant.DataSourceConstant;
import com.epmet.constant.ExtractConstant;
import com.epmet.dao.user.UserDao;
import com.epmet.dto.AgencySubTreeDto;
import com.epmet.dto.extract.form.GridHeartedFormDTO;
import com.epmet.dto.extract.result.UserPartyResultDTO;
import com.epmet.dto.stats.user.*;
import com.epmet.dto.stats.user.result.UserStatisticalData;
@ -152,6 +153,30 @@ public class UserServiceImpl implements UserService {
return result;
}
/**
* @Description 查询客户下的党员userId
* @param customerId
* @return
* @author wangc
* @date 2020.09.20 15:01
**/
@Override
public List<String> getPartymembersByCustomerId(String customerId) {
return userDao.selectPartymembersByCustomerId(customerId);
}
/**
* @Description 查询客户下的热心居民Id以及所在网格Id
* @param customerId
* @return
* @author wangc
* @date 2020.09.20 15:01
**/
@Override
public List<GridHeartedFormDTO> getWarmHeartedByCustomerId(String customerId) {
return userDao.selectWarmHeartedByCustomerId(customerId);
}
/**
* @Description 初始化机关-所有下级网格Map

178
epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/extract/FactOriginGroupMainDailyDao.xml

@ -18,4 +18,182 @@
</select>
<select id="selectIfExist" resultType="int">
SELECT COUNT(*)
FROM
fact_origin_group_main_daily
WHERE
DEL_FLAG = '0'
AND
CUSTOMER_ID = #{customerId}
</select>
<delete id="deleteBatchByCustomerId" >
DELETE FROM
fact_origin_group_main_daily
WHERE
CUSTOMER_ID = #{customerId}
</delete>
<delete id="deleteBatchMemberByCustomerId">
DELETE FROM
fact_origin_group_member_daily
WHERE
CUSTOMER_ID = #{customerId}
</delete>
<delete id="deleteBatchByGroupId" parameterType="java.util.List">
DELETE FROM
fact_origin_group_main_daily
<where>
<foreach collection="list" item="groupId" separator=" OR " close=" ;">
ID = #{groupId}
</foreach>
</where>
</delete>
<update id="updatePartyFlag" parameterType="java.util.List">
UPDATE fact_origin_group_main_daily
SET IS_OWNER_PARTY = 1
<where>
DEL_FLAG = '0'
AND
<foreach collection="list" item="ownerId" open="( " separator=" OR " close=" ) ">
GROUP_OWNER_ID = #{ownerId}
</foreach>
</where>
</update>
<update id="updateHeartedFlag" parameterType="java.util.List">
UPDATE fact_origin_group_main_daily
SET IS_OWNER_HEARTED = 1
<where>
DEL_FLAG = '0'
AND
<foreach collection="list" item="item" open="( " separator=" OR " close=" ) ">
(GROUP_OWNER_ID = #{item.userId} AND GRID_ID = #{item.gridId})
</foreach>
</where>
</update>
<insert id="insertBatchMain" parameterType="java.util.List">
INSERT INTO fact_origin_group_main_daily
(
id,
customer_id,
group_state,
grid_id,
agency_id,
parent_id,
pids,
date_id,
week_id,
month_id,
quarter_id,
year_id,
resi_member_count,
member_total,
group_owner_id,
is_owner_hearted,
is_owner_party,
del_flag,
revision,
created_by,
created_time,
updated_by,
updated_time
)VALUES
<foreach collection="list" item="item" index="index" separator=",">
(
#{item.id},
#{item.customerId},
#{item.groupState},
#{item.gridId},
#{item.agencyId},
#{item.parentId},
#{item.pids},
#{item.dateId},
#{item.weekId},
#{item.monthId},
#{item.quarterId},
#{item.yearId},
0,
#{item.memberTotal},
#{item.groupOwnerId},
<choose>
<when test='null == item.isOwnerHearted or "" == item.isOwnerHearted'>
0,
</when>
<otherwise>
#{item.isOwnerHearted},
</otherwise>
</choose>
<choose>
<when test='null == item.isOwnerParty or "" == item.isOwnerParty'>
0,
</when>
<otherwise>
#{item.isOwnerParty},
</otherwise>
</choose>
'0',
0,
'CRAWLER_ROBOT',
now(),
'CRAWLER_ROBOT',
now()
)
</foreach>
</insert>
<insert id="insertBatchMembers" parameterType="java.util.List">
INSERT INTO fact_origin_group_member_daily
(
id,
group_id,
member_id,
customer_id,
leader_flag,
date_id,
week_id,
month_id,
quarter_id,
year_id,
action_code,
revision,
del_flag,
created_by,
created_time,
updated_by,
updated_time
)VALUES
<foreach collection="list" item="item" index="index" separator=",">
(
(SELECT REPLACE(UUID(), '-', '') AS id),
#{item.groupId},
#{item.memberId},
#{item.customerId},
#{item.leaderFlag},
#{item.dateId},
#{item.weekId},
#{item.monthId},
#{item.quarterId},
#{item.yearId},
#{item.actionCode},
'0',
0,
'CRAWLER_ROBOT',
now(),
'CRAWLER_ROBOT',
now()
)
</foreach>
</insert>
</mapper>

33
epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/extract/FactOriginProjectOrgPeriodDailyDao.xml

@ -29,7 +29,7 @@
<select id="selectIfExisted" resultType="int">
SELECT COUNT(*) FROM fact_origin_project_org_period_daily WHERE DEL_FLAG = '0'
<if test='null != customerId and "" != customerId'>
CUSTOMER_ID = #{customerId}
AND CUSTOMER_ID = #{customerId}
</if>
</select>
@ -90,24 +90,27 @@
<foreach collection="list" item="item" index="index" separator=",">
(
(SELECT REPLACE(UUID(), '-', '') AS id),
#{customerId},
#{projectId},
#{orgId},
#{orgType},
#{pid},
#{pids},
#{informedDate},
#{handledDate},
#{totalPeriod},
#{periodTillReplyFirstly},
#{isResolved},
#{operation},
#{item.customerId},
#{item.projectId},
#{item.orgId},
#{item.orgType},
<choose >
<when test="null == item.pid">0,</when>
<otherwise>#{item.pid},</otherwise>
</choose>
#{item.pids},
#{item.informedDate},
#{item.handledDate},
#{item.totalPeriod},
#{item.periodTillReplyFirstly},
#{item.isResolved},
#{item.operation},
'0',
0,
'CRAWLER_ROBOT',
now(),
'CRAWLER_ROBOT',
now()
now(),
'CRAWLER_ROBOT'
)
</foreach>
</insert>

58
epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/group/GroupDataDao.xml

@ -155,5 +155,61 @@
rgm.resi_group_id
</foreach>
</select>
<resultMap id="groupExtracting" type="com.epmet.dto.extract.FactOriginGroupMainDailyDTO">
<id column="ID" property="id"></id>
<result column="CUSTOMER_ID" property="customerId"/>
<result column="groupState" property="groupState"/>
<result column="GRID_ID" property="gridId"/>
<result column="createdTime" property="createdTime" />
<result column="groupOwnerId" property="groupOwnerId"/>
<collection property="members" ofType="com.epmet.dto.group.result.ExtractGroupMemberActionRecordResultDTO">
<result property="customerId" column="CUSTOMER_ID"/>
<result property="joinDate" column="joinDate" />
<result property="actionCode" column="actionCode" />
<result property="memberId" column="memberId" />
<result property="leaderFlag" column="leaderFlag" />
<result property="groupId" column="ID" />
</collection>
</resultMap>
<!-- 抽取小组数据 -->
<select id="groupExtracting" resultMap="groupExtracting">
SELECT
groupp.ID ,
groupp.CUSTOMER_ID,
groupp.STATE AS groupState,
groupp.GRID_ID,
oper.CUSTOMER_USER_ID AS memberId,
groupoper.UPDATED_TIME AS createdTime,
oper.UPDATED_TIME AS joinDate,
IF(groupp.CREATED_BY = oper.CUSTOMER_USER_ID,'leader','member') AS leaderFlag,
groupp.CREATED_BY AS groupOwnerId,
'join' AS actionCode
FROM
RESI_GROUP groupp
LEFT JOIN
GROUP_MEMEBER_OPERATION oper
ON groupp.ID = oper.GROUP_ID AND oper.DEL_FLAG = '0'
AND oper.OPERATE_STATUS = 'approved'
LEFT JOIN
RESI_GROUP_OPERATION groupoper
ON groupp.ID = groupoper.RESI_GROUP_ID AND groupoper.DEL_FLAG = '0' AND groupoper.STATE = 'approved'
WHERE
groupp.DEL_FLAG = '0'
AND
groupp.CUSTOMER_ID = #{customerId}
AND
groupp.STATE = 'approved'
<if test='null != dateId and "" != dateId'>
AND(
DATE_FORMAT(groupoper.UPDATED_TIME, '%Y%m%d') = #{dateId}
OR
DATE_FORMAT(oper.UPDATED_TIME, '%Y%m%d') = #{dateId}
)
</if>
</select>
</mapper>

11
epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/project/ProjectProcessDao.xml

@ -90,11 +90,14 @@
staff.ORG_ID,
staff.DEPARTMENT_ID,
staff.GRID_ID,
staff.CREATED_BY AS staffId,
staff.ORG_ID_PATH,
IF(staff.IS_HANDLE='handle',timestampdiff(MINUTE , staff.CREATED_TIME , staff.UPDATED_TIME),0) AS TOTAL_PERIOD,
staff.CREATED_TIME AS informedDate,
-- 转入时间
IF(staff.IS_HANDLE='handle',staff.UPDATED_TIME,null) AS handledDate
IF(staff.IS_HANDLE='handle','resolved','unresolved') AS isResolved,
IF(staff.IS_HANDLE='handle',staff.UPDATED_TIME,null) AS handledDate,
IF(staff.IS_HANDLE='handle',staff.UPDATED_TIME,null) AS periodTillReplyFirstly
FROM PROJECT_STAFF staff
LEFT JOIN PROJECT project ON staff.PROJECT_ID = project.ID AND project.DEL_FLAG = '0'
@ -102,7 +105,7 @@
LEFT JOIN PROJECT_PROCESS selfAction ON staff.PROJECT_ID = selfAction.PROJECT_ID AND selfAction.DEL_FLAG = '0' AND staff.UPDATED_TIME = selfAction.CREATED_TIME AND staff.STAFF_ID = selfAction.STAFF_ID
WHERE staff.DEL_FLAG = '0'
AND project.CUSTOMER_ID = #{customerId}
<!-- 如果不传projectStatus则默认查全部 -->
<if test='null != projectStatus and "" != projectStatus'>
AND project.STATUS = #{projectStatus}
</if>
@ -114,7 +117,7 @@
)
</if>
AND process.OPERATION <![CDATA[ <> ]]> 'response'
ORDER BY process.PROJECT_ID,staff.CREATED_TIME ASC -- 按照立项-流转的顺序
ORDER BY process.PROJECT_ID,staff.CREATED_TIME ASC
</select>
<!-- 查询项目-机关各个节点的响应列表 -->

19
epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/stats/DimGridDao.xml

@ -89,4 +89,23 @@
)
</select>
<select id="selectGridAttributes" resultType="com.epmet.dto.stats.result.GridAttributesResultDTO">
SELECT
dg.id AS gridId,
dg.AGENCY_ID AS agencyId,
da.PID AS parentId,
da.PIDS
FROM
dim_grid dg
LEFT JOIN dim_agency da ON da.id = dg.agency_id
WHERE
dg.DEL_FLAG = '0'
AND da.DEL_FLAG = '0'
AND
(
<foreach collection="gridIds" item="gridId" separator=" OR ">
dg.id = #{gridId}
</foreach>
)
</select>
</mapper>

33
epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/user/UserDao.xml

@ -424,4 +424,37 @@
</foreach>
)
</select>
<select id="selectPartymembersByCustomerId" resultType="string">
SELECT
DISTINCT
role.USER_ID
FROM
USER_ROLE role
LEFT JOIN EPMET_ROLE rolename
ON role.ROLE_ID = rolename.ID AND rolename.DEL_FLAG = '0'
WHERE
role.DEL_FLAG = '0'
AND
role.CUSTOMER_ID = #{customerId}
AND
rolename.ROLE_KEY = 'partymember'
</select>
<select id="selectWarmHeartedByCustomerId" resultType="com.epmet.dto.extract.form.GridHeartedFormDTO">
SELECT
DISTINCT
role.USER_ID,
role.GRID_ID
FROM
USER_ROLE role
LEFT JOIN EPMET_ROLE rolename
ON role.ROLE_ID = rolename.ID AND rolename.DEL_FLAG = '0'
WHERE
role.DEL_FLAG = '0'
AND
role.CUSTOMER_ID = #{customerId}
AND
rolename.ROLE_KEY = 'warmhearted'
</select>
</mapper>

Loading…
Cancel
Save