dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/service/CaseAssistApplyService.java
@@ -3,14 +3,24 @@ import cn.huge.base.common.exception.ServiceException; import cn.huge.base.common.utils.DateUtils; import cn.huge.base.common.utils.IdUtils; import cn.huge.module.cases.consts.CaseTaskConsts; import cn.huge.module.cases.domain.dto.FrontPageListDTO; import cn.huge.module.cases.domain.po.CaseInfo; import cn.huge.module.cases.domain.po.CaseInfoUnfold; import cn.huge.module.cases.domain.po.CaseTask; import cn.huge.module.client.api.impl.CustClientImpl; import cn.huge.module.client.api.impl.SysClientImpl; import cn.huge.module.client.api.impl.UtilsClientImpl; import cn.huge.module.cases.dao.mapper.CaseAssistApplyMapper; import cn.huge.module.cases.domain.po.CaseAssistApply; 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.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.sys.dto.FileIdInfoBaseDTO; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; @@ -47,12 +57,16 @@ @Autowired private UtilsClientImpl utilsClient; @Autowired private CustClientImpl custClient; @Autowired private SysClientImpl sysClient; @Autowired private FlowInfoService flowInfoService; @Autowired private CaseTaskService caseTaskService; @Autowired private CaseInfoUnfoldService caseInfoUnfoldService; /** * 更新对象 @@ -153,21 +167,20 @@ // 获取当前登录用户 CtUserDTO loginUser = custClient.clientGetUserAll(userId); Date now = DateUtils.getNowDate(); // 新增联合处置申请 caseAssistApply.setApplyUnitId(loginUser.getUnitId()); caseAssistApply.setApplyUnitName(loginUser.getUnitName()); caseAssistApply.setApplyUserId(loginUser.getId()); caseAssistApply.setApplyUserName(loginUser.getTrueName()); caseAssistApply.setApplyStatus(0); caseAssistApply.setDeleteStatus(0); caseAssistApply.setApplyStatus(AuditBaseConsts.AUDIT_STATUS_0); caseAssistApply.setDeleteStatus(BaseConsts.DELETE_STATUS_0); caseAssistApply.setApplyTime(now); caseAssistApply.setCreateTime(now); caseAssistApply.setUpdateTime(now); //todo 添加任务 // 上级综治中心审核 CtUnitDTO ctUnitDTO = custClient.getParentZzzxUnit(loginUser.getUnitId()); caseAssistApply.setAuditUnitId(ctUnitDTO.getId()); caseAssistApply.setAuditUnitName(ctUnitDTO.getUnitName()); mapper.insert(caseAssistApply); }catch (Exception e){ log.error("[CaseAssistApplyService.addCaseAssistApply]调用失败,异常信息:"+e, e); @@ -184,15 +197,57 @@ // 获取当前登录用户 CtUserDTO loginUser = custClient.clientGetUserAll(userId); Date now = DateUtils.getNowDate(); caseAssistApply.setApplyStatus(1); caseAssistApply.setApplyStatus(AuditBaseConsts.AUDIT_STATUS_1); caseAssistApply.setAuditUserId(loginUser.getId()); caseAssistApply.setAuditUserName(loginUser.getTrueName()); caseAssistApply.setAuditTime(now); caseAssistApply.setUpdateTime(now); //todo 修改任务状态 mapper.updateCaseAssistApply(caseAssistApply); // 审核通过,就启动联合处置工作流 if (AuditBaseConstsEnum.AUDIT_RESULT_1.getIndex().equals(caseAssistApply.getAuditResult())) { String[] unitIds = caseAssistApply.getApplyAssistUnitId().split(BaseConsts.COMMA); for (String unitId: unitIds) { // 启动联合处置工作流 FlowNode firstFlowNode = flowInfoService.startFlow(FlowableConsts.FLOWABLE_ID_LHCZ, caseAssistApply.getCaseId()); // 创建配合部门待受理任务 CaseTask dslCaseTask = new CaseTask(); dslCaseTask.setId(utilsClient.getNewTimeId()); dslCaseTask.setCaseId(caseAssistApply.getCaseId()); dslCaseTask.setFlowableId(firstFlowNode.getFlowableId()); dslCaseTask.setProcessInstanceId(firstFlowNode.getProcessInstanceId()); dslCaseTask.setProcessTaskId(firstFlowNode.getProcessTaskId()); dslCaseTask.setTaskType(CaseTaskConsts.TASK_TYPE_1); dslCaseTask.setNodeType(firstFlowNode.getNodeType()); dslCaseTask.setNodeId(firstFlowNode.getNodeId()); dslCaseTask.setNodeName(firstFlowNode.getNodeName()); dslCaseTask.setFlowId(firstFlowNode.getFlowId()); dslCaseTask.setNodeShowName(firstFlowNode.getNodeShowName()); dslCaseTask.setCaseTaskType(CaseTaskConsts.CASE_TASK_TYPE_2); // 通过调度的,任务候选执行者类型是上一步骤选择 dslCaseTask.setCandeType(CaseTaskConsts.CANDE_TYPE_1); CtUnitDTO ctUnitDTO = custClient.getUnitById(unitId); dslCaseTask.setCandeUnitId(ctUnitDTO.getId()); dslCaseTask.setCandeUnitName(ctUnitDTO.getUnitName()); // 需要签收 dslCaseTask.setSignStatus(CaseTaskConsts.SIGN_STATUS_1); dslCaseTask.setStatus(CaseTaskConsts.TASK_STATUS_1); // 任务处理时限 if (firstFlowNode.getExpire() != 0) { dslCaseTask.setExpireTime(DateUtils.addDay(now, firstFlowNode.getExpire())); } dslCaseTask.setDeleteStatus(BaseConsts.DELETE_STATUS_0); dslCaseTask.setCustId(caseAssistApply.getCustId()); dslCaseTask.setCreateTime(now); dslCaseTask.setUpdateTime(now); caseTaskService.save(dslCaseTask); // 更新纠纷扩展信息 CaseInfoUnfold caseInfoUnfoldPO = new CaseInfoUnfold(); caseInfoUnfoldPO.setId(dslCaseTask.getCaseId()); caseInfoUnfoldPO.setAssistUnitId(caseAssistApply.getApplyAssistUnitId()); caseInfoUnfoldPO.setAssistUnitName(caseAssistApply.getApplyAssistUnitName()); caseInfoUnfoldService.updateCaseInfoUnfold(caseInfoUnfoldPO); } } }catch (Exception e){ log.error("[CaseAssistApplyService.reviewCaseAssistApply]调用失败,异常信息:"+e, e); throw new ServiceException("CaseAssistApplyService.reviewCaseAssistApply", e); dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/service/CaseTaskService.java
@@ -896,7 +896,7 @@ */ public void webStartFlowZXSL(CaseInfo caseInfo, CtUserDTO loginUser){ try{ // 启动自行手里工作流 // 启动自行受理工作流 FlowNode firstFlowNode = flowInfoService.startFlow(FlowableConsts.FLOWABLE_ID_ZXSL, caseInfo.getId()); // 进入第1个节点-办理反馈 CaseTask blfkCaseTask = new CaseTask(); @@ -1124,32 +1124,31 @@ CtUserDTO loginUser = custClient.clientGetUserAll(userId); List<String> taskIdList = new ArrayList<>(); List<String> caseIdList = new ArrayList<>(); // 更新纠纷任务信息 CaseTask caseTaskPO = new CaseTask(); caseTaskPO.setSignStatus(CaseTaskConsts.SIGN_STATUS_2); caseTaskPO.setSignTime(nowDate); caseTaskPO.setSignUserId(loginUser.getId()); caseTaskPO.setSignUserName(loginUser.getTrueName()); caseTaskPO.setHandleIllust("已签收"); caseTaskPO.setUpdateTime(nowDate); // 更新纠纷信息 CaseInfo caseInfoPO = new CaseInfo(); 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); for(SignTaskDTO signTaskDTO: signTaskDTOList){ taskIdList.add(signTaskDTO.getCaseTaskId()); caseIdList.add(signTaskDTO.getCaseId()); for (SignTaskDTO signTaskDTO: signTaskDTOList){ CaseTask qsCaseTask = mapper.selectById(signTaskDTO.getCaseId()); // 更新纠纷任务信息 CaseTask caseTaskPO = new CaseTask(); caseTaskPO.setSignStatus(CaseTaskConsts.SIGN_STATUS_2); caseTaskPO.setSignTime(nowDate); caseTaskPO.setSignUserId(loginUser.getId()); caseTaskPO.setSignUserName(loginUser.getTrueName()); caseTaskPO.setHandleIllust("已签收"); caseTaskPO.setUpdateTime(nowDate); mapper.updateCaseTask(caseTaskPO); // 承办部门签收才更新纠纷信息 if (CaseTaskConsts.CASE_TASK_TYPE_1 == qsCaseTask.getCaseTaskType()) { // 更新纠纷信息 CaseInfo caseInfoPO = new CaseInfo(); 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); } } mapper.updateCaseTaskList(caseTaskPO, taskIdList); caseInfoService.updateCaseInfoList(caseInfoPO, caseIdList); }catch (Exception e){ log.error("[CaseTaskService.webSign]调用失败,异常信息:"+e, e); throw new ServiceException("CaseTaskService.webSign", e); @@ -1197,7 +1196,7 @@ blfkCaseTask.setNodeName(newFlowNode.getNodeName()); blfkCaseTask.setFlowId(newFlowNode.getFlowId()); blfkCaseTask.setNodeShowName(newFlowNode.getNodeShowName()); blfkCaseTask.setCaseTaskType(CaseTaskConsts.CASE_TASK_TYPE_1); blfkCaseTask.setCaseTaskType(dslCaseTask.getCaseTaskType()); // 受理任务,任务候选执行者类型是上一步骤选择 blfkCaseTask.setCandeType(CaseTaskConsts.CANDE_TYPE_1); blfkCaseTask.setCandeUnitId(loginUser.getUnitId()); @@ -1214,23 +1213,26 @@ blfkCaseTask.setCreateTime(nowDate); blfkCaseTask.setUpdateTime(nowDate); mapper.insert(blfkCaseTask); // 更新纠纷信息 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()); caseInfoService.updateCaseInfo(caseInfoPO); // 更新纠纷扩展信息 CaseInfoUnfold caseInfoUnfoldPO = new CaseInfoUnfold(); caseInfoUnfoldPO.setId(blfkCaseTask.getCaseId()); caseInfoUnfoldPO.setAcceptTime(nowDate); caseInfoUnfoldPO.setMediateUnitId(blfkCaseTask.getCandeUnitId()); caseInfoUnfoldPO.setMediateUnitName(blfkCaseTask.getCandeUnitName()); caseInfoUnfoldService.updateCaseInfoUnfold(caseInfoUnfoldPO); // 承办部门签收才更新纠纷信息 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()); caseInfoService.updateCaseInfo(caseInfoPO); // 更新纠纷扩展信息 CaseInfoUnfold caseInfoUnfoldPO = new CaseInfoUnfold(); caseInfoUnfoldPO.setId(blfkCaseTask.getCaseId()); caseInfoUnfoldPO.setAcceptTime(nowDate); caseInfoUnfoldPO.setMediateUnitId(blfkCaseTask.getCandeUnitId()); caseInfoUnfoldPO.setMediateUnitName(blfkCaseTask.getCandeUnitName()); caseInfoUnfoldService.updateCaseInfoUnfold(caseInfoUnfoldPO); } }catch (Exception e){ log.error("[CaseTaskService.webAccept]调用失败,异常信息:"+e, e); throw new ServiceException("CaseTaskService.webAccept", e); @@ -1475,6 +1477,27 @@ caseInfoUnfoldPO.setUpdateTime(nowDate); caseInfoUnfoldService.updateCaseInfoUnfold(caseInfoUnfoldPO); } // 查询配合部门的任务,全部结束流程 QueryWrapper<CaseTask> caseTaskQueryWrapper = new QueryWrapper<>(); caseTaskQueryWrapper.eq("case_task_id", CaseTaskConsts.CASE_TASK_TYPE_2).eq("case_id", jasqCaseTask.getCaseId()); List<CaseTask> assistCaseTaskList = mapper.selectList(caseTaskQueryWrapper); for (CaseTask assistCaseTask: assistCaseTaskList){ // 完成配合部门当前办理反馈任务 assistCaseTask.setId(caseWindupApply.getCaseTaskId()); assistCaseTask.setStatus(CaseTaskConsts.TASK_STATUS_2); assistCaseTask.setHandleUnitId(loginUser.getUnitId()); assistCaseTask.setHandleUnitName(loginUser.getUnitName()); assistCaseTask.setHandleUserId(loginUser.getId()); assistCaseTask.setHandleUserName(loginUser.getTrueName()); assistCaseTask.setHandleResult(CaseTaskConsts.HANDLE_RESULT_1); assistCaseTask.setHandleTime(nowDate); assistCaseTask.setUpdateTime(nowDate); mapper.updateCaseTask(assistCaseTask); // 完成当前配合部门办理反馈工作流任务 flowInfoService.completeTask(assistCaseTask.getFlowableId(), assistCaseTask.getProcessTaskId(), FlowableConsts.OPERATION_forward, userId); } }catch (Exception e){ log.error("[CaseTaskService.webWindupApply]调用失败,异常信息:"+e, e); throw new ServiceException("CaseTaskService.webWindupApply", e); @@ -1652,7 +1675,7 @@ } /** * web端任务处理-上报 * web端任务处理-回退申请 * @param caseReturn 回退申请表单 * @param userId 当前登录用户 */ dyh-service/dyh-mediate/src/main/java/cn/huge/module/flow/consts/FlowableConsts.java
@@ -13,9 +13,11 @@ * 两个默认流程定义编号 * 自行受理:GZDYH_ZXSL_3LEVEL_V1 * 来访登记:GZDYH_LFDJ_3LEVEL_V1 * 联合处置:GZDYH_LHCZ_3LEVEL_V1 */ public static final String FLOWABLE_ID_LFDJ = "GZDYH_LFDJ_3LEVEL_V1"; public static final String FLOWABLE_ID_ZXSL = "GZDYH_ZXSL_3LEVEL_V1"; public static final String FLOWABLE_ID_LHCZ = "GZDYH_LHCZ_3LEVEL_V1"; /** * 工作流通用任务条件, dyh-service/dyh-mediate/src/main/resources/processes/GZDYH_LHCZ_3LEVEL_V1.bpmn20.xml
New file @@ -0,0 +1,45 @@ <?xml version='1.0' encoding='UTF-8'?> <definitions xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:flowable="http://flowable.org/bpmn" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:omgdc="http://www.omg.org/spec/DD/20100524/DC" xmlns:omgdi="http://www.omg.org/spec/DD/20100524/DI" typeLanguage="http://www.w3.org/2001/XMLSchema" expressionLanguage="http://www.w3.org/1999/XPath" targetNamespace="http://www.flowable.org/processdef"> <process id="GZDYH_LHCZ_3LEVEL_V1" name="GZDYH_LHCZ_3LEVEL_V1" isExecutable="true"> <documentation>GZDYH_LHCZ_3LEVEL_V1</documentation> <startEvent id="ZXSL_START" name="开始"/> <userTask id="BLFK" name="办理反馈"/> <endEvent id="ZXSL_END" name="结束"/> <userTask id="DSL" name="待受理"/> <sequenceFlow id="sid-6FA28350-5EFB-4393-B91A-D73ED7C3B390" sourceRef="ZXSL_START" targetRef="DSL"/> <sequenceFlow id="sid-A0580378-38E0-44D8-981B-9D048ED42E97" name="通过" sourceRef="BLFK" targetRef="ZXSL_END"> <conditionExpression xsi:type="tFormalExpression"><![CDATA[${operation=='forward'}]]></conditionExpression> </sequenceFlow> <sequenceFlow id="sid-295E1BEE-52BD-4CA8-A7E9-654AA5DB7A4D" name="通过" sourceRef="DSL" targetRef="BLFK"> <conditionExpression xsi:type="tFormalExpression"><![CDATA[${operation=='forward'}]]></conditionExpression> </sequenceFlow> </process> <bpmndi:BPMNDiagram id="BPMNDiagram_GZDYH_LHCZ_3LEVEL_V1"> <bpmndi:BPMNPlane bpmnElement="GZDYH_LHCZ_3LEVEL_V1" id="BPMNPlane_GZDYH_LHCZ_3LEVEL_V1"> <bpmndi:BPMNShape bpmnElement="ZXSL_START" id="BPMNShape_ZXSL_START"> <omgdc:Bounds height="30.0" width="30.0" x="15.0" y="160.00001244246837"/> </bpmndi:BPMNShape> <bpmndi:BPMNShape bpmnElement="BLFK" id="BPMNShape_BLFK"> <omgdc:Bounds height="80.0" width="100.0" x="314.9999953061343" y="134.99999798834327"/> </bpmndi:BPMNShape> <bpmndi:BPMNShape bpmnElement="ZXSL_END" id="BPMNShape_ZXSL_END"> <omgdc:Bounds height="28.0" width="28.0" x="509.9999834597113" y="161.00001205503818"/> </bpmndi:BPMNShape> <bpmndi:BPMNShape bpmnElement="DSL" id="BPMNShape_DSL"> <omgdc:Bounds height="80.0" width="100.0" x="150.0" y="135.00001244246837"/> </bpmndi:BPMNShape> <bpmndi:BPMNEdge bpmnElement="sid-6FA28350-5EFB-4393-B91A-D73ED7C3B390" id="BPMNEdge_sid-6FA28350-5EFB-4393-B91A-D73ED7C3B390"> <omgdi:waypoint x="44.94999936756078" y="175.00001244246837"/> <omgdi:waypoint x="149.99999999993562" y="175.00001244246837"/> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge bpmnElement="sid-A0580378-38E0-44D8-981B-9D048ED42E97" id="BPMNEdge_sid-A0580378-38E0-44D8-981B-9D048ED42E97"> <omgdi:waypoint x="414.9499950929594" y="175.00000240740906"/> <omgdi:waypoint x="509.9999834597113" y="175.00001081646118"/> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge bpmnElement="sid-295E1BEE-52BD-4CA8-A7E9-654AA5DB7A4D" id="BPMNEdge_sid-295E1BEE-52BD-4CA8-A7E9-654AA5DB7A4D"> <omgdi:waypoint x="249.94999995704916" y="175.00000806243037"/> <omgdi:waypoint x="314.9999953060832" y="175.00000236400126"/> </bpmndi:BPMNEdge> </bpmndi:BPMNPlane> </bpmndi:BPMNDiagram> </definitions>