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. 130
      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 * @param
* @author zxc * @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 查询机关下网格内的小组人数 待优化 * @Description 查询机关下网格内的小组人数 待优化
* @param * @param
* @author zxc * @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 查询机关下每个小组的人数 待优化 * @Description 查询机关下每个小组的人数 待优化
* @param * @param
* @author zxc * @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 查询机关下的小组日增数 待优化 * @Description 查询机关下的小组日增数 待优化
@ -72,7 +72,7 @@ public interface GroupDataDao {
* @param dateId * @param dateId
* @author zxc * @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 查询机关下所有网格小组人数 * @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 * @param
* @author zxc * @author zxc
*/ */
public List<AgencyGroupTotalCountResultDTO> getAgencyGroupTotalCount(List<String> allGrid,String dateId){ public List<AgencyGroupTotalCountResultDTO> getAgencyGroupTotalCount(String customerId,String dateId){
if (allGrid.size() == NumConstant.ZERO){ /*if (allGrid.size() == NumConstant.ZERO){
return new ArrayList<>(); return new ArrayList<>();
} }*/
return groupDataDao.getAgencyGroupTotalCount(allGrid,dateId); return groupDataDao.getAgencyGroupTotalCount(customerId,dateId);
} }
/** /**
@ -146,11 +146,11 @@ public class GroupDataServiceImpl implements GroupDataService {
* @author zxc * @author zxc
*/ */
@Override @Override
public List<AgencyGridGroupPeopleTotalResultDTO> selectAgencyGridGroupPeopleTotal(List<String> allGrid,String dateId) { public List<AgencyGridGroupPeopleTotalResultDTO> selectAgencyGridGroupPeopleTotal(String customerId,String dateId) {
if (allGrid.size() == NumConstant.ZERO){ /*if (allGrid.size() == NumConstant.ZERO){
return new ArrayList<>(); return new ArrayList<>();
} }*/
return groupDataDao.selectAgencyGridGroupPeopleTotal(allGrid,dateId); return groupDataDao.selectAgencyGridGroupPeopleTotal(customerId,dateId);
} }
/** /**
@ -158,11 +158,11 @@ public class GroupDataServiceImpl implements GroupDataService {
* @param * @param
* @author zxc * @author zxc
*/ */
public List<AgencyGridGroupPeopleResultDTO> selectAgencyEveryGroupPeopleCount(List<String> allGrid,String dateId){ public List<AgencyGridGroupPeopleResultDTO> selectAgencyEveryGroupPeopleCount(String customerId,String dateId){
if (allGrid.size() == NumConstant.ZERO){ /*if (allGrid.size() == NumConstant.ZERO){
return new ArrayList<>(); return new ArrayList<>();
} }*/
return groupDataDao.selectAgencyEveryGroupPeopleCount(allGrid,dateId); return groupDataDao.selectAgencyEveryGroupPeopleCount(customerId,dateId);
} }
/** /**
@ -171,11 +171,11 @@ public class GroupDataServiceImpl implements GroupDataService {
* @param dateId * @param dateId
* @author zxc * @author zxc
*/ */
public List<AgencyGroupIncrResultDTO> selectAgencyGroupIncr(List<String> allGrid,String dateId){ public List<AgencyGroupIncrResultDTO> selectAgencyGroupIncr(String customerId,String dateId){
if (allGrid.size() == NumConstant.ZERO){ /*if (allGrid.size() == NumConstant.ZERO){
return new ArrayList<>(); return new ArrayList<>();
} }*/
return groupDataDao.selectAgencyGroupIncr(allGrid, dateId); return groupDataDao.selectAgencyGroupIncr(customerId, dateId);
} }
/** /**

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

@ -151,58 +151,92 @@ public class StatsGroupServiceImpl implements StatsGroupService {
BeanUtils.copyProperties(timeDim,agencyResult); BeanUtils.copyProperties(timeDim,agencyResult);
//机关下的所有网格(包括直属网格) //机关下的所有网格(包括直属网格)
List<String> allGrid = this.getAllGrid(agencyId,customerId); List<String> allGrid = this.getAllGrid(agencyId,customerId);
String pidByAgencyId = dimAgencyService.getPidByAgencyId(agencyId); if (allGrid.size() != NumConstant.ZERO) {
agencyResult.setPid(StringUtils.isBlank(pidByAgencyId)?"0":pidByAgencyId); String pidByAgencyId = dimAgencyService.getPidByAgencyId(agencyId);
// 1. 机关下有多少网格 agencyResult.setPid(StringUtils.isBlank(pidByAgencyId) ? "0" : pidByAgencyId);
List<GridIdListByCustomerResultDTO> customerGridIdList = customerGridService.getCustomerGridIdList(customerId, dateId); // 1. 机关下有多少网格
AtomicReference<Integer> gridSize = new AtomicReference<>(0); List<GridIdListByCustomerResultDTO> customerGridIdList = customerGridService.getCustomerGridIdList(customerId, dateId);
if (customerGridIdList.size() != NumConstant.ZERO){ AtomicReference<Integer> gridSize = new AtomicReference<>(0);
customerGridIdList.forEach(gridId -> { if (customerGridIdList.size() != NumConstant.ZERO) {
allGrid.forEach(allAgencyGrid -> { customerGridIdList.forEach(gridId -> {
if (gridId.getGridId().equals(allAgencyGrid)){ allGrid.forEach(allAgencyGrid -> {
gridSize.updateAndGet(v -> v + NumConstant.ONE); if (gridId.getGridId().equals(allAgencyGrid)) {
gridSize.updateAndGet(v -> v + NumConstant.ONE);
}
});
});
agencyResult.setGridTotal(gridSize.get());
} else {
agencyResult.setGridTotal(NumConstant.ZERO);
}
// 2. 机关下有多少小组,只算 state = ‘approved’
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);
} }
}); });
}); });
agencyResult.setGridTotal(gridSize.get()); Integer groupCount = approvedResult.stream().collect(Collectors.summingInt(AgencyGroupTotalCountResultDTO::getGridGroupCount));
}else { agencyResult.setGroupTotalCount(groupCount);
agencyResult.setGridTotal(NumConstant.ZERO); // 3. 机关下所有组内人数和(不需要去重) 人员状态 != "removed"
} List<AgencyGridGroupPeopleTotalResultDTO> peopleTotal = new ArrayList<>();
// 2. 机关下有多少小组,只算 state = ‘approved’ List<AgencyGridGroupPeopleTotalResultDTO> agencyGridGroupPeopleTotal = groupDataService.selectAgencyGridGroupPeopleTotal(customerId, dateId);
List<AgencyGroupTotalCountResultDTO> agencyGroupTotalCount = groupDataService.getAgencyGroupTotalCount(allGrid,dateId); allGrid.forEach(grid -> {
Integer groupCount = agencyGroupTotalCount.stream().collect(Collectors.summingInt(AgencyGroupTotalCountResultDTO::getGridGroupCount)); agencyGridGroupPeopleTotal.forEach(people -> {
agencyResult.setGroupTotalCount(groupCount); if (grid.equals(people.getGridId())) {
// 3. 机关下所有组内人数和(不需要去重) 人员状态 != "removed" peopleTotal.add(people);
List<AgencyGridGroupPeopleTotalResultDTO> agencyGridGroupPeopleTotal = groupDataService.selectAgencyGridGroupPeopleTotal(allGrid,dateId); }
Integer groupPeopleCount = agencyGridGroupPeopleTotal.stream().collect(Collectors.summingInt(AgencyGridGroupPeopleTotalResultDTO::getGridGroupPeopleTotal)); });
agencyResult.setGroupMemberTotalCount(groupPeopleCount); });
// 4. 机关下小组平均人数 Integer groupPeopleCount = peopleTotal.stream().collect(Collectors.summingInt(AgencyGridGroupPeopleTotalResultDTO::getGridGroupPeopleTotal));
agencyResult.setGroupMemberAvgCount( agencyResult.setGroupMemberTotalCount(groupPeopleCount);
agencyResult.getGroupTotalCount() == NumConstant.ZERO ? NumConstant.ZERO : // 4. 机关下小组平均人数
agencyResult.getGroupMemberTotalCount()/agencyResult.getGroupTotalCount()); agencyResult.setGroupMemberAvgCount(
// 5. 机关下小组人数中位数 小组最大(小)成员数、最多(少)成员小组ID agencyResult.getGroupTotalCount() == NumConstant.ZERO ? NumConstant.ZERO :
List<AgencyGridGroupPeopleResultDTO> agencyGridGroupPeople = groupDataService.selectAgencyEveryGroupPeopleCount(allGrid,dateId); agencyResult.getGroupMemberTotalCount() / agencyResult.getGroupTotalCount());
List<AgencyGridGroupPeopleResultDTO> sorted = agencyGridGroupPeople.stream().sorted(Comparator.comparing(AgencyGridGroupPeopleResultDTO::getGroupCount).reversed()).collect(Collectors.toList()); // 5. 机关下小组人数中位数 小组最大(小)成员数、最多(少)成员小组ID
Integer groupPeopleMedian; List<AgencyGridGroupPeopleResultDTO> groupPeople = new ArrayList<>();
if (sorted.size() == NumConstant.ONE){ List<AgencyGridGroupPeopleResultDTO> agencyGridGroupPeople = groupDataService.selectAgencyEveryGroupPeopleCount(customerId, dateId);
agencyResult.setGroupMemberMaxCount(sorted.get(NumConstant.ZERO).getGroupCount()); allGrid.forEach(grid -> {
agencyResult.setMaxMemberGroupId(sorted.get(NumConstant.ZERO).getGroupId()); agencyGridGroupPeople.forEach(group -> {
agencyResult.setGroupMemberMinCount(sorted.get(NumConstant.ZERO).getGroupCount()); if (grid.equals(group.getGridId())) {
agencyResult.setMinMemberGroupId(sorted.get(NumConstant.ZERO).getGroupId()); groupPeople.add(group);
}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(); List<AgencyGridGroupPeopleResultDTO> sorted = groupPeople.stream().sorted(Comparator.comparing(AgencyGridGroupPeopleResultDTO::getGroupCount).reversed()).collect(Collectors.toList());
agencyResult.setGroupMedian(groupPeopleMedian); Integer groupPeopleMedian;
agencyResult.setGroupMemberMaxCount(sorted.get(NumConstant.ZERO).getGroupCount()); if (sorted.size() == NumConstant.ONE) {
agencyResult.setMaxMemberGroupId(sorted.get(NumConstant.ZERO).getGroupId()); agencyResult.setGroupMemberMaxCount(sorted.get(NumConstant.ZERO).getGroupCount());
agencyResult.setGroupMemberMinCount(sorted.get(sorted.size() - NumConstant.ONE).getGroupCount()); agencyResult.setMaxMemberGroupId(sorted.get(NumConstant.ZERO).getGroupId());
agencyResult.setMinMemberGroupId(sorted.get(sorted.size() - NumConstant.ONE).getGroupId()); agencyResult.setGroupMemberMinCount(sorted.get(NumConstant.ZERO).getGroupCount());
agencyResult.setMinMemberGroupId(sorted.get(NumConstant.ZERO).getGroupId());
} 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();
agencyResult.setGroupMedian(groupPeopleMedian);
agencyResult.setGroupMemberMaxCount(sorted.get(NumConstant.ZERO).getGroupCount());
agencyResult.setMaxMemberGroupId(sorted.get(NumConstant.ZERO).getGroupId());
agencyResult.setGroupMemberMinCount(sorted.get(sorted.size() - NumConstant.ONE).getGroupCount());
agencyResult.setMinMemberGroupId(sorted.get(sorted.size() - NumConstant.ONE).getGroupId());
}
// 6. 机关下小组增量
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);
} }
// 6. 机关下小组增量
List<AgencyGroupIncrResultDTO> agencyGroupIncr = groupDataService.selectAgencyGroupIncr(allGrid, dateId);
Integer groupIncr = agencyGroupIncr.stream().collect(Collectors.summingInt(AgencyGroupIncrResultDTO::getGroupIncr));
agencyResult.setGroupIncr(groupIncr);
result.add(agencyResult); result.add(agencyResult);
}); });
return result; 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"> <select id="getAgencyGroupTotalCount" resultType="com.epmet.dto.group.result.AgencyGroupTotalCountResultDTO">
<foreach collection="allGrid" item="grid" separator=" UNION ALL ">
SELECT SELECT
grid_id AS gridId, grid_id AS gridId,
COUNT(*) AS gridGroupCount COUNT(*) AS gridGroupCount
@ -82,16 +81,14 @@
WHERE WHERE
DEL_FLAG = 0 DEL_FLAG = 0
AND state = 'approved' AND state = 'approved'
AND grid_id = #{grid} AND customer_id = #{customerId}
AND DATE_FORMAT(created_time,'%Y%m%d') <![CDATA[ <= ]]> #{dateId} AND DATE_FORMAT(created_time,'%Y%m%d') <![CDATA[ <= ]]> #{dateId}
GROUP BY GROUP BY
grid_id grid_id
</foreach>
</select> </select>
<!-- 查询机关下的网格内小组成员总数 , 人员状态不为 “removed” --> <!-- 查询机关下的网格内小组成员总数 , 人员状态不为 “removed” -->
<select id="selectAgencyGridGroupPeopleTotal" resultType="com.epmet.dto.group.result.AgencyGridGroupPeopleTotalResultDTO"> <select id="selectAgencyGridGroupPeopleTotal" resultType="com.epmet.dto.group.result.AgencyGridGroupPeopleTotalResultDTO">
<foreach collection="allGrid" item="grid" separator=" UNION ALL ">
SELECT SELECT
rg.grid_id AS gridId, rg.grid_id AS gridId,
COUNT(rgm.id) AS gridGroupPeopleTotal COUNT(rgm.id) AS gridGroupPeopleTotal
@ -101,16 +98,14 @@
WHERE WHERE
rg.DEL_FLAG = 0 rg.DEL_FLAG = 0
AND rg.state = 'approved' AND rg.state = 'approved'
AND rg.grid_id = #{grid} AND rg.customer_id = #{customerId}
AND rgm.status != 'removed' AND rgm.status != 'removed'
AND DATE_FORMAT(rgm.created_time,'%Y%m%d') <![CDATA[ <= ]]> #{dateId} AND DATE_FORMAT(rgm.created_time,'%Y%m%d') <![CDATA[ <= ]]> #{dateId}
GROUP BY rg.grid_id GROUP BY rg.grid_id
</foreach>
</select> </select>
<!-- 查询机关下每个小组的人数 --> <!-- 查询机关下每个小组的人数 -->
<select id="selectAgencyEveryGroupPeopleCount" resultType="com.epmet.dto.group.result.AgencyGridGroupPeopleResultDTO"> <select id="selectAgencyEveryGroupPeopleCount" resultType="com.epmet.dto.group.result.AgencyGridGroupPeopleResultDTO">
<foreach collection="allGrid" item="grid" separator=" UNION ALL ">
SELECT SELECT
rg.grid_id AS gridId, rg.grid_id AS gridId,
rg.id AS groupId, rg.id AS groupId,
@ -121,17 +116,15 @@
WHERE WHERE
rg.DEL_FLAG = 0 rg.DEL_FLAG = 0
AND rg.state = 'approved' AND rg.state = 'approved'
AND rg.grid_id = #{grid} AND rg.customer_id = #{customerId}
AND rgm.STATUS != 'removed' AND rgm.STATUS != 'removed'
AND DATE_FORMAT(rgm.created_time,'%Y%m%d') <![CDATA[ <= ]]> #{dateId} AND DATE_FORMAT(rgm.created_time,'%Y%m%d') <![CDATA[ <= ]]> #{dateId}
GROUP BY GROUP BY
rgm.resi_group_id rgm.resi_group_id
</foreach>
</select> </select>
<!-- 查询机关下的小组日增数 --> <!-- 查询机关下的小组日增数 -->
<select id="selectAgencyGroupIncr" resultType="com.epmet.dto.group.result.AgencyGroupIncrResultDTO"> <select id="selectAgencyGroupIncr" resultType="com.epmet.dto.group.result.AgencyGroupIncrResultDTO">
<foreach collection="allGrid" item="grid" separator=" UNION ALL ">
SELECT SELECT
COUNT(*) AS groupIncr, COUNT(*) AS groupIncr,
grid_id AS gridId grid_id AS gridId
@ -139,11 +132,10 @@
resi_group resi_group
WHERE WHERE
state = 'approved' state = 'approved'
AND grid_id = #{grid} AND customer_id = #{customerId}
AND DATE_FORMAT( CREATED_TIME, '%Y%m%d' ) = #{dateId} AND DATE_FORMAT( CREATED_TIME, '%Y%m%d' ) = #{dateId}
GROUP BY GROUP BY
grid_id grid_id
</foreach>
</select> </select>
<select id="getAgencyGrid" resultType="com.epmet.dto.group.result.GroupPeopleCountResultDTO"> <select id="getAgencyGrid" resultType="com.epmet.dto.group.result.GroupPeopleCountResultDTO">

Loading…
Cancel
Save