forked from gzzfw/backEnd/gz-dyh

liyj
2024-09-15 3ce77531a4e13d749d58fea1a13695a80fbb9516
dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/service/CaseTaskService.java
@@ -39,6 +39,7 @@
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.google.common.collect.Maps;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@@ -413,12 +414,12 @@
            for (CaseTask caseTask: handleCaseTaskList){
                // 已结束节点
                if (CaseTaskConsts.TASK_STATUS_2 == caseTask.getStatus()){
                    // 待受理并已签收的节点,需要加多一个签收节点
                    // 待受理并已签收的正常任务节点,需要加多一个签收节点
                    if(caseTask.getNodeId().equals(FlowNodeEnum.FLOW_NODE_ZJ_DSL.getIndex())
                            || caseTask.getNodeId().equals(FlowNodeEnum.FLOW_NODE_QJ_DSL.getIndex())
                            || caseTask.getNodeId().equals(FlowNodeEnum.FLOW_NODE_SJ_DSL.getIndex())
                            || caseTask.getNodeId().equals(FlowNodeEnum.FLOW_NODE_DSL.getIndex())){
                        if (CaseTaskConsts.SIGN_STATUS_2 == caseTask.getSignStatus()){
                        if (CaseTaskConsts.SIGN_STATUS_2 == caseTask.getSignStatus() && CaseTaskConsts.TASK_TYPE_1 == caseTask.getTaskType()){
                            WebCaseFlowDTO slWebCaseFlowDTO = new WebCaseFlowDTO();
                            slWebCaseFlowDTO.setNodeShowName(caseTask.getNodeShowName());
                            slWebCaseFlowDTO.setHandleUnitName(caseTask.getHandleUnitName());
@@ -430,35 +431,6 @@
                            handleCaseFlowList.add(slWebCaseFlowDTO);
                        }
                    }
                    // 回退审核节点,需要加多一个回退申请节点
                    if(caseTask.getNodeId().equals(FlowNodeEnum.FLOW_NODE_ZJ_HTSH.getIndex())
                            || caseTask.getNodeId().equals(FlowNodeEnum.FLOW_NODE_QJ_HTSH.getIndex())
                            || caseTask.getNodeId().equals(FlowNodeEnum.FLOW_NODE_SJ_HTSH.getIndex())){
                        WebCaseFlowDTO sqWebCaseFlowDTO = new WebCaseFlowDTO();
                        sqWebCaseFlowDTO.setNodeShowName("事件回退");
                        sqWebCaseFlowDTO.setHandleUnitName(caseTask.getHandleUnitName());
                        sqWebCaseFlowDTO.setHandleUserName(caseTask.getHandleUserName());
                        sqWebCaseFlowDTO.setHandleTime(caseTask.getHandleTime());
                        sqWebCaseFlowDTO.setTaskType(CaseTaskConsts.TASK_TYPE_2);
                        sqWebCaseFlowDTO.setStatus(caseTask.getStatus());
                        CaseReturn caseReturn = caseReturnService.getByCaseTaskId(caseTask.getId());
                        sqWebCaseFlowDTO.setHandleNotes("回退理由:"+caseReturn.getReturnContent());
                        handleCaseFlowList.add(sqWebCaseFlowDTO);
                    }
                    // 上报审核节点,需要加多一个上报申请节点
                    if(caseTask.getNodeId().equals(FlowNodeEnum.FLOW_NODE_QJ_SBSH.getIndex())
                            || caseTask.getNodeId().equals(FlowNodeEnum.FLOW_NODE_SJ_SBSH.getIndex())){
                        WebCaseFlowDTO sqWebCaseFlowDTO = new WebCaseFlowDTO();
                        sqWebCaseFlowDTO.setNodeShowName("事件上报");
                        sqWebCaseFlowDTO.setHandleUnitName(caseTask.getHandleUnitName());
                        sqWebCaseFlowDTO.setHandleUserName(caseTask.getHandleUserName());
                        sqWebCaseFlowDTO.setHandleTime(caseTask.getHandleTime());
                        sqWebCaseFlowDTO.setTaskType(CaseTaskConsts.TASK_TYPE_3);
                        sqWebCaseFlowDTO.setStatus(caseTask.getStatus());
                        CaseAppear caseAppear = caseAppearService.getByCaseTaskId(caseTask.getId());
                        sqWebCaseFlowDTO.setHandleNotes("上报意见:"+caseAppear.getAppearContent());
                        handleCaseFlowList.add(sqWebCaseFlowDTO);
                    }
                    // 普通节点
                    WebCaseFlowDTO webCaseFlowDTO = new WebCaseFlowDTO();
                    webCaseFlowDTO.setNodeShowName(caseTask.getNodeShowName());
@@ -467,6 +439,27 @@
                    webCaseFlowDTO.setStatus(caseTask.getStatus());
                    webCaseFlowDTO.setHandleNotes(caseTask.getHandleIllust());
                    webCaseFlowDTO.setTaskType(caseTask.getTaskType());
                    // 回退申请节点
                    if(CaseTaskConsts.TASK_TYPE_2 == caseTask.getTaskType()){
                        webCaseFlowDTO.setNodeShowName("事件回退");
                        CaseReturn caseReturn = caseReturnService.getNewByCaseId(caseId);
                        if (StringUtils.isNotEmpty(caseReturn.getReturnContent())) {
                            webCaseFlowDTO.setHandleNotes("回退理由:" + caseReturn.getReturnContent());
                        }else {
                            webCaseFlowDTO.setHandleNotes("回退理由:-");
                        }
                    }
                    // 上报申请节点
                    if(CaseTaskConsts.TASK_TYPE_3 == caseTask.getTaskType()){
                        webCaseFlowDTO.setNodeShowName("事件上报");
                        CaseAppear caseAppear = caseAppearService.getNewByCaseId(caseId);
                        if (StringUtils.isNotEmpty(caseAppear.getAppearContent())) {
                            webCaseFlowDTO.setHandleNotes("上报理由:" + caseAppear.getAppearContent());
                        }else {
                            webCaseFlowDTO.setHandleNotes("上报意见:-" );
                        }
                    }
                    // 当事人评价节点,特殊处理
                    if (caseTask.getNodeId().equals(FlowNodeEnum.FLOW_NODE_DSRPJ.getIndex())){
                        webCaseFlowDTO.setNodeShowName(caseTask.getNodeShowName());
@@ -486,11 +479,13 @@
                            webCaseFlowDTO.setAuditResult(AuditBaseConstsEnum.AUDIT_RESULT_2.getIndex());
                            webCaseFlowDTO.setAuditResultName(AuditBaseConstsEnum.AUDIT_RESULT_2.getDes());
                            webCaseFlowDTO.setTaskType(CaseTaskConsts.TASK_TYPE_2);
                        }else if (CaseTaskConsts.HANDLE_RESULT_1 == caseTask.getHandleResult()) {
                        }else{
                            // 处理通过
                            webCaseFlowDTO.setAuditResult(AuditBaseConstsEnum.AUDIT_RESULT_1.getIndex());
                            webCaseFlowDTO.setAuditResultName(AuditBaseConstsEnum.AUDIT_RESULT_1.getDes());
                        }
                        // 临时加上
                        webCaseFlowDTO.setHandleNotes("审核结果:"+webCaseFlowDTO.getAuditResultName());
                    }
                    // 结案申请,需要展示化解结果
                    if (FlowNodeEnum.FLOW_NODE_JASQ.getIndex().equals(caseTask.getNodeId())){
@@ -498,20 +493,22 @@
                        if (ObjectUtils.isNotEmpty(caseInfoUnfold)){
                            webCaseFlowDTO.setMediResult(caseInfoUnfold.getMediResult());
                            webCaseFlowDTO.setMediResultName(caseInfoUnfold.getMediResultName());
                            // 临时加上
                            webCaseFlowDTO.setHandleNotes("化解结果:"+webCaseFlowDTO.getMediResultName());
                        }
                    }
                    handleCaseFlowList.add(webCaseFlowDTO);
                }else {
                    // 进行中的节点
                    WebCaseFlowDTO webCaseFlowDTO = new WebCaseFlowDTO();
                    webCaseFlowDTO.setNodeShowName(caseTask.getNodeShowName());
                    webCaseFlowDTO.setStatus(caseTask.getStatus());
                    // 当事人评价节点,特殊处理
                    if (caseTask.getNodeId().equals(FlowNodeEnum.FLOW_NODE_DSRPJ.getIndex())){
                        webCaseFlowDTO.setNodeShowName(caseTask.getNodeShowName());
                        webCaseFlowDTO.setProcessName(caseTask.getNodeShowName());
                    }else{
                        webCaseFlowDTO.setHandleUnitName(caseTask.getCandeUnitName());
                    }
                    webCaseFlowDTO.setStatus(caseTask.getStatus());
                    handleCaseFlowList.add(webCaseFlowDTO);
                }
            }
@@ -935,36 +932,36 @@
                        FlowNode secondFlowNode = flowInfoService.completeTask(dfpCaseTask.getFlowableId(), dfpCaseTask.getProcessTaskId(),
                                FlowableConsts.OPERATION_jb_zszz, "系统派单");
                        // 进入第2个节点-镇街级组织待受理
                        CaseTask sdlCaseTask = new CaseTask();
                        sdlCaseTask.setId(utilsClient.getNewTimeId());
                        sdlCaseTask.setCaseId(caseInfo.getId());
                        sdlCaseTask.setFlowableId(secondFlowNode.getFlowableId());
                        sdlCaseTask.setProcessInstanceId(secondFlowNode.getProcessInstanceId());
                        sdlCaseTask.setProcessTaskId(secondFlowNode.getProcessTaskId());
                        sdlCaseTask.setTaskType(CaseTaskConsts.TASK_TYPE_1);
                        sdlCaseTask.setNodeType(secondFlowNode.getNodeType());
                        sdlCaseTask.setNodeId(secondFlowNode.getNodeId());
                        sdlCaseTask.setNodeName(secondFlowNode.getNodeName());
                        sdlCaseTask.setFlowId(secondFlowNode.getFlowId());
                        sdlCaseTask.setNodeShowName(secondFlowNode.getNodeShowName());
                        sdlCaseTask.setCaseTaskType(dfpCaseTask.getCaseTaskType());
                        CaseTask dslCaseTask = new CaseTask();
                        dslCaseTask.setId(utilsClient.getNewTimeId());
                        dslCaseTask.setCaseId(caseInfo.getId());
                        dslCaseTask.setFlowableId(secondFlowNode.getFlowableId());
                        dslCaseTask.setProcessInstanceId(secondFlowNode.getProcessInstanceId());
                        dslCaseTask.setProcessTaskId(secondFlowNode.getProcessTaskId());
                        dslCaseTask.setTaskType(CaseTaskConsts.TASK_TYPE_1);
                        dslCaseTask.setNodeType(secondFlowNode.getNodeType());
                        dslCaseTask.setNodeId(secondFlowNode.getNodeId());
                        dslCaseTask.setNodeName(secondFlowNode.getNodeName());
                        dslCaseTask.setFlowId(secondFlowNode.getFlowId());
                        dslCaseTask.setNodeShowName(secondFlowNode.getNodeShowName());
                        dslCaseTask.setCaseTaskType(dfpCaseTask.getCaseTaskType());
                        // 通过调度的,任务候选执行者类型是上一步骤选择
                        sdlCaseTask.setCandeType(CaseTaskConsts.CANDE_TYPE_1);
                        sdlCaseTask.setCandeUnitId(caseDispBaseDTO.getTargetId());
                        sdlCaseTask.setCandeUnitName(caseDispBaseDTO.getTargetName());
                        dslCaseTask.setCandeType(CaseTaskConsts.CANDE_TYPE_1);
                        dslCaseTask.setCandeUnitId(caseDispBaseDTO.getTargetId());
                        dslCaseTask.setCandeUnitName(caseDispBaseDTO.getTargetName());
                        // 系统调度给调解组织,需要签收
                        sdlCaseTask.setSignStatus(CaseTaskConsts.SIGN_STATUS_1);
                        sdlCaseTask.setSignExpireTime(sysClient.getExpireTime(caseInfo.getCreateTime(), SyTimeEnum.SY_TIME_2.getIndex()));
                        dslCaseTask.setSignStatus(CaseTaskConsts.SIGN_STATUS_1);
                        dslCaseTask.setSignExpireTime(sysClient.getExpireTime(caseInfo.getCreateTime(), SyTimeEnum.SY_TIME_2.getIndex()));
                        // 任务处理时限
                        if (firstFlowNode.getExpire() != 0) {
                            sdlCaseTask.setExpireTime(DateUtils.addDay(caseInfo.getCreateTime(), firstFlowNode.getExpire()));
                            dslCaseTask.setExpireTime(DateUtils.addDay(caseInfo.getCreateTime(), firstFlowNode.getExpire()));
                        }
                        sdlCaseTask.setStatus(CaseTaskConsts.TASK_STATUS_1);
                        sdlCaseTask.setDeleteStatus(BaseConsts.DELETE_STATUS_0);
                        sdlCaseTask.setCustId(caseInfo.getCustId());
                        sdlCaseTask.setCreateTime(caseInfo.getCreateTime());
                        sdlCaseTask.setUpdateTime(caseInfo.getUpdateTime());
                        mapper.insert(sdlCaseTask);
                        dslCaseTask.setStatus(CaseTaskConsts.TASK_STATUS_1);
                        dslCaseTask.setDeleteStatus(BaseConsts.DELETE_STATUS_0);
                        dslCaseTask.setCustId(caseInfo.getCustId());
                        dslCaseTask.setCreateTime(caseInfo.getCreateTime());
                        dslCaseTask.setUpdateTime(caseInfo.getUpdateTime());
                        mapper.insert(dslCaseTask);
                        // 更新纠纷信息
                        CaseInfo caseInfoPO = new CaseInfo();
                        caseInfoPO.setId(caseInfo.getId());
@@ -989,7 +986,7 @@
     * @param caseInfo
     * @param loginUser
     */
    public void webStartFlowZXSL(CaseInfo caseInfo, CtUserDTO loginUser){
    public String webStartFlowZXSL(CaseInfo caseInfo, CtUserDTO loginUser){
        try{
            // 启动自行受理工作流,进入待受理节点
            FlowNode dslFlowNode = flowInfoService.startFlow(FlowableConsts.FLOWABLE_ID_ZXSL, caseInfo.getId());
@@ -1080,6 +1077,7 @@
            caseInfoUnfoldPO.setMediateUnitId(blfkCaseTask.getCandeUnitId());
            caseInfoUnfoldPO.setMediateUnitName(blfkCaseTask.getCandeUnitName());
            caseInfoUnfoldService.updateCaseInfoUnfold(caseInfoUnfoldPO);
            return dslCaseTask.getId();
        }catch (Exception e){
            log.error("[CaseTaskService.webStartFlowZXSL]调用失败,异常信息:"+e, e);
            throw new ServiceException("CaseTaskService.webStartFlowZXSL", e);
@@ -1189,57 +1187,38 @@
                String assistUnitName = assignTaskDTO.getAssistUnitList().stream().map(AssignAssistUnitDTO::getUitId).
                        collect(Collectors.joining(BaseConsts.COMMA));
                for (AssignAssistUnitDTO assignAssistUnitDTO: assignTaskDTO.getAssistUnitList()){
                    // 创建交办配合组织任务
                    CaseTask jbAssistCaseTask = new CaseTask();
                    jbAssistCaseTask.setId(utilsClient.getNewTimeId());
                    jbAssistCaseTask.setCaseId(dfpCaseTask.getCaseId());
                    jbAssistCaseTask.setTaskType(CaseTaskConsts.TASK_TYPE_1);
                    jbAssistCaseTask.setNodeName("交办配合部门");
                    jbAssistCaseTask.setNodeShowName("交办配合部门");
                    jbAssistCaseTask.setCaseTaskType(CaseTaskConsts.CASE_TASK_TYPE_2);
                    // 配合任务,任务候选执行者类型是上一步骤选择
                    jbAssistCaseTask.setCandeType(CaseTaskConsts.CANDE_TYPE_1);
                    jbAssistCaseTask.setCandeUnitId(loginUser.getUnitId());
                    jbAssistCaseTask.setCandeUnitName(loginUser.getUnitName());
                    jbAssistCaseTask.setHandleUnitId(loginUser.getUnitId());
                    jbAssistCaseTask.setHandleUnitName(loginUser.getUnitId());
                    jbAssistCaseTask.setHandleUserId(loginUser.getId());
                    jbAssistCaseTask.setHandleUserName(loginUser.getTrueName());
                    jbAssistCaseTask.setHandleContent(assignTaskDTO.getAssignContent());
                    jbAssistCaseTask.setHandleIllust("派单至:"+assignTaskDTO.getHandleUnitName());
                    jbAssistCaseTask.setHandleTime(nowDate);
                    // 不需要签收
                    jbAssistCaseTask.setSignStatus(CaseTaskConsts.SIGN_STATUS_0);
                    jbAssistCaseTask.setStatus(CaseTaskConsts.TASK_STATUS_2);
                    jbAssistCaseTask.setDeleteStatus(BaseConsts.DELETE_STATUS_0);
                    jbAssistCaseTask.setCustId(dfpCaseTask.getCustId());
                    jbAssistCaseTask.setCreateTime(nowDate);
                    jbAssistCaseTask.setUpdateTime(nowDate);
                    mapper.insert(jbAssistCaseTask);
                    // 创建配合组织任务
                    CaseTask assistCaseTask = new CaseTask();
                    assistCaseTask.setId(utilsClient.getNewTimeId());
                    assistCaseTask.setCaseId(dfpCaseTask.getCaseId());
                    assistCaseTask.setTaskType(CaseTaskConsts.TASK_TYPE_1);
                    assistCaseTask.setNodeId(FlowNodeEnum.FLOW_NODE_BLFK.getIndex());
                    assistCaseTask.setNodeName(FlowNodeEnum.FLOW_NODE_BLFK.getDes());
                    assistCaseTask.setNodeShowName(FlowNodeEnum.FLOW_NODE_BLFK.getIndex());
                    assistCaseTask.setCaseTaskType(CaseTaskConsts.CASE_TASK_TYPE_2);
                    // 配合任务,任务候选执行者类型是上一步骤选择
                    assistCaseTask.setCandeType(CaseTaskConsts.CANDE_TYPE_1);
                    assistCaseTask.setCandeUnitId(assignAssistUnitDTO.getUitId());
                    assistCaseTask.setCandeUnitName(assignAssistUnitDTO.getUitName());
                    assistCaseTask.setHandleUnitId(assignAssistUnitDTO.getUitId());
                    assistCaseTask.setHandleUnitName(assignAssistUnitDTO.getUitName());
                    // 分派的任务,需要签收
                    assistCaseTask.setSignStatus(CaseTaskConsts.SIGN_STATUS_1);
                    assistCaseTask.setSignExpireTime(sysClient.getExpireTime(nowDate, SyTimeEnum.SY_TIME_2.getIndex()));
                    assistCaseTask.setStatus(CaseTaskConsts.TASK_STATUS_1);
                    assistCaseTask.setDeleteStatus(BaseConsts.DELETE_STATUS_0);
                    assistCaseTask.setCustId(dfpCaseTask.getCustId());
                    assistCaseTask.setCreateTime(nowDate);
                    assistCaseTask.setUpdateTime(nowDate);
                    mapper.insert(assistCaseTask);
                    // 启动联合处置工作流
                    FlowNode firstFlowNode = flowInfoService.startFlow(FlowableConsts.FLOWABLE_ID_LHCZ, dfpCaseTask.getCaseId());
                    // 创建配合部门待受理任务
                    CaseTask lhczCaseTask = new CaseTask();
                    lhczCaseTask.setId(utilsClient.getNewTimeId());
                    lhczCaseTask.setCaseId(dfpCaseTask.getCaseId());
                    lhczCaseTask.setFlowableId(firstFlowNode.getFlowableId());
                    lhczCaseTask.setProcessInstanceId(firstFlowNode.getProcessInstanceId());
                    lhczCaseTask.setProcessTaskId(firstFlowNode.getProcessTaskId());
                    lhczCaseTask.setTaskType(CaseTaskConsts.TASK_TYPE_1);
                    lhczCaseTask.setNodeType(firstFlowNode.getNodeType());
                    lhczCaseTask.setNodeId(firstFlowNode.getNodeId());
                    lhczCaseTask.setNodeName(firstFlowNode.getNodeName());
                    lhczCaseTask.setFlowId(firstFlowNode.getFlowId());
                    lhczCaseTask.setNodeShowName(firstFlowNode.getNodeShowName());
                    lhczCaseTask.setCaseTaskType(CaseTaskConsts.CASE_TASK_TYPE_2);
                    // 通过调度的,任务候选执行者类型是上一步骤选择
                    lhczCaseTask.setCandeType(CaseTaskConsts.CANDE_TYPE_1);
                    lhczCaseTask.setCandeUnitId(assignAssistUnitDTO.getUitId());
                    lhczCaseTask.setCandeUnitName(assignAssistUnitDTO.getUitName());
                    // 需要签收
                    lhczCaseTask.setSignStatus(CaseTaskConsts.SIGN_STATUS_1);
                    lhczCaseTask.setStatus(CaseTaskConsts.TASK_STATUS_1);
                    // 任务处理时限
                    if (firstFlowNode.getExpire() != 0) {
                        lhczCaseTask.setExpireTime(DateUtils.addDay(nowDate, firstFlowNode.getExpire()));
                    }
                    lhczCaseTask.setDeleteStatus(BaseConsts.DELETE_STATUS_0);
                    lhczCaseTask.setCustId(dfpCaseTask.getCustId());
                    lhczCaseTask.setCreateTime(nowDate);
                    lhczCaseTask.setUpdateTime(nowDate);
                    mapper.insert(lhczCaseTask);
                }
                // 更新纠纷扩展信息
                CaseInfoUnfold caseInfoUnfoldPO = new CaseInfoUnfold();
@@ -1264,8 +1243,6 @@
            Date nowDate = DateUtils.getNowDate();
            // 获取当前登录用户
            CtUserDTO loginUser = custClient.clientGetUserAll(userId);
            List<String> taskIdList = new ArrayList<>();
            List<String> caseIdList = new ArrayList<>();
            for (SignTaskDTO signTaskDTO: signTaskDTOList){
                CaseTask qsCaseTask = mapper.selectById(signTaskDTO.getCaseTaskId());
                // 更新纠纷任务信息
@@ -1304,7 +1281,7 @@
     * @param acceptTaskDTO 受理任务表单
     * @param userId 当前登录用户
     */
    public void webAccept(AcceptTaskDTO acceptTaskDTO, String userId){
    public String webAccept(AcceptTaskDTO acceptTaskDTO, String userId){
        try{
            Date nowDate = DateUtils.getNowDate();
            // 获取当前登录用户
@@ -1377,6 +1354,7 @@
                caseInfoUnfoldPO.setMediateUnitName(blfkCaseTask.getCandeUnitName());
                caseInfoUnfoldService.updateCaseInfoUnfold(caseInfoUnfoldPO);
            }
            return blfkCaseTask.getId();
        }catch (Exception e){
            log.error("[CaseTaskService.webAccept]调用失败,异常信息:"+e, e);
            throw new ServiceException("CaseTaskService.webAccept", e);
@@ -1848,6 +1826,7 @@
            // 完成当前待受理任务
            CaseTask dslCaseTaskPO = new CaseTask();
            dslCaseTaskPO.setId(caseReturn.getCaseTaskId());
            dslCaseTaskPO.setTaskType(CaseTaskConsts.TASK_TYPE_2);
            dslCaseTaskPO.setStatus(CaseTaskConsts.TASK_STATUS_2);
            dslCaseTaskPO.setHandleUnitId(loginUser.getUnitId());
            dslCaseTaskPO.setHandleUnitName(loginUser.getUnitName());
@@ -2069,6 +2048,7 @@
            // 完成当前待受理任务
            CaseTask dslCaseTaskPO = new CaseTask();
            dslCaseTaskPO.setId(caseAppear.getCaseTaskId());
            dslCaseTaskPO.setTaskType(CaseTaskConsts.TASK_TYPE_3);
            dslCaseTaskPO.setStatus(CaseTaskConsts.TASK_STATUS_2);
            dslCaseTaskPO.setHandleUnitId(loginUser.getUnitId());
            dslCaseTaskPO.setHandleUnitName(loginUser.getUnitName());