Commit 3a3e8b2a authored by tianbo's avatar tianbo

登记类修改并发问题-维保备案提交按钮处理

parent 3ba29968
......@@ -448,6 +448,17 @@ public class JgMaintenanceContractServiceImpl extends BaseService<JgMaintenanceC
BeanUtil.copyProperties(contract, bean);
createTaskModel(bean, taskName, "1", nextUserIds);
} else {
String lockKey = CommonServiceImpl.buildJgExecuteLockKey(contract.getInstanceId());
RLock lock = redissonClient.getLock(lockKey);
try {
boolean isLocked = lock.tryLock(0, 180, TimeUnit.SECONDS);
// 解决并发问题:多个人同时操作一个流程(并发执行通过、驳回、撤回)
if(!isLocked){
throw new BadRequest("当前流程已经被执行!");
}
// 流程执行时,状态及权限校验
commonService.checkForExecuteFlow(String.valueOf(map.get("nextTaskId")), contract.getInstanceId());
// 有InstanceId,执行一步
ProcessTaskDTO processTaskDTO = this.submit("0", contract);
String nextTaskId = processTaskDTO.getNextTask().get(0).getId();
......@@ -468,6 +479,16 @@ public class JgMaintenanceContractServiceImpl extends BaseService<JgMaintenanceC
contract.setNextExecuteUserIds(nextUserIds);
commonService.deleteTaskModel(contract.getSequenceNbr() + "");
executeOneStep(contract, taskName, nextUserIds, "0");
// redis流程实时数据更新
commonService.saveExecuteFlowData2Redis(contract.getInstanceId(), this.buildInstanceRuntimeData(contract));
} catch (InterruptedException e) {
e.printStackTrace();
} finally {
if(lock.isHeldByCurrentThread()){
lock.unlock();
}
}
}
} else {
List<TaskModelDto> modelDtos = new ArrayList<>();
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment