风险隐患管理发送消息,工作协同发送消息

This commit is contained in:
2025-11-07 14:04:02 +08:00
parent d98dcfbe78
commit fb73ce1ff1
18 changed files with 3770 additions and 42 deletions

View File

@@ -22,7 +22,7 @@ import org.springframework.web.bind.annotation.RestController;
@Tag(name = "低代码框架 - 门户待办有关接口")
@RestController
@AllArgsConstructor
@RequestMapping(JeeLowCodeBaseConstant.REQUEST_URL_START + "/portal-to-do/push-done")
@RequestMapping(JeeLowCodeBaseConstant.REQUEST_URL_START + "/portal-to-do/push-todo")
public class PortalTodoController extends BaseController {
private final IPortalTodoService portalTodoService;
@@ -35,8 +35,8 @@ public class PortalTodoController extends BaseController {
*/
@Operation(summary = "风险隐患推送待办完成")
@RequestMapping(value = "/risk-hazard/{workflowId}", method = RequestMethod.POST)
public CommonResult<Boolean> pushDoneRiskHazardWorkflow(@PathVariable("workflowId") Long workflowId) {
return CommonResult.success(portalTodoService.pushDoneRiskHazardWorkflow(workflowId));
public CommonResult<Boolean> pushTodoRiskHazardWorkflow(@PathVariable("workflowId") Long workflowId) {
return CommonResult.success(portalTodoService.pushDoneRiskHazardWorkflow(workflowId,"CHARGE_TODO"));
}
/**

View File

@@ -0,0 +1,51 @@
package com.jeelowcode.module.biz.enhance;
import com.jeelowcode.core.framework.config.aspect.enhance.model.EnhanceContext;
import com.jeelowcode.core.framework.config.aspect.enhance.plugin.AfterAdvicePlugin;
import com.jeelowcode.core.framework.controller.BaseController;
import com.jeelowcode.framework.utils.tool.NumberUtil;
import com.jeelowcode.module.biz.service.IPortalTodoService;
import com.jeelowcode.module.biz.service.IWorkItemService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import javax.annotation.PostConstruct;
import java.util.Map;
/**
* 删除前校验
*/
@Slf4j
@Component("afterItemResultCreateEnhance")
public class AfterItemResultCreateEnhance extends BaseController implements AfterAdvicePlugin {
@Autowired
private IWorkItemService workItemService;
private static AfterItemResultCreateEnhance ADTE;
@PostConstruct
public void init(){
ADTE = this;
}
@Override
public void execute(EnhanceContext enhanceContext) {
Map<String, Object> params = enhanceContext.getParam().getParams();
if(!params.containsKey("id")){
return;
}
if(!params.containsKey("workItemId")){
return;
}
Long id = NumberUtil.toLong(params.get("id").toString());
Long workItemId = NumberUtil.toLong(params.get("workItemId").toString());
// 发送代办消息
ADTE.workItemService.pushTodoWorkItemWorkflow(workItemId,id,"WORK_ITEM_TODO");
}
}

View File

@@ -24,7 +24,7 @@ import java.util.Objects;
public class AfterItemResultEditEnhance extends BaseController implements AfterAdvicePlugin {
@Autowired
private IWorkItemService iWorkItemService;
private IWorkItemService workItemService;
@Autowired
private IFormService dbFormService;
@@ -51,12 +51,12 @@ public class AfterItemResultEditEnhance extends BaseController implements AfterA
Long planFormId = ADTE.dbFormService.getDbFormIdByTableName(planTableName);
// 获取当前任务
Map<String, Object> currentTask=ADTE.iWorkItemService.getItemResultById(id);
Map<String, Object> currentTask=ADTE.workItemService.getItemResultById(id);
if(!Objects.isNull(currentTask)){
// 根据当前任务 workItemId 获取当前计划下所有任务
Long workItemId = NumberUtil.toLong(currentTask.get("workitemid").toString());
List<Map<String, Object>> allTasks=ADTE.iWorkItemService.getItemResultByItemId(workItemId);
List<Map<String, Object>> allTasks=ADTE.workItemService.getItemResultByItemId(workItemId);
// 根据所以任务状态 设置 计划状态
if(!allTasks.isEmpty()){
Integer allTaskNum=allTasks.size();
@@ -79,10 +79,18 @@ public class AfterItemResultEditEnhance extends BaseController implements AfterA
}
// 更新 计划状态
Map<String, Object> currentItem =ADTE.iWorkItemService.getWorkItemById(workItemId);
Map<String, Object> currentItem =ADTE.workItemService.getWorkItemById(workItemId);
currentItem.put("itemSattus", itemStatus);
super.editJsonData(planFormId, JSONUtil.parseObj(currentItem));
}
// 发送已办消息
if(currentTask.get("resultstatus").equals("1"))
{
// 发送已办消息
ADTE.workItemService.pushTodoWorkItemWorkflow(workItemId,id,"WORK_ITEM_DONE");
}
}
}

View File

@@ -0,0 +1,56 @@
package com.jeelowcode.module.biz.enhance;
import com.jeelowcode.core.framework.config.aspect.enhance.model.EnhanceContext;
import com.jeelowcode.core.framework.config.aspect.enhance.plugin.BeforeAdvicePlugin;
import com.jeelowcode.core.framework.config.btncommand.ButtonInvoker;
import com.jeelowcode.core.framework.config.btncommand.button.DetailsButtonCommand;
import com.jeelowcode.core.framework.config.btncommand.param.ButtonParamDetail;
import com.jeelowcode.core.framework.config.btncommand.receiver.ButtonReceiverDetail;
import com.jeelowcode.core.framework.config.btncommand.receiver.IButtonCommandReceiver;
import com.jeelowcode.core.framework.utils.Func;
import com.jeelowcode.framework.exception.JeeLowCodeException;
import com.jeelowcode.framework.plus.core.toolkit.CollectionUtils;
import com.jeelowcode.framework.plus.core.toolkit.StringUtils;
import com.jeelowcode.framework.utils.model.ResultDataModel;
import com.jeelowcode.framework.utils.tool.NumberUtil;
import com.jeelowcode.module.biz.service.IPortalTodoService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import javax.annotation.PostConstruct;
import java.util.List;
import java.util.Map;
import java.util.Objects;
/**
* 删除前校验
*/
@Slf4j
@Component("afterRiskHazardDeleteEnhance")
public class AfterRiskHazardDeleteEnhance implements BeforeAdvicePlugin {
@Autowired
private IPortalTodoService portalTodoService;
private static AfterRiskHazardDeleteEnhance ADTE;
@PostConstruct
public void init(){
ADTE = this;
}
@Override
public void execute(EnhanceContext enhanceContext) {
Map<String, Object> params = enhanceContext.getParam().getParams();
// 单条删除和批量删除的数据的id都是在dateIdList中
Object dateIdList = params.get("dataIdList");
if (Func.isEmpty(dateIdList)) {
return;
}
List<Long> riskIdList = (List<Long>) dateIdList;
for (Long riskId : riskIdList) {
ADTE.portalTodoService.pushCancelRiskHazardWorkflow(riskId);
}
}
}

View File

@@ -0,0 +1,62 @@
package com.jeelowcode.module.biz.enhance;
import cn.hutool.json.JSONUtil;
import com.jeelowcode.core.framework.config.aspect.enhance.model.EnhanceContext;
import com.jeelowcode.core.framework.config.aspect.enhance.plugin.AfterAdvicePlugin;
import com.jeelowcode.core.framework.controller.BaseController;
import com.jeelowcode.core.framework.service.IFormService;
import com.jeelowcode.framework.utils.tool.NumberUtil;
import com.jeelowcode.module.biz.service.IDrillPlanService;
import com.jeelowcode.module.biz.service.IPortalTodoService;
import com.jeelowcode.tool.framework.common.pojo.CommonResult;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import javax.annotation.PostConstruct;
import java.util.List;
import java.util.Map;
import java.util.Objects;
/**
* 删除前校验
*/
@Slf4j
@Component("afterRiskHazardEditEnhance")
public class AfterRiskHazardEditEnhance extends BaseController implements AfterAdvicePlugin {
@Autowired
private IPortalTodoService portalTodoService;
private static AfterRiskHazardEditEnhance ADTE;
@PostConstruct
public void init(){
ADTE = this;
}
@Override
public void execute(EnhanceContext enhanceContext) {
Map<String, Object> params = enhanceContext.getParam().getParams();
if(!params.containsKey("id")){
return;
}
if(!params.containsKey("RiskNotifyEnum")){
return;
}
Long id = NumberUtil.toLong(params.get("id").toString());
String todoType=params.get("RiskNotifyEnum").toString();
if(todoType.equals("CONFIRM_DONE"))
{
ADTE.portalTodoService.pushDoneRiskHazardWorkflow(id, todoType);
}else if(todoType.equals("CONFIRM_TODO"))
{
ADTE.portalTodoService.pushDoneRiskHazardWorkflow(id, "CHARGE_DONE");
ADTE.portalTodoService.pushDoneRiskHazardWorkflow(id, todoType);
}
}
}

View File

@@ -0,0 +1,22 @@
package com.jeelowcode.module.biz.enums;
import com.jeelowcode.framework.plus.template.*;
import com.jeelowcode.framework.utils.utils.FuncBase;
import java.util.Arrays;
import java.util.Optional;
/**
* 数据库类型
*/
public enum RiskNotifyEnum {
CHARGE_TODO,
CHARGE_DONE,
CONFIRM_TODO,
CONFIRM_DONE;
}

View File

@@ -13,7 +13,7 @@ public interface IPortalTodoService {
* @param id 流程id
* @return boolean 推送结果
*/
boolean pushDoneRiskHazardWorkflow(Long id);
boolean pushDoneRiskHazardWorkflow(Long id,String todoType);
/**
* 风险隐患推送待办取消

View File

@@ -13,5 +13,22 @@ public interface IWorkItemService {
Map<String, Object> getItemResultById(long id);
List<Map<String, Object>> getItemResultByItemId(Long ExamPlanId);
List<Map<String, Object>> getItemResultByItemId(Long workItemId);
/**
* 工作事项推送待办完成
*
* @param id 流程id
* @return boolean 推送结果
*/
boolean pushTodoWorkItemWorkflow(Long workItemId,Long itemResultId, String todoType);
/**
* 工作事项推送待办取消
*
* @param id 待办id
* @return boolean 推送结果
*/
boolean pushCancelWorkItemWorkflow(Long id);
}

View File

@@ -13,6 +13,8 @@ import com.jeelowcode.service.bpm.config.framework.portal.core.dto.DeleteRequest
import com.jeelowcode.service.bpm.config.framework.portal.core.dto.ReceiveRequestInfoDTO;
import com.jeelowcode.service.system.api.IApiAdminUserApi;
import com.jeelowcode.service.system.dto.AdminUserRespDTO;
import com.jeelowcode.service.system.entity.DictDataDO;
import com.jeelowcode.service.system.service.IDictDataService;
import com.jeelowcode.tool.framework.common.util.object.BeanUtils;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
@@ -47,8 +49,11 @@ public class PortalTodoServiceImpl implements IPortalTodoService {
@Resource
private IApiAdminUserApi apiAdminUserApi;
@Resource
private IDictDataService dictDataService;
@Override
public boolean pushDoneRiskHazardWorkflow(Long id) {
public boolean pushDoneRiskHazardWorkflow(Long id,String todoType) {
// 0.1.查找风险隐患数据,如果查不到则放弃推送
Map<String, Object> risk = riskService.getRiskById(id);
if (MapUtil.isEmpty(risk)) return false;
@@ -57,31 +62,99 @@ public class PortalTodoServiceImpl implements IPortalTodoService {
if (ObjectUtil.isNull(portalRequest)) return false;
// 1.构建请求参数,准备推送待办信息
String creator="";
String receiver="";
String isRemark="";
String viewType="";
String checkArea="";
// 1.1.拼接标题
DictDataDO dictData = dictDataService.getDictData("check_area_dic", risk.getOrDefault("check_area", "").toString());
if (dictData != null) {
checkArea=dictData.getLabel();
}
String requestName = DateUtil.formatDate((Date) risk.getOrDefault("check_date", new Date())) + SPACE +
risk.getOrDefault("parkName", "") + SPACE +
risk.getOrDefault("check_area", "") + SPACE +
risk.getOrDefault("parkname", "") + SPACE +
checkArea + SPACE +
risk.getOrDefault("check_content", "") + SPACE +
risk.getOrDefault("check_problem", "") + SPACE +
risk.getOrDefault("check_people", "");
// 1.2.暂时先使用创建人当作发送 TODO 需要升级存储检查人的username
Long createUserId = Objects.isNull(risk.get("create_user")) ? null : (Long) risk.get("create_user");
AdminUserRespDTO createUser = Optional.ofNullable(createUserId)
.map(userId -> apiAdminUserApi.getUser(userId))
.orElse(new AdminUserRespDTO());
Date createDateTime = Objects.isNull(risk.get("create_time")) ? new Date() : (Date) risk.get("create_time");
// 1.2.根据代办类型取消息发送 TODO 需要升级存储检查人的username
if(todoType.equals("CHARGE_TODO")||todoType.equals("CHARGE_DONE")){
if(todoType.equals("CHARGE_TODO"))
{
isRemark=WORK_STATUS_TODO;
viewType=VIEW_TYPE_UNREAD;
}else
{
isRemark=WORK_STATUS_DONE;
viewType=VIEW_TYPE_READ;
}
// 1.3.从风险隐患数据中获取整改确认人 TODO 需要升级存储整改确认人的username
String corrective_confirm_people = Objects.isNull(risk.get("corrective_confirm_people")) ? null : (String) risk.get("corrective_confirm_people");
List<AdminUserRespDTO> confirmUserList = Optional.ofNullable(corrective_confirm_people)
.map(userName -> apiAdminUserApi.getUserListByNickname(userName))
.orElse(Collections.emptyList());
// 如果没有整改确认人则放弃通知
if (confirmUserList.isEmpty()) return false;
String receiver = Optional.ofNullable(getFirst(confirmUserList))
.map(AdminUserRespDTO::getUsername).orElse(null);
if (StringUtils.isEmpty(receiver)) return false;
// 消息发送者为 检查人
Long createUserId = Objects.isNull(risk.get("check_people_id")) ? null : Long.valueOf(risk.get("check_people_id").toString());
AdminUserRespDTO createUser = Optional.ofNullable(createUserId)
.map(userId -> apiAdminUserApi.getUser(userId))
.orElse(new AdminUserRespDTO());
if(StringUtils.isEmpty(createUser.getUsername()))
{
return false;
}else
{
creator=createUser.getUsername();
}
// 消息接受者为 整改责任人
Long receiveId = Objects.isNull(risk.get("corrective_charge_people_id")) ? null : Long.valueOf( risk.get("corrective_charge_people_id").toString());
AdminUserRespDTO receiveUser = Optional.ofNullable(receiveId)
.map(userId -> apiAdminUserApi.getUser(userId))
.orElse(new AdminUserRespDTO());
if(StringUtils.isEmpty(receiveUser.getUsername()))
{
return false;
}else
{
receiver=receiveUser.getUsername();
}
}else if(todoType.equals("CONFIRM_TODO")||todoType.equals("CONFIRM_DONE"))
{
if(todoType.equals("CONFIRM_TODO"))
{
isRemark=WORK_STATUS_TODO;
viewType=VIEW_TYPE_UNREAD;
}else
{
isRemark=WORK_STATUS_DONE;
viewType=VIEW_TYPE_READ;
}
// 消息发送者为 整改责任人
Long createUserId = Objects.isNull(risk.get("corrective_charge_people_id")) ? null : Long.valueOf( risk.get("corrective_charge_people_id").toString());
AdminUserRespDTO createUser = Optional.ofNullable(createUserId)
.map(userId -> apiAdminUserApi.getUser(userId))
.orElse(new AdminUserRespDTO());
if(StringUtils.isEmpty(createUser.getUsername()))
{
return false;
}else
{
creator=createUser.getUsername();
}
// 消息接受者为 整改确认人
Long receiveId = Objects.isNull(risk.get("corrective_confirm_people_id")) ? null : Long.valueOf(risk.get("corrective_confirm_people_id").toString());
AdminUserRespDTO receiveUser = Optional.ofNullable(receiveId)
.map(userId -> apiAdminUserApi.getUser(userId))
.orElse(new AdminUserRespDTO());
if(StringUtils.isEmpty(receiveUser.getUsername()))
{
return false;
}else
{
receiver=receiveUser.getUsername();
}
}
// 1.2.组织请求数据
ReceiveRequestInfoDTO todoRequestDTO = new ReceiveRequestInfoDTO()
.setFlowId(Base64.encode(String.valueOf(id)))
@@ -89,10 +162,10 @@ public class PortalTodoServiceImpl implements IPortalTodoService {
.setWorkflowName(WORK_FLOW_NAME)
.setNodeName(WORK_NODE_NAME)
.setPcUrl(RISK_PC_URL)
.setIsRemark(WORK_STATUS_DONE)
.setViewType(VIEW_TYPE_READ)
.setCreator(createUser.getUsername())
.setCreateDateTime(createDateTime)
.setIsRemark(isRemark)
.setViewType(viewType)
.setCreator(creator)
.setCreateDateTime(new Date())
.setReceiver(receiver)
.setReceiveDateTime(new Date())
.setReceiveTs(String.valueOf(System.currentTimeMillis()));
@@ -102,7 +175,10 @@ public class PortalTodoServiceImpl implements IPortalTodoService {
// 2.推送待办信息使用try-catch避免影响上层调用方法的事务回滚
try {
portalRequest.receiveRequestInfo(todoRequestDTO);
portalRequest.receiveRequestInfo(completeRequestDTO);
if(todoType.equals("CONFIRM_DONE"))
{
portalRequest.receiveRequestInfo(completeRequestDTO);
}
} catch (Exception e) {
log.error("推送待办信息失败", e);
return false;

View File

@@ -52,11 +52,6 @@ public class RiskServiceImpl implements IRiskService {
@Override
public void sendNotify2Corrective(Long id) {
// 空实现目前业务需求并不需要发送给整改人
if (true) {
return;
}
// 0.1.查找风险隐患数据,如果查不到任务可以结束了
Map<String, Object> risk = this.getRiskById(id);
if (MapUtil.isEmpty(risk)) return;
@@ -68,7 +63,7 @@ public class RiskServiceImpl implements IRiskService {
// 1.构建请求参数,准备推送待办信息
// 1.1.拼接标题
String requestName = DateUtil.formatDate((Date) risk.getOrDefault("check_date", new Date())) + SPACE +
risk.getOrDefault("parkName", "") + SPACE +
risk.getOrDefault("parkname", "") + SPACE +
risk.getOrDefault("check_area", "") + SPACE +
risk.getOrDefault("check_content", "") + SPACE +
risk.getOrDefault("check_problem", "") + SPACE +

View File

@@ -1,18 +1,29 @@
package com.jeelowcode.module.biz.service.impl;
import cn.hutool.core.codec.Base64;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.map.MapUtil;
import cn.hutool.core.util.ObjectUtil;
import com.jeelowcode.core.framework.service.IFrameSqlService;
import com.jeelowcode.framework.plus.SqlHelper;
import com.jeelowcode.framework.plus.build.buildmodel.wrapper.SqlInfoQueryWrapper;
import com.jeelowcode.framework.plus.core.toolkit.StringUtils;
import com.jeelowcode.framework.utils.tool.spring.SpringUtils;
import com.jeelowcode.module.biz.service.IExamPlanService;
import com.jeelowcode.module.biz.service.IWorkItemService;
import com.jeelowcode.service.bpm.config.framework.portal.core.PortalRequest;
import com.jeelowcode.service.bpm.config.framework.portal.core.dto.DeleteRequestInfoDTO;
import com.jeelowcode.service.bpm.config.framework.portal.core.dto.ReceiveRequestInfoDTO;
import com.jeelowcode.service.system.api.IApiAdminUserApi;
import com.jeelowcode.service.system.dto.AdminUserRespDTO;
import com.jeelowcode.tool.framework.common.util.object.BeanUtils;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import javax.annotation.Resource;
import java.util.*;
/**
@@ -23,9 +34,22 @@ import java.util.Map;
public class WorkItemServiceImpl implements IWorkItemService {
private static final String SPACE = " ";
private static final String WORK_NODE_NAME = "下发工作事项";
private static final String WORK_FLOW_NAME = "工作事项信息";
// TODO 待办跳转链接,这个以后需要优化,通过配置去取这个链接,不能写死在这里
private static final String RISK_PC_URL = "/fx/table/view/1983351353033953281";
private static final String WORK_STATUS_TODO = "0";
private static final String WORK_STATUS_DONE = "2";
private static final String WORK_STATUS_COMPLETE = "4";
private static final String VIEW_TYPE_UNREAD = "0";
private static final String VIEW_TYPE_READ = "1";
@Autowired
private IFrameSqlService sqlService;
@Resource
private IApiAdminUserApi apiAdminUserApi;
@Override
public Map<String, Object> getWorkItemById(long id) {
@@ -60,4 +84,116 @@ public class WorkItemServiceImpl implements IWorkItemService {
List<Map<String, Object>> dataMapList = sqlService.getDataListByPlus(wrapper);
return dataMapList;
}
@Override
public boolean pushTodoWorkItemWorkflow(Long workItemId,Long itemResultId, String todoType) {
// 0.1.查找工作事项数据,如果查不到则放弃推送
Map<String, Object> workItem = getWorkItemById(workItemId);
if (MapUtil.isEmpty(workItem)) return false;
Map<String, Object> itemResult = getItemResultById(itemResultId);
if (MapUtil.isEmpty(itemResult)) return false;
// 0.2.从容器中获取 PortalRequest 对象,如果没有配置则放弃通知
PortalRequest portalRequest = SpringUtils.getBean(PortalRequest.class);
if (ObjectUtil.isNull(portalRequest)) return false;
// 1.构建请求参数,准备推送待办信息
String creator="";
String receiver="";
String isRemark="";
String viewType="";
// 1.1.拼接标题
String requestName = DateUtil.formatDate((Date) workItem.getOrDefault("initiatingdate", new Date())) + SPACE +
workItem.getOrDefault("initiatingdeptname", "") + SPACE +
"发起工作事项:"+
workItem.getOrDefault("itemcontext", "");
// 1.2.根据代办类型取消息发送者 TODO 需要升级存储检查人的username
if(todoType.equals("WORK_ITEM_TODO"))
{
isRemark=WORK_STATUS_TODO;
viewType=VIEW_TYPE_UNREAD;
}else
{
isRemark=WORK_STATUS_DONE;
viewType=VIEW_TYPE_READ;
}
// 消息发送者为 工作事项 发起人
Long createUserId = Objects.isNull(workItem.get("initiatorid")) ? null : Long.valueOf(workItem.get("initiatorid").toString());
AdminUserRespDTO createUser = Optional.ofNullable(createUserId)
.map(userId -> apiAdminUserApi.getUser(userId))
.orElse(new AdminUserRespDTO());
if(StringUtils.isEmpty(createUser.getUsername()))
{
return false;
}else
{
creator=createUser.getUsername();
}
// 消息接受者为 事项结果 责任人
Long receiveId = Objects.isNull(itemResult.get("chargeid")) ? null : Long.valueOf( itemResult.get("chargeid").toString());
AdminUserRespDTO receiveUser = Optional.ofNullable(receiveId)
.map(userId -> apiAdminUserApi.getUser(userId))
.orElse(new AdminUserRespDTO());
if(StringUtils.isEmpty(receiveUser.getUsername()))
{
return false;
}else
{
receiver=receiveUser.getUsername();
}
// 1.2.组织请求数据
ReceiveRequestInfoDTO todoRequestDTO = new ReceiveRequestInfoDTO()
.setFlowId(Base64.encode(String.valueOf(itemResultId)))
.setRequestName(requestName)
.setWorkflowName(WORK_FLOW_NAME)
.setNodeName(WORK_NODE_NAME)
.setPcUrl(RISK_PC_URL)
.setIsRemark(isRemark)
.setViewType(viewType)
.setCreator(creator)
.setCreateDateTime(new Date())
.setReceiver(receiver)
.setReceiveDateTime(new Date())
.setReceiveTs(String.valueOf(System.currentTimeMillis()));
ReceiveRequestInfoDTO completeRequestDTO = BeanUtils.toBean(todoRequestDTO, ReceiveRequestInfoDTO.class);
completeRequestDTO.setIsRemark(WORK_STATUS_COMPLETE);
// 2.推送待办信息使用try-catch避免影响上层调用方法的事务回滚
try {
portalRequest.receiveRequestInfo(todoRequestDTO);
if(todoType.equals("WORK_ITEM_DONE"))
{
portalRequest.receiveRequestInfo(completeRequestDTO);
}
} catch (Exception e) {
log.error("推送待办信息失败", e);
return false;
}
return true;
}
@Override
public boolean pushCancelWorkItemWorkflow(Long id) {
// 0.1.查找风险隐患数据,如果查不到则放弃推送
Map<String, Object> itemResult = getItemResultById(id);
if (MapUtil.isEmpty(itemResult)) return false;
// 0.2.从容器中获取 PortalRequest 对象,如果没有配置则放弃通知
PortalRequest portalRequest = SpringUtils.getBean(PortalRequest.class);
if (ObjectUtil.isNull(portalRequest)) return false;
// 1.构建请求参数,准备推送待办信息
DeleteRequestInfoDTO deleteRequestInfoDTO = new DeleteRequestInfoDTO()
.setFlowId(Base64.encode(String.valueOf(id)));
// 2.推送待办信息使用try-catch避免影响上层调用方法的事务回滚
try {
portalRequest.deleteRequestInfo(deleteRequestInfoDTO);
} catch (Exception e) {
log.error("删除待办信息失败", e);
return false;
}
return true;
}
}