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.dmsEntity.DmsWenjianBianhaoGuizeFeiqiEntity; import jnpf.dmsMapper.DmsWenjianBianhaoGuizeFeiqiMapper; import jnpf.dmsMapper.DmsWenjianBianhaoGuizeMapper; import jnpf.dmsService.DmsWenjianBianhaoGuizeFeiqiService; import jnpf.exception.DataException; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.LinkedHashSet; import java.util.List; import java.util.Set; @Service public class DmsWenjianBianhaoGuizeFeiqiServiceImpl implements DmsWenjianBianhaoGuizeFeiqiService { private static final String BIZ_ENABLED_DISABLED = "disabled"; @Autowired private DmsWenjianBianhaoGuizeFeiqiMapper feiqiMapper; @Autowired private DmsWenjianBianhaoGuizeMapper guizeMapper; @Override @Transactional(rollbackFor = Exception.class) public void feiqiGuize(String flowId, String taskId) throws DataException { String resolvedFlowId = trimToEmpty(flowId); String resolvedTaskId = trimToEmpty(taskId); if (resolvedFlowId.isEmpty()) { throw new DataException("流程ID(flow_id)不能为空"); } if (resolvedTaskId.isEmpty()) { throw new DataException("流程任务ID(task_id)不能为空"); } LambdaQueryWrapper relationQuery = new LambdaQueryWrapper<>(); relationQuery.eq(DmsWenjianBianhaoGuizeFeiqiEntity::getFlowId, resolvedFlowId) .eq(DmsWenjianBianhaoGuizeFeiqiEntity::getTaskId, resolvedTaskId); List relations = feiqiMapper.selectList(relationQuery); if (relations.isEmpty()) { throw new DataException("未找到文件编号规则废弃关联记录:flow_id=" + resolvedFlowId + ", task_id=" + resolvedTaskId); } Set guizeIds = new LinkedHashSet<>(); for (DmsWenjianBianhaoGuizeFeiqiEntity relation : relations) { String guizeId = trimToEmpty(relation.getGuizeId()); if (guizeId.isEmpty()) { throw new DataException("文件编号规则废弃关联记录未关联规则ID"); } guizeIds.add(guizeId); } LambdaQueryWrapper guizeQuery = new LambdaQueryWrapper<>(); guizeQuery.in(DmsWenjianBianhaoGuizeEntity::getId, guizeIds); if (guizeMapper.selectCount(guizeQuery) != guizeIds.size()) { throw new DataException("存在未找到的文件编号规则,无法废弃"); } LambdaUpdateWrapper guizeUpdate = new LambdaUpdateWrapper<>(); guizeUpdate.in(DmsWenjianBianhaoGuizeEntity::getId, guizeIds) .set(DmsWenjianBianhaoGuizeEntity::getBizEnabled, BIZ_ENABLED_DISABLED); guizeMapper.update(null, guizeUpdate); } private String trimToEmpty(String value) { return value == null ? "" : value.trim(); } }