Browse Source

修改:

1.网格员工作统计,入参agencyId->orgId
新增:
1.网格员工作统计,excel导出
dev_shibei_match
wangxianzhang 4 years ago
parent
commit
9d552606f2
  1. 5
      epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/govorg/form/GridMemberDataAnalysisFromDTO.java
  2. 14
      epmet-module/data-aggregator/data-aggregator-server/pom.xml
  3. 55
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/beans/GridMemberDataAnalysisExcelExportBean.java
  4. 153
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/controller/GovOrgController.java
  5. 2
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/datastats/FactGridMemberStatisticsDailyDao.java
  6. 1
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/epmetuser/StatsStaffPatrolRecordDailyDao.java
  7. 20
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/AggreGridService.java
  8. 9
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/datastats/DataStatsService.java
  9. 14
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/datastats/impl/DataStatsServiceImpl.java
  10. 2
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmetuser/StatsStaffPatrolRecordDailyService.java
  11. 4
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmetuser/impl/StatsStaffPatrolRecordDailyServiceImpl.java
  12. 29
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/impl/AggreGridServiceImpl.java
  13. 22
      epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/datastats/FactGridMemberStatisticsDailyDao.xml
  14. 12
      epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/epmetuser/StatsStaffPatrolRecordDailyDao.xml

5
epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/govorg/form/GridMemberDataAnalysisFromDTO.java

@ -25,7 +25,10 @@ public class GridMemberDataAnalysisFromDTO {
private Integer pageSize = 10; private Integer pageSize = 10;
@NotBlank(message = "请选择组织", groups = { listGridMemberDatas4PcWork.class }) @NotBlank(message = "请选择组织", groups = { listGridMemberDatas4PcWork.class })
private String agencyId; private String orgId;
@NotBlank(message = "请选择组织类型", groups = { listGridMemberDatas4PcWork.class })
private String orgType;
@DateTimeFormat(pattern = "yyyy-MM-dd") @DateTimeFormat(pattern = "yyyy-MM-dd")
@JsonFormat(pattern = "yyyy-MM-dd") @JsonFormat(pattern = "yyyy-MM-dd")

14
epmet-module/data-aggregator/data-aggregator-server/pom.xml

@ -82,12 +82,16 @@
<version>2.0.0</version> <version>2.0.0</version>
<scope>compile</scope> <scope>compile</scope>
</dependency> </dependency>
<dependency>
<groupId>cglib</groupId>
<artifactId>cglib</artifactId>
<version>3.1</version>
</dependency>
<dependency> <dependency>
<groupId>com.alibaba</groupId> <groupId>com.alibaba</groupId>
<artifactId>easyexcel</artifactId> <artifactId>easyexcel</artifactId>
<version>3.0.3</version> <version>3.0.3</version>
<!--<exclusions> <exclusions>
<exclusion> <exclusion>
<artifactId>poi</artifactId> <artifactId>poi</artifactId>
<groupId>org.apache.poi</groupId> <groupId>org.apache.poi</groupId>
@ -100,7 +104,11 @@
<artifactId>poi-ooxml-schemas</artifactId> <artifactId>poi-ooxml-schemas</artifactId>
<groupId>org.apache.poi</groupId> <groupId>org.apache.poi</groupId>
</exclusion> </exclusion>
</exclusions>--> <!--<exclusion>
<artifactId>cglib</artifactId>
<groupId>cglib</groupId>
</exclusion>-->
</exclusions>
</dependency> </dependency>
</dependencies> </dependencies>

55
epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/beans/GridMemberDataAnalysisExcelExportBean.java

@ -0,0 +1,55 @@
package com.epmet.dataaggre.beans;
import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.write.style.ColumnWidth;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.Setter;
/**
* 网格员数据分析excel导出bean
*/
@Getter
@Setter
@EqualsAndHashCode
@ColumnWidth(20)
public class GridMemberDataAnalysisExcelExportBean {
@ExcelProperty(value = {"姓名"})
private String staffName;
@ExcelProperty(value = {"手机号"})
private String mobile;
@ExcelProperty(value = {"所属网格"})
private String orgName;
// 项目议题等
@ExcelProperty(value = {"项目数"})
private Integer projectCount;
@ExcelProperty(value = {"议题转项目数"})
private Integer issueToProjectCount;
@ExcelProperty(value = {"议题关闭数"})
private Integer closedIssueCount;
@ExcelProperty(value = {"项目事件响应数"})
private Integer projectResponseCount;
@ExcelProperty(value = {"项目事件吹哨数"})
private Integer projectTransferCount;
@ExcelProperty(value = {"项目事件结案数"})
private Integer projectClosedCount;
// 巡查
@ExcelProperty(value = {"巡查次数"})
private int patrolTimes;
@ExcelProperty(value = {"巡查时长"})
private int totalTime;
@ExcelProperty(value = {"例行工作次数"})
private int patrolRoutineWorkTimes;
}

153
epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/controller/GovOrgController.java

@ -2,44 +2,48 @@ package com.epmet.dataaggre.controller;
import com.alibaba.excel.EasyExcel; import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.ExcelWriter; import com.alibaba.excel.ExcelWriter;
import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.write.metadata.WriteSheet; import com.alibaba.excel.write.metadata.WriteSheet;
import com.epmet.commons.tools.annotation.LoginUser; import com.epmet.commons.tools.annotation.LoginUser;
import com.epmet.commons.tools.annotation.RequirePermission; import com.epmet.commons.tools.annotation.RequirePermission;
import com.epmet.commons.tools.enums.RequirePermissionEnum; import com.epmet.commons.tools.enums.RequirePermissionEnum;
import com.epmet.commons.tools.exception.EpmetErrorCode; import com.epmet.commons.tools.exception.EpmetErrorCode;
import com.epmet.commons.tools.exception.EpmetException;
import com.epmet.commons.tools.exception.ExceptionUtils;
import com.epmet.commons.tools.exception.RenException; import com.epmet.commons.tools.exception.RenException;
import com.epmet.commons.tools.page.PageData; import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.security.dto.TokenDto; import com.epmet.commons.tools.security.dto.TokenDto;
import com.epmet.commons.tools.security.user.LoginUserUtil; import com.epmet.commons.tools.security.user.LoginUserUtil;
import com.epmet.commons.tools.utils.ConvertUtils; import com.epmet.commons.tools.utils.ConvertUtils;
import com.epmet.commons.tools.utils.DateUtils;
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.govorg.CustomerAgencyDTO; import com.epmet.dataaggre.beans.GridMemberDataAnalysisExcelExportBean;
import com.epmet.dataaggre.dto.govorg.CustomerGridDTO; import com.epmet.dataaggre.dto.govorg.CustomerGridDTO;
import com.epmet.dataaggre.dto.govorg.form.*; import com.epmet.dataaggre.dto.govorg.form.*;
import com.epmet.dataaggre.dto.govorg.result.*; import com.epmet.dataaggre.dto.govorg.result.*;
import com.epmet.dataaggre.entity.govorg.CustomerAgencyEntity; import com.epmet.dataaggre.entity.govorg.CustomerAgencyEntity;
import com.epmet.dataaggre.entity.govorg.CustomerGridEntity;
import com.epmet.dataaggre.enums.GridMemberDataAnalysisEnums; import com.epmet.dataaggre.enums.GridMemberDataAnalysisEnums;
import com.epmet.dataaggre.service.AggreGridService; import com.epmet.dataaggre.service.AggreGridService;
import com.epmet.dataaggre.service.govorg.GovOrgService; import com.epmet.dataaggre.service.govorg.GovOrgService;
import lombok.Data;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.io.IOUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.util.CollectionUtils; import org.springframework.util.CollectionUtils;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import javax.validation.constraints.NotBlank; import javax.servlet.http.HttpServletResponse;
import java.io.FileInputStream;
import java.io.IOException; import java.io.IOException;
import java.net.URLEncoder;
import java.nio.file.Files; import java.nio.file.Files;
import java.nio.file.Path; import java.nio.file.Path;
import java.nio.file.Paths; import java.nio.file.Paths;
import java.util.ArrayList; import java.text.SimpleDateFormat;
import java.util.Date; import java.util.*;
import java.util.List; import java.util.concurrent.atomic.AtomicReference;
import java.util.UUID;
/** /**
* @Author zxc * @Author zxc
@ -244,13 +248,14 @@ public class GovOrgController {
public Result getGridMemberAnalysis4PcWork(@RequestBody GridMemberDataAnalysisFromDTO input) { public Result getGridMemberAnalysis4PcWork(@RequestBody GridMemberDataAnalysisFromDTO input) {
ValidatorUtils.validateEntity(input, GridMemberDataAnalysisFromDTO.listGridMemberDatas4PcWork.class); ValidatorUtils.validateEntity(input, GridMemberDataAnalysisFromDTO.listGridMemberDatas4PcWork.class);
String agencyId = input.getAgencyId(); String orgId = input.getOrgId();
Date startTime = input.getStartTime(); Date startTime = input.getStartTime();
Date endTime = input.getEndTime(); Date endTime = input.getEndTime();
Integer pageNo = input.getPageNo(); Integer pageNo = input.getPageNo();
Integer pageSize = input.getPageSize(); Integer pageSize = input.getPageSize();
String orgType = input.getOrgType();
PageData<GridMemberDataAnalysisResultDTO> page = aggreGridService.getGridMemberDataAnalysis4PcWork(agencyId, pageNo, pageSize, startTime, endTime); PageData<GridMemberDataAnalysisResultDTO> page = aggreGridService.getGridMemberDataAnalysis4PcWork(orgId, orgType, pageNo, pageSize, startTime, endTime, true);
return new Result().ok(page); return new Result().ok(page);
} }
@ -260,80 +265,96 @@ public class GovOrgController {
* @return * @return
*/ */
@PostMapping("pcwork/gridmember-analysis/export") @PostMapping("pcwork/gridmember-analysis/export")
public Result exportGridMemberAnalysis4PcWork(@RequestBody GridMemberDataAnalysisFromDTO input) { public void exportGridMemberAnalysis4PcWork(@RequestBody GridMemberDataAnalysisFromDTO input, HttpServletResponse response) {
ValidatorUtils.validateEntity(input, GridMemberDataAnalysisFromDTO.listGridMemberDatas4PcWork.class); ValidatorUtils.validateEntity(input, GridMemberDataAnalysisFromDTO.listGridMemberDatas4PcWork.class);
String agencyId = input.getAgencyId(); String orgId = input.getOrgId();
Date startTime = input.getStartTime(); Date startTime = input.getStartTime();
Date endTime = input.getEndTime(); Date endTime = input.getEndTime();
String orgType = input.getOrgType();
int pageNo = 0; // 缓存路径
int pageSize = 1000;
String tempFileName = UUID.randomUUID().toString().concat(".xlsx"); String tempFileName = UUID.randomUUID().toString().concat(".xlsx");
Path tempFilePath = gridMemberStatsExcelExportDir.resolve(tempFileName);
log.info("工作统计excel文件下载路径:{}", tempFilePath.toString());
ExcelWriter excelWriter = EasyExcel.write(tempFileName, GridMemberDataAnalysisExcelExportBean.class).build(); ExcelWriter excelWriter = null;
// 这里注意 如果同一个sheet只要创建一次
WriteSheet writeSheet = EasyExcel.writerSheet("模板").build();
PageData<GridMemberDataAnalysisResultDTO> page;
do {
page = aggreGridService.getGridMemberDataAnalysis4PcWork(agencyId, pageNo, pageSize, startTime, endTime);
List<GridMemberDataAnalysisResultDTO> pageList = page.getList();
List<GridMemberDataAnalysisExcelExportBean> exportBeans = ConvertUtils.sourceToTarget(pageList, GridMemberDataAnalysisExcelExportBean.class);
excelWriter.write(exportBeans, writeSheet);
} while (page.getList().size() == pageSize); // 组织名称
AtomicReference<String> orgName = new AtomicReference<>("");
return null;
}
/**
* 网格员数据分析excel导出bean
*/
@Data
public class GridMemberDataAnalysisExcelExportBean {
@ExcelProperty("姓名")
private String staffName;
@ExcelProperty("手机号") if ("grid".equals(orgType)) {
private String mobile; CustomerGridDTO gridInfo = govOrgService.getGridInfo(orgId);
Optional.ofNullable(gridInfo).ifPresent((g) -> orgName.set(g.getGridName()));
} else if ("agency".equals(orgType)) {
CustomerAgencyEntity agencyInfo = govOrgService.getAgencyInfo(orgId);
Optional.ofNullable(agencyInfo).ifPresent((a) -> orgName.set(a.getOrganizationName()));
}
@ExcelProperty("所属网格") // sheet名
private String orgName; String sheetName = getSheetName(orgName.get(), startTime, endTime);
// 项目议题等 // 分页导出到缓存excel
@ExcelProperty("项目数") try {
private Integer projectCount; excelWriter = EasyExcel.write(tempFilePath.toString(), GridMemberDataAnalysisExcelExportBean.class).build();
// 这里注意 如果同一个sheet只要创建一次
WriteSheet writeSheet = EasyExcel.writerSheet(sheetName).build();
@ExcelProperty("议题转项目数") PageData<GridMemberDataAnalysisResultDTO> page;
private Integer issueToProjectCount;
@ExcelProperty("议题关闭数") int pageNo = 0;
private Integer closedIssueCount; int pageSize = 1000;
@ExcelProperty("项目事件响应数") do {
private Integer projectResponseCount; page = aggreGridService.getGridMemberDataAnalysis4PcWork(orgId, orgType, pageNo, pageSize, startTime, endTime, false);
List<GridMemberDataAnalysisResultDTO> pageList = page.getList();
@ExcelProperty("项目事件吹哨数") List<GridMemberDataAnalysisExcelExportBean> exportBeans = ConvertUtils.sourceToTarget(pageList, GridMemberDataAnalysisExcelExportBean.class);
private Integer projectTransferCount;
@ExcelProperty("项目事件结案数") excelWriter.write(exportBeans, writeSheet);
private Integer projectClosedCount;
// 巡查 } while (page.getList().size() == pageSize);
@ExcelProperty("巡查次数")
private int patrolTimes;
@ExcelProperty("巡查时长") } catch (Exception e) {
private int totalTime; e.printStackTrace();
log.error("【PC工作端网格员数据统计导出】生成excel失败:{}", ExceptionUtils.getErrorStackTrace(e));
} finally {
// 关闭流
Optional.ofNullable(excelWriter).ifPresent((i) -> i.finish());
}
@ExcelProperty("例行工作次数") // 开始下载缓存excel到客户端,然后删除缓存文件
private int patrolRoutineWorkTimes; try {
response.setHeader("Access-Control-Expose-Headers", "Content-Disposition");
response.setHeader("Content-Type", "application/vnd.ms-excel");
response.setHeader("Content-Disposition", "attachment;fileName=" + URLEncoder.encode(sheetName.concat(".xlsx"), "UTF-8"));
IOUtils.copy(new FileInputStream(tempFilePath.toString()), response.getOutputStream());
} catch (Exception e) {
log.error(ExceptionUtils.getErrorStackTrace(e));
throw new EpmetException(EpmetErrorCode.SERVER_ERROR.getCode(), "【下载工作统计信息】下载失败");
} finally {
try {
Files.delete(tempFilePath);
} catch (IOException e) {
log.error(ExceptionUtils.getErrorStackTrace(e));
throw new EpmetException(EpmetErrorCode.SERVER_ERROR.getCode(), "【下载工作统计信息】删除缓存文件失败");
}
}
} }
private String getSheetName(String orgName, Date startTime, Date endTime) {
StringBuilder sb = new StringBuilder(orgName);
String s = orgName;
if (startTime == null && endTime != null) {
sb.append("截止").append(DateUtils.format(endTime, DateUtils.DATE_PATTERN));
} else if (startTime != null && endTime != null) {
sb.append(DateUtils.format(startTime, DateUtils.DATE_PATTERN))
.append("至")
.append(DateUtils.format(endTime, DateUtils.DATE_PATTERN))
.append("区间新增值");
}
sb.append("的工作统计");
return sb.toString();
}
} }

2
epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/datastats/FactGridMemberStatisticsDailyDao.java

@ -60,6 +60,7 @@ public interface FactGridMemberStatisticsDailyDao extends BaseDao<FactGridMember
* @return * @return
*/ */
List<GridMemberDataAnalysisResultDTO> listGridMemberDataStatsAccumulate(@Param("pids") String pids, List<GridMemberDataAnalysisResultDTO> listGridMemberDataStatsAccumulate(@Param("pids") String pids,
@Param("gridId") String gridId,
@Param("endDateID") String endDateID); @Param("endDateID") String endDateID);
/** /**
@ -70,6 +71,7 @@ public interface FactGridMemberStatisticsDailyDao extends BaseDao<FactGridMember
* @return * @return
*/ */
List<GridMemberDataAnalysisResultDTO> listGridMemberDataStatsIncr(@Param("pids") String pids, List<GridMemberDataAnalysisResultDTO> listGridMemberDataStatsIncr(@Param("pids") String pids,
@Param("gridId") String gridId,
@Param("startDateID") String startDateID, @Param("startDateID") String startDateID,
@Param("endDateID") String endDateID); @Param("endDateID") String endDateID);
} }

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

@ -61,6 +61,7 @@ public interface StatsStaffPatrolRecordDailyDao extends BaseDao<StatsStaffPatrol
* @return * @return
*/ */
List<StaffPatrolRecordDailyResultDTO> listStaffPatrolRecordDailyAnalysis(@Param("gridPids") String gridPids, List<StaffPatrolRecordDailyResultDTO> listStaffPatrolRecordDailyAnalysis(@Param("gridPids") String gridPids,
@Param("gridId") String gridId,
@Param("userIds") List<String> userIds, @Param("userIds") List<String> userIds,
@Param("startDateId") String startDateID, @Param("startDateId") String startDateID,
@Param("endDateID") String endDateID); @Param("endDateID") String endDateID);

20
epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/AggreGridService.java

@ -2,6 +2,7 @@ package com.epmet.dataaggre.service;
import com.epmet.commons.tools.page.PageData; import com.epmet.commons.tools.page.PageData;
import com.epmet.dataaggre.dto.govorg.result.GridMemberDataAnalysisResultDTO; import com.epmet.dataaggre.dto.govorg.result.GridMemberDataAnalysisResultDTO;
import com.sun.org.apache.xpath.internal.operations.Bool;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
@ -18,16 +19,29 @@ public interface AggreGridService {
* @author wxz * @author wxz
* @date 2021.07.05 11:17 * @date 2021.07.05 11:17
*/ */
List<GridMemberDataAnalysisResultDTO> getGridMemberDataAnalysis(List<String> gridIds, String searchedStaffName, String currStaffId, String month, String sort, Integer pageNo, Integer pageSize); List<GridMemberDataAnalysisResultDTO> getGridMemberDataAnalysis(List<String> gridIds,
String searchedStaffName,
String currStaffId,
String month,
String sort,
Integer pageNo,
Integer pageSize);
/** /**
* 网格员巡查统计查询 pcwork端 * 网格员巡查统计查询 pcwork端
* @param agencyId * @param orgId 组织id
* @param orgType 组织类型agency,grid
* @param pageNo * @param pageNo
* @param pageSize * @param pageSize
* @param startTime * @param startTime
* @param endTime * @param endTime
* @return * @return
*/ */
PageData<GridMemberDataAnalysisResultDTO> getGridMemberDataAnalysis4PcWork(String agencyId, Integer pageNo, Integer pageSize, Date startTime, Date endTime); PageData<GridMemberDataAnalysisResultDTO> getGridMemberDataAnalysis4PcWork(String orgId,
String orgType,
Integer pageNo,
Integer pageSize,
Date startTime,
Date endTime,
Boolean needCount);
} }

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

@ -269,7 +269,14 @@ public interface DataStatsService {
* @param pageSize * @param pageSize
* @param startDateID 查询起始时间匹配统计表的dateId列 * @param startDateID 查询起始时间匹配统计表的dateId列
* @param endDateID 查询结束时间匹配统计表的dateId列 * @param endDateID 查询结束时间匹配统计表的dateId列
* @param needCount 是否需要查询Count分页查询需要导出excel不需要
* @return * @return
*/ */
List<GridMemberDataAnalysisResultDTO> getGridMemberIssueProjectStats4PcWork(String pids, Integer pageNo, Integer pageSize, String startDateID, String endDateID); List<GridMemberDataAnalysisResultDTO> getGridMemberIssueProjectStats4PcWork(String pids,
String gridId,
Integer pageNo,
Integer pageSize,
String startDateID,
String endDateID,
Boolean needCount);
} }

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

@ -2150,18 +2150,24 @@ public class DataStatsServiceImpl implements DataStatsService, ResultDataResolve
} }
@Override @Override
public List<GridMemberDataAnalysisResultDTO> getGridMemberIssueProjectStats4PcWork(String pids, Integer pageNo, Integer pageSize, String startDateID, String endDateID) { public List<GridMemberDataAnalysisResultDTO> getGridMemberIssueProjectStats4PcWork(String pids,
String gridId,
Integer pageNo,
Integer pageSize,
String startDateID,
String endDateID,
Boolean needCount) {
boolean isStartDateIdBlank = StringUtils.isBlank(startDateID); boolean isStartDateIdBlank = StringUtils.isBlank(startDateID);
boolean isEndDateIdBlank = StringUtils.isBlank(endDateID); boolean isEndDateIdBlank = StringUtils.isBlank(endDateID);
if (isStartDateIdBlank && !isEndDateIdBlank) { if (isStartDateIdBlank && !isEndDateIdBlank) {
// 查询截止时间的累计值,直接查询表里的total即可 // 查询截止时间的累计值,直接查询表里的total即可
PageHelper.startPage(pageNo, pageSize); PageHelper.startPage(pageNo, pageSize, needCount);
return factGridMemberStatisticsDailyDao.listGridMemberDataStatsAccumulate(pids, endDateID); return factGridMemberStatisticsDailyDao.listGridMemberDataStatsAccumulate(pids, gridId, endDateID);
} else if (!isStartDateIdBlank && !isEndDateIdBlank) { } else if (!isStartDateIdBlank && !isEndDateIdBlank) {
// 查询时间段内的增量,需要使用表中的增量列计算 // 查询时间段内的增量,需要使用表中的增量列计算
return factGridMemberStatisticsDailyDao.listGridMemberDataStatsIncr(pids, startDateID, endDateID); return factGridMemberStatisticsDailyDao.listGridMemberDataStatsIncr(pids, gridId, startDateID, endDateID);
} else { } else {
throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "【pcwork查询网格员数据统计列表】传入时间条件有误"); throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "【pcwork查询网格员数据统计列表】传入时间条件有误");
} }

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

@ -57,5 +57,5 @@ public interface StatsStaffPatrolRecordDailyService extends BaseService<StatsSta
* @param endDateID * @param endDateID
* @return * @return
*/ */
List<StaffPatrolRecordDailyResultDTO> listStaffPatrolRecordDailyAnalysis(String gridPids, List<String> userIds, String startDateID, String endDateID); List<StaffPatrolRecordDailyResultDTO> listStaffPatrolRecordDailyAnalysis(String gridPids, String gridId, List<String> userIds, String startDateID, String endDateID);
} }

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

@ -49,7 +49,7 @@ public class StatsStaffPatrolRecordDailyServiceImpl extends BaseServiceImpl<Stat
} }
@Override @Override
public List<StaffPatrolRecordDailyResultDTO> listStaffPatrolRecordDailyAnalysis(String gridPids, List<String> userIds, String startDateID, String endDateID) { public List<StaffPatrolRecordDailyResultDTO> listStaffPatrolRecordDailyAnalysis(String gridPids, String gridId, List<String> userIds, String startDateID, String endDateID) {
return baseDao.listStaffPatrolRecordDailyAnalysis(gridPids, userIds, startDateID, endDateID); return baseDao.listStaffPatrolRecordDailyAnalysis(gridPids, gridId, userIds, startDateID, endDateID);
} }
} }

29
epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/impl/AggreGridServiceImpl.java

@ -65,17 +65,32 @@ public class AggreGridServiceImpl implements AggreGridService {
} }
@Override @Override
public PageData<GridMemberDataAnalysisResultDTO> getGridMemberDataAnalysis4PcWork(String agencyId, Integer pageNo, Integer pageSize, Date startTime, Date endTime) { public PageData<GridMemberDataAnalysisResultDTO> getGridMemberDataAnalysis4PcWork(String orgId,
String orgType,
Integer pageNo,
Integer pageSize,
Date startTime,
Date endTime,
Boolean needCount) {
// 计算出开始dateId和结束endId // 计算出开始dateId和结束endId
String startDateID = DateUtils.format(startTime, DateUtils.DATE_PATTERN_YYYYMMDD); String startDateID = DateUtils.format(startTime, DateUtils.DATE_PATTERN_YYYYMMDD);
String endDateID = DateUtils.format(endTime, DateUtils.DATE_PATTERN_YYYYMMDD); String endDateID = DateUtils.format(endTime, DateUtils.DATE_PATTERN_YYYYMMDD);
// 拿到组织pids,含自身 // 根据orgType判断是使用agency的pids还是直接使用gridId作为条件
String pids = getPidsByAgencyId(agencyId); String pids = null;
String gridId = null;
if ("grid".equals(orgType)) {
gridId = orgId;
} else if ("agency".equals(orgType)) {
pids = getPidsByAgencyId(orgId);
} else {
throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "组织类型不支持");
}
// 一.查询网格员数据统计相关信息 // 一.查询网格员数据统计相关信息
List<GridMemberDataAnalysisResultDTO> datas = dataStatsService.getGridMemberIssueProjectStats4PcWork(pids, pageNo, pageSize, startDateID, endDateID); List<GridMemberDataAnalysisResultDTO> datas = dataStatsService.getGridMemberIssueProjectStats4PcWork(pids, gridId, pageNo, pageSize, startDateID, endDateID, needCount);
long total = new PageInfo<>(datas).getTotal(); long total = new PageInfo<>(datas).getTotal();
// 二.匹配用户巡查,例行工作数据 // 二.匹配用户巡查,例行工作数据
@ -120,7 +135,7 @@ public class AggreGridServiceImpl implements AggreGridService {
// 批量查询出巡查信息 // 批量查询出巡查信息
List<StaffPatrolRecordDailyResultDTO> patrolDatas = statsStaffPatrolRecordDailyService.listStaffPatrolRecordDailyAnalysis(pids, userIdsPart, startDateID, endDateID); List<StaffPatrolRecordDailyResultDTO> patrolDatas = statsStaffPatrolRecordDailyService.listStaffPatrolRecordDailyAnalysis(pids, gridId, userIdsPart, startDateID, endDateID);
for (StaffPatrolRecordDailyResultDTO d : patrolDatas) { for (StaffPatrolRecordDailyResultDTO d : patrolDatas) {
Map<String, GridMemberDataAnalysisResultDTO> gridAndData = structedData.get(d.getStaffId()); Map<String, GridMemberDataAnalysisResultDTO> gridAndData = structedData.get(d.getStaffId());
@ -135,7 +150,7 @@ public class AggreGridServiceImpl implements AggreGridService {
} }
} }
return new PageData<GridMemberDataAnalysisResultDTO>(datas, total); return new PageData<>(datas, total);
} }
/** /**
@ -148,7 +163,7 @@ public class AggreGridServiceImpl implements AggreGridService {
if (agencyInfo == null) { if (agencyInfo == null) {
String errorMsg = "【网格员数据统计查询pcwork】查询组织信息返回为null"; String errorMsg = "【网格员数据统计查询pcwork】查询组织信息返回为null";
throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), errorMsg, errorMsg); throw new EpmetException(EpmetErrorCode.SERVER_ERROR.getCode(), errorMsg, errorMsg);
} }
String pidsAndAgencyIdPath = agencyInfo.getPids().concat(":").concat(agencyId); String pidsAndAgencyIdPath = agencyInfo.getPids().concat(":").concat(agencyId);

22
epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/datastats/FactGridMemberStatisticsDailyDao.xml

@ -152,9 +152,16 @@
member.CLOSED_ISSUE_COUNT project_closed_count member.CLOSED_ISSUE_COUNT project_closed_count
from fact_grid_member_statistics_daily member from fact_grid_member_statistics_daily member
inner join ( inner join (
select max(gms.DATE_ID) dateId from fact_grid_member_statistics_daily gms where gms.DATE_ID <![CDATA[<]]> ${endDateID} and gms.DEL_FLAG = '0' select max(gms.DATE_ID) dateId from fact_grid_member_statistics_daily gms where gms.DATE_ID <![CDATA[<]]> #{endDateID} and gms.DEL_FLAG = '0'
) dim on (member.DATE_ID = dim.dateId) ) dim on (member.DATE_ID = dim.dateId)
where member.PIDS like CONCAT(#{pids}, '%') and member.DEL_FLAG = '0' where
member.DEL_FLAG = '0'
<if test="pids != null and pids != ''">
AND member.PIDS like CONCAT(#{pids}, '%')
</if>
<if test="gridId != null and gridId != ''">
AND member.GRID_ID = #{gridId}
</if>
order by convert(member.staff_name using gbk) asc, member.GRID_ID asc order by convert(member.staff_name using gbk) asc, member.GRID_ID asc
</select> </select>
@ -170,10 +177,17 @@
sum(member.project_transfer_incr) project_transfer_count, sum(member.project_transfer_incr) project_transfer_count,
sum(member.project_closed_incr) project_closed_count sum(member.project_closed_incr) project_closed_count
from fact_grid_member_statistics_daily member from fact_grid_member_statistics_daily member
where member.PIDS like CONCAT(#{pids}, '%') where
member.DEL_FLAG = '0'
<if test="pids != null and pids != ''">
AND member.PIDS like CONCAT(#{pids}, '%')
</if>
<if test="gridId != null and gridId != ''">
AND member.GRID_ID = #{gridId}
</if>
and member.DATE_ID >= #{startDateID} and member.DATE_ID >= #{startDateID}
and member.DATE_ID <![CDATA[<]]> #{endDateID} and member.DATE_ID <![CDATA[<]]> #{endDateID}
and member.DEL_FLAG = '0'
group by member.grid_id, group by member.grid_id,
member.staff_id, member.staff_id,
member.STAFF_NAME member.STAFF_NAME

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

@ -66,12 +66,20 @@
sum(ROUTINE_WORK_COUNT) as patrol_routine_work_times sum(ROUTINE_WORK_COUNT) as patrol_routine_work_times
from stats_staff_patrol_record_daily sprd from stats_staff_patrol_record_daily sprd
where where
sprd.GRID_PIDS like CONCAT(#{gridPids}, '%') sprd.DEL_FLAG = '0'
<if test="gridId != null and gridId != ''">
and sprd.GRID_ID=#{gridId}
</if>
<if test="gridPids != null and gridPids != ''">
and sprd.GRID_PIDS like CONCAT(#{gridPids}, '%')
</if>
and sprd.STAFF_ID in and sprd.STAFF_ID in
<foreach collection="userIds" open="(" item="userId" separator="," close=")"> <foreach collection="userIds" open="(" item="userId" separator="," close=")">
#{userId} #{userId}
</foreach> </foreach>
and sprd.DATE_ID >= #{startDateId} <if test="startDateId != null and startDateId != ''">
and sprd.DATE_ID >= #{startDateId}
</if>
and sprd.DATE_ID <![CDATA[<]]> #{endDateID} and sprd.DATE_ID <![CDATA[<]]> #{endDateID}
group by group by
sprd.STAFF_ID, sprd.STAFF_ID,

Loading…
Cancel
Save