package cn.huge.module.cases.service; import cn.huge.base.common.exception.ServiceException; import cn.huge.base.common.utils.DateUtils; import cn.huge.base.common.utils.IdUtils; import cn.huge.module.cases.consts.CaseTaskConsts; import cn.huge.module.cases.domain.po.CaseInfo; import cn.huge.module.cases.domain.po.CaseTask; import cn.huge.module.client.api.impl.CustClientImpl; import cn.huge.module.client.api.impl.UtilsClientImpl; import cn.huge.module.cases.dao.mapper.CaseEvaluateMapper; import cn.huge.module.cases.domain.po.CaseEvaluate; import cn.huge.module.constant.BaseConsts; import cn.huge.module.cust.dto.PaUserDTO; import cn.huge.module.flow.consts.FlowNodeEnum; import cn.huge.module.flow.consts.FlowableConsts; import cn.huge.module.flow.domain.po.FlowNode; import cn.huge.module.flow.service.FlowInfoService; import cn.huge.module.mediate.constant.CaseInfoProcessBaseConstsEnum; import cn.huge.module.mediate.constant.CaseProcessBaseConstsEnum; import cn.huge.module.mediate.constant.CaseStatusBaseConstsEnum; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Page; import org.springframework.data.domain.PageImpl; import org.springframework.data.domain.PageRequest; import org.springframework.transaction.annotation.Transactional; import javax.annotation.PostConstruct; import java.util.Date; import java.util.List; import java.util.Map; /** * @title: 当事人纠纷评价表业务逻辑处理 * @Description 当事人纠纷评价表业务逻辑处理 * @company hugeinfo * @author wangwh * @Time 2024-09-04 20:21:05 * @version 1.0.0 */ @Slf4j @Service @Transactional(rollbackFor = Exception.class) public class CaseEvaluateService extends ServiceImpl{ @Autowired private CaseEvaluateMapper mapper; @Autowired private UtilsClientImpl utilsClient; @Autowired private CustClientImpl custClient; @Autowired private CaseTaskService caseTaskService; @Autowired private FlowInfoService flowInfoService; @Autowired private CaseInfoService caseInfoService; /** * 更新对象 * @param entity 对象 */ public void updateCaseEvaluate(CaseEvaluate entity){ try{ mapper.updateCaseEvaluate(entity); }catch (Exception e){ log.error("[CaseEvaluateService.updateCaseEvaluate]调用失败,异常信息:"+e, e); throw new ServiceException("CaseEvaluateService.updateCaseEvaluate", e); } } /** * 条件更新对象 * @param entity 对象 * @param terms 条件 */ public void updateCaseEvaluateTerms(CaseEvaluate entity, Map terms){ try{ mapper.updateCaseEvaluateTerms(entity, terms); }catch (Exception e){ log.error("[CaseEvaluateService.updateCaseEvaluateTerms]调用失败,异常信息:"+e, e); throw new ServiceException("CaseEvaluateService.updateCaseEvaluateTerms", e); } } /** * 根据编号物理删除 * @param id 查询条件集合 */ public void deleteCaseEvaluate(String id){ try{ mapper.deleteCaseEvaluate(id); }catch (Exception e){ log.error("[CaseEvaluateService.deleteCaseEvaluate]调用失败,异常信息:"+e, e); throw new ServiceException("CaseEvaluateService.deleteCaseEvaluate", e); } } /** * 按条件查询 * @param terms 条件 * @return List */ public List listTerms(Map terms){ return mapper.listTerms(terms); } /** * 按条件统计 * @param terms 条件 * @return long */ public long countTerms(Map terms){ return mapper.countTerms(terms); } /** * 按条件分页查询 * @param page 分页对象 * @param terms 条件 * @return Page */ public Page pageQuery(PageRequest page, Map terms){ long total = mapper.countTerms(terms); List content = mapper.pageTerms(page, terms); return new PageImpl(content, page, total); } /** * 新增或更新对象 * @param caseEvaluate 实体对象 */ public void saveCaseEvaluate(CaseEvaluate caseEvaluate){ try{ Date nowDate = DateUtils.getNowDate(); // 判断是否新增 if (IdUtils.checkNewId(caseEvaluate.getId())){ caseEvaluate.setId(utilsClient.getNewTimeId()); caseEvaluate.setCreateTime(nowDate); } caseEvaluate.setUpdateTime(nowDate); this.saveOrUpdate(caseEvaluate); }catch (Exception e){ log.error("[CaseEvaluateService.saveCaseEvaluate]调用失败,异常信息:"+e, e); throw new ServiceException("CaseEvaluateService.saveCaseEvaluate", e); } } /** * 新增或更新对象 * @param caseEvaluate 实体对象 */ public void saveCaseEvaluateWechat(CaseEvaluate caseEvaluate,String userId){ try{ PaUserDTO loginUser = custClient.paclientGetUser(userId); Date nowDate = DateUtils.getNowDate(); // 判断是否新增 if (IdUtils.checkNewId(caseEvaluate.getId())){ caseEvaluate.setId(utilsClient.getNewTimeId()); caseEvaluate.setCreateTime(nowDate); caseEvaluate.setDeleteStatus(BaseConsts.DELETE_STATUS_0); } caseEvaluate.setEvaluateUserId(loginUser.getId()); caseEvaluate.setEvaluateUserName(loginUser.getTrueName()); caseEvaluate.setCustId(loginUser.getCustId()); caseEvaluate.setUpdateTime(nowDate); this.saveOrUpdate(caseEvaluate); // 查询当事人评价任务 QueryWrapper caseTaskQueryWrapper = new QueryWrapper<>(); caseTaskQueryWrapper.eq("case_id", caseEvaluate.getCaseId()).eq("node_id", FlowNodeEnum.FLOW_NODE_DSRPJ.getIndex()); CaseTask dsrpjCaseTask = caseTaskService.getOne(caseTaskQueryWrapper); // 完成当前当事人评价任务 dsrpjCaseTask.setStatus(CaseTaskConsts.TASK_STATUS_2); dsrpjCaseTask.setHandleUserId(loginUser.getId()); dsrpjCaseTask.setHandleUserName(loginUser.getTrueName()); dsrpjCaseTask.setHandleUserName(loginUser.getTrueName()); dsrpjCaseTask.setHandleResult(CaseTaskConsts.HANDLE_RESULT_1); dsrpjCaseTask.setHandleTime(nowDate); dsrpjCaseTask.setUpdateTime(nowDate); caseTaskService.updateCaseTask(dsrpjCaseTask); // 完成当前当事人评价工作流任务 FlowNode dsrpjFlowNode = flowInfoService.completeTask(dsrpjCaseTask.getFlowableId(), dsrpjCaseTask.getProcessTaskId(), FlowableConsts.OPERATION_forward, userId); // 默认完成结案归档任务 CaseTask jagdCaseTask = new CaseTask(); jagdCaseTask.setId(utilsClient.getNewTimeId()); jagdCaseTask.setCaseId(caseEvaluate.getCaseId()); jagdCaseTask.setFlowableId(dsrpjFlowNode.getFlowableId()); jagdCaseTask.setProcessInstanceId(dsrpjFlowNode.getProcessInstanceId()); jagdCaseTask.setProcessTaskId(dsrpjFlowNode.getProcessTaskId()); jagdCaseTask.setTaskType(CaseTaskConsts.TASK_TYPE_1); jagdCaseTask.setNodeType(dsrpjFlowNode.getNodeType()); jagdCaseTask.setNodeId(dsrpjFlowNode.getNodeId()); jagdCaseTask.setNodeName(dsrpjFlowNode.getNodeName()); jagdCaseTask.setFlowId(dsrpjFlowNode.getFlowId()); jagdCaseTask.setNodeShowName(dsrpjFlowNode.getNodeShowName()); jagdCaseTask.setCaseTaskType(CaseTaskConsts.CASE_TASK_TYPE_1); // 通过调度的,任务候选执行者类型是上一步骤选择 jagdCaseTask.setCandeType(CaseTaskConsts.CANDE_TYPE_1); jagdCaseTask.setCandeUnitId(dsrpjCaseTask.getCandeUnitId()); jagdCaseTask.setCandeUnitName(dsrpjCaseTask.getCandeUnitName()); // 系不需要签收 jagdCaseTask.setSignStatus(CaseTaskConsts.SIGN_STATUS_0); jagdCaseTask.setStatus(CaseTaskConsts.TASK_STATUS_2); // 任务处理时限 if (dsrpjFlowNode.getExpire() != 0) { jagdCaseTask.setExpireTime(DateUtils.addDay(nowDate, dsrpjFlowNode.getExpire())); } jagdCaseTask.setHandleUnitName("系统自动"); jagdCaseTask.setHandleResult(CaseTaskConsts.HANDLE_RESULT_1); jagdCaseTask.setHandleTime(nowDate); jagdCaseTask.setDeleteStatus(BaseConsts.DELETE_STATUS_0); jagdCaseTask.setCustId(dsrpjCaseTask.getCustId()); jagdCaseTask.setCreateTime(nowDate); jagdCaseTask.setUpdateTime(nowDate); caseTaskService.save(jagdCaseTask); // 结束工作流流程 flowInfoService.completeTask(jagdCaseTask.getFlowableId(), jagdCaseTask.getProcessTaskId(), FlowableConsts.OPERATION_jb_zszz, "系统自动"); // 更新纠纷信息 CaseInfo caseInfoPO = new CaseInfo(); caseInfoPO.setId(dsrpjCaseTask.getCaseId()); caseInfoPO.setStatus(CaseStatusBaseConstsEnum.CASE_STATUS_7.getIndex()); caseInfoPO.setStatusName(CaseStatusBaseConstsEnum.CASE_STATUS_7.getDes()); caseInfoPO.setProcess(CaseProcessBaseConstsEnum.getByStatus(caseInfoPO.getStatus()).getIndex()); caseInfoPO.setProcessName(CaseProcessBaseConstsEnum.getByStatus(caseInfoPO.getStatus()).getDes()); caseInfoPO.setInfoProcess(CaseInfoProcessBaseConstsEnum.getByProcess(caseInfoPO.getProcess()).getIndex()); caseInfoPO.setInfoProcessName(CaseInfoProcessBaseConstsEnum.getByProcess(caseInfoPO.getProcess()).getDes()); caseInfoPO.setUpdateTime(nowDate); caseInfoService.updateCaseInfo(caseInfoPO); }catch (Exception e){ log.error("[CaseEvaluateService.saveCaseEvaluateWechat]调用失败,异常信息:"+e, e); throw new ServiceException("CaseEvaluateService.saveCaseEvaluateWechat", e); } } }