Browse Source

运营情况导出例行工作次数

dev
jianjun 4 years ago
parent
commit
01bfc2a224
  1. 4
      epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/datastats/result/CustomerDataManageResultDTO.java
  2. 9
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/epmetuser/StatsStaffPatrolRecordDailyDao.java
  3. 3
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/excel/CustomerDataManageExcel.java
  4. 43
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/datastats/impl/DataStatsServiceImpl.java
  5. 10
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmetuser/StatsStaffPatrolRecordDailyService.java
  6. 5
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmetuser/impl/StatsStaffPatrolRecordDailyServiceImpl.java
  7. 37
      epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/epmetuser/StatsStaffPatrolRecordDailyDao.xml

4
epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/datastats/result/CustomerDataManageResultDTO.java

@ -44,6 +44,10 @@ public class CustomerDataManageResultDTO {
private Integer patrolCount = 0;
//巡查时长
private String patrolDuration;
/**
* 例行工作次数
*/
private Integer patrolRoutineWorkTimes = 0;
//未转换前的巡查时长
private Integer patrolDurationInteger = 0;
//数据对应dateId

9
epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/epmetuser/StatsStaffPatrolRecordDailyDao.java

@ -40,6 +40,7 @@ public interface StatsStaffPatrolRecordDailyDao extends BaseDao<StatsStaffPatrol
/**
* desc:获取巡查次数和时间
*
* @param orgIdList
* @param startDateId
* @param endDateId
@ -55,6 +56,7 @@ public interface StatsStaffPatrolRecordDailyDao extends BaseDao<StatsStaffPatrol
/**
* 工作人员巡查记录按日统计查询
*
* @param userIds
* @param startDateID
* @param endDateID
@ -65,4 +67,11 @@ public interface StatsStaffPatrolRecordDailyDao extends BaseDao<StatsStaffPatrol
@Param("userIds") List<String> userIds,
@Param("startDateId") String startDateID,
@Param("endDateID") String endDateID);
/**
* desc: 获取例行工作次数
* @param patrolForm
* @return
*/
List<CustomerDataManageResultDTO.CustomerDataManage> getRoutineWorkCount(CustomerDataManageFormDTO patrolForm);
}

3
epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/excel/CustomerDataManageExcel.java

@ -47,6 +47,9 @@ public class CustomerDataManageExcel {
@Excel(name = "巡查时长")
private String patrolDuration;
@Excel(name = "例行工作次数")
private String patrolRoutineWorkTimes;
/**
* 未转换前的巡查时长
*/

43
epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/datastats/impl/DataStatsServiceImpl.java

@ -1386,7 +1386,7 @@ public class DataStatsServiceImpl implements DataStatsService, ResultDataResolve
return o2.getGroupSelfGovernRatio().compareTo(o1.getGroupSelfGovernRatio());
} else if ("grid".equals(formDTO.getType())) {
return o2.getGridSelfGovernRatio().compareTo(o1.getGridSelfGovernRatio());
} else if ("community".equals(formDTO.getType())) {
} else if (OrgLevelEnum.COMMUNITY.getCode().equals(formDTO.getType())) {
return o2.getCommunityResolvedRatio().compareTo(o1.getCommunityResolvedRatio());
} else if ("department".equals(formDTO.getType())) {
return o2.getDistrictDeptResolvedRatio().compareTo(o1.getDistrictDeptResolvedRatio());
@ -1679,7 +1679,7 @@ public class DataStatsServiceImpl implements DataStatsService, ResultDataResolve
//根据组织级别判断查询直属下级组织或网格数据
//2.直属网格
if ("community".equals(formDTO.getAgencyLevel())) {
if (OrgLevelEnum.COMMUNITY.getCode().equals(formDTO.getAgencyLevel())) {
//2-1.查询组织直属网格列表【网格维度】
List<ScreenCustomerGridDTO> gridList = indexService.getSubGridList(formDTO.getAgencyId());
if (gridList.size() < NumConstant.ONE) {
@ -1755,7 +1755,7 @@ public class DataStatsServiceImpl implements DataStatsService, ResultDataResolve
//根据组织级别判断查询直属下级组织或网格数据
//2.直属网格
if ("community".equals(formDTO.getAgencyLevel())) {
if (OrgLevelEnum.COMMUNITY.getCode().equals(formDTO.getAgencyLevel())) {
//2-1.查询组织直属网格列表【网格维度】
List<ScreenCustomerGridDTO> gridList = indexService.getSubGridList(formDTO.getAgencyId());
if (gridList.size() < NumConstant.ONE) {
@ -1887,6 +1887,7 @@ public class DataStatsServiceImpl implements DataStatsService, ResultDataResolve
c.setProjectCount(result.stream().mapToInt(CustomerDataManageResultDTO.CustomerDataManage::getProjectCount).sum());
c.setClosedProjectCount(result.stream().mapToInt(CustomerDataManageResultDTO.CustomerDataManage::getClosedProjectCount).sum());
c.setPatrolPeopleCount(result.stream().mapToInt(CustomerDataManageResultDTO.CustomerDataManage::getPatrolPeopleCount).sum());
c.setPatrolRoutineWorkTimes(result.stream().mapToInt(CustomerDataManageResultDTO.CustomerDataManage::getPatrolRoutineWorkTimes).sum());
c.setPatrolCount(result.stream().mapToInt(CustomerDataManageResultDTO.CustomerDataManage::getPatrolCount).sum());
c.setPatrolDurationInteger(result.stream().mapToInt(CustomerDataManageResultDTO.CustomerDataManage::getPatrolDurationInteger).sum());
c.setPatrolDuration(getHm(c.getPatrolDurationInteger()));
@ -2000,6 +2001,12 @@ public class DataStatsServiceImpl implements DataStatsService, ResultDataResolve
patrolForm.setStartTime(startTimeForm);
List<CustomerDataManageResultDTO.CustomerDataManage> patrolEnd = statsStaffPatrolRecordDailyService.patrolList(patrolForm);
//获取例行工作次数
List<CustomerDataManageResultDTO.CustomerDataManage> workCountList = statsStaffPatrolRecordDailyService.getPatrolRecordCount(patrolForm);
Map<String, List<CustomerDataManageResultDTO.CustomerDataManage>> workCountMap = null;
if(workCountList != null && workCountList.size() > NumConstant.ZERO && workCountList.get(NumConstant.ZERO) != null){
workCountMap = workCountList.stream().collect(Collectors.groupingBy(CustomerDataManageResultDTO.CustomerDataManage::getOrgId));
}
//NumConstant.FOUR.判断是否需要查询起始日期用户、群组、话题、议题、项目、巡查数据
HashMap<String, CustomerDataManageResultDTO.CustomerDataManage> uStartMap = new HashMap<>();
HashMap<String, CustomerDataManageResultDTO.CustomerDataManage> gStartMap = new HashMap<>();
@ -2021,7 +2028,7 @@ public class DataStatsServiceImpl implements DataStatsService, ResultDataResolve
}
//5.封装数据
agencyGrid.getAgencyGridList().forEach(org -> {
for (ScreenAgencyOrGridListDTO.AgencyGrid org : agencyGrid.getAgencyGridList()) {
CustomerDataManageResultDTO.CustomerDataManage dto = new CustomerDataManageResultDTO.CustomerDataManage();
dto.setOrgId(org.getOrgId());
dto.setOrgName(org.getOrgName());
@ -2074,19 +2081,39 @@ public class DataStatsServiceImpl implements DataStatsService, ResultDataResolve
String patrolDuration = "";
int patrolDurationInteger = NumConstant.ZERO;
HashSet set = new HashSet();
List<CustomerDataManageResultDTO.CustomerDataManage> workCountListTemp;
for (CustomerDataManageResultDTO.CustomerDataManage u : patrolEnd) {
if ("community".equals(agencyGrid.getLevel()) && org.getOrgId().equals(u.getOrgId())) {
if (OrgLevelEnum.COMMUNITY.getCode().equals(agencyGrid.getLevel()) && org.getOrgId().equals(u.getOrgId())) {
patroCount += u.getPatrolCount();
patrolDurationInteger += u.getPatrolDurationInteger();
set.add(u.getStaffId());
}
if (!"community".equals(agencyGrid.getLevel()) && u.getOrgId().contains(org.getOrgId())) {
if (!OrgLevelEnum.COMMUNITY.getCode().equals(agencyGrid.getLevel()) && u.getOrgId().contains(org.getOrgId())) {
patroCount += u.getPatrolCount();
patrolDurationInteger += u.getPatrolDurationInteger();
set.add(u.getStaffId());
}
}
//例行工作次数累加
int patrolRoutineWorkTimes = NumConstant.ZERO;
workCountListTemp = workCountMap.get(org.getOrgId());
if (CollectionUtils.isNotEmpty(workCountListTemp)) {
if (OrgLevelEnum.COMMUNITY.getCode().equals(agencyGrid.getLevel())) {
for (CustomerDataManageResultDTO.CustomerDataManage work : workCountListTemp) {
patrolRoutineWorkTimes += work.getPatrolRoutineWorkTimes();
set.add(work.getStaffId());
}
} else {
if (!OrgLevelEnum.COMMUNITY.getCode().equals(agencyGrid.getLevel())) {
for (CustomerDataManageResultDTO.CustomerDataManage work : workCountListTemp) {
patrolRoutineWorkTimes += work.getPatrolRoutineWorkTimes();
set.add(work.getStaffId());
}
}
}
}
patro = set.size();
Integer minutes = patrolDurationInteger / 60;
patrolDuration = (minutes / 60 > NumConstant.ZERO ? minutes / 60 + "小时" : "") + (minutes % 60 > NumConstant.ZERO ? minutes % 60 + "分钟" : "0分钟");
@ -2104,8 +2131,10 @@ public class DataStatsServiceImpl implements DataStatsService, ResultDataResolve
dto.setPatrolDuration(patrolDuration);
dto.setPatrolDurationInteger(patrolDurationInteger);
dto.setPatrolRoutineWorkTimes(patrolRoutineWorkTimes);
dataManageList.add(dto);
});
}
//NumConstant.SIX.默认按用户总数降序
Collections.sort(dataManageList, new Comparator<CustomerDataManageResultDTO.CustomerDataManage>() {

10
epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmetuser/StatsStaffPatrolRecordDailyService.java

@ -36,6 +36,7 @@ public interface StatsStaffPatrolRecordDailyService extends BaseService<StatsSta
/**
* desc:获取组织或网格的 时间段内的总次数等
*
* @param orgIdList
* @param startDateId
* @param endDateId
@ -51,6 +52,7 @@ public interface StatsStaffPatrolRecordDailyService extends BaseService<StatsSta
/**
* 查询工作人员巡查记录按日统计
*
* @param gridPids 记录所属的网格的pids
* @param userIds
* @param startDateID
@ -58,4 +60,12 @@ public interface StatsStaffPatrolRecordDailyService extends BaseService<StatsSta
* @return
*/
List<StaffPatrolRecordDailyResultDTO> listStaffPatrolRecordDailyAnalysis(String gridPids, String gridId, List<String> userIds, String startDateID, String endDateID);
/**
* desc:获取巡查日统计的相关次数
*
* @param patrolForm
* @return
*/
List<CustomerDataManageResultDTO.CustomerDataManage> getPatrolRecordCount(CustomerDataManageFormDTO patrolForm);
}

5
epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmetuser/impl/StatsStaffPatrolRecordDailyServiceImpl.java

@ -52,4 +52,9 @@ public class StatsStaffPatrolRecordDailyServiceImpl extends BaseServiceImpl<Stat
public List<StaffPatrolRecordDailyResultDTO> listStaffPatrolRecordDailyAnalysis(String gridPids, String gridId, List<String> userIds, String startDateID, String endDateID) {
return baseDao.listStaffPatrolRecordDailyAnalysis(gridPids, gridId, userIds, startDateID, endDateID);
}
@Override
public List<CustomerDataManageResultDTO.CustomerDataManage> getPatrolRecordCount(CustomerDataManageFormDTO patrolForm) {
return baseDao.getRoutineWorkCount(patrolForm);
}
}

37
epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/epmetuser/StatsStaffPatrolRecordDailyDao.xml

@ -86,5 +86,42 @@
sprd.STAFF_ID,
sprd.GRID_ID
</select>
<select id="getRoutineWorkCount" resultType="com.epmet.dataaggre.dto.datastats.result.CustomerDataManageResultDTO$CustomerDataManage">
SELECT
grid_id, staff_id staffId, sum(ROUTINE_WORK_COUNT) patrolRoutineWorkTimes
<choose>
<when test='dataType == "agency"'>
, grid_pids orgId
</when>
<otherwise>
, grid_id orgId
</otherwise>
</choose>
FROM
stats_staff_patrol_record_daily
WHERE del_flag = '0'
AND ROUTINE_WORK_COUNT > 0
<if test='type != "" and type == "Interval" and startTime != "" and startTime != null '>
AND date_id <![CDATA[>=]]> #{startTime}
</if>
<if test='endTime != "" and endTime != null '>
AND date_id <![CDATA[<=]]> #{endTime}
</if>
<choose>
<when test='dataType == "agency"'>
<foreach collection="idList" item="id" open="AND (" close=")" separator=" OR ">
grid_pids like concat('%', #{id}, '%')
</foreach>
</when>
<otherwise>
<foreach collection="idList" item="id" open="AND grid_id IN (" separator="," close=")">
#{id}
</foreach>
</otherwise>
</choose>
group by
STAFF_ID,
GRID_ID
</select>
</mapper>

Loading…
Cancel
Save