package jnpf.dmsService.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import jnpf.dmsEntity.DmsWenjianBianhaoGuizeEntity; import jnpf.dmsMapper.DmsWenjianBianhaoGuizeMapper; import jnpf.dmsService.DmsWenjianBianhaoGuizeTongguoService; import jnpf.exception.DataException; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.LinkedHashSet; import java.util.List; import java.util.Set; @Service @RequiredArgsConstructor public class DmsWenjianBianhaoGuizeTongguoServiceImpl implements DmsWenjianBianhaoGuizeTongguoService { private static final String BIZ_ENABLED_DISABLED = "disabled"; private final DmsWenjianBianhaoGuizeMapper guizeMapper; @Override @Transactional(rollbackFor = Exception.class) public void tongguo(String flowId, String taskId) throws DataException { String resolvedFlowId = requireValue(flowId, "流程ID(flow_id)"); String resolvedTaskId = requireValue(taskId, "流程任务ID(task_id)"); List guizes = findGuizes(resolvedFlowId, resolvedTaskId); Set guizeIds = new LinkedHashSet<>(); Set liushuihaos = new LinkedHashSet<>(); for (DmsWenjianBianhaoGuizeEntity guize : guizes) { guizeIds.add(guize.getId()); String liushuihao = trimToEmpty(guize.getGuizeLiushuihao()); if (!liushuihao.isEmpty()) { liushuihaos.add(liushuihao); } } for (String liushuihao : liushuihaos) { disableOtherRules(liushuihao, guizeIds); } } private List findGuizes(String flowId, String taskId) throws DataException { LambdaQueryWrapper query = new LambdaQueryWrapper<>(); query.eq(DmsWenjianBianhaoGuizeEntity::getFlowId, flowId) .eq(DmsWenjianBianhaoGuizeEntity::getFlowTaskId, taskId) .isNull(DmsWenjianBianhaoGuizeEntity::getDeleteMark); List guizes = guizeMapper.selectList(query); if (guizes.isEmpty()) { throw new DataException("未找到文件编号规则:flow_id=" + flowId + ", task_id=" + taskId); } return guizes; } private void disableOtherRules(String liushuihao, Set currentGuizeIds) { LambdaUpdateWrapper update = new LambdaUpdateWrapper<>(); update.eq(DmsWenjianBianhaoGuizeEntity::getGuizeLiushuihao, liushuihao) .notIn(DmsWenjianBianhaoGuizeEntity::getId, currentGuizeIds) .and(wrapper -> wrapper.isNull(DmsWenjianBianhaoGuizeEntity::getBizEnabled) .or() .ne(DmsWenjianBianhaoGuizeEntity::getBizEnabled, BIZ_ENABLED_DISABLED)) .set(DmsWenjianBianhaoGuizeEntity::getBizEnabled, BIZ_ENABLED_DISABLED); guizeMapper.update(null, update); } private String requireValue(String value, String fieldName) throws DataException { String resolved = trimToEmpty(value); if (resolved.isEmpty()) { throw new DataException(fieldName + "不能为空"); } return resolved; } private String trimToEmpty(String value) { return value == null ? "" : value.trim(); } }