package com.ycl.service.caseHandler.impl; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ycl.common.constant.BaseCaseStatus; import com.ycl.common.constant.CheckResult; import com.ycl.common.constant.StepName; import com.ycl.dto.caseHandler.CheckParam; import com.ycl.entity.caseHandler.BaseCase; import com.ycl.entity.caseHandler.DisposeRecord; import com.ycl.entity.caseHandler.WorkflowConfigStep; import com.ycl.exception.ApiException; import com.ycl.mapper.caseHandler.BaseCaseMapper; import com.ycl.mapper.caseHandler.DisposeRecordMapper; import com.ycl.mapper.caseHandler.WorkflowConfigStepMapper; import com.ycl.service.caseHandler.ICheckHandleService; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; import java.time.LocalDateTime; import java.util.List; /** *

* 审核处理 服务实现类 *

* * @author mg * @since 2022-10-02 */ @Service @Transactional public class CheckHandleServiceImpl extends ServiceImpl implements ICheckHandleService { @Resource BaseCaseMapper baseCaseMapper; @Resource DisposeRecordMapper disposeRecordMapper; @Resource WorkflowConfigStepMapper workflowConfigStepMapper; @Override public Boolean check(CheckParam checkParam) { QueryWrapper stepQurey = new QueryWrapper<>(); stepQurey.eq("name", StepName.CHECK.getName()); WorkflowConfigStep workflowConfigStep = workflowConfigStepMapper.selectOne(stepQurey); //修改案件状态为审核 BaseCase baseCase = new BaseCase(); baseCase.setId(checkParam.getBaseCaseId()); baseCase.setAuditOpinion(checkParam.getCheckOpinion()); //修改核查记录 DisposeRecord disposeRecord = new DisposeRecord(); //驳回处理 if (CheckResult.REJECT.getName().equals(checkParam.getResult())) { QueryWrapper lastNextqurey = new QueryWrapper<>(); lastNextqurey.eq("workflow_config_id", workflowConfigStep.getWorkflowConfigId()); lastNextqurey.eq("seq", workflowConfigStep.getSeq()); WorkflowConfigStep lastStep = workflowConfigStepMapper.selectOne(lastNextqurey); //删除当前数据 UpdateWrapper deleteWrapper = new UpdateWrapper<>(); deleteWrapper.eq("base_case_id", checkParam.getBaseCaseId()).eq("workflow_config_step_id", lastStep.getId()); disposeRecordMapper.delete(deleteWrapper); //修改状态为上一步状态 QueryWrapper lastLastNextqurey = new QueryWrapper<>(); lastLastNextqurey.eq("workflow_config_id", workflowConfigStep.getWorkflowConfigId()); lastLastNextqurey.eq("seq", workflowConfigStep.getSeq() - 1); WorkflowConfigStep lastLastStep = workflowConfigStepMapper.selectOne(lastLastNextqurey); UpdateWrapper updateWrapper = new UpdateWrapper<>(); updateWrapper.eq("base_case_id", checkParam.getBaseCaseId()).eq("workflow_config_step_id", lastLastStep.getId()); //处理未开始 disposeRecord.setState(0); disposeRecordMapper.update(disposeRecord, updateWrapper); //调度 baseCase.setState(BaseCaseStatus.DISPATCH); baseCaseMapper.updateById(baseCase); return true; } //核查 baseCase.setState(BaseCaseStatus.CHECK); baseCaseMapper.updateById(baseCase); if (workflowConfigStep == null) { throw new ApiException("未查询到该流程环节"); } UpdateWrapper updateWrapper = new UpdateWrapper<>(); updateWrapper.eq("base_case_id", baseCase.getId()).eq("workflow_config_step_id", workflowConfigStep.getId()); disposeRecord.setHandlerId(checkParam.getCurrentUser()); //核查已结束 disposeRecord.setState(1); disposeRecord.setResult(checkParam.getResult()); disposeRecord.setEndTime(LocalDateTime.now()); disposeRecordMapper.update(disposeRecord, updateWrapper); QueryWrapper stepNextqurey = new QueryWrapper<>(); stepNextqurey.eq("workflow_config_id", workflowConfigStep.getWorkflowConfigId()); stepNextqurey.eq("seq", workflowConfigStep.getSeq() + 1); WorkflowConfigStep stepNext = workflowConfigStepMapper.selectOne(stepNextqurey); //添加下一步记录 DisposeRecord stepNextRecord = new DisposeRecord(); stepNextRecord.setBaseCaseId(baseCase.getId()); stepNextRecord.setWorkflowConfigStepId(stepNext.getId()); stepNextRecord.setStepName(stepNext.getName()); stepNextRecord.setHandlerRoleId(stepNext.getRoleId()); //上传处置未结束 stepNextRecord.setState(0); stepNextRecord.setStartTime(LocalDateTime.now()); stepNextRecord.setCreateUser(checkParam.getCurrentUser()); stepNextRecord.setCreateTime(LocalDateTime.now()); disposeRecordMapper.insert(stepNextRecord); return true; } @Override public Boolean checkBatch(List ids, Long userId) { ids.forEach(id -> { CheckParam checkParam = new CheckParam(); checkParam.setCurrentUser(userId); checkParam.setBaseCaseId(id); checkParam.setResult(CheckResult.PASS.getName()); checkParam.setCheckOpinion("同意"); this.check(checkParam); }); return null; } }