Browse Source

对外接口-网格员巡查相关统计数据

master
sunyuchao 4 years ago
parent
commit
cd2e538b81
  1. 43
      epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmetuser/form/GridMemberPatrolListFormDTO.java
  2. 31
      epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmetuser/result/GridMemberPatrolListResultDTO.java
  3. 19
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/controller/EpmetUserController.java
  4. 8
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/datastats/DataStatsDao.java
  5. 7
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/epmetuser/StaffPatrolRecordDao.java
  6. 8
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/datastats/DataStatsService.java
  7. 13
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/datastats/impl/DataStatsServiceImpl.java
  8. 12
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmetuser/EpmetUserService.java
  9. 49
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmetuser/impl/EpmetUserServiceImpl.java
  10. 30
      epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/datastats/DatsStatsDao.xml
  11. 20
      epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/epmetuser/StaffPatrolRecordDao.xml

43
epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmetuser/form/GridMemberPatrolListFormDTO.java

@ -0,0 +1,43 @@
package com.epmet.dataaggre.dto.epmetuser.form;
import com.epmet.commons.tools.validator.group.CustomerClientShowGroup;
import lombok.Data;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.util.List;
/**
* @Description 对外接口--网格员排名-巡查记录-接口入参
* @Auth sun
*/
@Data
public class GridMemberPatrolListFormDTO implements Serializable {
private static final long serialVersionUID = -3381286960911634231L;
/**
* 组织id
*/
@NotBlank(message = "组织Id不能为空", groups = GridMemberPatrolListFormDTO.Member.class)
private String agencyId;
/**
* 维度Id(:202108;:2021)
*/
@NotBlank(message = "维度Id不能为空", groups = GridMemberPatrolListFormDTO.Member.class)
private String dimId;
/**
* 维度类型(:month:year)
*/
@NotBlank(message = "维度类型不能为空", groups = GridMemberPatrolListFormDTO.Member.class)
private String dimType;
/**
* 排序字段(上报事件:project巡查时长:patrolTime处理件数:dealEvent)
*/
private String sort = "project";
//按条件查询数据的最大日维度Id
private String dateId;
public interface Member extends CustomerClientShowGroup {}
}

31
epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmetuser/result/GridMemberPatrolListResultDTO.java

@ -0,0 +1,31 @@
package com.epmet.dataaggre.dto.epmetuser.result;
import com.fasterxml.jackson.annotation.JsonIgnore;
import lombok.Data;
import java.io.Serializable;
/**
* @Description 对外接口--网格员排名-巡查记录-接口返参
* @Auth sun
*/
@Data
public class GridMemberPatrolListResultDTO implements Serializable {
private static final long serialVersionUID = 7129564173128153335L;
//工作人员用户id
private String staffId = "";
//真名
private String staffName = "";
//上报事件(项目)数
private Integer reportProjectCount = 0;
//巡查总时长【单位:分钟】
private Integer patrolTotalTime = 0;
//处理件数(议题转项目数+议题关闭数+项目响应数+项目吹哨数+项目结案数)
private Integer eventCount = 0;
@JsonIgnore
private String dateId;
@JsonIgnore
private Integer timeNum;
}

19
epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/controller/EpmetUserController.java

@ -8,10 +8,7 @@ import com.epmet.commons.tools.security.dto.TokenDto;
import com.epmet.commons.tools.utils.ExcelUtils; import com.epmet.commons.tools.utils.ExcelUtils;
import com.epmet.commons.tools.utils.Result; import com.epmet.commons.tools.utils.Result;
import com.epmet.commons.tools.validator.ValidatorUtils; import com.epmet.commons.tools.validator.ValidatorUtils;
import com.epmet.dataaggre.dto.epmetuser.form.OpenStaffDetailFormDTO; import com.epmet.dataaggre.dto.epmetuser.form.*;
import com.epmet.dataaggre.dto.epmetuser.form.PatrolDateListFormDTO;
import com.epmet.dataaggre.dto.epmetuser.form.PatrolRecordListFormDTO;
import com.epmet.dataaggre.dto.epmetuser.form.StaffListFormDTO;
import com.epmet.dataaggre.dto.epmetuser.result.*; import com.epmet.dataaggre.dto.epmetuser.result.*;
import com.epmet.dataaggre.dto.govorg.result.GridMemberDataAnalysisResultDTO; import com.epmet.dataaggre.dto.govorg.result.GridMemberDataAnalysisResultDTO;
import com.epmet.dataaggre.excel.StaffPatrollExcel; import com.epmet.dataaggre.excel.StaffPatrollExcel;
@ -218,4 +215,18 @@ public class EpmetUserController {
ExcelUtils.exportExcelToTarget(response, null, resultDTOS, StaffPatrollExcel.class); ExcelUtils.exportExcelToTarget(response, null, resultDTOS, StaffPatrollExcel.class);
} }
/**
* @Param formDTO
* @Description 对外接口--网格员排名-巡查记录
* @author sun
*/
@PostMapping("gridmemberpatrollist")
public Result<List<GridMemberPatrolListResultDTO>> gridMemberPatrolList(@RequestBody GridMemberPatrolListFormDTO formDTO) {
ValidatorUtils.validateEntity(formDTO, GridMemberPatrolListFormDTO.Member.class);
if(!"month".equals(formDTO.getDimType())&&!"year".equals(formDTO.getDimType())){
throw new RenException("参数错误,维度类型参数值错误");
}
return new Result<List<GridMemberPatrolListResultDTO>>().ok(epmetUserService.gridMemberPatrolList(formDTO));
}
} }

8
epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/datastats/DataStatsDao.java

@ -21,6 +21,8 @@ import com.epmet.dataaggre.dto.datastats.FactGroupActDailyDTO;
import com.epmet.dataaggre.dto.datastats.form.SubAgencyFormDTO; import com.epmet.dataaggre.dto.datastats.form.SubAgencyFormDTO;
import com.epmet.dataaggre.dto.datastats.form.SubGridFormDTO; import com.epmet.dataaggre.dto.datastats.form.SubGridFormDTO;
import com.epmet.dataaggre.dto.datastats.result.*; import com.epmet.dataaggre.dto.datastats.result.*;
import com.epmet.dataaggre.dto.epmetuser.form.GridMemberPatrolListFormDTO;
import com.epmet.dataaggre.dto.epmetuser.result.GridMemberPatrolListResultDTO;
import com.epmet.dataaggre.dto.resigroup.ActCategoryDictDTO; import com.epmet.dataaggre.dto.resigroup.ActCategoryDictDTO;
import com.epmet.dataaggre.dto.resigroup.result.GroupActRankDetailDTO; import com.epmet.dataaggre.dto.resigroup.result.GroupActRankDetailDTO;
import com.epmet.dataaggre.entity.datastats.DimAgencyEntity; import com.epmet.dataaggre.entity.datastats.DimAgencyEntity;
@ -300,4 +302,10 @@ public interface DataStatsDao {
* @return * @return
*/ */
TotalAndIncrResultDTO getAgencySumGroup(@Param("agencyList") List<String> agencyList, @Param("dateId") String dateId); TotalAndIncrResultDTO getAgencySumGroup(@Param("agencyList") List<String> agencyList, @Param("dateId") String dateId);
/**
* @Description 查询当前组织及下级所有网格员维度对应最大dated数据
* @author sun
*/
List<GridMemberPatrolListResultDTO> selectGirdMemberPatrol(GridMemberPatrolListFormDTO formDTO);
} }

7
epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/epmetuser/StaffPatrolRecordDao.java

@ -19,6 +19,7 @@ package com.epmet.dataaggre.dao.epmetuser;
import com.epmet.commons.mybatis.dao.BaseDao; import com.epmet.commons.mybatis.dao.BaseDao;
import com.epmet.dataaggre.dto.epmetuser.form.GridMemberPatrolListFormDTO;
import com.epmet.dataaggre.dto.epmetuser.form.StaffListFormDTO; import com.epmet.dataaggre.dto.epmetuser.form.StaffListFormDTO;
import com.epmet.dataaggre.dto.epmetuser.result.StaffListResultDTO; import com.epmet.dataaggre.dto.epmetuser.result.StaffListResultDTO;
import com.epmet.dataaggre.entity.epmetuser.StaffPatrolRecordEntity; import com.epmet.dataaggre.entity.epmetuser.StaffPatrolRecordEntity;
@ -53,4 +54,10 @@ public interface StaffPatrolRecordDao extends BaseDao<StaffPatrolRecordEntity> {
* @author sun * @author sun
*/ */
StaffListResultDTO selectPersonalPatrolList(@Param("staffId") String staffId); StaffListResultDTO selectPersonalPatrolList(@Param("staffId") String staffId);
/**
* @Description 按维度汇总当前组织及下级网格员巡查数据
* @author sun
*/
List<StaffListResultDTO> gridMemberPatrol(GridMemberPatrolListFormDTO formDTO);
} }

8
epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/datastats/DataStatsService.java

@ -3,6 +3,8 @@ package com.epmet.dataaggre.service.datastats;
import com.epmet.dataaggre.dto.datastats.FactGroupActDailyDTO; import com.epmet.dataaggre.dto.datastats.FactGroupActDailyDTO;
import com.epmet.dataaggre.dto.datastats.form.*; import com.epmet.dataaggre.dto.datastats.form.*;
import com.epmet.dataaggre.dto.datastats.result.*; import com.epmet.dataaggre.dto.datastats.result.*;
import com.epmet.dataaggre.dto.epmetuser.form.GridMemberPatrolListFormDTO;
import com.epmet.dataaggre.dto.epmetuser.result.GridMemberPatrolListResultDTO;
import com.epmet.dataaggre.dto.govorg.result.GridMemberDataAnalysisResultDTO; import com.epmet.dataaggre.dto.govorg.result.GridMemberDataAnalysisResultDTO;
import com.epmet.dataaggre.dto.resigroup.ActCategoryDictDTO; import com.epmet.dataaggre.dto.resigroup.ActCategoryDictDTO;
import com.epmet.dataaggre.dto.resigroup.result.GroupActRankDetailDTO; import com.epmet.dataaggre.dto.resigroup.result.GroupActRankDetailDTO;
@ -221,4 +223,10 @@ public interface DataStatsService {
* @date 2021/8/12 2:23 下午 * @date 2021/8/12 2:23 下午
*/ */
UserAndGroupTotalResultDTO getUserAndGroupTotal(BaseDataFormDTO formDTO); UserAndGroupTotalResultDTO getUserAndGroupTotal(BaseDataFormDTO formDTO);
/**
* @Description 查询当前组织及下级所有网格员维度对应最大dated数据
* @author sun
*/
List<GridMemberPatrolListResultDTO> getGirdMemberPatrol(GridMemberPatrolListFormDTO formDTO);
} }

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

@ -12,7 +12,9 @@ import com.epmet.dataaggre.dao.datastats.FactGridMemberStatisticsDailyDao;
import com.epmet.dataaggre.dto.datastats.FactGroupActDailyDTO; import com.epmet.dataaggre.dto.datastats.FactGroupActDailyDTO;
import com.epmet.dataaggre.dto.datastats.form.*; import com.epmet.dataaggre.dto.datastats.form.*;
import com.epmet.dataaggre.dto.datastats.result.*; import com.epmet.dataaggre.dto.datastats.result.*;
import com.epmet.dataaggre.dto.epmetuser.result.PatrolDailySumResult; import com.epmet.dataaggre.dto.epmetuser.form.GridMemberPatrolListFormDTO;
import com.epmet.dataaggre.dto.epmetuser.result.GridMemberPatrolListResultDTO;
import com.epmet.dataaggre.dto.epmetuser.result.PatrolDailySumResult;
import com.epmet.dataaggre.dto.evaluationindex.ScreenCustomerAgencyDTO; import com.epmet.dataaggre.dto.evaluationindex.ScreenCustomerAgencyDTO;
import com.epmet.dataaggre.dto.evaluationindex.ScreenCustomerGridDTO; import com.epmet.dataaggre.dto.evaluationindex.ScreenCustomerGridDTO;
import com.epmet.dataaggre.dto.evaluationindex.ScreenGovernRankDataDailyDTO; import com.epmet.dataaggre.dto.evaluationindex.ScreenGovernRankDataDailyDTO;
@ -1830,4 +1832,13 @@ public class DataStatsServiceImpl implements DataStatsService {
return result; return result;
} }
/**
* @Description 查询当前组织及下级所有网格员维度对应最大dated数据
* @author sun
*/
@Override
public List<GridMemberPatrolListResultDTO> getGirdMemberPatrol(GridMemberPatrolListFormDTO formDTO) {
return dataStatsDao.selectGirdMemberPatrol(formDTO);
}
} }

12
epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmetuser/EpmetUserService.java

@ -1,9 +1,6 @@
package com.epmet.dataaggre.service.epmetuser; package com.epmet.dataaggre.service.epmetuser;
import com.epmet.dataaggre.dto.epmetuser.form.OpenStaffDetailFormDTO; import com.epmet.dataaggre.dto.epmetuser.form.*;
import com.epmet.dataaggre.dto.epmetuser.form.PatrolDateListFormDTO;
import com.epmet.dataaggre.dto.epmetuser.form.PatrolRecordListFormDTO;
import com.epmet.dataaggre.dto.epmetuser.form.StaffListFormDTO;
import com.epmet.dataaggre.dto.epmetuser.result.*; import com.epmet.dataaggre.dto.epmetuser.result.*;
import com.epmet.dataaggre.dto.govorg.result.GridStaffResultDTO; import com.epmet.dataaggre.dto.govorg.result.GridStaffResultDTO;
@ -96,4 +93,11 @@ public interface EpmetUserService {
* @date 2021/8/3 15:09 * @date 2021/8/3 15:09
*/ */
UserEventLogoResultDTO mentionMeEvent(String userId); UserEventLogoResultDTO mentionMeEvent(String userId);
/**
* @Param formDTO
* @Description 对外接口--网格员排名-巡查记录
* @author sun
*/
List<GridMemberPatrolListResultDTO> gridMemberPatrolList(GridMemberPatrolListFormDTO formDTO);
} }

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

@ -9,15 +9,13 @@ import com.epmet.dataaggre.dao.epmetuser.*;
import com.epmet.dataaggre.dto.epmetuser.CustomerStaffDTO; import com.epmet.dataaggre.dto.epmetuser.CustomerStaffDTO;
import com.epmet.dataaggre.dto.epmetuser.StaffPatrolDetailDTO; import com.epmet.dataaggre.dto.epmetuser.StaffPatrolDetailDTO;
import com.epmet.dataaggre.dto.epmetuser.StaffPatrolRecordDTO; import com.epmet.dataaggre.dto.epmetuser.StaffPatrolRecordDTO;
import com.epmet.dataaggre.dto.epmetuser.form.OpenStaffDetailFormDTO; import com.epmet.dataaggre.dto.epmetuser.form.*;
import com.epmet.dataaggre.dto.epmetuser.form.PatrolDateListFormDTO;
import com.epmet.dataaggre.dto.epmetuser.form.PatrolRecordListFormDTO;
import com.epmet.dataaggre.dto.epmetuser.form.StaffListFormDTO;
import com.epmet.dataaggre.dto.epmetuser.result.*; import com.epmet.dataaggre.dto.epmetuser.result.*;
import com.epmet.dataaggre.dto.govorg.CustomerAgencyDTO; import com.epmet.dataaggre.dto.govorg.CustomerAgencyDTO;
import com.epmet.dataaggre.dto.govorg.CustomerGridDTO; import com.epmet.dataaggre.dto.govorg.CustomerGridDTO;
import com.epmet.dataaggre.dto.govorg.result.GridStaffResultDTO; import com.epmet.dataaggre.dto.govorg.result.GridStaffResultDTO;
import com.epmet.dataaggre.entity.epmetuser.ResiUserBadgeEntity; import com.epmet.dataaggre.entity.epmetuser.ResiUserBadgeEntity;
import com.epmet.dataaggre.service.datastats.DataStatsService;
import com.epmet.dataaggre.service.epmetuser.EpmetUserService; import com.epmet.dataaggre.service.epmetuser.EpmetUserService;
import com.epmet.dataaggre.service.epmetuser.StaffPatrolDetailService; import com.epmet.dataaggre.service.epmetuser.StaffPatrolDetailService;
import com.epmet.dataaggre.service.epmetuser.StaffPatrolRecordService; import com.epmet.dataaggre.service.epmetuser.StaffPatrolRecordService;
@ -61,6 +59,8 @@ public class EpmetUserServiceImpl implements EpmetUserService {
private ResiUserBadgeDao resiUserBadgeDao; private ResiUserBadgeDao resiUserBadgeDao;
@Autowired @Autowired
private GovProjectService govProjectService; private GovProjectService govProjectService;
@Autowired
private DataStatsService dataStatsService;
/** /**
* @Description 根据UserIds查询 * @Description 根据UserIds查询
@ -424,5 +424,46 @@ public class EpmetUserServiceImpl implements EpmetUserService {
return resultDTO; return resultDTO;
} }
/**
* @Param formDTO
* @Description 对外接口--网格员排名-巡查记录
* @author sun
*/
@Override
public List<GridMemberPatrolListResultDTO> gridMemberPatrolList(GridMemberPatrolListFormDTO formDTO) {
//1.查询当前组织及下级所有网格员维度对应最大dated数据【例查询2021年8月数据,则是查询8月对应的最大daeId那天的网格员数据】
List<GridMemberPatrolListResultDTO> resultList = dataStatsService.getGirdMemberPatrol(formDTO);
if (CollectionUtils.isEmpty(resultList)) {
return new ArrayList<>();
}
//2.按维度汇总当前组织及下级网格员巡查数据
//【如果查询当前月或本年度数据,则需要排除最大dateId的数据,因为上边查的统计数据只有t-1的,巡查数据是t的,避免多计算了当天的巡查项目数和时长数】
formDTO.setDateId(resultList.get(0).getDateId());
List<StaffListResultDTO> patrolList = staffPatrolRecordDao.gridMemberPatrol(formDTO);
//3.以统计数据为准封装结果数据
resultList.forEach(re -> patrolList.stream().filter(l -> re.getStaffId().equals(l.getStaffId())).forEach(s -> {
re.setReportProjectCount(s.getReportProjectCount());
re.setPatrolTotalTime((s.getTimeNum() > NumConstant.ZERO ? s.getTimeNum() / 60 : 0));
}));
//4.按排序字段排序并返回
Collections.sort(resultList, new Comparator<GridMemberPatrolListResultDTO>() {
@Override
public int compare(GridMemberPatrolListResultDTO o1, GridMemberPatrolListResultDTO o2) {
if ("patrolTime".equals(formDTO.getSort())) {
return o2.getPatrolTotalTime().compareTo(o1.getPatrolTotalTime());
} else if ("dealEvent".equals(formDTO.getSort())) {
return o2.getEventCount().compareTo(o1.getEventCount());
} else {
return o2.getReportProjectCount().compareTo(o1.getReportProjectCount());
}
}
});
return resultList;
}
} }

30
epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/datastats/DatsStatsDao.xml

@ -767,4 +767,34 @@
</foreach> </foreach>
</select> </select>
<select id="selectGirdMemberPatrol" resultType="com.epmet.dataaggre.dto.epmetuser.result.GridMemberPatrolListResultDTO">
SELECT
staff_id staffId,
staff_name staffName,
date_id dateId,
IFNULL(
SUM(
issue_to_project_count + closed_issue_count + project_response_count + project_transfer_count + project_closed_count
)
, 0)eventCount
FROM
fact_grid_member_statistics_daily
WHERE
del_flag = '0'
AND pids LIKE concat('%', #{agencyId}, '%')
AND date_id = (
SELECT MAX(date_id)
FROM fact_grid_member_statistics_daily
WHERE
del_flag = '0'
<if test="dimType!= null and dimType == 'month' ">
AND month_id = #{dimId}
</if>
<if test="dimType!= null and dimType == 'year' ">
AND year_id = #{dimId}
</if>
)
GROUP BY staff_id
</select>
</mapper> </mapper>

20
epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/epmetuser/StaffPatrolRecordDao.xml

@ -120,4 +120,24 @@
AND ssp.staff_id = #{staffId} AND ssp.staff_id = #{staffId}
</select> </select>
<select id="gridMemberPatrol" resultType="com.epmet.dataaggre.dto.epmetuser.result.StaffListResultDTO">
SELECT
staff_id staffId,
IFNULL(SUM(patrol_total), 0) reportProjectCount,
IFNULL(SUM(total_time), 0) timeNum
FROM
stats_staff_patrol_record_daily
WHERE
del_flag = '0'
AND grid_pids LIKE concat('%', #{agencyId}, '%')
<if test="dimType!= null and dimType == 'month' ">
AND month_id = #{dimId}
</if>
<if test="dimType!= null and dimType == 'year' ">
AND year_id = #{dimId}
</if>
AND date_id <![CDATA[<=]]> #{dateId}
GROUP BY staff_id
</select>
</mapper> </mapper>

Loading…
Cancel
Save