add 对接oa

This commit is contained in:
lijiarao
2024-07-12 15:49:18 +08:00
parent a4d1925ee2
commit 7b2c0dcdcf
17 changed files with 733 additions and 415 deletions
@@ -1,7 +1,7 @@
package com.jero.common.api;
import com.jero.common.api.dto.message.HiworkTodoAdd;
import com.jero.common.api.dto.message.UnifiedTodoVO;
import java.util.List;
@@ -16,10 +16,8 @@ public interface PushWorkflowIntegrationAPI {
* @Author: liao
* @Date: 2023/10/13 15:12
* @Description: 统一待办集成
**/
void sendTodoTask(List<HiworkTodoAdd> hiworkTodoAddList);
*
* @return*/
void sendTodoTask(List<UnifiedTodoVO> unifiedTodoVOList);
void sendActivityComplete(List<HiworkTodoAdd> processInstanceId);
void sendDeleteTask(List<HiworkTodoAdd> todoAddList);
}
@@ -15,15 +15,18 @@ import lombok.experimental.Accessors;
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = false)
@ApiModel(value="统一待办集成", description="统一待办集成")
public class HiworkTodoAdd {
public class UnifiedTodoVO {
@ApiModelProperty(value = "审批记录表id")
private String recordId;
@ApiModelProperty(value = "流程定义id")
private String processDefinitionId;
@ApiModelProperty(value = "1待办,2已办,3结束,6删除,其他是待办已办")
private String type;
@ApiModelProperty(value = "0待办,2已办,4:办结,8:待阅,10:已阅")
private String isRemark;
@ApiModelProperty(value = "转办时用")
private String toUserId;
@ApiModelProperty(value = "发送时的时间")
private String date;
}
@@ -341,4 +341,14 @@ public class CommonConstant {
*/
public static final String READING_STATUS_1 = "1";
public static final String READING_STATUS_2 = "2";
/**
* OA待办消息状态(0:待办,2:已办,4:办结,8:待阅,10:已阅)
*/
//待办
public static final String TODO_TYPE_0 = "0";
//已办
public static final String TODO_TYPE_2 = "2";
//办结
public static final String TODO_TYPE_4 = "4";
}
@@ -0,0 +1,158 @@
package com.jero.modules.docking.hiwork.controller;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.jero.common.api.vo.Result;
import com.jero.common.api.vo.ResultCommon;
import com.jero.common.aspect.annotation.AutoLog;
import com.jero.common.system.base.controller.JeroController;
import com.jero.common.system.query.QueryGenerator;
import com.jero.modules.docking.hiwork.entity.LawsUnifiedTodoLog;
import com.jero.modules.docking.hiwork.service.LawsUnifiedTodoLogService;
import com.jero.modules.system.vo.IdMapBody;
import com.jero.modules.system.vo.IdsMapBody;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.servlet.ModelAndView;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.Arrays;
import java.util.List;
/**
* 统一代办推送日志表(laws_unified_todo_log)表控制层
*
* @author xxxxx
*/
@Slf4j
@Api(tags = "统一代办推送日志表")
@RestController
@RequestMapping("LawsUnifiedTodoLog")
public class LawsUnifiedTodoLogController extends JeroController<LawsUnifiedTodoLog, LawsUnifiedTodoLogService> {
/**
* 服务对象
*/
@Resource
private LawsUnifiedTodoLogService lawsUnifiedTodoLogService;
/**
* 分页列表查询
*/
@ApiOperation(value = "统一代办推送日志表-分页列表查询", notes = "统一代办推送日志表-分页列表查询")
@GetMapping(value = "/page")
public Result<IPage<LawsUnifiedTodoLog>> queryPageList(LawsUnifiedTodoLog lawsUnifiedTodoLog,
@RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo,
@RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize,
HttpServletRequest req) {
QueryWrapper<LawsUnifiedTodoLog> queryWrapper = QueryGenerator.initQueryWrapper(lawsUnifiedTodoLog, req.getParameterMap());
Page<LawsUnifiedTodoLog> page = new Page<>(pageNo, pageSize);
IPage<LawsUnifiedTodoLog> pageList = lawsUnifiedTodoLogService.page(page, queryWrapper);
return Result.OK(pageList);
}
/**
* 列表查询
*/
@ApiOperation(value = "统一代办推送日志表-列表查询", notes = "统一代办推送日志表-列表查询")
@GetMapping(value = "/list")
public Result<List<LawsUnifiedTodoLog>> queryList(LawsUnifiedTodoLog lawsUnifiedTodoLog,
HttpServletRequest req) {
QueryWrapper<LawsUnifiedTodoLog> queryWrapper = QueryGenerator.initQueryWrapper(lawsUnifiedTodoLog, req.getParameterMap());
List<LawsUnifiedTodoLog> list = lawsUnifiedTodoLogService.list(queryWrapper);
return Result.OK(list);
}
/**
* 添加
*/
@AutoLog(value = "统一代办推送日志表-添加")
@ApiOperation(value = "统一代办推送日志表-添加", notes = "统一代办推送日志表-添加")
@PostMapping(value = "/add")
public Result<String> add(@Validated @RequestBody LawsUnifiedTodoLog lawsUnifiedTodoLog) {
lawsUnifiedTodoLogService.add(lawsUnifiedTodoLog);
return Result.OK(ResultCommon.OK);
}
/**
* 编辑
*/
@AutoLog(value = "统一代办推送日志表-编辑")
@ApiOperation(value = "统一代办推送日志表-编辑", notes = "统一代办推送日志表-编辑")
@PostMapping(value = "/edit")
public Result<String> edit(@Validated @RequestBody LawsUnifiedTodoLog lawsUnifiedTodoLog) {
lawsUnifiedTodoLogService.editById(lawsUnifiedTodoLog);
return Result.OK(ResultCommon.EDIT_OK);
}
/**
* 通过id删除
*/
@AutoLog(value = "统一代办推送日志表-通过id删除")
@ApiOperation(value = "统一代办推送日志表-通过id删除", notes = "统一代办推送日志表-通过id删除")
@PostMapping(value = "/delete")
public Result<String> delete(@RequestBody IdMapBody map) {
String id = map.getId();
if (StringUtils.isBlank(id)) {
return Result.error(ResultCommon.PLEASE_SELECT_DATA);
}
lawsUnifiedTodoLogService.deleteById(id);
return Result.OK(ResultCommon.SUCCESSFULLY_DELETED);
}
/**
* 批量删除
*/
@AutoLog(value = "统一代办推送日志表-批量删除")
@ApiOperation(value = "统一代办推送日志表-批量删除", notes = "统一代办推送日志表-批量删除")
@PostMapping(value = "/deleteBatch")
public Result<String> deleteBatch(@RequestBody IdsMapBody map) {
String ids = map.getIds();
if (StringUtils.isBlank(ids)) {
return Result.error(ResultCommon.PLEASE_SELECT_DATA);
}
List<String> idList = Arrays.asList(map.getIds().split(","));
this.lawsUnifiedTodoLogService.deleteByIds(idList);
return Result.OK(ResultCommon.SUCCESSFULLY_DELETED_IN_BULK);
}
/**
* 通过id查询
*/
@AutoLog(value = "统一代办推送日志表-通过id查询")
@ApiOperation(value = "统一代办推送日志表-通过id查询", notes = "统一代办推送日志表-通过id查询")
@GetMapping(value = "/queryById")
public Result<LawsUnifiedTodoLog> queryById(@RequestParam(name = "id") String id) {
LawsUnifiedTodoLog lawsUnifiedTodoLog = lawsUnifiedTodoLogService.queryById(id);
if (lawsUnifiedTodoLog == null) {
return Result.error(ResultCommon.NO_CORRESPONDING_DATA_FOUND);
}
return Result.OK(lawsUnifiedTodoLog);
}
/**
* 导出excel
*/
@ApiOperation(value = "统一代办推送日志表-导出excel")
@GetMapping(value = "/exportXls")
public ModelAndView exportXls(HttpServletRequest request, LawsUnifiedTodoLog lawsUnifiedTodoLog) {
return super.exportXls(request, lawsUnifiedTodoLog, LawsUnifiedTodoLog.class, "统一代办推送日志表");
}
/**
* 通过excel导入数据
*/
@ApiOperation(value = "统一代办推送日志表-通过excel导入数据")
@PostMapping(value = "/importExcel")
public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
return super.importExcel(request, response, LawsUnifiedTodoLog.class);
}
}
@@ -1,78 +0,0 @@
package com.jero.modules.docking.hiwork.entity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import java.time.Instant;
/**
* @Author: liao
* @Date: 2023/10/13 14:22
* @Description: 待办
*/
@Data
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = false)
@ApiModel(value="统一待办集成", description="统一待办集成")
public class HiworkTodo {
@ApiModelProperty(value = "异构系统标识")
private String sysCode;
@ApiModelProperty(value = "标题")
private String noticeTitle;
@ApiModelProperty(value = "描述")
private String noticeDescription;
@ApiModelProperty(value = "流程编号")
private String busiDefCode;
@ApiModelProperty(value = "流程id")
private String flowid;
@ApiModelProperty(value = "流程实例id")
private String processId;
@ApiModelProperty(value = "流程实例名称")
private String processName;
@ApiModelProperty(value = "流程类型,字典")
private String processType;
@ApiModelProperty(value = "任务id")
private String taskId;
@ApiModelProperty(value = "节点名称")
private String taskName;
@ApiModelProperty(value = "是否进入下一节点(0是 1不是)")
private Integer multiInstance;
@ApiModelProperty(value = "节点编号")
private String nodeBusiCode;
@ApiModelProperty(value = "跳转链接")
private String businessLink;
@ApiModelProperty(value = "APP跳转链接")
private String appBusinessLink;
@ApiModelProperty(value = "创建人code")
private String createUserCode;
@ApiModelProperty(value = "创建人姓名")
private String createUserName;
@ApiModelProperty(value = "接收人id")
private String userId;
@ApiModelProperty(value = "接收人code")
private String userCode;
@ApiModelProperty(value = "接收人姓名")
private String userName;
@ApiModelProperty(value = "参与者id")
private String participantId;
@ApiModelProperty(value = "参与者编号")
private String participantCode;
@ApiModelProperty(value = "接收时间")
private Instant receiveTime;
@ApiModelProperty(value = "截止时间")
private Long dueTime;
@ApiModelProperty(value = "业务主键")
private String bid;
@ApiModelProperty(value = "待办、已办")
private String isTodo;
@ApiModelProperty(value = "是否展示在列表中")
private String isShow;
@ApiModelProperty(value = "优先级")
private String priority;
@ApiModelProperty(value = "是否通知消息")
private String notifyConfig;
}
@@ -0,0 +1,81 @@
package com.jero.modules.docking.hiwork.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
/**
*统一代办推送日志表
*@author liJiaRao
*@date 2024-07-12 14:02
*/
@Data
@ApiModel(description="统一代办推送日志表")
@TableName(value = "laws_unified_todo_log")
public class LawsUnifiedTodoLog {
@TableId(value = "id", type = IdType.INPUT)
@ApiModelProperty(value="")
private String id;
/**
* 推送地址
*/
@TableField(value = "url")
@ApiModelProperty(value="推送地址")
private String url;
/**
* 推送内容
*/
@TableField(value = "json_str")
@ApiModelProperty(value="推送内容")
private String jsonStr;
/**
* 返回内容
*/
@TableField(value = "response_body")
@ApiModelProperty(value="返回内容")
private String responseBody;
/**
* 状态1成功,2失败
*/
@TableField(value = "`state`")
@ApiModelProperty(value="状态1成功,2失败")
private Integer state;
/**
* 创建人
*/
@TableField(value = "create_by")
@ApiModelProperty(value="创建人")
private String createBy;
/**
* 创建时间
*/
@TableField(value = "create_time")
@ApiModelProperty(value="创建时间")
private Date createTime;
/**
* 更新人
*/
@TableField(value = "update_by")
@ApiModelProperty(value="更新人")
private String updateBy;
/**
* 更新时间
*/
@TableField(value = "update_time")
@ApiModelProperty(value="更新时间")
private Date updateTime;
}
@@ -0,0 +1,53 @@
package com.jero.modules.docking.hiwork.entity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import java.time.Instant;
/**
* @Author: liao
* @Date: 2023/10/13 14:22
* @Description: 待办
*/
@Data
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = false)
@ApiModel(value="统一待办集成", description="统一待办集成")
public class UnifiedTodo {
@ApiModelProperty(value = "异构系统标识")
private String sysCode;
@ApiModelProperty(value = "流程id")
private String flowid;
@ApiModelProperty(value = "标题")
private String requestname;
@ApiModelProperty(value = "流程类型名称")
private String workflowname;
@ApiModelProperty(value = "步骤名称(节点名称)")
private String nodename;
@ApiModelProperty(value = "PC地址")
private String pcurl;
@ApiModelProperty(value = "APP地址")
private String appurl;
@ApiModelProperty(value = "0:待办,2:已办,4:办结,8:待阅,10:已阅")
private String isremark;
@ApiModelProperty(value = "流程查看状态0:未读1:已读;")
private String viewtype;
@ApiModelProperty(value = "创建人code")
private String creator;
@ApiModelProperty(value = "接收人code")
private String receiver;
@ApiModelProperty(value = "创建日期时间")
private String createdatetime;
@ApiModelProperty(value = "接收日期时间")
private String receivedatetime;
@ApiModelProperty(value = "时间戳字段")
private String receivets;
@ApiModelProperty(value = "缓急值0正常,2紧急")
private String requestlevel;
}
@@ -0,0 +1,12 @@
package com.jero.modules.docking.hiwork.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.jero.modules.docking.hiwork.entity.LawsUnifiedTodoLog;
/**
*
*@author liJiaRao
*@date 2024-07-12 14:02
*/
public interface LawsUnifiedTodoLogMapper extends BaseMapper<LawsUnifiedTodoLog> {
}
@@ -0,0 +1,21 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.jero.modules.docking.hiwork.mapper.LawsUnifiedTodoLogMapper">
<resultMap id="BaseResultMap" type="com.jero.modules.docking.hiwork.entity.LawsUnifiedTodoLog">
<!--@mbg.generated-->
<!--@Table laws_unified_todo_log-->
<id column="id" jdbcType="VARCHAR" property="id" />
<result column="url" jdbcType="VARCHAR" property="url" />
<result column="type" jdbcType="INTEGER" property="type" />
<result column="json_str" jdbcType="VARCHAR" property="jsonStr" />
<result column="state" jdbcType="INTEGER" property="state" />
<result column="create_by" jdbcType="VARCHAR" property="createBy" />
<result column="create_time" jdbcType="TIMESTAMP" property="createTime" />
<result column="update_by" jdbcType="VARCHAR" property="updateBy" />
<result column="update_time" jdbcType="TIMESTAMP" property="updateTime" />
</resultMap>
<sql id="Base_Column_List">
<!--@mbg.generated-->
id, url, `type`, json_str, `state`, create_by, create_time, update_by, update_time
</sql>
</mapper>
@@ -1,7 +1,7 @@
package com.jero.modules.docking.hiwork.service;
import com.jero.common.api.dto.message.HiworkTodoAdd;
import com.jero.common.api.dto.message.UnifiedTodoVO;
import java.util.List;
@@ -17,6 +17,6 @@ public interface IHiworkTodoService {
* @Date: 2023/10/13 15:12
* @Description: 统一待办集成
**/
void sendTodoTask(List<HiworkTodoAdd> hiworkTodoAddList);
void sendTodoTask(List<UnifiedTodoVO> unifiedTodoVOList);
}
@@ -0,0 +1,38 @@
package com.jero.modules.docking.hiwork.service;
import org.springframework.stereotype.Service;
import org.springframework.beans.factory.annotation.Autowired;
import java.util.List;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.jero.modules.docking.hiwork.entity.LawsUnifiedTodoLog;
import com.jero.modules.docking.hiwork.mapper.LawsUnifiedTodoLogMapper;
/**
*
*@author liJiaRao
*@date 2024-07-12 14:02
*/
@Service
public class LawsUnifiedTodoLogService extends ServiceImpl<LawsUnifiedTodoLogMapper, LawsUnifiedTodoLog> {
public void add(LawsUnifiedTodoLog lawsUnifiedTodoLog) {
this.save(lawsUnifiedTodoLog);
}
public void editById(LawsUnifiedTodoLog lawsUnifiedTodoLog) {
this.updateById(lawsUnifiedTodoLog);
}
public void deleteById(String id) {
this.removeById(id);
}
public void deleteByIds(List<String> idList) {
for (String id : idList) {
deleteById(id);
}
}
public LawsUnifiedTodoLog queryById(String id) {
LawsUnifiedTodoLog lawsUnifiedTodoLog = this.getById(id);
return lawsUnifiedTodoLog;
}
}
@@ -1,275 +0,0 @@
package com.jero.modules.docking.hiwork.service.impl;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.jero.common.api.PushWorkflowIntegrationAPI;
import com.jero.common.api.dto.message.HiworkTodoAdd;
import com.jero.common.api.vo.ResultCommon;
import com.jero.common.constant.enums.YesOrNoEnum;
import com.jero.common.exception.JeroBootException;
import com.jero.common.system.vo.LoginUser;
import com.jero.modules.activiti.entity.ProcessAll;
import com.jero.modules.activiti.entity.ProcessApprovalRecord;
import com.jero.modules.activiti.entity.ProcessNode;
import com.jero.modules.activiti.enums.ProcessTypeEnum;
import com.jero.modules.activiti.service.ProcessAllService;
import com.jero.modules.activiti.service.ProcessApprovalRecordService;
import com.jero.modules.activiti.service.ProcessNodeService;
import com.jero.modules.docking.hiwork.entity.HiworkTodo;
import com.jero.modules.docking.hiwork.util.HiworkPostUtil;
import com.jero.modules.system.entity.SysUser;
import com.jero.modules.system.service.ISysUserService;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.shiro.SecurityUtils;
import org.jetbrains.annotations.NotNull;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.web.client.RestTemplate;
import javax.annotation.Resource;
import java.time.Instant;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Objects;
/**
* @Author: liao
* @Date: 2023/10/13 14:23
* @Description: 待办
*/
@Slf4j
@Service
public class HiworkTodoServiceImpl implements PushWorkflowIntegrationAPI {
@Resource
private ISysUserService sysUserService;
@Resource
private ProcessApprovalRecordService processApprovalRecordService;
@Resource
private HiworkPostUtil hiworkPostUtil;
@Resource
private ProcessNodeService processNodeService;
@Resource
private ProcessAllService processAllService;
@Resource
private RestTemplate restTemplate;
@Value("${hiwork.ip}")
private String ip;
@Value("${hiwork.todoUrl}")
private String todoUrl;
@Value("${hiwork.isWorkflow}")
private boolean isWorkflow;
@Value("${hiwork.sysCode}")
private String hiworkSysCode;
@Value("${hiwork.url}")
private String hiworkUrl;
@Value("${hiwork.fontUrl}")
private String hiworkFontUrl;
@Value("${hiwork.fontAppUrl}")
private String hiworkFontAppUrl;
private static final String PROCESS_TYPE = "srms";
private static final String TODO_TYPE_2 = "2";
private static final String TODO_TYPE_3 = "3";
private static final String TODO_TYPE_6 = "6";
/**
* @Author: liao
* @Date: 2023/10/13 15:12
* @Description: 统一待办集成
**/
@Override
public void sendTodoTask(List<HiworkTodoAdd> hiworkTodoAddList) {
if(!isWorkflow){
return;
}
if (CollectionUtils.isEmpty(hiworkTodoAddList)) {
throw new JeroBootException(ResultCommon.EMPTY_COMMON, "hiworkTodoAddList");
}
try {
List<HiworkTodo> hiworkTodoList = getHiworkTodos(hiworkTodoAddList);
log.info("统一待办推送入参" + JSON.toJSONString(hiworkTodoList));
log.info("统一待办推送url" + ip + todoUrl);
// 远程调用
JSONObject json = restTemplate.postForObject(ip + todoUrl,hiworkTodoList, JSONObject.class);
if(!Objects.isNull(json) && json.containsKey("success") && Objects.equals("true",json.getString("success"))){
log.info("统一待办推送成功");
}else{
log.info("统一待办推送失败{}",json);
}
}catch (Exception e){
log.error("统一待办推送异常",e);
}
}
@Override
public void sendActivityComplete(List<HiworkTodoAdd> hiworkTodoAddList) {
if(!isWorkflow){
return;
}
try {
for (HiworkTodoAdd hiworkTodoAdd : hiworkTodoAddList) {
hiworkTodoAdd.setType(TODO_TYPE_3);
}
List<HiworkTodo> hiworkTodoList = getHiworkTodos(hiworkTodoAddList);
log.info("统一待办推送入参" + JSON.toJSONString(hiworkTodoList));
log.info("统一待办推送url" + ip + todoUrl);
// 远程调用
JSONObject json = restTemplate.postForObject(ip + todoUrl,hiworkTodoList, JSONObject.class);
if(!Objects.isNull(json) && json.containsKey("success") && Objects.equals("true",json.getString("success"))){
log.info("统一待办推送成功");
}else{
log.info("统一待办推送失败{}",json);
}
}catch (Exception e){
log.error("统一待办推送异常",e);
}
}
@Override
public void sendDeleteTask(List<HiworkTodoAdd> hiworkTodoAddList) {
if(!isWorkflow){
return;
}
try {
for (HiworkTodoAdd hiworkTodoAdd : hiworkTodoAddList) {
hiworkTodoAdd.setType(TODO_TYPE_6);
}
List<HiworkTodo> hiworkTodoList = getHiworkTodos(hiworkTodoAddList);
log.info("统一待办删除推送入参" + JSON.toJSONString(hiworkTodoList));
log.info("统一待办推送url" + ip + todoUrl);
// 远程调用
JSONObject json = restTemplate.postForObject(ip + todoUrl,hiworkTodoList, JSONObject.class);
if(!Objects.isNull(json) && json.containsKey("success") && Objects.equals("true",json.getString("success"))){
log.info("统一待办删除推送成功");
}else{
log.info("统一待办删除推送失败{}",json);
}
}catch (Exception e){
log.error("统一待办删除推送异常",e);
}
}
@NotNull
private List<HiworkTodo> getHiworkTodos(List<HiworkTodoAdd> hiworkTodoAddList) {
List<HiworkTodo> hiworkTodoList = new ArrayList<>();
for (HiworkTodoAdd hiworkTodoAdd : hiworkTodoAddList) {
String recordId = hiworkTodoAdd.getRecordId();
String processDefinitionId = hiworkTodoAdd.getProcessDefinitionId();
String type = hiworkTodoAdd.getType();
ProcessApprovalRecord processApprovalRecord = processApprovalRecordService.getById(recordId);
if(Objects.isNull(processApprovalRecord)){
continue;
}
HiworkTodo hiworkTodo = new HiworkTodo();
hiworkTodo.setSysCode(hiworkSysCode);
String date = DateUtil.formatDateTime(new Date());
String taskId = processApprovalRecord.getTaskId();
hiworkTodo.setFlowid(processApprovalRecord.getProcessInstanceId());
hiworkTodo.setProcessId(taskId);
hiworkTodo.setProcessType(PROCESS_TYPE);
hiworkTodo.setTaskId(taskId);
hiworkTodo.setTaskName(processApprovalRecord.getTaskName());
LambdaQueryWrapper<ProcessNode> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(ProcessNode::getProcessDefinitionId,processDefinitionId);
wrapper.eq(ProcessNode::getNodeName,processApprovalRecord.getTaskName());
wrapper.eq(ProcessNode::getIsView, YesOrNoEnum.YES.getValue());
ProcessNode processNode = processNodeService.getOne(wrapper,false);
if(!Objects.isNull(processNode)){
if(processNode.getNodeName().contains("会签")){
}
hiworkTodo.setNodeBusiCode(processNode.getXmlNodeId());
// 是否显示(0否,1是)
hiworkTodo.setIsShow(String.valueOf(processNode.getIsView()));
}
String userId;
if (hiworkTodoAdd.getToUserId() == null){
userId = processApprovalRecord.getUserId();
}else {
userId = hiworkTodoAdd.getToUserId();
}
SysUser sysUser = sysUserService.getById(userId);
String noticeTitle = processApprovalRecord.getTaskName() + "(" + sysUser.getRealname() + " " + date + ")";
LambdaQueryWrapper<ProcessAll> queryProcessAll = new LambdaQueryWrapper<>();
queryProcessAll.eq(ProcessAll::getProcessInstanceId,processApprovalRecord.getProcessInstanceId());
ProcessAll processAll = processAllService.getOne(queryProcessAll);
if(!Objects.isNull(processAll)){
String processName = ProcessTypeEnum.getNameByValue(processAll.getPrcType());
noticeTitle = processName + "(" + sysUser.getRealname() + " " + date + ")";
hiworkTodo.setProcessName(processName);
SysUser createUser = sysUserService.getById(processAll.getCreateUserId());
if(!Objects.isNull(createUser)){
hiworkTodo.setCreateUserCode(createUser.getUsername());
hiworkTodo.setCreateUserName(createUser.getRealname());
}
if(!Objects.isNull(processAll.getDueTime())){
hiworkTodo.setDueTime(processAll.getDueTime().getTime());
}
String projectId = "";
if (StrUtil.isNotBlank(processAll.getProjectId())){
projectId = processAll.getProjectId();
}
hiworkTodo.setBid(projectId);
String url = hiworkFontUrl
//.replaceAll("&","%26")
//.replaceAll("\\?","%3F")
.replace("{projectId}",projectId)
.replace("{taskName}",processApprovalRecord.getTaskName())
.replace("{taskId}", taskId)
.replace("{processInstanceId}",processApprovalRecord.getProcessInstanceId())
.replace("{nodeId}",processApprovalRecord.getNodeId());
// 跳转链接
String businessLink = Objects.requireNonNull(ProcessTypeEnum.getFontReturnUrlPc(processAll.getPrcType())) + url;
hiworkTodo.setBusinessLink(businessLink);
// APP跳转链接
String appUrl = hiworkFontAppUrl
//.replaceAll("&","%26")
//.replaceAll("\\?","%3F")
.replace("{projectId}",projectId)
.replace("{taskName}",processApprovalRecord.getTaskName())
.replace("{taskId}", taskId)
.replace("{processInstanceId}",processApprovalRecord.getProcessInstanceId())
.replace("{nodeId}",processApprovalRecord.getNodeId());
String appBusinessLink = appUrl.replace("{url}", Objects.requireNonNull(ProcessTypeEnum.getFontReturnUrlPc(processAll.getPrcType())));
hiworkTodo.setAppBusinessLink(appBusinessLink);
}
hiworkTodo.setNoticeTitle(noticeTitle);
hiworkTodo.setUserId(userId);
hiworkTodo.setUserCode(sysUser.getUsername());
hiworkTodo.setUserName(sysUser.getRealname());
hiworkTodo.setReceiveTime(Instant.now());
//2已完成时进入下一节点
Integer finishFlag = processApprovalRecord.getFinishFlag();
if (finishFlag.equals(2)){
hiworkTodo.setMultiInstance(0);
}else {
hiworkTodo.setMultiInstance(1);
}
if (TODO_TYPE_3.equals(type)){
hiworkTodo.setIsTodo(TODO_TYPE_3);
}else if (TODO_TYPE_6.equals(type)){
hiworkTodo.setIsTodo(TODO_TYPE_6);
}else if (TODO_TYPE_2.equals(type)){
hiworkTodo.setIsTodo(TODO_TYPE_2);
}else {
hiworkTodo.setIsTodo(String.valueOf(finishFlag));
}
hiworkTodoList.add(hiworkTodo);
}
return hiworkTodoList;
}
}
@@ -0,0 +1,229 @@
package com.jero.modules.docking.hiwork.service.impl;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.http.Header;
import cn.hutool.http.HttpRequest;
import cn.hutool.http.HttpResponse;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.jero.common.api.PushWorkflowIntegrationAPI;
import com.jero.common.api.dto.message.UnifiedTodoVO;
import com.jero.common.api.vo.ResultCommon;
import com.jero.common.exception.JeroBootException;
import com.jero.modules.activiti.entity.ProcessAll;
import com.jero.modules.activiti.entity.ProcessApprovalRecord;
import com.jero.modules.activiti.enums.ProcessTypeEnum;
import com.jero.modules.activiti.service.ProcessAllService;
import com.jero.modules.activiti.service.ProcessApprovalRecordService;
import com.jero.modules.activiti.service.ProcessNodeService;
import com.jero.modules.docking.hiwork.entity.LawsUnifiedTodoLog;
import com.jero.modules.docking.hiwork.entity.UnifiedTodo;
import com.jero.modules.docking.hiwork.service.LawsUnifiedTodoLogService;
import com.jero.modules.docking.hiwork.util.HiworkPostUtil;
import com.jero.modules.system.entity.SysUser;
import com.jero.modules.system.service.ISysUserService;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.jetbrains.annotations.NotNull;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.web.client.RestTemplate;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Objects;
/**
* @Author: liao
* @Date: 2023/10/13 14:23
* @Description: 待办
*/
@Slf4j
@Service
public class UnifiedTodoServiceImpl implements PushWorkflowIntegrationAPI {
@Resource
private ISysUserService sysUserService;
@Resource
private ProcessApprovalRecordService processApprovalRecordService;
@Resource
private HiworkPostUtil hiworkPostUtil;
@Resource
private ProcessNodeService processNodeService;
@Resource
private ProcessAllService processAllService;
@Resource
private RestTemplate restTemplate;
@Resource
private LawsUnifiedTodoLogService unifiedTodoLogService;
@Value("${hiwork.ip}")
private String ip;
@Value("${hiwork.todoUrl}")
private String todoUrl;
@Value("${hiwork.isWorkflow}")
private boolean isWorkflow;
@Value("${hiwork.sysCode}")
private String hiworkSysCode;
@Value("${hiwork.url}")
private String hiworkUrl;
@Value("${hiwork.fontUrl}")
private String hiworkFontUrl;
@Value("${hiwork.fontAppUrl}")
private String hiworkFontAppUrl;
/**
* @Author: liao
* @Date: 2023/10/13 15:12
* @Description: 统一待办集成
*
* @return*/
@Override
public void sendTodoTask(List<UnifiedTodoVO> unifiedTodoVOList) {
if(!isWorkflow){
return;
}
boolean successFlag = true;
if (CollectionUtils.isEmpty(unifiedTodoVOList)) {
throw new JeroBootException(ResultCommon.EMPTY_COMMON, "unifiedTodoVOList");
}
String newDate = DateUtil.formatDateTime(new Date());
for (UnifiedTodoVO unifiedTodoVO : unifiedTodoVOList) {
String date = unifiedTodoVO.getDate();
if (StringUtils.isBlank(date)){
unifiedTodoVO.setDate(newDate);
}
}
try {
List<UnifiedTodo> unifiedTodoList = getHiworkTodos(unifiedTodoVOList);
String jsonString = JSONObject.toJSONString(unifiedTodoList);
log.info("统一待办推送入参" + jsonString);
push(ip + todoUrl,jsonString);
}catch (Exception e){
log.error("统一待办推送异常",e);
}
}
private void push(String url, String jsonString) {
// 设置最大重试次数
int maxRetries = 3;
// 当前重试次数
int retries = 0;
LawsUnifiedTodoLog lawsUnifiedTodoLog = new LawsUnifiedTodoLog();
while (retries < maxRetries) {
// 远程调用
HttpResponse execute = HttpRequest.post(url)
.header(Header.CONTENT_TYPE, "application/json;charset=UTF-8")
.body(jsonString)//表单内容
.timeout(3000)//超时,毫秒
.execute();
if (execute.isOk()) {
log.info("统一待办推送成功");
String body = execute.body();
lawsUnifiedTodoLog.setResponseBody(body);
break;
}else {
String body = execute.body();
lawsUnifiedTodoLog.setResponseBody(body);
JSONObject jsonObject = JSONObject.parseObject(body);
String operResult = jsonObject.getString("operResult");
if ("1".equals(operResult)){
log.info("统一待办推送成功");
break;
}
log.info("统一待办推送失败{}",jsonObject);
retries++;
}
}
lawsUnifiedTodoLog.setUrl(url);
lawsUnifiedTodoLog.setJsonStr(jsonString);
if (retries == maxRetries){
lawsUnifiedTodoLog.setState(2);
}else {
lawsUnifiedTodoLog.setState(1);
}
unifiedTodoLogService.add(lawsUnifiedTodoLog);
}
@NotNull
private List<UnifiedTodo> getHiworkTodos(List<UnifiedTodoVO> unifiedTodoVOList) {
List<UnifiedTodo> unifiedTodoList = new ArrayList<>();
for (UnifiedTodoVO unifiedTodoVO : unifiedTodoVOList) {
String recordId = unifiedTodoVO.getRecordId();
String processDefinitionId = unifiedTodoVO.getProcessDefinitionId();
String isremark = unifiedTodoVO.getIsRemark();
String date = unifiedTodoVO.getDate();
ProcessApprovalRecord processApprovalRecord = processApprovalRecordService.getById(recordId);
if(Objects.isNull(processApprovalRecord)){
continue;
}
UnifiedTodo unifiedTodo = new UnifiedTodo();
unifiedTodo.setSysCode(hiworkSysCode);
String taskId = processApprovalRecord.getTaskId();
unifiedTodo.setFlowid(processApprovalRecord.getProcessInstanceId());
unifiedTodo.setNodename(processApprovalRecord.getTaskName());
String userId;
if (unifiedTodoVO.getToUserId() == null){
userId = processApprovalRecord.getUserId();
}else {
userId = unifiedTodoVO.getToUserId();
}
SysUser sysUser = sysUserService.getById(userId);
String noticeTitle = processApprovalRecord.getTaskName() + "(" + sysUser.getRealname() + " " + date + ")";
LambdaQueryWrapper<ProcessAll> queryProcessAll = new LambdaQueryWrapper<>();
queryProcessAll.eq(ProcessAll::getProcessInstanceId,processApprovalRecord.getProcessInstanceId());
ProcessAll processAll = processAllService.getOne(queryProcessAll);
if(!Objects.isNull(processAll)){
String processName = ProcessTypeEnum.getNameByValue(processAll.getPrcType());
noticeTitle = processName + "(" + sysUser.getRealname() + " " + date + ")";
unifiedTodo.setWorkflowname(processName);
SysUser createUser = sysUserService.getById(processAll.getCreateUserId());
if(!Objects.isNull(createUser)){
unifiedTodo.setCreator(createUser.getUsername());
}
String projectId = "";
if (StrUtil.isNotBlank(processAll.getProjectId())){
projectId = processAll.getProjectId();
}
String url = hiworkFontUrl
.replace("{projectId}",projectId)
.replace("{taskName}",processApprovalRecord.getTaskName())
.replace("{taskId}", taskId)
.replace("{processInstanceId}",processApprovalRecord.getProcessInstanceId())
.replace("{nodeId}",processApprovalRecord.getNodeId());
// 跳转链接
String businessLink = Objects.requireNonNull(ProcessTypeEnum.getFontReturnUrlPc(processAll.getPrcType())) + url;
unifiedTodo.setPcurl(businessLink);
// APP跳转链接
String appUrl = hiworkFontAppUrl
.replace("{projectId}",projectId)
.replace("{taskName}",processApprovalRecord.getTaskName())
.replace("{taskId}", taskId)
.replace("{processInstanceId}",processApprovalRecord.getProcessInstanceId())
.replace("{nodeId}",processApprovalRecord.getNodeId());
String appBusinessLink = appUrl.replace("{url}", Objects.requireNonNull(ProcessTypeEnum.getFontReturnUrlPc(processAll.getPrcType())));
unifiedTodo.setAppurl(appBusinessLink);
}
unifiedTodo.setRequestname(noticeTitle);
unifiedTodo.setReceiver(sysUser.getUsername());
unifiedTodo.setReceivedatetime(date);
unifiedTodo.setIsremark(isremark);
unifiedTodo.setReceivets(String.valueOf(System.currentTimeMillis()));
unifiedTodo.setRequestlevel("0");
unifiedTodoList.add(unifiedTodo);
}
return unifiedTodoList;
}
}
@@ -8,7 +8,7 @@ import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.jero.common.exception.JeroBootException;
import com.jero.modules.docking.hiwork.entity.HiworkResult;
import com.jero.modules.docking.hiwork.entity.HiworkTodo;
import com.jero.modules.docking.hiwork.entity.UnifiedTodo;
import com.jero.modules.docking.hiwork.entity.HiworkDingDingMsg;
import com.jero.modules.docking.hiwork.entity.HiworkSystemMsg;
import lombok.extern.slf4j.Slf4j;
@@ -17,14 +17,11 @@ import org.springframework.beans.factory.annotation.Value;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Component;
import org.springframework.web.client.RestTemplate;
import java.util.List;
import static net.sf.jsqlparser.parser.feature.Feature.execute;
/**
* @Author: liao
* @Date: 2023/10/13 16:55
@@ -102,11 +99,11 @@ public class HiworkPostUtil {
* @Date: 2023/10/13 17:45
* @Description: 统一待办集成远程调用
**/
public void postTodo(List<HiworkTodo> hiworkTodoList) {
public void postTodo(List<UnifiedTodo> unifiedTodoList) {
ObjectMapper objectMapper = new ObjectMapper();
String jsonString;
try {
jsonString = objectMapper.writeValueAsString(hiworkTodoList);
jsonString = objectMapper.writeValueAsString(unifiedTodoList);
} catch (JsonProcessingException e) {
throw new JeroBootException("JSON string format conversion error");
}
@@ -6,7 +6,9 @@ import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.jero.common.api.dto.message.HiworkTodoAdd;
import com.jero.common.api.PushWorkflowIntegrationAPI;
import com.jero.common.api.dto.message.UnifiedTodoVO;
import com.jero.common.constant.CommonConstant;
import com.jero.common.constant.enums.YesOrNoEnum;
import com.jero.common.system.vo.LoginUser;
import com.jero.modules.activiti.common.ActivitiCommon;
@@ -62,11 +64,15 @@ public class MyGlobalEventListener implements ActivitiEventListener {
case PROCESS_COMPLETED:
this.activityComplete(event);
break;
case ENTITY_DELETED:
this.entityDeleted(event);
break;
default:
//log.info("Event received: " + event.getType());
}
}
/**
* 上面的 onEvent 方法抛出异常的后续处理动作
* false :表示忽略onEvent()方法方法中抛出的异常
@@ -173,13 +179,14 @@ public class MyGlobalEventListener implements ActivitiEventListener {
processAllService.update(updateWrapper);
// 对接统一平台生成待办任务
// PushWorkflowIntegrationAPI pushWorkflowIntegrationAPI = SpringContextUtil.getBean(PushWorkflowIntegrationAPI.class);
List<HiworkTodoAdd> list = new ArrayList<>();
HiworkTodoAdd hiworkTodoAdd = new HiworkTodoAdd();
hiworkTodoAdd.setRecordId(approvalRecord.getId());
hiworkTodoAdd.setProcessDefinitionId(processDefinitionId);
list.add(hiworkTodoAdd);
// pushWorkflowIntegrationAPI.sendTodoTask(list);
PushWorkflowIntegrationAPI pushWorkflowIntegrationAPI = SpringContextUtil.getBean(PushWorkflowIntegrationAPI.class);
List<UnifiedTodoVO> list = new ArrayList<>();
UnifiedTodoVO unifiedTodoVO = new UnifiedTodoVO();
unifiedTodoVO.setRecordId(approvalRecord.getId());
unifiedTodoVO.setProcessDefinitionId(processDefinitionId);
unifiedTodoVO.setIsRemark(CommonConstant.TODO_TYPE_0);
list.add(unifiedTodoVO);
pushWorkflowIntegrationAPI.sendTodoTask(list);
}
private void taskAssigned(ActivitiEvent event) {
@@ -202,24 +209,21 @@ public class MyGlobalEventListener implements ActivitiEventListener {
if (!Objects.equals(assignee,userId)) {
log.info(""+userId+"转办给"+assignee);
// 对接统一平台生成完成任务
// PushWorkflowIntegrationAPI pushWorkflowIntegrationAPI = SpringContextUtil.getBean(PushWorkflowIntegrationAPI.class);
List<HiworkTodoAdd> list = new ArrayList<>();
HiworkTodoAdd hiworkTodoAdd = new HiworkTodoAdd();
hiworkTodoAdd.setRecordId(approvalRecord.getId());
hiworkTodoAdd.setType("2");
hiworkTodoAdd.setProcessDefinitionId(processDefinitionId);
list.add(hiworkTodoAdd);
// pushWorkflowIntegrationAPI.sendTodoTask(list);
// 对接统一平台生成办结
// pushWorkflowIntegrationAPI.sendActivityComplete(list);
PushWorkflowIntegrationAPI pushWorkflowIntegrationAPI = SpringContextUtil.getBean(PushWorkflowIntegrationAPI.class);
List<UnifiedTodoVO> list = new ArrayList<>();
UnifiedTodoVO unifiedTodoVO = new UnifiedTodoVO();
unifiedTodoVO.setRecordId(approvalRecord.getId());
unifiedTodoVO.setIsRemark(CommonConstant.TODO_TYPE_2);
unifiedTodoVO.setProcessDefinitionId(processDefinitionId);
list.add(unifiedTodoVO);
pushWorkflowIntegrationAPI.sendTodoTask(list);
// 生成被转办人的待办
list.clear();
hiworkTodoAdd.setToUserId(assignee);
hiworkTodoAdd.setType("1");
list.add(hiworkTodoAdd);
// pushWorkflowIntegrationAPI.sendTodoTask(list);
unifiedTodoVO.setToUserId(assignee);
unifiedTodoVO.setIsRemark(CommonConstant.TODO_TYPE_0);
list.add(unifiedTodoVO);
pushWorkflowIntegrationAPI.sendTodoTask(list);
}
}
@@ -298,18 +302,62 @@ public class MyGlobalEventListener implements ActivitiEventListener {
processAllService.update(updateWrapper);
// 对接统一平台生成完成任务
// PushWorkflowIntegrationAPI pushWorkflowIntegrationAPI = SpringContextUtil.getBean(PushWorkflowIntegrationAPI.class);
List<HiworkTodoAdd> list = new ArrayList<>();
HiworkTodoAdd hiworkTodoAdd = new HiworkTodoAdd();
hiworkTodoAdd.setRecordId(approvalRecord.getId());
hiworkTodoAdd.setProcessDefinitionId(processDefinitionId);
list.add(hiworkTodoAdd);
// pushWorkflowIntegrationAPI.sendTodoTask(list);
// 对接统一平台生成办结
// pushWorkflowIntegrationAPI.sendActivityComplete(list);
PushWorkflowIntegrationAPI pushWorkflowIntegrationAPI = SpringContextUtil.getBean(PushWorkflowIntegrationAPI.class);
List<UnifiedTodoVO> list = new ArrayList<>();
UnifiedTodoVO unifiedTodoVO = new UnifiedTodoVO();
unifiedTodoVO.setRecordId(approvalRecord.getId());
unifiedTodoVO.setProcessDefinitionId(processDefinitionId);
unifiedTodoVO.setIsRemark(CommonConstant.TODO_TYPE_2);
list.add(unifiedTodoVO);
pushWorkflowIntegrationAPI.sendTodoTask(list);
}
private void entityDeleted(ActivitiEvent event) {
log.info("===================任务删除事件===================");
ActivitiEntityEventImpl activitiEntityEvent = (ActivitiEntityEventImpl) event;
TaskEntity delegateTask;
if (activitiEntityEvent.getEntity() instanceof TaskEntity){
delegateTask = (TaskEntity) activitiEntityEvent.getEntity();
}else {
return;
}
ExecutionEntity execution = delegateTask.getExecution();
ProcessApprovalRecordService recordService = SpringContextUtil.getBean(ProcessApprovalRecordService.class);
String taskId = delegateTask.getId();
String assignee = delegateTask.getAssignee();
String processDefinitionId = delegateTask.getProcessDefinitionId();
//更新审批信息为完成
LambdaQueryWrapper<ProcessApprovalRecord> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(ProcessApprovalRecord::getTaskId,taskId);
wrapper.ne(ProcessApprovalRecord::getFinishFlag,FinishFlagEnum.COMPLETE.getValue());
wrapper.ne(ProcessApprovalRecord::getFinishFlag,FinishFlagEnum.WITHDRAWN.getValue());
ProcessApprovalRecord approvalRecord = recordService.getOne(wrapper);
if (approvalRecord == null){
return;
}
Integer finishFlag = approvalRecord.getFinishFlag();
if (FinishFlagEnum.COMPLETE.getValue().equals(finishFlag)){
return;
}
log.info("id = " + delegateTask.getId());
log.info("name = " + delegateTask.getName());
log.info("taskEntity.getAssignee() = " + delegateTask.getAssignee());
log.info("taskEntity.getIdentityLinks() = " + delegateTask.getIdentityLinks());
log.info("execution.getActivityId() = " + execution.getActivityId());
log.info("taskEntity.getVariables() = " + delegateTask.getVariables());
PushWorkflowIntegrationAPI pushWorkflowIntegrationAPI = SpringContextUtil.getBean(PushWorkflowIntegrationAPI.class);
List<UnifiedTodoVO> todoAddList = new ArrayList<>();
UnifiedTodoVO unifiedTodoVO = new UnifiedTodoVO();
unifiedTodoVO.setRecordId(approvalRecord.getId());
unifiedTodoVO.setProcessDefinitionId(processDefinitionId);
unifiedTodoVO.setIsRemark(CommonConstant.TODO_TYPE_2);
todoAddList.add(unifiedTodoVO);
pushWorkflowIntegrationAPI.sendTodoTask(todoAddList);
}
private void activityComplete(ActivitiEvent event) {
log.info("===================流程完成事件===================");
ActivitiEntityEventImpl activitiEntityEvent = (ActivitiEntityEventImpl) event;
@@ -319,6 +367,8 @@ public class MyGlobalEventListener implements ActivitiEventListener {
//根据mainInstanceId是否存在判断是否子流程
String mainInstanceId = (String) execution.getVariable(ActivitiCommon.MAIN_INSTANCE_ID);
String processInstanceId = mainInstanceId != null ? mainInstanceId : execution.getProcessInstanceId();
String processDefinitionId = execution.getProcessDefinitionId();
ProcessAll processAll = processAllService.getByProcessInstanceId(processInstanceId);
Date createTime = processAll.getCreateTime();
DateTime date = DateUtil.date();
@@ -339,6 +389,24 @@ public class MyGlobalEventListener implements ActivitiEventListener {
TaskService taskService = SpringContextUtil.getBean(TaskService.class);
taskService.complete(parentTaskId);
}
}else {
//查询所有审批信息
ProcessApprovalRecordService recordService = SpringContextUtil.getBean(ProcessApprovalRecordService.class);
LambdaQueryWrapper<ProcessApprovalRecord> wrapper1 = new LambdaQueryWrapper<>();
wrapper1.eq(ProcessApprovalRecord::getProcessInstanceId,processInstanceId);
List<ProcessApprovalRecord> approvalRecordList = recordService.list(wrapper1);
//对接统一平台生成办结
PushWorkflowIntegrationAPI pushWorkflowIntegrationAPI = SpringContextUtil.getBean(PushWorkflowIntegrationAPI.class);
List<UnifiedTodoVO> list = new ArrayList<>();
for (ProcessApprovalRecord approvalRecord : approvalRecordList) {
UnifiedTodoVO unifiedTodoVO = new UnifiedTodoVO();
unifiedTodoVO.setRecordId(approvalRecord.getId());
unifiedTodoVO.setProcessDefinitionId(processDefinitionId);
unifiedTodoVO.setIsRemark(CommonConstant.TODO_TYPE_2);
list.add(unifiedTodoVO);
}
pushWorkflowIntegrationAPI.sendTodoTask(list);
}
log.info("id = " + execution.getId());
log.info("name = " + execution.getName());
@@ -7,10 +7,12 @@ import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.jero.common.api.PushWorkflowIntegrationAPI;
import com.jero.common.api.SendMessageAPI;
import com.jero.common.api.dto.message.HiworkTodoAdd;
import com.jero.common.api.dto.message.UnifiedTodoVO;
import com.jero.common.api.dto.message.SendMessageDTO;
import com.jero.common.api.vo.ResultCommon;
import com.jero.common.constant.CommonConstant;
import com.jero.common.constant.enums.YesOrNoEnum;
import com.jero.common.exception.JeroBootException;
import com.jero.common.system.vo.LoginUser;
@@ -73,6 +75,8 @@ public class ProcessAllService extends ServiceImpl<ProcessAllMapper, ProcessAll>
private EnterpriseStandardPlanService espService;
@Resource
private EnterpriseStandardRecheckPlanService esRecheckService;
@Resource
private PushWorkflowIntegrationAPI pushWorkflowIntegrationAPI;
private static final List<Integer> INSPECT_PROCESS = Arrays.asList();
public ProcessAll getByProcessInstanceId(String processInstanceId){
@@ -230,23 +234,22 @@ public class ProcessAllService extends ServiceImpl<ProcessAllMapper, ProcessAll>
processApprovalRecord.setCreateTime(null);
approvalRecordService.save(processApprovalRecord);
//todo 同步删除操作到统一待办
//查询所有待办任务
LambdaQueryWrapper<ProcessApprovalRecord> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(ProcessApprovalRecord::getProcessInstanceId,processInstanceId);
wrapper.eq(ProcessApprovalRecord::getFinishFlag,FinishFlagEnum.INCOMPLETE.getValue());
List<ProcessApprovalRecord> approvalRecordList = approvalRecordService.list(wrapper);
List<HiworkTodoAdd> todoAddList = new ArrayList<>();
//同步删除操作到统一待办
List<UnifiedTodoVO> todoAddList = new ArrayList<>();
String processDefinitionId = processAll.getProcessDefinitionId();
for (ProcessApprovalRecord approvalRecord : approvalRecordList) {
HiworkTodoAdd hiworkTodoAdd = new HiworkTodoAdd();
hiworkTodoAdd.setRecordId(approvalRecord.getId());
hiworkTodoAdd.setProcessDefinitionId(processDefinitionId);
todoAddList.add(hiworkTodoAdd);
UnifiedTodoVO unifiedTodoVO = new UnifiedTodoVO();
unifiedTodoVO.setRecordId(approvalRecord.getId());
unifiedTodoVO.setProcessDefinitionId(processDefinitionId);
unifiedTodoVO.setIsRemark(CommonConstant.TODO_TYPE_2);
todoAddList.add(unifiedTodoVO);
}
// pushWorkflowIntegrationAPI.sendDeleteTask(todoAddList);
pushWorkflowIntegrationAPI.sendTodoTask(todoAddList);
}
public void delegateTask(DelegateTaskParam param) {
@@ -379,13 +379,13 @@ iam:
# Hiwork集成
hiwork:
ip: http://task-test.sinotruk.com/
ip: http://10.2.5.218:8088/
# 异构系统标识
sysCode: SRMS
# 服务号
serviceCode: SRMSService
# 统一待办集成
todoUrl: taskapi/task.basedata/integrationCall/workflowIntegration
todoUrl: rest/ofs/batchReceiveRequestInfoByJson
# 统一消息集成
messageUrl: taskapi/task.basedata/notice/noticeCalls/send
# 是否发送消息