Browse Source

Merge remote-tracking branch 'origin/develop' into release_temp

master
yinzuomei 4 years ago
parent
commit
2f432d217d
  1. 21
      epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmetuser/result/StaffPatrolRecordDailyResultDTO.java
  2. 7
      epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/govorg/form/GridMemberDataAnalysisFromDTO.java
  3. 8
      epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/govorg/result/GridMemberDataAnalysisResultDTO.java
  4. 20
      epmet-module/data-aggregator/data-aggregator-server/pom.xml
  5. 74
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/controller/GovOrgController.java
  6. 20
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/datastats/FactGridMemberStatisticsDailyDao.java
  7. 13
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/epmetuser/StatsStaffPatrolRecordDailyDao.java
  8. 13
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/AggreGridService.java
  9. 12
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/datastats/DataStatsService.java
  10. 42
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/datastats/impl/DataStatsServiceImpl.java
  11. 8
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmetuser/EpmetUserService.java
  12. 11
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmetuser/StatsStaffPatrolRecordDailyService.java
  13. 6
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmetuser/impl/EpmetUserServiceImpl.java
  14. 5
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmetuser/impl/StatsStaffPatrolRecordDailyServiceImpl.java
  15. 120
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/impl/AggreGridServiceImpl.java
  16. 49
      epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/datastats/FactGridMemberStatisticsDailyDao.xml
  17. 21
      epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/epmetuser/StatsStaffPatrolRecordDailyDao.xml
  18. 4
      epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/controller/screen/IndexController.java
  19. 21
      epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/resi/ResiActDetailResultDTO.java
  20. 5
      epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/resi/ResiActInfoResultDTO.java
  21. 5
      epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/resi/ResiInProgressActResultDTO.java
  22. 5
      epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/resi/ResiLatestActResultDTO.java
  23. 5
      epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/resi/ResiLookBackActResultDTO.java
  24. 5
      epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/resi/ResiMyActResultDTO.java
  25. 4
      epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/work/CanceledActResultDTO.java
  26. 5
      epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/work/FinishedActResultDTO.java
  27. 5
      epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/work/InProgressActResultDTO.java
  28. 5
      epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/constant/ActConstant.java
  29. 26
      epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/ActInfoServiceImpl.java
  30. 13
      epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/WorkActServiceImpl.java
  31. 53
      epmet-module/epmet-heart/epmet-heart-server/src/main/resources/mapper/ActInfoDao.xml
  32. 45
      epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/PcWorkListFormDTO.java
  33. 53
      epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/patrol/PcworkRecordListFormDTO.java
  34. 107
      epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/PcWorkListResultDTO.java
  35. 43
      epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/PcworkRecordListResultDTO.java
  36. 14
      epmet-user/epmet-user-server/src/main/java/com/epmet/controller/PatrolRoutineWorkController.java
  37. 12
      epmet-user/epmet-user-server/src/main/java/com/epmet/controller/StaffPatrolController.java
  38. 4
      epmet-user/epmet-user-server/src/main/java/com/epmet/dao/PatrolRoutineWorkDao.java
  39. 7
      epmet-user/epmet-user-server/src/main/java/com/epmet/dao/StaffPatrolRecordDao.java
  40. 12
      epmet-user/epmet-user-server/src/main/java/com/epmet/service/PatrolRoutineWorkService.java
  41. 13
      epmet-user/epmet-user-server/src/main/java/com/epmet/service/StaffPatrolRecordService.java
  42. 67
      epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/PatrolRoutineWorkServiceImpl.java
  43. 58
      epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/StaffPatrolRecordServiceImpl.java
  44. 48
      epmet-user/epmet-user-server/src/main/resources/mapper/PatrolRoutineWorkDao.xml
  45. 33
      epmet-user/epmet-user-server/src/main/resources/mapper/StaffPatrolRecordDao.xml

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

@ -0,0 +1,21 @@
package com.epmet.dataaggre.dto.epmetuser.result;
import lombok.Data;
/**
* @ClassName StaffPatrolRecordDailyResultDTO
* @Description 工作人员巡查记录按日统计查询结果
* @Author wangxianzhang
* @Date 2022/1/4 4:08 下午
*/
@Data
public class StaffPatrolRecordDailyResultDTO {
private String staffId;
private String gridId;
private int patrolTimes;
private int totalTime;
private int patrolRoutineWorkTimes;
}

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

@ -3,12 +3,14 @@ package com.epmet.dataaggre.dto.govorg.form;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import java.util.Date;
import java.util.List;
@Data
public class GridMemberDataAnalysisFromDTO {
public interface listGridMemberDatas {}
public interface listGridMemberDatas4PcWork {}
private List<String> gridIds;
@ -19,4 +21,9 @@ public class GridMemberDataAnalysisFromDTO {
private String sort;
private Integer pageNo = 1;
private Integer pageSize = 10;
@NotBlank(message = "请选择组织", groups = { listGridMemberDatas4PcWork.class })
private String agencyId;
private Date startTime;
private Date endTime;
}

8
epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/govorg/result/GridMemberDataAnalysisResultDTO.java

@ -7,9 +7,12 @@ public class GridMemberDataAnalysisResultDTO {
private String gridId;
private String staffId;
private String mobile;
private String staffName;
private String orgName;
//private String gridName;
// 项目议题等
private Integer projectCount;
private Integer issueToProjectCount;
private Integer closedIssueCount;
@ -17,4 +20,9 @@ public class GridMemberDataAnalysisResultDTO {
private Integer projectTransferCount;
private Integer projectClosedCount;
// 巡查
private int patrolTimes;
private int totalTime;
private int patrolRoutineWorkTimes;
}

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

@ -82,6 +82,26 @@
<version>2.0.0</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>easyexcel</artifactId>
<version>3.0.3</version>
<!--<exclusions>
<exclusion>
<artifactId>poi</artifactId>
<groupId>org.apache.poi</groupId>
</exclusion>
<exclusion>
<artifactId>poi-ooxml</artifactId>
<groupId>org.apache.poi</groupId>
</exclusion>
<exclusion>
<artifactId>poi-ooxml-schemas</artifactId>
<groupId>org.apache.poi</groupId>
</exclusion>
</exclusions>-->
</dependency>
</dependencies>
<build>

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

@ -1,10 +1,12 @@
package com.epmet.dataaggre.controller;
import com.alibaba.excel.EasyExcel;
import com.epmet.commons.tools.annotation.LoginUser;
import com.epmet.commons.tools.annotation.RequirePermission;
import com.epmet.commons.tools.enums.RequirePermissionEnum;
import com.epmet.commons.tools.exception.EpmetErrorCode;
import com.epmet.commons.tools.exception.RenException;
import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.security.dto.TokenDto;
import com.epmet.commons.tools.security.user.LoginUserUtil;
import com.epmet.commons.tools.utils.Result;
@ -23,7 +25,9 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.CollectionUtils;
import org.springframework.web.bind.annotation.*;
import javax.validation.constraints.NotBlank;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
/**
@ -201,4 +205,74 @@ public class GovOrgController {
return new Result<CustomerGridDTO>().ok(govOrgService.getGridInfo(gridId));
}
/**
* pc 工作端网格员巡查统计
* @param input
* @return
*/
@PostMapping("pcwork/gridmember-analysis")
public Result getGridMemberAnalysis4PcWork(@RequestBody GridMemberDataAnalysisFromDTO input) {
ValidatorUtils.validateEntity(input, GridMemberDataAnalysisFromDTO.listGridMemberDatas4PcWork.class);
String agencyId = input.getAgencyId();
Date startTime = input.getStartTime();
Date endTime = input.getEndTime();
Integer pageNo = input.getPageNo();
Integer pageSize = input.getPageSize();
PageData<GridMemberDataAnalysisResultDTO> page = aggreGridService.getGridMemberDataAnalysis4PcWork(agencyId, pageNo, pageSize, startTime, endTime);
return new Result().ok(page);
}
/**
* pc 工作端网格员巡查统计导出excel
* @param input
* @return
*/
@PostMapping("pcwork/gridmember-analysis/export")
public Result exportGridMemberAnalysis4PcWork(@RequestBody GridMemberDataAnalysisFromDTO input) {
//ValidatorUtils.validateEntity(input, GridMemberDataAnalysisFromDTO.listGridMemberDatas4PcWork.class);
//
//String agencyId = input.getAgencyId();
//Date startTime = input.getStartTime();
//Date endTime = input.getEndTime();
//
//int pageNo = 0;
//int pageSize = 1000;
//
//PageData<GridMemberDataAnalysisResultDTO> page;
//do {
// page = aggreGridService.getGridMemberDataAnalysis4PcWork(agencyId, pageNo, pageSize, startTime, endTime);
// List<GridMemberDataAnalysisResultDTO> pageList = page.getList();
//
// EasyExcel
//
//
//} while (page.getList().size() == pageSize);
return null;
}
/**
* 网格员数据分析excel导出bean
*/
public class GridMemberDataAnalysisExcelExportBean {
private String staffName;
private String orgName;
// 项目议题等
private Integer projectCount;
private Integer issueToProjectCount;
private Integer closedIssueCount;
private Integer projectResponseCount;
private Integer projectTransferCount;
private Integer projectClosedCount;
// 巡查
private int patrolTimes;
private int totalTime;
private int patrolRoutineWorkTimes;
}
}

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

@ -52,4 +52,24 @@ public interface FactGridMemberStatisticsDailyDao extends BaseDao<FactGridMember
* @date 2021.07.05 16:17
*/
GridMemberDataAnalysisResultDTO getGridMemberIssueProjectStats(@Param("staffId") String staffId);
/**
* 查询截止日期的网格员数据统计累计值
* @param pids
* @param endDateID
* @return
*/
List<GridMemberDataAnalysisResultDTO> listGridMemberDataStatsAccumulate(@Param("pids") String pids,
@Param("endDateID") String endDateID);
/**
* 按照时间段查询网格员数据统计增量值
* @param pids
* @param startDateID
* @param endDateID
* @return
*/
List<GridMemberDataAnalysisResultDTO> listGridMemberDataStatsIncr(@Param("pids") String pids,
@Param("startDateID") String startDateID,
@Param("endDateID") String endDateID);
}

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

@ -22,6 +22,7 @@ import com.epmet.commons.mybatis.dao.BaseDao;
import com.epmet.dataaggre.dto.datastats.form.CustomerDataManageFormDTO;
import com.epmet.dataaggre.dto.datastats.result.CustomerDataManageResultDTO;
import com.epmet.dataaggre.dto.epmetuser.result.PatrolDailySumResult;
import com.epmet.dataaggre.dto.epmetuser.result.StaffPatrolRecordDailyResultDTO;
import com.epmet.dataaggre.entity.epmetuser.StatsStaffPatrolRecordDailyEntity;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
@ -51,4 +52,16 @@ public interface StatsStaffPatrolRecordDailyDao extends BaseDao<StatsStaffPatrol
* @author sun
*/
List<CustomerDataManageResultDTO.CustomerDataManage> patrolList(CustomerDataManageFormDTO formDTO);
/**
* 工作人员巡查记录按日统计查询
* @param userIds
* @param startDateID
* @param endDateID
* @return
*/
List<StaffPatrolRecordDailyResultDTO> listStaffPatrolRecordDailyAnalysis(@Param("gridPids") String gridPids,
@Param("userIds") List<String> userIds,
@Param("startDateId") String startDateID,
@Param("endDateID") String endDateID);
}

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

@ -1,7 +1,9 @@
package com.epmet.dataaggre.service;
import com.epmet.commons.tools.page.PageData;
import com.epmet.dataaggre.dto.govorg.result.GridMemberDataAnalysisResultDTO;
import java.util.Date;
import java.util.List;
/**
@ -17,4 +19,15 @@ public interface AggreGridService {
* @date 2021.07.05 11:17
*/
List<GridMemberDataAnalysisResultDTO> getGridMemberDataAnalysis(List<String> gridIds, String searchedStaffName, String currStaffId, String month, String sort, Integer pageNo, Integer pageSize);
/**
* 网格员巡查统计查询 pcwork端
* @param agencyId
* @param pageNo
* @param pageSize
* @param startTime
* @param endTime
* @return
*/
PageData<GridMemberDataAnalysisResultDTO> getGridMemberDataAnalysis4PcWork(String agencyId, Integer pageNo, Integer pageSize, Date startTime, Date endTime);
}

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

@ -13,6 +13,7 @@ import com.epmet.dataaggre.dto.resigroup.result.GroupActRankDetailDTO;
import javax.servlet.http.HttpServletResponse;
import java.text.ParseException;
import java.util.Date;
import java.util.List;
/**
@ -260,4 +261,15 @@ public interface DataStatsService {
* @author sun
*/
List<FactAgencyProjectMonthResultDTO> getProjectMonthIncr(ProjectTotalFormDTO formDTO);
/**
* 查询网格员项目统计数据4 pcwork
* @param pids 组织PIDS
* @param pageNo
* @param pageSize
* @param startDateID 查询起始时间匹配统计表的dateId列
* @param endDateID 查询结束时间匹配统计表的dateId列
* @return
*/
List<GridMemberDataAnalysisResultDTO> getGridMemberIssueProjectStats4PcWork(String pids, Integer pageNo, Integer pageSize, String startDateID, String endDateID);
}

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

@ -3,9 +3,12 @@
import com.alibaba.fastjson.JSON;
import com.epmet.commons.dynamic.datasource.annotation.DataSource;
import com.epmet.commons.tools.constant.NumConstant;
import com.epmet.commons.tools.enums.OrgLevelEnum;
import com.epmet.commons.tools.exception.RenException;
import com.epmet.commons.tools.utils.ConvertUtils;
import com.epmet.commons.tools.enums.OrgLevelEnum;
import com.epmet.commons.tools.exception.EpmetErrorCode;
import com.epmet.commons.tools.exception.EpmetException;
import com.epmet.commons.tools.exception.RenException;
import com.epmet.commons.tools.feign.ResultDataResolver;
import com.epmet.commons.tools.utils.ConvertUtils;
import com.epmet.commons.tools.utils.DateUtils;
import com.epmet.commons.tools.utils.ExcelUtils;
import com.epmet.dataaggre.constant.DataSourceConstant;
@ -29,12 +32,16 @@ import com.epmet.dataaggre.dto.govorg.result.GridMemberDataAnalysisResultDTO;
import com.epmet.dataaggre.dto.resigroup.result.GroupActRankDetailDTO;
import com.epmet.dataaggre.entity.datastats.DimAgencyEntity;
import com.epmet.dataaggre.entity.datastats.FactAgencyGovernDailyEntity;
import com.epmet.dataaggre.excel.CustomerDataManageExcel;
import com.epmet.dataaggre.entity.govorg.CustomerAgencyEntity;
import com.epmet.dataaggre.excel.CustomerDataManageExcel;
import com.epmet.dataaggre.service.datastats.DataStatsService;
import com.epmet.dataaggre.service.epmetuser.StatsStaffPatrolRecordDailyService;
import com.epmet.dataaggre.service.evaluationindex.EvaluationIndexService;
import com.epmet.dataaggre.service.opercrm.CustomerRelation;
import com.github.pagehelper.PageHelper;
import com.epmet.dataaggre.service.govorg.GovOrgService;
import com.epmet.dataaggre.service.opercrm.CustomerRelation;
import com.epmet.dto.CustomerAgencyDTO;
import com.epmet.feign.GovOrgOpenFeignClient;
import com.github.pagehelper.PageHelper;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
@ -59,7 +66,7 @@ import java.util.stream.Collectors;
@Service
@DataSource(DataSourceConstant.DATA_STATISTICAL)
@Slf4j
public class DataStatsServiceImpl implements DataStatsService {
public class DataStatsServiceImpl implements DataStatsService, ResultDataResolver {
@Autowired
private DataStatsDao dataStatsDao;
@Autowired
@ -71,7 +78,8 @@ public class DataStatsServiceImpl implements DataStatsService {
private FactGridMemberStatisticsDailyDao factGridMemberStatisticsDailyDao;
@Autowired
private StatsStaffPatrolRecordDailyService statsStaffPatrolRecordDailyService;
@Autowired
private GovOrgService govOrgService;
/**
* @Param formDTO
@ -2141,5 +2149,21 @@ public class DataStatsServiceImpl implements DataStatsService {
return dataStatsDao.getProjectMonthIncr(formDTO);
}
@Override
public List<GridMemberDataAnalysisResultDTO> getGridMemberIssueProjectStats4PcWork(String pids, Integer pageNo, Integer pageSize, String startDateID, String endDateID) {
boolean isStartDateIdBlank = StringUtils.isBlank(startDateID);
boolean isEndDateIdBlank = StringUtils.isBlank(endDateID);
if (isStartDateIdBlank && !isEndDateIdBlank) {
// 查询截止时间的累计值,直接查询表里的total即可
PageHelper.startPage(pageNo, pageSize);
return factGridMemberStatisticsDailyDao.listGridMemberDataStatsAccumulate(pids, endDateID);
} else if (!isStartDateIdBlank && !isEndDateIdBlank) {
// 查询时间段内的增量,需要使用表中的增量列计算
return factGridMemberStatisticsDailyDao.listGridMemberDataStatsIncr(pids, startDateID, endDateID);
} else {
throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "【pcwork查询网格员数据统计列表】传入时间条件有误");
}
}
}

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

@ -6,6 +6,7 @@ import com.epmet.dataaggre.dto.govorg.form.OrgStaffListFormDTO;
import com.epmet.dataaggre.dto.govorg.form.StaffDetailV2FormDTO;
import com.epmet.dataaggre.dto.govorg.result.GridStaffResultDTO;
import com.epmet.dataaggre.dto.govproject.result.ProjectAnalysisResultDTO;
import com.epmet.dataaggre.entity.epmetuser.CustomerStaffEntity;
import com.epmet.dto.IcResiUserDTO;
import com.epmet.dto.UserBaseInfoDTO;
@ -167,4 +168,11 @@ public interface EpmetUserService {
* @author sun
*/
List<ProjectAnalysisResultDTO.Home> getHomeUserList(String homeId, String icUserId);
/**
* 使用staffId批量查询staff信息
* @param userIdsPart
* @return
*/
List<CustomerStaffEntity> listStaffsByIds(List<String> userIdsPart);
}

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

@ -21,6 +21,7 @@ import com.epmet.commons.mybatis.service.BaseService;
import com.epmet.dataaggre.dto.datastats.form.CustomerDataManageFormDTO;
import com.epmet.dataaggre.dto.datastats.result.CustomerDataManageResultDTO;
import com.epmet.dataaggre.dto.epmetuser.result.PatrolDailySumResult;
import com.epmet.dataaggre.dto.epmetuser.result.StaffPatrolRecordDailyResultDTO;
import com.epmet.dataaggre.entity.epmetuser.StatsStaffPatrolRecordDailyEntity;
import java.util.List;
@ -47,4 +48,14 @@ public interface StatsStaffPatrolRecordDailyService extends BaseService<StatsSta
* @author sun
*/
List<CustomerDataManageResultDTO.CustomerDataManage> patrolList(CustomerDataManageFormDTO formDTO);
/**
* 查询工作人员巡查记录按日统计
* @param gridPids 记录所属的网格的pids
* @param userIds
* @param startDateID
* @param endDateID
* @return
*/
List<StaffPatrolRecordDailyResultDTO> listStaffPatrolRecordDailyAnalysis(String gridPids, List<String> userIds, String startDateID, String endDateID);
}

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

@ -735,5 +735,11 @@ public class EpmetUserServiceImpl implements EpmetUserService {
return icResiUserDao.getHomeUserList(homeId, icUserId);
}
@Override
public List<CustomerStaffEntity> listStaffsByIds(List<String> userIds) {
LambdaQueryWrapper<CustomerStaffEntity> query = new LambdaQueryWrapper<>();
query.in(CustomerStaffEntity::getUserId, userIds);
return customerStaffDao.selectList(query);
}
}

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

@ -7,6 +7,7 @@ import com.epmet.dataaggre.dao.epmetuser.StatsStaffPatrolRecordDailyDao;
import com.epmet.dataaggre.dto.datastats.form.CustomerDataManageFormDTO;
import com.epmet.dataaggre.dto.datastats.result.CustomerDataManageResultDTO;
import com.epmet.dataaggre.dto.epmetuser.result.PatrolDailySumResult;
import com.epmet.dataaggre.dto.epmetuser.result.StaffPatrolRecordDailyResultDTO;
import com.epmet.dataaggre.entity.epmetuser.StatsStaffPatrolRecordDailyEntity;
import com.epmet.dataaggre.service.epmetuser.StatsStaffPatrolRecordDailyService;
import lombok.extern.slf4j.Slf4j;
@ -47,4 +48,8 @@ public class StatsStaffPatrolRecordDailyServiceImpl extends BaseServiceImpl<Stat
return baseDao.patrolList(formDTO);
}
@Override
public List<StaffPatrolRecordDailyResultDTO> listStaffPatrolRecordDailyAnalysis(String gridPids, List<String> userIds, String startDateID, String endDateID) {
return baseDao.listStaffPatrolRecordDailyAnalysis(gridPids, userIds, startDateID, endDateID);
}
}

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

@ -1,18 +1,28 @@
package com.epmet.dataaggre.service.impl;
import com.epmet.commons.tools.exception.EpmetErrorCode;
import com.epmet.commons.tools.exception.EpmetException;
import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.redis.common.CustomerOrgRedis;
import com.epmet.commons.tools.redis.common.bean.GridInfoCache;
import com.epmet.commons.tools.utils.DateUtils;
import com.epmet.dataaggre.dto.epmetuser.result.StaffPatrolRecordDailyResultDTO;
import com.epmet.dataaggre.dto.govorg.CustomerGridDTO;
import com.epmet.dataaggre.dto.govorg.result.GridMemberDataAnalysisResultDTO;
import com.epmet.dataaggre.entity.epmetuser.CustomerStaffEntity;
import com.epmet.dataaggre.entity.govorg.CustomerAgencyEntity;
import com.epmet.dataaggre.service.AggreGridService;
import com.epmet.dataaggre.service.datastats.DataStatsService;
import com.epmet.dataaggre.service.epmetuser.EpmetUserService;
import com.epmet.dataaggre.service.epmetuser.StatsStaffPatrolRecordDailyService;
import com.epmet.dataaggre.service.govorg.GovOrgService;
import org.apache.commons.collections4.CollectionUtils;
import com.github.pagehelper.PageInfo;
import com.google.common.collect.Lists;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.*;
import java.util.function.Function;
import java.util.stream.Collectors;
@Service
@ -24,6 +34,12 @@ public class AggreGridServiceImpl implements AggreGridService {
@Autowired
private DataStatsService dataStatsService;
@Autowired
private StatsStaffPatrolRecordDailyService statsStaffPatrolRecordDailyService;
@Autowired
private EpmetUserService epmetUserService;
@Override
public List<GridMemberDataAnalysisResultDTO> getGridMemberDataAnalysis(
List<String> gridIds,
@ -48,4 +64,98 @@ public class AggreGridServiceImpl implements AggreGridService {
return records;
}
@Override
public PageData<GridMemberDataAnalysisResultDTO> getGridMemberDataAnalysis4PcWork(String agencyId, Integer pageNo, Integer pageSize, Date startTime, Date endTime) {
// 计算出开始dateId和结束endId
String startDateID = DateUtils.format(startTime, DateUtils.DATE_PATTERN_YYYYMMDD);
String endDateID = DateUtils.format(endTime, DateUtils.DATE_PATTERN_YYYYMMDD);
// 拿到组织pids,含自身
String pids = getPidsByAgencyId(agencyId);
// 一.查询网格员数据统计相关信息
List<GridMemberDataAnalysisResultDTO> datas = dataStatsService.getGridMemberIssueProjectStats4PcWork(pids, pageNo, pageSize, startDateID, endDateID);
long total = new PageInfo<>(datas).getTotal();
// 二.匹配用户巡查,例行工作数据
int partSize = 100;
// 将数据列表结构化 <staffId:<gridId:data>>
HashMap<String, Map<String, GridMemberDataAnalysisResultDTO>> structedData = new HashMap<>();
for (GridMemberDataAnalysisResultDTO data : datas) {
// 填充gridName
GridInfoCache gridInfo = CustomerOrgRedis.getGridInfo(data.getGridId());
Optional.ofNullable(gridInfo).ifPresent((d) -> data.setOrgName(d.getGridName()));
// 生成结构化map
Map<String, GridMemberDataAnalysisResultDTO> gridAndData = structedData.get(data.getStaffId());
if (gridAndData == null) {
HashMap<String, GridMemberDataAnalysisResultDTO> gat = new HashMap<>();
gat.put(data.getGridId(), data);
structedData.put(data.getStaffId(), gat);
} else {
Map<String, GridMemberDataAnalysisResultDTO> gat = structedData.get(data.getStaffId());
gat.put(data.getGridId(), data);
}
}
ArrayList<String> userIds = new ArrayList<>(structedData.keySet());
// 分片
List<List<String>> userIdsParts = Lists.partition(userIds, partSize);
for (List<String> userIdsPart : userIdsParts) {
// 批量查询出用户信息
List<CustomerStaffEntity> staffInfos = epmetUserService.listStaffsByIds(userIdsPart);
//Map<String, CustomerStaffEntity> staffIdAndStaffInfo = staffInfos.stream().collect(Collectors.toMap((s) -> s.getUserId(), Function.identity()));
for (CustomerStaffEntity staffInfo : staffInfos) {
Map<String, GridMemberDataAnalysisResultDTO> gridAndData = structedData.get(staffInfo.getUserId());
if (gridAndData != null) {
gridAndData.forEach((k, v) -> v.setMobile(staffInfo.getMobile()));
}
}
// 批量查询出巡查信息
List<StaffPatrolRecordDailyResultDTO> patrolDatas = statsStaffPatrolRecordDailyService.listStaffPatrolRecordDailyAnalysis(pids, userIdsPart, startDateID, endDateID);
for (StaffPatrolRecordDailyResultDTO d : patrolDatas) {
Map<String, GridMemberDataAnalysisResultDTO> gridAndData = structedData.get(d.getStaffId());
if (gridAndData != null) {
GridMemberDataAnalysisResultDTO data = gridAndData.get(d.getGridId());
if (data != null) {
data.setPatrolTimes(d.getPatrolTimes());
data.setTotalTime(d.getTotalTime());
data.setPatrolRoutineWorkTimes(d.getPatrolRoutineWorkTimes());
}
}
}
}
return new PageData<GridMemberDataAnalysisResultDTO>(datas, total);
}
/**
* 使用agencyId,获取pidsagencyPids:agencyId
* @param agencyId
* @return
*/
private String getPidsByAgencyId(String agencyId) {
CustomerAgencyEntity agencyInfo = govOrgService.getAgencyInfo(agencyId);
if (agencyInfo == null) {
String errorMsg = "【网格员数据统计查询pcwork】查询组织信息返回为null";
throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), errorMsg, errorMsg);
}
String pidsAndAgencyIdPath = agencyInfo.getPids().concat(":").concat(agencyId);
if (pidsAndAgencyIdPath.startsWith(":")) {
pidsAndAgencyIdPath = pidsAndAgencyIdPath.replaceFirst(":", "");
}
return pidsAndAgencyIdPath;
}
}

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

@ -131,5 +131,54 @@
and member.DEL_FLAG = 0
</select>
<select id="listGridMemberDataStatsAccumulate"
resultType="com.epmet.dataaggre.dto.govorg.result.GridMemberDataAnalysisResultDTO">
select member.id,
member.date_id,
member.month_id,
member.year_id,
member.customer_id,
member.agency_id,
member.grid_id,
member.pid,
member.pids,
member.staff_id,
member.staff_name,
member.PROJECT_COUNT project_count,
member.ISSUE_TO_PROJECT_COUNT issue_to_project_count,
member.CLOSED_ISSUE_COUNT closed_issue_count,
member.PROJECT_RESPONSE_COUNT project_response_count,
member.PROJECT_TRANSFER_COUNT project_transfer_count,
member.CLOSED_ISSUE_COUNT project_closed_count
from fact_grid_member_statistics_daily member
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'
) dim on (member.DATE_ID = dim.dateId)
where member.PIDS like CONCAT(#{pids}, '%') and member.DEL_FLAG = '0'
order by convert(member.staff_name using gbk) asc, member.GRID_ID asc
</select>
<select id="listGridMemberDataStatsIncr"
resultType="com.epmet.dataaggre.dto.govorg.result.GridMemberDataAnalysisResultDTO">
select member.grid_id,
member.staff_id,
member.STAFF_NAME,
sum(member.project_incr) project_count,
sum(member.issue_to_project_incr) issue_to_project_count,
sum(member.closed_issue_incr) closed_issue_count,
sum(member.project_response_incr) project_response_count,
sum(member.project_transfer_incr) project_transfer_count,
sum(member.project_closed_incr) project_closed_count
from fact_grid_member_statistics_daily member
where member.PIDS like CONCAT(#{pids}, '%')
and member.DATE_ID >= #{startDateID}
and member.DATE_ID <![CDATA[<]]> #{endDateID}
and member.DEL_FLAG = '0'
group by member.grid_id,
member.staff_id,
member.STAFF_NAME,
order by convert(member.staff_name using gbk) asc, member.GRID_ID asc
</select>
</mapper>

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

@ -57,4 +57,25 @@
GROUP BY t.grid_id, t.staffId
</select>
<select id="listStaffPatrolRecordDailyAnalysis"
resultType="com.epmet.dataaggre.dto.epmetuser.result.StaffPatrolRecordDailyResultDTO">
select sprd.STAFF_ID,
sprd.GRID_ID,
sum(PATROL_TOTAL) as patrol_times,
sum(TOTAL_TIME) as total_time,
sum(ROUTINE_WORK_COUNT) as patrol_routine_work_times
from stats_staff_patrol_record_daily sprd
where
sprd.GRID_PIDS like CONCAT(#{gridPids}, '%')
and sprd.STAFF_ID in
<foreach collection="userIds" open="(" item="userId" separator="," close=")">
#{userId}
</foreach>
and sprd.DATE_ID >= #{startDateId}
and sprd.DATE_ID <![CDATA[<]]> #{endDateID}
group by
sprd.STAFF_ID,
sprd.GRID_ID
</select>
</mapper>

4
epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/controller/screen/IndexController.java

@ -67,10 +67,6 @@ public class IndexController {
//area_code升级,新增此参数
monthBarchartFormDTO.setCustomerId(customerId);
ValidatorUtils.validateEntity(monthBarchartFormDTO, MonthBarchartFormDTO.MonthBarchart.class);
String monthId = monthBarchartFormDTO.getMonthId();
if ("202212".equals(monthId)){
monthBarchartFormDTO.setMonthId("202112");
}
return new Result<MonthBarchartResultDTO>().ok(indexService.monthBarchart(monthBarchartFormDTO));
}

21
epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/resi/ResiActDetailResultDTO.java

@ -175,4 +175,25 @@ public class ResiActDetailResultDTO implements Serializable {
* 取消活动的时间yyyy-MM-dd HH:mm
*/
private String cancelTime;
/**
* 活动类型爱心活动heart 联建活动party
*/
private String actType;
/**
* 联建单位
*/
private String unitId;
private String unitName;
/**
* 活动目标
*/
private String target;
/**
* 服务事项
*/
private String serviceMatter;
private String serviceMatterName;
}

5
epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/resi/ResiActInfoResultDTO.java

@ -87,4 +87,9 @@ public class ResiActInfoResultDTO implements Serializable {
*用户报名状态no_signed_up: 未报名signed_up: 已报名
*/
private String signupFlag;
/**
* 活动类型 爱心活动heart 联建活动party
*/
private String actType;
}

5
epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/resi/ResiInProgressActResultDTO.java

@ -41,4 +41,9 @@ public class ResiInProgressActResultDTO implements Serializable {
* 标题
*/
private String title;
/**
* 活动类型 爱心活动heart 联建活动party
*/
private String actType;
}

5
epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/resi/ResiLatestActResultDTO.java

@ -82,4 +82,9 @@ public class ResiLatestActResultDTO implements Serializable {
* 活动状态(报名中signing_up已报满enough截止报名: end_sign_up; 已开始 in_progress;
*/
private String actCurrentState;
/**
* 活动类型 爱心活动heart 联建活动party
*/
private String actType;
}

5
epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/resi/ResiLookBackActResultDTO.java

@ -66,4 +66,9 @@ public class ResiLookBackActResultDTO implements Serializable {
* 活动状态(已结束finished)
*/
private String actCurrentState;
/**
* 活动类型 爱心活动heart 联建活动party
*/
private String actType;
}

5
epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/resi/ResiMyActResultDTO.java

@ -82,4 +82,9 @@ public class ResiMyActResultDTO implements Serializable {
* 活动当前状态(审核中auditing审核通过passed审核不通过refused已结束canceld)
*/
private String actCurrentState;
/**
* 活动类型 爱心活动heart 联建活动party
*/
private String actType;
}

4
epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/work/CanceledActResultDTO.java

@ -57,4 +57,8 @@ public class CanceledActResultDTO implements Serializable {
* 活动地点
*/
private String actAddress;
/**
* 活动类型 爱心活动heart 联建活动party
*/
private String actType;
}

5
epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/work/FinishedActResultDTO.java

@ -58,4 +58,9 @@ public class FinishedActResultDTO implements Serializable {
* 活动地点
*/
private String actAddress;
/**
* 活动类型 爱心活动heart 联建活动party
*/
private String actType;
}

5
epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/work/InProgressActResultDTO.java

@ -82,4 +82,9 @@ public class InProgressActResultDTO implements Serializable {
* 活动地点
*/
private String actAddress;
/**
* 活动类型 爱心活动heart 联建活动party
*/
private String actType;
}

5
epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/constant/ActConstant.java

@ -169,4 +169,9 @@ public interface ActConstant {
* 活动类型-联建活动
*/
String PARTY = "party";
/**
* 服务事项code
*/
String SERVICE_MATTER_CODE = "1010";
}

26
epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/ActInfoServiceImpl.java

@ -22,6 +22,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.epmet.commons.mybatis.service.impl.BaseServiceImpl;
import com.epmet.commons.tools.constant.FieldConstant;
import com.epmet.commons.tools.constant.NumConstant;
import com.epmet.commons.tools.constant.StrConstant;
import com.epmet.commons.tools.exception.EpmetErrorCode;
import com.epmet.commons.tools.exception.RenException;
import com.epmet.commons.tools.page.PageData;
@ -33,12 +34,17 @@ import com.epmet.dao.ActInfoDao;
import com.epmet.dao.ActUserRelationDao;
import com.epmet.dao.HeartUserInfoDao;
import com.epmet.dto.ActInfoDTO;
import com.epmet.dto.IcPartyUnitDTO;
import com.epmet.dto.form.demand.SubCodeFormDTO;
import com.epmet.dto.form.resi.*;
import com.epmet.dto.result.demand.OptionDTO;
import com.epmet.dto.result.resi.*;
import com.epmet.entity.ActInfoEntity;
import com.epmet.entity.ActUserRelationEntity;
import com.epmet.service.ActInfoService;
import com.epmet.service.ActUserRelationService;
import com.epmet.service.IcPartyUnitService;
import com.epmet.service.IcResiDemandDictService;
import com.epmet.utils.CaculateDistance;
import org.apache.commons.lang3.StringUtils;
import org.apache.logging.log4j.LogManager;
@ -47,7 +53,9 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.*;
import java.util.stream.Collectors;
/**
* 活动信息
@ -68,6 +76,10 @@ public class ActInfoServiceImpl extends BaseServiceImpl<ActInfoDao, ActInfoEntit
@Autowired
private HeartUserInfoDao heartUserInfoDao;
@Resource
private IcResiDemandDictService icResiDemandDictService;
@Resource
private IcPartyUnitService icPartyUnitService;
@Override
public PageData<ActInfoDTO> page(Map<String, Object> params) {
@ -245,6 +257,20 @@ public class ActInfoServiceImpl extends BaseServiceImpl<ActInfoDao, ActInfoEntit
// 获取用户报名状态
String currentUserStatus = getCurrentUserStatus(formDto.getActId(), formDto.getUserId());
detailResultDTO.setCurrentUserStatus(currentUserStatus);
if (StringUtils.isNotBlank(detailResultDTO.getServiceMatter())) {
//获取服务事项
SubCodeFormDTO codeFormDTO = new SubCodeFormDTO();
codeFormDTO.setCustomerId(tokenDto.getCustomerId());
codeFormDTO.setParentCategoryCode(ActConstant.SERVICE_MATTER_CODE);
Map<String, String> categoryMap = icResiDemandDictService.querySubCodeList(codeFormDTO).stream().collect(Collectors.toMap(OptionDTO::getValue, OptionDTO::getLabel));
detailResultDTO.setServiceMatterName(categoryMap.get(detailResultDTO.getServiceMatter()));
}
if (StringUtils.isNotBlank(detailResultDTO.getUnitId())) {
//获取单位名称
IcPartyUnitDTO unitDTO = icPartyUnitService.get(detailResultDTO.getUnitId());
detailResultDTO.setUnitName(null != unitDTO ? unitDTO.getUnitName() : StrConstant.EPMETY_STR);
}
return new Result<ResiActDetailResultDTO>().ok(detailResultDTO);
}

13
epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/WorkActServiceImpl.java

@ -103,10 +103,7 @@ public class WorkActServiceImpl implements WorkActService {
@Resource
private IcPartyUnitService icPartyUnitService;
/**
* 服务事项code
*/
private static final String SERVICE_MATTER_CODE = "1010";
/**
* @author yinzuomei
@ -787,7 +784,7 @@ public class WorkActServiceImpl implements WorkActService {
//获取服务事项
SubCodeFormDTO codeFormDTO = new SubCodeFormDTO();
codeFormDTO.setCustomerId(customerId);
codeFormDTO.setParentCategoryCode(SERVICE_MATTER_CODE);
codeFormDTO.setParentCategoryCode(ActConstant.SERVICE_MATTER_CODE);
Map<String, String> categoryMap = icResiDemandDictService.querySubCodeList(codeFormDTO).stream().collect(Collectors.toMap(OptionDTO::getValue, OptionDTO::getLabel));
canceledActDetailResultDTO.setServiceMatterName(categoryMap.get(canceledActDetailResultDTO.getServiceMatter()));
}
@ -845,7 +842,7 @@ public class WorkActServiceImpl implements WorkActService {
//获取服务事项
SubCodeFormDTO codeFormDTO = new SubCodeFormDTO();
codeFormDTO.setCustomerId(formDTO.getCustomerId());
codeFormDTO.setParentCategoryCode(SERVICE_MATTER_CODE);
codeFormDTO.setParentCategoryCode(ActConstant.SERVICE_MATTER_CODE);
Map<String, String> categoryMap = icResiDemandDictService.querySubCodeList(codeFormDTO).stream().collect(Collectors.toMap(OptionDTO::getValue, OptionDTO::getLabel));
resultDTO.setServiceMatterName(categoryMap.get(resultDTO.getServiceMatter()));
}
@ -926,7 +923,7 @@ public class WorkActServiceImpl implements WorkActService {
//获取服务事项
SubCodeFormDTO codeFormDTO = new SubCodeFormDTO();
codeFormDTO.setCustomerId(customerId);
codeFormDTO.setParentCategoryCode(SERVICE_MATTER_CODE);
codeFormDTO.setParentCategoryCode(ActConstant.SERVICE_MATTER_CODE);
Map<String, String> categoryMap = icResiDemandDictService.querySubCodeList(codeFormDTO).stream().collect(Collectors.toMap(OptionDTO::getValue, OptionDTO::getLabel));
resultDTO.setServiceMatterName(categoryMap.get(resultDTO.getServiceMatter()));
}
@ -1322,7 +1319,7 @@ public class WorkActServiceImpl implements WorkActService {
//获取服务事项
SubCodeFormDTO codeFormDTO = new SubCodeFormDTO();
codeFormDTO.setCustomerId(customerId);
codeFormDTO.setParentCategoryCode(SERVICE_MATTER_CODE);
codeFormDTO.setParentCategoryCode(ActConstant.SERVICE_MATTER_CODE);
Map<String, String> categoryMap = icResiDemandDictService.querySubCodeList(codeFormDTO).stream().collect(Collectors.toMap(OptionDTO::getValue, OptionDTO::getLabel));
resultDTO.setServiceMatterName(categoryMap.get(resultDTO.getServiceMatter()));
}

53
epmet-module/epmet-heart/epmet-heart-server/src/main/resources/mapper/ActInfoDao.xml

@ -63,7 +63,8 @@
i.ACT_QUOTA actQuota,
IFNULL(c.signupNum, 0) signupNum, -- 已报名人数
'signing_up' AS actCurrentState, -- 活动状态:报名中,未报满
IF(u.USER_ID = #{userId},'signed_up','no_signed_up') as signupFlag
IF(u.USER_ID = #{userId},'signed_up','no_signed_up') as signupFlag,
i.ACT_TYPE as actType
FROM act_info i
LEFT JOIN act_user_relation u ON i.ID = u.ACT_ID AND U.DEL_FLAG = '0' AND u.`STATUS` != 'refused' AND u.`STATUS` != 'canceled' AND u.USER_ID = #{userId}
LEFT JOIN (SELECT count(1) signupNum, re.ACT_ID from act_user_relation re WHERE re.DEL_FLAG = '0' AND re.`STATUS` != 'refused' AND re.`STATUS` != 'canceled' GROUP BY re.ACT_ID) c ON c.ACT_ID = i.ID
@ -89,7 +90,8 @@
i.ACT_QUOTA actQuota,
IFNULL(c.signupNum, 0) signupNum, -- 已报名人数
'enough' AS actCurrentState, -- 活动状态:报名中,已报满
IF(u.USER_ID = #{userId},'signed_up','no_signed_up') as signupFlag
IF(u.USER_ID = #{userId},'signed_up','no_signed_up') as signupFlag,
i.ACT_TYPE as actType
FROM act_info i
LEFT JOIN act_user_relation u ON i.ID = u.ACT_ID AND U.DEL_FLAG = '0' AND u.`STATUS` != 'refused' AND u.`STATUS` != 'canceled' AND u.USER_ID = #{userId}
LEFT JOIN (SELECT count(1) signupNum, re.ACT_ID from act_user_relation re WHERE re.DEL_FLAG = '0' AND re.`STATUS` != 'refused' AND re.`STATUS` != 'canceled' GROUP BY re.ACT_ID) c ON c.ACT_ID = i.ID
@ -116,7 +118,8 @@
i.ACT_QUOTA actQuota,
IFNULL(c.signupNum, 0) signupNum, -- 已报名人数
'end_sign_up' AS actCurrentState, -- 活动状态:未开始
IF(u.USER_ID = #{userId},'signed_up','no_signed_up') as signupFlag
IF(u.USER_ID = #{userId},'signed_up','no_signed_up') as signupFlag,
i.ACT_TYPE as actType
FROM act_info i
LEFT JOIN act_user_relation u ON i.ID = u.ACT_ID AND U.DEL_FLAG = '0' AND u.`STATUS` != 'refused' AND u.`STATUS` != 'canceled' AND u.USER_ID = #{userId}
LEFT JOIN (SELECT count(1) signupNum, re.ACT_ID from act_user_relation re WHERE re.DEL_FLAG = '0' AND re.`STATUS` != 'refused' AND re.`STATUS` != 'canceled' GROUP BY re.ACT_ID) c ON c.ACT_ID = i.ID
@ -142,7 +145,8 @@
i.ACT_QUOTA actQuota,
IFNULL(c.signupNum, 0) signupNum, -- 已报名人数
'in_progress' AS actCurrentState, -- 活动状态:进行中
IF(u.USER_ID = #{userId},'signed_up','no_signed_up') as signupFlag
IF(u.USER_ID = #{userId},'signed_up','no_signed_up') as signupFlag,
i.ACT_TYPE as actType
FROM act_info i
LEFT JOIN act_user_relation u ON i.ID = u.ACT_ID AND U.DEL_FLAG = '0' AND u.`STATUS` != 'refused' AND u.`STATUS` != 'canceled' AND u.USER_ID = #{userId}
LEFT JOIN (SELECT count(1) signupNum, re.ACT_ID from act_user_relation re WHERE re.DEL_FLAG = '0' AND re.`STATUS` != 'refused' AND re.`STATUS` != 'canceled' GROUP BY re.ACT_ID) c ON c.ACT_ID = i.ID
@ -173,7 +177,8 @@
when i.ACT_STATUS = 'canceled'
then 'canceled'
end as actCurrentState, -- 活动状态:已结束、已取消
IF(u.USER_ID = #{userId},'signed_up','no_signed_up') as signupFlag
IF(u.USER_ID = #{userId},'signed_up','no_signed_up') as signupFlag,
i.ACT_TYPE as actType
FROM act_info i
LEFT JOIN act_user_relation u ON i.ID = u.ACT_ID AND U.DEL_FLAG = '0' AND u.`STATUS` != 'refused' AND u.`STATUS` != 'canceled' AND u.USER_ID = #{userId}
LEFT JOIN (SELECT count(1) signupNum, re.ACT_ID from act_user_relation re WHERE re.DEL_FLAG = '0' AND re.`STATUS` != 'refused' AND re.`STATUS` != 'canceled' GROUP BY re.ACT_ID) c ON c.ACT_ID = i.ID
@ -197,7 +202,8 @@
i.ACT_QUOTA_CATEGORY actQuotaCategory, -- 活动名额类型(true:固定名额(1) false: 不限制名额(0))
i.ACT_QUOTA actQuota,
IFNULL(c.signupNum, 0) signupNum, -- 已报名人数
'auditing' AS actCurrentState -- 活动状态
'auditing' AS actCurrentState, -- 活动状态
i.act_type as actType
FROM act_user_relation u LEFT JOIN act_info i ON i.ID = u.ACT_ID
LEFT JOIN (SELECT count(1) signupNum, re.ACT_ID from act_user_relation re WHERE re.DEL_FLAG = '0' AND re.`STATUS` != 'refused' AND re.`STATUS` != 'canceled' GROUP BY re.ACT_ID) c ON c.ACT_ID = i.ID
WHERE i.DEL_FLAG = '0'
@ -222,7 +228,8 @@
i.ACT_QUOTA_CATEGORY actQuotaCategory, -- 活动名额类型(true:固定名额(1) false: 不限制名额(0))
i.ACT_QUOTA actQuota,
IFNULL(c.signupNum, 0) signupNum, -- 已报名人数
'passed' AS actCurrentState -- 活动状态
'passed' AS actCurrentState, -- 活动状态
i.act_type as actType
FROM act_user_relation u LEFT JOIN act_info i ON i.ID = u.ACT_ID
LEFT JOIN (SELECT count(1) signupNum, re.ACT_ID from act_user_relation re WHERE re.DEL_FLAG = '0' AND re.`STATUS` != 'refused' AND re.`STATUS` != 'canceled' GROUP BY re.ACT_ID) c ON c.ACT_ID = i.ID
WHERE i.DEL_FLAG = '0'
@ -247,7 +254,8 @@
i.ACT_QUOTA_CATEGORY actQuotaCategory, -- 活动名额类型(true:固定名额(1) false: 不限制名额(0))
i.ACT_QUOTA actQuota,
IFNULL(c.signupNum, 0) signupNum, -- 已报名人数
'refused' AS actCurrentState -- 活动状态
'refused' AS actCurrentState, -- 活动状态
i.act_type as actType
FROM act_user_relation u LEFT JOIN act_info i ON i.ID = u.ACT_ID
LEFT JOIN (SELECT count(1) signupNum, re.ACT_ID from act_user_relation re WHERE re.DEL_FLAG = '0' AND re.`STATUS` != 'refused' AND re.`STATUS` != 'canceled' GROUP BY re.ACT_ID) c ON c.ACT_ID = i.ID
WHERE i.DEL_FLAG = '0'
@ -272,7 +280,8 @@
i.ACT_QUOTA_CATEGORY actQuotaCategory, -- 活动名额类型(true:固定名额(1) false: 不限制名额(0))
i.ACT_QUOTA actQuota,
IFNULL(c.signupNum, 0) signupNum, -- 已报名人数
'canceld' AS actCurrentState -- 活动状态
'canceld' AS actCurrentState, -- 活动状态
i.act_type as actType
FROM act_user_relation u LEFT JOIN act_info i ON i.ID = u.ACT_ID
LEFT JOIN (SELECT count(1) signupNum, re.ACT_ID from act_user_relation re WHERE re.DEL_FLAG = '0' AND re.`STATUS` != 'refused' AND re.`STATUS` != 'canceled' GROUP BY re.ACT_ID) c ON c.ACT_ID = i.ID
WHERE i.DEL_FLAG = '0'
@ -309,7 +318,8 @@
then 'end_sign_up'
when <![CDATA[ DATE_FORMAT(i.ACT_START_TIME,'%Y-%m-%d %H:%i:%s') <= ]]> NOW()
then 'in_progress'
end as actCurrentState
end as actCurrentState,
i.act_type as actType
FROM act_info i
LEFT JOIN (SELECT count(1) signupNum, re.ACT_ID from act_user_relation re WHERE re.DEL_FLAG = '0' AND re.`STATUS` != 'refused' AND re.`STATUS` != 'canceled' GROUP BY re.ACT_ID) c ON c.ACT_ID = i.ID
WHERE i.DEL_FLAG = '0'
@ -329,7 +339,8 @@
'您报名的活动即将开始'
ELSE
'活动进行中'
END title
END title,
i.act_type as actType
FROM act_info i LEFT JOIN act_user_relation r ON i.ID = r.ACT_ID
WHERE i.DEL_FLAG = '0'
AND r.DEL_FLAG = '0'
@ -349,7 +360,8 @@
a.actStartTime,
a.actEndTime,
a.actAddress,
a.actCurrentState
a.actCurrentState,
a.actType
FROM(
SELECT
i.ID actId,
@ -360,7 +372,8 @@
DATE_FORMAT(i.ACT_END_TIME,'%Y-%m-%d %H:%i') actEndTime,
i.ACT_ADDRESS actAddress,
'finished' actCurrentState,
i.CREATED_TIME
i.CREATED_TIME,
i.ACT_TYPE as actType
FROM act_info i
LEFT JOIN act_live_rec r ON r.ACT_ID = i.ID AND r.DEL_FLAG = '0'
WHERE i.DEL_FLAG = '0'
@ -432,7 +445,10 @@
IF(aur.SIGN_IN_FLAG = 'signed_in', true , false ) as isSignUp, -- 是否已签到(true已签到,false未签到)
i.ACT_STATUS actStatus,
i.CANCEL_REASON cancelReason,
DATE_FORMAT(i.CANCEL_TIME,'%Y-%m-%d %H:%i') cancelTime
DATE_FORMAT(i.CANCEL_TIME,'%Y-%m-%d %H:%i') cancelTime,
i.UNIT_ID AS unitId,
i.SERVICE_MATTER AS serviceMatter,
i.TARGET AS target
FROM
act_info i
LEFT JOIN (SELECT count(1) signupNum, re.ACT_ID from act_user_relation re WHERE re.DEL_FLAG = '0' AND re.`STATUS` != 'refused' AND re.`STATUS` != 'canceled' GROUP BY re.ACT_ID) c ON c.ACT_ID = i.ID
@ -516,7 +532,8 @@
) AS signedUp,
ai.SIGN_UP_END_TIME as signUpEndTime,
ai.SIGN_UP_START_TIME as signUpStartTime,
ai.ACT_ADDRESS as actAddress
ai.ACT_ADDRESS as actAddress,
ai.act_type as actType
FROM
act_info ai
WHERE
@ -537,7 +554,8 @@
ai.ACT_END_TIME AS actEndTime,
ai.CANCEL_TIME AS cancelTime,
ai.CANCEL_REASON AS cancelReason,
ai.ACT_ADDRESS as actAddress
ai.ACT_ADDRESS as actAddress,
ai.act_type as actType
FROM
act_info ai
WHERE
@ -559,7 +577,8 @@
ai.ACT_END_TIME AS actEndTime,
ai.ACTUAL_START_TIME as actualStartTime,
ai.ACTUAL_END_TIME as actualEndTime,
ai.ACT_ADDRESS as actAddress
ai.ACT_ADDRESS as actAddress,
ai.act_type as actType
FROM
act_info ai
WHERE

45
epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/PcWorkListFormDTO.java

@ -0,0 +1,45 @@
package com.epmet.dto.form;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
/**
* @Author zxc
* @DateTime 2022/1/4 2:00 下午
* @DESC
*/
@Data
public class PcWorkListFormDTO implements Serializable {
private static final long serialVersionUID = -3522636529743412120L;
public interface PcWorkListForm{}
// @NotBlank(message = "staffId不能为空",groups = PcWorkListForm.class)
private String staffId;
@NotBlank(message = "endTime不能为空",groups = PcWorkListForm.class)
private String endTime;
private String startTime;
@NotBlank(message = "orgId不能为空",groups = PcWorkListForm.class)
private String orgId;
@NotBlank(message = "orgType不能为空",groups = PcWorkListForm.class)
private String orgType;
@NotNull(message = "pageSize不能为空",groups = PcWorkListForm.class)
private Integer pageSize;
@NotNull(message = "pageNo不能为空",groups = PcWorkListForm.class)
private Integer pageNo;
/**
* 是否分页默认分页
*/
private Boolean isPage = true;
}

53
epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/patrol/PcworkRecordListFormDTO.java

@ -0,0 +1,53 @@
package com.epmet.dto.form.patrol;
import com.epmet.commons.tools.validator.group.CustomerClientShowGroup;
import lombok.Data;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotBlank;
import java.io.Serializable;
/**
* @Description 网格员工作统计巡查记录列表
* @Author sun
*/
@Data
public class PcworkRecordListFormDTO implements Serializable {
private static final long serialVersionUID = 9156247659994638103L;
/**
* 组织或网格Id
*/
@NotBlank(message = "组织Id不能为空", groups = Staff.class)
private String orgId;
/**
* 组织agency 网格grid
*/
@NotBlank(message = "组织类型不能为空", groups = Staff.class)
private String orgType;
/**
* 工作人员Id
*/
private String staffId;
/**
* 开始时间yyyymmdd
*/
private String startTime;
/**
* 结束时间yyyymmdd
*/
@NotBlank(message = "结束时间不能为空",groups = Staff.class)
private String endTime;
/**
* 页码
* */
@Min(1)
private Integer pageNo;
/**
* 每页多少条
* */
private Integer pageSize = 20;
private Boolean isPage = true;
public interface Staff extends CustomerClientShowGroup {}
}

107
epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/PcWorkListResultDTO.java

@ -0,0 +1,107 @@
package com.epmet.dto.result;
import com.epmet.commons.tools.constant.NumConstant;
import lombok.Data;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
/**
* @Author zxc
* @DateTime 2022/1/4 2:06 下午
* @DESC
*/
@Data
public class PcWorkListResultDTO implements Serializable {
private static final long serialVersionUID = -2072009617522409407L;
private Integer total;
private List<PcWorkListResult> list;
public PcWorkListResultDTO() {
this.total = NumConstant.ZERO;
this.list = new ArrayList<>();
}
@Data
public static class PcWorkListResult{
/**
* 事项名称
*/
private String title;
/**
* 事项类型码
*/
private List<String> workTypeCode;
/**
* 事项类型名称
*/
private List<String> workTypeName;
/**
* 有无异常
*/
private String isNormal;
/**
* 发生地点
*/
private String happenAddress;
/**
* 发生时间 返回返回格式化字符串,yyyy-MM-dd
*/
private String happenTime;
/**
* 人员ID
*/
private String staffId;
/**
* 人员姓名
*/
private String staffName;
/**
* 网格id
*/
private String gridId;
/**
* 网格名字
*/
private String gridName;
/**
* 提交日期 返回返回格式化字符串,yyyy-MM-dd HH:mm:ss
*/
private String createdTime;
/**
* 工作内容
*/
private String workContent;
public PcWorkListResult() {
this.title = "";
this.workTypeCode = new ArrayList<>();
this.workTypeName = new ArrayList<>();
this.isNormal = "";
this.happenAddress = "";
this.happenTime = "";
this.staffId = "";
this.staffName = "";
this.gridId = "";
this.gridName = "";
this.createdTime = "";
this.workContent = "";
}
}
}

43
epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/PcworkRecordListResultDTO.java

@ -0,0 +1,43 @@
package com.epmet.dto.result;
import lombok.Data;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
/**
* @Description 网格员工作统计巡查记录列表
* @Author sun
*/
@Data
public class PcworkRecordListResultDTO implements Serializable {
private static final long serialVersionUID = -1L;
List<StaffPatrol> list = new ArrayList<>();
private Integer total;
@Data
public static class StaffPatrol {
//人员ID
private String staffId;
//人员名称
private String staffName;
//网格ID
private String gridId;
//网格名称
private String gridName;
//状态(英文key)
private String status;
//状态(中文)
private String statusName;
//巡查开始时间 返回返回格式化字符串,yyyy-MM-dd HH:mm:ss
private String patrolStartTime;
//巡查结束时间 返回返回格式化字符串,yyyy-MM-dd HH:mm:ss
private String patrolEndTime;
//巡查时长 xx小时xx分钟
private String totalTime;
}
}

14
epmet-user/epmet-user-server/src/main/java/com/epmet/controller/PatrolRoutineWorkController.java

@ -4,8 +4,10 @@ import com.epmet.commons.tools.aop.NoRepeatSubmit;
import com.epmet.commons.tools.utils.Result;
import com.epmet.commons.tools.validator.ValidatorUtils;
import com.epmet.dto.form.PatrolRoutineWorkFormDTO;
import com.epmet.dto.form.PcWorkListFormDTO;
import com.epmet.dto.form.patrol.PatrolQueryFormDTO;
import com.epmet.dto.result.PatrolRoutineWorkResult;
import com.epmet.dto.result.PcWorkListResultDTO;
import com.epmet.service.PatrolRoutineWorkService;
import com.github.pagehelper.Page;
import org.springframework.beans.factory.annotation.Autowired;
@ -56,4 +58,16 @@ public class PatrolRoutineWorkController {
return new Result().ok(true);
}
/**
* @Description 网格员工作统计例行工作列表
* @param formDTO
* @author zxc
* @date 2022/1/4 2:18 下午
*/
@PostMapping("pcwork/list")
public Result<PcWorkListResultDTO> pcWorkList(@RequestBody PcWorkListFormDTO formDTO){
ValidatorUtils.validateEntity(formDTO, PcWorkListFormDTO.PcWorkListForm.class);
return new Result<PcWorkListResultDTO>().ok(gridUserWorkService.pcWorkList(formDTO));
}
}

12
epmet-user/epmet-user-server/src/main/java/com/epmet/controller/StaffPatrolController.java

@ -8,6 +8,7 @@ import com.epmet.commons.tools.security.dto.TokenDto;
import com.epmet.commons.tools.utils.Result;
import com.epmet.commons.tools.validator.ValidatorUtils;
import com.epmet.dto.form.*;
import com.epmet.dto.form.patrol.PcworkRecordListFormDTO;
import com.epmet.dto.result.*;
import com.epmet.service.StaffPatrolDetailService;
import com.epmet.service.StaffPatrolRecordService;
@ -155,4 +156,15 @@ public class StaffPatrolController {
return new Result<List<PatrolTrackResultDTO>>().ok(staffPatrolRecordService.patrolTrack(formDTO));
}
/**
* @Author sun
* @Description 网格员工作统计巡查记录列表
**/
@NoRepeatSubmit
@PostMapping("pcwork/record-list")
public Result<PcworkRecordListResultDTO> pcworkRecordList(@RequestBody PcworkRecordListFormDTO formDTO) {
ValidatorUtils.validateEntity(formDTO, PcworkRecordListFormDTO.Staff.class);
return new Result<PcworkRecordListResultDTO>().ok(staffPatrolRecordService.pcworkRecordList(formDTO));
}
}

4
epmet-user/epmet-user-server/src/main/java/com/epmet/dao/PatrolRoutineWorkDao.java

@ -18,8 +18,10 @@
package com.epmet.dao;
import com.epmet.commons.mybatis.dao.BaseDao;
import com.epmet.dto.form.PcWorkListFormDTO;
import com.epmet.dto.form.patrol.PatrolQueryFormDTO;
import com.epmet.dto.result.PatrolRoutineWorkResult;
import com.epmet.dto.result.PcWorkListResultDTO;
import com.epmet.entity.PatrolRoutineWorkEntity;
import org.apache.ibatis.annotations.Mapper;
@ -35,4 +37,6 @@ import java.util.List;
public interface PatrolRoutineWorkDao extends BaseDao<PatrolRoutineWorkEntity> {
List<PatrolRoutineWorkResult> selectList(PatrolQueryFormDTO formDTO);
List<PcWorkListResultDTO.PcWorkListResult> pcWorkList(PcWorkListFormDTO formDTO);
}

7
epmet-user/epmet-user-server/src/main/java/com/epmet/dao/StaffPatrolRecordDao.java

@ -19,7 +19,9 @@ package com.epmet.dao;
import com.epmet.commons.mybatis.dao.BaseDao;
import com.epmet.dto.form.RecordListFormDTO;
import com.epmet.dto.form.patrol.PcworkRecordListFormDTO;
import com.epmet.dto.result.GridManagerUserListResultDTO;
import com.epmet.dto.result.PcworkRecordListResultDTO;
import com.epmet.dto.result.RecordListResultDTO;
import com.epmet.entity.StaffPatrolRecordEntity;
import org.apache.ibatis.annotations.Mapper;
@ -62,4 +64,9 @@ public interface StaffPatrolRecordDao extends BaseDao<StaffPatrolRecordEntity> {
*/
List<RecordListResultDTO> recordList(RecordListFormDTO formDTO);
/**
* @Author sun
* @Description 网格员工作统计巡查记录列表
**/
List<PcworkRecordListResultDTO.StaffPatrol> pcworkRecordList(PcworkRecordListFormDTO formDTO);
}

12
epmet-user/epmet-user-server/src/main/java/com/epmet/service/PatrolRoutineWorkService.java

@ -19,11 +19,15 @@ package com.epmet.service;
import com.epmet.commons.mybatis.service.BaseService;
import com.epmet.dto.form.PatrolRoutineWorkFormDTO;
import com.epmet.dto.form.PcWorkListFormDTO;
import com.epmet.dto.form.patrol.PatrolQueryFormDTO;
import com.epmet.dto.result.PatrolRoutineWorkResult;
import com.epmet.dto.result.PcWorkListResultDTO;
import com.epmet.entity.PatrolRoutineWorkEntity;
import com.github.pagehelper.Page;
import java.util.List;
/**
* 巡查例行工作
*
@ -44,4 +48,12 @@ public interface PatrolRoutineWorkService extends BaseService<PatrolRoutineWorkE
* @return
*/
Page<PatrolRoutineWorkResult> listPage(PatrolQueryFormDTO formDTO);
/**
* @Description 网格员工作统计例行工作列表
* @param formDTO
* @author zxc
* @date 2022/1/4 2:18 下午
*/
PcWorkListResultDTO pcWorkList(PcWorkListFormDTO formDTO);
}

13
epmet-user/epmet-user-server/src/main/java/com/epmet/service/StaffPatrolRecordService.java

@ -20,12 +20,8 @@ package com.epmet.service;
import com.epmet.commons.mybatis.service.BaseService;
import com.epmet.commons.tools.security.dto.TokenDto;
import com.epmet.dto.form.*;
import com.epmet.dto.result.PatrolUploadResultDTO;
import com.epmet.dto.result.StaffPatrolInitResultDTO;
import com.epmet.dto.result.StartPatrolResultDTO;
import com.epmet.dto.result.PatrolTrackResultDTO;
import com.epmet.dto.result.RecordListResultDTO;
import com.epmet.dto.result.UserNameAndLLResultDTO;
import com.epmet.dto.form.patrol.PcworkRecordListFormDTO;
import com.epmet.dto.result.*;
import com.epmet.entity.StaffPatrolRecordEntity;
import java.util.List;
@ -115,4 +111,9 @@ public interface StaffPatrolRecordService extends BaseService<StaffPatrolRecordE
*/
List<PatrolTrackResultDTO> patrolTrack(PatrolTrackFormDTO formDTO);
/**
* @Author sun
* @Description 网格员工作统计巡查记录列表
**/
PcworkRecordListResultDTO pcworkRecordList(PcworkRecordListFormDTO formDTO);
}

67
epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/PatrolRoutineWorkServiceImpl.java

@ -34,8 +34,11 @@ import com.epmet.dao.PatrolRoutineWorkDao;
import com.epmet.dto.CustomerGridDTO;
import com.epmet.dto.form.CustomerGridFormDTO;
import com.epmet.dto.form.PatrolRoutineWorkFormDTO;
import com.epmet.dto.form.PcWorkListFormDTO;
import com.epmet.dto.form.patrol.PatrolQueryFormDTO;
import com.epmet.dto.result.AllGridsByUserIdResultDTO;
import com.epmet.dto.result.PatrolRoutineWorkResult;
import com.epmet.dto.result.PcWorkListResultDTO;
import com.epmet.entity.PatrolRoutineWorkEntity;
import com.epmet.entity.PatrolRoutineWorkTypeEntity;
import com.epmet.feign.EpmetAdminOpenFeignClient;
@ -46,6 +49,7 @@ import com.epmet.service.PatrolRoutineWorkService;
import com.epmet.service.PatrolRoutineWorkTypeService;
import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
@ -57,6 +61,7 @@ import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* 巡查例行工作
@ -147,6 +152,68 @@ public class PatrolRoutineWorkServiceImpl extends BaseServiceImpl<PatrolRoutineW
.doSelectPage(() -> baseDao.selectList(formDTO));
}
/**
* @Description 网格员工作统计例行工作列表
* @param formDTO
* @author zxc
* @date 2022/1/4 2:18 下午
*/
@Override
public PcWorkListResultDTO pcWorkList(PcWorkListFormDTO formDTO) {
PcWorkListResultDTO result = new PcWorkListResultDTO();
List<PcWorkListResultDTO.PcWorkListResult> list;
if (formDTO.getIsPage()){
PageInfo<PcWorkListResultDTO.PcWorkListResult> listPageInfo = PageHelper.startPage(formDTO.getPageNo(), formDTO.getPageSize()).doSelectPageInfo(() -> baseDao.pcWorkList(formDTO));
result.setTotal(Integer.valueOf(String.valueOf(listPageInfo.getTotal())));
list = listPageInfo.getList();
}else {
list = baseDao.pcWorkList(formDTO);
result.setTotal(list.size());
}
if (CollectionUtils.isEmpty(list)){
return result;
}
Result<List<DictTreeResultDTO>> workTypeResult = adminOpenFeignClient.dictTree(DictTypeEnum.PATROL_WORK_TYPE.getCode());
if (!workTypeResult.success()){
throw new EpmetException("查询例行工作分类失败...");
}
List<String> gridIds = list.stream().map(m -> m.getGridId()).distinct().collect(Collectors.toList());
Result<List<AllGridsByUserIdResultDTO>> gridNamesResult = govOrgOpenFeignClient.getGridListByGridIds(gridIds);
if (!gridNamesResult.success()){
throw new EpmetException("查询网格名字失败...");
}
list.forEach(l -> {
l.setWorkTypeName(disposeWorkTypeCode(workTypeResult.getData(),l.getWorkTypeCode()));
gridNamesResult.getData().stream().filter(g -> l.getGridId().equals(g.getGridId())).forEach(g -> l.setGridName(g.getGridName()));
});
result.setList(list);
return result;
}
/**
* @Description 处理 workTypeName
* @param workTypeList
* @param code
* @author zxc
* @date 2022/1/5 9:27 上午
*/
public List<String> disposeWorkTypeCode(List<DictTreeResultDTO> workTypeList,List<String> code){
if (CollectionUtils.isEmpty(code)){
return new ArrayList<>();
}
List<String> result = new ArrayList<>();
code.forEach(c -> {
workTypeList.forEach(w1 -> {
w1.getChildren().forEach(w2 -> {
if (c.equals(w2.getId())){
result.add(w1.getName() + "-" + w2.getName());
}
});
});
});
return result;
}
/**
* desc:递归遍历树形结构 构建pids 根节点pids 为空字符串
*

58
epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/StaffPatrolRecordServiceImpl.java

@ -1,13 +1,17 @@
package com.epmet.service.impl;
import cn.hutool.core.bean.BeanUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.epmet.commons.mybatis.service.impl.BaseServiceImpl;
import com.epmet.commons.rocketmq.messages.StaffPatrolMQMsg;
import com.epmet.commons.tools.constant.NumConstant;
import com.epmet.commons.tools.constant.ServiceConstant;
import com.epmet.commons.tools.constant.StrConstant;
import com.epmet.commons.tools.exception.EpmetErrorCode;
import com.epmet.commons.tools.exception.RenException;
import com.epmet.commons.tools.redis.RedisKeys;
import com.epmet.commons.tools.redis.RedisUtils;
import com.epmet.commons.tools.security.dto.TokenDto;
import com.epmet.commons.tools.utils.DateUtils;
import com.epmet.commons.tools.utils.Result;
@ -20,6 +24,7 @@ import com.epmet.dao.StatsStaffPatrolRecordDailyDao;
import com.epmet.dto.CustomerGridDTO;
import com.epmet.dto.StaffPatrolDetailDTO;
import com.epmet.dto.form.*;
import com.epmet.dto.form.patrol.PcworkRecordListFormDTO;
import com.epmet.dto.result.*;
import com.epmet.entity.StaffPatrolDetailEntity;
import com.epmet.entity.StaffPatrolRecordEntity;
@ -31,6 +36,8 @@ import com.epmet.send.SendMqMsgUtil;
import com.epmet.service.StaffPatrolDetailService;
import com.epmet.service.StaffPatrolRecordService;
import com.epmet.util.DimIdGenerator;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
@ -39,9 +46,7 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.*;
import java.util.stream.Collectors;
/**
@ -70,6 +75,8 @@ public class StaffPatrolRecordServiceImpl extends BaseServiceImpl<StaffPatrolRec
private GovProjectOpenFeignClient govProjectOpenFeignClient;
@Autowired
private EpmetMessageOpenFeignClient epmetMessageOpenFeignClient;
@Autowired
private RedisUtils redisUtils;
/**
@ -451,4 +458,49 @@ public class StaffPatrolRecordServiceImpl extends BaseServiceImpl<StaffPatrolRec
}
return new ArrayList<>();
}
/**
* @Author sun
* @Description 网格员工作统计巡查记录列表
**/
@Override
public PcworkRecordListResultDTO pcworkRecordList(PcworkRecordListFormDTO formDTO) {
PcworkRecordListResultDTO resultDTO = new PcworkRecordListResultDTO();
//1.按条件查询网格员巡查数据
PageInfo<PcworkRecordListResultDTO.StaffPatrol> result =
PageHelper.startPage(formDTO.getPageNo(), formDTO.getPageSize(), formDTO.getIsPage()).doSelectPageInfo(() -> staffPatrolRecordDao.pcworkRecordList(formDTO));
if (org.springframework.util.CollectionUtils.isEmpty(result.getList())) {
return resultDTO;
}
//2.查询网格信息并赋值
Map<String, CustomerGridDTO> map = new HashMap<>();
for (PcworkRecordListResultDTO.StaffPatrol r : result.getList()) {
if (map.containsKey(r.getGridId())) {
r.setGridName(map.get(r.getGridId()).getGridName());
continue;
}
String redisKey = RedisKeys.getGridInfoKey(r.getGridId());
Map<String, Object> gridCache = redisUtils.hGetAll(redisKey);
if (gridCache != null && gridCache.size() > 0) {
// 直接取缓存中的
CustomerGridDTO dto = BeanUtil.mapToBean(gridCache, CustomerGridDTO.class, true);
r.setGridName(dto.getGridName());
map.put(r.getGridId(), dto);
} else {
CustomerGridFormDTO form = new CustomerGridFormDTO();
form.setGridId(r.getGridId());
Result<CustomerGridDTO> resultGrid = govOrgOpenFeignClient.getGridBaseInfoByGridId(form);
if (!resultGrid.success()) {
throw new RenException("调用org服务获取网格基础信息失败......");
}
r.setGridName(resultGrid.getData().getGridName());
map.put(r.getGridId(), resultGrid.getData());
}
}
//3.封装数据并返回
resultDTO.setTotal((int)result.getTotal());
resultDTO.setList(result.getList());
return resultDTO;
}
}

48
epmet-user/epmet-user-server/src/main/resources/mapper/PatrolRoutineWorkDao.xml

@ -38,5 +38,53 @@
AND m.DEL_FLAG = '0'
</select>
<resultMap id="pcWorkListMap" type="com.epmet.dto.result.PcWorkListResultDTO$PcWorkListResult">
<result property="title" column="title"/>
<result property="isNormal" column="isNormal"/>
<result property="happenAddress" column="happenAddress"/>
<result property="happenTime" column="happenTime"/>
<result property="staffId" column="staffId"/>
<result property="gridId" column="gridId"/>
<result property="createdTime" column="createdTime"/>
<result property="workContent" column="workContent"/>
<result property="staffName" column="staffName"/>
<collection property="workTypeCode" ofType="java.lang.String" select="pcWorkTypeCodeList" column="wid">
<result column="workTypeCode"/>
</collection>
</resultMap>
<select id="pcWorkList" resultMap="pcWorkListMap">
SELECT
w.ID AS wid,
w.TITLE as title,
(CASE WHEN w.IS_NORMAL = 1 THEN '有' ELSE '无' END) AS isNormal,
w.ADDRESS AS happenAddress,
w.HAPPEN_TIME AS happenTime,
w.USER_ID AS staffId,
w.GRID_ID AS gridId,
DATE_FORMAT(w.CREATED_TIME,'%Y-%m-%d %H:%i:%s') AS createdTime,
w.WORK_CONTENT AS workContent,
s.REAL_NAME AS staffName
FROM patrol_routine_work w
INNER JOIN customer_staff s ON (s.USER_ID = w.USER_ID AND s.DEL_FLAG = 0)
WHERE w.DEL_FLAG = 0
<if test="staffId != null and staffId != '' ">
AND w.USER_ID = #{staffId}
</if>
<if test='orgType == "grid" '>
AND w.GRID_ID = #{orgId}
</if>
<if test='orgType == "agency" '>
AND w.PIDS LIKE CONCAT('%',#{orgId},'%')
</if>
AND DATE_FORMAT(w.CREATED_TIME,'%Y%m%d') <![CDATA[ <= ]]> #{endTime}
<if test="startTime != '' and startTime != null">
AND DATE_FORMAT(w.CREATED_TIME,'%Y%m%d') >= #{startTime}
</if>
ORDER BY w.CREATED_TIME DESC
</select>
<select id="pcWorkTypeCodeList" resultType="java.lang.String">
SELECT WORK_TYPE_CODE AS workTypeCode FROM patrol_routine_work_type WHERE DEL_FLAG = 0 AND ROUTINE_WORK_ID = #{wid}
</select>
</mapper>

33
epmet-user/epmet-user-server/src/main/resources/mapper/StaffPatrolRecordDao.xml

@ -75,4 +75,37 @@
GROUP BY recordId
</select>
<select id="pcworkRecordList" resultType="com.epmet.dto.result.PcworkRecordListResultDTO$StaffPatrol">
SELECT
spr.staff_id staffId,
cs.real_name staffName,
spr.grid gridId,
spr.`status` status,
if(spr.`status`='patrolling', '巡查中', if(spr.is_hand_end=0, '结束巡查(系统自动)', '结束巡查'))statusName,
spr.patrol_start_time patrolStartTime,
spr.patrol_end_time patrolEndTime,
spr.total_time totalTime
FROM
staff_patrol_record spr
LEFT JOIN customer_staff cs ON spr.staff_id = cs.user_id
WHERE
spr.del_flag = '0'
<if test='orgType != "" and orgType != null and "agency" == orgType'>
AND spr.agency_id = #{orgId}
</if>
<if test='orgType != "" and orgType != null and "grid" == orgType'>
AND spr.grid = #{orgId}
</if>
<if test='staffId != "" and staffId != null '>
AND spr.staff_id = #{staffId}
</if>
<if test='startTime != "" and startTime != null '>
AND DATE_FORMAT(spr.created_time,'%Y%m%d') <![CDATA[ >= ]]> #{startTime}
</if>
<if test='endTime != "" and endTime != null '>
AND DATE_FORMAT(spr.created_time,'%Y%m%d') <![CDATA[ <= ]]> #{endTime}
</if>
ORDER BY spr.total_time DESC
</select>
</mapper>
Loading…
Cancel
Save