feat: 获取企标编号

This commit is contained in:
2023-10-12 13:48:12 +08:00
parent 2404f95605
commit fc2d045609
6 changed files with 91 additions and 41 deletions
@@ -184,11 +184,6 @@ public class ProcessEsInitChange implements Serializable {
*/
private String componentName;
/**
* 适用专业
*/
private String applicableProfession;
/**
* 主起草人
*/
@@ -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<ProcessEsInitChangeMapper, ProcessEsInitChange>
implements ProcessEsInitChangeService, IActFlowCustomService {
implements ProcessEsInitChangeService, IActFlowCustomService, ESSequenceNumberProvider {
@Resource
private ProcessDraftService processDraftService;
@@ -171,6 +173,20 @@ public class ProcessEsInitChangeServiceImpl extends ServiceImpl<ProcessEsInitCha
}
processDraftService.saveBatch(draftList);
}
@Override
public List<String> getSequenceNumbers(String esCodeDictValue, String esNameCodeDictValue, String categoryCodeDictValue) {
// 已经存在的标准
LambdaQueryWrapper<ProcessEsInitChange> lambdaQueryWrapper = new LambdaQueryWrapper<>();
lambdaQueryWrapper.eq(ProcessEsInitChange::getEnStandardCode, esCodeDictValue);
lambdaQueryWrapper.eq(ProcessEsInitChange::getEnNameCode, esNameCodeDictValue);
lambdaQueryWrapper.eq(ProcessEsInitChange::getStandardCategoryCode, categoryCodeDictValue);
lambdaQueryWrapper.eq(ProcessEsInitChange::getDelFlag, 0);
List<ProcessEsInitChange> list = this.list(lambdaQueryWrapper);
return list.stream().map(ProcessEsInitChange::getNewEnStandardNo)
.map(EnterpriseStandardUtil::getSequenceNoFromStandardNo).collect(Collectors.toList());
}
}
@@ -0,0 +1,8 @@
package com.jero.modules.laws.enterprise.service;
import java.util.List;
// 获取企标编号中的序列号接口
public interface ESSequenceNumberProvider {
List<String> getSequenceNumbers(String esCodeDictValue, String esNameCodeDictValue, String categoryCodeDictValue);
}
@@ -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<EnterpriseStandardPlanMapper, EnterpriseStandardPlan>
implements EnterpriseStandardPlanService{
implements EnterpriseStandardPlanService, ESSequenceNumberProvider {
@Resource
private ISysBaseAPI sysBaseAPI;
@@ -140,6 +144,19 @@ public class EnterpriseStandardPlanServiceImpl extends ServiceImpl<EnterpriseSta
return dictModelList.stream().collect(Collectors.toMap(DictModel::getValue, dictModel -> dictModel));
}
@Override
public List<String> getSequenceNumbers(String esCodeDictValue, String esNameCodeDictValue, String categoryCodeDictValue) {
// 已经存在的标准
LambdaQueryWrapper<EnterpriseStandardPlan> lambdaQueryWrapper = new LambdaQueryWrapper<>();
lambdaQueryWrapper.eq(EnterpriseStandardPlan::getEnStandardCode, esCodeDictValue);
lambdaQueryWrapper.eq(EnterpriseStandardPlan::getEnNameCode, esNameCodeDictValue);
lambdaQueryWrapper.eq(EnterpriseStandardPlan::getStandardCategoryCode, categoryCodeDictValue);
lambdaQueryWrapper.eq(EnterpriseStandardPlan::getDelFlag, 0);
List<EnterpriseStandardPlan> espList = this.list(lambdaQueryWrapper);
return espList.stream().map(EnterpriseStandardPlan::getNewEnStandardNo)
.map(EnterpriseStandardUtil::getSequenceNoFromStandardNo).collect(Collectors.toList());
}
}
@@ -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<ESSequenceNumberProvider> providers;
/**
* 生成新序列号
*
* @param esCodeDictValue
* @param esNameCodeDictValue
* @param categoryCodeDictValue
* @return
* @return 顺序号与标准代号/名称代号/标准类别代号相关联,新的标准代号+名称代号+标准类别代号从0001开始
*/
public String generateNewSequenceNumber(String esCodeDictValue, String esNameCodeDictValue, String categoryCodeDictValue) {
String sequenceNumber = "0001";
// 根据 标准代号/名称代号/标准类别 的相关性生成顺序号
// 已经存在的标准
LambdaQueryWrapper<LawsEnterpriseStandard> lambdaQueryWrapper = new LambdaQueryWrapper<>();
lambdaQueryWrapper.eq(LawsEnterpriseStandard::getStandardCode, esCodeDictValue);
lambdaQueryWrapper.eq(LawsEnterpriseStandard::getNameCode, esNameCodeDictValue);
lambdaQueryWrapper.eq(LawsEnterpriseStandard::getCategoryCode, categoryCodeDictValue);
lambdaQueryWrapper.eq(LawsEnterpriseStandard::getDelFlag, 0);
List<LawsEnterpriseStandard> esList = enterpriseStandardService.list(lambdaQueryWrapper);
List<String> allSequenceNumbers = new ArrayList<>();
List<String> dbSequenceNumberList = esList.stream().map(LawsEnterpriseStandard::getStandardNumber)
.map(EnterpriseStandardUtil::getSequenceNoFromStandardNo).collect(Collectors.toList());
// TODO 流程中的标准
// 获取最大的序列号
Optional<String> 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<Integer> 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<DictModel> esCodeDictModelList = sysBaseAPI.getDictItems("enterprise_standard_code");
List<DictModel> 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<DictModel> esCodeDictModelList = sysBaseAPI.getDictItems("enterprise_name_code");
List<DictModel> 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<DictModel> esCodeDictModelList = sysBaseAPI.getDictItems("standard_category_code");
List<DictModel> collect = esCodeDictModelList.stream().filter(e -> categoryCode.equals(e.getValue())).collect(Collectors.toList());
@@ -124,6 +118,7 @@ public class EnterpriseStandardUtil {
/**
* 获取序列号
*
* @param standardNo
* @return
*/
@@ -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<LawsEnterpriseStandardMapper, LawsEnterpriseStandard>
implements ILawsEnterpriseStandardService {
implements ILawsEnterpriseStandardService, ESSequenceNumberProvider {
@Override
public LawsEnterpriseStandard queryByStandardNumber(String standardNumber) {
@@ -32,6 +37,20 @@ public class LawsEnterpriseStandardServiceImpl extends ServiceImpl<LawsEnterpris
wrapper.last("limit 1");
return getOne(wrapper);
}
@Override
public List<String> getSequenceNumbers(String esCodeDictValue, String esNameCodeDictValue, String categoryCodeDictValue) {
// 已经存在的标准
LambdaQueryWrapper<LawsEnterpriseStandard> lambdaQueryWrapper = new LambdaQueryWrapper<>();
lambdaQueryWrapper.eq(LawsEnterpriseStandard::getStandardCode, esCodeDictValue);
lambdaQueryWrapper.eq(LawsEnterpriseStandard::getNameCode, esNameCodeDictValue);
lambdaQueryWrapper.eq(LawsEnterpriseStandard::getCategoryCode, categoryCodeDictValue);
lambdaQueryWrapper.eq(LawsEnterpriseStandard::getDelFlag, 0);
List<LawsEnterpriseStandard> esList = this.list(lambdaQueryWrapper);
return esList.stream().map(LawsEnterpriseStandard::getStandardNumber)
.map(EnterpriseStandardUtil::getSequenceNoFromStandardNo).collect(Collectors.toList());
}
}