refactor(): 重构项目关键摄像头保存逻辑并优化检查流程

dev
lishiwei 2026-07-10 18:09:03 +08:00
parent e607c022ba
commit 2219cf9523
3 changed files with 83 additions and 33 deletions

View File

@ -28,7 +28,9 @@ import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
@ -102,15 +104,8 @@ public class KeyProjectAddExe {
if (!res) {
throw new BizException("保存失败");
}
if(cmd.getKeyProjectCameraAddCmdList()!=null) {
List<KeyProjectCameraAddCmd> keyProjectCameraAddCmdList = cmd.getKeyProjectCameraAddCmdList();
List<KeyProjectCameraDO> keyProjectCameraDOList = keyProjectCameraCoConvertor.converCmdsToDOs(keyProjectCameraAddCmdList);
keyProjectCameraDOList.forEach(keyProjectCameraAddCmd -> {
keyProjectCameraAddCmd.setKeyProjectId(keyProjectE.getKeyProjectId());
keyProjectCameraAddCmd.setKeyProjectCameraId(Tools.get32UUID());
});
keyProjectCameraRepository.saveBatch(keyProjectCameraDOList);
if (cmd.getKeyProjectCameraAddCmdList() != null) {
saveKeyProjectCameras(keyProjectE.getKeyProjectId(), cmd.getKeyProjectCameraAddCmdList());
}
if (!CollectionUtils.isEmpty(penaltyPersonnelAddCmdList)) {
keyProjectPenaltyPersonnelRepository.deleteByKeyProjectId(keyProjectE.getKeyProjectId());
@ -134,5 +129,34 @@ public class KeyProjectAddExe {
}
return keyProjectCO;
}
private void saveKeyProjectCameras(String keyProjectId, List<KeyProjectCameraAddCmd> keyProjectCameraAddCmdList) {
keyProjectCameraRepository.deleteByKeyProjectId(keyProjectId);
List<KeyProjectCameraAddCmd> filteredCameraAddCmdList = filterCameraAddCmdList(keyProjectCameraAddCmdList);
if (CollectionUtils.isEmpty(filteredCameraAddCmdList)) {
return;
}
List<KeyProjectCameraDO> keyProjectCameraDOList = keyProjectCameraCoConvertor.converCmdsToDOs(filteredCameraAddCmdList);
keyProjectCameraDOList.forEach(item -> {
item.setKeyProjectId(keyProjectId);
item.setKeyProjectCameraId(Tools.get32UUID());
});
keyProjectCameraRepository.saveBatch(keyProjectCameraDOList);
}
private List<KeyProjectCameraAddCmd> filterCameraAddCmdList(List<KeyProjectCameraAddCmd> keyProjectCameraAddCmdList) {
if (keyProjectCameraAddCmdList == null) {
return null;
}
return new ArrayList<>(keyProjectCameraAddCmdList.stream()
.filter(item -> item != null
&& StringUtils.isNotBlank(item.getCameraId())
&& item.getCameraType() != null)
.collect(Collectors.toMap(item -> item.getCameraId() + "_" + item.getCameraType(),
item -> item,
(exist, ignore) -> exist,
LinkedHashMap::new))
.values());
}
}

View File

@ -28,9 +28,11 @@ import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.time.LocalDateTime;
import java.util.Arrays;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
@ -90,15 +92,8 @@ public class KeyProjectUpdateExe {
if (!res) {
throw new BizException("修改失败");
}
if(keyProjectUpdateCmd.getKeyProjectCameraAddCmdList()!=null){
keyProjectCameraRepository.deleteByKeyProjectId(keyProjectE.getKeyProjectId());
List<KeyProjectCameraAddCmd> keyProjectCameraAddCmdList = keyProjectUpdateCmd.getKeyProjectCameraAddCmdList();
List<KeyProjectCameraDO> keyProjectCameraDOList =keyProjectCameraCoConvertor.converCmdsToDOs(keyProjectCameraAddCmdList);
keyProjectCameraDOList.forEach(keyProjectCameraAddCmd -> {
keyProjectCameraAddCmd.setKeyProjectId(keyProjectE.getKeyProjectId());
keyProjectCameraAddCmd.setKeyProjectCameraId(Tools.get32UUID());
});
keyProjectCameraRepository.saveBatch(keyProjectCameraDOList);
if (keyProjectUpdateCmd.getKeyProjectCameraAddCmdList() != null) {
saveKeyProjectCameras(keyProjectE.getKeyProjectId(), keyProjectUpdateCmd.getKeyProjectCameraAddCmdList());
}
if (keyProjectUpdateCmd.getKeyProjectPenaltyPersonnelAddCmdList() != null) {
keyProjectPenaltyPersonnelRepository.deleteByKeyProjectId(keyProjectE.getKeyProjectId());
@ -181,14 +176,7 @@ public class KeyProjectUpdateExe {
// 流程二(自动创建):开工确认时可添加摄像头和处罚人员
if (CreateSourceEnum.AUTO.getCode().equals(byId.getCreateSource())) {
if (keyProjectUpdateStatusCmd.getKeyProjectCameraAddCmdList() != null) {
keyProjectCameraRepository.deleteByKeyProjectId(byId.getKeyProjectId());
List<KeyProjectCameraAddCmd> keyProjectCameraAddCmdList = keyProjectUpdateStatusCmd.getKeyProjectCameraAddCmdList();
List<KeyProjectCameraDO> keyProjectCameraDOList = keyProjectCameraCoConvertor.converCmdsToDOs(keyProjectCameraAddCmdList);
keyProjectCameraDOList.forEach(keyProjectCameraAddCmd -> {
keyProjectCameraAddCmd.setKeyProjectId(byId.getKeyProjectId());
keyProjectCameraAddCmd.setKeyProjectCameraId(Tools.get32UUID());
});
keyProjectCameraRepository.saveBatch(keyProjectCameraDOList);
saveKeyProjectCameras(byId.getKeyProjectId(), keyProjectUpdateStatusCmd.getKeyProjectCameraAddCmdList());
}
if (keyProjectUpdateStatusCmd.getKeyProjectPenaltyPersonnelAddCmdList() != null) {
keyProjectPenaltyPersonnelRepository.deleteByKeyProjectId(byId.getKeyProjectId());
@ -229,5 +217,34 @@ public class KeyProjectUpdateExe {
|| StringUtils.isNotBlank(item.getDepartmentName())))
.collect(Collectors.toList());
}
private void saveKeyProjectCameras(String keyProjectId, List<KeyProjectCameraAddCmd> keyProjectCameraAddCmdList) {
keyProjectCameraRepository.deleteByKeyProjectId(keyProjectId);
List<KeyProjectCameraAddCmd> filteredCameraAddCmdList = filterCameraAddCmdList(keyProjectCameraAddCmdList);
if (CollectionUtils.isEmpty(filteredCameraAddCmdList)) {
return;
}
List<KeyProjectCameraDO> keyProjectCameraDOList = keyProjectCameraCoConvertor.converCmdsToDOs(filteredCameraAddCmdList);
keyProjectCameraDOList.forEach(item -> {
item.setKeyProjectId(keyProjectId);
item.setKeyProjectCameraId(Tools.get32UUID());
});
keyProjectCameraRepository.saveBatch(keyProjectCameraDOList);
}
private List<KeyProjectCameraAddCmd> filterCameraAddCmdList(List<KeyProjectCameraAddCmd> keyProjectCameraAddCmdList) {
if (keyProjectCameraAddCmdList == null) {
return null;
}
return new ArrayList<>(keyProjectCameraAddCmdList.stream()
.filter(item -> item != null
&& StringUtils.isNotBlank(item.getCameraId())
&& item.getCameraType() != null)
.collect(Collectors.toMap(item -> item.getCameraId() + "_" + item.getCameraType(),
item -> item,
(exist, ignore) -> exist,
LinkedHashMap::new))
.values());
}
}

View File

@ -1,5 +1,6 @@
package com.zcloud.key.project.command.query.inspection;
import cn.hutool.core.collection.CollUtil;
import com.alibaba.cola.dto.PageResponse;
import com.alibaba.cola.exception.BizException;
import com.jjb.saas.framework.auth.model.SSOUser;
@ -33,7 +34,6 @@ import com.zcloud.key.project.persistence.repository.inspection.SafetyEnvironmen
import com.zcloud.key.project.persistence.repository.inspection.SafetyEnvironmentalInspectionUserRepository;
import lombok.AllArgsConstructor;
import org.springframework.stereotype.Component;
import org.springframework.util.ObjectUtils;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@ -70,14 +70,12 @@ public class SafetyEnvironmentalInspectionQueryExe {
public SafetyEnvironmentalInspectionCO queryById(String uuid) {
// 安全环保检查信息
SafetyEnvironmentalInspectionDO inspectionDO = safetyEnvironmentalInspectionRepository.getByInspectionId(uuid);
Integer verifyType = 2;
Integer affirmType = 3;
if (!ObjectUtils.isEmpty(inspectionDO.getDefendFlag()) && inspectionDO.getDefendFlag() == 1 && inspectionDO.getStatus() != 7){
verifyType = 5;
affirmType = 6;
}
Integer verifyType;
Integer affirmType;
// 操作流程
List<SafetyEnvironmentalInspectionUserDO> inspectionUserDOs = safetyEnvironmentalInspectionUserRepository.listAllByInspectionId(inspectionDO.getInspectionId());
verifyType = resolveInspectionStageType(inspectionUserDOs, 5, 2);
affirmType = resolveInspectionStageType(inspectionUserDOs, 6, 3);
// 核实人列表
List<SafetyEnvironmentalInspectionUserDO> verifyUserDOs = new ArrayList<>();
// 确认人列表
@ -137,6 +135,17 @@ public class SafetyEnvironmentalInspectionQueryExe {
return PageResponse.of(examCenterCOS, pageResponse.getTotalCount(), pageResponse.getPageSize(), pageResponse.getPageIndex());
}
private Integer resolveInspectionStageType(List<SafetyEnvironmentalInspectionUserDO> inspectionUserDOs,
Integer preferredType,
Integer fallbackType) {
if (CollUtil.isEmpty(inspectionUserDOs)) {
return fallbackType;
}
boolean hasPreferredType = inspectionUserDOs.stream()
.anyMatch(item -> item != null && preferredType.equals(item.getType()));
return hasPreferredType ? preferredType : fallbackType;
}
private void fillPendingUserParams(Map<String, Object> params, SafetyEnvironmentalInspectionPageQry qry) {
List<Integer> currentPendingTypeList = resolveCurrentPendingTypeList(qry);
if (currentPendingTypeList == null || currentPendingTypeList.isEmpty()) {