Przeglądaj źródła

双开暂存提交再暂存出现异常流程数据问题接口逻辑处理

WuYi 12 godzin temu
rodzic
commit
b185118f47

+ 9 - 0
ibps-provider-root/modules/provider-bpmn/src/main/java/com/lc/ibps/bpmn/provider/BpmInstProvider.java

@@ -297,6 +297,7 @@ public class BpmInstProvider extends GenericProvider implements IBpmInstService,
 			}
 			if(BeanUtils.isNotEmpty(instId) && BeanUtils.isNotEmpty(id) ){ //流程实例id和boid均不为空则进行判断
 				BpmInstPo byIdAndBiz = bpmInstRepository.getByIdAndBiz(instId, id);
+				BpmInstHisPo hisPo = bpmInstHisRepository.get(instId);
 				if(BeanUtils.isNotEmpty(byIdAndBiz) && instId.equals(byIdAndBiz.getId()) && id.equals(byIdAndBiz.getBizKey())){
 					//相同即表示同一条数据
 					logger.warn("当前选择数据已经提交,请确认后操作");
@@ -304,6 +305,14 @@ public class BpmInstProvider extends GenericProvider implements IBpmInstService,
 					result.setState( StateEnum.WARN.getCode());
 					return result;
 				}
+				if(BeanUtils.isNotEmpty(hisPo)){
+					//相同的his表和inst表中不能同时存在,否则流程会爆粗
+					logger.warn(instId);
+					logger.warn("hisPo ={}",hisPo);
+					result.setMessage(StateEnum.ERROR_BPMN_NO_INSTANCE.getText());
+					result.setState( StateEnum.ERROR_BPMN_NO_INSTANCE.getCode());
+					return result;
+				}
 			}
 			IBpmProcInst procInst = bpmProcInstService.saveDraft(cmd);
 			result.setMessage(I18nUtil.getMessage("com.lc.ibps.bpmn.provider.BpmInstProvider.saveDraft"));