Commit 9227d97e authored by 刘林's avatar 刘林

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

parent 2905c117
......@@ -33,7 +33,7 @@ import java.util.*;
* @date 2023-12-12
*/
@RestController
@Api(tags = "Api")
@Api(tags = "使用登记Api")
@RequestMapping(value = "/jg-use-registration")
public class JgUseRegistrationController extends BaseController {
......@@ -250,17 +250,14 @@ public class JgUseRegistrationController extends BaseController {
/**
* 使用登记流程错误数据处理
* @param sequenceNbr sequenceNbr
* @param applyNo applyNo
* @return s
*/
@TycloudOperation(ApiLevel = UserType.AGENCY)
@PostMapping(value = "/yunWei/handleErrorForm")
@ApiOperation(httpMethod = "POST", value = "使用登记流程错误数据处理", notes = "使用登记流程错误数据处理")
public ResponseModel<Object> handleErrorForm(@RequestParam("sequenceNbr") Long sequenceNbr,
@RequestParam("nextTaskId") String nextTaskId,
@RequestParam("instanceId") String instanceId
) {
jgUseRegistrationServiceImpl.handleErrorForm(sequenceNbr, instanceId, nextTaskId);
return ResponseHelper.buildResponse("ok");
public ResponseModel<Object> handleErrorForm(@RequestParam("applyNo") String applyNo) {
jgUseRegistrationServiceImpl.handleErrorForm(applyNo);
return ResponseHelper.buildResponse("申请单【"+applyNo+"】处理成功");
}
}
......@@ -206,4 +206,17 @@ public class JgVehicleInformationController extends BaseController {
JgVehicleInformation result = jgVehicleInformationServiceImpl.cancelApplication(vehicleInformationDto.getSequenceNbr(), vehicleInformationDto.getCancelReason());
return ResponseHelper.buildResponse(result);
}
/**
* 车用气瓶流程错误数据处理
* @param applyNo applyNo
* @return s
*/
@TycloudOperation(ApiLevel = UserType.AGENCY)
@PostMapping(value = "/yunWei/handleErrorVehicleForm")
@ApiOperation(httpMethod = "POST", value = "车用气瓶流程错误数据处理", notes = "车用气瓶流程错误数据处理")
public ResponseModel<Object> handleErrorVehicleForm(@RequestParam("applyNo") String applyNo) {
jgVehicleInformationServiceImpl.handleErrorVehicleForm(applyNo);
return ResponseHelper.buildResponse("申请单【"+applyNo+"】处理成功");
}
}
......@@ -34,6 +34,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;
......@@ -141,6 +142,8 @@ public class JgVehicleInformationServiceImpl extends BaseService<JgVehicleInform
private JgResumeInfoServiceImpl jgResumeInfoService;
@Autowired
private TzBaseEnterpriseInfoMapper tzBaseEnterpriseInfoMapper;
@Autowired
private WorkFlowFeignService workFlowFeignService;
private Map<String, Object> fillingMediumMap;
......@@ -524,7 +527,7 @@ public class JgVehicleInformationServiceImpl extends BaseService<JgVehicleInform
if (useCodeResult != null) {
String result = dto.getEstateUnitCreditCode() + "_" + dto.getEstateUnitName() + ("个人主体".equals(useCodeResult.getUnitType())
? "_" + dto.getEstateUnitCreditCode().substring(dto.getEstateUnitCreditCode().length() - 4): "");
? "_" + dto.getEstateUnitCreditCode().substring(dto.getEstateUnitCreditCode().length() - 4) : "");
vo.setEstateUnitName(result);
}
vo.setIdCardFront(ObjectUtils.isEmpty(dto.getIdCardFront()) ? null : JSON.parseArray(dto.getIdCardFront()));
......@@ -839,14 +842,13 @@ public class JgVehicleInformationServiceImpl extends BaseService<JgVehicleInform
/**
* 批量删除
*
*/
@Transactional(rollbackFor = Exception.class)
public void deleteBatch(List<Long> ids) {
ids.forEach(id -> {
JgVehicleInformation vehicleInformation = this.baseMapper.selectById(id);
// 删除代办 + 中止流程
commonService.deleteTaskModel(String.valueOf(id),vehicleInformation.getInstanceId());
commonService.deleteTaskModel(String.valueOf(id), vehicleInformation.getInstanceId());
// 删除单子
this.deleteBySeq(id);
// 删除单子对应设备
......@@ -860,7 +862,7 @@ public class JgVehicleInformationServiceImpl extends BaseService<JgVehicleInform
public Page<Map<String, Object>> getPageList(JgVehicleInformationDto dto, String sort, Page<Map<String, Object>> page, List<String> roleIds) {
SortVo sortMap = commonService.sortFieldConversion(sort);
return this.baseMapper.getListPage(page,sortMap, dto, roleIds);
return this.baseMapper.getListPage(page, sortMap, dto, roleIds);
}
private void updateEquipMessage(JgVehicleInformation jgVehicleInformation, JSONObject map, IdxBizJgRegisterInfo registerInfo, IdxBizJgOtherInfo otherInfo) {
......@@ -1360,4 +1362,78 @@ public class JgVehicleInformationServiceImpl extends BaseService<JgVehicleInform
}
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