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.stereotype.Component;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@ -103,14 +105,7 @@ public class KeyProjectAddExe {
throw new BizException("保存失败"); throw new BizException("保存失败");
} }
if (cmd.getKeyProjectCameraAddCmdList() != null) { if (cmd.getKeyProjectCameraAddCmdList() != null) {
List<KeyProjectCameraAddCmd> keyProjectCameraAddCmdList = cmd.getKeyProjectCameraAddCmdList(); saveKeyProjectCameras(keyProjectE.getKeyProjectId(), cmd.getKeyProjectCameraAddCmdList());
List<KeyProjectCameraDO> keyProjectCameraDOList = keyProjectCameraCoConvertor.converCmdsToDOs(keyProjectCameraAddCmdList);
keyProjectCameraDOList.forEach(keyProjectCameraAddCmd -> {
keyProjectCameraAddCmd.setKeyProjectId(keyProjectE.getKeyProjectId());
keyProjectCameraAddCmd.setKeyProjectCameraId(Tools.get32UUID());
});
keyProjectCameraRepository.saveBatch(keyProjectCameraDOList);
} }
if (!CollectionUtils.isEmpty(penaltyPersonnelAddCmdList)) { if (!CollectionUtils.isEmpty(penaltyPersonnelAddCmdList)) {
keyProjectPenaltyPersonnelRepository.deleteByKeyProjectId(keyProjectE.getKeyProjectId()); keyProjectPenaltyPersonnelRepository.deleteByKeyProjectId(keyProjectE.getKeyProjectId());
@ -134,5 +129,34 @@ public class KeyProjectAddExe {
} }
return keyProjectCO; 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.stereotype.Component;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.Arrays; import java.util.Arrays;
import java.util.HashMap; import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@ -91,14 +93,7 @@ public class KeyProjectUpdateExe {
throw new BizException("修改失败"); throw new BizException("修改失败");
} }
if (keyProjectUpdateCmd.getKeyProjectCameraAddCmdList() != null) { if (keyProjectUpdateCmd.getKeyProjectCameraAddCmdList() != null) {
keyProjectCameraRepository.deleteByKeyProjectId(keyProjectE.getKeyProjectId()); saveKeyProjectCameras(keyProjectE.getKeyProjectId(), keyProjectUpdateCmd.getKeyProjectCameraAddCmdList());
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.getKeyProjectPenaltyPersonnelAddCmdList() != null) { if (keyProjectUpdateCmd.getKeyProjectPenaltyPersonnelAddCmdList() != null) {
keyProjectPenaltyPersonnelRepository.deleteByKeyProjectId(keyProjectE.getKeyProjectId()); keyProjectPenaltyPersonnelRepository.deleteByKeyProjectId(keyProjectE.getKeyProjectId());
@ -181,14 +176,7 @@ public class KeyProjectUpdateExe {
// 流程二(自动创建):开工确认时可添加摄像头和处罚人员 // 流程二(自动创建):开工确认时可添加摄像头和处罚人员
if (CreateSourceEnum.AUTO.getCode().equals(byId.getCreateSource())) { if (CreateSourceEnum.AUTO.getCode().equals(byId.getCreateSource())) {
if (keyProjectUpdateStatusCmd.getKeyProjectCameraAddCmdList() != null) { if (keyProjectUpdateStatusCmd.getKeyProjectCameraAddCmdList() != null) {
keyProjectCameraRepository.deleteByKeyProjectId(byId.getKeyProjectId()); saveKeyProjectCameras(byId.getKeyProjectId(), keyProjectUpdateStatusCmd.getKeyProjectCameraAddCmdList());
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);
} }
if (keyProjectUpdateStatusCmd.getKeyProjectPenaltyPersonnelAddCmdList() != null) { if (keyProjectUpdateStatusCmd.getKeyProjectPenaltyPersonnelAddCmdList() != null) {
keyProjectPenaltyPersonnelRepository.deleteByKeyProjectId(byId.getKeyProjectId()); keyProjectPenaltyPersonnelRepository.deleteByKeyProjectId(byId.getKeyProjectId());
@ -229,5 +217,34 @@ public class KeyProjectUpdateExe {
|| StringUtils.isNotBlank(item.getDepartmentName()))) || StringUtils.isNotBlank(item.getDepartmentName())))
.collect(Collectors.toList()); .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; package com.zcloud.key.project.command.query.inspection;
import cn.hutool.core.collection.CollUtil;
import com.alibaba.cola.dto.PageResponse; import com.alibaba.cola.dto.PageResponse;
import com.alibaba.cola.exception.BizException; import com.alibaba.cola.exception.BizException;
import com.jjb.saas.framework.auth.model.SSOUser; 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 com.zcloud.key.project.persistence.repository.inspection.SafetyEnvironmentalInspectionUserRepository;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.util.ObjectUtils;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import java.io.IOException; import java.io.IOException;
@ -70,14 +70,12 @@ public class SafetyEnvironmentalInspectionQueryExe {
public SafetyEnvironmentalInspectionCO queryById(String uuid) { public SafetyEnvironmentalInspectionCO queryById(String uuid) {
// 安全环保检查信息 // 安全环保检查信息
SafetyEnvironmentalInspectionDO inspectionDO = safetyEnvironmentalInspectionRepository.getByInspectionId(uuid); SafetyEnvironmentalInspectionDO inspectionDO = safetyEnvironmentalInspectionRepository.getByInspectionId(uuid);
Integer verifyType = 2; Integer verifyType;
Integer affirmType = 3; Integer affirmType;
if (!ObjectUtils.isEmpty(inspectionDO.getDefendFlag()) && inspectionDO.getDefendFlag() == 1 && inspectionDO.getStatus() != 7){
verifyType = 5;
affirmType = 6;
}
// 操作流程 // 操作流程
List<SafetyEnvironmentalInspectionUserDO> inspectionUserDOs = safetyEnvironmentalInspectionUserRepository.listAllByInspectionId(inspectionDO.getInspectionId()); List<SafetyEnvironmentalInspectionUserDO> inspectionUserDOs = safetyEnvironmentalInspectionUserRepository.listAllByInspectionId(inspectionDO.getInspectionId());
verifyType = resolveInspectionStageType(inspectionUserDOs, 5, 2);
affirmType = resolveInspectionStageType(inspectionUserDOs, 6, 3);
// 核实人列表 // 核实人列表
List<SafetyEnvironmentalInspectionUserDO> verifyUserDOs = new ArrayList<>(); List<SafetyEnvironmentalInspectionUserDO> verifyUserDOs = new ArrayList<>();
// 确认人列表 // 确认人列表
@ -137,6 +135,17 @@ public class SafetyEnvironmentalInspectionQueryExe {
return PageResponse.of(examCenterCOS, pageResponse.getTotalCount(), pageResponse.getPageSize(), pageResponse.getPageIndex()); 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) { private void fillPendingUserParams(Map<String, Object> params, SafetyEnvironmentalInspectionPageQry qry) {
List<Integer> currentPendingTypeList = resolveCurrentPendingTypeList(qry); List<Integer> currentPendingTypeList = resolveCurrentPendingTypeList(qry);
if (currentPendingTypeList == null || currentPendingTypeList.isEmpty()) { if (currentPendingTypeList == null || currentPendingTypeList.isEmpty()) {