Commit 726202b4 authored by 刘林's avatar 刘林

fix(jg):车用气瓶流程错误单子数据处理

parent 033f026c
......@@ -74,6 +74,7 @@ import javax.servlet.http.HttpServletResponse;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.net.URLEncoder;
import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.time.ZoneId;
import java.time.format.DateTimeFormatter;
......
......@@ -33,6 +33,7 @@ import com.yeejoin.amos.boot.module.jg.biz.feign.TzsServiceFeignClient;
import com.yeejoin.amos.boot.module.jg.biz.service.ICmWorkflowService;
import com.yeejoin.amos.boot.module.jg.biz.utils.FileExporter;
import com.yeejoin.amos.boot.module.jg.biz.utils.ImageUtils;
import com.yeejoin.amos.boot.module.jg.flc.api.fegin.WorkFlowFeignService;
import com.yeejoin.amos.boot.module.ymt.api.dto.ESEquipmentCategoryDto;
import com.yeejoin.amos.boot.module.ymt.api.entity.*;
import com.yeejoin.amos.boot.module.ymt.api.enums.ApplicationFormTypeEnum;
......@@ -149,6 +150,8 @@ public class JgVehicleInformationServiceImpl extends BaseService<JgVehicleInform
private JgCertificateChangeRecordEqServiceImpl certificateChangeRecordEqService;
@Autowired
private JgUseRegistrationManageServiceImpl jgUseRegistrationManageService;
@Autowired
private WorkFlowFeignService workFlowFeignService;
private Map<String, Object> fillingMediumMap;
......@@ -1470,4 +1473,78 @@ public class JgVehicleInformationServiceImpl extends BaseService<JgVehicleInform
"单号【" + obj.getApplyNo() + "】,申请日期" + simpleDateFormat.format(obj.getRecDate());
}
public void handleErrorVehicleForm(String applyNo) {
LambdaQueryWrapper<JgVehicleInformation> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(JgVehicleInformation::getApplyNo, applyNo);
JgVehicleInformation jgVehicleInformation = this.baseMapper.selectOne(queryWrapper);
if (jgVehicleInformation != null) {
String lockKey = CommonServiceImpl.buildJgExecuteLockKey(jgVehicleInformation.getInstanceId());
RLock lock = redissonClient.getLock(lockKey);
try {
boolean isLocked = lock.tryLock(0, 180, TimeUnit.SECONDS);
// 解决并发问题:多个人同时操作一个流程(并发执行通过、驳回、撤回)
if (!isLocked) {
throw new BadRequest("当前流程已经被执行!请重新打开页面查看并执行!");
}
// 流程执行时,状态及权限校验
ProcessTaskDTO complete = workFlowFeignService.handleErrorForm(jgVehicleInformation.getInstanceId(), jgVehicleInformation.getReceiveCompanyCode()).getResult();
ArrayList<ProcessTaskDTO> processTaskDTOS = new ArrayList<>();
processTaskDTOS.add(complete);
List<WorkflowResultDto> resultDto = commonService.buildWorkFlowInfo(processTaskDTOS);
if (!ObjectUtils.isEmpty(resultDto) && !ObjectUtils.isEmpty(resultDto.get(0))) {
WorkflowResultDto workflowResultDto = resultDto.get(0);
String role = workflowResultDto.getNextExecutorRoleIds();
String taskCode = FlowStatusEnum.TO_BE_FINISHED.getName();
if (!ObjectUtils.isEmpty(workflowResultDto.getNextTaskCode())) {
taskCode = workflowResultDto.getNextTaskCode();
}
jgVehicleInformation.setNextTaskId(workflowResultDto.getNextTaskId());
jgVehicleInformation.setNextExecuteUserIds(workflowResultDto.getNextExecutorUserIds());
jgVehicleInformation.setNextExecuteIds(role);
jgVehicleInformation.setInstanceStatus(
Optional.ofNullable(jgVehicleInformation.getInstanceStatus())
.map(status -> String.join(",", status, role))
.orElse(role)
);
jgVehicleInformation.setStatus(Objects.requireNonNull(WorkFlowStatusEnum.getMessage(taskCode)).getPass());
jgVehicleInformation.setPromoter(workflowResultDto.getStartUserId());
// 更新代办状态
HashMap<String, Object> params = new HashMap<>();
params.put("relationId", jgVehicleInformation.getInstanceId());
params.put("flowStatus", commonService.getDictionaryCodeByName(jgVehicleInformation.getStatus()));
params.put("flowStatusLabel", jgVehicleInformation.getStatus());
params.put("taskStatus", commonService.getDictionaryCodeByName(jgVehicleInformation.getStatus()));
params.put("taskStatusLabel", jgVehicleInformation.getStatus());
TaskV2Model taskV2Model = commonService.updateTaskModel(params);
// 创建新的代办
if (!ObjectUtils.isEmpty(taskV2Model)) {
TaskModelDto taskModelDto = new TaskModelDto();
BeanUtils.copyProperties(taskV2Model, taskModelDto);
TaskMessageDto taskMessageDto = new TaskMessageDto();
BeanUtil.copyProperties(jgVehicleInformation, taskMessageDto);
taskModelDto.setModel(taskMessageDto);
taskModelDto.setTaskName(workflowResultDto.getNextTaskName());
taskModelDto.setStartUserId(workflowResultDto.getExecutorId());
taskModelDto.setExecuteUserIds(workflowResultDto.getNextExecutorUserIds());
taskModelDto.setTaskStatusLabel(FlowStatusEnum.TO_BE_PROCESSED.getName());
taskModelDto.setNextExecuteUser(workflowResultDto.getNextExecutorRoleIds());
taskModelDto.setFlowCode(workflowResultDto.getNextTaskId());
commonService.buildTaskModel(Collections.singletonList(taskModelDto));
} else {
workflowResultDto.setInstanceId(jgVehicleInformation.getInstanceId());
buildTask(jgVehicleInformation, workflowResultDto);
}
}
this.getBaseMapper().updateById(jgVehicleInformation);
commonService.saveExecuteFlowData2Redis(jgVehicleInformation.getInstanceId(), this.buildInstanceRuntimeData(jgVehicleInformation));
} catch (InterruptedException e) {
e.printStackTrace();
} finally {
if (lock.isHeldByCurrentThread()) {
lock.unlock();
}
}
}
}
}
\ No newline at end of file
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