diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/esInitChange/entity/ProcessEsInitChange.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/esInitChange/entity/ProcessEsInitChange.java index d1d3e57d..300f8cbf 100644 --- a/laws-modules/src/main/java/com/jero/modules/activiti/process/esInitChange/entity/ProcessEsInitChange.java +++ b/laws-modules/src/main/java/com/jero/modules/activiti/process/esInitChange/entity/ProcessEsInitChange.java @@ -184,11 +184,6 @@ public class ProcessEsInitChange implements Serializable { */ private String componentName; - /** - * 适用专业 - */ - private String applicableProfession; - /** * 主起草人 */ diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/esInitChange/service/impl/ProcessEsInitChangeServiceImpl.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/esInitChange/service/impl/ProcessEsInitChangeServiceImpl.java index 809741e6..f82e7af2 100644 --- a/laws-modules/src/main/java/com/jero/modules/activiti/process/esInitChange/service/impl/ProcessEsInitChangeServiceImpl.java +++ b/laws-modules/src/main/java/com/jero/modules/activiti/process/esInitChange/service/impl/ProcessEsInitChangeServiceImpl.java @@ -1,5 +1,6 @@ package com.jero.modules.activiti.process.esInitChange.service.impl; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.jero.common.exception.JeroBootException; @@ -10,6 +11,7 @@ import com.jero.modules.activiti.process.common.service.ProcessDraftService; import com.jero.modules.activiti.process.esInitChange.entity.ProcessEsInitChange; import com.jero.modules.activiti.process.esInitChange.service.ProcessEsInitChangeService; import com.jero.modules.activiti.process.esInitChange.mapper.ProcessEsInitChangeMapper; +import com.jero.modules.laws.enterprise.service.ESSequenceNumberProvider; import com.jero.modules.laws.enterprise.util.EnterpriseStandardUtil; import com.jero.modules.sys.utils.UserUtils; import lombok.extern.slf4j.Slf4j; @@ -31,7 +33,7 @@ import java.util.stream.Collectors; @Transactional(rollbackFor = JeroBootException.class) @Slf4j public class ProcessEsInitChangeServiceImpl extends ServiceImpl - implements ProcessEsInitChangeService, IActFlowCustomService { + implements ProcessEsInitChangeService, IActFlowCustomService, ESSequenceNumberProvider { @Resource private ProcessDraftService processDraftService; @@ -171,6 +173,20 @@ public class ProcessEsInitChangeServiceImpl extends ServiceImpl getSequenceNumbers(String esCodeDictValue, String esNameCodeDictValue, String categoryCodeDictValue) { + // 已经存在的标准 + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper.eq(ProcessEsInitChange::getEnStandardCode, esCodeDictValue); + lambdaQueryWrapper.eq(ProcessEsInitChange::getEnNameCode, esNameCodeDictValue); + lambdaQueryWrapper.eq(ProcessEsInitChange::getStandardCategoryCode, categoryCodeDictValue); + lambdaQueryWrapper.eq(ProcessEsInitChange::getDelFlag, 0); + List list = this.list(lambdaQueryWrapper); + + return list.stream().map(ProcessEsInitChange::getNewEnStandardNo) + .map(EnterpriseStandardUtil::getSequenceNoFromStandardNo).collect(Collectors.toList()); + } } diff --git a/laws-modules/src/main/java/com/jero/modules/laws/enterprise/service/ESSequenceNumberProvider.java b/laws-modules/src/main/java/com/jero/modules/laws/enterprise/service/ESSequenceNumberProvider.java new file mode 100644 index 00000000..67e6ddb8 --- /dev/null +++ b/laws-modules/src/main/java/com/jero/modules/laws/enterprise/service/ESSequenceNumberProvider.java @@ -0,0 +1,8 @@ +package com.jero.modules.laws.enterprise.service; + +import java.util.List; + +// 获取企标编号中的序列号接口 +public interface ESSequenceNumberProvider { + List getSequenceNumbers(String esCodeDictValue, String esNameCodeDictValue, String categoryCodeDictValue); +} \ No newline at end of file diff --git a/laws-modules/src/main/java/com/jero/modules/laws/enterprise/service/impl/EnterpriseStandardPlanServiceImpl.java b/laws-modules/src/main/java/com/jero/modules/laws/enterprise/service/impl/EnterpriseStandardPlanServiceImpl.java index 29180c0a..f2497ddc 100644 --- a/laws-modules/src/main/java/com/jero/modules/laws/enterprise/service/impl/EnterpriseStandardPlanServiceImpl.java +++ b/laws-modules/src/main/java/com/jero/modules/laws/enterprise/service/impl/EnterpriseStandardPlanServiceImpl.java @@ -1,5 +1,6 @@ package com.jero.modules.laws.enterprise.service.impl; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; @@ -10,8 +11,11 @@ import com.jero.modules.laws.enterprise.entity.dto.ESPlanQueryDTO; import com.jero.modules.laws.enterprise.entity.vo.EnterpriseStandardPlanVo; import com.jero.common.exception.JeroBootException; import com.jero.modules.laws.enterprise.entity.EnterpriseStandardPlan; +import com.jero.modules.laws.enterprise.service.ESSequenceNumberProvider; import com.jero.modules.laws.enterprise.service.EnterpriseStandardPlanService; import com.jero.modules.laws.enterprise.mapper.EnterpriseStandardPlanMapper; +import com.jero.modules.laws.enterprise.util.EnterpriseStandardUtil; +import com.jero.modules.laws.standard.entity.LawsEnterpriseStandard; import com.jero.modules.projectLibrary.entity.LawsProjectLibrary; import com.jero.modules.tag.entity.LawsTag; import lombok.extern.slf4j.Slf4j; @@ -42,7 +46,7 @@ import java.util.stream.Collectors; @Transactional(rollbackFor = JeroBootException.class) @Slf4j public class EnterpriseStandardPlanServiceImpl extends ServiceImpl - implements EnterpriseStandardPlanService{ + implements EnterpriseStandardPlanService, ESSequenceNumberProvider { @Resource private ISysBaseAPI sysBaseAPI; @@ -140,6 +144,19 @@ public class EnterpriseStandardPlanServiceImpl extends ServiceImpl dictModel)); } + @Override + public List getSequenceNumbers(String esCodeDictValue, String esNameCodeDictValue, String categoryCodeDictValue) { + // 已经存在的标准 + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper.eq(EnterpriseStandardPlan::getEnStandardCode, esCodeDictValue); + lambdaQueryWrapper.eq(EnterpriseStandardPlan::getEnNameCode, esNameCodeDictValue); + lambdaQueryWrapper.eq(EnterpriseStandardPlan::getStandardCategoryCode, categoryCodeDictValue); + lambdaQueryWrapper.eq(EnterpriseStandardPlan::getDelFlag, 0); + List espList = this.list(lambdaQueryWrapper); + + return espList.stream().map(EnterpriseStandardPlan::getNewEnStandardNo) + .map(EnterpriseStandardUtil::getSequenceNoFromStandardNo).collect(Collectors.toList()); + } } diff --git a/laws-modules/src/main/java/com/jero/modules/laws/enterprise/util/EnterpriseStandardUtil.java b/laws-modules/src/main/java/com/jero/modules/laws/enterprise/util/EnterpriseStandardUtil.java index 1f752193..87680234 100644 --- a/laws-modules/src/main/java/com/jero/modules/laws/enterprise/util/EnterpriseStandardUtil.java +++ b/laws-modules/src/main/java/com/jero/modules/laws/enterprise/util/EnterpriseStandardUtil.java @@ -1,20 +1,15 @@ package com.jero.modules.laws.enterprise.util; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.jero.common.system.api.ISysBaseAPI; import com.jero.common.system.vo.DictModel; import com.jero.modules.laws.common.constant.FieldCommon; -import com.jero.modules.laws.standard.entity.LawsEnterpriseStandard; -import com.jero.modules.laws.standard.service.ILawsEnterpriseStandardService; +import com.jero.modules.laws.enterprise.service.ESSequenceNumberProvider; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang.StringUtils; import org.springframework.stereotype.Component; import javax.annotation.Resource; -import java.util.Comparator; -import java.util.List; -import java.util.Map; -import java.util.Optional; +import java.util.*; import java.util.stream.Collectors; /** @@ -29,43 +24,42 @@ public class EnterpriseStandardUtil { private ISysBaseAPI sysBaseAPI; @Resource - private ILawsEnterpriseStandardService enterpriseStandardService; + private List providers; /** * 生成新序列号 + * * @param esCodeDictValue * @param esNameCodeDictValue * @param categoryCodeDictValue - * @return + * @return 顺序号与标准代号/名称代号/标准类别代号相关联,新的标准代号+名称代号+标准类别代号从0001开始 */ public String generateNewSequenceNumber(String esCodeDictValue, String esNameCodeDictValue, String categoryCodeDictValue) { - String sequenceNumber = "0001"; - // 根据 标准代号/名称代号/标准类别 的相关性生成顺序号 - // 已经存在的标准 - LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); - lambdaQueryWrapper.eq(LawsEnterpriseStandard::getStandardCode, esCodeDictValue); - lambdaQueryWrapper.eq(LawsEnterpriseStandard::getNameCode, esNameCodeDictValue); - lambdaQueryWrapper.eq(LawsEnterpriseStandard::getCategoryCode, categoryCodeDictValue); - lambdaQueryWrapper.eq(LawsEnterpriseStandard::getDelFlag, 0); - List esList = enterpriseStandardService.list(lambdaQueryWrapper); + List allSequenceNumbers = new ArrayList<>(); - List dbSequenceNumberList = esList.stream().map(LawsEnterpriseStandard::getStandardNumber) - .map(EnterpriseStandardUtil::getSequenceNoFromStandardNo).collect(Collectors.toList()); - // TODO 流程中的标准 - - - // 获取最大的序列号 - Optional maxSequence = dbSequenceNumberList.stream().max(Comparator.naturalOrder()); - if (maxSequence.isPresent()) { - int maxNumber = Integer.parseInt(maxSequence.get()); - int newNumber = maxNumber + 1; - sequenceNumber = String.format("%04d", newNumber); + for (ESSequenceNumberProvider provider : providers) { + allSequenceNumbers.addAll(provider.getSequenceNumbers(esCodeDictValue, esNameCodeDictValue, categoryCodeDictValue)); } - return sequenceNumber; + + // 转换为整数列表并排序 + List sortedNumbers = allSequenceNumbers.stream() + .map(Integer::parseInt) + .sorted() + .collect(Collectors.toList()); + + int expectedNumber = 1; // 我们期望的最小序列号 + for (int num : sortedNumbers) { + if (num != expectedNumber) { + break; + } + expectedNumber++; + } + return String.format("%04d", expectedNumber); } /** * 生成企标编号 + * * @param parameterMap * @return */ @@ -89,7 +83,7 @@ public class EnterpriseStandardUtil { return standardNumber; } - private String transEsCode(String esCode){ + private String transEsCode(String esCode) { if (StringUtils.isNotBlank(esCode)) { List esCodeDictModelList = sysBaseAPI.getDictItems("enterprise_standard_code"); List collect = esCodeDictModelList.stream().filter(e -> esCode.equals(e.getValue())).collect(Collectors.toList()); @@ -100,7 +94,7 @@ public class EnterpriseStandardUtil { return ""; } - private String transEsNameCode(String esNameCode){ + private String transEsNameCode(String esNameCode) { if (StringUtils.isNotBlank(esNameCode)) { List esCodeDictModelList = sysBaseAPI.getDictItems("enterprise_name_code"); List collect = esCodeDictModelList.stream().filter(e -> esNameCode.equals(e.getValue())).collect(Collectors.toList()); @@ -111,7 +105,7 @@ public class EnterpriseStandardUtil { return ""; } - private String transCategoryCode(String categoryCode){ + private String transCategoryCode(String categoryCode) { if (StringUtils.isNotBlank(categoryCode)) { List esCodeDictModelList = sysBaseAPI.getDictItems("standard_category_code"); List collect = esCodeDictModelList.stream().filter(e -> categoryCode.equals(e.getValue())).collect(Collectors.toList()); @@ -124,6 +118,7 @@ public class EnterpriseStandardUtil { /** * 获取序列号 + * * @param standardNo * @return */ diff --git a/laws-modules/src/main/java/com/jero/modules/laws/standard/service/impl/LawsEnterpriseStandardServiceImpl.java b/laws-modules/src/main/java/com/jero/modules/laws/standard/service/impl/LawsEnterpriseStandardServiceImpl.java index 4c800df3..252e6e74 100644 --- a/laws-modules/src/main/java/com/jero/modules/laws/standard/service/impl/LawsEnterpriseStandardServiceImpl.java +++ b/laws-modules/src/main/java/com/jero/modules/laws/standard/service/impl/LawsEnterpriseStandardServiceImpl.java @@ -4,6 +4,8 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.jero.common.constant.CommonConstant; import com.jero.common.exception.JeroBootException; +import com.jero.modules.laws.enterprise.service.ESSequenceNumberProvider; +import com.jero.modules.laws.enterprise.util.EnterpriseStandardUtil; import com.jero.modules.laws.standard.entity.LawsEnterpriseStandard; import com.jero.modules.laws.standard.service.ILawsEnterpriseStandardService; import com.jero.modules.laws.standard.mapper.LawsEnterpriseStandardMapper; @@ -11,6 +13,9 @@ import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.List; +import java.util.stream.Collectors; + /** * @author ThinkBook * @description 针对表【laws_enterprise_standard(企业标准)】的数据库操作Service实现 @@ -19,7 +24,7 @@ import org.springframework.transaction.annotation.Transactional; @Service @Transactional(rollbackFor = JeroBootException.class) public class LawsEnterpriseStandardServiceImpl extends ServiceImpl - implements ILawsEnterpriseStandardService { + implements ILawsEnterpriseStandardService, ESSequenceNumberProvider { @Override public LawsEnterpriseStandard queryByStandardNumber(String standardNumber) { @@ -32,6 +37,20 @@ public class LawsEnterpriseStandardServiceImpl extends ServiceImpl getSequenceNumbers(String esCodeDictValue, String esNameCodeDictValue, String categoryCodeDictValue) { + // 已经存在的标准 + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper.eq(LawsEnterpriseStandard::getStandardCode, esCodeDictValue); + lambdaQueryWrapper.eq(LawsEnterpriseStandard::getNameCode, esNameCodeDictValue); + lambdaQueryWrapper.eq(LawsEnterpriseStandard::getCategoryCode, categoryCodeDictValue); + lambdaQueryWrapper.eq(LawsEnterpriseStandard::getDelFlag, 0); + List esList = this.list(lambdaQueryWrapper); + + return esList.stream().map(LawsEnterpriseStandard::getStandardNumber) + .map(EnterpriseStandardUtil::getSequenceNoFromStandardNo).collect(Collectors.toList()); + } }