forked from gzzfw/backEnd/gz-dyh

xusd
2024-10-27 80cc7fd5df68a78df4921379a4909a8025febdfc
dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/service/CaseTaskService.java
@@ -34,13 +34,19 @@
import cn.huge.module.flow.domain.po.FlowNode;
import cn.huge.module.flow.service.FlowInfoService;
import cn.huge.module.mediate.constant.*;
import cn.huge.module.sys.constant.GridBaseConsts;
import cn.huge.module.sys.constant.GridEnum;
import cn.huge.module.sys.constant.SyTimeEnum;
import cn.huge.module.sys.dto.FileIdTypeInfoBaseDTO;
import cn.huge.module.sys.vo.GridTaskVo;
import cn.huge.module.sys.vo.GridToDoBacthVo;
import cn.huge.module.sys.vo.GridToDoVo;
import com.alibaba.fastjson.JSON;
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.google.common.collect.Maps;
import lombok.extern.java.Log;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;
@@ -52,6 +58,7 @@
import org.springframework.data.domain.PageRequest;
import org.springframework.transaction.annotation.Transactional;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.stream.Collectors;
@@ -642,6 +649,7 @@
            List<CaseAssistInfo> caseAssistInfoList = caseAssistInfoService.listByCaseId(caseId);
            if (CollectionUtils.isNotEmpty(caseAssistInfoList)){
                LinkedList<WebAssistCaseFlowDTO> assistCaseFlowList = new LinkedList<>();
                int i = 0;
                for (CaseAssistInfo caseAssistInfo: caseAssistInfoList){
                    if (CaseTaskConsts.ASSIST_STATUS_0 == caseAssistInfo.getAssistStatus()) {
                        WebAssistCaseFlowDTO webAssistCaseFlowDTO = new WebAssistCaseFlowDTO();
@@ -795,7 +803,9 @@
                        assistCaseFlowList.add(webAssistCaseFlowDTO);
                    }else {
                        WebAssistCaseFlowDTO webAssistCaseFlowDTO = new WebAssistCaseFlowDTO();
                        webAssistCaseFlowDTO.setUnitId(caseAssistInfo.getAssistUnitId());
                        // i防止提供给前端的unitId重复
                        i++;
                        webAssistCaseFlowDTO.setUnitId(caseAssistInfo.getAssistUnitId()+"_"+i);
                        webAssistCaseFlowDTO.setUnitName(caseAssistInfo.getAssistUnitName()+"(已回退)");
                        LinkedList<WebCaseFlowDTO> caseFlowList = new LinkedList<>();
                        webAssistCaseFlowDTO.setCaseFlowList(caseFlowList);
@@ -1163,7 +1173,7 @@
                if (UserBaseConsts.UNIT_GRADE_3 == caseDispBaseDTO.getTargetUnitGrade()) {
                    // 启动来访登记工作流
                    FlowNode firstFlowNode = flowInfoService.startFlow(FlowableConsts.getJbFlow(caseInfo.getCanal()), caseInfo.getId());
                    if (UserBaseConsts.UNIT_TYPE_1 == caseDispBaseDTO.getTargetUnitType()){
                    if (UserBaseConsts.UNIT_TYPE_101 == caseDispBaseDTO.getTargetUnitType()){
                        // 调度给镇街综治中心,进入第1个任务节点-镇街综治中心待分派
                        CaseTask dfpCaseTask = new CaseTask();
                        dfpCaseTask.setId(utilsClient.getNewTimeId());
@@ -1202,6 +1212,9 @@
                        caseInfoPO.setInfoProcess(CaseInfoProcessBaseConstsEnum.getByProcess(caseInfoPO.getProcess()).getIndex());
                        caseInfoPO.setInfoProcessName(CaseInfoProcessBaseConstsEnum.getByProcess(caseInfoPO.getProcess()).getDes());
                        caseInfoService.updateCaseInfo(caseInfoPO);
                        //添加网格待办
                        this.createGridToDo(caseInfo, dfpCaseTask, GridEnum.GRID_OBJECT_TYPE_1.getIndex(), GridBaseConsts.GRID_TYPE_1);
                    }else {
                        // 调度给调解组织,默认通过第1个任务节点-镇街综治中心待分派
                        CaseTask dfpCaseTask = new CaseTask();
@@ -1280,6 +1293,9 @@
                        caseInfoPO.setInfoProcess(CaseInfoProcessBaseConstsEnum.getByProcess(caseInfoPO.getProcess()).getIndex());
                        caseInfoPO.setInfoProcessName(CaseInfoProcessBaseConstsEnum.getByProcess(caseInfoPO.getProcess()).getDes());
                        caseInfoService.updateCaseInfo(caseInfoPO);
                        //添加网格待办
                        this.createGridToDo(caseInfo, dslCaseTask, GridEnum.GRID_OBJECT_TYPE_3.getIndex(), GridBaseConsts.GRID_TYPE_3);
                    }
                }
            }
@@ -1387,6 +1403,7 @@
            caseInfoUnfoldPO.setMediateUnitId(blfkCaseTask.getCandeUnitId());
            caseInfoUnfoldPO.setMediateUnitName(blfkCaseTask.getCandeUnitName());
            caseInfoUnfoldService.updateCaseInfoUnfold(caseInfoUnfoldPO);
            return blfkCaseTask.getId();
        }catch (Exception e){
            log.error("[CaseTaskService.webStartFlowZXSL]调用失败,异常信息:"+e, e);
@@ -1472,6 +1489,8 @@
            caseDismiss.setCreateTime(nowDate);
            caseDismiss.setUpdateTime(nowDate);
            caseDismissService.save(caseDismiss);
            //删除网格待办
            this.deleteGridTodo(caseTask);
        }catch (Exception e){
            log.error("[CaseTaskService.webAssign]调用失败,异常信息:"+e, e);
            throw new ServiceException("CaseTaskService.webAssign", e);
@@ -1569,6 +1588,7 @@
            dslCaseTask.setUpdateTime(nowDate);
            mapper.insert(dslCaseTask);
            // 更新纠纷信息
            CaseInfo caseInfo = caseInfoService.getCaseInfo(dslCaseTask.getCaseId());
            CaseInfo caseInfoPO = new CaseInfo();
            caseInfoPO.setId(dslCaseTask.getCaseId());
            caseInfoPO.setStatus(CaseStatusBaseConstsEnum.CASE_STATUS_3.getIndex());
@@ -1579,6 +1599,8 @@
            caseInfoPO.setInfoProcessName(CaseInfoProcessBaseConstsEnum.getByProcess(caseInfoPO.getProcess()).getDes());
            caseInfoPO.setUpdateTime(nowDate);
            caseInfoService.updateCaseInfo(caseInfoPO);
            //修改网格待办流程
            this.taskFlowGridToDo(caseInfo, dslCaseTask, dfpCaseTaskPO.getId(), GridEnum.GRID_OBJECT_TYPE_2.getIndex(), GridBaseConsts.GRID_TYPE_2);
            // 交办配合组织
            if (CollectionUtils.isNotEmpty(assignTaskDTO.getAssistUnitList())){
@@ -1669,6 +1691,8 @@
                    caseAssistInfoPO.setCreateTime(nowDate);
                    caseAssistInfoPO.setUpdateTime(nowDate);
                    caseAssistInfoService.save(caseAssistInfoPO);
                    //添加网格待办
                    this.createGridToDo(caseInfo, lhczdslCaseTask, GridEnum.GRID_OBJECT_TYPE_2.getIndex(), GridBaseConsts.GRID_TYPE_2);
                }
                // 更新纠纷扩展信息
                CaseInfoUnfold caseInfoUnfoldPO = new CaseInfoUnfold();
@@ -1718,6 +1742,12 @@
                    caseInfoPO.setInfoProcessName(CaseInfoProcessBaseConstsEnum.getByProcess(caseInfoPO.getProcess()).getDes());
                    caseInfoPO.setUpdateTime(nowDate);
                    caseInfoService.updateCaseInfo(caseInfoPO);
                }
                //修改网格待办流程
                CaseInfo caseInfo = caseInfoService.getById(qsCaseTask.getCaseId());
                if(ObjectUtils.isNotEmpty(caseInfo)){
                    caseTaskPO.setCandeUnitId(qsCaseTask.getCandeUnitId());
                    this.taskFlowGridToDo(caseInfo, caseTaskPO, qsCaseTask.getId(), GridEnum.GRID_OBJECT_TYPE_3.getIndex(), GridBaseConsts.GRID_TYPE_3);
                }
            }
        }catch (Exception e){
@@ -1794,6 +1824,11 @@
            blfkCaseTask.setCreateTime(nowDate);
            blfkCaseTask.setUpdateTime(nowDate);
            mapper.insert(blfkCaseTask);
            //删除网格待办
            dslCaseTaskPO.setCaseId(dslCaseTask.getCaseId());
            this.deleteGridTodo(dslCaseTaskPO);
            // 承办组织受理才更新纠纷信息
            if (CaseTaskConsts.CASE_TASK_TYPE_1 ==  dslCaseTask.getCaseTaskType()) {
                // 更新纠纷信息
@@ -2321,6 +2356,8 @@
                    caseInfoUnfoldPO.setWindupContent(caseWindupApply.getWindupContent());
                    caseInfoUnfoldPO.setUpdateTime(nowDate);
                    caseInfoUnfoldService.updateCaseInfoUnfold(caseInfoUnfoldPO);
                    //添加网格待办
                    this.createGridToDo(caseInfo, jashCaseTask, GridEnum.GRID_OBJECT_TYPE_4.getIndex(), GridBaseConsts.GRID_TYPE_4);
                }
            }
            // 查询联合处置申请单,全部结束申请单
@@ -2487,6 +2524,8 @@
                    newCaseWindupApply.setUpdateTime(nowDate);
                    newCaseWindupApply.setCustId(yjJashCaseTask.getCustId());
                    caseWindupApplyService.save(newCaseWindupApply);
                    //修改网格待办流程
                    this.taskFlowGridToDo(caseInfo, yjJashCaseTask, jashCaseTask.getId(), GridEnum.GRID_OBJECT_TYPE_4.getIndex(), GridBaseConsts.GRID_TYPE_4);
                }
                // 下一个节点是二级结案审核节点,进入二级结案审核节点任务
                if (FlowNodeEnum.FLOW_NODE_JASH_EJ.getIndex().equals(nextFlowNode.getNodeId())){
@@ -2533,6 +2572,9 @@
                    newCaseWindupApply.setUpdateTime(nowDate);
                    newCaseWindupApply.setCustId(ejJashCaseTask.getCustId());
                    caseWindupApplyService.save(newCaseWindupApply);
                    //修改网格待办流程
                    this.taskFlowGridToDo(caseInfo, ejJashCaseTask, jashCaseTask.getId(), GridEnum.GRID_OBJECT_TYPE_4.getIndex(), GridBaseConsts.GRID_TYPE_4);
                }
                // 下一个节点是当事人评价节点,进入当事人评价节点任务
                if (FlowNodeEnum.FLOW_NODE_DSRPJ.getIndex().equals(nextFlowNode.getNodeId())){
@@ -2576,6 +2618,8 @@
                    caseInfoPO.setInfoProcessName(CaseInfoProcessBaseConstsEnum.getByProcess(caseInfoPO.getProcess()).getDes());
                    caseInfoPO.setUpdateTime(nowDate);
                    caseInfoService.updateCaseInfo(caseInfoPO);
                    //删除网格待办
                    this.deleteGridTodo(jashCaseTask);
                }
                // 下一个节点是结案归档节点,进入结案归档节点任务
                if (FlowNodeEnum.FLOW_NODE_JAGD.getIndex().equals(nextFlowNode.getNodeId())){
@@ -2633,7 +2677,8 @@
                    caseInfoPO.setInfoProcessName(CaseInfoProcessBaseConstsEnum.getByProcess(caseInfoPO.getProcess()).getDes());
                    caseInfoPO.setUpdateTime(nowDate);
                    caseInfoService.updateCaseInfo(caseInfoPO);
                    //删除网格待办
                    this.deleteGridTodo(jashCaseTask);
                }
                // 更新纠纷扩展信息
                CaseInfoUnfold caseInfoUnfoldPO = new CaseInfoUnfold();
@@ -2693,6 +2738,8 @@
                blfkCaseTask.setCreateTime(nowDate);
                blfkCaseTask.setUpdateTime(nowDate);
                mapper.insert(blfkCaseTask);
                //删除网格待办
                this.deleteGridTodo(jashCaseTask);
                // 更新纠纷信息
                CaseInfo caseInfoPO = new CaseInfo();
                caseInfoPO.setId(blfkCaseTask.getCaseId());
@@ -2704,6 +2751,7 @@
                caseInfoPO.setInfoProcessName(CaseInfoProcessBaseConstsEnum.getByProcess(caseInfoPO.getProcess()).getDes());
                caseInfoPO.setUpdateTime(nowDate);
                caseInfoService.updateCaseInfo(caseInfoPO);
            }
        }catch (Exception e){
            log.error("[CaseTaskService.webWindupApply]调用失败,异常信息:"+e, e);
@@ -2791,6 +2839,9 @@
            caseReturn.setCaseTaskId(htshCaseTask.getId());
            caseReturn.setCaseTaskType(htshCaseTask.getCaseTaskType());
            caseReturnService.save(caseReturn);
            //修改网格待办流程
            CaseInfo caseInfo = caseInfoService.getById(thisCaseTask.getCaseId());
            this.taskFlowGridToDo(caseInfo, htshCaseTask, thisCaseTask.getId(), GridEnum.GRID_OBJECT_TYPE_4.getIndex(), GridBaseConsts.GRID_TYPE_4);
        }catch (Exception e){
            log.error("[CaseTaskService.webReturnApply]调用失败,异常信息:"+e, e);
            throw new ServiceException("CaseTaskService.webReturnApply", e);
@@ -2882,6 +2933,10 @@
                    caseInfoService.updateCaseInfo(caseInfoPO);
                    // 有配合组织,结束配合组织工作流程
                    List<CaseTask> assistCaseTaskList = this.listAssistTasking(htshCaseTask.getCaseId());
                    //修改网格待办流程
                    CaseInfo caseInfo = caseInfoService.getById(htshCaseTask.getCaseId());
                    this.taskFlowGridToDo(caseInfo, nextCaseTask, htshCaseTask.getId(), GridEnum.GRID_OBJECT_TYPE_1.getIndex(), GridBaseConsts.GRID_TYPE_1);
                    for (CaseTask assistCaseTask: assistCaseTaskList){
                        // 完成配合组织当前任务
                        assistCaseTask.setStatus(CaseTaskConsts.TASK_STATUS_2);
@@ -2907,6 +2962,9 @@
                                .eq("process_instance_id", assistCaseTask.getProcessInstanceId())
                                .eq("assist_status", CaseTaskConsts.ASSIST_STATUS_0).set("assist_status", CaseTaskConsts.ASSIST_STATUS_2);
                        caseAssistInfoService.update(caseAssistInfoUpdateWrapper);
                        //修改网格待办流程
                        this.taskFlowGridToDo(caseInfo, assistCaseTask, htshCaseTask.getId(), GridEnum.GRID_OBJECT_TYPE_1.getIndex(), GridBaseConsts.GRID_TYPE_1);
                    }
                }else {
                    // 更新联合处置信息
@@ -2918,6 +2976,9 @@
                    if (ObjectUtils.isNotEmpty(caseAssistInfo)){
                        caseAssistInfo.setAssistStatus(CaseTaskConsts.ASSIST_STATUS_1);
                        caseAssistInfoService.updateCaseAssistInfo(caseAssistInfo);
                        //删除网格待办
                        htshCaseTaskPO.setCaseId(htshCaseTask.getCaseId());
                        this.deleteGridTodo(htshCaseTaskPO);
                    }
                }
            }else {
@@ -2987,6 +3048,9 @@
                nextCaseTask.setCreateTime(nowDate);
                nextCaseTask.setUpdateTime(nowDate);
                mapper.insert(nextCaseTask);
                //修改网格待办流程
                CaseInfo caseInfo = caseInfoService.getById(htshCaseTask.getCaseId());
                this.taskFlowGridToDo(caseInfo, nextCaseTask, htshCaseTask.getId(), GridEnum.GRID_OBJECT_TYPE_3.getIndex(), GridBaseConsts.GRID_TYPE_3);
            }
        }catch (Exception e){
            log.error("[CaseTaskService.webReturnAudit]调用失败,异常信息:"+e, e);
@@ -3070,6 +3134,9 @@
            // 新增上报申请信息
            caseAppear.setCaseTaskId(sbshCaseTask.getId());
            caseAppearService.save(caseAppear);
            //修改网格待办流程
            CaseInfo caseInfo = caseInfoService.getById(thisCaseTask.getCaseId());
            this.taskFlowGridToDo(caseInfo, sbshCaseTask, thisCaseTask.getId(), GridEnum.GRID_OBJECT_TYPE_4.getIndex(), GridBaseConsts.GRID_TYPE_4);
        }catch (Exception e){
            log.error("[CaseTaskService.webAppearApply]调用失败,异常信息:"+e, e);
            throw new ServiceException("CaseTaskService.webAppearApply", e);
@@ -3158,6 +3225,10 @@
                caseInfoPO.setInfoProcessName(CaseInfoProcessBaseConstsEnum.getByProcess(caseInfoPO.getProcess()).getDes());
                caseInfoPO.setUpdateTime(nowDate);
                caseInfoService.updateCaseInfo(caseInfoPO);
                //修改网格待办流程
                CaseInfo caseInfo = caseInfoService.getById(sbshCaseTask.getCaseId());
                this.taskFlowGridToDo(caseInfo, dfphCaseTask, sbshCaseTask.getId(), GridEnum.GRID_OBJECT_TYPE_1.getIndex(), GridBaseConsts.GRID_TYPE_1);
            }else {
                // 审核不通过
                // 完成当前上报审核任务
@@ -3211,6 +3282,10 @@
                dfphCaseTask.setCreateTime(nowDate);
                dfphCaseTask.setUpdateTime(nowDate);
                mapper.insert(dfphCaseTask);
                //修改网格待办流程
                CaseInfo caseInfo = caseInfoService.getById(sbshCaseTask.getCaseId());
                this.taskFlowGridToDo(caseInfo, dfphCaseTask, sbshCaseTask.getId(), GridEnum.GRID_OBJECT_TYPE_1.getIndex(), GridBaseConsts.GRID_TYPE_1);
            }
        }catch (Exception e){
            log.error("[CaseTaskService.webAppearAudit]调用失败,异常信息:"+e, e);
@@ -3244,4 +3319,102 @@
        }
    }
    /**
     * 根据编号物理删除
     * @param caseId
     */
    public void deleteByCaseId(String caseId){
        try{
            mapper.deleteByCaseId(caseId);
        }catch (Exception e){
            log.error("[CaseTaskService.deleteByCaseId]调用失败,异常信息:"+e, e);
            throw new ServiceException("CaseTaskService.deleteByCaseId", e);
        }
    }
    public void deleteGridTodo(CaseTask caseTask) {
        try {
            //删除网格待办任务
            GridTaskVo gridTaskVo = new GridTaskVo();
            gridTaskVo.setCaseId(caseTask.getCaseId());
            gridTaskVo.setCaseTaskId(caseTask.getId());
            sysClient.deleteTaskTodo(gridTaskVo);
        } catch (Exception e) {
            log.error("删除网格待办失败");
        }
    }
    public void createGridToDo(CaseInfo caseInfo, CaseTask caseTask, String gridObjType, String noticeTypeName){
        try {
            SimpleDateFormat outputFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            //添加网格待办
            GridToDoBacthVo gridToDoBacthVo = new GridToDoBacthVo();
            gridToDoBacthVo.setObjId(caseTask.getId());
            gridToDoBacthVo.setObjType(gridObjType);
            gridToDoBacthVo.setSysContent("");
            gridToDoBacthVo.setYzyContent("");
            gridToDoBacthVo.setObjTag("");
            gridToDoBacthVo.setMobile("18607214221");
            gridToDoBacthVo.setTodoType(GridEnum.GRID_TODO_TYPE_5.getIndex());
            gridToDoBacthVo.setTitle(noticeTypeName + caseInfo.getPlaintiffs() + "和" + caseInfo.getDefendants()+"的"+caseInfo.getCaseTypeName()+"事件");
            gridToDoBacthVo.setLimitTime(outputFormat.format(caseTask.getExpireTime()));
            gridToDoBacthVo.setCaseId(caseInfo.getId());
            sysClient.createTaskToDo(gridToDoBacthVo, caseTask.getCandeUnitId());
        } catch (Exception e) {
            log.error("添加网格待办失败");
            log.error(e.getMessage(), e);
        }
    }
    public void updateGridToDo(CaseInfo caseInfo, CaseTask caseTask, String previousTaskId, String gridObjType, String noticeTypeName) {
        try {
            //添加网格待办
            GridToDoVo gridToDoVo = new GridToDoVo();
            gridToDoVo.setObjId(caseTask.getId());
            gridToDoVo.setObjType(gridObjType);
            gridToDoVo.setSysContent("");
            gridToDoVo.setYzyContent("");
            gridToDoVo.setObjTag("");
            gridToDoVo.setMobile("18607214221");
            gridToDoVo.setTodoType(GridEnum.GRID_TODO_TYPE_5.getIndex());
            gridToDoVo.setTitle(noticeTypeName + caseInfo.getPlaintiffs() + "和" + caseInfo.getDefendants() + "的" + caseInfo.getCaseTypeName() + "事件");
            gridToDoVo.setLimitTime(String.valueOf(caseTask.getExpireTime()));
            gridToDoVo.setCaseId(caseInfo.getId());
            sysClient.updateTaskTodo(gridToDoVo, previousTaskId);
        } catch (Exception e) {
            log.error("修改网格待办失败");
            log.error(e.getMessage(), e);
        }
    }
    public void taskFlowGridToDo(CaseInfo caseInfo, CaseTask caseTask, String previousTaskId, String gridObjType, String noticeTypeName) {
        try {
            SimpleDateFormat outputFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            //删除网格待办任务
            GridTaskVo gridTaskVo = new GridTaskVo();
            gridTaskVo.setCaseId(caseInfo.getId());
            gridTaskVo.setCaseTaskId(previousTaskId);
            sysClient.deleteTaskTodo(gridTaskVo);
            //添加网格待办
            GridToDoBacthVo gridToDoBacthVo = new GridToDoBacthVo();
            gridToDoBacthVo.setObjId(caseTask.getId());
            gridToDoBacthVo.setObjType(gridObjType);
            gridToDoBacthVo.setSysContent("");
            gridToDoBacthVo.setYzyContent("");
            gridToDoBacthVo.setObjTag("");
            gridToDoBacthVo.setMobile("18607214221");
            gridToDoBacthVo.setTodoType(GridEnum.GRID_TODO_TYPE_5.getIndex());
            gridToDoBacthVo.setTitle(noticeTypeName + caseInfo.getPlaintiffs() + "和" + caseInfo.getDefendants() + "的" + caseInfo.getCaseTypeName() + "事件");
            if(ObjectUtils.isNotEmpty(caseTask.getExpireTime())){
                gridToDoBacthVo.setLimitTime(outputFormat.format(caseTask.getExpireTime()));
            }else{
                gridToDoBacthVo.setLimitTime(outputFormat.format(DateUtils.addHour(DateUtils.getNowDate(), 12)));
            }
            gridToDoBacthVo.setCaseId(caseInfo.getId());
            sysClient.createTaskToDo(gridToDoBacthVo, caseTask.getCandeUnitId());
        } catch (Exception e) {
            log.error("修改网格待办流程失败");
            log.error(e.getMessage(), e);
        }
    }
}