fix: 派号标准号重复问题
This commit is contained in:
+31
-4
@@ -30,6 +30,7 @@ import com.jero.modules.laws.common.constant.MessageTemplateCodeCommon;
|
||||
import com.jero.modules.laws.enterprise.entity.ESPProjectStatus;
|
||||
import com.jero.modules.laws.enterprise.entity.EnterpriseStandardPlan;
|
||||
import com.jero.modules.laws.enterprise.service.EnterpriseStandardPlanService;
|
||||
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.sys.utils.UserUtils;
|
||||
@@ -37,6 +38,7 @@ import lombok.extern.slf4j.Slf4j;
|
||||
import org.activiti.engine.RuntimeService;
|
||||
import org.activiti.engine.TaskService;
|
||||
import org.activiti.engine.runtime.ProcessInstance;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
@@ -91,6 +93,9 @@ public class EsRevisionServiceImpl extends ServiceImpl<EsRevisionMapper, Process
|
||||
@Resource
|
||||
private EnterpriseStandardPlanService planService;
|
||||
|
||||
@Resource
|
||||
private EnterpriseStandardUtil esUtil;
|
||||
|
||||
@Override
|
||||
public void startProcess(ProcessInfoVO<ProcessRevisionVO> processInfoVO) {
|
||||
// 流程Key
|
||||
@@ -227,6 +232,13 @@ public class EsRevisionServiceImpl extends ServiceImpl<EsRevisionMapper, Process
|
||||
List<EsRevisionAdvice> adviceList = businessInfoDTO.getAdviceList();
|
||||
// 根据流程实例Id获取流程定义ID
|
||||
ProcessInstance processInstance = runtimeService.createProcessInstanceQuery().processInstanceId(processInstanceId).singleResult();
|
||||
// 获取数据库中的流程信息
|
||||
LambdaQueryWrapper<ProcessEsRevision> queryWrapper = new LambdaQueryWrapper<>();
|
||||
queryWrapper.eq(ProcessEsRevision::getProcessInstanceId, processInstanceId);
|
||||
ProcessEsRevision dataFromDb = getOne(queryWrapper);
|
||||
if (dataFromDb != null) {
|
||||
data.setId(dataFromDb.getId());
|
||||
}
|
||||
// 获取流程实例ID
|
||||
String processDefinitionId = processInstance.getProcessDefinitionId();
|
||||
Map<String, Object> userMap = new HashMap<>();
|
||||
@@ -271,10 +283,25 @@ public class EsRevisionServiceImpl extends ServiceImpl<EsRevisionMapper, Process
|
||||
case SET_STANDARD_NUMBER:
|
||||
// 判断标准编号是否重复
|
||||
Map<String, Object> variables = JSON.parseObject(data.getBusinessJson(), Map.class);
|
||||
String standardNumber = (String) variables.get(FieldCommon.STANDARD_NUMBER);
|
||||
LambdaQueryWrapper<LawsEnterpriseStandard> queryWrapper = new LambdaQueryWrapper<>();
|
||||
queryWrapper.eq(LawsEnterpriseStandard::getStandardNumber, standardNumber);
|
||||
LawsEnterpriseStandard es = esService.getOne(queryWrapper);
|
||||
// 根据派号字段重新生成标准编号
|
||||
String standardNumberTmp = (String) variables.get(FieldCommon.STANDARD_NUMBER_TEMP);
|
||||
String standardNumber = "";
|
||||
if (StringUtils.isNotBlank(standardNumberTmp)) {
|
||||
// 组合企标编号
|
||||
standardNumber = esUtil.combineStandardNumber(variables);
|
||||
} else {
|
||||
// 生成企标编号
|
||||
standardNumber = esUtil.generateStandardNumber(variables);
|
||||
standardNumberTmp = EnterpriseStandardUtil.getSequenceNoFromStandardNo(standardNumber);
|
||||
}
|
||||
variables.put(FieldCommon.STANDARD_NUMBER, standardNumber);
|
||||
variables.put(FieldCommon.STANDARD_NUMBER_TEMP, standardNumberTmp);
|
||||
// 重新序列化为json
|
||||
data.setBusinessJson(JSON.toJSONString(variables));
|
||||
// 校验重复
|
||||
LambdaQueryWrapper<LawsEnterpriseStandard> esQueryWrapper = new LambdaQueryWrapper<>();
|
||||
esQueryWrapper.eq(LawsEnterpriseStandard::getStandardNumber, standardNumber);
|
||||
LawsEnterpriseStandard es = esService.getOne(esQueryWrapper);
|
||||
if (Objects.nonNull(es)) {
|
||||
throw new JeroBootException(ResultCommon.STANDARD_NUMBER_ALREADY_EXISTS);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user