Browse Source

数据统计修改

dev_shibei_match
zxc 5 years ago
parent
commit
1c4798d086
  1. 8
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/group/GroupDataDao.java
  2. 32
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/group/impl/GroupDataServiceImpl.java
  3. 66
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/impl/StatsGroupServiceImpl.java
  4. 16
      epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/group/GroupDataDao.xml

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

@ -50,21 +50,21 @@ public interface GroupDataDao {
* @param
* @author zxc
*/
List<AgencyGroupTotalCountResultDTO> getAgencyGroupTotalCount(@Param("allGrid") List<String> allGrid,@Param("dateId")String dateId);
List<AgencyGroupTotalCountResultDTO> getAgencyGroupTotalCount(@Param("customerId") String customerId,@Param("dateId")String dateId);
/**
* @Description 查询机关下网格内的小组人数 待优化
* @param
* @author zxc
*/
List<AgencyGridGroupPeopleTotalResultDTO> selectAgencyGridGroupPeopleTotal(@Param("allGrid") List<String> allGrid,@Param("dateId")String dateId);
List<AgencyGridGroupPeopleTotalResultDTO> selectAgencyGridGroupPeopleTotal(@Param("customerId") String customerId,@Param("dateId")String dateId);
/**
* @Description 查询机关下每个小组的人数 待优化
* @param
* @author zxc
*/
List<AgencyGridGroupPeopleResultDTO> selectAgencyEveryGroupPeopleCount(@Param("allGrid") List<String> allGrid,@Param("dateId")String dateId);
List<AgencyGridGroupPeopleResultDTO> selectAgencyEveryGroupPeopleCount(@Param("customerId") String customerId,@Param("dateId")String dateId);
/**
* @Description 查询机关下的小组日增数 待优化
@ -72,7 +72,7 @@ public interface GroupDataDao {
* @param dateId
* @author zxc
*/
List<AgencyGroupIncrResultDTO> selectAgencyGroupIncr(@Param("allGrid") List<String> allGrid,@Param("dateId")String dateId);
List<AgencyGroupIncrResultDTO> selectAgencyGroupIncr(@Param("customerId") String customerId,@Param("dateId")String dateId);
/**
* @Description 查询机关下所有网格小组人数

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

@ -133,11 +133,11 @@ public class GroupDataServiceImpl implements GroupDataService {
* @param
* @author zxc
*/
public List<AgencyGroupTotalCountResultDTO> getAgencyGroupTotalCount(List<String> allGrid,String dateId){
if (allGrid.size() == NumConstant.ZERO){
public List<AgencyGroupTotalCountResultDTO> getAgencyGroupTotalCount(String customerId,String dateId){
/*if (allGrid.size() == NumConstant.ZERO){
return new ArrayList<>();
}
return groupDataDao.getAgencyGroupTotalCount(allGrid,dateId);
}*/
return groupDataDao.getAgencyGroupTotalCount(customerId,dateId);
}
/**
@ -146,11 +146,11 @@ public class GroupDataServiceImpl implements GroupDataService {
* @author zxc
*/
@Override
public List<AgencyGridGroupPeopleTotalResultDTO> selectAgencyGridGroupPeopleTotal(List<String> allGrid,String dateId) {
if (allGrid.size() == NumConstant.ZERO){
public List<AgencyGridGroupPeopleTotalResultDTO> selectAgencyGridGroupPeopleTotal(String customerId,String dateId) {
/*if (allGrid.size() == NumConstant.ZERO){
return new ArrayList<>();
}
return groupDataDao.selectAgencyGridGroupPeopleTotal(allGrid,dateId);
}*/
return groupDataDao.selectAgencyGridGroupPeopleTotal(customerId,dateId);
}
/**
@ -158,11 +158,11 @@ public class GroupDataServiceImpl implements GroupDataService {
* @param
* @author zxc
*/
public List<AgencyGridGroupPeopleResultDTO> selectAgencyEveryGroupPeopleCount(List<String> allGrid,String dateId){
if (allGrid.size() == NumConstant.ZERO){
public List<AgencyGridGroupPeopleResultDTO> selectAgencyEveryGroupPeopleCount(String customerId,String dateId){
/*if (allGrid.size() == NumConstant.ZERO){
return new ArrayList<>();
}
return groupDataDao.selectAgencyEveryGroupPeopleCount(allGrid,dateId);
}*/
return groupDataDao.selectAgencyEveryGroupPeopleCount(customerId,dateId);
}
/**
@ -171,11 +171,11 @@ public class GroupDataServiceImpl implements GroupDataService {
* @param dateId
* @author zxc
*/
public List<AgencyGroupIncrResultDTO> selectAgencyGroupIncr(List<String> allGrid,String dateId){
if (allGrid.size() == NumConstant.ZERO){
public List<AgencyGroupIncrResultDTO> selectAgencyGroupIncr(String customerId,String dateId){
/*if (allGrid.size() == NumConstant.ZERO){
return new ArrayList<>();
}
return groupDataDao.selectAgencyGroupIncr(allGrid, dateId);
}*/
return groupDataDao.selectAgencyGroupIncr(customerId, dateId);
}
/**

66
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/impl/StatsGroupServiceImpl.java

@ -151,45 +151,70 @@ public class StatsGroupServiceImpl implements StatsGroupService {
BeanUtils.copyProperties(timeDim,agencyResult);
//机关下的所有网格(包括直属网格)
List<String> allGrid = this.getAllGrid(agencyId,customerId);
if (allGrid.size() != NumConstant.ZERO) {
String pidByAgencyId = dimAgencyService.getPidByAgencyId(agencyId);
agencyResult.setPid(StringUtils.isBlank(pidByAgencyId)?"0":pidByAgencyId);
agencyResult.setPid(StringUtils.isBlank(pidByAgencyId) ? "0" : pidByAgencyId);
// 1. 机关下有多少网格
List<GridIdListByCustomerResultDTO> customerGridIdList = customerGridService.getCustomerGridIdList(customerId, dateId);
AtomicReference<Integer> gridSize = new AtomicReference<>(0);
if (customerGridIdList.size() != NumConstant.ZERO){
if (customerGridIdList.size() != NumConstant.ZERO) {
customerGridIdList.forEach(gridId -> {
allGrid.forEach(allAgencyGrid -> {
if (gridId.getGridId().equals(allAgencyGrid)){
if (gridId.getGridId().equals(allAgencyGrid)) {
gridSize.updateAndGet(v -> v + NumConstant.ONE);
}
});
});
agencyResult.setGridTotal(gridSize.get());
}else {
} else {
agencyResult.setGridTotal(NumConstant.ZERO);
}
// 2. 机关下有多少小组,只算 state = ‘approved’
List<AgencyGroupTotalCountResultDTO> agencyGroupTotalCount = groupDataService.getAgencyGroupTotalCount(allGrid,dateId);
Integer groupCount = agencyGroupTotalCount.stream().collect(Collectors.summingInt(AgencyGroupTotalCountResultDTO::getGridGroupCount));
List<AgencyGroupTotalCountResultDTO> approvedResult = new ArrayList<>();
List<AgencyGroupTotalCountResultDTO> agencyGroupTotalCount = groupDataService.getAgencyGroupTotalCount(customerId, dateId);
allGrid.forEach(grid -> {
agencyGroupTotalCount.forEach(groupTotal -> {
if (grid.equals(groupTotal.getGridId())) {
approvedResult.add(groupTotal);
}
});
});
Integer groupCount = approvedResult.stream().collect(Collectors.summingInt(AgencyGroupTotalCountResultDTO::getGridGroupCount));
agencyResult.setGroupTotalCount(groupCount);
// 3. 机关下所有组内人数和(不需要去重) 人员状态 != "removed"
List<AgencyGridGroupPeopleTotalResultDTO> agencyGridGroupPeopleTotal = groupDataService.selectAgencyGridGroupPeopleTotal(allGrid,dateId);
Integer groupPeopleCount = agencyGridGroupPeopleTotal.stream().collect(Collectors.summingInt(AgencyGridGroupPeopleTotalResultDTO::getGridGroupPeopleTotal));
List<AgencyGridGroupPeopleTotalResultDTO> peopleTotal = new ArrayList<>();
List<AgencyGridGroupPeopleTotalResultDTO> agencyGridGroupPeopleTotal = groupDataService.selectAgencyGridGroupPeopleTotal(customerId, dateId);
allGrid.forEach(grid -> {
agencyGridGroupPeopleTotal.forEach(people -> {
if (grid.equals(people.getGridId())) {
peopleTotal.add(people);
}
});
});
Integer groupPeopleCount = peopleTotal.stream().collect(Collectors.summingInt(AgencyGridGroupPeopleTotalResultDTO::getGridGroupPeopleTotal));
agencyResult.setGroupMemberTotalCount(groupPeopleCount);
// 4. 机关下小组平均人数
agencyResult.setGroupMemberAvgCount(
agencyResult.getGroupTotalCount() == NumConstant.ZERO ? NumConstant.ZERO :
agencyResult.getGroupMemberTotalCount()/agencyResult.getGroupTotalCount());
agencyResult.getGroupMemberTotalCount() / agencyResult.getGroupTotalCount());
// 5. 机关下小组人数中位数 小组最大(小)成员数、最多(少)成员小组ID
List<AgencyGridGroupPeopleResultDTO> agencyGridGroupPeople = groupDataService.selectAgencyEveryGroupPeopleCount(allGrid,dateId);
List<AgencyGridGroupPeopleResultDTO> sorted = agencyGridGroupPeople.stream().sorted(Comparator.comparing(AgencyGridGroupPeopleResultDTO::getGroupCount).reversed()).collect(Collectors.toList());
List<AgencyGridGroupPeopleResultDTO> groupPeople = new ArrayList<>();
List<AgencyGridGroupPeopleResultDTO> agencyGridGroupPeople = groupDataService.selectAgencyEveryGroupPeopleCount(customerId, dateId);
allGrid.forEach(grid -> {
agencyGridGroupPeople.forEach(group -> {
if (grid.equals(group.getGridId())) {
groupPeople.add(group);
}
});
});
List<AgencyGridGroupPeopleResultDTO> sorted = groupPeople.stream().sorted(Comparator.comparing(AgencyGridGroupPeopleResultDTO::getGroupCount).reversed()).collect(Collectors.toList());
Integer groupPeopleMedian;
if (sorted.size() == NumConstant.ONE){
if (sorted.size() == NumConstant.ONE) {
agencyResult.setGroupMemberMaxCount(sorted.get(NumConstant.ZERO).getGroupCount());
agencyResult.setMaxMemberGroupId(sorted.get(NumConstant.ZERO).getGroupId());
agencyResult.setGroupMemberMinCount(sorted.get(NumConstant.ZERO).getGroupCount());
agencyResult.setMinMemberGroupId(sorted.get(NumConstant.ZERO).getGroupId());
}else if (sorted.size() >= NumConstant.TWO){
} else if (sorted.size() >= NumConstant.TWO) {
groupPeopleMedian = sorted.size() % NumConstant.TWO == NumConstant.ZERO ?
(sorted.get(sorted.size() / NumConstant.TWO - NumConstant.ONE).getGroupCount() + sorted.get(sorted.size() / 2).getGroupCount()) / 2 :
sorted.get(sorted.size() / NumConstant.TWO).getGroupCount();
@ -200,9 +225,18 @@ public class StatsGroupServiceImpl implements StatsGroupService {
agencyResult.setMinMemberGroupId(sorted.get(sorted.size() - NumConstant.ONE).getGroupId());
}
// 6. 机关下小组增量
List<AgencyGroupIncrResultDTO> agencyGroupIncr = groupDataService.selectAgencyGroupIncr(allGrid, dateId);
Integer groupIncr = agencyGroupIncr.stream().collect(Collectors.summingInt(AgencyGroupIncrResultDTO::getGroupIncr));
agencyResult.setGroupIncr(groupIncr);
List<AgencyGroupIncrResultDTO> groupIncr = new ArrayList<>();
List<AgencyGroupIncrResultDTO> agencyGroupIncr = groupDataService.selectAgencyGroupIncr(customerId, dateId);
allGrid.forEach(grid -> {
agencyGroupIncr.forEach(incr -> {
if (grid.equals(incr.getGridId())) {
groupIncr.add(incr);
}
});
});
Integer groupIncrCount = groupIncr.stream().collect(Collectors.summingInt(AgencyGroupIncrResultDTO::getGroupIncr));
agencyResult.setGroupIncr(groupIncrCount);
}
result.add(agencyResult);
});
return result;

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

@ -73,7 +73,6 @@
<!-- 机关下——所有网格内的小组数量 -->
<select id="getAgencyGroupTotalCount" resultType="com.epmet.dto.group.result.AgencyGroupTotalCountResultDTO">
<foreach collection="allGrid" item="grid" separator=" UNION ALL ">
SELECT
grid_id AS gridId,
COUNT(*) AS gridGroupCount
@ -82,16 +81,14 @@
WHERE
DEL_FLAG = 0
AND state = 'approved'
AND grid_id = #{grid}
AND customer_id = #{customerId}
AND DATE_FORMAT(created_time,'%Y%m%d') <![CDATA[ <= ]]> #{dateId}
GROUP BY
grid_id
</foreach>
</select>
<!-- 查询机关下的网格内小组成员总数 , 人员状态不为 “removed” -->
<select id="selectAgencyGridGroupPeopleTotal" resultType="com.epmet.dto.group.result.AgencyGridGroupPeopleTotalResultDTO">
<foreach collection="allGrid" item="grid" separator=" UNION ALL ">
SELECT
rg.grid_id AS gridId,
COUNT(rgm.id) AS gridGroupPeopleTotal
@ -101,16 +98,14 @@
WHERE
rg.DEL_FLAG = 0
AND rg.state = 'approved'
AND rg.grid_id = #{grid}
AND rg.customer_id = #{customerId}
AND rgm.status != 'removed'
AND DATE_FORMAT(rgm.created_time,'%Y%m%d') <![CDATA[ <= ]]> #{dateId}
GROUP BY rg.grid_id
</foreach>
</select>
<!-- 查询机关下每个小组的人数 -->
<select id="selectAgencyEveryGroupPeopleCount" resultType="com.epmet.dto.group.result.AgencyGridGroupPeopleResultDTO">
<foreach collection="allGrid" item="grid" separator=" UNION ALL ">
SELECT
rg.grid_id AS gridId,
rg.id AS groupId,
@ -121,17 +116,15 @@
WHERE
rg.DEL_FLAG = 0
AND rg.state = 'approved'
AND rg.grid_id = #{grid}
AND rg.customer_id = #{customerId}
AND rgm.STATUS != 'removed'
AND DATE_FORMAT(rgm.created_time,'%Y%m%d') <![CDATA[ <= ]]> #{dateId}
GROUP BY
rgm.resi_group_id
</foreach>
</select>
<!-- 查询机关下的小组日增数 -->
<select id="selectAgencyGroupIncr" resultType="com.epmet.dto.group.result.AgencyGroupIncrResultDTO">
<foreach collection="allGrid" item="grid" separator=" UNION ALL ">
SELECT
COUNT(*) AS groupIncr,
grid_id AS gridId
@ -139,11 +132,10 @@
resi_group
WHERE
state = 'approved'
AND grid_id = #{grid}
AND customer_id = #{customerId}
AND DATE_FORMAT( CREATED_TIME, '%Y%m%d' ) = #{dateId}
GROUP BY
grid_id
</foreach>
</select>
<select id="getAgencyGrid" resultType="com.epmet.dto.group.result.GroupPeopleCountResultDTO">

Loading…
Cancel
Save