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

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

parent 2905c117
...@@ -33,7 +33,7 @@ import java.util.*; ...@@ -33,7 +33,7 @@ import java.util.*;
* @date 2023-12-12 * @date 2023-12-12
*/ */
@RestController @RestController
@Api(tags = "Api") @Api(tags = "使用登记Api")
@RequestMapping(value = "/jg-use-registration") @RequestMapping(value = "/jg-use-registration")
public class JgUseRegistrationController extends BaseController { public class JgUseRegistrationController extends BaseController {
...@@ -250,17 +250,14 @@ public class JgUseRegistrationController extends BaseController { ...@@ -250,17 +250,14 @@ public class JgUseRegistrationController extends BaseController {
/** /**
* 使用登记流程错误数据处理 * 使用登记流程错误数据处理
* @param sequenceNbr sequenceNbr * @param applyNo applyNo
* @return s * @return s
*/ */
@TycloudOperation(ApiLevel = UserType.AGENCY) @TycloudOperation(ApiLevel = UserType.AGENCY)
@PostMapping(value = "/yunWei/handleErrorForm") @PostMapping(value = "/yunWei/handleErrorForm")
@ApiOperation(httpMethod = "POST", value = "使用登记流程错误数据处理", notes = "使用登记流程错误数据处理") @ApiOperation(httpMethod = "POST", value = "使用登记流程错误数据处理", notes = "使用登记流程错误数据处理")
public ResponseModel<Object> handleErrorForm(@RequestParam("sequenceNbr") Long sequenceNbr, public ResponseModel<Object> handleErrorForm(@RequestParam("applyNo") String applyNo) {
@RequestParam("nextTaskId") String nextTaskId, jgUseRegistrationServiceImpl.handleErrorForm(applyNo);
@RequestParam("instanceId") String instanceId return ResponseHelper.buildResponse("申请单【"+applyNo+"】处理成功");
) {
jgUseRegistrationServiceImpl.handleErrorForm(sequenceNbr, instanceId, nextTaskId);
return ResponseHelper.buildResponse("ok");
} }
} }
...@@ -206,4 +206,17 @@ public class JgVehicleInformationController extends BaseController { ...@@ -206,4 +206,17 @@ public class JgVehicleInformationController extends BaseController {
JgVehicleInformation result = jgVehicleInformationServiceImpl.cancelApplication(vehicleInformationDto.getSequenceNbr(), vehicleInformationDto.getCancelReason()); JgVehicleInformation result = jgVehicleInformationServiceImpl.cancelApplication(vehicleInformationDto.getSequenceNbr(), vehicleInformationDto.getCancelReason());
return ResponseHelper.buildResponse(result); 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+"】处理成功");
}
} }
...@@ -72,15 +72,11 @@ import org.typroject.tyboot.core.foundation.utils.ValidationUtil; ...@@ -72,15 +72,11 @@ import org.typroject.tyboot.core.foundation.utils.ValidationUtil;
import org.typroject.tyboot.core.rdbms.service.BaseService; import org.typroject.tyboot.core.rdbms.service.BaseService;
import org.typroject.tyboot.core.restful.exception.instance.BadRequest; import org.typroject.tyboot.core.restful.exception.instance.BadRequest;
import org.typroject.tyboot.core.restful.utils.ResponseModel; import org.typroject.tyboot.core.restful.utils.ResponseModel;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import java.io.ByteArrayOutputStream; import java.io.ByteArrayOutputStream;
import java.io.IOException; import java.io.IOException;
import java.net.URLEncoder; import java.net.URLEncoder;
import java.text.SimpleDateFormat;
import java.time.LocalDate; import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.YearMonth;
import java.time.ZoneId; import java.time.ZoneId;
import java.time.format.DateTimeFormatter; import java.time.format.DateTimeFormatter;
import java.util.*; import java.util.*;
...@@ -91,7 +87,6 @@ import java.util.stream.Collectors; ...@@ -91,7 +87,6 @@ import java.util.stream.Collectors;
import java.util.stream.IntStream; import java.util.stream.IntStream;
import java.util.zip.ZipEntry; import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream; import java.util.zip.ZipOutputStream;
import static java.util.stream.Collectors.toList; import static java.util.stream.Collectors.toList;
/** /**
...@@ -2068,14 +2063,17 @@ public class JgUseRegistrationServiceImpl extends BaseService<JgUseRegistrationD ...@@ -2068,14 +2063,17 @@ public class JgUseRegistrationServiceImpl extends BaseService<JgUseRegistrationD
/** /**
* 处理历史错误单子 * 处理历史错误单子
* @param sequenceNbr * @param applyNo 申请单号
* @param instanceId
* @param nextTaskId
*/ */
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
@GlobalTransactional(rollbackFor = Exception.class) @GlobalTransactional(rollbackFor = Exception.class)
public void handleErrorForm(Long sequenceNbr, String instanceId, String nextTaskId) { public void handleErrorForm(String applyNo) {
String lockKey = CommonServiceImpl.buildJgExecuteLockKey(instanceId); LambdaQueryWrapper<JgUseRegistration> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(JgUseRegistration::getApplyNo, applyNo);
JgUseRegistration jgUseRegistration = this.baseMapper.selectOne(queryWrapper);
if (jgUseRegistration !=null) {
String lockKey = CommonServiceImpl.buildJgExecuteLockKey(jgUseRegistration.getInstanceId());
RLock lock = redissonClient.getLock(lockKey); RLock lock = redissonClient.getLock(lockKey);
try { try {
boolean isLocked = lock.tryLock(0, 180, TimeUnit.SECONDS); boolean isLocked = lock.tryLock(0, 180, TimeUnit.SECONDS);
...@@ -2084,8 +2082,6 @@ public class JgUseRegistrationServiceImpl extends BaseService<JgUseRegistrationD ...@@ -2084,8 +2082,6 @@ public class JgUseRegistrationServiceImpl extends BaseService<JgUseRegistrationD
throw new BadRequest("当前流程已经被执行!请重新打开页面查看并执行!"); throw new BadRequest("当前流程已经被执行!请重新打开页面查看并执行!");
} }
// 流程执行时,状态及权限校验 // 流程执行时,状态及权限校验
commonService.checkForExecuteFlow(nextTaskId, instanceId);
JgUseRegistration jgUseRegistration = this.getBaseMapper().selectById(sequenceNbr);
ProcessTaskDTO complete = workFlowFeignService.handleErrorForm(jgUseRegistration.getInstanceId(), jgUseRegistration.getReceiveCompanyCode()).getResult(); ProcessTaskDTO complete = workFlowFeignService.handleErrorForm(jgUseRegistration.getInstanceId(), jgUseRegistration.getReceiveCompanyCode()).getResult();
ArrayList<ProcessTaskDTO> processTaskDTOS = new ArrayList<>(); ArrayList<ProcessTaskDTO> processTaskDTOS = new ArrayList<>();
processTaskDTOS.add(complete); processTaskDTOS.add(complete);
...@@ -2135,7 +2131,7 @@ public class JgUseRegistrationServiceImpl extends BaseService<JgUseRegistrationD ...@@ -2135,7 +2131,7 @@ public class JgUseRegistrationServiceImpl extends BaseService<JgUseRegistrationD
} }
} }
this.getBaseMapper().updateById(jgUseRegistration); this.getBaseMapper().updateById(jgUseRegistration);
this.clearDataForCheckEquipRepeatUsed(jgUseRegistration); commonServiceImpl.saveExecuteFlowData2Redis(jgUseRegistration.getInstanceId(), this.buildInstanceRuntimeData(jgUseRegistration));
} catch (InterruptedException e) { } catch (InterruptedException e) {
e.printStackTrace(); e.printStackTrace();
} finally { } finally {
...@@ -2144,4 +2140,5 @@ public class JgUseRegistrationServiceImpl extends BaseService<JgUseRegistrationD ...@@ -2144,4 +2140,5 @@ public class JgUseRegistrationServiceImpl extends BaseService<JgUseRegistrationD
} }
} }
} }
}
} }
\ No newline at end of file
...@@ -34,6 +34,7 @@ import com.yeejoin.amos.boot.module.jg.biz.feign.TzsServiceFeignClient; ...@@ -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.service.ICmWorkflowService;
import com.yeejoin.amos.boot.module.jg.biz.utils.FileExporter; 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.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.dto.ESEquipmentCategoryDto;
import com.yeejoin.amos.boot.module.ymt.api.entity.*; import com.yeejoin.amos.boot.module.ymt.api.entity.*;
import com.yeejoin.amos.boot.module.ymt.api.enums.ApplicationFormTypeEnum; import com.yeejoin.amos.boot.module.ymt.api.enums.ApplicationFormTypeEnum;
...@@ -141,6 +142,8 @@ public class JgVehicleInformationServiceImpl extends BaseService<JgVehicleInform ...@@ -141,6 +142,8 @@ public class JgVehicleInformationServiceImpl extends BaseService<JgVehicleInform
private JgResumeInfoServiceImpl jgResumeInfoService; private JgResumeInfoServiceImpl jgResumeInfoService;
@Autowired @Autowired
private TzBaseEnterpriseInfoMapper tzBaseEnterpriseInfoMapper; private TzBaseEnterpriseInfoMapper tzBaseEnterpriseInfoMapper;
@Autowired
private WorkFlowFeignService workFlowFeignService;
private Map<String, Object> fillingMediumMap; private Map<String, Object> fillingMediumMap;
...@@ -524,7 +527,7 @@ public class JgVehicleInformationServiceImpl extends BaseService<JgVehicleInform ...@@ -524,7 +527,7 @@ public class JgVehicleInformationServiceImpl extends BaseService<JgVehicleInform
if (useCodeResult != null) { if (useCodeResult != null) {
String result = dto.getEstateUnitCreditCode() + "_" + dto.getEstateUnitName() + ("个人主体".equals(useCodeResult.getUnitType()) 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.setEstateUnitName(result);
} }
vo.setIdCardFront(ObjectUtils.isEmpty(dto.getIdCardFront()) ? null : JSON.parseArray(dto.getIdCardFront())); vo.setIdCardFront(ObjectUtils.isEmpty(dto.getIdCardFront()) ? null : JSON.parseArray(dto.getIdCardFront()));
...@@ -839,14 +842,13 @@ public class JgVehicleInformationServiceImpl extends BaseService<JgVehicleInform ...@@ -839,14 +842,13 @@ public class JgVehicleInformationServiceImpl extends BaseService<JgVehicleInform
/** /**
* 批量删除 * 批量删除
*
*/ */
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void deleteBatch(List<Long> ids) { public void deleteBatch(List<Long> ids) {
ids.forEach(id -> { ids.forEach(id -> {
JgVehicleInformation vehicleInformation = this.baseMapper.selectById(id); JgVehicleInformation vehicleInformation = this.baseMapper.selectById(id);
// 删除代办 + 中止流程 // 删除代办 + 中止流程
commonService.deleteTaskModel(String.valueOf(id),vehicleInformation.getInstanceId()); commonService.deleteTaskModel(String.valueOf(id), vehicleInformation.getInstanceId());
// 删除单子 // 删除单子
this.deleteBySeq(id); this.deleteBySeq(id);
// 删除单子对应设备 // 删除单子对应设备
...@@ -860,7 +862,7 @@ public class JgVehicleInformationServiceImpl extends BaseService<JgVehicleInform ...@@ -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) { public Page<Map<String, Object>> getPageList(JgVehicleInformationDto dto, String sort, Page<Map<String, Object>> page, List<String> roleIds) {
SortVo sortMap = commonService.sortFieldConversion(sort); 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) { private void updateEquipMessage(JgVehicleInformation jgVehicleInformation, JSONObject map, IdxBizJgRegisterInfo registerInfo, IdxBizJgOtherInfo otherInfo) {
...@@ -1360,4 +1362,78 @@ public class JgVehicleInformationServiceImpl extends BaseService<JgVehicleInform ...@@ -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