|
@@ -1,7 +1,9 @@
|
|
package com.flow.job;
|
|
package com.flow.job;
|
|
|
|
|
|
import com.flow.entity.Notify;
|
|
import com.flow.entity.Notify;
|
|
|
|
+import com.flow.entity.User;
|
|
import com.flow.mapstruct.NotifyRowMapper;
|
|
import com.flow.mapstruct.NotifyRowMapper;
|
|
|
|
+import com.flow.mapstruct.UserRowMapper;
|
|
import dm.jdbc.filter.stat.json.JSONObject;
|
|
import dm.jdbc.filter.stat.json.JSONObject;
|
|
import lombok.extern.slf4j.Slf4j;
|
|
import lombok.extern.slf4j.Slf4j;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
@@ -13,11 +15,12 @@ import org.springframework.web.client.RestTemplate;
|
|
|
|
|
|
import java.time.LocalDateTime;
|
|
import java.time.LocalDateTime;
|
|
import java.time.format.DateTimeFormatter;
|
|
import java.time.format.DateTimeFormatter;
|
|
-import java.util.Arrays;
|
|
|
|
import java.util.Collections;
|
|
import java.util.Collections;
|
|
import java.util.List;
|
|
import java.util.List;
|
|
|
|
+import java.util.Map;
|
|
import java.util.regex.Matcher;
|
|
import java.util.regex.Matcher;
|
|
import java.util.regex.Pattern;
|
|
import java.util.regex.Pattern;
|
|
|
|
+import java.util.stream.Collectors;
|
|
|
|
|
|
/**
|
|
/**
|
|
*
|
|
*
|
|
@@ -63,16 +66,6 @@ public class SendUskyJob {
|
|
log.info("执行消息同步定时任务,结束时间:" + endTime.format(FORMATTER));
|
|
log.info("执行消息同步定时任务,结束时间:" + endTime.format(FORMATTER));
|
|
}
|
|
}
|
|
|
|
|
|
- // 查询未发送的消息
|
|
|
|
- public List<Notify> unSendUsky(LocalDateTime startTime, LocalDateTime endTime) {
|
|
|
|
- String sql = "SELECT * FROM sys_notify WHERE is_send_usky = 0 AND receiving_time BETWEEN ? AND ?";
|
|
|
|
- return jdbcTemplate.query(
|
|
|
|
- sql,
|
|
|
|
- new Object[]{startTime, endTime},
|
|
|
|
- new NotifyRowMapper()
|
|
|
|
- );
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
// 发送消息
|
|
// 发送消息
|
|
@Async
|
|
@Async
|
|
public void sendUsky(List<Notify> unSend) {
|
|
public void sendUsky(List<Notify> unSend) {
|
|
@@ -94,15 +87,22 @@ public class SendUskyJob {
|
|
break;
|
|
break;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ List<String> userNames = unSend.stream().map(Notify::getSender).collect(Collectors.toList());
|
|
|
|
+ Map<String, String> userNamesMap = unSendUser(userNames).stream()
|
|
|
|
+ .collect(Collectors.toMap(User::getUsername, User::getName));
|
|
|
|
+
|
|
JSONObject sendJson = new JSONObject()
|
|
JSONObject sendJson = new JSONObject()
|
|
.put("infoTypeName", "OA审批")
|
|
.put("infoTypeName", "OA审批")
|
|
.put("infoType", 3)
|
|
.put("infoType", 3)
|
|
- .put("infoTitle", send.getSender() + send.getSubject())
|
|
|
|
- .put("infoContent", extractContentInBrackets(send.getContent()))
|
|
|
|
|
|
+ .put("infoTitle", "OA审批")
|
|
|
|
+ .put("infoContent", userNamesMap.get(send.getSender()) + send.getSubject())
|
|
.put("userName", send.getSender())
|
|
.put("userName", send.getSender())
|
|
.put("userNames", Collections.singletonList(send.getReceiver()))
|
|
.put("userNames", Collections.singletonList(send.getReceiver()))
|
|
.put("id", send.getId())
|
|
.put("id", send.getId())
|
|
- .put("approvalResult", approvalResult);
|
|
|
|
|
|
+ .put("approvalResult", approvalResult)
|
|
|
|
+ .put("processName", send.getSubject())
|
|
|
|
+ .put("approvalNode", extractContentInBrackets(send.getContent()))
|
|
|
|
+ .put("realName", userNamesMap.get(send.getSender()));
|
|
|
|
|
|
String sendJsonString = sendJson.toString();
|
|
String sendJsonString = sendJson.toString();
|
|
log.info("准备发送 {} 的消息:{} ", send.getSender(), sendJsonString);
|
|
log.info("准备发送 {} 的消息:{} ", send.getSender(), sendJsonString);
|
|
@@ -120,6 +120,26 @@ public class SendUskyJob {
|
|
log.info("消息发送完成,成功数量:" + successCount + ",失败数量:" + failCount);
|
|
log.info("消息发送完成,成功数量:" + successCount + ",失败数量:" + failCount);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ // 查询未发送的消息
|
|
|
|
+ public List<Notify> unSendUsky(LocalDateTime startTime, LocalDateTime endTime) {
|
|
|
|
+ String sql = "SELECT * FROM sys_notify WHERE is_send_usky = 0 AND receiving_time BETWEEN ? AND ?";
|
|
|
|
+ return jdbcTemplate.query(
|
|
|
|
+ sql,
|
|
|
|
+ new Object[]{startTime, endTime},
|
|
|
|
+ new NotifyRowMapper()
|
|
|
|
+ );
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ // 查询未发送消息的用户名与真实姓名
|
|
|
|
+ public List<User> unSendUser(List<String> userNames) {
|
|
|
|
+ String sql = "SELECT username, name FROM sys_user WHERE username IN ?";
|
|
|
|
+ return jdbcTemplate.query(
|
|
|
|
+ sql,
|
|
|
|
+ new Object[]{userNames},
|
|
|
|
+ new UserRowMapper()
|
|
|
|
+ );
|
|
|
|
+ }
|
|
|
|
+
|
|
// 更新已发送消息同步状态
|
|
// 更新已发送消息同步状态
|
|
public void updateNotify(List<Notify> unSend) {
|
|
public void updateNotify(List<Notify> unSend) {
|
|
for (Notify send : unSend) {
|
|
for (Notify send : unSend) {
|