diff --git a/casic-service-cws/casic-cws-flow/pom.xml b/casic-service-cws/casic-cws-flow/pom.xml index 63571a1..8b5f667 100644 --- a/casic-service-cws/casic-cws-flow/pom.xml +++ b/casic-service-cws/casic-cws-flow/pom.xml @@ -36,7 +36,11 @@ casic-admin-support ${admin.version} - + + com.casic + casic-push-support + ${extension.version} + com.casic diff --git a/casic-service-cws/casic-cws-flow/pom.xml b/casic-service-cws/casic-cws-flow/pom.xml index 63571a1..8b5f667 100644 --- a/casic-service-cws/casic-cws-flow/pom.xml +++ b/casic-service-cws/casic-cws-flow/pom.xml @@ -36,7 +36,11 @@ casic-admin-support ${admin.version} - + + com.casic + casic-push-support + ${extension.version} + com.casic diff --git a/casic-service-cws/casic-cws-flow/src/main/java/com/casic/missiles/modular/flowable/service/handler/BizCaseFlowHandler.java b/casic-service-cws/casic-cws-flow/src/main/java/com/casic/missiles/modular/flowable/service/handler/BizCaseFlowHandler.java index 984e34d..0a45adc 100644 --- a/casic-service-cws/casic-cws-flow/src/main/java/com/casic/missiles/modular/flowable/service/handler/BizCaseFlowHandler.java +++ b/casic-service-cws/casic-cws-flow/src/main/java/com/casic/missiles/modular/flowable/service/handler/BizCaseFlowHandler.java @@ -1,22 +1,32 @@ package com.casic.missiles.modular.flowable.service.handler; +import com.baomidou.mybatisplus.toolkit.IdWorker; +import com.casic.missiles.core.MessageBody; +import com.casic.missiles.core.common.constant.Const; +import com.casic.missiles.core.enums.PushMessageType; +import com.casic.missiles.core.service.ICommonPushService; import com.casic.missiles.core.util.SpringContextHolder; +import com.casic.missiles.core.util.ToolUtil; +import com.casic.missiles.modular.cwscase.dto.CasePushDTO; +import com.casic.missiles.modular.cwscase.model.CwsCase; import com.casic.missiles.modular.flowable.dto.ProcessDcmsDto; +import com.casic.missiles.modular.flowable.service.ICwsSuportService; import com.casic.missiles.modular.flowable.service.IDcmsFlowBizService; import com.casic.missiles.modular.flowable.service.IDcmsFlowNodeHandler; import com.casic.missiles.modular.flowable.service.IFlowCaseHandler; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; -import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.text.ParseException; +import java.util.ArrayList; import java.util.Arrays; import java.util.List; /** * 业务相关属性处理handler + * * @author lwh */ @Component @@ -28,8 +38,14 @@ private String[] stateInts; @Value("${casic.dcms.limitTimeNoUpdate.node}") private String[] nodeStrs; + @Value("${casic.push.title}") + private String title; private static List states = null; private static List nodes = null; + @Autowired(required = false) + private ICommonPushService pushService; + @Autowired + private ICwsSuportService cwsSuportService; static { //二级部门内部相关处理不进行当前节点要求更新 39 30 37 45 301 302 303 304 46 @@ -50,7 +66,7 @@ * @param dto */ @Override - @Transactional + @Transactional(rollbackFor = Exception.class) public void processBiz(ProcessDcmsDto dto) throws ParseException { if (states == null) { states = Arrays.asList(stateInts); @@ -67,6 +83,35 @@ //案件处置中的 状态不发生变更 延期及缓办同意发生节点时间变更 flowBizService.updateCwsNodeLimitTime(dto); + //推送消息体 + if (Const.ONE.equals(dto.getIsPush()) && pushService != null) { + if (ToolUtil.isNotEmpty(dto.getTaskUserId())) { + CwsCase cwsCase = cwsSuportService.selectCaseById(dto.getBizId()); + MessageBody messageBody = this.covertMessageBody(cwsCase); + //如果指定到人则进行人员案卷推送信息 + List users = new ArrayList<>(); + users.add(new Long(dto.getTaskUserId())); + pushService.pushMsgByUsers(users, messageBody); + } + } + } + /** + * 转换案卷类型为推送消息 + * + * @param cwsCase + * @return + */ + private MessageBody covertMessageBody(CwsCase cwsCase) { + CasePushDTO pushDTO = new CasePushDTO(); + pushDTO.setId(String.valueOf(cwsCase.getId())); + + MessageBody body = new MessageBody(); + body.setId(IdWorker.getId()); + body.setData(pushDTO); + body.setTitle(String.format(title, cwsCase.getCaseid())); + body.setContent(cwsCase.getDescription()); + body.setType(PushMessageType.NORMAL.getType()); + return body; } } diff --git a/casic-service-cws/casic-cws-flow/pom.xml b/casic-service-cws/casic-cws-flow/pom.xml index 63571a1..8b5f667 100644 --- a/casic-service-cws/casic-cws-flow/pom.xml +++ b/casic-service-cws/casic-cws-flow/pom.xml @@ -36,7 +36,11 @@ casic-admin-support ${admin.version} - + + com.casic + casic-push-support + ${extension.version} + com.casic diff --git a/casic-service-cws/casic-cws-flow/src/main/java/com/casic/missiles/modular/flowable/service/handler/BizCaseFlowHandler.java b/casic-service-cws/casic-cws-flow/src/main/java/com/casic/missiles/modular/flowable/service/handler/BizCaseFlowHandler.java index 984e34d..0a45adc 100644 --- a/casic-service-cws/casic-cws-flow/src/main/java/com/casic/missiles/modular/flowable/service/handler/BizCaseFlowHandler.java +++ b/casic-service-cws/casic-cws-flow/src/main/java/com/casic/missiles/modular/flowable/service/handler/BizCaseFlowHandler.java @@ -1,22 +1,32 @@ package com.casic.missiles.modular.flowable.service.handler; +import com.baomidou.mybatisplus.toolkit.IdWorker; +import com.casic.missiles.core.MessageBody; +import com.casic.missiles.core.common.constant.Const; +import com.casic.missiles.core.enums.PushMessageType; +import com.casic.missiles.core.service.ICommonPushService; import com.casic.missiles.core.util.SpringContextHolder; +import com.casic.missiles.core.util.ToolUtil; +import com.casic.missiles.modular.cwscase.dto.CasePushDTO; +import com.casic.missiles.modular.cwscase.model.CwsCase; import com.casic.missiles.modular.flowable.dto.ProcessDcmsDto; +import com.casic.missiles.modular.flowable.service.ICwsSuportService; import com.casic.missiles.modular.flowable.service.IDcmsFlowBizService; import com.casic.missiles.modular.flowable.service.IDcmsFlowNodeHandler; import com.casic.missiles.modular.flowable.service.IFlowCaseHandler; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; -import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.text.ParseException; +import java.util.ArrayList; import java.util.Arrays; import java.util.List; /** * 业务相关属性处理handler + * * @author lwh */ @Component @@ -28,8 +38,14 @@ private String[] stateInts; @Value("${casic.dcms.limitTimeNoUpdate.node}") private String[] nodeStrs; + @Value("${casic.push.title}") + private String title; private static List states = null; private static List nodes = null; + @Autowired(required = false) + private ICommonPushService pushService; + @Autowired + private ICwsSuportService cwsSuportService; static { //二级部门内部相关处理不进行当前节点要求更新 39 30 37 45 301 302 303 304 46 @@ -50,7 +66,7 @@ * @param dto */ @Override - @Transactional + @Transactional(rollbackFor = Exception.class) public void processBiz(ProcessDcmsDto dto) throws ParseException { if (states == null) { states = Arrays.asList(stateInts); @@ -67,6 +83,35 @@ //案件处置中的 状态不发生变更 延期及缓办同意发生节点时间变更 flowBizService.updateCwsNodeLimitTime(dto); + //推送消息体 + if (Const.ONE.equals(dto.getIsPush()) && pushService != null) { + if (ToolUtil.isNotEmpty(dto.getTaskUserId())) { + CwsCase cwsCase = cwsSuportService.selectCaseById(dto.getBizId()); + MessageBody messageBody = this.covertMessageBody(cwsCase); + //如果指定到人则进行人员案卷推送信息 + List users = new ArrayList<>(); + users.add(new Long(dto.getTaskUserId())); + pushService.pushMsgByUsers(users, messageBody); + } + } + } + /** + * 转换案卷类型为推送消息 + * + * @param cwsCase + * @return + */ + private MessageBody covertMessageBody(CwsCase cwsCase) { + CasePushDTO pushDTO = new CasePushDTO(); + pushDTO.setId(String.valueOf(cwsCase.getId())); + + MessageBody body = new MessageBody(); + body.setId(IdWorker.getId()); + body.setData(pushDTO); + body.setTitle(String.format(title, cwsCase.getCaseid())); + body.setContent(cwsCase.getDescription()); + body.setType(PushMessageType.NORMAL.getType()); + return body; } } diff --git a/casic-service-cws/casic-cws-flow/src/main/java/com/casic/missiles/modular/flowable/service/impl/CaseFlowServiceImpl.java b/casic-service-cws/casic-cws-flow/src/main/java/com/casic/missiles/modular/flowable/service/impl/CaseFlowServiceImpl.java index 01b1ee1..1504ede 100644 --- a/casic-service-cws/casic-cws-flow/src/main/java/com/casic/missiles/modular/flowable/service/impl/CaseFlowServiceImpl.java +++ b/casic-service-cws/casic-cws-flow/src/main/java/com/casic/missiles/modular/flowable/service/impl/CaseFlowServiceImpl.java @@ -62,6 +62,7 @@ */ @Value("${casic.case.defaultLimitTime:120}") private Integer defaultLimitTime; + @Autowired private ProcessEngine processEngine; @@ -136,9 +137,12 @@ } } if (count == 1) { - //执行自动流转 + //执行自动流转 流程处理handler中会进行推送处理 dto.setCurrState(autoNode.getState()); dto.setChangeState(autoNode.getNextState()); + if (ToolUtil.isEmpty(dto.getIsPush())) { + dto.setIsPush(autoNode.getIsPush()); + } this.completeCaseTask(dto); } } diff --git a/casic-service-cws/casic-cws-flow/pom.xml b/casic-service-cws/casic-cws-flow/pom.xml index 63571a1..8b5f667 100644 --- a/casic-service-cws/casic-cws-flow/pom.xml +++ b/casic-service-cws/casic-cws-flow/pom.xml @@ -36,7 +36,11 @@ casic-admin-support ${admin.version} - + + com.casic + casic-push-support + ${extension.version} + com.casic diff --git a/casic-service-cws/casic-cws-flow/src/main/java/com/casic/missiles/modular/flowable/service/handler/BizCaseFlowHandler.java b/casic-service-cws/casic-cws-flow/src/main/java/com/casic/missiles/modular/flowable/service/handler/BizCaseFlowHandler.java index 984e34d..0a45adc 100644 --- a/casic-service-cws/casic-cws-flow/src/main/java/com/casic/missiles/modular/flowable/service/handler/BizCaseFlowHandler.java +++ b/casic-service-cws/casic-cws-flow/src/main/java/com/casic/missiles/modular/flowable/service/handler/BizCaseFlowHandler.java @@ -1,22 +1,32 @@ package com.casic.missiles.modular.flowable.service.handler; +import com.baomidou.mybatisplus.toolkit.IdWorker; +import com.casic.missiles.core.MessageBody; +import com.casic.missiles.core.common.constant.Const; +import com.casic.missiles.core.enums.PushMessageType; +import com.casic.missiles.core.service.ICommonPushService; import com.casic.missiles.core.util.SpringContextHolder; +import com.casic.missiles.core.util.ToolUtil; +import com.casic.missiles.modular.cwscase.dto.CasePushDTO; +import com.casic.missiles.modular.cwscase.model.CwsCase; import com.casic.missiles.modular.flowable.dto.ProcessDcmsDto; +import com.casic.missiles.modular.flowable.service.ICwsSuportService; import com.casic.missiles.modular.flowable.service.IDcmsFlowBizService; import com.casic.missiles.modular.flowable.service.IDcmsFlowNodeHandler; import com.casic.missiles.modular.flowable.service.IFlowCaseHandler; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; -import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.text.ParseException; +import java.util.ArrayList; import java.util.Arrays; import java.util.List; /** * 业务相关属性处理handler + * * @author lwh */ @Component @@ -28,8 +38,14 @@ private String[] stateInts; @Value("${casic.dcms.limitTimeNoUpdate.node}") private String[] nodeStrs; + @Value("${casic.push.title}") + private String title; private static List states = null; private static List nodes = null; + @Autowired(required = false) + private ICommonPushService pushService; + @Autowired + private ICwsSuportService cwsSuportService; static { //二级部门内部相关处理不进行当前节点要求更新 39 30 37 45 301 302 303 304 46 @@ -50,7 +66,7 @@ * @param dto */ @Override - @Transactional + @Transactional(rollbackFor = Exception.class) public void processBiz(ProcessDcmsDto dto) throws ParseException { if (states == null) { states = Arrays.asList(stateInts); @@ -67,6 +83,35 @@ //案件处置中的 状态不发生变更 延期及缓办同意发生节点时间变更 flowBizService.updateCwsNodeLimitTime(dto); + //推送消息体 + if (Const.ONE.equals(dto.getIsPush()) && pushService != null) { + if (ToolUtil.isNotEmpty(dto.getTaskUserId())) { + CwsCase cwsCase = cwsSuportService.selectCaseById(dto.getBizId()); + MessageBody messageBody = this.covertMessageBody(cwsCase); + //如果指定到人则进行人员案卷推送信息 + List users = new ArrayList<>(); + users.add(new Long(dto.getTaskUserId())); + pushService.pushMsgByUsers(users, messageBody); + } + } + } + /** + * 转换案卷类型为推送消息 + * + * @param cwsCase + * @return + */ + private MessageBody covertMessageBody(CwsCase cwsCase) { + CasePushDTO pushDTO = new CasePushDTO(); + pushDTO.setId(String.valueOf(cwsCase.getId())); + + MessageBody body = new MessageBody(); + body.setId(IdWorker.getId()); + body.setData(pushDTO); + body.setTitle(String.format(title, cwsCase.getCaseid())); + body.setContent(cwsCase.getDescription()); + body.setType(PushMessageType.NORMAL.getType()); + return body; } } diff --git a/casic-service-cws/casic-cws-flow/src/main/java/com/casic/missiles/modular/flowable/service/impl/CaseFlowServiceImpl.java b/casic-service-cws/casic-cws-flow/src/main/java/com/casic/missiles/modular/flowable/service/impl/CaseFlowServiceImpl.java index 01b1ee1..1504ede 100644 --- a/casic-service-cws/casic-cws-flow/src/main/java/com/casic/missiles/modular/flowable/service/impl/CaseFlowServiceImpl.java +++ b/casic-service-cws/casic-cws-flow/src/main/java/com/casic/missiles/modular/flowable/service/impl/CaseFlowServiceImpl.java @@ -62,6 +62,7 @@ */ @Value("${casic.case.defaultLimitTime:120}") private Integer defaultLimitTime; + @Autowired private ProcessEngine processEngine; @@ -136,9 +137,12 @@ } } if (count == 1) { - //执行自动流转 + //执行自动流转 流程处理handler中会进行推送处理 dto.setCurrState(autoNode.getState()); dto.setChangeState(autoNode.getNextState()); + if (ToolUtil.isEmpty(dto.getIsPush())) { + dto.setIsPush(autoNode.getIsPush()); + } this.completeCaseTask(dto); } } diff --git a/casic-service-cws/casic-cws-flow/src/main/java/com/casic/missiles/modular/flowable/util/BizFlowUtil.java b/casic-service-cws/casic-cws-flow/src/main/java/com/casic/missiles/modular/flowable/util/BizFlowUtil.java index 7eba9ed..0db81b7 100644 --- a/casic-service-cws/casic-cws-flow/src/main/java/com/casic/missiles/modular/flowable/util/BizFlowUtil.java +++ b/casic-service-cws/casic-cws-flow/src/main/java/com/casic/missiles/modular/flowable/util/BizFlowUtil.java @@ -39,11 +39,12 @@ map.put("groupId", dto.getDispatchDeptId()); map.put("isNeedRevisit", dto.getIsNeedRevisit()); map.put("taskUserId", dto.getTaskUserId()); - map.put("processJson", JSON.toJSONString(dto)); + //根据状态变更获取操作描述信息 IFlowNextnodeService flowNextnodeService = SpringContextHolder.getBean(IFlowNextnodeService.class); String operationType = ""; boolean isExist = false; + String nodePush = null; EntityWrapper query = new EntityWrapper<>(); query.eq(FlowNodeConstant.STATE, dto.getCurrState()); List flowNextnodes = flowNextnodeService.getFlowNextnodesByCurrState(query); @@ -58,6 +59,7 @@ operationType = flowNextnode.getOperation(); isExist = true; } + nodePush = flowNextnode.getIsShow(); } } @@ -66,7 +68,11 @@ ex.setMessage("该流转节点不存在,请确认"); throw ex; } - + //如果案卷处理节点信息需要推送则设置标志位 + if (ToolUtil.isEmpty(dto.getIsPush())) { + dto.setIsPush(nodePush); + } + map.put("processJson", JSON.toJSONString(dto)); FlowableUtil.completeTask(dto.getTaskId(), dto.getRemarks(), map, operationType, dto.getCurrUser().getDeptId(), dto.getCurrUser().getUserId(), dto.getCurrUser().getRoleTip()); //流转后指派下级节点任务 diff --git a/casic-service-cws/casic-cws-flow/pom.xml b/casic-service-cws/casic-cws-flow/pom.xml index 63571a1..8b5f667 100644 --- a/casic-service-cws/casic-cws-flow/pom.xml +++ b/casic-service-cws/casic-cws-flow/pom.xml @@ -36,7 +36,11 @@ casic-admin-support ${admin.version} - + + com.casic + casic-push-support + ${extension.version} + com.casic diff --git a/casic-service-cws/casic-cws-flow/src/main/java/com/casic/missiles/modular/flowable/service/handler/BizCaseFlowHandler.java b/casic-service-cws/casic-cws-flow/src/main/java/com/casic/missiles/modular/flowable/service/handler/BizCaseFlowHandler.java index 984e34d..0a45adc 100644 --- a/casic-service-cws/casic-cws-flow/src/main/java/com/casic/missiles/modular/flowable/service/handler/BizCaseFlowHandler.java +++ b/casic-service-cws/casic-cws-flow/src/main/java/com/casic/missiles/modular/flowable/service/handler/BizCaseFlowHandler.java @@ -1,22 +1,32 @@ package com.casic.missiles.modular.flowable.service.handler; +import com.baomidou.mybatisplus.toolkit.IdWorker; +import com.casic.missiles.core.MessageBody; +import com.casic.missiles.core.common.constant.Const; +import com.casic.missiles.core.enums.PushMessageType; +import com.casic.missiles.core.service.ICommonPushService; import com.casic.missiles.core.util.SpringContextHolder; +import com.casic.missiles.core.util.ToolUtil; +import com.casic.missiles.modular.cwscase.dto.CasePushDTO; +import com.casic.missiles.modular.cwscase.model.CwsCase; import com.casic.missiles.modular.flowable.dto.ProcessDcmsDto; +import com.casic.missiles.modular.flowable.service.ICwsSuportService; import com.casic.missiles.modular.flowable.service.IDcmsFlowBizService; import com.casic.missiles.modular.flowable.service.IDcmsFlowNodeHandler; import com.casic.missiles.modular.flowable.service.IFlowCaseHandler; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; -import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.text.ParseException; +import java.util.ArrayList; import java.util.Arrays; import java.util.List; /** * 业务相关属性处理handler + * * @author lwh */ @Component @@ -28,8 +38,14 @@ private String[] stateInts; @Value("${casic.dcms.limitTimeNoUpdate.node}") private String[] nodeStrs; + @Value("${casic.push.title}") + private String title; private static List states = null; private static List nodes = null; + @Autowired(required = false) + private ICommonPushService pushService; + @Autowired + private ICwsSuportService cwsSuportService; static { //二级部门内部相关处理不进行当前节点要求更新 39 30 37 45 301 302 303 304 46 @@ -50,7 +66,7 @@ * @param dto */ @Override - @Transactional + @Transactional(rollbackFor = Exception.class) public void processBiz(ProcessDcmsDto dto) throws ParseException { if (states == null) { states = Arrays.asList(stateInts); @@ -67,6 +83,35 @@ //案件处置中的 状态不发生变更 延期及缓办同意发生节点时间变更 flowBizService.updateCwsNodeLimitTime(dto); + //推送消息体 + if (Const.ONE.equals(dto.getIsPush()) && pushService != null) { + if (ToolUtil.isNotEmpty(dto.getTaskUserId())) { + CwsCase cwsCase = cwsSuportService.selectCaseById(dto.getBizId()); + MessageBody messageBody = this.covertMessageBody(cwsCase); + //如果指定到人则进行人员案卷推送信息 + List users = new ArrayList<>(); + users.add(new Long(dto.getTaskUserId())); + pushService.pushMsgByUsers(users, messageBody); + } + } + } + /** + * 转换案卷类型为推送消息 + * + * @param cwsCase + * @return + */ + private MessageBody covertMessageBody(CwsCase cwsCase) { + CasePushDTO pushDTO = new CasePushDTO(); + pushDTO.setId(String.valueOf(cwsCase.getId())); + + MessageBody body = new MessageBody(); + body.setId(IdWorker.getId()); + body.setData(pushDTO); + body.setTitle(String.format(title, cwsCase.getCaseid())); + body.setContent(cwsCase.getDescription()); + body.setType(PushMessageType.NORMAL.getType()); + return body; } } diff --git a/casic-service-cws/casic-cws-flow/src/main/java/com/casic/missiles/modular/flowable/service/impl/CaseFlowServiceImpl.java b/casic-service-cws/casic-cws-flow/src/main/java/com/casic/missiles/modular/flowable/service/impl/CaseFlowServiceImpl.java index 01b1ee1..1504ede 100644 --- a/casic-service-cws/casic-cws-flow/src/main/java/com/casic/missiles/modular/flowable/service/impl/CaseFlowServiceImpl.java +++ b/casic-service-cws/casic-cws-flow/src/main/java/com/casic/missiles/modular/flowable/service/impl/CaseFlowServiceImpl.java @@ -62,6 +62,7 @@ */ @Value("${casic.case.defaultLimitTime:120}") private Integer defaultLimitTime; + @Autowired private ProcessEngine processEngine; @@ -136,9 +137,12 @@ } } if (count == 1) { - //执行自动流转 + //执行自动流转 流程处理handler中会进行推送处理 dto.setCurrState(autoNode.getState()); dto.setChangeState(autoNode.getNextState()); + if (ToolUtil.isEmpty(dto.getIsPush())) { + dto.setIsPush(autoNode.getIsPush()); + } this.completeCaseTask(dto); } } diff --git a/casic-service-cws/casic-cws-flow/src/main/java/com/casic/missiles/modular/flowable/util/BizFlowUtil.java b/casic-service-cws/casic-cws-flow/src/main/java/com/casic/missiles/modular/flowable/util/BizFlowUtil.java index 7eba9ed..0db81b7 100644 --- a/casic-service-cws/casic-cws-flow/src/main/java/com/casic/missiles/modular/flowable/util/BizFlowUtil.java +++ b/casic-service-cws/casic-cws-flow/src/main/java/com/casic/missiles/modular/flowable/util/BizFlowUtil.java @@ -39,11 +39,12 @@ map.put("groupId", dto.getDispatchDeptId()); map.put("isNeedRevisit", dto.getIsNeedRevisit()); map.put("taskUserId", dto.getTaskUserId()); - map.put("processJson", JSON.toJSONString(dto)); + //根据状态变更获取操作描述信息 IFlowNextnodeService flowNextnodeService = SpringContextHolder.getBean(IFlowNextnodeService.class); String operationType = ""; boolean isExist = false; + String nodePush = null; EntityWrapper query = new EntityWrapper<>(); query.eq(FlowNodeConstant.STATE, dto.getCurrState()); List flowNextnodes = flowNextnodeService.getFlowNextnodesByCurrState(query); @@ -58,6 +59,7 @@ operationType = flowNextnode.getOperation(); isExist = true; } + nodePush = flowNextnode.getIsShow(); } } @@ -66,7 +68,11 @@ ex.setMessage("该流转节点不存在,请确认"); throw ex; } - + //如果案卷处理节点信息需要推送则设置标志位 + if (ToolUtil.isEmpty(dto.getIsPush())) { + dto.setIsPush(nodePush); + } + map.put("processJson", JSON.toJSONString(dto)); FlowableUtil.completeTask(dto.getTaskId(), dto.getRemarks(), map, operationType, dto.getCurrUser().getDeptId(), dto.getCurrUser().getUserId(), dto.getCurrUser().getRoleTip()); //流转后指派下级节点任务 diff --git a/casic-service-support/src/main/java/com/casic/missiles/modular/cwscase/dto/CasePushDTO.java b/casic-service-support/src/main/java/com/casic/missiles/modular/cwscase/dto/CasePushDTO.java new file mode 100644 index 0000000..e2d64f9 --- /dev/null +++ b/casic-service-support/src/main/java/com/casic/missiles/modular/cwscase/dto/CasePushDTO.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.cwscase.dto; + +import lombok.Data; + +/** + * @ClassName CasePushDTO + * @Description 城管消息推送DTO + * @Author lwh + * @Date 2021/5/14 17:54 + * @Version 1.0 + */ +@Data +public class CasePushDTO { + private String id; +} diff --git a/casic-service-cws/casic-cws-flow/pom.xml b/casic-service-cws/casic-cws-flow/pom.xml index 63571a1..8b5f667 100644 --- a/casic-service-cws/casic-cws-flow/pom.xml +++ b/casic-service-cws/casic-cws-flow/pom.xml @@ -36,7 +36,11 @@ casic-admin-support ${admin.version} - + + com.casic + casic-push-support + ${extension.version} + com.casic diff --git a/casic-service-cws/casic-cws-flow/src/main/java/com/casic/missiles/modular/flowable/service/handler/BizCaseFlowHandler.java b/casic-service-cws/casic-cws-flow/src/main/java/com/casic/missiles/modular/flowable/service/handler/BizCaseFlowHandler.java index 984e34d..0a45adc 100644 --- a/casic-service-cws/casic-cws-flow/src/main/java/com/casic/missiles/modular/flowable/service/handler/BizCaseFlowHandler.java +++ b/casic-service-cws/casic-cws-flow/src/main/java/com/casic/missiles/modular/flowable/service/handler/BizCaseFlowHandler.java @@ -1,22 +1,32 @@ package com.casic.missiles.modular.flowable.service.handler; +import com.baomidou.mybatisplus.toolkit.IdWorker; +import com.casic.missiles.core.MessageBody; +import com.casic.missiles.core.common.constant.Const; +import com.casic.missiles.core.enums.PushMessageType; +import com.casic.missiles.core.service.ICommonPushService; import com.casic.missiles.core.util.SpringContextHolder; +import com.casic.missiles.core.util.ToolUtil; +import com.casic.missiles.modular.cwscase.dto.CasePushDTO; +import com.casic.missiles.modular.cwscase.model.CwsCase; import com.casic.missiles.modular.flowable.dto.ProcessDcmsDto; +import com.casic.missiles.modular.flowable.service.ICwsSuportService; import com.casic.missiles.modular.flowable.service.IDcmsFlowBizService; import com.casic.missiles.modular.flowable.service.IDcmsFlowNodeHandler; import com.casic.missiles.modular.flowable.service.IFlowCaseHandler; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; -import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.text.ParseException; +import java.util.ArrayList; import java.util.Arrays; import java.util.List; /** * 业务相关属性处理handler + * * @author lwh */ @Component @@ -28,8 +38,14 @@ private String[] stateInts; @Value("${casic.dcms.limitTimeNoUpdate.node}") private String[] nodeStrs; + @Value("${casic.push.title}") + private String title; private static List states = null; private static List nodes = null; + @Autowired(required = false) + private ICommonPushService pushService; + @Autowired + private ICwsSuportService cwsSuportService; static { //二级部门内部相关处理不进行当前节点要求更新 39 30 37 45 301 302 303 304 46 @@ -50,7 +66,7 @@ * @param dto */ @Override - @Transactional + @Transactional(rollbackFor = Exception.class) public void processBiz(ProcessDcmsDto dto) throws ParseException { if (states == null) { states = Arrays.asList(stateInts); @@ -67,6 +83,35 @@ //案件处置中的 状态不发生变更 延期及缓办同意发生节点时间变更 flowBizService.updateCwsNodeLimitTime(dto); + //推送消息体 + if (Const.ONE.equals(dto.getIsPush()) && pushService != null) { + if (ToolUtil.isNotEmpty(dto.getTaskUserId())) { + CwsCase cwsCase = cwsSuportService.selectCaseById(dto.getBizId()); + MessageBody messageBody = this.covertMessageBody(cwsCase); + //如果指定到人则进行人员案卷推送信息 + List users = new ArrayList<>(); + users.add(new Long(dto.getTaskUserId())); + pushService.pushMsgByUsers(users, messageBody); + } + } + } + /** + * 转换案卷类型为推送消息 + * + * @param cwsCase + * @return + */ + private MessageBody covertMessageBody(CwsCase cwsCase) { + CasePushDTO pushDTO = new CasePushDTO(); + pushDTO.setId(String.valueOf(cwsCase.getId())); + + MessageBody body = new MessageBody(); + body.setId(IdWorker.getId()); + body.setData(pushDTO); + body.setTitle(String.format(title, cwsCase.getCaseid())); + body.setContent(cwsCase.getDescription()); + body.setType(PushMessageType.NORMAL.getType()); + return body; } } diff --git a/casic-service-cws/casic-cws-flow/src/main/java/com/casic/missiles/modular/flowable/service/impl/CaseFlowServiceImpl.java b/casic-service-cws/casic-cws-flow/src/main/java/com/casic/missiles/modular/flowable/service/impl/CaseFlowServiceImpl.java index 01b1ee1..1504ede 100644 --- a/casic-service-cws/casic-cws-flow/src/main/java/com/casic/missiles/modular/flowable/service/impl/CaseFlowServiceImpl.java +++ b/casic-service-cws/casic-cws-flow/src/main/java/com/casic/missiles/modular/flowable/service/impl/CaseFlowServiceImpl.java @@ -62,6 +62,7 @@ */ @Value("${casic.case.defaultLimitTime:120}") private Integer defaultLimitTime; + @Autowired private ProcessEngine processEngine; @@ -136,9 +137,12 @@ } } if (count == 1) { - //执行自动流转 + //执行自动流转 流程处理handler中会进行推送处理 dto.setCurrState(autoNode.getState()); dto.setChangeState(autoNode.getNextState()); + if (ToolUtil.isEmpty(dto.getIsPush())) { + dto.setIsPush(autoNode.getIsPush()); + } this.completeCaseTask(dto); } } diff --git a/casic-service-cws/casic-cws-flow/src/main/java/com/casic/missiles/modular/flowable/util/BizFlowUtil.java b/casic-service-cws/casic-cws-flow/src/main/java/com/casic/missiles/modular/flowable/util/BizFlowUtil.java index 7eba9ed..0db81b7 100644 --- a/casic-service-cws/casic-cws-flow/src/main/java/com/casic/missiles/modular/flowable/util/BizFlowUtil.java +++ b/casic-service-cws/casic-cws-flow/src/main/java/com/casic/missiles/modular/flowable/util/BizFlowUtil.java @@ -39,11 +39,12 @@ map.put("groupId", dto.getDispatchDeptId()); map.put("isNeedRevisit", dto.getIsNeedRevisit()); map.put("taskUserId", dto.getTaskUserId()); - map.put("processJson", JSON.toJSONString(dto)); + //根据状态变更获取操作描述信息 IFlowNextnodeService flowNextnodeService = SpringContextHolder.getBean(IFlowNextnodeService.class); String operationType = ""; boolean isExist = false; + String nodePush = null; EntityWrapper query = new EntityWrapper<>(); query.eq(FlowNodeConstant.STATE, dto.getCurrState()); List flowNextnodes = flowNextnodeService.getFlowNextnodesByCurrState(query); @@ -58,6 +59,7 @@ operationType = flowNextnode.getOperation(); isExist = true; } + nodePush = flowNextnode.getIsShow(); } } @@ -66,7 +68,11 @@ ex.setMessage("该流转节点不存在,请确认"); throw ex; } - + //如果案卷处理节点信息需要推送则设置标志位 + if (ToolUtil.isEmpty(dto.getIsPush())) { + dto.setIsPush(nodePush); + } + map.put("processJson", JSON.toJSONString(dto)); FlowableUtil.completeTask(dto.getTaskId(), dto.getRemarks(), map, operationType, dto.getCurrUser().getDeptId(), dto.getCurrUser().getUserId(), dto.getCurrUser().getRoleTip()); //流转后指派下级节点任务 diff --git a/casic-service-support/src/main/java/com/casic/missiles/modular/cwscase/dto/CasePushDTO.java b/casic-service-support/src/main/java/com/casic/missiles/modular/cwscase/dto/CasePushDTO.java new file mode 100644 index 0000000..e2d64f9 --- /dev/null +++ b/casic-service-support/src/main/java/com/casic/missiles/modular/cwscase/dto/CasePushDTO.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.cwscase.dto; + +import lombok.Data; + +/** + * @ClassName CasePushDTO + * @Description 城管消息推送DTO + * @Author lwh + * @Date 2021/5/14 17:54 + * @Version 1.0 + */ +@Data +public class CasePushDTO { + private String id; +} diff --git a/casic-service-support/src/main/java/com/casic/missiles/modular/flowable/dto/ProcessDcmsDto.java b/casic-service-support/src/main/java/com/casic/missiles/modular/flowable/dto/ProcessDcmsDto.java index ecce0ef..aef18fb 100644 --- a/casic-service-support/src/main/java/com/casic/missiles/modular/flowable/dto/ProcessDcmsDto.java +++ b/casic-service-support/src/main/java/com/casic/missiles/modular/flowable/dto/ProcessDcmsDto.java @@ -105,7 +105,10 @@ private String areaCode; private String fieldintro; private Long gridId; - + /** + * 是否需要推送消息 + */ + private String isPush; /** * 【五包】-处罚类型 */ diff --git a/casic-service-cws/casic-cws-flow/pom.xml b/casic-service-cws/casic-cws-flow/pom.xml index 63571a1..8b5f667 100644 --- a/casic-service-cws/casic-cws-flow/pom.xml +++ b/casic-service-cws/casic-cws-flow/pom.xml @@ -36,7 +36,11 @@ casic-admin-support ${admin.version} - + + com.casic + casic-push-support + ${extension.version} + com.casic diff --git a/casic-service-cws/casic-cws-flow/src/main/java/com/casic/missiles/modular/flowable/service/handler/BizCaseFlowHandler.java b/casic-service-cws/casic-cws-flow/src/main/java/com/casic/missiles/modular/flowable/service/handler/BizCaseFlowHandler.java index 984e34d..0a45adc 100644 --- a/casic-service-cws/casic-cws-flow/src/main/java/com/casic/missiles/modular/flowable/service/handler/BizCaseFlowHandler.java +++ b/casic-service-cws/casic-cws-flow/src/main/java/com/casic/missiles/modular/flowable/service/handler/BizCaseFlowHandler.java @@ -1,22 +1,32 @@ package com.casic.missiles.modular.flowable.service.handler; +import com.baomidou.mybatisplus.toolkit.IdWorker; +import com.casic.missiles.core.MessageBody; +import com.casic.missiles.core.common.constant.Const; +import com.casic.missiles.core.enums.PushMessageType; +import com.casic.missiles.core.service.ICommonPushService; import com.casic.missiles.core.util.SpringContextHolder; +import com.casic.missiles.core.util.ToolUtil; +import com.casic.missiles.modular.cwscase.dto.CasePushDTO; +import com.casic.missiles.modular.cwscase.model.CwsCase; import com.casic.missiles.modular.flowable.dto.ProcessDcmsDto; +import com.casic.missiles.modular.flowable.service.ICwsSuportService; import com.casic.missiles.modular.flowable.service.IDcmsFlowBizService; import com.casic.missiles.modular.flowable.service.IDcmsFlowNodeHandler; import com.casic.missiles.modular.flowable.service.IFlowCaseHandler; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; -import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.text.ParseException; +import java.util.ArrayList; import java.util.Arrays; import java.util.List; /** * 业务相关属性处理handler + * * @author lwh */ @Component @@ -28,8 +38,14 @@ private String[] stateInts; @Value("${casic.dcms.limitTimeNoUpdate.node}") private String[] nodeStrs; + @Value("${casic.push.title}") + private String title; private static List states = null; private static List nodes = null; + @Autowired(required = false) + private ICommonPushService pushService; + @Autowired + private ICwsSuportService cwsSuportService; static { //二级部门内部相关处理不进行当前节点要求更新 39 30 37 45 301 302 303 304 46 @@ -50,7 +66,7 @@ * @param dto */ @Override - @Transactional + @Transactional(rollbackFor = Exception.class) public void processBiz(ProcessDcmsDto dto) throws ParseException { if (states == null) { states = Arrays.asList(stateInts); @@ -67,6 +83,35 @@ //案件处置中的 状态不发生变更 延期及缓办同意发生节点时间变更 flowBizService.updateCwsNodeLimitTime(dto); + //推送消息体 + if (Const.ONE.equals(dto.getIsPush()) && pushService != null) { + if (ToolUtil.isNotEmpty(dto.getTaskUserId())) { + CwsCase cwsCase = cwsSuportService.selectCaseById(dto.getBizId()); + MessageBody messageBody = this.covertMessageBody(cwsCase); + //如果指定到人则进行人员案卷推送信息 + List users = new ArrayList<>(); + users.add(new Long(dto.getTaskUserId())); + pushService.pushMsgByUsers(users, messageBody); + } + } + } + /** + * 转换案卷类型为推送消息 + * + * @param cwsCase + * @return + */ + private MessageBody covertMessageBody(CwsCase cwsCase) { + CasePushDTO pushDTO = new CasePushDTO(); + pushDTO.setId(String.valueOf(cwsCase.getId())); + + MessageBody body = new MessageBody(); + body.setId(IdWorker.getId()); + body.setData(pushDTO); + body.setTitle(String.format(title, cwsCase.getCaseid())); + body.setContent(cwsCase.getDescription()); + body.setType(PushMessageType.NORMAL.getType()); + return body; } } diff --git a/casic-service-cws/casic-cws-flow/src/main/java/com/casic/missiles/modular/flowable/service/impl/CaseFlowServiceImpl.java b/casic-service-cws/casic-cws-flow/src/main/java/com/casic/missiles/modular/flowable/service/impl/CaseFlowServiceImpl.java index 01b1ee1..1504ede 100644 --- a/casic-service-cws/casic-cws-flow/src/main/java/com/casic/missiles/modular/flowable/service/impl/CaseFlowServiceImpl.java +++ b/casic-service-cws/casic-cws-flow/src/main/java/com/casic/missiles/modular/flowable/service/impl/CaseFlowServiceImpl.java @@ -62,6 +62,7 @@ */ @Value("${casic.case.defaultLimitTime:120}") private Integer defaultLimitTime; + @Autowired private ProcessEngine processEngine; @@ -136,9 +137,12 @@ } } if (count == 1) { - //执行自动流转 + //执行自动流转 流程处理handler中会进行推送处理 dto.setCurrState(autoNode.getState()); dto.setChangeState(autoNode.getNextState()); + if (ToolUtil.isEmpty(dto.getIsPush())) { + dto.setIsPush(autoNode.getIsPush()); + } this.completeCaseTask(dto); } } diff --git a/casic-service-cws/casic-cws-flow/src/main/java/com/casic/missiles/modular/flowable/util/BizFlowUtil.java b/casic-service-cws/casic-cws-flow/src/main/java/com/casic/missiles/modular/flowable/util/BizFlowUtil.java index 7eba9ed..0db81b7 100644 --- a/casic-service-cws/casic-cws-flow/src/main/java/com/casic/missiles/modular/flowable/util/BizFlowUtil.java +++ b/casic-service-cws/casic-cws-flow/src/main/java/com/casic/missiles/modular/flowable/util/BizFlowUtil.java @@ -39,11 +39,12 @@ map.put("groupId", dto.getDispatchDeptId()); map.put("isNeedRevisit", dto.getIsNeedRevisit()); map.put("taskUserId", dto.getTaskUserId()); - map.put("processJson", JSON.toJSONString(dto)); + //根据状态变更获取操作描述信息 IFlowNextnodeService flowNextnodeService = SpringContextHolder.getBean(IFlowNextnodeService.class); String operationType = ""; boolean isExist = false; + String nodePush = null; EntityWrapper query = new EntityWrapper<>(); query.eq(FlowNodeConstant.STATE, dto.getCurrState()); List flowNextnodes = flowNextnodeService.getFlowNextnodesByCurrState(query); @@ -58,6 +59,7 @@ operationType = flowNextnode.getOperation(); isExist = true; } + nodePush = flowNextnode.getIsShow(); } } @@ -66,7 +68,11 @@ ex.setMessage("该流转节点不存在,请确认"); throw ex; } - + //如果案卷处理节点信息需要推送则设置标志位 + if (ToolUtil.isEmpty(dto.getIsPush())) { + dto.setIsPush(nodePush); + } + map.put("processJson", JSON.toJSONString(dto)); FlowableUtil.completeTask(dto.getTaskId(), dto.getRemarks(), map, operationType, dto.getCurrUser().getDeptId(), dto.getCurrUser().getUserId(), dto.getCurrUser().getRoleTip()); //流转后指派下级节点任务 diff --git a/casic-service-support/src/main/java/com/casic/missiles/modular/cwscase/dto/CasePushDTO.java b/casic-service-support/src/main/java/com/casic/missiles/modular/cwscase/dto/CasePushDTO.java new file mode 100644 index 0000000..e2d64f9 --- /dev/null +++ b/casic-service-support/src/main/java/com/casic/missiles/modular/cwscase/dto/CasePushDTO.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.cwscase.dto; + +import lombok.Data; + +/** + * @ClassName CasePushDTO + * @Description 城管消息推送DTO + * @Author lwh + * @Date 2021/5/14 17:54 + * @Version 1.0 + */ +@Data +public class CasePushDTO { + private String id; +} diff --git a/casic-service-support/src/main/java/com/casic/missiles/modular/flowable/dto/ProcessDcmsDto.java b/casic-service-support/src/main/java/com/casic/missiles/modular/flowable/dto/ProcessDcmsDto.java index ecce0ef..aef18fb 100644 --- a/casic-service-support/src/main/java/com/casic/missiles/modular/flowable/dto/ProcessDcmsDto.java +++ b/casic-service-support/src/main/java/com/casic/missiles/modular/flowable/dto/ProcessDcmsDto.java @@ -105,7 +105,10 @@ private String areaCode; private String fieldintro; private Long gridId; - + /** + * 是否需要推送消息 + */ + private String isPush; /** * 【五包】-处罚类型 */ diff --git a/casic-web/src/main/resources/config/application.yml b/casic-web/src/main/resources/config/application.yml index 1aee4e3..c6b5de4 100644 --- a/casic-web/src/main/resources/config/application.yml +++ b/casic-web/src/main/resources/config/application.yml @@ -30,4 +30,10 @@ export-path: D:\java\boot\guns-web-1.0.0-SNAPSHOT\export\ config-path: E:\Develop\IdeaProject\smartcity\casic-smartcity-dcms\casic-web\src\main\resources\config\ office: - maxRowsExcel: 65536 \ No newline at end of file + maxRowsExcel: 65536 + push: + app-id: DR9oeLL9va6aG3DYXy2w39 #城管APPid + app-key: f0CGagZEq5AKVedGMUkGB7 #app key + master-secret: trtDQd7cJuAAsMnOkwY2cA + host: http://sdk.open.api.igexin.com/apiex.htm #推送服务地址 + title: 您收到一个新案卷"%s",请尽快处理 \ No newline at end of file