package cn.huge.module.cases.service; import cn.huge.base.common.bo.PageBO; import cn.huge.base.common.constant.GzRegionBaseEnum; import cn.huge.base.common.exception.ServiceException; import cn.huge.base.common.utils.*; import cn.huge.module.analysis.service.AnalysisService; import cn.huge.module.cases.domain.bo.CaseTaskYbCountBO; import cn.huge.module.cases.domain.dto.*; import cn.huge.module.cases.domain.dto.WebCaseFlowDTO; import cn.huge.module.cases.domain.dto.TabButtonDTO; import cn.huge.module.cases.domain.dto.TabButtonInfoDTO; import cn.huge.module.cases.domain.po.CaseAssistApply; import cn.huge.module.cases.domain.po.CaseInfoUnfold; import cn.huge.module.cases.domain.po.*; import cn.huge.module.cases.service.impl.CaseModifyServiceImpl; import cn.huge.module.cases.utils.TaskUsetimeUtils; import cn.huge.module.client.api.impl.CustClientImpl; import cn.huge.module.client.api.impl.DispClientImpl; import cn.huge.module.client.api.impl.SysClientImpl; import cn.huge.module.client.api.impl.UtilsClientImpl; import cn.huge.module.cases.dao.mapper.CaseTaskMapper; import cn.huge.module.cases.domain.po.CaseTask; import cn.huge.module.constant.BaseConsts; import cn.huge.module.cust.constant.UserBaseConsts; import cn.huge.module.cust.dto.CtUnitDTO; import cn.huge.module.cust.dto.CtUserDTO; import cn.huge.module.draft.service.CasedraftInfoService; import cn.huge.module.judic.domain.dto.JudicInfoDTO; import cn.huge.module.judic.service.JudicInfoService; import cn.huge.module.mediate.constant.AuditBaseConsts; import cn.huge.module.mediate.constant.AuditBaseConstsEnum; import cn.huge.module.disp.constant.DispBaseConstsEnum; import cn.huge.module.disp.dto.CaseDispBaseDTO; import cn.huge.module.disp.dto.DispCaseBaseDTO; import cn.huge.module.cases.consts.CaseTaskConsts; 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.*; import cn.huge.module.sy.service.SyHolidayService; import cn.huge.module.sys.constant.FileOwnerTypeBaseEnum; 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.dto.FileInfoBaseDTO; import cn.huge.module.sys.dto.FileTypeInfoBaseDTO; import cn.huge.module.sys.dto.FlowNodeBaseDTO; import cn.huge.module.sys.vo.GridTaskVo; import cn.huge.module.sys.vo.GridToDoBacthVo; import cn.huge.module.sys.vo.GridToDoVo; import cn.huge.module.thirdByRmtj.consts.RmtjConsts; import cn.huge.module.thirdByRmtj.domain.dto.ToRmtjApplyDTO; import cn.huge.module.thirdByRmtj.domain.po.ThRmtjApply; import cn.huge.module.thirdByRmtj.service.ThRmtjApplyService; import cn.huge.module.thirdByRmtj.service.ThRmtjAuditService; 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 dm.jdbc.util.DateUtil; import net.sf.json.JSONObject; import org.apache.commons.collections.CollectionUtils; import org.apache.commons.lang3.StringUtils; import org.flowable.task.api.Task; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Service; import lombok.extern.slf4j.Slf4j; 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 java.text.SimpleDateFormat; import java.util.*; import java.util.stream.Collectors; /** * @author liyj * @version 1.0.0 * @title: 纠纷任务表业务逻辑处理 * @Description 纠纷任务表业务逻辑处理 * @company hugeinfo * @Time 2024-09-06 15:50:06 */ @Slf4j @Service @Transactional(rollbackFor = Exception.class) public class CaseTaskService extends ServiceImpl { @Autowired private CaseTaskMapper mapper; @Autowired private CaseSuperviseService superviseService; @Autowired private UtilsClientImpl utilsClient; @Autowired private CustClientImpl custClient; @Autowired private DispClientImpl dispClient; @Autowired private FlowInfoService flowInfoService; @Autowired private CaseInfoService caseInfoService; @Autowired private SysClientImpl sysClient; @Autowired private CaseInfoUnfoldService caseInfoUnfoldService; @Autowired private CaseWindupApplyService caseWindupApplyService; @Autowired private CaseAssistApplyService caseAssistApplyService; @Autowired private CaseAppearService caseAppearService; @Autowired private CaseReturnService caseReturnService; @Autowired private CaseEvaluateService caseEvaluateService; @Autowired private CaseAssistInfoService caseAssistInfoService; @Autowired private CaseDismissService caseDismissService; @Autowired private CasedraftInfoService casedraftInfoService; @Autowired private CasePersonService casePersonService; @Autowired private CaseFeedbackService caseFeedbackService; @Autowired private ThRmtjApplyService thRmtjApplyService; @Autowired private JudicInfoService judicInfoService; @Autowired private AnalysisService analysisService; @Autowired private CaseRepeatService caseRepeatService; @Autowired private SyHolidayService syHolidayService; @Autowired private ICaseModifyRecordService caseModifyRecordService; /** * 更新对象 * * @param entity 对象 */ public void updateCaseTask(CaseTask entity) { try { mapper.updateCaseTask(entity); } catch (Exception e) { log.error("[CaseTaskService.updateCaseTask]调用失败,异常信息:" + e, e); throw new ServiceException("CaseTaskService.updateCaseTask", e); } } /** * 条件更新对象 * * @param entity 对象 * @param terms 条件 */ public void updateCaseTaskTerms(CaseTask entity, Map terms) { try { mapper.updateCaseTaskTerms(entity, terms); } catch (Exception e) { log.error("[CaseTaskService.updateCaseTaskTerms]调用失败,异常信息:" + e, e); throw new ServiceException("CaseTaskService.updateCaseTaskTerms", e); } } /** * 根据编号物理删除 * * @param id 查询条件集合 */ public void deleteCaseTask(String id) { try { mapper.deleteCaseTask(id); } catch (Exception e) { log.error("[CaseTaskService.deleteCaseTask]调用失败,异常信息:" + e, e); throw new ServiceException("CaseTaskService.deleteCaseTask", 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 caseTask 实体对象 */ public void saveCaseTask(CaseTask caseTask) { try { Date nowDate = DateUtils.getNowDate(); // 判断是否新增 if (IdUtils.checkNewId(caseTask.getId())) { caseTask.setId(utilsClient.getNewTimeId()); caseTask.setCreateTime(nowDate); } caseTask.setUpdateTime(nowDate); this.saveOrUpdate(caseTask); } catch (Exception e) { log.error("[CaseTaskService.saveCaseTask]调用失败,异常信息:" + e, e); throw new ServiceException("CaseTaskService.saveCaseTask", e); } } /** * 根据纠纷编号查询进行中的配合组织任务 * * @param caseId * @return */ public List listAssistTasking(String caseId) { // 查询配合组织的任务 QueryWrapper caseTaskQueryWrapper = new QueryWrapper<>(); caseTaskQueryWrapper.eq("case_task_type", CaseTaskConsts.CASE_TASK_TYPE_2).eq("case_id", caseId) .eq("status", CaseTaskConsts.TASK_STATUS_1); List assistCaseTaskList = mapper.selectList(caseTaskQueryWrapper); return assistCaseTaskList; } /** * web端-任务出来页面-初始化tab和按钮 * * @param caseTaskId * @return */ public TabButtonDTO webGetTabButton(String caseTaskId, String userId) { try { // 定义tab TabButtonInfoDTO sxxq = new TabButtonInfoDTO(); sxxq.setId("sxxq"); sxxq.setName("事项详情"); TabButtonInfoDTO dslxq = new TabButtonInfoDTO(); dslxq.setId("dslxq"); dslxq.setName("事项详情"); TabButtonInfoDTO sxbl = new TabButtonInfoDTO(); sxbl.setId("sxbl"); sxbl.setName("事项办理"); TabButtonInfoDTO sqjl = new TabButtonInfoDTO(); sqjl.setId("sqjl"); sqjl.setName("申请记录"); TabButtonInfoDTO htsh = new TabButtonInfoDTO(); htsh.setId("htsh"); htsh.setName("回退审核"); TabButtonInfoDTO sbsh = new TabButtonInfoDTO(); sbsh.setId("sbsh"); sbsh.setName("上报审核"); TabButtonInfoDTO jash = new TabButtonInfoDTO(); jash.setId("jash"); jash.setName("结案审核"); TabButtonInfoDTO lhczsh = new TabButtonInfoDTO(); lhczsh.setId("lhczsh"); lhczsh.setName("联合处置申请审核"); TabButtonInfoDTO lcdb = new TabButtonInfoDTO(); lcdb.setId("lcdb"); lcdb.setName("流转督办"); TabButtonInfoDTO daxx = new TabButtonInfoDTO(); daxx.setId("daxx"); daxx.setName("档案信息"); TabButtonInfoDTO byslxq = new TabButtonInfoDTO(); byslxq.setId("byslxq"); byslxq.setName("事项详情"); TabButtonInfoDTO sfqr = new TabButtonInfoDTO(); sfqr.setId("sfqr"); sfqr.setName("司法确认"); TabButtonInfoDTO cfsx = new TabButtonInfoDTO(); cfsx.setId("cfsx"); cfsx.setName("重复事项"); // 定义button TabButtonInfoDTO tjbljl = new TabButtonInfoDTO(); tjbljl.setId("tjbljl"); tjbljl.setName("添加办理记录"); TabButtonInfoDTO lhczsq = new TabButtonInfoDTO(); lhczsq.setId("lhczsq"); lhczsq.setName("联合处置申请"); TabButtonInfoDTO jasq = new TabButtonInfoDTO(); jasq.setId("jasq"); jasq.setName("结案申请"); TabButtonInfoDTO db = new TabButtonInfoDTO(); db.setId("db"); db.setName("督办"); TabButtonInfoDTO sl = new TabButtonInfoDTO(); sl.setId("sl"); sl.setName("受理"); TabButtonInfoDTO ht = new TabButtonInfoDTO(); ht.setId("ht"); ht.setName("回退"); TabButtonInfoDTO zxsl = new TabButtonInfoDTO(); zxsl.setId("zxsl"); zxsl.setName("自行受理"); TabButtonInfoDTO jb = new TabButtonInfoDTO(); jb.setId("jb"); jb.setName("交办"); TabButtonInfoDTO sb = new TabButtonInfoDTO(); sb.setId("sb"); sb.setName("上报"); TabButtonInfoDTO bysl = new TabButtonInfoDTO(); bysl.setId("bysl"); bysl.setName("不予受理"); TabButtonInfoDTO xqcl = new TabButtonInfoDTO(); xqcl.setId("xqcl"); xqcl.setName("处理"); TabButtonInfoDTO tabcl = new TabButtonInfoDTO(); tabcl.setId("tabcl"); tabcl.setName("处理"); TabButtonInfoDTO yytj = new TabButtonInfoDTO(); yytj.setId("yytj"); yytj.setName("预约调解"); TabButtonInfoDTO xgjl = new TabButtonInfoDTO(); xgjl.setId("xgjl"); xgjl.setName("查看修改日志"); // 根据流程显示tab List tabList = new LinkedList<>(); // 根据流程显示button List buttonList = new LinkedList<>(); // 查询当前任务信息 CaseTask caseTask = mapper.selectById(caseTaskId); if (ObjectUtils.isNotEmpty(caseTask)) { // 查询纠纷信息,控制展示详情 CaseInfo caseInfo = caseInfoService.getById(caseTask.getCaseId()); if (StringUtils.isNotEmpty(caseInfo.getCanalSecond()) && "22_00003-1".equals(caseInfo.getCanalSecond())) { bysl.setName("回退"); } List caseModifyRecordGroupDTOS = caseModifyRecordService.listGroupByTimeAndUser(caseInfo.getId()); if (caseModifyRecordGroupDTOS != null && caseModifyRecordGroupDTOS.size() > 0) { xgjl.setName("查看修改日志 (" + caseModifyRecordGroupDTOS.size() + ")"); buttonList.add(xgjl); } // 受理前详情 if (CaseProcessBaseConstsEnum.CASE_PROCESS_1.getIndex() == caseInfo.getProcess() || CaseProcessBaseConstsEnum.CASE_PROCESS_2.getIndex() == caseInfo.getProcess()) { tabList.add(dslxq); } // 办理中详情 if (CaseProcessBaseConstsEnum.CASE_PROCESS_3.getIndex() == caseInfo.getProcess() || CaseProcessBaseConstsEnum.CASE_PROCESS_4.getIndex() == caseInfo.getProcess()) { tabList.add(sxxq); } // 结案归档详情 if (CaseProcessBaseConstsEnum.CASE_PROCESS_5.getIndex() == caseInfo.getProcess() || CaseProcessBaseConstsEnum.CASE_PROCESS_6.getIndex() == caseInfo.getProcess()) { tabList.add(daxx); } // 不予受理详情 if (CaseProcessBaseConstsEnum.CASE_PROCESS_7.getIndex() == caseInfo.getProcess()) { tabList.add(byslxq); } // 已完成任务 if (CaseTaskConsts.TASK_STATUS_2 == caseTask.getStatus()) { // 不予受理 if (ObjectUtils.isNotEmpty(caseTask.getHandleResult()) && CaseTaskConsts.HANDLE_RESULT_3 == caseTask.getHandleResult()) { tabList.add(sqjl); } else { // 正常任务 tabList.add(lcdb); tabList.add(sqjl); } } else { // 进行中任务 // 更新未读状态 if (caseTask.getReadStatus() == CaseTaskConsts.READ_STATUS_0) { CaseTask caseTaskPO = new CaseTask(); caseTaskPO.setId(caseTask.getId()); caseTaskPO.setReadStatus(CaseTaskConsts.READ_STATUS_1); caseTaskPO.setReadTime(new Date()); CtUserDTO loginUser = custClient.clientGetUserAll(userId); caseTaskPO.setReadUnitId(loginUser.getUnitId()); caseTaskPO.setReadUnitName(loginUser.getUnitName()); caseTaskPO.setReadUserId(loginUser.getId()); caseTaskPO.setReadUserName(loginUser.getTrueName()); mapper.updateCaseTask(caseTaskPO); } // 待分派节点 if (FlowNodeEnum.FLOW_NODE_ZJ_DFP.getIndex().equals(caseTask.getNodeId()) || FlowNodeEnum.FLOW_NODE_QJ_DFP.getIndex().equals(caseTask.getNodeId()) || FlowNodeEnum.FLOW_NODE_SJ_DFP.getIndex().equals(caseTask.getNodeId())) { tabList.add(sqjl); sl.setName("自行受理"); buttonList.add(sl); buttonList.add(jb); buttonList.add(xqcl); CtUnitDTO ctUnitDTO = custClient.getUnitByUserId(userId); if (UserBaseConsts.UNIT_GRADE_1 != ctUnitDTO.getUnitGrade()) { buttonList.add(sb); } if (bysl.getName().equals("不予受理")) { buttonList.add(bysl); } else { if (UserBaseConsts.UNIT_GRADE_2 == ctUnitDTO.getUnitGrade()) { buttonList.add(bysl); } } } // 待受理节点 if (FlowNodeEnum.FLOW_NODE_ZJ_DSL.getIndex().equals(caseTask.getNodeId()) || FlowNodeEnum.FLOW_NODE_QJ_DSL.getIndex().equals(caseTask.getNodeId()) || FlowNodeEnum.FLOW_NODE_SJ_DSL.getIndex().equals(caseTask.getNodeId())) { tabList.add(sqjl); buttonList.add(sl); buttonList.add(ht); buttonList.add(xqcl); } // 回退审核节点 if (FlowNodeEnum.FLOW_NODE_ZJ_HTSH.getIndex().equals(caseTask.getNodeId()) || FlowNodeEnum.FLOW_NODE_QJ_HTSH.getIndex().equals(caseTask.getNodeId()) || FlowNodeEnum.FLOW_NODE_SJ_HTSH.getIndex().equals(caseTask.getNodeId()) || FlowNodeEnum.FLOW_NODE_HTSH.getIndex().equals(caseTask.getNodeId())) { tabList.add(lcdb); tabList.add(sqjl); tabList.add(htsh); buttonList.add(tabcl); } // 上报审核节点 if (FlowNodeEnum.FLOW_NODE_QJ_SBSH.getIndex().equals(caseTask.getNodeId()) || FlowNodeEnum.FLOW_NODE_SJ_SBSH.getIndex().equals(caseTask.getNodeId())) { tabList.add(lcdb); tabList.add(sqjl); tabList.add(sbsh); buttonList.add(tabcl); } // 办理反馈节点 if (FlowNodeEnum.FLOW_NODE_BLFK.getIndex().equals(caseTask.getNodeId())) { if (CaseTaskConsts.CASE_TASK_TYPE_1 == caseTask.getCaseTaskType()) { tabList.add(sxbl); tabList.add(lcdb); tabList.add(sqjl); buttonList.add(tjbljl); buttonList.add(lhczsq); buttonList.add(jasq); buttonList.add(tabcl); CtUnitDTO ctUnitDTO = custClient.getUnitByUserId(userId); if (ObjectUtils.isNotEmpty(ctUnitDTO)) { if (GzRegionBaseEnum.AREA_7.getIndex().equals(ctUnitDTO.getArea())) { buttonList.add(yytj); } } } else { tabList.add(sxbl); tabList.add(lcdb); tabList.add(sqjl); buttonList.add(tjbljl); buttonList.add(tabcl); } } // 结案审核节点 if (FlowNodeEnum.FLOW_NODE_JASH.getIndex().equals(caseTask.getNodeId()) || FlowNodeEnum.FLOW_NODE_JASH_YJ.getIndex().equals(caseTask.getNodeId()) || FlowNodeEnum.FLOW_NODE_JASH_EJ.getIndex().equals(caseTask.getNodeId())) { tabList.add(lcdb); tabList.add(sqjl); tabList.add(jash); buttonList.add(tabcl); } // 当事人评价节点 if (FlowNodeEnum.FLOW_NODE_DSRPJ.getIndex().equals(caseTask.getNodeId())) { tabList.add(lcdb); tabList.add(sqjl); } // 结案归档节点 if (FlowNodeEnum.FLOW_NODE_JAGD.getIndex().equals(caseTask.getNodeId())) { tabList.add(lcdb); tabList.add(sqjl); } // 联合处置-待受理 if (FlowNodeEnum.FLOW_NODE_DSL.getIndex().equals(caseTask.getNodeId())) { tabList.add(sqjl); buttonList.add(sl); buttonList.add(ht); buttonList.add(tabcl); } } //司法确认 if (judicInfoService.isJudicEnd(caseInfo.getId())) { tabList.add(sfqr); } // 判断是否有重复案件 if (caseRepeatService.checkRepeatCase(caseInfo.getId())) { tabList.add(cfsx); } } else { // 当caseTaskId值是caseId时,查询纠纷信息 CaseInfo caseInfo = caseInfoService.getById(caseTaskId); if (ObjectUtils.isNotEmpty(caseInfo)) { // 控制展示详情 // 受理前详情 List caseModifyRecordGroupDTOS = caseModifyRecordService.listGroupByTimeAndUser(caseInfo.getId()); if (caseModifyRecordGroupDTOS != null && caseModifyRecordGroupDTOS.size() > 0) { xgjl.setName("查看修改日志 (" + caseModifyRecordGroupDTOS.size() + ")"); buttonList.add(xgjl); } if (CaseProcessBaseConstsEnum.CASE_PROCESS_1.getIndex() == caseInfo.getProcess() || CaseProcessBaseConstsEnum.CASE_PROCESS_2.getIndex() == caseInfo.getProcess()) { tabList.add(dslxq); } // 办理中详情 if (CaseProcessBaseConstsEnum.CASE_PROCESS_3.getIndex() == caseInfo.getProcess() || CaseProcessBaseConstsEnum.CASE_PROCESS_4.getIndex() == caseInfo.getProcess()) { tabList.add(sxxq); } // 结案归档详情 if (CaseProcessBaseConstsEnum.CASE_PROCESS_5.getIndex() == caseInfo.getProcess() || CaseProcessBaseConstsEnum.CASE_PROCESS_6.getIndex() == caseInfo.getProcess()) { tabList.add(daxx); } // 不予受理详情 if (CaseProcessBaseConstsEnum.CASE_PROCESS_7.getIndex() == caseInfo.getProcess()) { tabList.add(byslxq); } tabList.add(lcdb); tabList.add(sqjl); //司法确认 if (judicInfoService.isJudicEnd(caseInfo.getId())) { tabList.add(sfqr); } // 判断是否有重复案件 if (caseRepeatService.checkRepeatCase(caseInfo.getId())) { tabList.add(cfsx); } } else { // 当caseTaskId值是caseAssistApplyId时,是联合处置审核,查询联合处置申请信息 CaseAssistApply caseAssistApply = caseAssistApplyService.getById(caseTaskId); if (ObjectUtils.isNotEmpty(caseAssistApply)) { tabList.add(sxxq); tabList.add(lhczsh); tabList.add(sqjl); // 判断是否有重复案件 if (caseRepeatService.checkRepeatCase(caseAssistApply.getCaseId())) { tabList.add(cfsx); } List caseModifyRecordGroupDTOS = caseModifyRecordService.listGroupByTimeAndUser(caseAssistApply.getCaseId()); if (caseModifyRecordGroupDTOS != null && caseModifyRecordGroupDTOS.size() > 0) { xgjl.setName("查看修改日志 (" + caseModifyRecordGroupDTOS.size() + ")"); buttonList.add(xgjl); } } else { tabList.add(daxx); tabList.add(lcdb); tabList.add(sqjl); // 司法确认 JudicInfoDTO judicInfo = judicInfoService.getJudicInfo(caseTaskId); if (judicInfo != null) { //司法确认 if (judicInfoService.isJudicEnd(judicInfo.getCaseId())) { tabList.add(sfqr); } // 判断是否有重复案件 if (caseRepeatService.checkRepeatCase(judicInfo.getCaseId())) { tabList.add(cfsx); } List caseModifyRecordGroupDTOS = caseModifyRecordService.listGroupByTimeAndUser(judicInfo.getCaseId()); if (caseModifyRecordGroupDTOS != null && caseModifyRecordGroupDTOS.size() > 0) { xgjl.setName("查看修改日志 (" + caseModifyRecordGroupDTOS.size() + ")"); buttonList.add(xgjl); } } } } } // 封装数据 TabButtonDTO tabButtonDTO = new TabButtonDTO(); tabButtonDTO.setTabList(tabList); tabButtonDTO.setButtonList(buttonList); return tabButtonDTO; } catch (Exception e) { log.error("[CaseTaskService.webGetTabButton]调用失败,异常信息:" + e, e); throw new ServiceException("CaseTaskService.webGetTabButton", e); } } /** * web端-查询流程进度 * * @param caseId 纠纷编号 * @return */ public Map webListCaseFlow(String caseId, String userId) { try { // 流程标签展示,1:正常流转/审核同意(√),2:回退/审核不同意(←),3:上报申请(↑),4:不予受理(x) int SHOW_TASK_TYPE_1 = 1; int SHOW_TASK_TYPE_2 = 2; int SHOW_TASK_TYPE_3 = 3; int SHOW_TASK_TYPE_4 = 4; Map result = Maps.newHashMap(); LinkedList handleCaseFlowList = new LinkedList<>(); CaseInfo caseInfo = caseInfoService.getById(caseId); if (ObjectUtils.isNotEmpty(caseInfo)) { // 首节点 WebCaseFlowDTO lfdj = new WebCaseFlowDTO(); if (CaseBaseConstsEnum.CASE_CANAL_1.getIndex().equals(caseInfo.getCanal())) { lfdj.setNodeShowName("来访登记"); lfdj.setHandleUserName(caseInfo.getInputUserName()); lfdj.setHandleUnitName(caseInfo.getInputUnitName()); } if (CaseBaseConstsEnum.CASE_CANAL_2.getIndex().equals(caseInfo.getCanal())) { lfdj.setNodeShowName(caseInfo.getCanalName()); lfdj.setHandleUnitName(caseInfo.getInputUserName() + "(当事人)"); } if (CaseBaseConstsEnum.CASE_CANAL_3.getIndex().equals(caseInfo.getCanal())) { lfdj.setNodeShowName("自行排查"); lfdj.setHandleUserName(caseInfo.getInputUserName()); lfdj.setHandleUnitName(caseInfo.getInputUnitName()); } if (CaseBaseConstsEnum.CASE_CANAL_4.getIndex().equals(caseInfo.getCanal())) { lfdj.setNodeShowName("协同推送"); lfdj.setHandleUserName("系统自动获取"); lfdj.setHandleUnitName(caseInfo.getCanalSecondName()); } lfdj.setTaskType(SHOW_TASK_TYPE_1); lfdj.setStatus(CaseTaskConsts.TASK_STATUS_2); lfdj.setHandleTime(caseInfo.getCreateTime()); handleCaseFlowList.add(lfdj); // 查询承办组织任务 QueryWrapper caseTaskQueryWrapper = new QueryWrapper<>(); caseTaskQueryWrapper.eq("case_id", caseId).eq("case_task_type", CaseTaskConsts.CASE_TASK_TYPE_1).orderByAsc("id"); List handleCaseTaskList = mapper.selectList(caseTaskQueryWrapper); for (CaseTask caseTask : handleCaseTaskList) { // 已结束节点 if (CaseTaskConsts.TASK_STATUS_2 == caseTask.getStatus()) { // 普通节点 WebCaseFlowDTO webCaseFlowDTO = new WebCaseFlowDTO(); webCaseFlowDTO.setTaskType(SHOW_TASK_TYPE_1); webCaseFlowDTO.setNodeShowName(caseTask.getNodeShowName()); webCaseFlowDTO.setHandleTime(caseTask.getHandleTime()); webCaseFlowDTO.setStatus(caseTask.getStatus()); webCaseFlowDTO.setHandleNotes(caseTask.getHandleIllust()); // 当事人评价/结案归档节点,特殊处理 if (caseTask.getNodeId().equals(FlowNodeEnum.FLOW_NODE_DSRPJ.getIndex())) { webCaseFlowDTO.setHandleUserName(null); webCaseFlowDTO.setHandleUnitName(caseTask.getHandleUserName()); } else if (caseTask.getNodeId().equals(FlowNodeEnum.FLOW_NODE_JAGD.getIndex())) { webCaseFlowDTO.setHandleUserName(null); webCaseFlowDTO.setHandleUnitName("系统自动"); } else { webCaseFlowDTO.setHandleUserName(caseTask.getHandleUserName()); webCaseFlowDTO.setHandleUnitName(caseTask.getHandleUnitName()); } // 回退申请节点 if (CaseTaskConsts.HANDLE_RESULT_4 == caseTask.getHandleResult()) { webCaseFlowDTO.setTaskType(SHOW_TASK_TYPE_2); webCaseFlowDTO.setNodeShowName("事件回退"); CaseReturn caseReturn = caseReturnService.getNewByCaseId(caseId, caseTask.getCaseTaskType()); if (StringUtils.isNotEmpty(caseReturn.getReturnContent())) { webCaseFlowDTO.setHandleNotes("回退理由:" + caseReturn.getReturnContent()); } else { webCaseFlowDTO.setHandleNotes("回退理由:-"); } } // 上报申请节点 if (CaseTaskConsts.HANDLE_RESULT_5 == caseTask.getHandleResult()) { webCaseFlowDTO.setTaskType(SHOW_TASK_TYPE_3); 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_HTSH.getIndex()) || caseTask.getNodeId().equals(FlowNodeEnum.FLOW_NODE_JASH.getIndex()) || caseTask.getNodeId().equals(FlowNodeEnum.FLOW_NODE_JASH_YJ.getIndex()) || caseTask.getNodeId().equals(FlowNodeEnum.FLOW_NODE_JASH_EJ.getIndex()) || caseTask.getNodeId().equals(FlowNodeEnum.FLOW_NODE_ZJ_HTSH.getIndex()) || caseTask.getNodeId().equals(FlowNodeEnum.FLOW_NODE_QJ_SBSH.getIndex()) || caseTask.getNodeId().equals(FlowNodeEnum.FLOW_NODE_QJ_HTSH.getIndex()) || caseTask.getNodeId().equals(FlowNodeEnum.FLOW_NODE_SJ_SBSH.getIndex()) || caseTask.getNodeId().equals(FlowNodeEnum.FLOW_NODE_SJ_HTSH.getIndex())) { // 审核不通过 if (CaseTaskConsts.HANDLE_RESULT_2 == caseTask.getHandleResult()) { webCaseFlowDTO.setTaskType(SHOW_TASK_TYPE_2); webCaseFlowDTO.setAuditResult(AuditBaseConstsEnum.AUDIT_RESULT_2.getIndex()); webCaseFlowDTO.setAuditResultName(AuditBaseConstsEnum.AUDIT_RESULT_2.getDes()); } 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())) { CaseInfoUnfold caseInfoUnfold = caseInfoUnfoldService.getById(caseTask.getCaseId()); if (ObjectUtils.isNotEmpty(caseInfoUnfold)) { webCaseFlowDTO.setMediResult(caseInfoUnfold.getMediResult()); webCaseFlowDTO.setMediResultName(caseInfoUnfold.getMediResultName()); // 临时加上 webCaseFlowDTO.setHandleNotes("化解结果:" + webCaseFlowDTO.getMediResultName()); } } // 不予受理 if (CaseTaskConsts.HANDLE_RESULT_3 == caseTask.getHandleResult()) { webCaseFlowDTO.setTaskType(SHOW_TASK_TYPE_4); webCaseFlowDTO.setNodeShowName("不予受理"); webCaseFlowDTO.setHandleNotes(null); } // 查询节点附件 Map fileTerms = Maps.newHashMap(); fileTerms.put("mainId", caseId); if (CaseTaskConsts.HANDLE_RESULT_3 == caseTask.getHandleResult()) { // 不予受理节点 fileTerms.put("ownerType", FileOwnerTypeBaseEnum.OWNER_TYPE_515.getIndex()); } else if (CaseTaskConsts.HANDLE_RESULT_4 == caseTask.getHandleResult()) { // 回退申请节点 fileTerms.put("ownerType", FileOwnerTypeBaseEnum.OWNER_TYPE_510.getIndex()); } else if (CaseTaskConsts.HANDLE_RESULT_5 == caseTask.getHandleResult()) { // 上报申请节点 fileTerms.put("ownerType", FileOwnerTypeBaseEnum.OWNER_TYPE_512.getIndex()); } else { // 其他正常节点 if (caseTask.getNodeId().equals(FlowNodeEnum.FLOW_NODE_HTSH.getIndex()) || 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())) { // 回退审核 fileTerms.put("ownerType", FileOwnerTypeBaseEnum.OWNER_TYPE_511.getIndex()); } else if (caseTask.getNodeId().equals(FlowNodeEnum.FLOW_NODE_JASH.getIndex()) || caseTask.getNodeId().equals(FlowNodeEnum.FLOW_NODE_JASH_YJ.getIndex()) || caseTask.getNodeId().equals(FlowNodeEnum.FLOW_NODE_JASH_EJ.getIndex())) { // 结案审核 fileTerms.put("ownerType", FileOwnerTypeBaseEnum.OWNER_TYPE_514.getIndex()); } else if (caseTask.getNodeId().equals(FlowNodeEnum.FLOW_NODE_QJ_SBSH.getIndex()) || caseTask.getNodeId().equals(FlowNodeEnum.FLOW_NODE_SJ_SBSH.getIndex())) { // 上报 fileTerms.put("ownerType", FileOwnerTypeBaseEnum.OWNER_TYPE_513.getIndex()); } else if (caseTask.getNodeId().equals(FlowNodeEnum.FLOW_NODE_BLFK.getIndex())) { // 办理反馈 } else { fileTerms.put("ownerId", caseTask.getId()); fileTerms.put("ownerType", FileOwnerTypeBaseEnum.OWNER_TYPE_501.getIndex()); } } fileTerms.put("ownerId", ""); List fileInfoList = sysClient.listFileInfoByTerms(fileTerms); webCaseFlowDTO.setFileInfoList(fileInfoList); 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()) || caseTask.getNodeId().equals(FlowNodeEnum.FLOW_NODE_JAGD.getIndex())) { webCaseFlowDTO.setProcessName(caseTask.getNodeShowName()); webCaseFlowDTO.setStatusName("待评价"); } else { webCaseFlowDTO.setProcessName(caseTask.getCandeUnitName()); } // 审核节点 if (caseTask.getNodeId().equals(FlowNodeEnum.FLOW_NODE_HTSH.getIndex()) || caseTask.getNodeId().equals(FlowNodeEnum.FLOW_NODE_JASH.getIndex()) || caseTask.getNodeId().equals(FlowNodeEnum.FLOW_NODE_JASH_YJ.getIndex()) || caseTask.getNodeId().equals(FlowNodeEnum.FLOW_NODE_JASH_EJ.getIndex()) || caseTask.getNodeId().equals(FlowNodeEnum.FLOW_NODE_ZJ_HTSH.getIndex()) || caseTask.getNodeId().equals(FlowNodeEnum.FLOW_NODE_QJ_SBSH.getIndex()) || caseTask.getNodeId().equals(FlowNodeEnum.FLOW_NODE_QJ_HTSH.getIndex()) || caseTask.getNodeId().equals(FlowNodeEnum.FLOW_NODE_SJ_SBSH.getIndex()) || caseTask.getNodeId().equals(FlowNodeEnum.FLOW_NODE_SJ_HTSH.getIndex())) { webCaseFlowDTO.setStatusName("审核中"); } // 分派节点 if (caseTask.getNodeId().equals(FlowNodeEnum.FLOW_NODE_DFP.getIndex()) || caseTask.getNodeId().equals(FlowNodeEnum.FLOW_NODE_ZJ_DFP.getIndex()) || caseTask.getNodeId().equals(FlowNodeEnum.FLOW_NODE_QJ_DFP.getIndex()) || caseTask.getNodeId().equals(FlowNodeEnum.FLOW_NODE_SJ_DFP.getIndex())) { webCaseFlowDTO.setStatusName("待受理"); } // 受理节点 if (caseTask.getNodeId().equals(FlowNodeEnum.FLOW_NODE_DSL.getIndex()) || 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())) { webCaseFlowDTO.setStatusName("待受理"); webCaseFlowDTO.setReadStatus(caseTask.getReadStatus()); webCaseFlowDTO.setReadTime(caseTask.getReadTime()); } // 办理节点 if (caseTask.getNodeId().equals(FlowNodeEnum.FLOW_NODE_BLFK.getIndex()) || caseTask.getNodeId().equals(FlowNodeEnum.FLOW_NODE_JASQ.getIndex())) { webCaseFlowDTO.setStatusName("办理中"); } handleCaseFlowList.add(webCaseFlowDTO); } } result.put("handleCaseFlowList", handleCaseFlowList); // 查询配合组织流程 List caseAssistInfoList = caseAssistInfoService.listByCaseId(caseId); if (CollectionUtils.isNotEmpty(caseAssistInfoList)) { LinkedList assistCaseFlowList = new LinkedList<>(); int i = 0; for (CaseAssistInfo caseAssistInfo : caseAssistInfoList) { if (CaseTaskConsts.ASSIST_STATUS_0 == caseAssistInfo.getAssistStatus()) { WebAssistCaseFlowDTO webAssistCaseFlowDTO = new WebAssistCaseFlowDTO(); webAssistCaseFlowDTO.setUnitId(caseAssistInfo.getAssistUnitId()); webAssistCaseFlowDTO.setUnitName(caseAssistInfo.getAssistUnitName()); LinkedList caseFlowList = new LinkedList<>(); // 首节点 WebCaseFlowDTO lfdjAssist = new WebCaseFlowDTO(); if (CaseBaseConstsEnum.CASE_CANAL_1.getIndex().equals(caseInfo.getCanal())) { lfdjAssist.setNodeShowName("来访登记"); lfdjAssist.setHandleUserName(caseInfo.getInputUserName()); lfdjAssist.setHandleUnitName(caseInfo.getInputUnitName()); } else { lfdjAssist.setNodeShowName(caseInfo.getCanalName()); lfdjAssist.setHandleUnitName(caseInfo.getInputUserName() + "(当事人)"); } lfdjAssist.setTaskType(SHOW_TASK_TYPE_1); lfdjAssist.setStatus(CaseTaskConsts.TASK_STATUS_2); lfdjAssist.setHandleTime(caseInfo.getCreateTime()); caseFlowList.add(lfdjAssist); // 查询其他节点 caseTaskQueryWrapper.clear(); caseTaskQueryWrapper.eq("case_id", caseId).eq("process_instance_id", caseAssistInfo.getProcessInstanceId()) .eq("case_task_type", CaseTaskConsts.CASE_TASK_TYPE_2).orderByAsc("id"); List assistCaseTaskList = mapper.selectList(caseTaskQueryWrapper); for (CaseTask caseTask : assistCaseTaskList) { // 已结束节点 if (CaseTaskConsts.TASK_STATUS_2 == caseTask.getStatus()) { // 普通节点 WebCaseFlowDTO webCaseFlowDTO = new WebCaseFlowDTO(); webCaseFlowDTO.setTaskType(SHOW_TASK_TYPE_1); webCaseFlowDTO.setNodeShowName(caseTask.getNodeShowName()); webCaseFlowDTO.setHandleTime(caseTask.getHandleTime()); webCaseFlowDTO.setStatus(caseTask.getStatus()); webCaseFlowDTO.setHandleNotes(caseTask.getHandleIllust()); // 当事人评价/结案归档节点,特殊处理 if (caseTask.getNodeId().equals(FlowNodeEnum.FLOW_NODE_DSRPJ.getIndex())) { webCaseFlowDTO.setHandleUserName(null); webCaseFlowDTO.setHandleUnitName(caseTask.getHandleUserName()); } else if (caseTask.getNodeId().equals(FlowNodeEnum.FLOW_NODE_JAGD.getIndex())) { webCaseFlowDTO.setHandleUserName(null); webCaseFlowDTO.setHandleUnitName("系统自动"); } else { webCaseFlowDTO.setHandleUserName(caseTask.getHandleUserName()); webCaseFlowDTO.setHandleUnitName(caseTask.getHandleUnitName()); } // 回退申请节点 if (CaseTaskConsts.HANDLE_RESULT_4 == caseTask.getHandleResult()) { webCaseFlowDTO.setTaskType(SHOW_TASK_TYPE_2); webCaseFlowDTO.setNodeShowName("事件回退"); CaseReturn caseReturn = caseReturnService.getNewByCaseId(caseId, caseTask.getCaseTaskType()); if (StringUtils.isNotEmpty(caseReturn.getReturnContent())) { webCaseFlowDTO.setHandleNotes("回退理由:" + caseReturn.getReturnContent()); } else { webCaseFlowDTO.setHandleNotes("回退理由:-"); } } // 上报申请节点 if (CaseTaskConsts.HANDLE_RESULT_5 == caseTask.getHandleResult()) { webCaseFlowDTO.setTaskType(SHOW_TASK_TYPE_3); 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_HTSH.getIndex()) || caseTask.getNodeId().equals(FlowNodeEnum.FLOW_NODE_JASH.getIndex()) || caseTask.getNodeId().equals(FlowNodeEnum.FLOW_NODE_JASH_YJ.getIndex()) || caseTask.getNodeId().equals(FlowNodeEnum.FLOW_NODE_JASH_EJ.getIndex()) || caseTask.getNodeId().equals(FlowNodeEnum.FLOW_NODE_ZJ_HTSH.getIndex()) || caseTask.getNodeId().equals(FlowNodeEnum.FLOW_NODE_QJ_SBSH.getIndex()) || caseTask.getNodeId().equals(FlowNodeEnum.FLOW_NODE_QJ_HTSH.getIndex()) || caseTask.getNodeId().equals(FlowNodeEnum.FLOW_NODE_SJ_SBSH.getIndex()) || caseTask.getNodeId().equals(FlowNodeEnum.FLOW_NODE_SJ_HTSH.getIndex())) { // 审核不通过 if (CaseTaskConsts.HANDLE_RESULT_2 == caseTask.getHandleResult()) { webCaseFlowDTO.setTaskType(SHOW_TASK_TYPE_2); webCaseFlowDTO.setAuditResult(AuditBaseConstsEnum.AUDIT_RESULT_2.getIndex()); webCaseFlowDTO.setAuditResultName(AuditBaseConstsEnum.AUDIT_RESULT_2.getDes()); } 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())) { CaseInfoUnfold caseInfoUnfold = caseInfoUnfoldService.getById(caseTask.getCaseId()); if (ObjectUtils.isNotEmpty(caseInfoUnfold)) { webCaseFlowDTO.setMediResult(caseInfoUnfold.getMediResult()); webCaseFlowDTO.setMediResultName(caseInfoUnfold.getMediResultName()); // 临时加上 webCaseFlowDTO.setHandleNotes("化解结果:" + webCaseFlowDTO.getMediResultName()); } } // 查询节点附件 Map fileTerms = Maps.newHashMap(); fileTerms.put("mainId", caseId); if (CaseTaskConsts.HANDLE_RESULT_3 == caseTask.getHandleResult()) { // 不予受理节点 fileTerms.put("ownerType", FileOwnerTypeBaseEnum.OWNER_TYPE_515.getIndex()); } else if (CaseTaskConsts.HANDLE_RESULT_4 == caseTask.getHandleResult()) { // 回退申请节点 fileTerms.put("ownerType", FileOwnerTypeBaseEnum.OWNER_TYPE_510.getIndex()); } else if (CaseTaskConsts.HANDLE_RESULT_5 == caseTask.getHandleResult()) { // 上报申请节点 fileTerms.put("ownerType", FileOwnerTypeBaseEnum.OWNER_TYPE_512.getIndex()); } else { // 其他正常节点 if (caseTask.getNodeId().equals(FlowNodeEnum.FLOW_NODE_HTSH.getIndex()) || 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())) { // 回退审核 fileTerms.put("ownerType", FileOwnerTypeBaseEnum.OWNER_TYPE_511.getIndex()); } else if (caseTask.getNodeId().equals(FlowNodeEnum.FLOW_NODE_JASH.getIndex()) || caseTask.getNodeId().equals(FlowNodeEnum.FLOW_NODE_JASH_YJ.getIndex()) || caseTask.getNodeId().equals(FlowNodeEnum.FLOW_NODE_JASH_EJ.getIndex())) { // 结案审核 fileTerms.put("ownerType", FileOwnerTypeBaseEnum.OWNER_TYPE_514.getIndex()); } else if (caseTask.getNodeId().equals(FlowNodeEnum.FLOW_NODE_QJ_SBSH.getIndex()) || caseTask.getNodeId().equals(FlowNodeEnum.FLOW_NODE_SJ_SBSH.getIndex())) { // 上报 fileTerms.put("ownerType", FileOwnerTypeBaseEnum.OWNER_TYPE_513.getIndex()); } else if (caseTask.getNodeId().equals(FlowNodeEnum.FLOW_NODE_BLFK.getIndex())) { // 办理反馈 } else { fileTerms.put("ownerId", caseTask.getId()); fileTerms.put("ownerType", FileOwnerTypeBaseEnum.OWNER_TYPE_501.getIndex()); } } fileTerms.put("ownerId", ""); List fileInfoList = sysClient.listFileInfoByTerms(fileTerms); webCaseFlowDTO.setFileInfoList(fileInfoList); caseFlowList.add(webCaseFlowDTO); } else { // 进行中的节点 // 正常节点 WebCaseFlowDTO webCaseFlowDTO = new WebCaseFlowDTO(); webCaseFlowDTO.setNodeShowName(caseTask.getNodeShowName()); webCaseFlowDTO.setStatus(caseTask.getStatus()); // 当事人评价节点,特殊处理 if (caseTask.getNodeId().equals(FlowNodeEnum.FLOW_NODE_DSRPJ.getIndex()) || caseTask.getNodeId().equals(FlowNodeEnum.FLOW_NODE_JAGD.getIndex())) { webCaseFlowDTO.setProcessName(caseTask.getNodeShowName()); webCaseFlowDTO.setStatusName("待评价"); } else { webCaseFlowDTO.setProcessName(caseTask.getCandeUnitName()); } // 审核节点 if (caseTask.getNodeId().equals(FlowNodeEnum.FLOW_NODE_HTSH.getIndex()) || caseTask.getNodeId().equals(FlowNodeEnum.FLOW_NODE_JASH.getIndex()) || caseTask.getNodeId().equals(FlowNodeEnum.FLOW_NODE_JASH_YJ.getIndex()) || caseTask.getNodeId().equals(FlowNodeEnum.FLOW_NODE_JASH_EJ.getIndex()) || caseTask.getNodeId().equals(FlowNodeEnum.FLOW_NODE_ZJ_HTSH.getIndex()) || caseTask.getNodeId().equals(FlowNodeEnum.FLOW_NODE_QJ_SBSH.getIndex()) || caseTask.getNodeId().equals(FlowNodeEnum.FLOW_NODE_QJ_HTSH.getIndex()) || caseTask.getNodeId().equals(FlowNodeEnum.FLOW_NODE_SJ_SBSH.getIndex()) || caseTask.getNodeId().equals(FlowNodeEnum.FLOW_NODE_SJ_HTSH.getIndex())) { webCaseFlowDTO.setStatusName("审核中"); } // 分派节点 if (caseTask.getNodeId().equals(FlowNodeEnum.FLOW_NODE_DFP.getIndex()) || caseTask.getNodeId().equals(FlowNodeEnum.FLOW_NODE_ZJ_DFP.getIndex()) || caseTask.getNodeId().equals(FlowNodeEnum.FLOW_NODE_QJ_DFP.getIndex()) || caseTask.getNodeId().equals(FlowNodeEnum.FLOW_NODE_SJ_DFP.getIndex())) { webCaseFlowDTO.setStatusName("待受理"); } // 受理节点 if (caseTask.getNodeId().equals(FlowNodeEnum.FLOW_NODE_DSL.getIndex()) || 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())) { webCaseFlowDTO.setStatusName("待受理"); webCaseFlowDTO.setReadStatus(caseTask.getReadStatus()); webCaseFlowDTO.setReadTime(caseTask.getReadTime()); } // 办理节点 if (caseTask.getNodeId().equals(FlowNodeEnum.FLOW_NODE_BLFK.getIndex()) || caseTask.getNodeId().equals(FlowNodeEnum.FLOW_NODE_JASQ.getIndex())) { webCaseFlowDTO.setStatusName("办理中"); } caseFlowList.add(webCaseFlowDTO); } } webAssistCaseFlowDTO.setCaseFlowList(caseFlowList); assistCaseFlowList.add(webAssistCaseFlowDTO); } else { WebAssistCaseFlowDTO webAssistCaseFlowDTO = new WebAssistCaseFlowDTO(); // i防止提供给前端的unitId重复 i++; webAssistCaseFlowDTO.setUnitId(caseAssistInfo.getAssistUnitId() + "_" + i); webAssistCaseFlowDTO.setUnitName(caseAssistInfo.getAssistUnitName() + "(已回退)"); LinkedList caseFlowList = new LinkedList<>(); webAssistCaseFlowDTO.setCaseFlowList(caseFlowList); assistCaseFlowList.add(webAssistCaseFlowDTO); } } result.put("assistCaseFlowList", assistCaseFlowList); } } return result; } catch (Exception e) { log.error("[CaseTaskService.webGetTabButton]调用失败,异常信息:" + e, e); throw new ServiceException("CaseTaskService.webGetTabButton", e); } } /** * 获取首页统计数量 * * @param userId 用户编号 * @return long */ public FrontPageCountDTO getCountList(String userId) { try { CtUserDTO loginUser = custClient.clientGetUserAll(userId); CtUnitDTO ctUnitDTO = custClient.getUnitByUserId(userId); Map terms = new HashMap<>(); terms.put("candeUnitId", loginUser.getUnitId()); terms.put("candeDeptId", loginUser.getDeptId()); FrontPageCountDTO frontPageCountDTO = mapper.countTaskList(terms); long supervise = superviseService.countCaseSuperviseList(0, loginUser.getUnitId()); frontPageCountDTO.setSupervise(supervise); long countApplyReview = caseWindupApplyService.countApplyReview(loginUser.getUnitId()); long countReturnReview = caseReturnService.countReturnReview(loginUser.getUnitId()); long countAppearReview = caseAppearService.countAppearReview(loginUser.getUnitId()); long countAssistReview = caseAssistApplyService.countAssistReview(loginUser.getUnitId()); frontPageCountDTO.setReturnReview(countReturnReview); frontPageCountDTO.setAppearReview(countAppearReview); frontPageCountDTO.setWindupReview(countApplyReview); frontPageCountDTO.setAssistReview(countAssistReview); frontPageCountDTO.setWaitReview(countApplyReview + countReturnReview + countAppearReview + countAssistReview); //办理中 terms.put("caseTaskType", 1); long myProcessing = mapper.countMyTaskBlz(terms); terms.put("caseTaskType", 2); long myAssist = mapper.countMyTaskBlz(terms); terms.put("caseTaskType", 1); terms.put("applyUnitId", loginUser.getUnitId()); long myWindupApply = caseWindupApplyService.countMyTaskJasq(terms); terms.put("caseTaskType", 2); terms.remove("applyUnitId"); terms.put("assistUnitId", loginUser.getUnitId()); long myWindupAssist = caseWindupApplyService.countMyTaskJasq(terms); frontPageCountDTO.setMyProcessing(myProcessing); frontPageCountDTO.setMyAssist(myAssist); frontPageCountDTO.setMyWindupApply(myWindupApply); frontPageCountDTO.setMyWindupAssist(myWindupAssist); frontPageCountDTO.setMyProcessingCount(myProcessing + myAssist); frontPageCountDTO.setMyWindupApplyCount(myWindupApply + myWindupAssist); frontPageCountDTO.setProcessing(myProcessing + myAssist + myWindupApply + myWindupAssist); terms.remove("assistUnitId"); // 已办 Map ybTerms = new HashMap<>(); ybTerms.put("handleUnitId", loginUser.getUnitId()); ybTerms.put("nodeIdList", Arrays.asList("DSL", "ZJ_DSL", "QJ_DSL", "SJ_DSL", "BLFK", "JASQ", "JASH", "JASH_YJ", "JASH_EJ", "DSRPJ", "JAGD" , "DFP", "ZJ_DFP", "QJ_DFP", "SJ_DFP" , "QJ_S", "SJ_SBSH", "QJ_SBSH" , "HTSH", "ZJ_HTSH", "QJ_HTSH", "SJ_HTSH")); long alreadyDone = mapper.countMyTaskYb(ybTerms); frontPageCountDTO.setAlreadyDone(alreadyDone); // 已办 Map cgTerms = new HashMap<>(); cgTerms.put("inputUnitId", loginUser.getUnitId()); long caseDraft = casedraftInfoService.countTerms(cgTerms); frontPageCountDTO.setCaseDraft(caseDraft); //极端 long extremeCase = caseInfoUnfoldService.countExtremeCase(ctUnitDTO); frontPageCountDTO.setIsRisk(extremeCase); //超时数量 long timeout = analysisService.homeTimeoutTask(ctUnitDTO); frontPageCountDTO.setTimeOut(timeout); return frontPageCountDTO; } catch (Exception e) { log.error("[CaseTaskService.getCountList]调用失败,异常信息:" + e, e); throw new ServiceException("CaseTaskService.getCountList", e); } } /** * 首页-查询待办任务-待/已分派 * * @param page 分页对象 * @param terms 条件 * @return Page */ public Page pageMyTaskFp(PageRequest page, Map terms) { try { long total = mapper.countMyTaskFp(terms); List frontPageListFPDTOList = mapper.pageMyTaskFp(page, terms); return new PageImpl(frontPageListFPDTOList, page, total); } catch (Exception e) { log.error("[CaseTaskService.pageMyTaskFp]调用失败,异常信息:" + e, e); throw new ServiceException("CaseTaskService.pageMyTaskFp", e); } } /** * 首页-查询待办任务-待/已签收 * * @param page 分页对象 * @param terms 条件 * @return Page */ public Page pageMyTaskQs(PageRequest page, Map terms) { try { long total = mapper.countMyTaskQs(terms); List frontPageListDTOList = mapper.pageMyTaskQs(page, terms); return new PageImpl(frontPageListDTOList, page, total); } catch (Exception e) { log.error("[CaseTaskService.pageMyTaskQs]调用失败,异常信息:" + e, e); throw new ServiceException("CaseTaskService.pageMyTaskQs", e); } } /** * 首页-查询待办任务-待/已受理 * * @param page 分页对象 * @param terms 条件 * @return Page */ public Page pageMyTaskSl(PageRequest page, Map terms) { try { long total = mapper.countMyTaskSl(terms); List frontPageListDTOList = mapper.pageMyTaskSl(page, terms); return new PageImpl(frontPageListDTOList, page, total); } catch (Exception e) { log.error("[CaseTaskService.pageMyTaskSl]调用失败,异常信息:" + e, e); throw new ServiceException("CaseTaskService.pageMyTaskSl", e); } } /** * 首页-查询待办任务-办理中 * * @param page 分页对象 * @param terms 条件 * @return Page */ public Page pageMyTaskBlz(PageRequest page, Map terms) { try { long total = mapper.countMyTaskBlz(terms); List frontPageListBLZDTOList = mapper.pageMyTaskBlz(page, terms); Date now = DateUtils.getNowDate(); for (FrontPageListBLZDTO frontPageListBLZDTO : frontPageListBLZDTOList) { long milliseconds1 = frontPageListBLZDTO.getTurnaroundTime().getTime(); long milliseconds2 = now.getTime(); long diff = milliseconds2 - milliseconds1; long daysBetween = diff / (24 * 60 * 60 * 1000); frontPageListBLZDTO.setProcessingDays(daysBetween); } return new PageImpl(frontPageListBLZDTOList, page, total); } catch (Exception e) { log.error("[CaseTaskService.pageMyTaskBlz]调用失败,异常信息:" + e, e); throw new ServiceException("CaseTaskService.pageMyTaskBlz", e); } } /** * 首页-查询待办任务-结案申请 * * @param page 分页对象 * @param terms 条件 * @return Page */ public Page pageMyTaskJasq(PageRequest page, Map terms) { try { long total = caseWindupApplyService.countMyTaskJasq(terms); List frontPageListJADTOList = caseWindupApplyService.listMyTaskJasq(page, terms); return new PageImpl(frontPageListJADTOList, page, total); } catch (Exception e) { log.error("[CaseTaskService.pageMyTaskJasq]调用失败,异常信息:" + e, e); throw new ServiceException("CaseTaskService.pageMyTaskJasq", e); } } /** * 首页-查询待办任务-结案申请 * * @param page 分页对象 * @param terms 条件 * @return Page */ public Page pageMyTaskYja(PageRequest page, Map terms) { try { long total = caseWindupApplyService.countMyTaskYja(terms); List frontPageListJADTOList = caseWindupApplyService.listMyTaskYja(page, terms); return new PageImpl(frontPageListJADTOList, page, total); } catch (Exception e) { log.error("[CaseTaskService.pageMyTaskYja]调用失败,异常信息:" + e, e); throw new ServiceException("CaseTaskService.pageMyTaskYja", e); } } /** * 首页-待审核分页查询 * * @param page 分页对象 * @param terms 条件 * @return Page */ public Page pageMyTaskSh(PageRequest page, int type, Map terms) { try { long total = 0; List frontPageListDTOList = new ArrayList<>(); if (1 == type) { total = caseReturnService.countMyTaskReturnReview(terms); frontPageListDTOList = caseReturnService.pageMyTaskReturnReview(page, terms); } else if (2 == type) { total = caseAppearService.countMyTaskAppearReview(terms); frontPageListDTOList = caseAppearService.pageMyTaskAppearReview(page, terms); } else if (3 == type) { total = caseWindupApplyService.countMyTaskApplyReview(terms); frontPageListDTOList = caseWindupApplyService.listMyTaskApplyReview(page, terms); } else if (4 == type) { total = caseAssistApplyService.countMyTaskAssistReview(terms); frontPageListDTOList = caseAssistApplyService.pageMyTaskAssistReview(page, terms); } return new PageImpl(frontPageListDTOList, page, total); } catch (Exception e) { log.error("[CaseTaskService.pageMyTaskQs]调用失败,异常信息:" + e, e); throw new ServiceException("CaseTaskService.pageMyTaskQs", e); } } /** * 首页-待审核分页查询 * * @param page 分页对象 * @param terms 条件 * @return Page */ public Page pageMyTaskShWSQD(PageRequest page, Map terms) { try { long total = mapper.countMyTaskShWSQD(terms); List frontPageListWSQDDTOList = mapper.pageMyTaskShWSQD(page, terms); return new PageImpl(frontPageListWSQDDTOList, page, total); } catch (Exception e) { log.error("[CaseTaskService.pageMyTaskQs]调用失败,异常信息:" + e, e); throw new ServiceException("CaseTaskService.pageMyTaskQs", e); } } /** * web端-申请记录 * * @param caseId 事项编号 * @return Page */ public List listMyApplyRecord(String caseId) { try { QueryWrapper caseReturnQueryWrapper = new QueryWrapper<>(); caseReturnQueryWrapper.eq("case_id", caseId); List caseReturnList = caseReturnService.list(caseReturnQueryWrapper); QueryWrapper caseAppearQueryWrapper = new QueryWrapper<>(); caseAppearQueryWrapper.eq("case_id", caseId); List caseAppearList = caseAppearService.list(caseAppearQueryWrapper); QueryWrapper caseWindupApplyQueryWrapper = new QueryWrapper<>(); caseWindupApplyQueryWrapper.eq("case_id", caseId); List caseWindupApplyList = caseWindupApplyService.list(caseWindupApplyQueryWrapper); QueryWrapper caseAssistApplyQueryWrapper = new QueryWrapper<>(); caseAssistApplyQueryWrapper.eq("case_id", caseId); List caseAssistApplyList = caseAssistApplyService.list(caseAssistApplyQueryWrapper); List sortUtilDTOList = new ArrayList<>(); List idList = new ArrayList<>(); String ids = new String(); idList.addAll(caseReturnList.stream().map(CaseReturn::getId).collect(Collectors.toList())); idList.addAll(caseAppearList.stream().map(CaseAppear::getId).collect(Collectors.toList())); idList.addAll(caseWindupApplyList.stream().map(CaseWindupApply::getId).collect(Collectors.toList())); idList.addAll(caseAssistApplyList.stream().map(CaseAssistApply::getId).collect(Collectors.toList())); ids = idList.stream().map(String::valueOf).collect(Collectors.joining("','")); List fileIdTypeInfoBaseDTOList = new ArrayList<>(); if (StringUtils.isNotBlank(ids)) { Map terms = new HashMap(); terms.put("mainId", caseId); terms.put("ownerIds", "'" + ids + "'"); fileIdTypeInfoBaseDTOList = sysClient.listIdTypeInfoByOwnerIdList(terms); } for (CaseReturn caseReturn : caseReturnList) { SortUtilDTO sortUtilDTO = new SortUtilDTO(); sortUtilDTO.setObject(caseReturn); sortUtilDTO.setDate(caseReturn.getCreateTime()); sortUtilDTO.setType("回退申请"); sortUtilDTOList.add(sortUtilDTO); for (FileIdTypeInfoBaseDTO fileIdTypeInfoBaseDTO : fileIdTypeInfoBaseDTOList) { if (caseReturn.getId().equals(fileIdTypeInfoBaseDTO.getOwnerId())) { sortUtilDTO.setFileList(fileIdTypeInfoBaseDTO.getFileList()); } } } for (CaseAppear caseAppear : caseAppearList) { SortUtilDTO sortUtilDTO = new SortUtilDTO(); sortUtilDTO.setObject(caseAppear); sortUtilDTO.setDate(caseAppear.getCreateTime()); sortUtilDTO.setType("上报申请"); sortUtilDTOList.add(sortUtilDTO); for (FileIdTypeInfoBaseDTO fileIdTypeInfoBaseDTO : fileIdTypeInfoBaseDTOList) { if (caseAppear.getId().equals(fileIdTypeInfoBaseDTO.getOwnerId())) { sortUtilDTO.setFileList(fileIdTypeInfoBaseDTO.getFileList()); } } } for (CaseWindupApply caseWindupApply : caseWindupApplyList) { SortUtilDTO sortUtilDTO = new SortUtilDTO(); sortUtilDTO.setObject(caseWindupApply); sortUtilDTO.setDate(caseWindupApply.getCreateTime()); sortUtilDTO.setType("结案申请"); sortUtilDTOList.add(sortUtilDTO); for (FileIdTypeInfoBaseDTO fileIdTypeInfoBaseDTO : fileIdTypeInfoBaseDTOList) { if (caseWindupApply.getId().equals(fileIdTypeInfoBaseDTO.getOwnerId())) { sortUtilDTO.setFileList(fileIdTypeInfoBaseDTO.getFileList()); } } } for (CaseAssistApply caseAssistApply : caseAssistApplyList) { SortUtilDTO sortUtilDTO = new SortUtilDTO(); sortUtilDTO.setObject(caseAssistApply); sortUtilDTO.setDate(caseAssistApply.getCreateTime()); sortUtilDTO.setType("联合处置申请"); sortUtilDTOList.add(sortUtilDTO); for (FileIdTypeInfoBaseDTO fileIdTypeInfoBaseDTO : fileIdTypeInfoBaseDTOList) { if (caseAssistApply.getId().equals(fileIdTypeInfoBaseDTO.getOwnerId())) { sortUtilDTO.setFileList(fileIdTypeInfoBaseDTO.getFileList()); } } } //司法确认 List judicInfoDTOs = judicInfoService.getJudicInfoByCaseId(caseId); if (ObjectUtils.isNotEmpty(judicInfoDTOs)) { for (JudicInfoDTO judicInfoDTO : judicInfoDTOs) { SortUtilDTO judicSortUtilDTO = new SortUtilDTO(); judicSortUtilDTO.setObject(judicInfoDTO); judicSortUtilDTO.setDate(judicInfoDTO.getApplyTime()); judicSortUtilDTO.setType("司法确认申请"); //附件 judicSortUtilDTO.setFileList(judicInfoDTO.getFileList()); sortUtilDTOList.add(judicSortUtilDTO); } } sortUtilDTOList.sort(Comparator.comparing(SortUtilDTO::getDate)); List resultList = new ArrayList<>(); for (SortUtilDTO sortUtilDTO : sortUtilDTOList) { resultList.add(sortUtilDTO); } // 转入人民调解系统记录 ToRmtjApplyDTO toRmtjApplyDTO = thRmtjApplyService.getCaseApplyRmtj(caseId); if (ObjectUtils.isNotEmpty(toRmtjApplyDTO)) { resultList.add(toRmtjApplyDTO); } return resultList; } catch (Exception e) { log.error("[CaseTaskService.listMyApplyRecord]调用失败,异常信息:" + e, e); throw new ServiceException("CaseTaskService.listMyApplyRecord", e); } } /** * wechat端-查询流程进度 * * @param caseId 纠纷编号 * @return */ public List wechatListCaseFlow(String caseId, String userId) { // 封装办理流程 List list = new ArrayList<>(); CaseInfo caseInfo = caseInfoService.getById(caseId); // 提交申请 WechatCaseFlowDTO tjsq = new WechatCaseFlowDTO(); tjsq.setProcessName("提交申请"); tjsq.setVisitWayName(caseInfo.getVisitWayName()); tjsq.setShowTime(caseInfo.getCreateTime()); tjsq.setCaseTypeName(caseInfo.getCaseTypeName()); tjsq.setProcessStep(1); list.add(tjsq); CaseInfoUnfold caseInfoUnfold = caseInfoUnfoldService.getById(caseId); // 办理中 if (caseInfo.getInfoProcess() >= CaseInfoProcessBaseConstsEnum.CASE_INFO_PROCESS_2.getIndex()) { WechatCaseFlowDTO sxbl = new WechatCaseFlowDTO(); sxbl.setProcessName("事项办理"); sxbl.setShowTime(caseInfoUnfold.getAcceptTime()); sxbl.setMediateUnitName(caseInfoUnfold.getMediateUnitName()); sxbl.setProcessStep(2); list.add(sxbl); } // 已结案 if (caseInfo.getInfoProcess() >= CaseInfoProcessBaseConstsEnum.CASE_INFO_PROCESS_3.getIndex()) { WechatCaseFlowDTO sxbj = new WechatCaseFlowDTO(); sxbj.setProcessName("事项办结"); sxbj.setShowTime(caseInfoUnfold.getCloseTime()); sxbj.setMediResult(caseInfoUnfold.getMediResult()); sxbj.setMediResultName(caseInfoUnfold.getMediResultName()); sxbj.setProcessStep(3); list.add(sxbj); } // 评价 QueryWrapper caseEvaluateQueryWrapper = new QueryWrapper<>(); caseEvaluateQueryWrapper.eq("case_id", caseId).orderByDesc("create_time"); List caseEvaluateList = caseEvaluateService.list(caseEvaluateQueryWrapper); if (CollectionUtils.isNotEmpty(caseEvaluateList)) { CaseEvaluate caseEvaluate = caseEvaluateList.get(0); WechatCaseFlowDTO sxpj = new WechatCaseFlowDTO(); sxpj.setProcessName("事项评价"); sxpj.setShowTime(caseEvaluate.getCreateTime()); sxpj.setEvaluateUserName(caseEvaluate.getEvaluateUserName()); sxpj.setEvaluateGrade(caseEvaluate.getEvaluateGrade()); sxpj.setEvaluateRemark(caseEvaluate.getEvaluateRemark()); sxpj.setProcessStep(4); list.add(sxpj); } return list; } /** * web端大厅来访登记-提交纠纷事件-通过自动调度启动工作流 * * @param caseInfo */ public void webStartFlowLFDJ(CaseInfo caseInfo) { try { DispCaseBaseDTO dispCaseBaseDTO = new DispCaseBaseDTO(); BeanUtils.copyProperties(caseInfo, dispCaseBaseDTO); dispCaseBaseDTO.setCaseId(caseInfo.getId()); if ("22_00003-1".equals(caseInfo.getCanalSecond())) { dispCaseBaseDTO.setIsQu(1); } else { dispCaseBaseDTO.setIsQu(0); } CaseDispBaseDTO caseDispBaseDTO = dispClient.sysDisp(dispCaseBaseDTO); log.info(JSON.toJSONString(caseDispBaseDTO)); // 目前平台只能调度给组织 if (DispBaseConstsEnum.TARGET_TYPE_1.getIndex().equals(caseDispBaseDTO.getTargetType())) { // 目前平台只做区、镇街、村居级别的调度, if (UserBaseConsts.UNIT_GRADE_3 == caseDispBaseDTO.getTargetUnitGrade() || UserBaseConsts.UNIT_GRADE_2 == caseDispBaseDTO.getTargetUnitGrade()) { // 启动来访登记工作流 // FlowNode firstFlowNode = flowInfoService.startFlow(FlowableConsts.getJbFlow(caseInfo.getCanal()), caseInfo.getId()); String operation = "tydu_zj"; if (StringUtils.isEmpty(caseInfo.getQueRoad())) { operation = "tydu_qu"; } if ("22_00003-1".equals(caseInfo.getCanalSecond())) { operation = "tydu_qu"; } log.info("xsd:{}", operation); FlowNode firstFlowNode = flowInfoService.startFlow4DTLFZXPC(FlowableConsts.getJbFlow(caseInfo.getCanal()), caseInfo.getId(), operation); log.info("xsd:{}", firstFlowNode); if (UserBaseConsts.UNIT_TYPE_101 == caseDispBaseDTO.getTargetUnitType()) { // 调度给镇街综治中心,进入第1个任务节点-镇街综治中心待分派 CaseTask dfpCaseTask = new CaseTask(); dfpCaseTask.setId(utilsClient.getNewTimeId()); dfpCaseTask.setCaseId(caseInfo.getId()); dfpCaseTask.setFlowableId(firstFlowNode.getFlowableId()); dfpCaseTask.setProcessInstanceId(firstFlowNode.getProcessInstanceId()); dfpCaseTask.setProcessTaskId(firstFlowNode.getProcessTaskId()); dfpCaseTask.setNodeType(firstFlowNode.getNodeType()); dfpCaseTask.setNodeId(firstFlowNode.getNodeId()); dfpCaseTask.setNodeName(firstFlowNode.getNodeName()); dfpCaseTask.setFlowId(firstFlowNode.getFlowId()); dfpCaseTask.setNodeShowName(firstFlowNode.getNodeShowName()); dfpCaseTask.setCaseTaskType(CaseTaskConsts.CASE_TASK_TYPE_1); // 任务所属组织:调度目标 dfpCaseTask.setCandeUnitId(caseDispBaseDTO.getTargetId()); dfpCaseTask.setCandeUnitName(caseDispBaseDTO.getTargetName()); // 系统调度给镇街综治中心,未读 dfpCaseTask.setReadStatus(CaseTaskConsts.READ_STATUS_0); // 任务处理时限 if (firstFlowNode.getExpire() != 0) { dfpCaseTask.setExpireTime(syHolidayService.getExpiryDay(caseInfo.getCreateTime(), firstFlowNode.getExpire())); } dfpCaseTask.setStatus(CaseTaskConsts.TASK_STATUS_1); dfpCaseTask.setDeleteStatus(BaseConsts.DELETE_STATUS_0); dfpCaseTask.setCustId(caseInfo.getCustId()); dfpCaseTask.setCreateTime(caseInfo.getCreateTime()); dfpCaseTask.setUpdateTime(caseInfo.getUpdateTime()); mapper.insert(dfpCaseTask); // 更新纠纷信息 CaseInfo caseInfoPO = new CaseInfo(); caseInfoPO.setId(caseInfo.getId()); caseInfoPO.setStatus(CaseStatusBaseConstsEnum.CASE_STATUS_1.getIndex()); caseInfoPO.setStatusName(CaseStatusBaseConstsEnum.CASE_STATUS_1.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()); caseInfoService.updateCaseInfo(caseInfoPO); // 更新纠纷信息扩展表-实际归属组织 CaseInfoUnfold caseInfoUnfoldPO = new CaseInfoUnfold(); caseInfoUnfoldPO.setId(caseInfo.getId()); caseInfoUnfoldPO.setBelongUnitId(dfpCaseTask.getCandeUnitId()); caseInfoUnfoldPO.setBelongUnitName(dfpCaseTask.getCandeUnitName()); caseInfoUnfoldService.updateCaseInfoUnfold(caseInfoUnfoldPO); //添加网格待办 this.createGridToDo(caseInfo, dfpCaseTask, GridEnum.GRID_OBJECT_TYPE_1.getIndex(), GridBaseConsts.GRID_TYPE_1); //修改网格事件状态 // if(ObjectUtils.isNotEmpty(caseInfo.getIsGridEvent()) && 1 == caseInfo.getIsGridEvent()){ // List ownerIdList = new ArrayList<>(); // ownerIdList.add(caseInfo.getId()); // ThreadPoolUtils.executor(new AsynUpdateCaseEventNode(caseInfo.getId(), null, // dfpCaseTask, "ut_jzwgzxff", GridEnum.EVENT_FLOW_1.getIndex(), ownerIdList, null, 0)); // } } else { // 调度给调解组织,默认通过第1个任务节点-镇街综治中心待分派 CaseTask dfpCaseTask = new CaseTask(); dfpCaseTask.setId(utilsClient.getNewTimeId()); dfpCaseTask.setCaseId(caseInfo.getId()); dfpCaseTask.setFlowableId(firstFlowNode.getFlowableId()); dfpCaseTask.setProcessInstanceId(firstFlowNode.getProcessInstanceId()); dfpCaseTask.setProcessTaskId(firstFlowNode.getProcessTaskId()); dfpCaseTask.setNodeType(firstFlowNode.getNodeType()); dfpCaseTask.setNodeId(firstFlowNode.getNodeId()); dfpCaseTask.setNodeName(firstFlowNode.getNodeName()); dfpCaseTask.setFlowId(firstFlowNode.getFlowId()); dfpCaseTask.setNodeShowName(firstFlowNode.getNodeShowName()); dfpCaseTask.setCaseTaskType(CaseTaskConsts.CASE_TASK_TYPE_1); // 任务所属组织:系统 dfpCaseTask.setCandeUnitName("系统派单"); // 调度给调解组织,已读 dfpCaseTask.setReadStatus(CaseTaskConsts.READ_STATUS_1); dfpCaseTask.setReadTime(caseInfo.getCreateTime()); // 任务处理时限 if (firstFlowNode.getExpire() != 0) { dfpCaseTask.setExpireTime(syHolidayService.getExpiryDay(caseInfo.getCreateTime(), firstFlowNode.getExpire())); } dfpCaseTask.setStatus(CaseTaskConsts.TASK_STATUS_2); dfpCaseTask.setHandleUnitName("系统派单"); dfpCaseTask.setHandleResult(CaseTaskConsts.HANDLE_RESULT_0); dfpCaseTask.setHandleIllust("派单至:" + caseDispBaseDTO.getTargetName()); dfpCaseTask.setHandleTime(caseInfo.getCreateTime()); dfpCaseTask.setDeleteStatus(BaseConsts.DELETE_STATUS_0); dfpCaseTask.setCustId(caseInfo.getCustId()); dfpCaseTask.setCreateTime(caseInfo.getCreateTime()); dfpCaseTask.setUpdateTime(caseInfo.getCreateTime()); // 计算任务耗时、是否超时、超时多少 dfpCaseTask.setUsetimeHour(TaskUsetimeUtils.getUsetimeHour(dfpCaseTask.getHandleTime(), dfpCaseTask.getCreateTime())); dfpCaseTask.setOvertimeStatus(TaskUsetimeUtils.getOvertimeStatus(dfpCaseTask.getHandleTime(), dfpCaseTask.getExpireTime())); dfpCaseTask.setOvertimeHour(TaskUsetimeUtils.getOvertimeHour(dfpCaseTask.getHandleTime(), dfpCaseTask.getExpireTime())); mapper.insert(dfpCaseTask); // 完成第1个工作流节点任务,进入第2个节点任务 FlowNode secondFlowNode = flowInfoService.completeTask(dfpCaseTask.getFlowableId(), dfpCaseTask.getProcessTaskId(), FlowableConsts.OPERATION_jb_zszz, "系统派单"); // 创建第2个节点任务-调解组织待受理 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.setNodeType(secondFlowNode.getNodeType()); dslCaseTask.setNodeId(secondFlowNode.getNodeId()); dslCaseTask.setNodeName(secondFlowNode.getNodeName()); dslCaseTask.setFlowId(secondFlowNode.getFlowId()); dslCaseTask.setNodeShowName(secondFlowNode.getNodeShowName()); dslCaseTask.setCaseTaskType(dfpCaseTask.getCaseTaskType()); // 任务所属组织:调度目标 dslCaseTask.setCandeUnitId(caseDispBaseDTO.getTargetId()); dslCaseTask.setCandeUnitName(caseDispBaseDTO.getTargetName()); // 系统调度给调解组织,未读 dslCaseTask.setReadStatus(CaseTaskConsts.READ_STATUS_0); dslCaseTask.setReadExpireTime(sysClient.getExpireTime(caseInfo.getCreateTime(), SyTimeEnum.SY_TIME_2.getIndex())); // 任务处理时限 if (firstFlowNode.getExpire() != 0) { dslCaseTask.setExpireTime(syHolidayService.getExpiryDay(caseInfo.getCreateTime(), firstFlowNode.getExpire())); } 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()); caseInfoPO.setStatus(CaseStatusBaseConstsEnum.CASE_STATUS_3.getIndex()); caseInfoPO.setStatusName(CaseStatusBaseConstsEnum.CASE_STATUS_3.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()); caseInfoService.updateCaseInfo(caseInfoPO); // 更新纠纷信息扩展表-实际归属组织 CaseInfoUnfold caseInfoUnfoldPO = new CaseInfoUnfold(); caseInfoUnfoldPO.setId(caseInfo.getId()); caseInfoUnfoldPO.setBelongUnitId(dslCaseTask.getCandeUnitId()); caseInfoUnfoldPO.setBelongUnitName(dslCaseTask.getCandeUnitName()); caseInfoUnfoldService.updateCaseInfoUnfold(caseInfoUnfoldPO); //添加网格待办 this.createGridToDo(caseInfo, dslCaseTask, GridEnum.GRID_OBJECT_TYPE_3.getIndex(), GridBaseConsts.GRID_TYPE_3); //修改网格事件状态 // if(ObjectUtils.isNotEmpty(caseInfo.getIsGridEvent()) && 1 == caseInfo.getIsGridEvent()){ // List ownerIdList = new ArrayList<>(); // ownerIdList.add(caseInfo.getId()); // ThreadPoolUtils.executor(new AsynUpdateCaseEventNode(caseInfo.getId(), null, // dslCaseTask, "ut_jzwgzxff", GridEnum.EVENT_FLOW_2.getIndex(), ownerIdList, null, 0)); // } } } } } catch (Exception e) { log.error("[CaseTaskService.webStartFlowLFDJ]调用失败,异常信息:" + e, e); throw new ServiceException("CaseTaskService.webStartFlowLFDJ", e); } } /** * web端大厅来访登记-自行受理-启动自行受理流程 * * @param caseInfo * @param loginUser */ public String webStartFlowZXSL(CaseInfo caseInfo, CtUserDTO loginUser) { try { // 启动自行受理工作流,进入待受理任务节点 FlowNode dslFlowNode = flowInfoService.startFlow(FlowableConsts.getZxslFlow(caseInfo.getCanal()), caseInfo.getId()); // 创建并完成待受理节点任务 CaseTask dslCaseTask = new CaseTask(); dslCaseTask.setId(utilsClient.getNewTimeId()); dslCaseTask.setCaseId(caseInfo.getId()); dslCaseTask.setFlowableId(dslFlowNode.getFlowableId()); dslCaseTask.setProcessInstanceId(dslFlowNode.getProcessInstanceId()); dslCaseTask.setProcessTaskId(dslFlowNode.getProcessTaskId()); dslCaseTask.setNodeType(dslFlowNode.getNodeType()); dslCaseTask.setNodeId(dslFlowNode.getNodeId()); dslCaseTask.setNodeName(dslFlowNode.getNodeName()); dslCaseTask.setFlowId(dslFlowNode.getFlowId()); dslCaseTask.setNodeShowName(dslFlowNode.getNodeShowName()); dslCaseTask.setCaseTaskType(CaseTaskConsts.CASE_TASK_TYPE_1); // 任务所属组织:当前登记组织 dslCaseTask.setCandeUnitId(loginUser.getUnitId()); dslCaseTask.setCandeUnitName(loginUser.getUnitName()); // 自行受理,已读 dslCaseTask.setReadStatus(CaseTaskConsts.READ_STATUS_1); dslCaseTask.setReadTime(caseInfo.getCreateTime()); // 任务处理时限 if (dslFlowNode.getExpire() != 0) { dslCaseTask.setExpireTime(syHolidayService.getExpiryDay(caseInfo.getCreateTime(), dslFlowNode.getExpire())); } dslCaseTask.setStatus(CaseTaskConsts.TASK_STATUS_2); dslCaseTask.setHandleUnitId(loginUser.getUnitId()); dslCaseTask.setHandleUnitName(loginUser.getUnitName()); dslCaseTask.setHandleDeptId(loginUser.getDeptId()); dslCaseTask.setHandleDeptName(loginUser.getDeptName()); dslCaseTask.setHandleUserId(loginUser.getId()); dslCaseTask.setHandleUserName(loginUser.getTrueName()); dslCaseTask.setHandleResult(CaseTaskConsts.HANDLE_RESULT_0); dslCaseTask.setHandleIllust("自行受理"); dslCaseTask.setHandleTime(caseInfo.getCreateTime()); dslCaseTask.setDeleteStatus(BaseConsts.DELETE_STATUS_0); dslCaseTask.setCustId(caseInfo.getCustId()); dslCaseTask.setCreateTime(caseInfo.getCreateTime()); dslCaseTask.setUpdateTime(caseInfo.getCreateTime()); // 计算任务耗时、是否超时、超时多少 dslCaseTask.setUsetimeHour(TaskUsetimeUtils.getUsetimeHour(dslCaseTask.getHandleTime(), dslCaseTask.getCreateTime())); dslCaseTask.setOvertimeStatus(TaskUsetimeUtils.getOvertimeStatus(dslCaseTask.getHandleTime(), dslCaseTask.getExpireTime())); dslCaseTask.setOvertimeHour(TaskUsetimeUtils.getOvertimeHour(dslCaseTask.getHandleTime(), dslCaseTask.getExpireTime())); mapper.insert(dslCaseTask); // 完成待受理工作流节点任务,进入办理反馈任务节点 FlowNode blfkFlowNode = flowInfoService.completeTask(dslCaseTask.getFlowableId(), dslCaseTask.getProcessTaskId(), FlowableConsts.OPERATION_forward, loginUser.getId()); // 创建办理反馈节点任务 CaseTask blfkCaseTask = new CaseTask(); blfkCaseTask.setId(utilsClient.getNewTimeId()); blfkCaseTask.setCaseId(caseInfo.getId()); blfkCaseTask.setFlowableId(blfkFlowNode.getFlowableId()); blfkCaseTask.setProcessInstanceId(blfkFlowNode.getProcessInstanceId()); blfkCaseTask.setProcessTaskId(blfkFlowNode.getProcessTaskId()); blfkCaseTask.setNodeType(blfkFlowNode.getNodeType()); blfkCaseTask.setNodeId(blfkFlowNode.getNodeId()); blfkCaseTask.setNodeName(blfkFlowNode.getNodeName()); blfkCaseTask.setFlowId(blfkFlowNode.getFlowId()); blfkCaseTask.setNodeShowName(blfkFlowNode.getNodeShowName()); blfkCaseTask.setCaseTaskType(CaseTaskConsts.CASE_TASK_TYPE_1); // 任务所属组织:当前登记组织 blfkCaseTask.setCandeUnitId(loginUser.getUnitId()); blfkCaseTask.setCandeUnitName(loginUser.getUnitName()); // 受理后的节点任务节点,未读 blfkCaseTask.setReadStatus(CaseTaskConsts.READ_STATUS_0); // 任务处理时限 if (blfkFlowNode.getExpire() != 0) { blfkCaseTask.setExpireTime(syHolidayService.getExpiryDay(caseInfo.getCreateTime(), blfkFlowNode.getExpire())); } blfkCaseTask.setStatus(CaseTaskConsts.TASK_STATUS_1); blfkCaseTask.setDeleteStatus(BaseConsts.DELETE_STATUS_0); blfkCaseTask.setCustId(caseInfo.getCustId()); blfkCaseTask.setCreateTime(caseInfo.getCreateTime()); blfkCaseTask.setUpdateTime(caseInfo.getUpdateTime()); mapper.insert(blfkCaseTask); // 更新纠纷信息 CaseInfo caseInfoPO = new CaseInfo(); caseInfoPO.setId(caseInfo.getId()); caseInfoPO.setStatus(CaseStatusBaseConstsEnum.CASE_STATUS_4.getIndex()); caseInfoPO.setStatusName(CaseStatusBaseConstsEnum.CASE_STATUS_4.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()); caseInfoService.updateCaseInfo(caseInfoPO); // 更新纠纷扩展信息 CaseInfoUnfold caseInfoUnfoldPO = new CaseInfoUnfold(); caseInfoUnfoldPO.setId(blfkCaseTask.getCaseId()); caseInfoUnfoldPO.setAcceptTime(blfkCaseTask.getCreateTime()); caseInfoUnfoldPO.setMediateUnitId(blfkCaseTask.getCandeUnitId()); caseInfoUnfoldPO.setMediateUnitName(blfkCaseTask.getCandeUnitName()); caseInfoUnfoldPO.setBelongUnitId(blfkCaseTask.getCandeUnitId()); caseInfoUnfoldPO.setBelongUnitName(blfkCaseTask.getCandeUnitName()); caseInfoUnfoldService.updateCaseInfoUnfold(caseInfoUnfoldPO); return blfkCaseTask.getId(); } catch (Exception e) { log.error("[CaseTaskService.webStartFlowZXSL]调用失败,异常信息:" + e, e); throw new ServiceException("CaseTaskService.webStartFlowZXSL", e); } } /** * web端任务处理-不予受理 * * @param caseDismiss 不予受理表单 * @param userId 当前登录用户 */ public void webDismiss(CaseDismiss caseDismiss, String userId) { try { Date nowDate = DateUtils.getNowDate(); // 获取当前登录用户 CtUserDTO loginUser = custClient.clientGetUserAll(userId); // 查询当前节点任务 CaseTask caseTask = mapper.selectById(caseDismiss.getCaseTaskId()); // 结束当前节点任务 CaseTask caseTaskPO = new CaseTask(); caseTaskPO.setId(caseDismiss.getCaseTaskId()); caseTaskPO.setStatus(CaseTaskConsts.TASK_STATUS_2); caseTaskPO.setHandleUnitId(loginUser.getUnitId()); caseTaskPO.setHandleUnitName(loginUser.getUnitName()); caseTaskPO.setHandleUserId(loginUser.getId()); caseTaskPO.setHandleDeptId(loginUser.getDeptId()); caseTaskPO.setHandleDeptName(loginUser.getDeptName()); caseTaskPO.setHandleUserName(loginUser.getTrueName()); caseTaskPO.setHandleResult(CaseTaskConsts.HANDLE_RESULT_3); caseTaskPO.setHandleContent(caseDismiss.getDisContent()); caseTaskPO.setHandleTime(nowDate); caseTaskPO.setUpdateTime(nowDate); // 计算任务耗时、是否超时、超时多少 caseTaskPO.setUsetimeHour(TaskUsetimeUtils.getUsetimeHour(caseTaskPO.getHandleTime(), caseTask.getCreateTime())); caseTaskPO.setOvertimeStatus(TaskUsetimeUtils.getOvertimeStatus(caseTaskPO.getHandleTime(), caseTask.getExpireTime())); caseTaskPO.setOvertimeHour(TaskUsetimeUtils.getOvertimeHour(caseTaskPO.getHandleTime(), caseTask.getExpireTime())); mapper.updateCaseTask(caseTaskPO); // 结束当前工作流 CaseInfo caseInfo = caseInfoService.getById(caseDismiss.getCaseId()); Date createTime = caseInfo.getCreateTime(); // 创建 2025年4月30日 的日期对象 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); Date targetDate = sdf.parse("2025-04-30"); if (createTime != null && createTime.after(targetDate)) { flowInfoService.endFlow(caseTask.getProcessInstanceId()); } // 更新纠纷信息 CaseInfo caseInfoPO = new CaseInfo(); caseInfoPO.setId(caseTask.getCaseId()); caseInfoPO.setStatus(CaseStatusBaseConstsEnum.CASE_STATUS_8.getIndex()); caseInfoPO.setStatusName(CaseStatusBaseConstsEnum.CASE_STATUS_8.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); // 有配合组织,也结束配合组织工作流 List assistCaseTaskList = this.listAssistTasking(caseDismiss.getCaseId()); for (CaseTask assistCaseTask : assistCaseTaskList) { // 完成配合组织当前节点任务 assistCaseTask.setStatus(CaseTaskConsts.TASK_STATUS_2); assistCaseTask.setHandleUnitId(assistCaseTask.getCandeUnitId()); assistCaseTask.setHandleUnitName(assistCaseTask.getCandeUnitName()); if (FlowNodeEnum.FLOW_NODE_BLFK.getIndex().equals(assistCaseTask.getNodeId())) { QueryWrapper caseFeedbackQueryWrapper = new QueryWrapper<>(); caseFeedbackQueryWrapper.select("handle_user_id", "handle_user_name") .eq("case_id", assistCaseTask.getCaseId()) .eq("handle_unit_id", assistCaseTask.getCandeUnitId()) .eq("handle_type", CaseTaskConsts.HANDLE_TYPE_2).orderByDesc("create_time"); List caseFeedbacks = caseFeedbackService.list(caseFeedbackQueryWrapper); if (CollectionUtils.isNotEmpty(caseFeedbacks)) { CaseFeedback caseFeedback = caseFeedbacks.get(0); assistCaseTask.setHandleUserId(caseFeedback.getHandleUserId()); assistCaseTask.setHandleUserName(caseFeedback.getHandleUserName()); } else { CaseAssistInfo caseAssistInfo = caseAssistInfoService.getByCaseTaskId(assistCaseTask.getId()); if (ObjectUtils.isNotEmpty(caseAssistInfo)) { assistCaseTask.setHandleUserId(caseAssistInfo.getAssistUserId()); assistCaseTask.setHandleUserName(caseAssistInfo.getAssistUserName()); } } } else { assistCaseTask.setHandleUserId(loginUser.getId()); assistCaseTask.setHandleUserName(loginUser.getTrueName() + "(承办部门)"); } assistCaseTask.setHandleResult(CaseTaskConsts.HANDLE_RESULT_3); assistCaseTask.setHandleTime(nowDate); assistCaseTask.setUpdateTime(nowDate); // 计算任务耗时、是否超时、超时多少 assistCaseTask.setUsetimeHour(TaskUsetimeUtils.getUsetimeHour(assistCaseTask.getHandleTime(), assistCaseTask.getCreateTime())); assistCaseTask.setOvertimeStatus(TaskUsetimeUtils.getOvertimeStatus(assistCaseTask.getHandleTime(), assistCaseTask.getExpireTime())); assistCaseTask.setOvertimeHour(TaskUsetimeUtils.getOvertimeHour(assistCaseTask.getHandleTime(), assistCaseTask.getExpireTime())); mapper.updateCaseTask(assistCaseTask); // 结束配合组织当前工作流 flowInfoService.endFlow(assistCaseTask.getProcessInstanceId()); } // 新增不予受理信息 caseDismiss.setCaseTaskTime(caseTask.getCreateTime()); caseDismiss.setDisUnitId(loginUser.getUnitId()); caseDismiss.setDisUnitName(loginUser.getUnitName()); caseDismiss.setDisUserId(loginUser.getId()); caseDismiss.setDisUserName(loginUser.getTrueName()); caseDismiss.setDisTime(nowDate); caseDismiss.setDeleteStatus(BaseConsts.DELETE_STATUS_0); caseDismiss.setCustId(caseTask.getCustId()); caseDismiss.setCreateTime(nowDate); caseDismiss.setUpdateTime(nowDate); caseDismissService.save(caseDismiss); //删除网格待办 this.deleteGridTodo(caseTask); //修改网格事件状态 List ownerIdList = new ArrayList<>(); ownerIdList.add(caseTask.getId()); ownerIdList.add(caseDismiss.getId()); assistCaseTaskList.stream().forEach(assistCaseTask -> { ownerIdList.add(assistCaseTask.getId()); }); ThreadPoolUtils.executor(new AsynUpdateCaseEventNode(caseTask.getCaseId(), caseTaskPO, caseTaskPO, GridEnum.EVENT_FLOW_6.getIndex(), GridEnum.EVENT_FLOW_5.getIndex(), ownerIdList, loginUser.getId(), 0, GridEnum.EVENT_PROCESS_STATUS_4.getIndex())); } catch (Exception e) { log.error("[CaseTaskService.webAssign]调用失败,异常信息:" + e, e); throw new ServiceException("CaseTaskService.webAssign", e); } } /** * web端任务处理-交办 * * @param assignTaskDTO 交办任务表单 * @param userId 当前登录用户 */ public void webAssign(AssignTaskDTO assignTaskDTO, String userId) { try { Date nowDate = DateUtils.getNowDate(); // 获取当前登录用户 CtUserDTO loginUser = custClient.clientGetUserAll(userId); // 查询交办的组织信息 CtUnitDTO dslUnitDTO = custClient.getUnitById(assignTaskDTO.getHandleUnitId()); // 查询当前待分派节点任务 CaseTask dfpCaseTask = mapper.selectById(assignTaskDTO.getCaseTaskId()); // 完成当前待分派节点任务 CaseTask dfpCaseTaskPO = new CaseTask(); dfpCaseTaskPO.setId(assignTaskDTO.getCaseTaskId()); dfpCaseTaskPO.setStatus(CaseTaskConsts.TASK_STATUS_2); dfpCaseTaskPO.setHandleUnitId(loginUser.getUnitId()); dfpCaseTaskPO.setHandleUnitName(loginUser.getUnitName()); dfpCaseTaskPO.setHandleDeptId(loginUser.getDeptId()); dfpCaseTaskPO.setHandleDeptName(loginUser.getDeptName()); dfpCaseTaskPO.setHandleUserId(loginUser.getId()); dfpCaseTaskPO.setHandleUserName(loginUser.getTrueName()); dfpCaseTaskPO.setHandleResult(CaseTaskConsts.HANDLE_RESULT_0); dfpCaseTaskPO.setHandleContent(assignTaskDTO.getAssignContent()); dfpCaseTaskPO.setHandleIllust("派单至:" + assignTaskDTO.getHandleUnitName()); dfpCaseTaskPO.setHandleTime(nowDate); dfpCaseTaskPO.setUpdateTime(nowDate); // 计算任务耗时、是否超时、超时多少 dfpCaseTaskPO.setUsetimeHour(TaskUsetimeUtils.getUsetimeHour(dfpCaseTaskPO.getHandleTime(), dfpCaseTask.getCreateTime())); dfpCaseTaskPO.setOvertimeStatus(TaskUsetimeUtils.getOvertimeStatus(dfpCaseTaskPO.getHandleTime(), dfpCaseTask.getExpireTime())); dfpCaseTaskPO.setOvertimeHour(TaskUsetimeUtils.getOvertimeHour(dfpCaseTaskPO.getHandleTime(), dfpCaseTask.getExpireTime())); mapper.updateCaseTask(dfpCaseTaskPO); String flowOperation = null; // 镇街综治中心待分派节点 if (FlowNodeEnum.FLOW_NODE_ZJ_DFP.getIndex().equals(dfpCaseTask.getNodeId())) { flowOperation = FlowableConsts.OPERATION_jb_zszz; } // 区综治中心待分派节点 if (FlowNodeEnum.FLOW_NODE_QJ_DFP.getIndex().equals(dfpCaseTask.getNodeId())) { // 查询承办组织信息 if (UserBaseConsts.UNIT_GRADE_2 == dslUnitDTO.getUnitGrade()) { flowOperation = FlowableConsts.OPERATION_jb_zszz; } else { flowOperation = FlowableConsts.OPERATION_jb_zzzx; } } // 市综治中心待分派节点 if (FlowNodeEnum.FLOW_NODE_SJ_DFP.getIndex().equals(dfpCaseTask.getNodeId())) { if (UserBaseConsts.UNIT_GRADE_1 == dslUnitDTO.getUnitGrade()) { flowOperation = FlowableConsts.OPERATION_jb_zszz; } else { flowOperation = FlowableConsts.OPERATION_jb_zzzx; } } // 完成当前待分派工作流节点任务,进入待受理任务节点 FlowNode newFlowNode = flowInfoService.completeTask(dfpCaseTask.getFlowableId(), dfpCaseTask.getProcessTaskId(), flowOperation, userId); // 新建待受理节点任务 CaseTask dslCaseTask = new CaseTask(); dslCaseTask.setId(utilsClient.getNewTimeId()); dslCaseTask.setCaseId(dfpCaseTask.getCaseId()); dslCaseTask.setFlowableId(newFlowNode.getFlowableId()); dslCaseTask.setProcessInstanceId(newFlowNode.getProcessInstanceId()); dslCaseTask.setProcessTaskId(newFlowNode.getProcessTaskId()); dslCaseTask.setNodeType(newFlowNode.getNodeType()); dslCaseTask.setNodeId(newFlowNode.getNodeId()); dslCaseTask.setNodeName(newFlowNode.getNodeName()); dslCaseTask.setFlowId(newFlowNode.getFlowId()); dslCaseTask.setNodeShowName(newFlowNode.getNodeShowName()); dslCaseTask.setCaseTaskType(CaseTaskConsts.CASE_TASK_TYPE_1); // 任务所属组织:交办的组织 dslCaseTask.setCandeUnitId(dslUnitDTO.getId()); dslCaseTask.setCandeUnitName(dslUnitDTO.getUnitName()); // 交办的待受理节点任务,未读 dslCaseTask.setReadStatus(CaseTaskConsts.READ_STATUS_0); // 任务处理时限 if (newFlowNode.getExpire() != 0) { dslCaseTask.setExpireTime(syHolidayService.getExpiryDay(nowDate, newFlowNode.getExpire())); } dslCaseTask.setStatus(CaseTaskConsts.TASK_STATUS_1); dslCaseTask.setDeleteStatus(BaseConsts.DELETE_STATUS_0); dslCaseTask.setCustId(dfpCaseTask.getCustId()); dslCaseTask.setCreateTime(nowDate); dslCaseTask.setUpdateTime(nowDate); mapper.insert(dslCaseTask); // 更新纠纷信息 CaseInfo caseInfo = caseInfoService.getCaseInfo(dslCaseTask.getCaseId()); CaseInfo caseInfoPO = new CaseInfo(); caseInfoPO.setId(dslCaseTask.getCaseId()); if (flowOperation == FlowableConsts.OPERATION_jb_zzzx) { caseInfoPO.setStatus(CaseStatusBaseConstsEnum.CASE_STATUS_1.getIndex()); caseInfoPO.setStatusName(CaseStatusBaseConstsEnum.CASE_STATUS_1.getDes()); } else { caseInfoPO.setStatus(CaseStatusBaseConstsEnum.CASE_STATUS_3.getIndex()); caseInfoPO.setStatusName(CaseStatusBaseConstsEnum.CASE_STATUS_3.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); // 更新纠纷信息扩展表-实际归属组织 CaseInfoUnfold caseInfoUnfoldPO = new CaseInfoUnfold(); caseInfoUnfoldPO.setId(dslCaseTask.getCaseId()); caseInfoUnfoldPO.setBelongUnitId(dslCaseTask.getCandeUnitId()); caseInfoUnfoldPO.setBelongUnitName(dslCaseTask.getCandeUnitName()); caseInfoUnfoldService.updateCaseInfoUnfold(caseInfoUnfoldPO); //修改网格待办流程 this.taskFlowGridToDo(caseInfo, dslCaseTask, dfpCaseTaskPO.getId(), GridEnum.GRID_OBJECT_TYPE_3.getIndex(), GridBaseConsts.GRID_TYPE_2); //修改网格事件状态 List ownerIdList = new ArrayList<>(); ownerIdList.add(dfpCaseTask.getId()); ThreadPoolUtils.executor(new AsynUpdateCaseEventNode(dfpCaseTask.getCaseId(), dfpCaseTaskPO, dslCaseTask, GridEnum.getCatByTaskNode(dfpCaseTask.getNodeId()), GridEnum.getCatByTaskNode(dslCaseTask.getNodeId()), ownerIdList, loginUser.getId(), 0, GridEnum.EVENT_PROCESS_STATUS_1.getIndex())); // 交办配合组织 if (CollectionUtils.isNotEmpty(assignTaskDTO.getAssistUnitList())) { // 拼接配合组织编号和名称 String assistUnitId = assignTaskDTO.getAssistUnitList().stream().map(AssignAssistUnitDTO::getUitId). collect(Collectors.joining(BaseConsts.COMMA)); String assistUnitName = assignTaskDTO.getAssistUnitList().stream().map(AssignAssistUnitDTO::getUitName). collect(Collectors.joining(BaseConsts.COMMA)); for (AssignAssistUnitDTO assignAssistUnitDTO : assignTaskDTO.getAssistUnitList()) { // 启动联合处置工作流 FlowNode lhczdfpFlowNode = flowInfoService.startFlow(FlowableConsts.GZDYH_LHCZ_V1, dfpCaseTask.getCaseId()); // 新建并完成待分派节点任务 CaseTask lhczdfpCaseTask = new CaseTask(); lhczdfpCaseTask.setId(utilsClient.getNewTimeId()); lhczdfpCaseTask.setCaseId(dfpCaseTask.getCaseId()); lhczdfpCaseTask.setFlowableId(lhczdfpFlowNode.getFlowableId()); lhczdfpCaseTask.setProcessInstanceId(lhczdfpFlowNode.getProcessInstanceId()); lhczdfpCaseTask.setProcessTaskId(lhczdfpFlowNode.getProcessTaskId()); lhczdfpCaseTask.setNodeType(lhczdfpFlowNode.getNodeType()); lhczdfpCaseTask.setNodeId(lhczdfpFlowNode.getNodeId()); lhczdfpCaseTask.setNodeName(lhczdfpFlowNode.getNodeName()); lhczdfpCaseTask.setFlowId(lhczdfpFlowNode.getFlowId()); lhczdfpCaseTask.setNodeShowName(lhczdfpFlowNode.getNodeShowName()); lhczdfpCaseTask.setCaseTaskType(CaseTaskConsts.CASE_TASK_TYPE_2); // 任务所属单位:当前操作组织 lhczdfpCaseTask.setCandeUnitId(loginUser.getUnitId()); lhczdfpCaseTask.setCandeUnitName(loginUser.getUnitName()); // 待分派节点任务,未读 lhczdfpCaseTask.setReadStatus(CaseTaskConsts.READ_STATUS_0); lhczdfpCaseTask.setStatus(CaseTaskConsts.TASK_STATUS_2); lhczdfpCaseTask.setHandleUnitId(loginUser.getUnitId()); lhczdfpCaseTask.setHandleUnitName(loginUser.getUnitName()); lhczdfpCaseTask.setHandleDeptId(loginUser.getDeptId()); lhczdfpCaseTask.setHandleDeptName(loginUser.getDeptName()); lhczdfpCaseTask.setHandleUserId(loginUser.getId()); lhczdfpCaseTask.setHandleUserName(loginUser.getTrueName()); lhczdfpCaseTask.setHandleContent(assignTaskDTO.getAssignContent()); lhczdfpCaseTask.setHandleIllust("交办至:" + assistUnitName); // 任务处理时限 if (lhczdfpFlowNode.getExpire() != 0) { lhczdfpCaseTask.setExpireTime(syHolidayService.getExpiryDay(nowDate, lhczdfpFlowNode.getExpire())); } lhczdfpCaseTask.setDeleteStatus(BaseConsts.DELETE_STATUS_0); lhczdfpCaseTask.setCustId(dfpCaseTask.getCustId()); lhczdfpCaseTask.setCreateTime(nowDate); lhczdfpCaseTask.setUpdateTime(nowDate); mapper.insert(lhczdfpCaseTask); // 完成待分派节点任务,进去待受理节点 FlowNode lhczdslFlowNode = flowInfoService.completeTask(lhczdfpCaseTask.getFlowableId(), lhczdfpCaseTask.getProcessTaskId(), FlowableConsts.OPERATION_forward, loginUser.getId()); // 创建待受理节点任务 CaseTask lhczdslCaseTask = new CaseTask(); lhczdslCaseTask.setId(utilsClient.getNewTimeId()); lhczdslCaseTask.setCaseId(lhczdfpCaseTask.getCaseId()); lhczdslCaseTask.setFlowableId(lhczdslFlowNode.getFlowableId()); lhczdslCaseTask.setProcessInstanceId(lhczdslFlowNode.getProcessInstanceId()); lhczdslCaseTask.setProcessTaskId(lhczdslFlowNode.getProcessTaskId()); lhczdslCaseTask.setNodeType(lhczdslFlowNode.getNodeType()); lhczdslCaseTask.setNodeId(lhczdslFlowNode.getNodeId()); lhczdslCaseTask.setNodeName(lhczdslFlowNode.getNodeName()); lhczdslCaseTask.setFlowId(lhczdslFlowNode.getFlowId()); lhczdslCaseTask.setNodeShowName(lhczdslFlowNode.getNodeShowName()); lhczdslCaseTask.setCaseTaskType(CaseTaskConsts.CASE_TASK_TYPE_2); // 任务所属单位:交办的配合组织 lhczdslCaseTask.setCandeUnitId(assignAssistUnitDTO.getUitId()); lhczdslCaseTask.setCandeUnitName(assignAssistUnitDTO.getUitName()); // 交办的待受理节点任务,未读 lhczdslCaseTask.setReadStatus(CaseTaskConsts.READ_STATUS_0); lhczdslCaseTask.setStatus(CaseTaskConsts.TASK_STATUS_1); // 任务处理时限 if (lhczdslFlowNode.getExpire() != 0) { lhczdslCaseTask.setExpireTime(syHolidayService.getExpiryDay(nowDate, lhczdslFlowNode.getExpire())); } lhczdslCaseTask.setDeleteStatus(BaseConsts.DELETE_STATUS_0); lhczdslCaseTask.setCustId(lhczdfpCaseTask.getCustId()); lhczdslCaseTask.setCreateTime(nowDate); lhczdslCaseTask.setUpdateTime(nowDate); mapper.insert(lhczdslCaseTask); // 新增联合处置信息 CaseAssistInfo caseAssistInfoPO = new CaseAssistInfo(); caseAssistInfoPO.setId(utilsClient.getNewTimeId()); caseAssistInfoPO.setCaseId(lhczdslCaseTask.getCaseId()); caseAssistInfoPO.setProcessInstanceId(lhczdslCaseTask.getProcessInstanceId()); caseAssistInfoPO.setAssistUnitId(assignAssistUnitDTO.getUitId()); caseAssistInfoPO.setAssistUnitName(assignAssistUnitDTO.getUitName()); caseAssistInfoPO.setAssistStatus(CaseTaskConsts.ASSIST_STATUS_0); caseAssistInfoPO.setCustId(lhczdslCaseTask.getCustId()); caseAssistInfoPO.setCreateTime(nowDate); caseAssistInfoPO.setUpdateTime(nowDate); caseAssistInfoService.save(caseAssistInfoPO); //添加网格待办 this.createGridToDo(caseInfo, lhczdslCaseTask, GridEnum.GRID_OBJECT_TYPE_3.getIndex(), GridBaseConsts.GRID_TYPE_2); } // 更新纠纷扩展信息 CaseInfoUnfold caseInfoUnfoldPO2 = new CaseInfoUnfold(); caseInfoUnfoldPO2.setId(dslCaseTask.getCaseId()); caseInfoUnfoldPO2.setAssistUnitId(assistUnitId); caseInfoUnfoldPO2.setAssistUnitName(assistUnitName); caseInfoUnfoldService.updateCaseInfoUnfold(caseInfoUnfoldPO2); } } catch (Exception e) { log.error("[CaseTaskService.webAssign]调用失败,异常信息:" + e, e); throw new ServiceException("CaseTaskService.webAssign", e); } } /** * web端任务处理-已读 * * @param caseTaskId 任务表单 * @param userId 当前登录用户 */ public void webRead(String caseTaskId, String userId) { try { Date nowDate = DateUtils.getNowDate(); // 获取当前登录用户 CtUserDTO loginUser = custClient.clientGetUserAll(userId); // 更新纠纷任务信息 CaseTask caseTaskPO = new CaseTask(); caseTaskPO.setId(caseTaskId); caseTaskPO.setReadStatus(CaseTaskConsts.READ_STATUS_1); caseTaskPO.setReadTime(nowDate); caseTaskPO.setReadUserId(loginUser.getId()); caseTaskPO.setReadUserName(loginUser.getTrueName()); caseTaskPO.setUpdateTime(nowDate); mapper.updateCaseTask(caseTaskPO); } catch (Exception e) { log.error("[CaseTaskService.webRead]调用失败,异常信息:" + e, e); throw new ServiceException("CaseTaskService.webRead", e); } } /** * web端任务处理-签收 * * @param signTaskDTOList 签收任务表单 * @param userId 当前登录用户 */ public void webSign(List signTaskDTOList, String userId) { try { Date nowDate = DateUtils.getNowDate(); // 获取当前登录用户 CtUserDTO loginUser = custClient.clientGetUserAll(userId); for (SignTaskDTO signTaskDTO : signTaskDTOList) { CaseTask qsCaseTask = mapper.selectById(signTaskDTO.getCaseTaskId()); // 更新纠纷任务信息 CaseTask caseTaskPO = new CaseTask(); caseTaskPO.setId(qsCaseTask.getId()); caseTaskPO.setReadStatus(CaseTaskConsts.READ_STATUS_1); caseTaskPO.setReadTime(nowDate); caseTaskPO.setReadUserId(loginUser.getId()); caseTaskPO.setReadUserName(loginUser.getTrueName()); caseTaskPO.setUpdateTime(nowDate); mapper.updateCaseTask(caseTaskPO); // 承办组织签收才更新纠纷信息 if (CaseTaskConsts.CASE_TASK_TYPE_1 == qsCaseTask.getCaseTaskType()) { // 更新纠纷信息 CaseInfo caseInfoPO = new CaseInfo(); caseInfoPO.setId(qsCaseTask.getCaseId()); caseInfoPO.setStatus(CaseStatusBaseConstsEnum.CASE_STATUS_3.getIndex()); caseInfoPO.setStatusName(CaseStatusBaseConstsEnum.CASE_STATUS_3.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); } //修改网格待办流程 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) { log.error("[CaseTaskService.webSign]调用失败,异常信息:" + e, e); throw new ServiceException("CaseTaskService.webSign", e); } } /** * web端任务处理-受理 * * @param acceptTaskDTO 受理任务表单 * @param userId 当前登录用户 */ public String webAccept(AcceptTaskDTO acceptTaskDTO, String userId) { try { Date nowDate = DateUtils.getNowDate(); // 获取当前登录用户 CtUserDTO loginUser = custClient.clientGetUserAll(userId); // 查询当前待受理节点任务 CaseTask dslCaseTask = mapper.selectById(acceptTaskDTO.getCaseTaskId()); // 完成当前待受理节点任务 CaseTask dslCaseTaskPO = new CaseTask(); dslCaseTaskPO.setId(acceptTaskDTO.getCaseTaskId()); dslCaseTaskPO.setStatus(CaseTaskConsts.TASK_STATUS_2); dslCaseTaskPO.setHandleUnitId(loginUser.getUnitId()); dslCaseTaskPO.setHandleUnitName(loginUser.getUnitName()); dslCaseTaskPO.setHandleDeptId(loginUser.getDeptId()); dslCaseTaskPO.setHandleDeptName(loginUser.getDeptName()); dslCaseTaskPO.setHandleUserId(loginUser.getId()); ; dslCaseTaskPO.setHandleUserName(loginUser.getTrueName()); dslCaseTaskPO.setHandleIllust("已受理"); dslCaseTaskPO.setHandleUserName(loginUser.getTrueName()); dslCaseTaskPO.setHandleResult(CaseTaskConsts.HANDLE_RESULT_0); dslCaseTaskPO.setHandleTime(nowDate); dslCaseTaskPO.setUpdateTime(nowDate); // 计算任务耗时、是否超时、超时多少 dslCaseTaskPO.setUsetimeHour(TaskUsetimeUtils.getUsetimeHour(dslCaseTaskPO.getHandleTime(), dslCaseTask.getCreateTime())); dslCaseTaskPO.setOvertimeStatus(TaskUsetimeUtils.getOvertimeStatus(dslCaseTaskPO.getHandleTime(), dslCaseTask.getExpireTime())); dslCaseTaskPO.setOvertimeHour(TaskUsetimeUtils.getOvertimeHour(dslCaseTaskPO.getHandleTime(), dslCaseTask.getExpireTime())); mapper.updateCaseTask(dslCaseTaskPO); // 完成当前待受理工作流节点任务,机内办理反馈节点 String operation = FlowableConsts.OPERATION_sl; if (CaseTaskConsts.CASE_TASK_TYPE_2 == dslCaseTask.getCaseTaskType()) { // 配合组织受理条件改为通过 operation = FlowableConsts.OPERATION_forward; } FlowNode newFlowNode = flowInfoService.completeTask(dslCaseTask.getFlowableId(), dslCaseTask.getProcessTaskId(), operation, userId); // 新建办理反馈节点任务 CaseTask blfkCaseTask = new CaseTask(); blfkCaseTask.setId(utilsClient.getNewTimeId()); blfkCaseTask.setCaseId(dslCaseTask.getCaseId()); blfkCaseTask.setFlowableId(newFlowNode.getFlowableId()); blfkCaseTask.setProcessInstanceId(newFlowNode.getProcessInstanceId()); blfkCaseTask.setProcessTaskId(newFlowNode.getProcessTaskId()); blfkCaseTask.setNodeType(newFlowNode.getNodeType()); blfkCaseTask.setNodeId(newFlowNode.getNodeId()); blfkCaseTask.setNodeName(newFlowNode.getNodeName()); blfkCaseTask.setFlowId(newFlowNode.getFlowId()); blfkCaseTask.setNodeShowName(newFlowNode.getNodeShowName()); blfkCaseTask.setCaseTaskType(dslCaseTask.getCaseTaskType()); // 任务所属单位:当前受理单位 blfkCaseTask.setCandeUnitId(loginUser.getUnitId()); blfkCaseTask.setCandeUnitName(loginUser.getUnitName()); // 受理后的节点任务,未读 blfkCaseTask.setReadStatus(CaseTaskConsts.READ_STATUS_0); blfkCaseTask.setStatus(CaseTaskConsts.TASK_STATUS_1); // 任务处理时限 if (newFlowNode.getExpire() != 0) { blfkCaseTask.setExpireTime(syHolidayService.getExpiryDay(nowDate, newFlowNode.getExpire())); } blfkCaseTask.setDeleteStatus(BaseConsts.DELETE_STATUS_0); blfkCaseTask.setCustId(dslCaseTask.getCustId()); blfkCaseTask.setCreateTime(nowDate); blfkCaseTask.setUpdateTime(nowDate); mapper.insert(blfkCaseTask); //删除网格待办 dslCaseTaskPO.setCaseId(dslCaseTask.getCaseId()); this.deleteGridTodo(dslCaseTaskPO); //修改网格事件状态 List ownerIdList = new ArrayList<>(); ownerIdList.add(dslCaseTask.getId()); ThreadPoolUtils.executor(new AsynUpdateCaseEventNode(dslCaseTask.getCaseId(), dslCaseTaskPO, blfkCaseTask, GridEnum.getCatByTaskNode(dslCaseTask.getNodeId()), GridEnum.getCatByTaskNode(blfkCaseTask.getNodeId()), ownerIdList, loginUser.getId(), 0, GridEnum.EVENT_PROCESS_STATUS_1.getIndex())); // 承办组织受理才更新纠纷信息 if (CaseTaskConsts.CASE_TASK_TYPE_1 == dslCaseTask.getCaseTaskType()) { // 更新纠纷信息 CaseInfo caseInfoPO = new CaseInfo(); caseInfoPO.setId(blfkCaseTask.getCaseId()); caseInfoPO.setStatus(CaseStatusBaseConstsEnum.CASE_STATUS_4.getIndex()); caseInfoPO.setStatusName(CaseStatusBaseConstsEnum.CASE_STATUS_4.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); CtUnitDTO ctUnitDTO = custClient.getUnitById(loginUser.getUnitId()); if (ObjectUtils.isNotEmpty(ctUnitDTO)) { if (UserBaseConsts.UNIT_TYPE_101 == ctUnitDTO.getUnitType()) { caseInfoPO.setZxslStatus(CaseBaseConsts.ZXSL_STATUS_1); } } caseInfoService.updateCaseInfo(caseInfoPO); // 更新纠纷扩展信息 CaseInfoUnfold caseInfoUnfoldPO = new CaseInfoUnfold(); caseInfoUnfoldPO.setId(blfkCaseTask.getCaseId()); caseInfoUnfoldPO.setAcceptTime(nowDate); caseInfoUnfoldPO.setMediateUnitId(blfkCaseTask.getCandeUnitId()); caseInfoUnfoldPO.setMediateUnitName(blfkCaseTask.getCandeUnitName()); caseInfoUnfoldPO.setBelongUnitId(blfkCaseTask.getCandeUnitId()); caseInfoUnfoldPO.setBelongUnitName(blfkCaseTask.getCandeUnitName()); caseInfoUnfoldService.updateCaseInfoUnfold(caseInfoUnfoldPO); } else { // 更新配合组织联合处置信息 QueryWrapper caseAssistInfoQueryWrapper = new QueryWrapper<>(); caseAssistInfoQueryWrapper.eq("case_id", blfkCaseTask.getCaseId()) .eq("assist_unit_id", loginUser.getUnitId()).eq("assist_status", CaseTaskConsts.ASSIST_STATUS_0); CaseAssistInfo caseAssistInfoPO = caseAssistInfoService.getOne(caseAssistInfoQueryWrapper); caseAssistInfoPO.setCaseTaskId(blfkCaseTask.getId()); caseAssistInfoPO.setAcceptTime(nowDate); caseAssistInfoService.updateCaseAssistInfo(caseAssistInfoPO); } return blfkCaseTask.getId(); } catch (Exception e) { log.error("[CaseTaskService.webAccept]调用失败,异常信息:" + e, e); throw new ServiceException("CaseTaskService.webAccept", e); } } /** * web端任务处理-结案申请 * * @param caseWindupApply 结案申请表单 * @param userId 当前登录用户 */ public void webWindupApply(CaseWindupApply caseWindupApply, String userId) { try { Date nowDate = DateUtils.getNowDate(); // 获取当前登录用户 CtUserDTO loginUser = custClient.clientGetUserAll(userId); // 新增结案申请信息 caseWindupApply.setApplyUnitId(loginUser.getUnitId()); caseWindupApply.setApplyUnitName(loginUser.getUnitName()); caseWindupApply.setApplyUserId(loginUser.getId()); caseWindupApply.setApplyUserName(loginUser.getTrueName()); caseWindupApply.setApplyTime(nowDate); caseWindupApply.setDeleteStatus(BaseConsts.DELETE_STATUS_0); caseWindupApply.setCreateTime(nowDate); caseWindupApply.setUpdateTime(nowDate); // 查询办理反馈节点任务 CaseTask blfkCaseTask = mapper.selectById(caseWindupApply.getCaseTaskId()); // 完成当前办理反馈节点任务 CaseTask blfkCaseTaskPO = new CaseTask(); blfkCaseTaskPO.setId(caseWindupApply.getCaseTaskId()); blfkCaseTaskPO.setStatus(CaseTaskConsts.TASK_STATUS_2); blfkCaseTaskPO.setHandleUnitId(loginUser.getUnitId()); blfkCaseTaskPO.setHandleUnitName(loginUser.getUnitName()); blfkCaseTaskPO.setHandleDeptId(loginUser.getDeptId()); blfkCaseTaskPO.setHandleDeptName(loginUser.getDeptName()); blfkCaseTaskPO.setHandleUserId(loginUser.getId()); blfkCaseTaskPO.setHandleUserName(loginUser.getTrueName()); blfkCaseTaskPO.setHandleResult(CaseTaskConsts.HANDLE_RESULT_0); blfkCaseTaskPO.setHandleTime(nowDate); blfkCaseTaskPO.setUpdateTime(nowDate); // 计算任务耗时、是否超时、超时多少 blfkCaseTaskPO.setUsetimeHour(TaskUsetimeUtils.getUsetimeHour(blfkCaseTaskPO.getHandleTime(), blfkCaseTask.getCreateTime())); blfkCaseTaskPO.setOvertimeStatus(TaskUsetimeUtils.getOvertimeStatus(blfkCaseTaskPO.getHandleTime(), blfkCaseTask.getExpireTime())); blfkCaseTaskPO.setOvertimeHour(TaskUsetimeUtils.getOvertimeHour(blfkCaseTaskPO.getHandleTime(), blfkCaseTask.getExpireTime())); mapper.updateCaseTask(blfkCaseTaskPO); // 完成当前待受理工作流节点任务,进入结案申请节点 log.info("xsd:结案申请"); FlowNode jasqFlowNode = flowInfoService.completeTask(blfkCaseTask.getFlowableId(), blfkCaseTask.getProcessTaskId(), FlowableConsts.OPERATION_forward, userId); // 新建并自动完成结案申请节点任务 CaseTask jasqCaseTask = new CaseTask(); jasqCaseTask.setId(utilsClient.getNewTimeId()); jasqCaseTask.setCaseId(blfkCaseTask.getCaseId()); jasqCaseTask.setFlowableId(jasqFlowNode.getFlowableId()); jasqCaseTask.setProcessInstanceId(jasqFlowNode.getProcessInstanceId()); jasqCaseTask.setProcessTaskId(jasqFlowNode.getProcessTaskId()); jasqCaseTask.setNodeType(jasqFlowNode.getNodeType()); jasqCaseTask.setNodeId(jasqFlowNode.getNodeId()); jasqCaseTask.setNodeName(jasqFlowNode.getNodeName()); jasqCaseTask.setFlowId(jasqFlowNode.getFlowId()); jasqCaseTask.setNodeShowName(jasqFlowNode.getNodeShowName()); jasqCaseTask.setCaseTaskType(CaseTaskConsts.CASE_TASK_TYPE_1); // 任务所属单位:当前结案申请组织 jasqCaseTask.setCandeUnitId(loginUser.getUnitId()); jasqCaseTask.setCandeUnitName(loginUser.getUnitName()); // 受理后的节点任务,未读 jasqCaseTask.setReadStatus(CaseTaskConsts.READ_STATUS_0); // 任务处理时限 if (jasqFlowNode.getExpire() != 0) { jasqCaseTask.setExpireTime(syHolidayService.getExpiryDay(nowDate, jasqFlowNode.getExpire())); } else { jasqCaseTask.setExpireTime(syHolidayService.getExpiryDay(nowDate, 14)); } jasqCaseTask.setStatus(CaseTaskConsts.TASK_STATUS_2); jasqCaseTask.setHandleUnitId(loginUser.getUnitId()); jasqCaseTask.setHandleUnitName(loginUser.getUnitName()); jasqCaseTask.setHandleDeptId(loginUser.getDeptId()); jasqCaseTask.setHandleDeptName(loginUser.getDeptName()); jasqCaseTask.setHandleUserId(loginUser.getId()); jasqCaseTask.setHandleUserName(loginUser.getTrueName()); jasqCaseTask.setHandleContent(caseWindupApply.getWindupContent()); jasqCaseTask.setHandleResult(CaseTaskConsts.HANDLE_RESULT_0); jasqCaseTask.setHandleTime(nowDate); jasqCaseTask.setDeleteStatus(BaseConsts.DELETE_STATUS_0); jasqCaseTask.setCustId(blfkCaseTask.getCustId()); jasqCaseTask.setCreateTime(nowDate); jasqCaseTask.setUpdateTime(nowDate); // 计算任务耗时、是否超时、超时多少 jasqCaseTask.setUsetimeHour(TaskUsetimeUtils.getUsetimeHour(jasqCaseTask.getHandleTime(), jasqCaseTask.getCreateTime())); jasqCaseTask.setOvertimeStatus(TaskUsetimeUtils.getOvertimeStatus(jasqCaseTask.getHandleTime(), jasqCaseTask.getExpireTime())); jasqCaseTask.setOvertimeHour(TaskUsetimeUtils.getOvertimeHour(jasqCaseTask.getHandleTime(), jasqCaseTask.getExpireTime())); mapper.insert(jasqCaseTask); //修改网格事件状态 List ownerIdList = new ArrayList<>(); ownerIdList.add(jasqCaseTask.getId()); ownerIdList.add(blfkCaseTask.getId()); QueryWrapper caseFeedbackQueryWrapper1 = new QueryWrapper<>(); caseFeedbackQueryWrapper1.eq("case_id", jasqCaseTask.getCaseId()).eq("delete_status", BaseConsts.DELETE_STATUS_0); List caseFeedbackList = caseFeedbackService.list(caseFeedbackQueryWrapper1); if (ObjectUtils.isNotEmpty(caseFeedbackList)) { ownerIdList.addAll(caseFeedbackList.stream().map(CaseFeedback::getId).collect(Collectors.toList())); } ThreadPoolUtils.executor(new AsynUpdateCaseEventNode(jasqCaseTask.getCaseId(), blfkCaseTaskPO, jasqCaseTask, GridEnum.getCatByTaskNode(blfkCaseTask.getNodeId()), GridEnum.EVENT_FLOW_7.getIndex(), ownerIdList, loginUser.getId(), 0, GridEnum.EVENT_PROCESS_STATUS_1.getIndex())); // 1、如果是综治中心自己结案,就直接结案 // 2、交办案件,如果不是,不管成功与否,就审核,审核部门为当前提交部门对应的综治中心 // 3、自行受理,直接结案 CaseInfo caseInfo = caseInfoService.getById(jasqCaseTask.getCaseId()); // 判断是否自行受理 if (CaseBaseConsts.ZXSL_STATUS_1 == caseInfo.getZxslStatus()) { // 完成当前结案申请工作流节点任务,走结案审核任务 FlowNode jashFlowNode = flowInfoService.completeTask(jasqCaseTask.getFlowableId(), jasqCaseTask.getProcessTaskId(), FlowableConsts.OPERATION_forward, userId); // 新建并自动完成结案审核任务 CaseTask jashCaseTask = new CaseTask(); jashCaseTask.setId(utilsClient.getNewTimeId()); jashCaseTask.setCaseId(jasqCaseTask.getCaseId()); jashCaseTask.setFlowableId(jashFlowNode.getFlowableId()); jashCaseTask.setProcessInstanceId(jashFlowNode.getProcessInstanceId()); jashCaseTask.setProcessTaskId(jashFlowNode.getProcessTaskId()); jashCaseTask.setNodeType(jashFlowNode.getNodeType()); jashCaseTask.setNodeId(jashFlowNode.getNodeId()); jashCaseTask.setNodeName(jashFlowNode.getNodeName()); jashCaseTask.setFlowId(jashFlowNode.getFlowId()); jashCaseTask.setNodeShowName(jashFlowNode.getNodeShowName()); jashCaseTask.setCaseTaskType(CaseTaskConsts.CASE_TASK_TYPE_1); // 任务所属单位:结案申请操作组织 jashCaseTask.setCandeUnitId(loginUser.getUnitId()); jashCaseTask.setCandeUnitName(loginUser.getUnitName()); // 受理后的节点任务,未读 jashCaseTask.setReadStatus(CaseTaskConsts.READ_STATUS_0); // 任务处理时限 if (jashFlowNode.getExpire() != 0) { jashCaseTask.setExpireTime(syHolidayService.getExpiryDay(nowDate, jashFlowNode.getExpire())); } jashCaseTask.setStatus(CaseTaskConsts.TASK_STATUS_2); jashCaseTask.setHandleUnitId(loginUser.getUnitId()); jashCaseTask.setHandleUnitName(loginUser.getUnitName()); jashCaseTask.setHandleDeptId(loginUser.getDeptId()); jashCaseTask.setHandleDeptName(loginUser.getDeptName()); jashCaseTask.setHandleUserId(loginUser.getId()); jashCaseTask.setHandleUserName(loginUser.getTrueName()); jashCaseTask.setHandleResult(CaseTaskConsts.HANDLE_RESULT_1); jashCaseTask.setHandleTime(DateUtils.addMinute(nowDate, 1)); jashCaseTask.setDeleteStatus(BaseConsts.DELETE_STATUS_0); jashCaseTask.setCustId(jasqCaseTask.getCustId()); jashCaseTask.setCreateTime(DateUtils.addMinute(nowDate, 1)); jashCaseTask.setUpdateTime(DateUtils.addMinute(nowDate, 1)); // 计算任务耗时、是否超时、超时多少 jashCaseTask.setUsetimeHour(TaskUsetimeUtils.getUsetimeHour(jashCaseTask.getHandleTime(), jashCaseTask.getCreateTime())); jashCaseTask.setOvertimeStatus(TaskUsetimeUtils.getOvertimeStatus(jashCaseTask.getHandleTime(), jashCaseTask.getExpireTime())); jashCaseTask.setOvertimeHour(TaskUsetimeUtils.getOvertimeHour(jashCaseTask.getHandleTime(), jashCaseTask.getExpireTime())); mapper.insert(jashCaseTask); //修改网格事件状态 List ownerIdList1 = new ArrayList<>(); ownerIdList1.add(jashCaseTask.getId()); ThreadPoolUtils.executor(new AsynUpdateCaseEventNode(jashCaseTask.getCaseId(), jasqCaseTask, jashCaseTask, GridEnum.EVENT_FLOW_7.getIndex(), GridEnum.getCatByTaskNode("DSRPJ"), ownerIdList1, loginUser.getId(), 5000, GridEnum.EVENT_PROCESS_STATUS_2.getIndex())); // 完成当前结案审核工作流任务,走下一个节点 log.info("xsd:结案审核"); FlowNode nextFlowNode = flowInfoService.completeTask(jashCaseTask.getFlowableId(), jashCaseTask.getProcessTaskId(), FlowableConsts.OPERATION_jash_ty, userId); // 下一个节点是当事人评价节点,进入当事人评价节点任务 if (FlowNodeEnum.FLOW_NODE_DSRPJ.getIndex().equals(nextFlowNode.getNodeId())) { // 新建当事人评价节点任务 CaseTask dsrpjCaseTask = new CaseTask(); dsrpjCaseTask.setId(utilsClient.getNewTimeId()); dsrpjCaseTask.setCaseId(jashCaseTask.getCaseId()); dsrpjCaseTask.setFlowableId(nextFlowNode.getFlowableId()); dsrpjCaseTask.setProcessInstanceId(nextFlowNode.getProcessInstanceId()); dsrpjCaseTask.setProcessTaskId(nextFlowNode.getProcessTaskId()); dsrpjCaseTask.setNodeType(nextFlowNode.getNodeType()); dsrpjCaseTask.setNodeId(nextFlowNode.getNodeId()); dsrpjCaseTask.setNodeName(nextFlowNode.getNodeName()); dsrpjCaseTask.setFlowId(nextFlowNode.getFlowId()); dsrpjCaseTask.setNodeShowName(nextFlowNode.getNodeShowName()); dsrpjCaseTask.setCaseTaskType(CaseTaskConsts.CASE_TASK_TYPE_1); // 任务所属人:当事人 EvaluatePersonDTO evaluatePersonDTO = casePersonService.getEvaluatePerson(jashCaseTask.getCaseId()); dsrpjCaseTask.setCandeUserId(evaluatePersonDTO.getId()); dsrpjCaseTask.setCandeUserId(evaluatePersonDTO.getName()); // 受理后的节点任务,未读 dsrpjCaseTask.setReadStatus(CaseTaskConsts.READ_STATUS_0); // 任务处理时限 if (nextFlowNode.getExpire() != 0) { dsrpjCaseTask.setExpireTime(syHolidayService.getExpiryDay(nowDate, nextFlowNode.getExpire())); } dsrpjCaseTask.setStatus(CaseTaskConsts.TASK_STATUS_1); dsrpjCaseTask.setDeleteStatus(BaseConsts.DELETE_STATUS_0); dsrpjCaseTask.setCustId(jashCaseTask.getCustId()); dsrpjCaseTask.setCreateTime(DateUtils.addMinute(nowDate, 2)); dsrpjCaseTask.setUpdateTime(DateUtils.addMinute(nowDate, 2)); mapper.insert(dsrpjCaseTask); // 更新纠纷信息 CaseInfo caseInfoPO = new CaseInfo(); caseInfoPO.setId(jashCaseTask.getCaseId()); caseInfoPO.setStatus(CaseStatusBaseConstsEnum.CASE_STATUS_6.getIndex()); caseInfoPO.setStatusName(CaseStatusBaseConstsEnum.CASE_STATUS_6.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); } // 下一个节点是结案归档节点,进入结案归档节点任务 if (FlowNodeEnum.FLOW_NODE_JAGD.getIndex().equals(nextFlowNode.getNodeId())) { // 创建并完成结案归档节点任务 CaseTask jagdCaseTask = new CaseTask(); jagdCaseTask.setId(utilsClient.getNewTimeId()); jagdCaseTask.setCaseId(jashCaseTask.getCaseId()); jagdCaseTask.setFlowableId(nextFlowNode.getFlowableId()); jagdCaseTask.setProcessInstanceId(nextFlowNode.getProcessInstanceId()); jagdCaseTask.setProcessTaskId(nextFlowNode.getProcessTaskId()); jagdCaseTask.setNodeType(nextFlowNode.getNodeType()); jagdCaseTask.setNodeId(nextFlowNode.getNodeId()); jagdCaseTask.setNodeName(nextFlowNode.getNodeName()); jagdCaseTask.setFlowId(nextFlowNode.getFlowId()); jagdCaseTask.setNodeShowName(nextFlowNode.getNodeShowName()); jagdCaseTask.setCaseTaskType(CaseTaskConsts.CASE_TASK_TYPE_1); // 任务所属单位:结案申请操作组织 jagdCaseTask.setCandeUnitId(loginUser.getUnitId()); jagdCaseTask.setCandeUnitName(loginUser.getUnitName()); // 受理后的节点任务,未读 jagdCaseTask.setReadStatus(CaseTaskConsts.READ_STATUS_0); // 任务处理时限 if (nextFlowNode.getExpire() != 0) { jagdCaseTask.setExpireTime(syHolidayService.getExpiryDay(nowDate, nextFlowNode.getExpire())); } jagdCaseTask.setStatus(CaseTaskConsts.TASK_STATUS_2); jashCaseTask.setHandleUnitId(loginUser.getUnitId()); jashCaseTask.setHandleUnitName(loginUser.getUnitName()); jashCaseTask.setHandleDeptId(loginUser.getDeptId()); jashCaseTask.setHandleDeptName(loginUser.getDeptName()); jashCaseTask.setHandleUserId(loginUser.getId()); jashCaseTask.setHandleUserName(loginUser.getTrueName()); jagdCaseTask.setHandleResult(CaseTaskConsts.HANDLE_RESULT_0); jagdCaseTask.setHandleTime(nowDate); jagdCaseTask.setDeleteStatus(BaseConsts.DELETE_STATUS_0); jagdCaseTask.setCustId(jashCaseTask.getCustId()); jagdCaseTask.setCreateTime(nowDate); jagdCaseTask.setUpdateTime(nowDate); // 计算任务耗时、是否超时、超时多少 jagdCaseTask.setUsetimeHour(TaskUsetimeUtils.getUsetimeHour(jagdCaseTask.getHandleTime(), jagdCaseTask.getCreateTime())); jagdCaseTask.setOvertimeStatus(TaskUsetimeUtils.getOvertimeStatus(jagdCaseTask.getHandleTime(), jagdCaseTask.getExpireTime())); jagdCaseTask.setOvertimeHour(TaskUsetimeUtils.getOvertimeHour(jagdCaseTask.getHandleTime(), jagdCaseTask.getExpireTime())); mapper.insert(jagdCaseTask); // 完成结案归档工作流节点任务,结束流程 log.info("xsd:结案归档"); caseInfo = caseInfoService.getById(caseWindupApply.getCaseId()); Date createTime = caseInfo.getCreateTime(); // 创建 2025年4月30日 的日期对象 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); Date targetDate = sdf.parse("2025-04-30"); if (createTime != null && createTime.after(targetDate)) { flowInfoService.completeTask(jagdCaseTask.getFlowableId(), jagdCaseTask.getProcessTaskId(), FlowableConsts.OPERATION_jb_zszz, loginUser.getId()); } log.info("xsd:结案归档成功"); // 更新纠纷信息 CaseInfo caseInfoPO = new CaseInfo(); caseInfoPO.setId(jashCaseTask.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); List ownerIdListNew = new ArrayList<>(); //修改网格事件状态 ThreadPoolUtils.executor(new AsynUpdateCaseEventNode(jashCaseTask.getCaseId(), jashCaseTask, jagdCaseTask, GridEnum.getCatByTaskNode("DSRPJ"), GridEnum.getCatByTaskNode(jagdCaseTask.getNodeId()), ownerIdListNew, loginUser.getId(), 10000, GridEnum.EVENT_PROCESS_STATUS_2.getIndex())); } // 更新结案申请信息 caseWindupApply.setApplyStatus(AuditBaseConsts.AUDIT_STATUS_1); caseWindupApply.setCaseTaskId(jashCaseTask.getId()); caseWindupApply.setAuditUnitId(jashCaseTask.getHandleUnitId()); caseWindupApply.setAuditUnitName(jashCaseTask.getHandleUnitName()); caseWindupApply.setAuditUserId(jashCaseTask.getHandleUserId()); caseWindupApply.setAuditUserName(jashCaseTask.getHandleUserName()); caseWindupApply.setAuditTime(nowDate); caseWindupApply.setAuditResult(AuditBaseConstsEnum.AUDIT_RESULT_1.getIndex()); caseWindupApply.setAuditResultName(AuditBaseConstsEnum.AUDIT_RESULT_1.getDes()); caseWindupApply.setCustId(jashCaseTask.getCustId()); caseWindupApplyService.save(caseWindupApply); // 更新纠纷扩展信息 CaseInfoUnfold caseInfoUnfoldPO = new CaseInfoUnfold(); caseInfoUnfoldPO.setId(jashCaseTask.getCaseId()); caseInfoUnfoldPO.setMediResult(caseWindupApply.getMediResult()); caseInfoUnfoldPO.setMediResultName(caseWindupApply.getMediResultName()); caseInfoUnfoldPO.setAgreeType(caseWindupApply.getAgreeType()); caseInfoUnfoldPO.setAgreeTypeName(caseWindupApply.getAgreeTypeName()); caseInfoUnfoldPO.setAgreeContent(caseWindupApply.getAgreeContent()); caseInfoUnfoldPO.setWindupContent(caseWindupApply.getWindupContent()); caseInfoUnfoldPO.setCloseTime(nowDate); caseInfoUnfoldPO.setUpdateTime(nowDate); caseInfoUnfoldService.updateCaseInfoUnfold(caseInfoUnfoldPO); } else {// 不是自行受理 // 完成当前结案申请工作流节点任务 FlowNode jashFlowNode = flowInfoService.completeTask(jasqCaseTask.getFlowableId(), jasqCaseTask.getProcessTaskId(), FlowableConsts.OPERATION_forward, userId); //判断是否是综治中心 String unitId = loginUser.getUnitId(); CtUnitDTO unitById = custClient.getUnitById(unitId); if (unitById != null && 101 == unitById.getUnitType()) { // 是综治中心,自行完成结案审核节点,直接进入下一个节点 // 新建并自动完成结案审核任务 CaseTask jashCaseTask = new CaseTask(); jashCaseTask.setId(utilsClient.getNewTimeId()); jashCaseTask.setCaseId(jasqCaseTask.getCaseId()); jashCaseTask.setFlowableId(jashFlowNode.getFlowableId()); jashCaseTask.setProcessInstanceId(jashFlowNode.getProcessInstanceId()); jashCaseTask.setProcessTaskId(jashFlowNode.getProcessTaskId()); jashCaseTask.setNodeType(jashFlowNode.getNodeType()); jashCaseTask.setNodeId(jashFlowNode.getNodeId()); jashCaseTask.setNodeName(jashFlowNode.getNodeName()); jashCaseTask.setFlowId(jashFlowNode.getFlowId()); jashCaseTask.setNodeShowName(jashFlowNode.getNodeShowName()); jashCaseTask.setCaseTaskType(CaseTaskConsts.CASE_TASK_TYPE_1); // 任务所属单位:结案申请操作组织 jashCaseTask.setCandeUnitId(loginUser.getUnitId()); jashCaseTask.setCandeUnitName(loginUser.getUnitName()); // 受理后的节点任务,未读 jashCaseTask.setReadStatus(CaseTaskConsts.READ_STATUS_0); // 任务处理时限 if (jashFlowNode.getExpire() != 0) { jashCaseTask.setExpireTime(syHolidayService.getExpiryDay(nowDate, jashFlowNode.getExpire())); } jashCaseTask.setStatus(CaseTaskConsts.TASK_STATUS_2); jashCaseTask.setHandleUnitId(loginUser.getUnitId()); jashCaseTask.setHandleUnitName(loginUser.getUnitName()); jashCaseTask.setHandleDeptId(loginUser.getDeptId()); jashCaseTask.setHandleDeptName(loginUser.getDeptName()); jashCaseTask.setHandleUserId(loginUser.getId()); jashCaseTask.setHandleUserName(loginUser.getTrueName()); jashCaseTask.setHandleResult(CaseTaskConsts.HANDLE_RESULT_1); jashCaseTask.setHandleTime(DateUtils.addMinute(nowDate, 1)); jashCaseTask.setDeleteStatus(BaseConsts.DELETE_STATUS_0); jashCaseTask.setCustId(jasqCaseTask.getCustId()); jashCaseTask.setCreateTime(DateUtils.addMinute(nowDate, 1)); jashCaseTask.setUpdateTime(DateUtils.addMinute(nowDate, 1)); // 计算任务耗时、是否超时、超时多少 jashCaseTask.setUsetimeHour(TaskUsetimeUtils.getUsetimeHour(jashCaseTask.getHandleTime(), jashCaseTask.getCreateTime())); jashCaseTask.setOvertimeStatus(TaskUsetimeUtils.getOvertimeStatus(jashCaseTask.getHandleTime(), jashCaseTask.getExpireTime())); jashCaseTask.setOvertimeHour(TaskUsetimeUtils.getOvertimeHour(jashCaseTask.getHandleTime(), jashCaseTask.getExpireTime())); mapper.insert(jashCaseTask); //修改网格事件状态 List ownerIdList1 = new ArrayList<>(); ownerIdList1.add(jashCaseTask.getId()); ThreadPoolUtils.executor(new AsynUpdateCaseEventNode(jashCaseTask.getCaseId(), jasqCaseTask, jashCaseTask, GridEnum.EVENT_FLOW_7.getIndex(), GridEnum.getCatByTaskNode("DSRPJ"), ownerIdList, loginUser.getId(), 0, GridEnum.EVENT_PROCESS_STATUS_1.getIndex())); // 完成当前结案审核工作流任务,走下一个节点 FlowNode nextFlowNode = flowInfoService.completeTask(jashCaseTask.getFlowableId(), jashCaseTask.getProcessTaskId(), FlowableConsts.OPERATION_jash_ty, userId); List ownerIdListJA = new ArrayList<>(); // 下一个节点是当事人评价节点,进入当事人评价节点任务 if (FlowNodeEnum.FLOW_NODE_DSRPJ.getIndex().equals(nextFlowNode.getNodeId())) { // 新建当事人评价节点任务 CaseTask dsrpjCaseTask = new CaseTask(); dsrpjCaseTask.setId(utilsClient.getNewTimeId()); dsrpjCaseTask.setCaseId(jashCaseTask.getCaseId()); dsrpjCaseTask.setFlowableId(nextFlowNode.getFlowableId()); dsrpjCaseTask.setProcessInstanceId(nextFlowNode.getProcessInstanceId()); dsrpjCaseTask.setProcessTaskId(nextFlowNode.getProcessTaskId()); dsrpjCaseTask.setNodeType(nextFlowNode.getNodeType()); dsrpjCaseTask.setNodeId(nextFlowNode.getNodeId()); dsrpjCaseTask.setNodeName(nextFlowNode.getNodeName()); dsrpjCaseTask.setFlowId(nextFlowNode.getFlowId()); dsrpjCaseTask.setNodeShowName(nextFlowNode.getNodeShowName()); dsrpjCaseTask.setCaseTaskType(CaseTaskConsts.CASE_TASK_TYPE_1); // 任务所属人:当事人 EvaluatePersonDTO evaluatePersonDTO = casePersonService.getEvaluatePerson(jashCaseTask.getCaseId()); dsrpjCaseTask.setCandeUserId(evaluatePersonDTO.getId()); dsrpjCaseTask.setCandeUserId(evaluatePersonDTO.getName()); // 受理后的节点任务,未读 dsrpjCaseTask.setReadStatus(CaseTaskConsts.READ_STATUS_0); // 任务处理时限 if (nextFlowNode.getExpire() != 0) { dsrpjCaseTask.setExpireTime(syHolidayService.getExpiryDay(nowDate, nextFlowNode.getExpire())); } dsrpjCaseTask.setStatus(CaseTaskConsts.TASK_STATUS_1); dsrpjCaseTask.setDeleteStatus(BaseConsts.DELETE_STATUS_0); dsrpjCaseTask.setCustId(jashCaseTask.getCustId()); dsrpjCaseTask.setCreateTime(DateUtils.addMinute(nowDate, 2)); dsrpjCaseTask.setUpdateTime(DateUtils.addMinute(nowDate, 2)); mapper.insert(dsrpjCaseTask); // 更新纠纷信息 CaseInfo caseInfoPO = new CaseInfo(); caseInfoPO.setId(jashCaseTask.getCaseId()); caseInfoPO.setStatus(CaseStatusBaseConstsEnum.CASE_STATUS_6.getIndex()); caseInfoPO.setStatusName(CaseStatusBaseConstsEnum.CASE_STATUS_6.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); ownerIdListJA.add(dsrpjCaseTask.getId()); } // 下一个节点是结案归档节点,进入结案归档节点任务 if (FlowNodeEnum.FLOW_NODE_JAGD.getIndex().equals(nextFlowNode.getNodeId())) { // 创建并完成结案归档节点任务 CaseTask jagdCaseTask = new CaseTask(); jagdCaseTask.setId(utilsClient.getNewTimeId()); jagdCaseTask.setCaseId(jashCaseTask.getCaseId()); jagdCaseTask.setFlowableId(nextFlowNode.getFlowableId()); jagdCaseTask.setProcessInstanceId(nextFlowNode.getProcessInstanceId()); jagdCaseTask.setProcessTaskId(nextFlowNode.getProcessTaskId()); jagdCaseTask.setNodeType(nextFlowNode.getNodeType()); jagdCaseTask.setNodeId(nextFlowNode.getNodeId()); jagdCaseTask.setNodeName(nextFlowNode.getNodeName()); jagdCaseTask.setFlowId(nextFlowNode.getFlowId()); jagdCaseTask.setNodeShowName(nextFlowNode.getNodeShowName()); jagdCaseTask.setCaseTaskType(CaseTaskConsts.CASE_TASK_TYPE_1); // 任务所属单位:结案申请操作组织 jagdCaseTask.setCandeUnitId(loginUser.getUnitId()); jagdCaseTask.setCandeUnitName(loginUser.getUnitName()); // 受理后的节点任务,未读 jagdCaseTask.setReadStatus(CaseTaskConsts.READ_STATUS_0); // 任务处理时限 if (nextFlowNode.getExpire() != 0) { jagdCaseTask.setExpireTime(syHolidayService.getExpiryDay(nowDate, nextFlowNode.getExpire())); } jagdCaseTask.setStatus(CaseTaskConsts.TASK_STATUS_2); jagdCaseTask.setHandleUnitId(loginUser.getUnitId()); jagdCaseTask.setHandleUnitName(loginUser.getUnitName()); jagdCaseTask.setHandleDeptId(loginUser.getDeptId()); jagdCaseTask.setHandleDeptName(loginUser.getDeptName()); jagdCaseTask.setHandleUserId(loginUser.getId()); jagdCaseTask.setHandleUserName(loginUser.getTrueName()); jagdCaseTask.setHandleResult(CaseTaskConsts.HANDLE_RESULT_0); jagdCaseTask.setHandleTime(DateUtils.addMinute(nowDate, 2)); jagdCaseTask.setDeleteStatus(BaseConsts.DELETE_STATUS_0); jagdCaseTask.setCustId(jashCaseTask.getCustId()); jagdCaseTask.setCreateTime(DateUtils.addMinute(nowDate, 2)); jagdCaseTask.setUpdateTime(DateUtils.addMinute(nowDate, 2)); // 计算任务耗时、是否超时、超时多少 jagdCaseTask.setUsetimeHour(TaskUsetimeUtils.getUsetimeHour(jagdCaseTask.getHandleTime(), jagdCaseTask.getCreateTime())); jagdCaseTask.setOvertimeStatus(TaskUsetimeUtils.getOvertimeStatus(jagdCaseTask.getHandleTime(), jagdCaseTask.getExpireTime())); jagdCaseTask.setOvertimeHour(TaskUsetimeUtils.getOvertimeHour(jagdCaseTask.getHandleTime(), jagdCaseTask.getExpireTime())); mapper.insert(jagdCaseTask); // 完成结案归档工作流节点任务,结束流程 Date createTime = caseInfo.getCreateTime(); // 创建 2025年4月30日 的日期对象 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); Date targetDate = sdf.parse("2025-04-30"); if (createTime != null && createTime.after(targetDate)) { flowInfoService.completeTask(jagdCaseTask.getFlowableId(), jagdCaseTask.getProcessTaskId(), FlowableConsts.OPERATION_jb_zszz, loginUser.getId()); } // 更新纠纷信息 CaseInfo caseInfoPO = new CaseInfo(); caseInfoPO.setId(jashCaseTask.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); ownerIdListJA.add(jagdCaseTask.getId()); //修改网格事件状态 ThreadPoolUtils.executor(new AsynUpdateCaseEventNode(jashCaseTask.getCaseId(), jashCaseTask, jagdCaseTask, GridEnum.getCatByTaskNode("DSRPJ"), GridEnum.getCatByTaskNode(jagdCaseTask.getNodeId()), ownerIdListJA, loginUser.getId(), 5000, GridEnum.EVENT_PROCESS_STATUS_3.getIndex())); } // 更新结案申请信息 caseWindupApply.setApplyStatus(AuditBaseConsts.AUDIT_STATUS_1); caseWindupApply.setCaseTaskId(jashCaseTask.getId()); caseWindupApply.setAuditUnitId(jashCaseTask.getHandleUnitId()); caseWindupApply.setAuditUnitName(jashCaseTask.getHandleUnitName()); caseWindupApply.setAuditUserId(jashCaseTask.getHandleUserId()); caseWindupApply.setAuditUserName(jashCaseTask.getHandleUserName()); caseWindupApply.setAuditTime(nowDate); caseWindupApply.setAuditResult(AuditBaseConstsEnum.AUDIT_RESULT_1.getIndex()); caseWindupApply.setAuditResultName(AuditBaseConstsEnum.AUDIT_RESULT_1.getDes()); caseWindupApply.setCustId(jashCaseTask.getCustId()); if (StringUtils.isEmpty(caseWindupApply.getWindupContent())) { caseWindupApply.setWindupContent(caseWindupApply.getFailReason()); } caseWindupApplyService.save(caseWindupApply); // 更新纠纷扩展信息 CaseInfoUnfold caseInfoUnfoldPO = new CaseInfoUnfold(); caseInfoUnfoldPO.setId(jashCaseTask.getCaseId()); caseInfoUnfoldPO.setMediResult(caseWindupApply.getMediResult()); caseInfoUnfoldPO.setMediResultName(caseWindupApply.getMediResultName()); caseInfoUnfoldPO.setAgreeType(caseWindupApply.getAgreeType()); caseInfoUnfoldPO.setAgreeTypeName(caseWindupApply.getAgreeTypeName()); caseInfoUnfoldPO.setAgreeContent(caseWindupApply.getAgreeContent()); caseInfoUnfoldPO.setWindupContent(caseWindupApply.getWindupContent()); caseInfoUnfoldPO.setCloseTime(nowDate); caseInfoUnfoldPO.setUpdateTime(nowDate); caseInfoUnfoldService.updateCaseInfoUnfold(caseInfoUnfoldPO); } else { // 正常流程,进入结案审核节点 // 新建结案审核任务 CaseTask jashCaseTask = new CaseTask(); jashCaseTask.setId(utilsClient.getNewTimeId()); jashCaseTask.setCaseId(jasqCaseTask.getCaseId()); jashCaseTask.setFlowableId(jashFlowNode.getFlowableId()); jashCaseTask.setProcessInstanceId(jashFlowNode.getProcessInstanceId()); jashCaseTask.setProcessTaskId(jashFlowNode.getProcessTaskId()); jashCaseTask.setNodeType(jashFlowNode.getNodeType()); jashCaseTask.setNodeId(jashFlowNode.getNodeId()); jashCaseTask.setNodeName(jashFlowNode.getNodeName()); jashCaseTask.setFlowId(jashFlowNode.getFlowId()); jashCaseTask.setNodeShowName(jashFlowNode.getNodeShowName()); jashCaseTask.setCaseTaskType(CaseTaskConsts.CASE_TASK_TYPE_1); // 任务所属单位:本级综治中心审核 CtUnitDTO zzzxCtUnitDTO = custClient.getBjZzzx(loginUser.getUnitId()); jashCaseTask.setCandeUnitId(zzzxCtUnitDTO.getId()); jashCaseTask.setCandeUnitName(zzzxCtUnitDTO.getUnitName()); // 受理后的节点任务,未读 jashCaseTask.setReadStatus(CaseTaskConsts.READ_STATUS_0); // 任务处理时限 if (jashFlowNode.getExpire() != 0) { jashCaseTask.setExpireTime(syHolidayService.getExpiryDay(nowDate, jashFlowNode.getExpire())); } jashCaseTask.setStatus(CaseTaskConsts.TASK_STATUS_1); jashCaseTask.setDeleteStatus(BaseConsts.DELETE_STATUS_0); jashCaseTask.setCustId(jasqCaseTask.getCustId()); jashCaseTask.setCreateTime(DateUtils.addMinute(nowDate, 1)); jashCaseTask.setUpdateTime(DateUtils.addMinute(nowDate, 1)); mapper.insert(jashCaseTask); // 更新结案申请信息 caseWindupApply.setApplyStatus(AuditBaseConsts.AUDIT_STATUS_0); caseWindupApply.setCaseTaskId(jashCaseTask.getId()); caseWindupApply.setAuditUnitId(jashCaseTask.getCandeUnitId()); caseWindupApply.setAuditUnitName(jashCaseTask.getCandeUnitName()); caseWindupApply.setCustId(jashCaseTask.getCustId()); caseWindupApplyService.save(caseWindupApply); // 更新纠纷信息 CaseInfo caseInfoPO = new CaseInfo(); caseInfoPO.setId(jashCaseTask.getCaseId()); caseInfoPO.setStatus(CaseStatusBaseConstsEnum.CASE_STATUS_5.getIndex()); caseInfoPO.setStatusName(CaseStatusBaseConstsEnum.CASE_STATUS_5.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); // 更新纠纷扩展信息 CaseInfoUnfold caseInfoUnfoldPO = new CaseInfoUnfold(); caseInfoUnfoldPO.setId(jashCaseTask.getCaseId()); caseInfoUnfoldPO.setMediResult(caseWindupApply.getMediResult()); caseInfoUnfoldPO.setMediResultName(caseWindupApply.getMediResultName()); caseInfoUnfoldPO.setAgreeType(caseWindupApply.getAgreeType()); caseInfoUnfoldPO.setAgreeTypeName(caseWindupApply.getAgreeTypeName()); caseInfoUnfoldPO.setAgreeContent(caseWindupApply.getAgreeContent()); caseInfoUnfoldPO.setWindupContent(caseWindupApply.getWindupContent()); caseInfoUnfoldPO.setBelongUnitId(jashCaseTask.getCandeUnitId()); caseInfoUnfoldPO.setBelongUnitName(jashCaseTask.getCandeUnitName()); caseInfoUnfoldPO.setUpdateTime(nowDate); caseInfoUnfoldService.updateCaseInfoUnfold(caseInfoUnfoldPO); //添加网格待办 this.createGridToDo(caseInfo, jashCaseTask, GridEnum.GRID_OBJECT_TYPE_4.getIndex(), GridBaseConsts.GRID_TYPE_4); } } // 查询联合处置申请单,全部结束申请单 QueryWrapper caseAssistApplyQueryWrapper = new QueryWrapper<>(); caseAssistApplyQueryWrapper.eq("case_id", jasqCaseTask.getCaseId()).eq("apply_status", AuditBaseConsts.AUDIT_STATUS_0); List caseAssistApplyList = caseAssistApplyService.list(caseAssistApplyQueryWrapper); for (CaseAssistApply caseAssistApply : caseAssistApplyList) { caseAssistApply.setApplyStatus(AuditBaseConsts.AUDIT_STATUS_2); caseAssistApply.setUpdateTime(nowDate); caseAssistApplyService.updateCaseAssistApply(caseAssistApply); } // 查询配合组织的任务,全部结束流程 List assistCaseTaskList = this.listAssistTasking(jasqCaseTask.getCaseId()); for (CaseTask assistCaseTask : assistCaseTaskList) { // 完成配合组织当前任务 assistCaseTask.setStatus(CaseTaskConsts.TASK_STATUS_2); assistCaseTask.setHandleUnitId(assistCaseTask.getCandeUnitId()); assistCaseTask.setHandleUnitName(assistCaseTask.getCandeUnitName()); if (FlowNodeEnum.FLOW_NODE_BLFK.getIndex().equals(assistCaseTask.getNodeId())) { QueryWrapper caseFeedbackQueryWrapper = new QueryWrapper<>(); caseFeedbackQueryWrapper.select("handle_user_id", "handle_user_name") .eq("case_id", assistCaseTask.getCaseId()) .eq("handle_unit_id", assistCaseTask.getCandeUnitId()) .eq("handle_type", CaseTaskConsts.HANDLE_TYPE_2).orderByDesc("create_time"); List caseFeedbacks = caseFeedbackService.list(caseFeedbackQueryWrapper); if (CollectionUtils.isNotEmpty(caseFeedbacks)) { CaseFeedback caseFeedback = caseFeedbacks.get(0); assistCaseTask.setHandleUserId(caseFeedback.getHandleUserId()); assistCaseTask.setHandleUserName(caseFeedback.getHandleUserName()); } else { CaseAssistInfo caseAssistInfo = caseAssistInfoService.getByCaseTaskId(assistCaseTask.getId()); if (ObjectUtils.isNotEmpty(caseAssistInfo)) { assistCaseTask.setHandleUserId(caseAssistInfo.getAssistUserId()); assistCaseTask.setHandleUserName(caseAssistInfo.getAssistUserName()); } } } else { assistCaseTask.setHandleUserId(loginUser.getId()); assistCaseTask.setHandleUserName(loginUser.getTrueName() + "(承办部门)"); } assistCaseTask.setHandleResult(CaseTaskConsts.HANDLE_RESULT_0); assistCaseTask.setHandleTime(nowDate); assistCaseTask.setUpdateTime(nowDate); // 计算任务耗时、是否超时、超时多少 assistCaseTask.setUsetimeHour(TaskUsetimeUtils.getUsetimeHour(assistCaseTask.getHandleTime(), assistCaseTask.getCreateTime())); assistCaseTask.setOvertimeStatus(TaskUsetimeUtils.getOvertimeStatus(assistCaseTask.getHandleTime(), assistCaseTask.getExpireTime())); assistCaseTask.setOvertimeHour(TaskUsetimeUtils.getOvertimeHour(assistCaseTask.getHandleTime(), assistCaseTask.getExpireTime())); mapper.updateCaseTask(assistCaseTask); // 结束配合组织当前工作流任务 flowInfoService.endFlow(assistCaseTask.getProcessInstanceId()); } } catch (Exception e) { log.error("[CaseTaskService.webWindupApply]调用失败,异常信息:" + e, e); throw new ServiceException("CaseTaskService.webWindupApply", e); } } /** * web端任务处理-结案审核 * * @param caseWindupApply 结案审核表单 * @param userId 当前登录用户 */ public void webWindupAudit(CaseWindupApply caseWindupApply, String userId) { try { Date nowDate = DateUtils.getNowDate(); // 获取当前登录用户 CtUserDTO loginUser = custClient.clientGetUserAll(userId); // 查询结案申请信息 CaseWindupApply oldCaseWindupApply = caseWindupApplyService.getById(caseWindupApply.getId()); // 更新结案申请信息 caseWindupApply.setApplyStatus(AuditBaseConsts.AUDIT_STATUS_1); caseWindupApply.setAuditUserId(loginUser.getId()); caseWindupApply.setAuditUserName(loginUser.getTrueName()); caseWindupApply.setDeleteStatus(BaseConsts.DELETE_STATUS_0); caseWindupApply.setCustId(loginUser.getCustId()); caseWindupApply.setAuditTime(nowDate); caseWindupApply.setUpdateTime(nowDate); caseWindupApplyService.updateCaseWindupApply(caseWindupApply); // 查询结案审核任务 CaseTask jashCaseTask = mapper.selectById(caseWindupApply.getCaseTaskId()); // 审核通过, if (AuditBaseConstsEnum.AUDIT_RESULT_1.getIndex().equals(caseWindupApply.getAuditResult())) { List ownerIdList1 = new ArrayList<>(); // 完成当前结案审核节点任务 CaseTask jashCaseTaskPO = new CaseTask(); jashCaseTaskPO.setId(caseWindupApply.getCaseTaskId()); jashCaseTaskPO.setStatus(CaseTaskConsts.TASK_STATUS_2); jashCaseTaskPO.setHandleUnitId(loginUser.getUnitId()); jashCaseTaskPO.setHandleUnitName(loginUser.getUnitName()); jashCaseTaskPO.setHandleDeptId(loginUser.getDeptId()); jashCaseTaskPO.setHandleDeptName(loginUser.getDeptName()); jashCaseTaskPO.setHandleUserId(loginUser.getId()); jashCaseTaskPO.setHandleUserName(loginUser.getTrueName()); jashCaseTaskPO.setHandleContent(caseWindupApply.getAuditContent()); jashCaseTaskPO.setHandleResult(CaseTaskConsts.HANDLE_RESULT_1); jashCaseTaskPO.setHandleTime(nowDate); jashCaseTaskPO.setUpdateTime(nowDate); // 计算任务耗时、是否超时、超时多少 jashCaseTaskPO.setUsetimeHour(TaskUsetimeUtils.getUsetimeHour(jashCaseTaskPO.getHandleTime(), jashCaseTask.getCreateTime())); jashCaseTaskPO.setOvertimeStatus(TaskUsetimeUtils.getOvertimeStatus(jashCaseTaskPO.getHandleTime(), jashCaseTask.getExpireTime())); jashCaseTaskPO.setOvertimeHour(TaskUsetimeUtils.getOvertimeHour(jashCaseTaskPO.getHandleTime(), jashCaseTask.getExpireTime())); mapper.updateCaseTask(jashCaseTaskPO); // 根据事项等级,判断是否要上级综治中心审核 FlowNode nextFlowNode = null; CaseInfo caseInfo = caseInfoService.getById(jashCaseTask.getCaseId()); if (CaseBaseConsts.CASE_LEVEL_1 == caseInfo.getCaseLevel()) { // 一级事件,本级+上级+上上级审核 if (FlowNodeEnum.FLOW_NODE_JASH.getIndex().equals(jashCaseTask.getNodeId())) { // 完成本级综治中心审核,进入上级综治中心审核节点 nextFlowNode = flowInfoService.completeTask(jashCaseTask.getFlowableId(), jashCaseTask.getProcessTaskId(), FlowableConsts.OPERATION_jash_ty_sq, userId); } else if (FlowNodeEnum.FLOW_NODE_JASH_YJ.getIndex().equals(jashCaseTask.getNodeId())) { // 完成上级综治中心审核,进入上上级综治中心审核节点 nextFlowNode = flowInfoService.completeTask(jashCaseTask.getFlowableId(), jashCaseTask.getProcessTaskId(), FlowableConsts.OPERATION_jash_ty_sq, userId); } else { // 完成上上级综治中心审核,审核流程结束,进入下一节点 nextFlowNode = flowInfoService.completeTask(jashCaseTask.getFlowableId(), jashCaseTask.getProcessTaskId(), FlowableConsts.OPERATION_jash_ty, userId); } } else if (CaseBaseConsts.CASE_LEVEL_2 == caseInfo.getCaseLevel()) { // 二级事件,本级+上级审核 String operation = FlowableConsts.OPERATION_jash_ty; if (FlowNodeEnum.FLOW_NODE_JASH.getIndex().equals(jashCaseTask.getNodeId())) { // 完成本级综治中心审核,进入上级综治中心审核节点 nextFlowNode = flowInfoService.completeTask(jashCaseTask.getFlowableId(), jashCaseTask.getProcessTaskId(), FlowableConsts.OPERATION_jash_ty_sq, userId); } else { // 完成上级综治中心审核,审核流程结束,进入下一节点 nextFlowNode = flowInfoService.completeTask(jashCaseTask.getFlowableId(), jashCaseTask.getProcessTaskId(), FlowableConsts.OPERATION_jash_ty, userId); } } else { // 三级事件,自办自结,即本级综治中心审核就行,完成本级综治中心审核,审核流程结束,进入下一节点 nextFlowNode = flowInfoService.completeTask(jashCaseTask.getFlowableId(), jashCaseTask.getProcessTaskId(), FlowableConsts.OPERATION_jash_ty, userId); } // 下一个节点是一级结案审核节点,进入一级结案审核节点任务 if (FlowNodeEnum.FLOW_NODE_JASH_YJ.getIndex().equals(nextFlowNode.getNodeId())) { // 新建结案审核节点任务 CaseTask yjJashCaseTask = new CaseTask(); yjJashCaseTask.setId(utilsClient.getNewTimeId()); yjJashCaseTask.setCaseId(jashCaseTask.getCaseId()); yjJashCaseTask.setFlowableId(nextFlowNode.getFlowableId()); yjJashCaseTask.setProcessInstanceId(nextFlowNode.getProcessInstanceId()); yjJashCaseTask.setProcessTaskId(nextFlowNode.getProcessTaskId()); yjJashCaseTask.setNodeType(nextFlowNode.getNodeType()); yjJashCaseTask.setNodeId(nextFlowNode.getNodeId()); yjJashCaseTask.setNodeName(nextFlowNode.getNodeName()); yjJashCaseTask.setFlowId(nextFlowNode.getFlowId()); yjJashCaseTask.setNodeShowName(nextFlowNode.getNodeShowName()); yjJashCaseTask.setCaseTaskType(CaseTaskConsts.CASE_TASK_TYPE_1); // 任务所属单位:上级级综治中心审核 CtUnitDTO zzzxCtUnitDTO = custClient.getParentZzzxUnit(loginUser.getUnitId()); yjJashCaseTask.setCandeUnitId(zzzxCtUnitDTO.getId()); yjJashCaseTask.setCandeUnitName(zzzxCtUnitDTO.getUnitName()); // 受理后的节点任务,未读 yjJashCaseTask.setReadStatus(CaseTaskConsts.READ_STATUS_0); // 任务处理时限 if (nextFlowNode.getExpire() != 0) { yjJashCaseTask.setExpireTime(syHolidayService.getExpiryDay(nowDate, nextFlowNode.getExpire())); } yjJashCaseTask.setStatus(CaseTaskConsts.TASK_STATUS_1); yjJashCaseTask.setDeleteStatus(BaseConsts.DELETE_STATUS_0); yjJashCaseTask.setCustId(jashCaseTask.getCustId()); yjJashCaseTask.setCreateTime(DateUtils.addMinute(nowDate, 1)); yjJashCaseTask.setUpdateTime(DateUtils.addMinute(nowDate, 1)); mapper.insert(yjJashCaseTask); // 创建新的结案申请记录 CaseWindupApply newCaseWindupApply = new CaseWindupApply(); BeanUtils.copyProperties(oldCaseWindupApply, newCaseWindupApply); newCaseWindupApply.setId(utilsClient.getNewTimeId()); newCaseWindupApply.setApplyTime(nowDate); newCaseWindupApply.setApplyStatus(AuditBaseConsts.AUDIT_STATUS_0); newCaseWindupApply.setCaseTaskId(yjJashCaseTask.getId()); newCaseWindupApply.setAuditUnitId(yjJashCaseTask.getCandeUnitId()); newCaseWindupApply.setAuditUnitName(yjJashCaseTask.getCandeUnitName()); newCaseWindupApply.setDeleteStatus(BaseConsts.DELETE_STATUS_0); newCaseWindupApply.setCreateTime(nowDate); newCaseWindupApply.setUpdateTime(nowDate); newCaseWindupApply.setCustId(yjJashCaseTask.getCustId()); caseWindupApplyService.save(newCaseWindupApply); // 更新纠纷信息扩展表-实际归属组织 CaseInfoUnfold caseInfoUnfoldPO = new CaseInfoUnfold(); caseInfoUnfoldPO.setId(yjJashCaseTask.getCaseId()); caseInfoUnfoldPO.setBelongUnitId(yjJashCaseTask.getCandeUnitId()); caseInfoUnfoldPO.setBelongUnitName(yjJashCaseTask.getCandeUnitName()); caseInfoUnfoldPO.setUpdateTime(nowDate); caseInfoUnfoldService.updateCaseInfoUnfold(caseInfoUnfoldPO); //修改网格待办流程 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())) { // 新建结案审核节点任务 CaseTask ejJashCaseTask = new CaseTask(); ejJashCaseTask.setId(utilsClient.getNewTimeId()); ejJashCaseTask.setCaseId(jashCaseTask.getCaseId()); ejJashCaseTask.setFlowableId(nextFlowNode.getFlowableId()); ejJashCaseTask.setProcessInstanceId(nextFlowNode.getProcessInstanceId()); ejJashCaseTask.setProcessTaskId(nextFlowNode.getProcessTaskId()); ejJashCaseTask.setNodeType(nextFlowNode.getNodeType()); ejJashCaseTask.setNodeId(nextFlowNode.getNodeId()); ejJashCaseTask.setNodeName(nextFlowNode.getNodeName()); ejJashCaseTask.setFlowId(nextFlowNode.getFlowId()); ejJashCaseTask.setNodeShowName(nextFlowNode.getNodeShowName()); ejJashCaseTask.setCaseTaskType(CaseTaskConsts.CASE_TASK_TYPE_1); // 任务所属单位:上级级综治中心审核 CtUnitDTO zzzxCtUnitDTO = custClient.getParentZzzxUnit(loginUser.getUnitId()); ejJashCaseTask.setCandeUnitId(zzzxCtUnitDTO.getId()); ejJashCaseTask.setCandeUnitName(zzzxCtUnitDTO.getUnitName()); // 受理后的节点任务,未读 ejJashCaseTask.setReadStatus(CaseTaskConsts.READ_STATUS_0); // 任务处理时限 if (nextFlowNode.getExpire() != 0) { ejJashCaseTask.setExpireTime(syHolidayService.getExpiryDay(nowDate, nextFlowNode.getExpire())); } ejJashCaseTask.setStatus(CaseTaskConsts.TASK_STATUS_1); ejJashCaseTask.setDeleteStatus(BaseConsts.DELETE_STATUS_0); ejJashCaseTask.setCustId(jashCaseTask.getCustId()); ejJashCaseTask.setCreateTime(DateUtils.addMinute(nowDate, 1)); ejJashCaseTask.setUpdateTime(DateUtils.addMinute(nowDate, 1)); mapper.insert(ejJashCaseTask); // 创建新的结案申请记录 CaseWindupApply newCaseWindupApply = new CaseWindupApply(); BeanUtils.copyProperties(oldCaseWindupApply, newCaseWindupApply); newCaseWindupApply.setId(utilsClient.getNewTimeId()); newCaseWindupApply.setApplyTime(nowDate); newCaseWindupApply.setApplyStatus(AuditBaseConsts.AUDIT_STATUS_0); newCaseWindupApply.setCaseTaskId(ejJashCaseTask.getId()); newCaseWindupApply.setAuditUnitId(ejJashCaseTask.getCandeUnitId()); newCaseWindupApply.setAuditUnitName(ejJashCaseTask.getCandeUnitName()); newCaseWindupApply.setDeleteStatus(BaseConsts.DELETE_STATUS_0); newCaseWindupApply.setCreateTime(nowDate); newCaseWindupApply.setUpdateTime(nowDate); newCaseWindupApply.setCustId(ejJashCaseTask.getCustId()); caseWindupApplyService.save(newCaseWindupApply); // 更新纠纷信息扩展表-实际归属组织 CaseInfoUnfold caseInfoUnfoldPO = new CaseInfoUnfold(); caseInfoUnfoldPO.setId(ejJashCaseTask.getCaseId()); caseInfoUnfoldPO.setBelongUnitId(ejJashCaseTask.getCandeUnitId()); caseInfoUnfoldPO.setBelongUnitName(ejJashCaseTask.getCandeUnitName()); caseInfoUnfoldPO.setUpdateTime(nowDate); caseInfoUnfoldService.updateCaseInfoUnfold(caseInfoUnfoldPO); //修改网格待办流程 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())) { // 新建当事人评价节点任务 CaseTask dsrpjCaseTask = new CaseTask(); dsrpjCaseTask.setId(utilsClient.getNewTimeId()); dsrpjCaseTask.setCaseId(jashCaseTask.getCaseId()); dsrpjCaseTask.setFlowableId(nextFlowNode.getFlowableId()); dsrpjCaseTask.setProcessInstanceId(nextFlowNode.getProcessInstanceId()); dsrpjCaseTask.setProcessTaskId(nextFlowNode.getProcessTaskId()); dsrpjCaseTask.setNodeType(nextFlowNode.getNodeType()); dsrpjCaseTask.setNodeId(nextFlowNode.getNodeId()); dsrpjCaseTask.setNodeName(nextFlowNode.getNodeName()); dsrpjCaseTask.setFlowId(nextFlowNode.getFlowId()); dsrpjCaseTask.setNodeShowName(nextFlowNode.getNodeShowName()); dsrpjCaseTask.setCaseTaskType(CaseTaskConsts.CASE_TASK_TYPE_1); // 任务所属人:当事人 EvaluatePersonDTO evaluatePersonDTO = casePersonService.getEvaluatePerson(jashCaseTask.getCaseId()); dsrpjCaseTask.setCandeUserId(evaluatePersonDTO.getId()); dsrpjCaseTask.setCandeUserId(evaluatePersonDTO.getName()); // 受理后的节点任务,未读 dsrpjCaseTask.setReadStatus(CaseTaskConsts.READ_STATUS_0); // 任务处理时限 if (nextFlowNode.getExpire() != 0) { dsrpjCaseTask.setExpireTime(syHolidayService.getExpiryDay(nowDate, nextFlowNode.getExpire())); } dsrpjCaseTask.setStatus(CaseTaskConsts.TASK_STATUS_1); dsrpjCaseTask.setDeleteStatus(BaseConsts.DELETE_STATUS_0); dsrpjCaseTask.setCustId(jashCaseTask.getCustId()); dsrpjCaseTask.setCreateTime(DateUtils.addMinute(nowDate, 2)); dsrpjCaseTask.setUpdateTime(DateUtils.addMinute(nowDate, 2)); mapper.insert(dsrpjCaseTask); // 更新纠纷信息 CaseInfo caseInfoPO = new CaseInfo(); caseInfoPO.setId(jashCaseTask.getCaseId()); caseInfoPO.setStatus(CaseStatusBaseConstsEnum.CASE_STATUS_6.getIndex()); caseInfoPO.setStatusName(CaseStatusBaseConstsEnum.CASE_STATUS_6.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); // 更新纠纷信息扩展表-实际归属组织 CaseInfoUnfold caseInfoUnfold = caseInfoUnfoldService.getById(jashCaseTask.getCaseId()); CaseInfoUnfold caseInfoUnfoldPO = new CaseInfoUnfold(); caseInfoUnfoldPO.setId(jashCaseTask.getCaseId()); caseInfoUnfoldPO.setBelongUnitId(caseInfoUnfold.getMediateUnitId()); caseInfoUnfoldPO.setBelongUnitName(caseInfoUnfold.getMediateUnitId()); caseInfoUnfoldPO.setCloseTime(nowDate); caseInfoUnfoldPO.setUpdateTime(nowDate); caseInfoUnfoldService.updateCaseInfoUnfold(caseInfoUnfoldPO); //删除网格待办 this.deleteGridTodo(jashCaseTask); ownerIdList1.add(dsrpjCaseTask.getId()); } // 下一个节点是结案归档节点,进入结案归档节点任务 if (FlowNodeEnum.FLOW_NODE_JAGD.getIndex().equals(nextFlowNode.getNodeId())) { // 创建并完成结案归档节点任务 CaseTask jagdCaseTask = new CaseTask(); jagdCaseTask.setId(utilsClient.getNewTimeId()); jagdCaseTask.setCaseId(jashCaseTask.getCaseId()); jagdCaseTask.setFlowableId(nextFlowNode.getFlowableId()); jagdCaseTask.setProcessInstanceId(nextFlowNode.getProcessInstanceId()); jagdCaseTask.setProcessTaskId(nextFlowNode.getProcessTaskId()); jagdCaseTask.setNodeType(nextFlowNode.getNodeType()); jagdCaseTask.setNodeId(nextFlowNode.getNodeId()); jagdCaseTask.setNodeName(nextFlowNode.getNodeName()); jagdCaseTask.setFlowId(nextFlowNode.getFlowId()); jagdCaseTask.setNodeShowName(nextFlowNode.getNodeShowName()); jagdCaseTask.setCaseTaskType(CaseTaskConsts.CASE_TASK_TYPE_1); // 任务所属单位:结案申请操作组织 jagdCaseTask.setCandeUnitId(oldCaseWindupApply.getApplyUnitId()); jagdCaseTask.setCandeUnitName(oldCaseWindupApply.getApplyUnitName()); // 受理后的节点任务,未读 jagdCaseTask.setReadStatus(CaseTaskConsts.READ_STATUS_0); // 任务处理时限 if (nextFlowNode.getExpire() != 0) { jagdCaseTask.setExpireTime(syHolidayService.getExpiryDay(nowDate, nextFlowNode.getExpire())); } jagdCaseTask.setStatus(CaseTaskConsts.TASK_STATUS_2); jagdCaseTask.setHandleUnitId(loginUser.getUnitId()); jagdCaseTask.setHandleUnitName(loginUser.getUnitName()); jagdCaseTask.setHandleDeptId(loginUser.getDeptId()); jagdCaseTask.setHandleDeptName(loginUser.getDeptName()); jagdCaseTask.setHandleUserId(loginUser.getId()); jagdCaseTask.setHandleUserName(loginUser.getTrueName()); jagdCaseTask.setHandleResult(CaseTaskConsts.HANDLE_RESULT_0); jagdCaseTask.setHandleTime(nowDate); jagdCaseTask.setDeleteStatus(BaseConsts.DELETE_STATUS_0); jagdCaseTask.setCustId(jashCaseTask.getCustId()); jagdCaseTask.setCreateTime(nowDate); jagdCaseTask.setUpdateTime(nowDate); // 计算任务耗时、是否超时、超时多少 jagdCaseTask.setUsetimeHour(TaskUsetimeUtils.getUsetimeHour(jagdCaseTask.getHandleTime(), jagdCaseTask.getCreateTime())); jagdCaseTask.setOvertimeStatus(TaskUsetimeUtils.getOvertimeStatus(jagdCaseTask.getHandleTime(), jagdCaseTask.getExpireTime())); jagdCaseTask.setOvertimeHour(TaskUsetimeUtils.getOvertimeHour(jagdCaseTask.getHandleTime(), jagdCaseTask.getExpireTime())); mapper.insert(jagdCaseTask); // 完成结案归档工作流节点任务,结束流程 Date createTime = caseInfo.getCreateTime(); // 创建 2025年4月30日 的日期对象 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); Date targetDate = sdf.parse("2025-04-30"); if (createTime != null && createTime.after(targetDate)) { flowInfoService.completeTask(jagdCaseTask.getFlowableId(), jagdCaseTask.getProcessTaskId(), FlowableConsts.OPERATION_jb_zszz, loginUser.getId()); } // 更新纠纷信息 CaseInfo caseInfoPO = new CaseInfo(); caseInfoPO.setId(jashCaseTask.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); // 更新纠纷信息扩展表-实际归属组织 CaseInfoUnfold caseInfoUnfold = caseInfoUnfoldService.getById(jashCaseTask.getCaseId()); CaseInfoUnfold caseInfoUnfoldPO = new CaseInfoUnfold(); caseInfoUnfoldPO.setId(jashCaseTask.getCaseId()); caseInfoUnfoldPO.setBelongUnitId(caseInfoUnfold.getMediateUnitId()); caseInfoUnfoldPO.setBelongUnitName(caseInfoUnfold.getMediateUnitId()); caseInfoUnfoldPO.setCloseTime(nowDate); caseInfoUnfoldPO.setUpdateTime(nowDate); caseInfoUnfoldService.updateCaseInfoUnfold(caseInfoUnfoldPO); //删除网格待办 this.deleteGridTodo(jashCaseTask); //修改网格事件状态 QueryWrapper jasqCaseTaskPO = new QueryWrapper<>(); jasqCaseTaskPO.eq("case_id", jashCaseTask.getCaseId()).eq("node_id", FlowNodeEnum.FLOW_NODE_JASQ.getIndex()) .orderByDesc("create_time").last("limit 1"); CaseTask jasqCaseTask = mapper.selectOne(jasqCaseTaskPO); List ownerIdList = new ArrayList<>(); ownerIdList.add(jashCaseTask.getId()); String eventProcessStatus = GridEnum.EVENT_PROCESS_STATUS_2.getIndex(); if (MediResultBaseConstsEnum.MEDI_RESULT_2.getIndex().equals(oldCaseWindupApply.getMediResult())) { eventProcessStatus = GridEnum.EVENT_PROCESS_STATUS_3.getIndex(); } ThreadPoolUtils.executor(new AsynUpdateCaseEventNode(jashCaseTask.getCaseId(), jasqCaseTask, jashCaseTask, GridEnum.EVENT_FLOW_7.getIndex(), GridEnum.getCatByTaskNode("DSRPJ"), ownerIdList, loginUser.getId(), 0, eventProcessStatus)); //修改网格事件流程 ownerIdList1.add(jagdCaseTask.getId()); ThreadPoolUtils.executor(new AsynUpdateCaseEventNode(jashCaseTask.getCaseId(), jashCaseTaskPO, jagdCaseTask, GridEnum.getCatByTaskNode("DSRPJ"), GridEnum.getCatByTaskNode(jagdCaseTask.getNodeId()), ownerIdList1, loginUser.getId(), 5000, eventProcessStatus)); } } else { // 审核不通过,回退办理反馈节点任务 // 完成当前结案审核节点任务 CaseTask jashCaseTaskPO = new CaseTask(); jashCaseTaskPO.setId(caseWindupApply.getCaseTaskId()); jashCaseTaskPO.setStatus(CaseTaskConsts.TASK_STATUS_2); jashCaseTaskPO.setHandleUnitId(loginUser.getUnitId()); jashCaseTaskPO.setHandleUnitName(loginUser.getUnitName()); jashCaseTaskPO.setHandleDeptId(loginUser.getDeptId()); jashCaseTaskPO.setHandleDeptName(loginUser.getDeptName()); jashCaseTaskPO.setHandleUserId(loginUser.getId()); jashCaseTaskPO.setHandleUserName(loginUser.getTrueName()); jashCaseTaskPO.setHandleContent(caseWindupApply.getAuditContent()); jashCaseTaskPO.setHandleResult(CaseTaskConsts.HANDLE_RESULT_2); jashCaseTaskPO.setHandleTime(nowDate); jashCaseTaskPO.setUpdateTime(nowDate); // 计算任务耗时、是否超时、超时多少 jashCaseTaskPO.setUsetimeHour(TaskUsetimeUtils.getUsetimeHour(jashCaseTaskPO.getHandleTime(), jashCaseTask.getCreateTime())); jashCaseTaskPO.setOvertimeStatus(TaskUsetimeUtils.getOvertimeStatus(jashCaseTaskPO.getHandleTime(), jashCaseTask.getExpireTime())); jashCaseTaskPO.setOvertimeHour(TaskUsetimeUtils.getOvertimeHour(jashCaseTaskPO.getHandleTime(), jashCaseTask.getExpireTime())); mapper.updateCaseTask(jashCaseTaskPO); // 完成当前结案审核工作流节点任务,走办理反馈节点任务 FlowNode blfkFlowNode = flowInfoService.completeTask(jashCaseTask.getFlowableId(), jashCaseTask.getProcessTaskId(), FlowableConsts.OPERATION_jash_bty, userId); // 新建办理反馈节点任务 CaseTask blfkCaseTask = new CaseTask(); blfkCaseTask.setId(utilsClient.getNewTimeId()); blfkCaseTask.setCaseId(jashCaseTask.getCaseId()); blfkCaseTask.setFlowableId(blfkFlowNode.getFlowableId()); blfkCaseTask.setProcessInstanceId(blfkFlowNode.getProcessInstanceId()); blfkCaseTask.setProcessTaskId(blfkFlowNode.getProcessTaskId()); blfkCaseTask.setNodeType(blfkFlowNode.getNodeType()); blfkCaseTask.setNodeId(blfkFlowNode.getNodeId()); blfkCaseTask.setNodeName(blfkFlowNode.getNodeName()); blfkCaseTask.setFlowId(blfkFlowNode.getFlowId()); blfkCaseTask.setNodeShowName(blfkFlowNode.getNodeShowName()); blfkCaseTask.setCaseTaskType(CaseTaskConsts.CASE_TASK_TYPE_1); // 任务所属单位:结案申请操作组织 blfkCaseTask.setCandeUnitId(oldCaseWindupApply.getApplyUnitId()); blfkCaseTask.setCandeUnitName(oldCaseWindupApply.getApplyUnitName()); // 受理后的节点任务,未读 blfkCaseTask.setReadStatus(CaseTaskConsts.READ_STATUS_0); blfkCaseTask.setStatus(CaseTaskConsts.TASK_STATUS_1); // 任务处理时限 if (blfkFlowNode.getExpire() != 0) { blfkCaseTask.setExpireTime(syHolidayService.getExpiryDay(nowDate, blfkFlowNode.getExpire())); } blfkCaseTask.setDeleteStatus(BaseConsts.DELETE_STATUS_0); blfkCaseTask.setCustId(jashCaseTask.getCustId()); blfkCaseTask.setCreateTime(nowDate); blfkCaseTask.setUpdateTime(nowDate); mapper.insert(blfkCaseTask); //删除网格待办 this.deleteGridTodo(jashCaseTask); // 更新纠纷信息 CaseInfo caseInfoPO = new CaseInfo(); caseInfoPO.setId(blfkCaseTask.getCaseId()); caseInfoPO.setStatus(CaseStatusBaseConstsEnum.CASE_STATUS_4.getIndex()); caseInfoPO.setStatusName(CaseStatusBaseConstsEnum.CASE_STATUS_4.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); // 更新纠纷信息扩展表-实际归属组织 CaseInfoUnfold caseInfoUnfoldPO = new CaseInfoUnfold(); caseInfoUnfoldPO.setId(blfkCaseTask.getCaseId()); caseInfoUnfoldPO.setBelongUnitId(blfkCaseTask.getCandeUnitId()); caseInfoUnfoldPO.setBelongUnitName(blfkCaseTask.getCandeUnitName()); caseInfoUnfoldService.updateCaseInfoUnfold(caseInfoUnfoldPO); //修改网格事件状态 List ownerIdList = new ArrayList<>(); ownerIdList.add(jashCaseTask.getId()); QueryWrapper jasqCaseTaskPO = new QueryWrapper<>(); jasqCaseTaskPO.eq("case_id", jashCaseTask.getCaseId()).eq("node_id", FlowNodeEnum.FLOW_NODE_JASQ.getIndex()) .orderByDesc("create_time").last("limit 1"); CaseTask jasqCaseTask = mapper.selectOne(jasqCaseTaskPO); ThreadPoolUtils.executor(new AsynUpdateCaseEventNode(jashCaseTask.getCaseId(), jasqCaseTask, blfkCaseTask, GridEnum.EVENT_FLOW_7.getIndex(), GridEnum.getCatByTaskNode(blfkCaseTask.getNodeId()), ownerIdList, loginUser.getId(), 0, GridEnum.EVENT_PROCESS_STATUS_1.getIndex())); } } catch (Exception e) { log.error("[CaseTaskService.webWindupApply]调用失败,异常信息:" + e, e); throw new ServiceException("CaseTaskService.webWindupApply", e); } } /** * web端任务处理-回退申请 * * @param caseReturn 回退申请表单 * @param userId 当前登录用户 */ public void webReturnApply(CaseReturn caseReturn, String userId) { try { Date nowDate = DateUtils.getNowDate(); // 获取当前登录用户 CtUserDTO loginUser = custClient.clientGetUserAll(userId); // 创建回退申请信息 caseReturn.setReturnUnitId(loginUser.getUnitId()); caseReturn.setReturnUnitName(loginUser.getUnitName()); caseReturn.setReturnUserId(loginUser.getId()); caseReturn.setReturnUserName(loginUser.getTrueName()); caseReturn.setReturnTime(nowDate); CtUnitDTO zzzxUnit = custClient.getParentZzzxUnit(loginUser.getUnitId()); caseReturn.setAuditUnitId(zzzxUnit.getId()); caseReturn.setAuditUnitName(zzzxUnit.getUnitName()); caseReturn.setReturnStatus(AuditBaseConsts.AUDIT_STATUS_0); caseReturn.setDeleteStatus(BaseConsts.DELETE_STATUS_0); caseReturn.setCustId(loginUser.getCustId()); caseReturn.setCreateTime(nowDate); caseReturn.setUpdateTime(nowDate); // 查询待节点任务 CaseTask thisCaseTask = mapper.selectById(caseReturn.getCaseTaskId()); // 完成当前节点任务 CaseTask thisCaseTaskPO = new CaseTask(); thisCaseTaskPO.setId(caseReturn.getCaseTaskId()); thisCaseTaskPO.setStatus(CaseTaskConsts.TASK_STATUS_2); thisCaseTaskPO.setHandleUnitId(loginUser.getUnitId()); thisCaseTaskPO.setHandleUnitName(loginUser.getUnitName()); thisCaseTaskPO.setHandleDeptId(loginUser.getDeptId()); thisCaseTaskPO.setHandleDeptName(loginUser.getDeptName()); thisCaseTaskPO.setHandleUserId(loginUser.getId()); thisCaseTaskPO.setHandleUserName(loginUser.getTrueName()); thisCaseTaskPO.setHandleContent(caseReturn.getReturnContent()); thisCaseTaskPO.setHandleResult(CaseTaskConsts.HANDLE_RESULT_4); thisCaseTaskPO.setHandleTime(nowDate); thisCaseTaskPO.setUpdateTime(nowDate); // 计算任务耗时、是否超时、超时多少 thisCaseTaskPO.setUsetimeHour(TaskUsetimeUtils.getUsetimeHour(thisCaseTaskPO.getHandleTime(), thisCaseTask.getCreateTime())); thisCaseTaskPO.setOvertimeStatus(TaskUsetimeUtils.getOvertimeStatus(thisCaseTaskPO.getHandleTime(), thisCaseTask.getExpireTime())); thisCaseTaskPO.setOvertimeHour(TaskUsetimeUtils.getOvertimeHour(thisCaseTaskPO.getHandleTime(), thisCaseTask.getExpireTime())); mapper.updateCaseTask(thisCaseTaskPO); // 完成当前节点工作流任务,走回退审核任务 FlowNode htshFlowNode = flowInfoService.completeTask(thisCaseTask.getFlowableId(), thisCaseTask.getProcessTaskId(), FlowableConsts.OPERATION_htsq, userId); // 新建回退审核节点任务 CaseTask htshCaseTask = new CaseTask(); htshCaseTask.setId(utilsClient.getNewTimeId()); htshCaseTask.setCaseId(thisCaseTask.getCaseId()); htshCaseTask.setFlowableId(htshFlowNode.getFlowableId()); htshCaseTask.setProcessInstanceId(htshFlowNode.getProcessInstanceId()); htshCaseTask.setProcessTaskId(htshFlowNode.getProcessTaskId()); htshCaseTask.setNodeType(htshFlowNode.getNodeType()); htshCaseTask.setNodeId(htshFlowNode.getNodeId()); htshCaseTask.setNodeName(htshFlowNode.getNodeName()); htshCaseTask.setFlowId(htshFlowNode.getFlowId()); htshCaseTask.setNodeShowName(htshFlowNode.getNodeShowName()); htshCaseTask.setCaseTaskType(thisCaseTask.getCaseTaskType()); // 任务所属单位:上级综治中心 htshCaseTask.setCandeUnitId(zzzxUnit.getId()); htshCaseTask.setCandeUnitName(zzzxUnit.getUnitName()); // 受理后的节点任务,未读 htshCaseTask.setReadStatus(CaseTaskConsts.READ_STATUS_0); // 任务处理时限 if (htshFlowNode.getExpire() != 0) { htshCaseTask.setExpireTime(syHolidayService.getExpiryDay(nowDate, htshFlowNode.getExpire())); } htshCaseTask.setStatus(CaseTaskConsts.TASK_STATUS_1); htshCaseTask.setDeleteStatus(BaseConsts.DELETE_STATUS_0); htshCaseTask.setCustId(htshCaseTask.getCustId()); htshCaseTask.setCreateTime(nowDate); htshCaseTask.setUpdateTime(nowDate); mapper.insert(htshCaseTask); // 新增回退申请信息 caseReturn.setCaseTaskId(htshCaseTask.getId()); caseReturn.setCaseTaskType(htshCaseTask.getCaseTaskType()); caseReturnService.save(caseReturn); // 更新纠纷信息扩展表-实际归属组织 CaseInfoUnfold caseInfoUnfoldPO = new CaseInfoUnfold(); caseInfoUnfoldPO.setId(htshCaseTask.getCaseId()); caseInfoUnfoldPO.setBelongUnitId(htshCaseTask.getCandeUnitId()); caseInfoUnfoldPO.setBelongUnitName(htshCaseTask.getCandeUnitName()); //修改网格待办流程 CaseInfo caseInfo = caseInfoService.getById(thisCaseTask.getCaseId()); this.taskFlowGridToDo(caseInfo, htshCaseTask, thisCaseTask.getId(), GridEnum.GRID_OBJECT_TYPE_4.getIndex(), GridBaseConsts.GRID_TYPE_4); List ownerIdList = new ArrayList<>(); ThreadPoolUtils.executor(new AsynUpdateCaseEventNode(htshCaseTask.getCaseId(), thisCaseTaskPO, htshCaseTask, GridEnum.getCatByStatus(thisCaseTask.getStatus()), GridEnum.EVENT_FLOW_7.getIndex(), ownerIdList, loginUser.getId(), 0, GridEnum.EVENT_PROCESS_STATUS_1.getIndex())); } catch (Exception e) { log.error("[CaseTaskService.webReturnApply]调用失败,异常信息:" + e, e); throw new ServiceException("CaseTaskService.webReturnApply", e); } } /** * web端任务处理-回退审核 * * @param caseReturn 回退审核表单 * @param userId 当前登录用户 */ public void webReturnAudit(CaseReturn caseReturn, String userId) { try { Date nowDate = DateUtils.getNowDate(); // 获取当前登录用户 CtUserDTO loginUser = custClient.clientGetUserAll(userId); // 更新回退申请信息 caseReturn.setReturnStatus(AuditBaseConsts.AUDIT_STATUS_1); caseReturn.setAuditUserId(loginUser.getId()); caseReturn.setAuditUserName(loginUser.getTrueName()); caseReturn.setAuditTime(nowDate); caseReturn.setUpdateTime(nowDate); caseReturnService.updateCaseReturn(caseReturn); // 查询回退审核节点任务 CaseTask htshCaseTask = mapper.selectById(caseReturn.getCaseTaskId()); // 审核通过 if (AuditBaseConstsEnum.AUDIT_RESULT_1.getIndex().equals(caseReturn.getAuditResult())) { // 完成当前回退审核节点任务 CaseTask htshCaseTaskPO = new CaseTask(); htshCaseTaskPO.setId(caseReturn.getCaseTaskId()); htshCaseTaskPO.setStatus(CaseTaskConsts.TASK_STATUS_2); htshCaseTaskPO.setHandleUnitId(loginUser.getUnitId()); htshCaseTaskPO.setHandleUnitName(loginUser.getUnitName()); htshCaseTaskPO.setHandleDeptId(loginUser.getDeptId()); htshCaseTaskPO.setHandleDeptName(loginUser.getDeptName()); htshCaseTaskPO.setHandleUserId(loginUser.getId()); htshCaseTaskPO.setHandleContent(caseReturn.getAuditContent()); htshCaseTaskPO.setHandleUserName(loginUser.getTrueName()); htshCaseTaskPO.setHandleResult(CaseTaskConsts.HANDLE_RESULT_1); htshCaseTaskPO.setHandleTime(nowDate); htshCaseTaskPO.setUpdateTime(nowDate); // 计算任务耗时、是否超时、超时多少 htshCaseTaskPO.setUsetimeHour(TaskUsetimeUtils.getUsetimeHour(htshCaseTaskPO.getHandleTime(), htshCaseTask.getCreateTime())); htshCaseTaskPO.setOvertimeStatus(TaskUsetimeUtils.getOvertimeStatus(htshCaseTaskPO.getHandleTime(), htshCaseTask.getExpireTime())); htshCaseTaskPO.setOvertimeHour(TaskUsetimeUtils.getOvertimeHour(htshCaseTaskPO.getHandleTime(), htshCaseTask.getExpireTime())); mapper.updateCaseTask(htshCaseTaskPO); // 完成当前回退审核工作流节点任务,承办组织走待分派节点任务,配合组织结束工作流流程 FlowNode nextFlowNode = flowInfoService.completeTask(htshCaseTask.getFlowableId(), htshCaseTask.getProcessTaskId(), FlowableConsts.OPERATION_htsh_ty, userId); if (CaseTaskConsts.CASE_TASK_TYPE_1 == htshCaseTask.getCaseTaskType()) { // 新建下一个节点任务 CaseTask nextCaseTask = new CaseTask(); nextCaseTask.setId(utilsClient.getNewTimeId()); nextCaseTask.setCaseId(htshCaseTask.getCaseId()); nextCaseTask.setFlowableId(nextFlowNode.getFlowableId()); nextCaseTask.setProcessInstanceId(nextFlowNode.getProcessInstanceId()); nextCaseTask.setProcessTaskId(nextFlowNode.getProcessTaskId()); nextCaseTask.setNodeType(nextFlowNode.getNodeType()); nextCaseTask.setNodeId(nextFlowNode.getNodeId()); nextCaseTask.setNodeName(nextFlowNode.getNodeName()); nextCaseTask.setFlowId(nextFlowNode.getFlowId()); nextCaseTask.setNodeShowName(nextFlowNode.getNodeShowName()); nextCaseTask.setCaseTaskType(htshCaseTask.getCaseTaskType()); // 任务所属单位:回退审核操作组织 nextCaseTask.setCandeUnitId(loginUser.getUnitId()); nextCaseTask.setCandeUnitName(loginUser.getUnitName()); // 受理后的节点任务,未读 nextCaseTask.setReadStatus(CaseTaskConsts.READ_STATUS_0); // 任务处理时限 if (nextFlowNode.getExpire() != 0) { nextCaseTask.setExpireTime(syHolidayService.getExpiryDay(nowDate, nextFlowNode.getExpire())); } nextCaseTask.setStatus(CaseTaskConsts.TASK_STATUS_1); nextCaseTask.setDeleteStatus(BaseConsts.DELETE_STATUS_0); nextCaseTask.setCustId(nextCaseTask.getCustId()); nextCaseTask.setCreateTime(nowDate); nextCaseTask.setUpdateTime(nowDate); mapper.insert(nextCaseTask); // 更新纠纷信息 CaseInfo caseInfoPO = new CaseInfo(); caseInfoPO.setId(htshCaseTask.getCaseId()); caseInfoPO.setStatus(CaseStatusBaseConstsEnum.CASE_STATUS_1.getIndex()); caseInfoPO.setStatusName(CaseStatusBaseConstsEnum.CASE_STATUS_1.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); // 更新纠纷信息扩展表-实际归属组织 CaseInfoUnfold caseInfoUnfoldPO = new CaseInfoUnfold(); caseInfoUnfoldPO.setId(nextCaseTask.getCaseId()); caseInfoUnfoldPO.setBelongUnitId(nextCaseTask.getCandeUnitId()); caseInfoUnfoldPO.setBelongUnitName(nextCaseTask.getCandeUnitName()); caseInfoUnfoldService.updateCaseInfoUnfold(caseInfoUnfoldPO); // 有配合组织,结束配合组织工作流程 List 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); //修改网格事件流程 List ownerIdList = new ArrayList<>(); ownerIdList.add(htshCaseTask.getId()); ownerIdList.add(caseReturn.getId()); ThreadPoolUtils.executor(new AsynUpdateCaseEventNode(htshCaseTask.getCaseId(), htshCaseTaskPO, nextCaseTask, GridEnum.EVENT_FLOW_7.getIndex(), GridEnum.getCatByTaskNode(nextCaseTask.getNodeId()), ownerIdList, loginUser.getId(), 0, GridEnum.EVENT_PROCESS_STATUS_1.getIndex())); for (CaseTask assistCaseTask : assistCaseTaskList) { // 完成配合组织当前任务 assistCaseTask.setStatus(CaseTaskConsts.TASK_STATUS_2); assistCaseTask.setHandleUnitId(assistCaseTask.getCandeUnitId()); assistCaseTask.setHandleUnitName(assistCaseTask.getCandeUnitName()); if (FlowNodeEnum.FLOW_NODE_BLFK.getIndex().equals(assistCaseTask.getNodeId())) { QueryWrapper caseFeedbackQueryWrapper = new QueryWrapper<>(); caseFeedbackQueryWrapper.select("handle_user_id", "handle_user_name") .eq("case_id", assistCaseTask.getCaseId()) .eq("handle_unit_id", assistCaseTask.getCandeUnitId()) .eq("handle_type", CaseTaskConsts.HANDLE_TYPE_2).orderByDesc("create_time"); List caseFeedbacks = caseFeedbackService.list(caseFeedbackQueryWrapper); if (CollectionUtils.isNotEmpty(caseFeedbacks)) { CaseFeedback caseFeedback = caseFeedbacks.get(0); assistCaseTask.setHandleUserId(caseFeedback.getHandleUserId()); assistCaseTask.setHandleUserName(caseFeedback.getHandleUserName()); } else { CaseAssistInfo caseAssistInfo = caseAssistInfoService.getByCaseTaskId(assistCaseTask.getId()); if (ObjectUtils.isNotEmpty(caseAssistInfo)) { assistCaseTask.setHandleUserId(caseAssistInfo.getAssistUserId()); assistCaseTask.setHandleUserName(caseAssistInfo.getAssistUserName()); } } } else { assistCaseTask.setHandleUserId(loginUser.getId()); assistCaseTask.setHandleUserName(loginUser.getTrueName() + "(承办部门)"); } assistCaseTask.setHandleResult(CaseTaskConsts.HANDLE_RESULT_0); assistCaseTask.setHandleTime(nowDate); assistCaseTask.setUpdateTime(nowDate); // 计算任务耗时、是否超时、超时多少 assistCaseTask.setUsetimeHour(TaskUsetimeUtils.getUsetimeHour(assistCaseTask.getHandleTime(), assistCaseTask.getCreateTime())); assistCaseTask.setOvertimeStatus(TaskUsetimeUtils.getOvertimeStatus(assistCaseTask.getHandleTime(), assistCaseTask.getExpireTime())); assistCaseTask.setOvertimeHour(TaskUsetimeUtils.getOvertimeHour(assistCaseTask.getHandleTime(), assistCaseTask.getExpireTime())); mapper.updateCaseTask(assistCaseTask); // 结束配合组织当前工作流任务 flowInfoService.endFlow(assistCaseTask.getProcessInstanceId()); // 更新联合处置信息 UpdateWrapper caseAssistInfoUpdateWrapper = new UpdateWrapper<>(); caseAssistInfoUpdateWrapper.eq("case_id", htshCaseTask.getCaseId()) .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 { // 更新联合处置信息 QueryWrapper caseAssistInfoQueryWrapper = new QueryWrapper<>(); caseAssistInfoQueryWrapper.eq("case_id", htshCaseTask.getCaseId()) .eq("assist_unit_id", htshCaseTask.getCandeUnitId()) .eq("assist_status", CaseTaskConsts.ASSIST_STATUS_0); CaseAssistInfo caseAssistInfo = caseAssistInfoService.getOne(caseAssistInfoQueryWrapper); if (ObjectUtils.isNotEmpty(caseAssistInfo)) { caseAssistInfo.setAssistStatus(CaseTaskConsts.ASSIST_STATUS_1); caseAssistInfoService.updateCaseAssistInfo(caseAssistInfo); //删除网格待办 htshCaseTaskPO.setCaseId(htshCaseTask.getCaseId()); this.deleteGridTodo(htshCaseTaskPO); } } } else { // 审核不通过 // 完成当前回退审核节点任务 CaseTask htshCaseTaskPO = new CaseTask(); htshCaseTaskPO.setId(caseReturn.getCaseTaskId()); htshCaseTaskPO.setStatus(CaseTaskConsts.TASK_STATUS_2); htshCaseTaskPO.setHandleUnitId(loginUser.getUnitId()); htshCaseTaskPO.setHandleUnitName(loginUser.getUnitName()); htshCaseTaskPO.setHandleDeptId(loginUser.getDeptId()); htshCaseTaskPO.setHandleDeptName(loginUser.getDeptName()); htshCaseTaskPO.setHandleUserId(loginUser.getId()); htshCaseTaskPO.setHandleUserName(loginUser.getTrueName()); htshCaseTaskPO.setHandleContent(caseReturn.getAuditContent()); htshCaseTaskPO.setHandleResult(CaseTaskConsts.HANDLE_RESULT_2); htshCaseTaskPO.setHandleTime(nowDate); htshCaseTaskPO.setUpdateTime(nowDate); // 计算任务耗时、是否超时、超时多少 htshCaseTaskPO.setUsetimeHour(TaskUsetimeUtils.getUsetimeHour(htshCaseTaskPO.getHandleTime(), htshCaseTask.getCreateTime())); htshCaseTaskPO.setOvertimeStatus(TaskUsetimeUtils.getOvertimeStatus(htshCaseTaskPO.getHandleTime(), htshCaseTask.getExpireTime())); htshCaseTaskPO.setOvertimeHour(TaskUsetimeUtils.getOvertimeHour(htshCaseTaskPO.getHandleTime(), htshCaseTask.getExpireTime())); mapper.updateCaseTask(htshCaseTaskPO); // 查询回退申请信息 CaseReturn btyCaseReturn = caseReturnService.getById(caseReturn.getId()); // 查询回退申请组织信息 CtUnitDTO returnUnit = custClient.getUnitById(btyCaseReturn.getReturnUnitId()); FlowNode nextFlowNode = null; if (UserBaseConsts.UNIT_GRADE_2 == returnUnit.getUnitGrade()) { // 区级组织回退,完成当前回退审核节点任务,进入下一个节点 nextFlowNode = flowInfoService.completeTask(htshCaseTask.getFlowableId(), htshCaseTask.getProcessTaskId(), FlowableConsts.OPERATION_htsh_bty_qj, userId); } else if (UserBaseConsts.UNIT_GRADE_1 == returnUnit.getUnitGrade()) { // 市级组织回退,完成当前回退审核节点任务,进入下一个节点 nextFlowNode = flowInfoService.completeTask(htshCaseTask.getFlowableId(), htshCaseTask.getProcessTaskId(), FlowableConsts.OPERATION_htsh_bty_sj, userId); } else { // 完成当前回退审核节点任务,进入下一个节点 nextFlowNode = flowInfoService.completeTask(htshCaseTask.getFlowableId(), htshCaseTask.getProcessTaskId(), FlowableConsts.OPERATION_htsh_bty, userId); } // 新建下一个节点任务 CaseTask nextCaseTask = new CaseTask(); nextCaseTask.setId(utilsClient.getNewTimeId()); nextCaseTask.setCaseId(htshCaseTask.getCaseId()); nextCaseTask.setFlowableId(nextFlowNode.getFlowableId()); nextCaseTask.setProcessInstanceId(nextFlowNode.getProcessInstanceId()); nextCaseTask.setProcessTaskId(nextFlowNode.getProcessTaskId()); nextCaseTask.setNodeType(nextFlowNode.getNodeType()); nextCaseTask.setNodeId(nextFlowNode.getNodeId()); nextCaseTask.setNodeName(nextFlowNode.getNodeName()); nextCaseTask.setFlowId(nextFlowNode.getFlowId()); nextCaseTask.setNodeShowName(nextFlowNode.getNodeShowName()); nextCaseTask.setCaseTaskType(htshCaseTask.getCaseTaskType()); // 任务所属组织:回退申请组织 nextCaseTask.setCandeUnitId(btyCaseReturn.getReturnUnitId()); nextCaseTask.setCandeUnitName(btyCaseReturn.getReturnUnitName()); // 受理后的节点任务,未读 nextCaseTask.setReadStatus(CaseTaskConsts.READ_STATUS_0); // 任务处理时限 if (nextFlowNode.getExpire() != 0) { nextCaseTask.setExpireTime(syHolidayService.getExpiryDay(nowDate, nextFlowNode.getExpire())); } nextCaseTask.setStatus(CaseTaskConsts.TASK_STATUS_1); nextCaseTask.setDeleteStatus(BaseConsts.DELETE_STATUS_0); nextCaseTask.setCustId(htshCaseTask.getCustId()); nextCaseTask.setCreateTime(nowDate); nextCaseTask.setUpdateTime(nowDate); mapper.insert(nextCaseTask); // 更新纠纷信息扩展表-实际归属组织 CaseInfoUnfold caseInfoUnfoldPO = new CaseInfoUnfold(); caseInfoUnfoldPO.setId(nextCaseTask.getCaseId()); caseInfoUnfoldPO.setBelongUnitId(nextCaseTask.getCandeUnitId()); caseInfoUnfoldPO.setBelongUnitName(nextCaseTask.getCandeUnitName()); caseInfoUnfoldService.updateCaseInfoUnfold(caseInfoUnfoldPO); //修改网格待办流程 CaseInfo caseInfo = caseInfoService.getById(htshCaseTask.getCaseId()); this.taskFlowGridToDo(caseInfo, nextCaseTask, htshCaseTask.getId(), GridEnum.GRID_OBJECT_TYPE_3.getIndex(), GridBaseConsts.GRID_TYPE_3); //修改网格事件流程 List ownerIdList = new ArrayList<>(); ownerIdList.add(htshCaseTask.getId()); ownerIdList.add(caseReturn.getId()); ThreadPoolUtils.executor(new AsynUpdateCaseEventNode(htshCaseTask.getCaseId(), htshCaseTaskPO, nextCaseTask, GridEnum.EVENT_FLOW_7.getIndex(), GridEnum.getCatByTaskNode(nextCaseTask.getNodeId()), ownerIdList, loginUser.getId(), 0, GridEnum.EVENT_PROCESS_STATUS_1.getIndex())); } } catch (Exception e) { log.error("[CaseTaskService.webReturnAudit]调用失败,异常信息:" + e, e); throw new ServiceException("CaseTaskService.webReturnAudit", e); } } /** * web端任务处理-上报 * * @param caseAppear 上报表单 * @param userId 当前登录用户 */ public void webAppearApply(CaseAppear caseAppear, String userId) { try { Date nowDate = DateUtils.getNowDate(); // 获取当前登录用户 CtUserDTO loginUser = custClient.clientGetUserAll(userId); // 创建上报信息 caseAppear.setAppearUnitId(loginUser.getUnitId()); caseAppear.setAppearUnitName(loginUser.getUnitName()); caseAppear.setAppearUserId(loginUser.getId()); caseAppear.setAppearUserName(loginUser.getTrueName()); caseAppear.setAppearTime(nowDate); caseAppear.setApplyStatus(AuditBaseConsts.AUDIT_STATUS_0); caseAppear.setDeleteStatus(BaseConsts.DELETE_STATUS_0); caseAppear.setCustId(loginUser.getCustId()); caseAppear.setCreateTime(nowDate); caseAppear.setUpdateTime(nowDate); // 查询当前节点任务 CaseTask thisCaseTask = mapper.selectById(caseAppear.getCaseTaskId()); // 完成当前当前节点任务 CaseTask thisCaseTaskPO = new CaseTask(); thisCaseTaskPO.setId(caseAppear.getCaseTaskId()); thisCaseTaskPO.setStatus(CaseTaskConsts.TASK_STATUS_2); thisCaseTaskPO.setHandleUnitId(loginUser.getUnitId()); thisCaseTaskPO.setHandleUnitName(loginUser.getUnitName()); thisCaseTaskPO.setHandleDeptId(loginUser.getDeptId()); thisCaseTaskPO.setHandleDeptName(loginUser.getDeptName()); thisCaseTaskPO.setHandleUserId(loginUser.getId()); thisCaseTaskPO.setHandleUserName(loginUser.getTrueName()); thisCaseTaskPO.setHandleContent(caseAppear.getAppearContent()); thisCaseTaskPO.setHandleResult(CaseTaskConsts.HANDLE_RESULT_5); thisCaseTaskPO.setHandleTime(nowDate); thisCaseTaskPO.setUpdateTime(nowDate); // 计算任务耗时、是否超时、超时多少 thisCaseTaskPO.setUsetimeHour(TaskUsetimeUtils.getUsetimeHour(thisCaseTaskPO.getHandleTime(), thisCaseTask.getCreateTime())); thisCaseTaskPO.setOvertimeStatus(TaskUsetimeUtils.getOvertimeStatus(thisCaseTaskPO.getHandleTime(), thisCaseTask.getExpireTime())); thisCaseTaskPO.setOvertimeHour(TaskUsetimeUtils.getOvertimeHour(thisCaseTaskPO.getHandleTime(), thisCaseTask.getExpireTime())); mapper.updateCaseTask(thisCaseTaskPO); // 完成当前待受理工作流节点任务,走上报审核任务 FlowNode sbshFlowNode = flowInfoService.completeTask(thisCaseTask.getFlowableId(), thisCaseTask.getProcessTaskId(), FlowableConsts.OPERATION_sb, userId); // 新建上报审核任务 CaseTask sbshCaseTask = new CaseTask(); sbshCaseTask.setId(utilsClient.getNewTimeId()); sbshCaseTask.setCaseId(thisCaseTask.getCaseId()); sbshCaseTask.setFlowableId(sbshFlowNode.getFlowableId()); sbshCaseTask.setProcessInstanceId(sbshFlowNode.getProcessInstanceId()); sbshCaseTask.setProcessTaskId(sbshFlowNode.getProcessTaskId()); sbshCaseTask.setNodeType(sbshFlowNode.getNodeType()); sbshCaseTask.setNodeId(sbshFlowNode.getNodeId()); sbshCaseTask.setNodeName(sbshFlowNode.getNodeName()); sbshCaseTask.setFlowId(sbshFlowNode.getFlowId()); sbshCaseTask.setNodeShowName(sbshFlowNode.getNodeShowName()); sbshCaseTask.setCaseTaskType(CaseTaskConsts.CASE_TASK_TYPE_1); // 任务所属单位,上报审核组织 sbshCaseTask.setCandeUnitId(caseAppear.getAuditUnitId()); sbshCaseTask.setCandeUnitName(caseAppear.getAuditUnitName()); // 受理后的节点任务,未读 sbshCaseTask.setReadStatus(CaseTaskConsts.READ_STATUS_0); // 任务处理时限 if (sbshFlowNode.getExpire() != 0) { sbshCaseTask.setExpireTime(syHolidayService.getExpiryDay(nowDate, sbshFlowNode.getExpire())); } sbshCaseTask.setStatus(CaseTaskConsts.TASK_STATUS_1); sbshCaseTask.setDeleteStatus(BaseConsts.DELETE_STATUS_0); sbshCaseTask.setCustId(sbshCaseTask.getCustId()); sbshCaseTask.setCreateTime(nowDate); sbshCaseTask.setUpdateTime(nowDate); mapper.insert(sbshCaseTask); // 新增上报申请信息 caseAppear.setCaseTaskId(sbshCaseTask.getId()); caseAppearService.save(caseAppear); // 更新纠纷信息扩展表-实际归属组织 CaseInfoUnfold caseInfoUnfoldPO = new CaseInfoUnfold(); caseInfoUnfoldPO.setId(sbshCaseTask.getCaseId()); caseInfoUnfoldPO.setBelongUnitId(sbshCaseTask.getCandeUnitId()); caseInfoUnfoldPO.setBelongUnitName(sbshCaseTask.getCandeUnitName()); caseInfoUnfoldService.updateCaseInfoUnfold(caseInfoUnfoldPO); //修改网格待办流程 CaseInfo caseInfo = caseInfoService.getById(thisCaseTask.getCaseId()); this.taskFlowGridToDo(caseInfo, sbshCaseTask, thisCaseTask.getId(), GridEnum.GRID_OBJECT_TYPE_4.getIndex(), GridBaseConsts.GRID_TYPE_4); List ownerIdList = new ArrayList<>(); ThreadPoolUtils.executor(new AsynUpdateCaseEventNode(sbshCaseTask.getCaseId(), thisCaseTaskPO, sbshCaseTask, GridEnum.getCatByStatus(thisCaseTask.getStatus()), GridEnum.EVENT_FLOW_7.getIndex(), ownerIdList, loginUser.getId(), 0, GridEnum.EVENT_PROCESS_STATUS_1.getIndex())); } catch (Exception e) { log.error("[CaseTaskService.webAppearApply]调用失败,异常信息:" + e, e); throw new ServiceException("CaseTaskService.webAppearApply", e); } } /** * web端任务处理-上报审核 * * @param caseAppear 上报审核表单 * @param userId 当前登录用户 */ public void webAppearAudit(CaseAppear caseAppear, String userId) { try { Date nowDate = DateUtils.getNowDate(); // 获取当前登录用户 CtUserDTO loginUser = custClient.clientGetUserAll(userId); // 更新上报信息 caseAppear.setApplyStatus(AuditBaseConsts.AUDIT_STATUS_1); caseAppear.setAuditUserId(loginUser.getId()); caseAppear.setAuditUserName(loginUser.getTrueName()); caseAppear.setAuditTime(nowDate); caseAppear.setUpdateTime(nowDate); caseAppearService.updateCaseAppear(caseAppear); // 查询上报审核节点任务 CaseTask sbshCaseTask = mapper.selectById(caseAppear.getCaseTaskId()); // 审核通过 if (AuditBaseConstsEnum.AUDIT_RESULT_1.getIndex().equals(caseAppear.getAuditResult())) { // 完成当前上报审核节点任务 CaseTask sbshCaseTaskPO = new CaseTask(); sbshCaseTaskPO.setId(caseAppear.getCaseTaskId()); sbshCaseTaskPO.setStatus(CaseTaskConsts.TASK_STATUS_2); sbshCaseTaskPO.setHandleUnitId(loginUser.getUnitId()); sbshCaseTaskPO.setHandleUnitName(loginUser.getUnitName()); sbshCaseTaskPO.setHandleDeptId(loginUser.getDeptId()); sbshCaseTaskPO.setHandleDeptName(loginUser.getDeptName()); sbshCaseTaskPO.setHandleUserId(loginUser.getId()); sbshCaseTaskPO.setHandleContent(caseAppear.getAuditContent()); sbshCaseTaskPO.setHandleUserName(loginUser.getTrueName()); sbshCaseTaskPO.setHandleResult(CaseTaskConsts.HANDLE_RESULT_1); sbshCaseTaskPO.setHandleTime(nowDate); sbshCaseTaskPO.setUpdateTime(nowDate); // 计算任务耗时、是否超时、超时多少 sbshCaseTaskPO.setUsetimeHour(TaskUsetimeUtils.getUsetimeHour(sbshCaseTaskPO.getHandleTime(), sbshCaseTask.getCreateTime())); sbshCaseTaskPO.setOvertimeStatus(TaskUsetimeUtils.getOvertimeStatus(sbshCaseTaskPO.getHandleTime(), sbshCaseTask.getExpireTime())); sbshCaseTaskPO.setOvertimeHour(TaskUsetimeUtils.getOvertimeHour(sbshCaseTaskPO.getHandleTime(), sbshCaseTask.getExpireTime())); mapper.updateCaseTask(sbshCaseTaskPO); // 完成当前上报审核任务,走待分派任务 FlowNode dfpFlowNode = flowInfoService.completeTask(sbshCaseTask.getFlowableId(), sbshCaseTask.getProcessTaskId(), FlowableConsts.OPERATION_sbsh_ty, userId); CaseInfo caseInfo = caseInfoService.getById(sbshCaseTask.getCaseId()); // 新建待分派任务 CaseTask dfphCaseTask = new CaseTask(); dfphCaseTask.setId(utilsClient.getNewTimeId()); dfphCaseTask.setCaseId(sbshCaseTask.getCaseId()); dfphCaseTask.setFlowableId(dfpFlowNode.getFlowableId()); dfphCaseTask.setProcessInstanceId(dfpFlowNode.getProcessInstanceId()); dfphCaseTask.setProcessTaskId(dfpFlowNode.getProcessTaskId()); dfphCaseTask.setNodeType(dfpFlowNode.getNodeType()); dfphCaseTask.setNodeId(dfpFlowNode.getNodeId()); dfphCaseTask.setNodeName(dfpFlowNode.getNodeName()); dfphCaseTask.setFlowId(dfpFlowNode.getFlowId()); dfphCaseTask.setNodeShowName(dfpFlowNode.getNodeShowName()); dfphCaseTask.setCaseTaskType(CaseTaskConsts.CASE_TASK_TYPE_1); // 任务所属单位:上报审核组织 dfphCaseTask.setCandeUnitId(loginUser.getUnitId()); dfphCaseTask.setCandeUnitName(loginUser.getUnitName()); // 受理后的节点任务,未读 dfphCaseTask.setReadStatus(CaseTaskConsts.READ_STATUS_0); dfphCaseTask.setStatus(CaseTaskConsts.TASK_STATUS_1); // 任务处理时限 if (dfpFlowNode.getExpire() != 0) { dfphCaseTask.setExpireTime(syHolidayService.getExpiryDay(nowDate, dfpFlowNode.getExpire())); } dfphCaseTask.setDeleteStatus(BaseConsts.DELETE_STATUS_0); dfphCaseTask.setCustId(dfphCaseTask.getCustId()); dfphCaseTask.setCreateTime(nowDate); dfphCaseTask.setUpdateTime(nowDate); mapper.insert(dfphCaseTask); // 更新纠纷信息 CaseInfo caseInfoPO = new CaseInfo(); caseInfoPO.setId(sbshCaseTask.getCaseId()); caseInfoPO.setStatus(CaseStatusBaseConstsEnum.CASE_STATUS_1.getIndex()); caseInfoPO.setStatusName(CaseStatusBaseConstsEnum.CASE_STATUS_1.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); // 更新纠纷信息扩展表-实际归属组织 CaseInfoUnfold caseInfoUnfoldPO = new CaseInfoUnfold(); caseInfoUnfoldPO.setId(dfphCaseTask.getCaseId()); caseInfoUnfoldPO.setBelongUnitId(dfphCaseTask.getCandeUnitId()); caseInfoUnfoldPO.setBelongUnitName(dfphCaseTask.getCandeUnitName()); caseInfoUnfoldService.updateCaseInfoUnfold(caseInfoUnfoldPO); //修改网格待办流程 this.taskFlowGridToDo(caseInfo, dfphCaseTask, sbshCaseTask.getId(), GridEnum.GRID_OBJECT_TYPE_1.getIndex(), GridBaseConsts.GRID_TYPE_1); //修改网格事件流程 List ownerIdList = new ArrayList<>(); ownerIdList.add(sbshCaseTask.getId()); ownerIdList.add(caseAppear.getId()); ThreadPoolUtils.executor(new AsynUpdateCaseEventNode(sbshCaseTask.getCaseId(), sbshCaseTaskPO, dfphCaseTask, GridEnum.EVENT_FLOW_7.getIndex(), GridEnum.getCatByTaskNode(dfphCaseTask.getNodeId()), ownerIdList, loginUser.getId(), 0, GridEnum.EVENT_PROCESS_STATUS_1.getIndex())); } else { // 审核不通过 // 完成当前上报审核任务 CaseTask sbshCaseTaskPO = new CaseTask(); sbshCaseTaskPO.setId(caseAppear.getCaseTaskId()); sbshCaseTaskPO.setStatus(CaseTaskConsts.TASK_STATUS_2); sbshCaseTaskPO.setHandleUnitId(loginUser.getUnitId()); sbshCaseTaskPO.setHandleUnitName(loginUser.getUnitName()); sbshCaseTaskPO.setHandleDeptId(loginUser.getDeptId()); sbshCaseTaskPO.setHandleDeptName(loginUser.getDeptName()); sbshCaseTaskPO.setHandleUserId(loginUser.getId()); sbshCaseTaskPO.setHandleUserName(loginUser.getTrueName()); sbshCaseTaskPO.setHandleContent(caseAppear.getAuditContent()); sbshCaseTaskPO.setHandleResult(CaseTaskConsts.HANDLE_RESULT_2); sbshCaseTaskPO.setHandleTime(nowDate); sbshCaseTaskPO.setUpdateTime(nowDate); // 计算任务耗时、是否超时、超时多少 sbshCaseTaskPO.setUsetimeHour(TaskUsetimeUtils.getUsetimeHour(sbshCaseTaskPO.getHandleTime(), sbshCaseTask.getCreateTime())); sbshCaseTaskPO.setOvertimeStatus(TaskUsetimeUtils.getOvertimeStatus(sbshCaseTaskPO.getHandleTime(), sbshCaseTask.getExpireTime())); sbshCaseTaskPO.setOvertimeHour(TaskUsetimeUtils.getOvertimeHour(sbshCaseTaskPO.getHandleTime(), sbshCaseTask.getExpireTime())); mapper.updateCaseTask(sbshCaseTaskPO); // 完成当前上报审核任务,走待分派任务 FlowNode dfpFlowNode = flowInfoService.completeTask(sbshCaseTask.getFlowableId(), sbshCaseTask.getProcessTaskId(), FlowableConsts.OPERATION_sbsh_bty, userId); // 新建待分派任务 CaseTask dfphCaseTask = new CaseTask(); dfphCaseTask.setId(utilsClient.getNewTimeId()); dfphCaseTask.setCaseId(sbshCaseTask.getCaseId()); dfphCaseTask.setFlowableId(dfpFlowNode.getFlowableId()); dfphCaseTask.setProcessInstanceId(dfpFlowNode.getProcessInstanceId()); dfphCaseTask.setProcessTaskId(dfpFlowNode.getProcessTaskId()); dfphCaseTask.setNodeType(dfpFlowNode.getNodeType()); dfphCaseTask.setNodeId(dfpFlowNode.getNodeId()); dfphCaseTask.setNodeName(dfpFlowNode.getNodeName()); dfphCaseTask.setFlowId(dfpFlowNode.getFlowId()); dfphCaseTask.setNodeShowName(dfpFlowNode.getNodeShowName()); dfphCaseTask.setCaseTaskType(CaseTaskConsts.CASE_TASK_TYPE_1); // 任务所属单位:上报申请组织 CaseAppear caseAppearBO = caseAppearService.getById(caseAppear.getId()); dfphCaseTask.setCandeUnitId(caseAppearBO.getAppearUnitId()); dfphCaseTask.setCandeUnitName(caseAppearBO.getAppearUnitName()); // 受理后的节点任务,未读 dfphCaseTask.setReadStatus(CaseTaskConsts.READ_STATUS_0); dfphCaseTask.setStatus(CaseTaskConsts.TASK_STATUS_1); // 任务处理时限 if (dfpFlowNode.getExpire() != 0) { dfphCaseTask.setExpireTime(syHolidayService.getExpiryDay(nowDate, dfpFlowNode.getExpire())); } dfphCaseTask.setDeleteStatus(BaseConsts.DELETE_STATUS_0); dfphCaseTask.setCustId(dfphCaseTask.getCustId()); dfphCaseTask.setCreateTime(nowDate); dfphCaseTask.setUpdateTime(nowDate); mapper.insert(dfphCaseTask); // 更新纠纷信息扩展表-实际归属组织 CaseInfoUnfold caseInfoUnfoldPO = new CaseInfoUnfold(); caseInfoUnfoldPO.setId(dfphCaseTask.getCaseId()); caseInfoUnfoldPO.setBelongUnitId(dfphCaseTask.getCandeUnitId()); caseInfoUnfoldPO.setBelongUnitName(dfphCaseTask.getCandeUnitName()); caseInfoUnfoldService.updateCaseInfoUnfold(caseInfoUnfoldPO); //修改网格待办流程 CaseInfo caseInfo = caseInfoService.getById(sbshCaseTask.getCaseId()); this.taskFlowGridToDo(caseInfo, dfphCaseTask, sbshCaseTask.getId(), GridEnum.GRID_OBJECT_TYPE_1.getIndex(), GridBaseConsts.GRID_TYPE_1); //修改网格事件流程 List ownerIdList = new ArrayList<>(); ownerIdList.add(sbshCaseTask.getId()); ownerIdList.add(caseAppear.getId()); ThreadPoolUtils.executor(new AsynUpdateCaseEventNode(sbshCaseTask.getCaseId(), sbshCaseTaskPO, dfphCaseTask, GridEnum.EVENT_FLOW_7.getIndex(), GridEnum.getCatByTaskNode(dfphCaseTask.getNodeId()), ownerIdList, loginUser.getId(), 0, GridEnum.EVENT_PROCESS_STATUS_1.getIndex())); } } catch (Exception e) { log.error("[CaseTaskService.webAppearAudit]调用失败,异常信息:" + e, e); throw new ServiceException("CaseTaskService.webAppearAudit", e); } } /** * 按条件查询 * * @param terms 条件 * @return List */ public List listIdByTerms(Map terms) { return mapper.listIdByTerms(terms); } /** * web端-工作台-已办事项 * * @param page 分页对象 * @param terms 条件 * @return Page */ public PageBO pageMyTaskYb(PageRequest page, Map terms) { long total = mapper.countMyTaskYb(terms); List frontPageListYBDTOList = mapper.pageMyTaskYb(page, terms); PageBO pageBo = new PageBO<>(page.getPageNumber(), page.getPageSize(), total, frontPageListYBDTOList); for (FrontPageListYBDTO frontPageListYBDTO : frontPageListYBDTOList) { if (ObjectUtils.isNotEmpty(frontPageListYBDTO.getHandleResult()) && frontPageListYBDTO.getHandleResult().equals(1)) { frontPageListYBDTO.setAuditProcess("已审核"); frontPageListYBDTO.setAuditResult("1"); } else if (ObjectUtils.isNotEmpty(frontPageListYBDTO.getHandleResult()) && frontPageListYBDTO.getHandleResult().equals(2)) { frontPageListYBDTO.setAuditProcess("已审核"); frontPageListYBDTO.setAuditResult("2"); } else { frontPageListYBDTO.setAuditProcess("审核中"); frontPageListYBDTO.setAuditResult("0"); } } CaseTaskYbCountBO caseTaskYbCountBO = new CaseTaskYbCountBO(); terms.put("nodeIdList", Arrays.asList("DSL", "ZJ_DSL", "QJ_DSL", "SJ_DSL", "BLFK", "JASQ", "JASH", "JASH_YJ", "JASH_EJ", "DSRPJ", "JAGD")); long acceptNum = mapper.countMyTaskYb(terms); terms.put("nodeIdList", Arrays.asList("DFP", "ZJ_DFP", "QJ_DFP", "SJ_DFP")); long assignedNum = mapper.countMyTaskYb(terms); terms.put("nodeIdList", Arrays.asList("QJ_S", "SJ_SBSH", "QJ_SBSH")); long reportNUm = mapper.countMyTaskYb(terms); terms.put("nodeIdList", Arrays.asList("HTSH", "ZJ_HTSH", "QJ_HTSH", "SJ_HTSH")); long backNUm = mapper.countMyTaskYb(terms); caseTaskYbCountBO.setAcceptNum(acceptNum); caseTaskYbCountBO.setAssignedNum(assignedNum); caseTaskYbCountBO.setReportNUm(reportNUm); caseTaskYbCountBO.setBackNUm(backNUm); caseTaskYbCountBO.setTotalNum(acceptNum + assignedNum + reportNUm + backNUm); pageBo.setTotalData(caseTaskYbCountBO); return pageBo; } /** * 根据编号物理删除 * * @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 { log.info("caseId:" + caseTask.getCaseId() + "开始删除网格待办任务"); //删除网格待办任务 GridTaskVo gridTaskVo = new GridTaskVo(); gridTaskVo.setCaseId(caseTask.getCaseId()); gridTaskVo.setCaseTaskId(caseTask.getId()); sysClient.deleteTaskTodo(gridTaskVo); log.info("caseId:" + caseTask.getCaseId() + "删除网格待办任务成功"); } catch (Exception e) { log.error("删除网格待办失败"); } } public void createGridToDo(CaseInfo caseInfo, CaseTask caseTask, String gridObjType, String noticeTypeName) { try { log.info("caseId:" + caseInfo.getId() + "开始创建网格待办任务"); SimpleDateFormat outputFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); //添加网格待办 GridToDoBacthVo gridToDoBacthVo = new GridToDoBacthVo(); gridToDoBacthVo.setObjId(caseInfo.getId()); gridToDoBacthVo.setObjType(gridObjType); gridToDoBacthVo.setSysContent(""); gridToDoBacthVo.setYzyContent(""); gridToDoBacthVo.setObjTag(""); gridToDoBacthVo.setMobile("18607214221"); gridToDoBacthVo.setTodoType(GridEnum.GRID_TODO_TYPE_5.getIndex()); String title = ""; title += noticeTypeName; if (StringUtils.isNotBlank(caseInfo.getPlaintiffs())) { title += caseInfo.getPlaintiffs(); if (StringUtils.isNotBlank(caseInfo.getDagents())) { title += "和" + caseInfo.getDefendants(); } } else { if (StringUtils.isNotBlank(caseInfo.getDagents())) { title += caseInfo.getDefendants(); } } title += "的" + caseInfo.getCaseTypeName() + "事件"; gridToDoBacthVo.setTitle(title); gridToDoBacthVo.setLimitTime(outputFormat.format(caseTask.getExpireTime())); gridToDoBacthVo.setCaseTaskId(caseTask.getId()); sysClient.createTaskToDo(gridToDoBacthVo, caseTask.getCandeUnitId()); log.info("caseId:" + caseInfo.getId() + "创建网格待办任务成功"); } catch (Exception e) { log.error("添加网格待办失败"); log.error(e.getMessage(), e); } } public void updateGridToDo(CaseInfo caseInfo, CaseTask caseTask, String previousTaskId, String gridObjType, String noticeTypeName) { try { log.info("caseId:" + caseInfo.getId() + "开始修改网格待办任务"); //添加网格待办 GridToDoVo gridToDoVo = new GridToDoVo(); gridToDoVo.setObjId(caseInfo.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.setCaseTaskId(caseTask.getId()); sysClient.updateTaskTodo(gridToDoVo, previousTaskId); log.info("caseId:" + caseInfo.getId() + "修改网格待办任务成功"); } catch (Exception e) { log.error("修改网格待办失败"); log.error(e.getMessage(), e); } } public void taskFlowGridToDo(CaseInfo caseInfo, CaseTask caseTask, String previousTaskId, String gridObjType, String noticeTypeName) { try { log.info("caseId:" + caseInfo.getId() + "开始网格待办流转任务"); 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(caseInfo.getId()); gridToDoBacthVo.setObjType(gridObjType); gridToDoBacthVo.setSysContent(""); gridToDoBacthVo.setYzyContent(""); gridToDoBacthVo.setObjTag(""); gridToDoBacthVo.setMobile("18607214221"); gridToDoBacthVo.setTodoType(GridEnum.GRID_TODO_TYPE_5.getIndex()); String title = ""; title += noticeTypeName; if (StringUtils.isNotBlank(caseInfo.getPlaintiffs())) { title += caseInfo.getPlaintiffs(); if (StringUtils.isNotBlank(caseInfo.getDagents())) { title += "和" + caseInfo.getDefendants(); } } else { if (StringUtils.isNotBlank(caseInfo.getDagents())) { title += caseInfo.getDefendants(); } } title += "的" + caseInfo.getCaseTypeName() + "事件"; gridToDoBacthVo.setTitle(title); if (ObjectUtils.isNotEmpty(caseTask.getExpireTime())) { gridToDoBacthVo.setLimitTime(outputFormat.format(caseTask.getExpireTime())); } else { gridToDoBacthVo.setLimitTime(outputFormat.format(syHolidayService.getExpiryHour(DateUtils.getNowDate(), 12))); } gridToDoBacthVo.setCaseTaskId(caseTask.getId()); sysClient.createTaskToDo(gridToDoBacthVo, caseTask.getCandeUnitId()); log.info("caseId:" + caseInfo.getId() + "网格待办流转任务成功"); } catch (Exception e) { log.error("修改网格待办流程失败"); log.error(e.getMessage(), e); } } /** * 查询工作流节点 * * @param flowId 流程id * @param nodeId 节点id * @return FlowNodeBaseDTO */ public FlowNodeBaseDTO getNodeByFlowAndNode(String flowId, String nodeId) { return mapper.getNodeByFlowAndNode(flowId, nodeId); } public int deleteCaseTaskByCaseId(String caseId) { return mapper.deleteCaseTaskByCaseId(caseId, new Date()); } /** * 根据纠纷编号获取最新的任务编号 * * @param caseId 纠纷编号 * @return String 任务编号 */ public String getLatestTaskId(String caseId) { try { QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("case_id", caseId) .orderByDesc("create_time") .last("limit 1"); CaseTask caseTask = mapper.selectOne(queryWrapper); return ObjectUtils.isNotEmpty(caseTask) ? caseTask.getId() : null; } catch (Exception e) { log.error("[CaseTaskService.getLatestTaskId]调用失败,异常信息:" + e, e); throw new ServiceException("CaseTaskService.getLatestTaskId", e); } } /** * 修改网格推送任务流程 */ private class AsynUpdateCaseEventNode implements Runnable { private String caseId; private CaseTask oldCaseTask; private CaseTask newCaseTask; private String oldProcess; private String newProcess; private List ownerIdList; private String userId; private long second; private String handleStatus; public AsynUpdateCaseEventNode(String caseId, CaseTask oldCaseTask, CaseTask newCaseTask, String oldProcess, String newProcess, List ownerIdList, String userId, long second, String handleStatus) { this.caseId = caseId; this.oldCaseTask = oldCaseTask; this.newCaseTask = newCaseTask; this.oldProcess = oldProcess; this.newProcess = newProcess; this.ownerIdList = ownerIdList; this.userId = userId; this.second = second; this.handleStatus = handleStatus; } @Override public void run() { try { Thread.sleep(second); log.info("开始修改网格事件流程"); log.info("请求参数:caseId:" + caseId + ",oldCaseTask:" + JSON.toJSONString(oldCaseTask) + ",newCaseTask:" + JSON.toJSONString(newCaseTask) + ",oldProcess:" + oldProcess + ",newProcess:" + newProcess + ",ownerIds:" + ownerIdList.stream().collect(Collectors.joining(",")) + ",userIds:" + userId + ", handleStatus:" + handleStatus); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); GridEventDTO gridEventDTO = null; gridEventDTO = sysClient.getGridEventId(caseId); if (ObjectUtils.isNotEmpty(gridEventDTO) || ObjectUtils.isEmpty(oldCaseTask)) { GridApprovalRecordDTO gridApprovalRecordDTO = new GridApprovalRecordDTO(); gridApprovalRecordDTO.setCaseId(caseId); if (StringUtils.isNotBlank(handleStatus)) { gridApprovalRecordDTO.setHandleStatus(handleStatus); } if (StringUtils.isNotBlank(userId)) { gridApprovalRecordDTO.setAppUserId(userId); } if (ObjectUtils.isNotEmpty(oldCaseTask)) { gridApprovalRecordDTO.setId(oldCaseTask.getId()); gridApprovalRecordDTO.setAppOrgId(oldCaseTask.getHandleUnitId()); gridApprovalRecordDTO.setAppOrgName(oldCaseTask.getHandleUnitName()); gridApprovalRecordDTO.setAppTime(sdf.format(DateUtils.addHour(oldCaseTask.getHandleTime(), 0))); if (StringUtils.isNotBlank(oldCaseTask.getHandleContent())) { gridApprovalRecordDTO.setApproveContent(oldCaseTask.getHandleContent()); } else { gridApprovalRecordDTO.setApproveContent("通过"); } //小时改为天,没满一天不按一天算,不能为小数点 if (oldCaseTask.getUsetimeHour() == null) { gridApprovalRecordDTO.setUseTime(0); } else { gridApprovalRecordDTO.setUseTime(oldCaseTask.getUsetimeHour() / 24); } } else { gridApprovalRecordDTO.setAppTime(sdf.format(DateUtils.getNowDate())); gridApprovalRecordDTO.setUseTime(0); gridApprovalRecordDTO.setId(caseId); gridApprovalRecordDTO.setApproveContent("通过"); } if ("ut_jzwgzxff".equals(oldProcess)) { //初入系统的案件当流程参数参数为ut_mtdfp时跳过 if ("ut_mtdfp".equals(gridEventDTO.getStatus())) { log.info("结束修改网格事件流程,网格事件状态与录入后一致"); return; } else { gridApprovalRecordDTO.setHandleName(gridEventDTO.getStatus()); } } else { gridApprovalRecordDTO.setHandleName(oldProcess); } gridApprovalRecordDTO.setEventId(gridEventDTO.getId()); if (CollectionUtils.isNotEmpty(ownerIdList) && ownerIdList.size() > 0) { gridApprovalRecordDTO.setOwnerIdList(ownerIdList); } if (ObjectUtils.isNotEmpty(newCaseTask) && StringUtils.isNotBlank(newProcess)) { gridApprovalRecordDTO.setNextOrgId(newCaseTask.getCandeUnitId()); gridApprovalRecordDTO.setNextOrgName(newCaseTask.getCandeUnitName()); //如果是刚进入待分派,当前处理流程就是网格事件状态 gridApprovalRecordDTO.setNextHandleName(newProcess); if (ObjectUtils.isNotEmpty(newCaseTask.getExpireTime())) { gridApprovalRecordDTO.setProcessingTime(sdf.format(DateUtils.addHour(newCaseTask.getExpireTime(), 0))); } } sysClient.updateCaseEvent(gridApprovalRecordDTO); log.info("修改网格事件流程成功"); } } catch (Exception e) { log.info("修改网格事件流程异常"); log.error("[CaseTaskService.AsynUpdateCaseEventNode]调用失败,异常信息:" + e, e); } } } /** * 更新对象 */ public void AsynUpdateCaseEventNodeLink(String caseId, CaseTask oldCaseTask, CaseTask newCaseTask, String oldProcess, String newProcess, List ownerIdList, String userId, String handleStatus) { try { ThreadPoolUtils.executor(new AsynUpdateCaseEventNode(caseId, oldCaseTask, newCaseTask, oldProcess, newProcess, ownerIdList, userId, 0, handleStatus)); } catch (Exception e) { log.error("[CaseTaskService.updateCaseTask]调用失败,异常信息:" + e, e); throw new ServiceException("CaseTaskService.updateCaseTask", e); } } }