diff --git a/web-app/src/main/java/com/zcloud/fire/check/command/FireCheckListAddExe.java b/web-app/src/main/java/com/zcloud/fire/check/command/FireCheckListAddExe.java index 70dfad7..7ce2f51 100644 --- a/web-app/src/main/java/com/zcloud/fire/check/command/FireCheckListAddExe.java +++ b/web-app/src/main/java/com/zcloud/fire/check/command/FireCheckListAddExe.java @@ -15,8 +15,13 @@ import com.zcloud.fire.check.domain.model.FireCheckListE; import com.zcloud.fire.check.domain.model.FireCheckListItemE; import com.zcloud.fire.check.domain.model.FireCheckListUserE; import com.zcloud.fire.check.dto.FireCheckListAddCmd; +import com.zcloud.fire.check.dto.FireCheckListItemAddCmd; +import com.zcloud.fire.check.persistence.dataobject.FireCheckStandardDO; +import com.zcloud.fire.check.persistence.dataobject.FireDeviceDO; import com.zcloud.fire.check.persistence.dataobject.UserDO; import com.zcloud.fire.check.persistence.repository.FireCheckListRepository; +import com.zcloud.fire.check.persistence.repository.FireCheckStandardRepository; +import com.zcloud.fire.check.persistence.repository.FireDeviceRepository; import com.zcloud.fire.check.persistence.repository.UserRepository; import com.zcloud.gbscommon.todolistmq.TodoListEventPusherUtil; import com.zcloud.gbscommon.todolistmq.event.TodoListAddBatchEvent; @@ -31,8 +36,10 @@ 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.Set; import java.util.stream.Collectors; @@ -52,11 +59,14 @@ public class FireCheckListAddExe { private final FireCheckListUserGateway fireCheckListUserGateway; private final TodoListEventPusherUtil todoListEventPusherUtil; private final UserRepository userRepository; + private final FireDeviceRepository fireDeviceRepository; + private final FireCheckStandardRepository fireCheckStandardRepository; @DubboReference private MessageFacade messageFacade; private MessageConfig messageConfig; @Transactional(rollbackFor = Exception.class) public boolean execute(FireCheckListAddCmd cmd) { + checkFireDeviceStandard(cmd.getFireCheckListItemAddCmdList()); //可以是多个负责人 FireCheckListE fireCheckListE = new FireCheckListE(); BeanUtils.copyProperties(cmd, fireCheckListE); @@ -125,5 +135,51 @@ public class FireCheckListAddExe { } return true; } + + private void checkFireDeviceStandard(List itemList) { + if (itemList == null || itemList.isEmpty()) { + return; + } + + List fireDeviceIdList = itemList.stream() + .map(FireCheckListItemAddCmd::getFireDeviceId) + .filter(id -> id != null && !id.trim().isEmpty()) + .distinct() + .collect(Collectors.toList()); + if (fireDeviceIdList.isEmpty()) { + return; + } + + Map params = new HashMap<>(); + params.put("fireDeviceIdList", fireDeviceIdList); + List fireDeviceList = fireDeviceRepository.getAllList(params); + + Map fireDeviceTypeNameMap = new LinkedHashMap<>(); + fireDeviceList.forEach(fireDevice -> { + String fireDeviceType = fireDevice.getFireDeviceType(); + if (fireDeviceType != null && !fireDeviceType.trim().isEmpty()) { + String fireDeviceTypeName = fireDevice.getFireDeviceTypeName(); + fireDeviceTypeNameMap.putIfAbsent(fireDeviceType, + fireDeviceTypeName == null || fireDeviceTypeName.trim().isEmpty() + ? fireDeviceType : fireDeviceTypeName); + } + }); + if (fireDeviceTypeNameMap.isEmpty()) { + return; + } + + List fireCheckStandardList = fireCheckStandardRepository + .getCheckStandardList(new ArrayList<>(fireDeviceTypeNameMap.keySet())); + Set standardTypeSet = fireCheckStandardList.stream() + .map(FireCheckStandardDO::getFireDeviceType) + .collect(Collectors.toSet()); + List missingTypeNameList = fireDeviceTypeNameMap.entrySet().stream() + .filter(entry -> !standardTypeSet.contains(entry.getKey())) + .map(Map.Entry::getValue) + .collect(Collectors.toList()); + if (!missingTypeNameList.isEmpty()) { + throw new BizException(String.join("、", missingTypeNameList) + "无检查标准,不允许新增"); + } + } }