Browse Source

更多-巡查记录列表-V2

dev_shibei_match
sunyuchao 4 years ago
parent
commit
acaee9bd8b
  1. 11
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/DateUtils.java
  2. 2
      epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmetuser/form/StaffListFormDTO.java
  3. 5
      epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmetuser/result/StaffListResultDTO.java
  4. 20
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/controller/EpmetUserController.java
  5. 5
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/epmetuser/StaffPatrolRecordDao.java
  6. 6
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/govorg/CustomerGridDao.java
  7. 7
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmetuser/EpmetUserService.java
  8. 36
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmetuser/impl/EpmetUserServiceImpl.java
  9. 6
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/govorg/GovOrgService.java
  10. 11
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/govorg/impl/GovOrgServiceImpl.java
  11. 46
      epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/epmetuser/StaffPatrolRecordDao.xml
  12. 48
      epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/govorg/CustomerGridDao.xml

11
epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/DateUtils.java

@ -847,4 +847,15 @@ public class DateUtils {
return DateUtils.format(date,DateUtils.DATE_TIME_PATTERN); return DateUtils.format(date,DateUtils.DATE_TIME_PATTERN);
} }
/**
* @Author sun
* @Description 获取当前日期几个自然月之前的日期yyyy-MM-dd HH:mm:ss
**/
public static String getBeforeMonthDate(int beforMonth, String dateType){
Calendar c = Calendar.getInstance();
c.add(Calendar.MONTH, - beforMonth);
Date date = c.getTime();
return DateUtils.format(date,dateType);
}
} }

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

@ -24,7 +24,7 @@ public class StaffListFormDTO implements Serializable {
@NotNull(message = "最近时间不能为空", groups = StaffListFormDTO.Staff.class) @NotNull(message = "最近时间不能为空", groups = StaffListFormDTO.Staff.class)
private Integer time; private Integer time;
/** /**
* 排序字段巡查总次数patrolTotal最近开始巡查时间latestPatrolledTime * 排序字段巡查总次数patrolTotal最近开始巡查时间latestPatrolledTime上报项目数 reportProjectCount巡查总时长totalTime
*/ */
@NotBlank(message = "排序条件不能为空", groups = StaffListFormDTO.Staff.class) @NotBlank(message = "排序条件不能为空", groups = StaffListFormDTO.Staff.class)
private String sortCode; private String sortCode;

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

@ -28,5 +28,10 @@ public class StaffListResultDTO implements Serializable {
private String gender = "0"; private String gender = "0";
//正在巡查中:patrolling;否则返回空字符串 //正在巡查中:patrolling;否则返回空字符串
private String status = ""; private String status = "";
//上报项目数
private Integer reportProjectCount;
//巡查总时长
private String totalTime = "";
private Integer timeNum;
} }

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

@ -79,5 +79,25 @@ public class EpmetUserController {
return new Result<PatrolDateListResultDTO>().ok(epmetUserService.patrolDateList(formDTO)); return new Result<PatrolDateListResultDTO>().ok(epmetUserService.patrolDateList(formDTO));
} }
/**
* @Param formDTO
* @Description 更多-巡查记录-人员巡查记录列表
* @author sun
*/
@PostMapping("staffpatrollist")
@RequirePermission(requirePermission = RequirePermissionEnum.MORE_PATROL_RECORD_LIST)
public Result<List<StaffListResultDTO>> staffPatrolList(@LoginUser TokenDto tokenDto, @RequestBody StaffListFormDTO formDTO) {
//String totalTimeDesc = minutes / 60 + "小时"+ minutes % 60 + "分";
ValidatorUtils.validateEntity(formDTO, StaffListFormDTO.Staff.class);
if (!"patrolTotal".equals(formDTO.getSortCode()) && !"latestPatrolledTime".equals(formDTO.getSortCode())
&& !"reportProjectCount".equals(formDTO.getSortCode()) && !"totalTime".equals(formDTO.getSortCode())) {
throw new RenException("参数错误,排序条件值错误");
}
if (formDTO.getTime() != 1 && formDTO.getTime() != 3) {
throw new RenException("参数错误,最近时间值不正确");
}
formDTO.setUserId(tokenDto.getUserId());
return new Result<List<StaffListResultDTO>>().ok(epmetUserService.staffPatrolList(formDTO));
}
} }

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

@ -41,4 +41,9 @@ public interface StaffPatrolRecordDao extends BaseDao<StaffPatrolRecordEntity> {
*/ */
List<StaffListResultDTO> selectPatrolList(StaffListFormDTO formDTO); List<StaffListResultDTO> selectPatrolList(StaffListFormDTO formDTO);
/**
* @Description 按条件查询巡查业务数据V2
* @author sun
*/
List<StaffListResultDTO> selectStaffPatrolList(StaffListFormDTO formDTO);
} }

6
epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/govorg/CustomerGridDao.java

@ -62,4 +62,10 @@ public interface CustomerGridDao extends BaseDao<CustomerGridEntity> {
* @Description 查询工作人员所属组织下网格列表 * @Description 查询工作人员所属组织下网格列表
**/ **/
List<CustomerGridDTO> gridListByStaffId(@Param("staffId") String staffId); List<CustomerGridDTO> gridListByStaffId(@Param("staffId") String staffId);
/**
* @Description 有网格列表的查询网格基本信息没有的查询工作人员所属组织级下级所有的网格信息
* @author sun
*/
List<CustomerGridDTO> getGridInfoList(@Param("gridIds") List<String> gridIds, @Param("staffId") String staffId);
} }

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

@ -64,4 +64,11 @@ public interface EpmetUserService {
*/ */
List<GridStaffResultDTO> staffGridRole(List<GridStaffResultDTO> forms, String staffName); List<GridStaffResultDTO> staffGridRole(List<GridStaffResultDTO> forms, String staffName);
/**
* @Param formDTO
* @Description 更多-巡查记录-人员巡查记录列表
* @author sun
*/
List<StaffListResultDTO> staffPatrolList(StaffListFormDTO formDTO);
} }

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

@ -247,5 +247,41 @@ public class EpmetUserServiceImpl implements EpmetUserService {
return result; return result;
} }
/**
* @Param formDTO
* @Description 更多-巡查记录-人员巡查记录列表
* @author sun
*/
@Override
public List<StaffListResultDTO> staffPatrolList(StaffListFormDTO formDTO) {
List<StaffListResultDTO> resultList = new ArrayList<>();
//1.查询网格信息供后续封装数据使用
List<CustomerGridDTO> list = govOrgService.getGridInfoList(formDTO.getGridIds(), formDTO.getUserId());
if (CollectionUtils.isEmpty(formDTO.getGridIds())) {
formDTO.setGridIds(list.stream().map(CustomerGridDTO::getId).collect(Collectors.toList()));
}
//2.按条件分页查询业务数据
int pageIndex = (formDTO.getPageNo() - NumConstant.ONE) * formDTO.getPageSize();
formDTO.setPageNo(pageIndex);
//起始查询日期
formDTO.setPatrolStartTime(DateUtils.getBeforeMonthDate(formDTO.getTime(), "yyyyMMdd"));
resultList = staffPatrolRecordDao.selectStaffPatrolList(formDTO);
//3.封装数据并返回
resultList.forEach(re -> list.stream().filter(l -> re.getGridId().equals(l.getId())).forEach(s -> re.setGridName(s.getGridName())));
resultList.forEach(re -> {
String totalTime = "0分钟";
if (re.getTimeNum() > NumConstant.ZERO) {
int hour = re.getTimeNum() / 3600;
int minute = re.getTimeNum() % 3600;
totalTime = (hour < 1 ? "" : hour + "小时") + (minute < 1 ? "" : minute + "分钟");
}
re.setTotalTime(totalTime == "" ? "0分钟" : totalTime);
list.stream().filter(l -> re.getGridId().equals(l.getId())).forEach(s -> re.setGridName(s.getGridName()));
});
return resultList;
}
} }

6
epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/govorg/GovOrgService.java

@ -59,4 +59,10 @@ public interface GovOrgService {
* @author sun * @author sun
*/ */
List<GridStaffResultDTO> selectGridStaffByGridIds(List<String> gridIds, String staffName); List<GridStaffResultDTO> selectGridStaffByGridIds(List<String> gridIds, String staffName);
/**
* @Description 查询网格信息或查询当前人员所属组织下所有网格信息
* @author sun
*/
List<CustomerGridDTO> getGridInfoList(List<String> gridIds, String staffId);
} }

11
epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/govorg/impl/GovOrgServiceImpl.java

@ -264,4 +264,15 @@ public class GovOrgServiceImpl implements GovOrgService {
return result; return result;
} }
/**
* @Description 查询网格信息或查询当前人员所属组织下所有网格信息
* @author sun
*/
@Override
public List<CustomerGridDTO> getGridInfoList(List<String> gridIds, String staffId) {
//1.有网格列表的查询网格基本信息,没有的查询工作人员所属组织级下级所有的网格信息
List<CustomerGridDTO> list = customerGridDao.getGridInfoList(gridIds, staffId);
return list;
}
} }

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

@ -51,4 +51,50 @@
--> -->
</select> </select>
<select id="selectStaffPatrolList" resultType="com.epmet.dataaggre.dto.epmetuser.result.StaffListResultDTO">
SELECT
ssp.grid_id AS gridId,
ssp.staff_id AS staffId,
cs.real_name AS staffName,
cs.gender AS gender,
MAX(ssp.latest_patrol_time) AS patrolStartTime,
IFNULL(SUM(ssp.patrol_total), 0) AS patrolTotal,
ssp.latest_patrol_status AS STATUS,
IFNULL(SUM(ssp.report_project_count), 0) AS reportProjectCount,
IFNULL(SUM(ssp.total_time), 0) AS timeNum
FROM
stats_staff_patrol_record_daily ssp
LEFT JOIN customer_staff cs ON ssp.staff_id = cs.user_id
WHERE
ssp.del_flag = '0'
AND ssp.date_id >= #{patrolStartTime}
<if test="staffName!= null and staffName != ''">
AND cs.real_name = #{staffName}
</if>
<if test="gridIds != null and gridIds.size() > 0">
<foreach collection="gridIds" item="gridId" open="AND (" separator=" OR " close=" )" >
ssp.grid_id = #{gridId}
</foreach>
</if>
GROUP BY ssp.grid_id, ssp.staff_id
<if test="sortCode!= null and sortCode != ''">
<choose>
<when test="sortCode == 'patrolTotal' ">
ORDER BY SUM(ssp.patrol_total) DESC
</when>
<when test="sortCode == 'latestPatrolledTime' ">
ORDER BY MAX(ssp.latest_patrol_time) DESC
</when>
<when test="sortCode == 'reportProjectCount' ">
ORDER BY SUM(ssp.report_project_count) DESC
</when>
<otherwise>
ORDER BY SUM(ssp.total_time) DESC
</otherwise>
</choose>
</if>
LIMIT
#{pageNo}, #{pageSize}
</select>
</mapper> </mapper>

48
epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/govorg/CustomerGridDao.xml

@ -99,4 +99,52 @@
) )
</select> </select>
<select id="getGridInfoList" resultType="com.epmet.dataaggre.dto.govorg.CustomerGridDTO">
SELECT
cg.id AS 'id',
IF (
ca.pid = '0',
IF (
ca.organization_name = '',
cg.grid_name,
CONCAT(ca.organization_name,'-',cg.grid_name)
),
CONCAT(
(select organization_name from customer_agency where id = ca.pid),
'-',
IF (
ca.organization_name = '',
cg.grid_name,
CONCAT(ca.organization_name,'-',cg.grid_name)
)
)
)AS 'gridName'
FROM
customer_grid cg
INNER JOIN customer_agency ca ON cg.pid = ca.id
WHERE
cg.del_flag = '0'
AND ca.del_flag = '0'
<choose>
<when test="gridIds != null and gridIds.size() > 0">
<foreach collection="gridIds" item="id" open="AND (" separator=" OR " close=" )" >
cg.id = #{id}
</foreach>
</when>
<otherwise>
AND cg.pids
LIKE CONCAT(
'%',
(
select agency_id
from customer_staff_agency
where del_flag = '0'
AND user_id = #{staffId}
),
'%'
)
</otherwise>
</choose>
</select>
</mapper> </mapper>

Loading…
Cancel
Save