feat(fire-check): 添加点检记录权限控制和菜单路径过滤功能

main
zhaokai 2026-02-26 17:23:54 +08:00
parent 4adca5f634
commit 0391e712a0
13 changed files with 161 additions and 15 deletions

View File

@ -69,5 +69,10 @@ public class FireCheckRecordController {
public PageResponse<FireCheckRecordCO> getCheckRecordPageH5(@Validated @RequestBody FireCheckRecordPagePointQry qry) {
return fireCheckRecordService.getCheckRecordPageH5(qry);
}
@ApiOperation("和H5扫码点位显示检查记录)")
@PostMapping("/getCheckRecordPageH5New")
public PageResponse<FireCheckRecordInfoCO> getCheckRecordPageH5New(@Validated @RequestBody FireCheckRecordPagePointQry qry) {
return fireCheckRecordService.getCheckRecordPageH5New(qry);
}
}

View File

@ -2,6 +2,7 @@ package com.zcloud.fire.check.command.convertor;
import com.zcloud.fire.check.dto.clientobject.FireBackCheckRecordCO;
import com.zcloud.fire.check.dto.clientobject.FireCheckRecordCO;
import com.zcloud.fire.check.dto.clientobject.FireCheckRecordInfoCO;
import com.zcloud.fire.check.dto.clientobject.FireCheckRecordUserCO;
import com.zcloud.fire.check.persistence.dataobject.FireCheckRecordDO;
import com.zcloud.fire.check.persistence.dataobject.FireCheckRecordUserDO;
@ -26,5 +27,6 @@ public interface FireCheckRecordCoConvertor {
List<FireBackCheckRecordCO> converDOsToBackRecordCOs(List<FireCheckRecordDO> data);
List<FireCheckRecordInfoCO> converDOsToBackRecordInfoCOs(List<FireCheckRecordDO> data);
}

View File

@ -19,9 +19,7 @@ import lombok.AllArgsConstructor;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Component;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.*;
import java.util.function.Function;
import java.util.stream.Collectors;
@ -183,23 +181,110 @@ public class FireCheckRecordQueryExe {
if(CollUtil.isEmpty(examCenterCOS)){
return PageResponse.of(null, pageResponse.getTotalCount(), pageResponse.getPageSize(), pageResponse.getPageIndex());
}
/* //组装点位名称 和区域名称
List<String> fireCheckRecordIdList = examCenterCOS.stream().map(FireCheckRecordCO::getFireRecordId).collect(Collectors.toList());
List<FireCheckRecordPointDO> fireCheckRecordPointDOList =fireCheckRecordPointRepository.getCheckRecordPointListByCheckRecordIds(fireCheckRecordIdList);
//按照fireRecordId进行分组
Map<String, FireCheckRecordPointDO> fireCheckRecordPointDOMap = fireCheckRecordPointDOList.stream()
.collect(Collectors.toMap(
FireCheckRecordPointDO::getFireRecordId,
Function.identity(),
(existing, replacement) -> existing // 保留第一个值,丢弃后续重复项
));
examCenterCOS.forEach(info -> {
info.setFirePointNameList(fireCheckRecordPointDOMap.get(info.getFireRecordId()).getFirePointName());
info.setFireRegionNameList(fireCheckRecordPointDOMap.get(info.getFireRecordId()).getFireRegionName());
});*/
return PageResponse.of(examCenterCOS, pageResponse.getTotalCount(), pageResponse.getPageSize(), pageResponse.getPageIndex());
}
public PageResponse<FireCheckRecordInfoCO> getCheckRecordPageH5New(FireCheckRecordPagePointQry qry) {
Map<String, Object> params = PageQueryHelper.toHashMap(qry);
PageResponse<FireCheckRecordDO> pageResponse = fireCheckRecordRepository.getCheckRecordPageH5New(params);
List<FireCheckRecordInfoCO> resultCOList = fireCheckRecordCoConvertor.converDOsToBackRecordInfoCOs(pageResponse.getData());
if(CollUtil.isEmpty(resultCOList)){
return PageResponse.of(null, pageResponse.getTotalCount(), pageResponse.getPageSize(), pageResponse.getPageIndex());
}
// 提取所有记录ID用于批量查询
List<String> fireRecordIdList = resultCOList.stream()
.map(FireCheckRecordInfoCO::getFireRecordId)
.filter(Objects::nonNull)
.collect(Collectors.toList());
// 批量查询其他隐患信息
batchQueryAndSetOtherHiddenInfo(resultCOList, fireRecordIdList);
// 批量查询设备检查信息及对应隐患
batchQueryAndSetDeviceInfo(resultCOList, fireRecordIdList);
return PageResponse.of(resultCOList, pageResponse.getTotalCount(), pageResponse.getPageSize(), pageResponse.getPageIndex());
}
/**
*
*/
private void batchQueryAndSetOtherHiddenInfo(List<FireCheckRecordInfoCO> resultCOList, List<String> fireRecordIdList) {
if (CollUtil.isEmpty(fireRecordIdList)) {
return;
}
List<FireCheckRecordHiddenDO> otherHiddenList = fireCheckRecordHiddenRepository
.getChecKRecordHiddenListByRecordIdList(fireRecordIdList, HiddenCheckTypeEnum.OTHER_HIDDEN.getCode());
if (CollUtil.isEmpty(otherHiddenList)) {
return;
}
// 按记录ID分组其他隐患信息
Map<String, List<FireCheckRecordHiddenDO>> otherHiddenGroupMap = otherHiddenList.stream()
.collect(Collectors.groupingBy(FireCheckRecordHiddenDO::getFireRecordId));
// 设置每个记录的其他隐患信息
resultCOList.forEach(recordCO -> {
List<FireCheckRecordHiddenDO> hiddenList = otherHiddenGroupMap.get(recordCO.getFireRecordId());
if (CollUtil.isNotEmpty(hiddenList)) {
recordCO.setFireCheckRecordHiddenList(fireCheckRecordHiddenCoConvertor.converDOsToCOs(hiddenList));
}
});
}
/**
*
*/
private void batchQueryAndSetDeviceInfo(List<FireCheckRecordInfoCO> resultCOList, List<String> fireRecordIdList) {
if (CollUtil.isEmpty(fireRecordIdList)) {
return;
}
// 批量查询所有设备检查记录
List<FireCheckRecordDeviceDO> deviceRecordList = fireCheckRecordDeviceRepository
.getCheckRecordDeviceListByRecordIdList(fireRecordIdList);
if (CollUtil.isEmpty(deviceRecordList)) {
return;
}
// 按记录ID分组设备检查信息
Map<String, List<FireCheckRecordDeviceDO>> deviceGroupMap = deviceRecordList.stream()
.collect(Collectors.groupingBy(FireCheckRecordDeviceDO::getFireRecordId));
// 提取所有设备记录ID用于查询设备隐患
List<String> deviceIdList = deviceRecordList.stream()
.map(FireCheckRecordDeviceDO::getFireRecordDeviceId)
.filter(Objects::nonNull)
.collect(Collectors.toList());
// 查询设备相关的隐患信息
List<FireCheckRecordHiddenDO> deviceHiddenList = CollUtil.isNotEmpty(deviceIdList) ?
fireCheckRecordHiddenRepository.getChecKRecordDeviceList(deviceIdList) : Collections.emptyList();
// 按设备ID分组隐患信息
Map<String, FireCheckRecordHiddenDO> deviceHiddenMap = deviceHiddenList.stream()
.collect(Collectors.toMap(
FireCheckRecordHiddenDO::getFireRecordDeviceId,
Function.identity(),
(existing, replacement) -> existing // 处理重复key的情况
));
// 为每个记录设置设备检查信息和对应隐患
resultCOList.forEach(recordCO -> {
List<FireCheckRecordDeviceDO> deviceDOList = deviceGroupMap.get(recordCO.getFireRecordId());
if (CollUtil.isNotEmpty(deviceDOList)) {
List<FireCheckRecordDeviceCO> deviceCOList = fireCheckRecordDeviceCoConvertor.converDOsToCOs(deviceDOList);
// 为每个设备设置对应的隐患信息
deviceCOList.forEach(deviceCO -> {
FireCheckRecordHiddenDO hiddenDO = deviceHiddenMap.get(deviceCO.getFireRecordDeviceId());
if (hiddenDO != null) {
deviceCO.setFireCheckRecordHiddenCO(fireCheckRecordHiddenCoConvertor.convertToCO(hiddenDO));
}
});
recordCO.setFireCheckRecordDeviceList(deviceCOList);
}
});
}
}

View File

@ -80,5 +80,10 @@ public class FireCheckRecordServiceImpl implements FireCheckRecordServiceI {
public PageResponse<FireCheckRecordCO> getCheckRecordPageH5(FireCheckRecordPagePointQry qry) {
return fireCheckRecordQueryExe.getCheckRecordPageH5(qry);
}
@Override
public PageResponse<FireCheckRecordInfoCO> getCheckRecordPageH5New(FireCheckRecordPagePointQry qry) {
return fireCheckRecordQueryExe.getCheckRecordPageH5New(qry);
}
}

View File

@ -33,5 +33,6 @@ public interface FireCheckRecordServiceI {
PageResponse<FireCheckRecordCO> getCheckRecordPageH5(FireCheckRecordPagePointQry qry);
PageResponse<FireCheckRecordInfoCO> getCheckRecordPageH5New(FireCheckRecordPagePointQry qry);
}

View File

@ -29,5 +29,6 @@ public interface FireCheckRecordMapper extends BaseMapper<FireCheckRecordDO> {
FireCheckRecordDO getCheckRecordInfo(String fireRecordId);
IPage<FireCheckRecordDO> getCheckRecordPageH5New(IPage<FireCheckRecordDO> iPage, Map<String, Object> params);
}

View File

@ -21,5 +21,7 @@ public interface FireCheckRecordDeviceRepository extends BaseRepository<FireChec
List<FireCheckRecordDeviceDO> getCheckRecordDeviceList(String fireRecordId);
void updateNormalNull(Long id);
List<FireCheckRecordDeviceDO> getCheckRecordDeviceListByRecordIdList(List<String> fireRecordIdList);
}

View File

@ -40,5 +40,7 @@ public interface FireCheckRecordHiddenRepository extends BaseRepository<FireChec
List<FireCheckRecordHiddenDO> getHiddenList(@NotEmpty(message = "检查记录信息不能为空") String fireRecordId);
List<FireCheckRecordHiddenDO> getByOtherCheckRecordId(@NotEmpty(message = "检查记录信息不能为空") String fireRecordId);
List<FireCheckRecordHiddenDO> getChecKRecordHiddenListByRecordIdList(List<String> fireRecordIdList, Integer hiddenCheckType);
}

View File

@ -32,5 +32,6 @@ public interface FireCheckRecordRepository extends BaseRepository<FireCheckRecor
FireCheckRecordDO getCheckRecordInfoByFireRecordId(String fireRecordId);
PageResponse<FireCheckRecordDO> getCheckRecordPageH5New(Map<String, Object> params);
}

View File

@ -61,5 +61,13 @@ public class FireCheckRecordDeviceRepositoryImpl extends BaseRepositoryImpl<Fire
public void updateNormalNull(Long id) {
fireCheckRecordDeviceMapper.updateNormalNull(id);
}
@Override
public List<FireCheckRecordDeviceDO> getCheckRecordDeviceListByRecordIdList(List<String> fireRecordIdList) {
QueryWrapper<FireCheckRecordDeviceDO> queryWrapper = new QueryWrapper<>();
queryWrapper.in("fire_record_id", fireRecordIdList);
queryWrapper.orderByDesc("create_time");
return fireCheckRecordDeviceMapper.selectList(queryWrapper);
}
}

View File

@ -68,6 +68,16 @@ public class FireCheckRecordHiddenRepositoryImpl extends BaseRepositoryImpl<Fire
return fireCheckRecordHiddenMapper.selectList(queryWrapper);
}
@Override
public List<FireCheckRecordHiddenDO> getChecKRecordHiddenListByRecordIdList(List<String> fireRecordIdList, Integer hiddenCheckType) {
QueryWrapper<FireCheckRecordHiddenDO> queryWrapper = new QueryWrapper<>();
queryWrapper.in("fire_record_id", fireRecordIdList);
if(hiddenCheckType != null){
queryWrapper.eq("hidden_check_type", hiddenCheckType);
}
return fireCheckRecordHiddenMapper.selectList(queryWrapper);
}
@Override
public FireCheckRecordHiddenDO listByFireCheckRecordDeviceId(String fireRecordDeviceId) {
QueryWrapper<FireCheckRecordHiddenDO> queryWrapper = new QueryWrapper<>();

View File

@ -101,6 +101,13 @@ public class FireCheckRecordRepositoryImpl extends BaseRepositoryImpl<FireCheckR
return PageHelper.pageToResponse(result, result.getRecords());
}
@Override
public PageResponse<FireCheckRecordDO> getCheckRecordPageH5New(Map<String, Object> params) {
IPage<FireCheckRecordDO> iPage = new Query<FireCheckRecordDO>().getPage(params);
IPage<FireCheckRecordDO> result = fireCheckRecordMapper.getCheckRecordPageH5New(iPage, params);
return PageHelper.pageToResponse(result, result.getRecords());
}
@Override
public FireCheckRecordDO getCheckRecordInfoByFireRecordId(String fireRecordId) {
QueryWrapper<FireCheckRecordDO> queryWrapper = new QueryWrapper<>();

View File

@ -81,6 +81,23 @@
order by cr.create_time desc
</select>
<select id="getCheckRecordPageH5New" resultType="com.zcloud.fire.check.persistence.dataobject.FireCheckRecordDO">
select cr.*,
GROUP_CONCAT(DISTINCT u.name) AS userNameList,
GROUP_CONCAT(DISTINCT d.name) AS departmentName
from fire_check_record cr
left join fire_check_record_user cru on cr.fire_record_id = cru.fire_record_id and cru.delete_enum = 'FALSE'
left join user u on cru.user_id = u.id
left join department d on cru.department_id = d.id
left join fire_check_record_point cfp on cr.fire_record_id = cfp.fire_record_id and cfp.delete_enum = 'FALSE'
where cr.delete_enum = 'FALSE'
and cr.finished_flag = 1
and cfp.fire_point_id=#{params.firePointId}
group by cr.fire_record_id
order by cr.create_time desc
</select>
<select id="getCheckRecordInfo" resultType="com.zcloud.fire.check.persistence.dataobject.FireCheckRecordDO">
select cr.*,
GROUP_CONCAT(DISTINCT u.name) AS userNameList,