diff --git a/laws-modules-docking/src/main/java/com/jero/modules/docking/hiwork/entity/HiworkDingDingMsg.java b/laws-modules-docking/src/main/java/com/jero/modules/docking/hiwork/entity/HiworkDingDingMsg.java new file mode 100644 index 00000000..398b8014 --- /dev/null +++ b/laws-modules-docking/src/main/java/com/jero/modules/docking/hiwork/entity/HiworkDingDingMsg.java @@ -0,0 +1,30 @@ +package com.jero.modules.docking.hiwork.entity; + +import com.alibaba.fastjson.JSONObject; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +/** + * @Author: liao + * @Date: 2023/10/13 17:49 + * @Description: 统一消息集成-钉钉消息 + */ +@Data +@Accessors(chain = true) +@EqualsAndHashCode(callSuper = false) +@ApiModel(value="统一消息集成-钉钉消息", description="统一消息集成-钉钉消息") +public class HiworkDingDingMsg { + @ApiModelProperty(value = "异构系统标识") + private String sysCode; + @ApiModelProperty(value = "发送人员Id") + private String useridList; + @ApiModelProperty(value = "发送部门id") + private String deptIdList; + @ApiModelProperty(value = "agentId") + private String agentId; + @ApiModelProperty(value = "消息体") + private JSONObject msg; +} diff --git a/laws-modules-docking/src/main/java/com/jero/modules/docking/hiwork/entity/HiworkResult.java b/laws-modules-docking/src/main/java/com/jero/modules/docking/hiwork/entity/HiworkResult.java new file mode 100644 index 00000000..5c632245 --- /dev/null +++ b/laws-modules-docking/src/main/java/com/jero/modules/docking/hiwork/entity/HiworkResult.java @@ -0,0 +1,27 @@ +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; + +/** + * @Author: liao + * @Date: 2023/10/13 14:39 + * @Description: 统一待办集成返回 + */ +@Data +@Accessors(chain = true) +@EqualsAndHashCode(callSuper = false) +@ApiModel(value="统一待办集成返回", description="统一待办集成返回") +public class HiworkResult { + @ApiModelProperty(value = "成功true,失败false") + private Boolean success; + @ApiModelProperty(value = "成功1,失败0") + private Integer code; + @ApiModelProperty(value = "消息") + private String msg; + @ApiModelProperty(value = "成功null,失败null") + private Object data; +} diff --git a/laws-modules-docking/src/main/java/com/jero/modules/docking/hiwork/entity/HiworkSystemMsg.java b/laws-modules-docking/src/main/java/com/jero/modules/docking/hiwork/entity/HiworkSystemMsg.java new file mode 100644 index 00000000..04bfece7 --- /dev/null +++ b/laws-modules-docking/src/main/java/com/jero/modules/docking/hiwork/entity/HiworkSystemMsg.java @@ -0,0 +1,35 @@ +package com.jero.modules.docking.hiwork.entity; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +/** + * @Author: liao + * @Date: 2023/10/13 17:49 + * @Description: 统一消息集成-系统消息 + */ +@Data +@Accessors(chain = true) +@EqualsAndHashCode(callSuper = false) +@ApiModel(value="统一消息集成-系统消息", description="统一消息集成-系统消息") +public class HiworkSystemMsg { + @ApiModelProperty(value = "异构系统标识") + private String sysCode; + @ApiModelProperty(value = "发送人员编号") + private String sendCode; + @ApiModelProperty(value = "发送人员姓名") + private String sendName; + @ApiModelProperty(value = "消息类型 字典") + private String messageType; + @ApiModelProperty(value = "消息标题") + private String title; + @ApiModelProperty(value = "消息接收人 集合") + private JSONArray receiverList; + @ApiModelProperty(value = "消息体") + private JSONObject msg; +} diff --git a/laws-modules-docking/src/main/java/com/jero/modules/docking/hiwork/entity/HiworkTodo.java b/laws-modules-docking/src/main/java/com/jero/modules/docking/hiwork/entity/HiworkTodo.java new file mode 100644 index 00000000..892c59d3 --- /dev/null +++ b/laws-modules-docking/src/main/java/com/jero/modules/docking/hiwork/entity/HiworkTodo.java @@ -0,0 +1,76 @@ +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 processId; + @ApiModelProperty(value = "流程实例名称") + private String processName; + @ApiModelProperty(value = "流程类型,字典") + private String processType; + @ApiModelProperty(value = "任务id") + private String taskId; + @ApiModelProperty(value = "节点名称") + private String taskName; + @ApiModelProperty(value = "是否会签") + 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; + +} diff --git a/laws-modules-docking/src/main/java/com/jero/modules/docking/hiwork/entity/HiworkTodoAdd.java b/laws-modules-docking/src/main/java/com/jero/modules/docking/hiwork/entity/HiworkTodoAdd.java new file mode 100644 index 00000000..0c1c4a5e --- /dev/null +++ b/laws-modules-docking/src/main/java/com/jero/modules/docking/hiwork/entity/HiworkTodoAdd.java @@ -0,0 +1,43 @@ +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; + +/** + * @Author: liao + * @Date: 2023/10/16 17:23 + * @Description: 统一待办集成-添加 + */ +@Data +@Accessors(chain = true) +@EqualsAndHashCode(callSuper = false) +@ApiModel(value="统一待办集成-添加", description="统一待办集成-添加") +public class HiworkTodoAdd { + @ApiModelProperty(value = "标题") + private String title; + @ApiModelProperty(value = "任务id") + private String taskId; + @ApiModelProperty(value = "流程类型,字典") + private String processType; + @ApiModelProperty(value = "是否会签") + private Integer isCounterSignature; + @ApiModelProperty(value = "节点编号") + private String nodeNumber; + @ApiModelProperty(value = "跳转链接") + private String jumpLink; + @ApiModelProperty(value = "APP跳转链接") + private String appJumpLink; + @ApiModelProperty(value = "创建人id") + private String creatorId; + @ApiModelProperty(value = "接收人id") + private String recipientId; + @ApiModelProperty(value = "截止时间") + private Long endTime; + @ApiModelProperty(value = "业务主键") + private String businessId; + @ApiModelProperty(value = "待办、已办(1、待办 2已办 3结束 6 删除)") + private String isTodo; +} diff --git a/laws-modules-docking/src/main/java/com/jero/modules/docking/hiwork/enums/IsTodoEnum.java b/laws-modules-docking/src/main/java/com/jero/modules/docking/hiwork/enums/IsTodoEnum.java new file mode 100644 index 00000000..e90dc76d --- /dev/null +++ b/laws-modules-docking/src/main/java/com/jero/modules/docking/hiwork/enums/IsTodoEnum.java @@ -0,0 +1,25 @@ +package com.jero.modules.docking.hiwork.enums; + +/** + * @Author: liao + * @Date: 2023/10/13 15:05 + * @Description: 待办、已办 + */ +public enum IsTodoEnum { + TODO( "待办", "1"), + DONE("已办", "2"), + FINISH("结束", "3"), + DEL("删除", "6") + ; + + String name; + String value; + + IsTodoEnum(String name, String value) { + this.name = name; + this.value = value; + } + + public String getName() {return name;} + public String getValue() {return value;} +} diff --git a/laws-modules-docking/src/main/java/com/jero/modules/docking/hiwork/service/IHiworkMsgService.java b/laws-modules-docking/src/main/java/com/jero/modules/docking/hiwork/service/IHiworkMsgService.java new file mode 100644 index 00000000..850740e4 --- /dev/null +++ b/laws-modules-docking/src/main/java/com/jero/modules/docking/hiwork/service/IHiworkMsgService.java @@ -0,0 +1,32 @@ +package com.jero.modules.docking.hiwork.service; + +import java.util.List; + +/** + * @Author: liao + * @Date: 2023/10/16 15:18 + * @Description: 统一消息集成 + */ +public interface IHiworkMsgService { + + /** + * @Author: liao + * @Date: 2023/10/16 15:32 + * @Description: 发送钉钉消息 + * senderIdList:发送人员id集合 + * content:文本内容 + **/ + void sendDingDingMsg(List senderIdList, String content); + + /** + * @Author: liao + * @Date: 2023/10/16 16:11 + * @Description: 发送系统消息 + * senderId:发送人员id + * receiverIdList:消息接收人id集合 + * messageType:消息类型 字典 + * title:消息标题 + * content:消息内容 + **/ + void sendSystemMsg(String senderId, List receiverIdList, String messageType, String title, String content); +} diff --git a/laws-modules-docking/src/main/java/com/jero/modules/docking/hiwork/service/IHiworkTodoService.java b/laws-modules-docking/src/main/java/com/jero/modules/docking/hiwork/service/IHiworkTodoService.java new file mode 100644 index 00000000..3907db32 --- /dev/null +++ b/laws-modules-docking/src/main/java/com/jero/modules/docking/hiwork/service/IHiworkTodoService.java @@ -0,0 +1,21 @@ +package com.jero.modules.docking.hiwork.service; + +import com.jero.modules.docking.hiwork.entity.HiworkTodoAdd; + +import java.util.List; + +/** + * @Author: liao + * @Date: 2023/10/13 14:23 + * @Description: 待办 + */ +public interface IHiworkTodoService { + + /** + * @Author: liao + * @Date: 2023/10/13 15:12 + * @Description: 统一待办集成 + **/ + void sendTodoTask(List hiworkTodoAddList); + +} diff --git a/laws-modules-docking/src/main/java/com/jero/modules/docking/hiwork/service/impl/HiworkMsgServiceImpl.java b/laws-modules-docking/src/main/java/com/jero/modules/docking/hiwork/service/impl/HiworkMsgServiceImpl.java new file mode 100644 index 00000000..1663e2a6 --- /dev/null +++ b/laws-modules-docking/src/main/java/com/jero/modules/docking/hiwork/service/impl/HiworkMsgServiceImpl.java @@ -0,0 +1,129 @@ +package com.jero.modules.docking.hiwork.service.impl; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.jero.common.exception.JeroBootException; +import com.jero.modules.docking.hiwork.entity.HiworkDingDingMsg; +import com.jero.modules.docking.hiwork.entity.HiworkSystemMsg; +import com.jero.modules.docking.hiwork.service.IHiworkMsgService; +import com.jero.modules.docking.hiwork.util.HiworkPostUtil; +import com.jero.modules.laws.common.constant.ResultCommon; +import com.jero.modules.system.entity.SysUser; +import com.jero.modules.system.service.ISysUserService; +import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +/** + * @Author: liao + * @Date: 2023/10/16 15:18 + * @Description: 统一消息集成 + */ +@Service +public class HiworkMsgServiceImpl implements IHiworkMsgService { + + @Autowired + private HiworkPostUtil hiworkPostUtil; + @Autowired + private ISysUserService sysUserService; + + private final static String TEXT = "text"; // 消息类型-文本 + private final static String MSG_TYPE = "msgtype"; // 消息类型 + private final static String CONTENT = "content"; // 消息内容 + + /** + * @Author: liao + * @Date: 2023/10/16 15:32 + * @Description: 发送钉钉消息 + * senderIdList:发送人员id集合 + * content:文本内容 + **/ + @Override + public void sendDingDingMsg(List senderIdList, String content) { + HiworkDingDingMsg hiworkDingDingMsg = new HiworkDingDingMsg(); + // 异步系统标识 + hiworkDingDingMsg.setSysCode(HiworkPostUtil.getSysCode()); + + if (CollectionUtils.isEmpty(senderIdList)) { + throw new JeroBootException(ResultCommon.EMPTY_COMMON, "senderIdList"); + } + List senderUserList = sysUserService.listByIds(senderIdList); + List usernameList = senderUserList.stream().map(SysUser::getUsername).collect(Collectors.toList()); + // 发送人员id(工号以英文逗号分隔) + hiworkDingDingMsg.setUseridList(StringUtils.join(usernameList, ",")); + + // 消息体 + JSONObject msgJsonObject = new JSONObject(); + msgJsonObject.put(MSG_TYPE, TEXT); + JSONObject textJsonObject = new JSONObject(); + textJsonObject.put(CONTENT, content); + msgJsonObject.put(TEXT, textJsonObject); + hiworkDingDingMsg.setMsg(msgJsonObject); + + hiworkPostUtil.postDingDingMsg(hiworkDingDingMsg); + } + + /** + * @Author: liao + * @Date: 2023/10/16 16:12 + * @Description: 发送系统消息 + * senderId:发送人员id + * receiverIdList:消息接收人id集合 + * messageType:消息类型 字典 + * title:消息标题 + * content:消息内容 + **/ + @Override + public void sendSystemMsg(String senderId, List receiverIdList, String messageType, String title, String content) { + HiworkSystemMsg hiworkSystemMsg = new HiworkSystemMsg(); + + // 异步系统标识 + hiworkSystemMsg.setSysCode(HiworkPostUtil.getSysCode()); + + if (StringUtils.isBlank(senderId)) { + throw new JeroBootException(ResultCommon.EMPTY_COMMON, "senderId"); + } + + SysUser senderUser = sysUserService.getById(senderId); + // 发送人员编号 + hiworkSystemMsg.setSendCode(senderUser.getUsername()); + // 发送人员姓名 + hiworkSystemMsg.setSendName(senderUser.getRealname()); + // 消息类型 + hiworkSystemMsg.setMessageType(messageType); + // 消息标题 + hiworkSystemMsg.setTitle(title); + + if (CollectionUtils.isEmpty(receiverIdList)) { + throw new JeroBootException(ResultCommon.EMPTY_COMMON, "receiverIdList"); + } + List receiverUserList = sysUserService.listByIds(receiverIdList); + JSONArray jsonArray = new JSONArray(); + receiverUserList.forEach(receiverUser -> { + Map receiverMap = new HashMap<>(); + // 人员编号 + receiverMap.put("employeeNo", receiverUser.getUsername()); + // 人员名称 + receiverMap.put("userName", receiverUser.getRealname()); + jsonArray.add(receiverMap); + }); + // 消息接收人 集合 + hiworkSystemMsg.setReceiverList(jsonArray); + + // 消息体 + JSONObject msgJsonObject = new JSONObject(); + msgJsonObject.put(MSG_TYPE, TEXT); + JSONObject textJsonObject = new JSONObject(); + textJsonObject.put(CONTENT, content); + msgJsonObject.put(TEXT, textJsonObject); + hiworkSystemMsg.setMsg(msgJsonObject); + + hiworkPostUtil.postSystemMsg(hiworkSystemMsg); + } +} diff --git a/laws-modules-docking/src/main/java/com/jero/modules/docking/hiwork/service/impl/HiworkTodoServiceImpl.java b/laws-modules-docking/src/main/java/com/jero/modules/docking/hiwork/service/impl/HiworkTodoServiceImpl.java new file mode 100644 index 00000000..4cea3c7d --- /dev/null +++ b/laws-modules-docking/src/main/java/com/jero/modules/docking/hiwork/service/impl/HiworkTodoServiceImpl.java @@ -0,0 +1,118 @@ +package com.jero.modules.docking.hiwork.service.impl; + +import com.jero.common.exception.JeroBootException; +import com.jero.modules.docking.hiwork.entity.HiworkTodoAdd; +import com.jero.modules.docking.hiwork.service.IHiworkTodoService; +import com.jero.modules.docking.hiwork.util.HiworkPostUtil; +import com.jero.modules.docking.hiwork.entity.HiworkTodo; +import com.jero.modules.laws.common.constant.ResultCommon; +import com.jero.modules.system.entity.SysUser; +import com.jero.modules.system.service.ISysUserService; +import org.activiti.engine.RuntimeService; +import org.activiti.engine.TaskService; +import org.activiti.engine.runtime.ProcessInstance; +import org.activiti.engine.task.Task; +import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.ArrayList; +import java.util.List; + +/** + * @Author: liao + * @Date: 2023/10/13 14:23 + * @Description: 待办 + */ +@Service +public class HiworkTodoServiceImpl implements IHiworkTodoService { + + @Autowired + private ISysUserService sysUserService; + @Autowired + private TaskService taskService; + @Autowired + private RuntimeService runtimeService; + @Autowired + private HiworkPostUtil hiworkPostUtil; + + /** + * @Author: liao + * @Date: 2023/10/13 15:12 + * @Description: 统一待办集成 + **/ + @Override + public void sendTodoTask(List hiworkTodoAddList) { + if (CollectionUtils.isEmpty(hiworkTodoAddList)) { + throw new JeroBootException(ResultCommon.EMPTY_COMMON, "hiworkTodoAddList"); + } + + List hiworkTodoList = new ArrayList<>(); + hiworkTodoAddList.forEach(hiworkTodoAdd -> { + HiworkTodo hiworkTodo = new HiworkTodo(); + // 异步系统标识 + hiworkTodo.setSysCode(HiworkPostUtil.getSysCode()); + // 标题 + hiworkTodo.setNoticeTitle(hiworkTodoAdd.getTitle()); + + if (StringUtils.isBlank(hiworkTodoAdd.getTaskId())) { + throw new JeroBootException(ResultCommon.EMPTY_COMMON, "taskId"); + } + Task task = taskService.createTaskQuery().taskId(hiworkTodoAdd.getTaskId()).singleResult(); + ProcessInstance processInstance = runtimeService.createProcessInstanceQuery() + .processInstanceId(task.getProcessInstanceId()).singleResult(); + + // 流程实例id + hiworkTodo.setProcessId(processInstance.getId()); + // 流程实例名称 + hiworkTodo.setProcessName(processInstance.getName()); + // 流程类型,字典 + hiworkTodo.setProcessType(hiworkTodoAdd.getProcessType()); + // 任务id + hiworkTodo.setTaskId(hiworkTodoAdd.getTaskId()); + // 节点名称 + hiworkTodo.setTaskName(task.getName()); + // 是否会签 + hiworkTodo.setMultiInstance(hiworkTodoAdd.getIsCounterSignature()); + // 节点编号 + hiworkTodo.setNodeBusiCode(hiworkTodoAdd.getNodeNumber()); + // 跳转链接 + hiworkTodo.setBusinessLink(hiworkTodoAdd.getJumpLink()); + // APP跳转链接 + hiworkTodo.setAppBusinessLink(hiworkTodoAdd.getAppJumpLink()); + + if (StringUtils.isBlank(hiworkTodoAdd.getCreatorId())) { + throw new JeroBootException(ResultCommon.EMPTY_COMMON, "creatorId"); + } + SysUser creatorUser = sysUserService.getById(hiworkTodoAdd.getCreatorId()); + // 创建人code + hiworkTodo.setCreateUserCode(creatorUser.getUsername()); + // 创建人姓名 + hiworkTodo.setCreateUserName(creatorUser.getRealname()); + + if (StringUtils.isBlank(hiworkTodoAdd.getRecipientId())) { + throw new JeroBootException(ResultCommon.EMPTY_COMMON, "recipientId"); + } + SysUser recipientUser = sysUserService.getById(hiworkTodoAdd.getRecipientId()); + // 接收人id + hiworkTodo.setUserId(recipientUser.getId()); + // 接收人code + hiworkTodo.setUserCode(recipientUser.getUsername()); + // 接收人姓名 + hiworkTodo.setUserName(recipientUser.getRealname()); + + // 截止时间 + hiworkTodo.setDueTime(hiworkTodoAdd.getEndTime()); + // 业务主键 + hiworkTodo.setBid(hiworkTodoAdd.getBusinessId()); + // 待办、已办 + hiworkTodo.setIsTodo(hiworkTodoAdd.getIsTodo()); + + hiworkTodoList.add(hiworkTodo); + }); + + // 远程调用 + hiworkPostUtil.postTodo(hiworkTodoList); + } +} diff --git a/laws-modules-docking/src/main/java/com/jero/modules/docking/hiwork/util/HiworkPostUtil.java b/laws-modules-docking/src/main/java/com/jero/modules/docking/hiwork/util/HiworkPostUtil.java new file mode 100644 index 00000000..c1cd8b2e --- /dev/null +++ b/laws-modules-docking/src/main/java/com/jero/modules/docking/hiwork/util/HiworkPostUtil.java @@ -0,0 +1,122 @@ +package com.jero.modules.docking.hiwork.util; + +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.HiworkDingDingMsg; +import com.jero.modules.docking.hiwork.entity.HiworkSystemMsg; +import org.springframework.beans.factory.annotation.Autowired; +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; + +/** + * @Author: liao + * @Date: 2023/10/13 16:55 + * @Description: Hiwork集成 + */ +@Component +public class HiworkPostUtil { + @Autowired + private RestTemplate restTemplate; + @Value("${hiwork.ip}") + private String ip; + @Value("${hiwork.todoUrl}") + private String todoUrl; + @Value("${hiwork.messageUrl}") + private String messageUrl; + + // 异构系统标识 + private static String sysCode; + + @Value("${hiwork.sysCode}") + public void setSysCode(String sysCode) { + HiworkPostUtil.sysCode = sysCode; + } + + public static String getSysCode() { + return sysCode; + } + + /** + * @Author: liao + * @Date: 2023/10/13 17:45 + * @Description: 远程调用Hiwork + **/ + private void postHiwork(String jsonString, String url) { + // 设置请求头 + HttpHeaders headers = new HttpHeaders(); + headers.setContentType(MediaType.APPLICATION_JSON); + + HttpEntity requestEntity = new HttpEntity<>(jsonString, headers); + + // 发送 POST 请求并获取响应 + ResponseEntity response = restTemplate.postForEntity(url, requestEntity, HiworkResult.class); + + // 处理响应数据 + if (response.getStatusCode().is2xxSuccessful()) { + HiworkResult hiworkResult = response.getBody(); + if (!hiworkResult.getSuccess()) { + throw new JeroBootException("Hiwork:" + hiworkResult.getMsg()); + } + } else { + throw new JeroBootException("Hiwork: request failed with status code: " + response.getStatusCode()); + } + } + + /** + * @Author: liao + * @Date: 2023/10/13 17:45 + * @Description: 统一待办集成远程调用 + **/ + public void postTodo(List hiworkTodoList) { + ObjectMapper objectMapper = new ObjectMapper(); + String jsonString; + try { + jsonString = objectMapper.writeValueAsString(hiworkTodoList); + } catch (JsonProcessingException e) { + throw new JeroBootException("JSON string format conversion error"); + } + postHiwork(jsonString, ip + todoUrl); + } + + /** + * @Author: liao + * @Date: 2023/10/13 17:45 + * @Description: 统一消息集成远程调用-钉钉消息 + **/ + public void postDingDingMsg(HiworkDingDingMsg hiworkDingDingMsg) { + ObjectMapper objectMapper = new ObjectMapper(); + String jsonString; + try { + jsonString = objectMapper.writeValueAsString(hiworkDingDingMsg); + } catch (JsonProcessingException e) { + throw new JeroBootException("JSON string format conversion error"); + } + postHiwork(jsonString, ip + messageUrl); + } + + /** + * @Author: liao + * @Date: 2023/10/13 17:45 + * @Description: 统一消息集成远程调用-系统消息 + **/ + public void postSystemMsg(HiworkSystemMsg hiworkSystemMsg) { + ObjectMapper objectMapper = new ObjectMapper(); + String jsonString; + try { + jsonString = objectMapper.writeValueAsString(hiworkSystemMsg); + } catch (JsonProcessingException e) { + throw new JeroBootException("JSON string format conversion error"); + } + postHiwork(jsonString, ip + messageUrl); + } +} diff --git a/laws-single-startup/src/main/resources/application-dev.yml b/laws-single-startup/src/main/resources/application-dev.yml index 856e197a..0c77e741 100644 --- a/laws-single-startup/src/main/resources/application-dev.yml +++ b/laws-single-startup/src/main/resources/application-dev.yml @@ -374,4 +374,14 @@ iam: bimRemotePwd: srmsIam2023 # bimRemoteUser: bbcadmin # bimRemotePwd: P@ssw0rd - bpmcAppkey: test \ No newline at end of file + bpmcAppkey: test + +# Hiwork集成 +hiwork: + ip: http://task-test.sinotruk.com/ + # 异构系统标识 + sysCode: test + # 统一待办集成 + todoUrl: taskapi/task.basedata/integrationCall/workflowIntegration + # 统一消息集成 + messageUrl: taskapi/task.basedata/notice/noticeCalls/send \ No newline at end of file