Преглед изворни кода

modify:

1. 全流程提醒;
tags/24102401
WendyYang пре 2 месеци
родитељ
комит
1832125d57
11 измењених фајлова са 179 додато и 25 уклоњено
  1. +21
    -0
      hz-pm-api/src/main/java/com/hz/pm/api/common/model/dingtalk/AbstractDingTalkMsg.java
  2. +41
    -0
      hz-pm-api/src/main/java/com/hz/pm/api/common/model/dingtalk/DingTalkMarkdownMsgDTO.java
  3. +48
    -0
      hz-pm-api/src/main/java/com/hz/pm/api/common/util/DingTalkMsgClient.java
  4. +2
    -0
      hz-pm-api/src/main/java/com/hz/pm/api/external/MhApiClient.java
  5. +1
    -0
      hz-pm-api/src/main/java/com/hz/pm/api/external/model/dto/MhZwddWorkNoticeDTO.java
  6. +2
    -0
      hz-pm-api/src/main/java/com/hz/pm/api/external/todo/MHTodoClient.java
  7. +58
    -24
      hz-pm-api/src/main/java/com/hz/pm/api/external/todo/enumerization/MHTodoTypeEnum.java
  8. +1
    -0
      hz-pm-api/src/main/java/com/hz/pm/api/scheduler/listener/MhTodoSendListener.java
  9. +3
    -0
      hz-pm-api/src/main/java/com/hz/pm/api/scheduler/listener/UserTaskCreateOrFinishListener.java
  10. +1
    -0
      hz-pm-api/src/main/java/com/hz/pm/api/scheduler/task/DeclaredRecordReminderTask.java
  11. +1
    -1
      hz-pm-api/src/main/resources/application-prod.yml

+ 21
- 0
hz-pm-api/src/main/java/com/hz/pm/api/common/model/dingtalk/AbstractDingTalkMsg.java Прегледај датотеку

@@ -0,0 +1,21 @@
package com.hz.pm.api.common.model.dingtalk;

import lombok.Data;

/**
* <p>
* AbstractDingTalkMsg
* </p>
*
* @author WendyYang
* @since 19:31 2023/3/14
*/
@Data
public abstract class AbstractDingTalkMsg {

/**
* msgtype:消息类型
*/
private String msgtype;

}

+ 41
- 0
hz-pm-api/src/main/java/com/hz/pm/api/common/model/dingtalk/DingTalkMarkdownMsgDTO.java Прегледај датотеку

@@ -0,0 +1,41 @@
package com.hz.pm.api.common.model.dingtalk;

import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;

/**
* <p>
* DingTalkMarkdownPo
* </p>
*
* @author WendyYang
* @since 13:01 2022/11/7
*/
@Data
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
public class DingTalkMarkdownMsgDTO extends AbstractDingTalkMsg {

/**
* markdown
*/
private MarkdownDTO markdown;

/**
* MarkdownDTO
*/
@Data
@NoArgsConstructor
public static class MarkdownDTO {
/**
* title
*/
private String title;
/**
* text
*/
private String text;
}

}

+ 48
- 0
hz-pm-api/src/main/java/com/hz/pm/api/common/util/DingTalkMsgClient.java Прегледај датотеку

@@ -0,0 +1,48 @@
package com.hz.pm.api.common.util;

import cn.hutool.http.HttpRequest;
import cn.hutool.http.HttpResponse;
import cn.hutool.http.HttpUtil;
import cn.hutool.json.JSONUtil;
import com.hz.pm.api.common.model.dingtalk.DingTalkMarkdownMsgDTO;
import com.hz.pm.api.common.model.dingtalk.DingTalkMarkdownMsgDTO.MarkdownDTO;
import lombok.extern.slf4j.Slf4j;

/**
* <p>
* DIngTalkMsgClient
* </p>
*
* @author WendyYang
* @since 09:38 2024/10/21
*/
@Slf4j
public class DingTalkMsgClient {

private DingTalkMsgClient() {
}

private static final String WEB_HOOK = "https://oapi.dingtalk.com/robot/send?access_token=176a8522d9662b231f873f68725e973762d600245ce5fd5ece8ced1be7a6111c";

public static void send(String receiver, String content, Object extraParam) {
HttpRequest request = HttpUtil.createPost(WEB_HOOK);
DingTalkMarkdownMsgDTO msg = new DingTalkMarkdownMsgDTO();
MarkdownDTO markdown = new MarkdownDTO();
markdown.setTitle("模拟待办发送");
StringBuilder msgObj = new StringBuilder()
.append("#### 接收人\n")
.append(receiver)
.append("\n#### 待办或提醒内容")
.append("\n").append(content)
.append("\n#### 拓展参数")
.append(JSONUtil.toJsonStr(extraParam));
markdown.setText(JSONUtil.toJsonStr(msgObj));
msg.setMarkdown(markdown);
msg.setMsgtype("markdown");
request.body(JSONUtil.toJsonStr(msg));
try (HttpResponse response = request.executeAsync()) {
log.info("模拟待办发送:{}", response);
}
}

}

+ 2
- 0
hz-pm-api/src/main/java/com/hz/pm/api/external/MhApiClient.java Прегледај датотеку

@@ -7,6 +7,7 @@ import cn.hutool.core.util.StrUtil;
import cn.hutool.http.HttpUtil;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import com.hz.pm.api.common.util.DingTalkMsgClient;
import com.hz.pm.api.common.util.EnvironmentUtil;
import com.hz.pm.api.external.model.dto.*;
import com.hz.pm.api.external.model.enumeration.MhDictType;
@@ -134,6 +135,7 @@ public class MhApiClient {
public boolean sendZwddWorkNotice(MhZwddWorkNoticeDTO notice) {
log.info("发送浙政钉工作通知:{}", notice);
if (environmentUtil.isDevEnv()) {
DingTalkMsgClient.send(notice.getTargetUserName(), notice.getContent(), null);
return Boolean.TRUE;
}
notice.setClientId(zwddWorkNoticeClientId);


+ 1
- 0
hz-pm-api/src/main/java/com/hz/pm/api/external/model/dto/MhZwddWorkNoticeDTO.java Прегледај датотеку

@@ -38,5 +38,6 @@ public class MhZwddWorkNoticeDTO {
*/
private String targetUser;

private transient String targetUserName;

}

+ 2
- 0
hz-pm-api/src/main/java/com/hz/pm/api/external/todo/MHTodoClient.java Прегледај датотеку

@@ -10,6 +10,7 @@ import com.alibaba.fastjson.TypeReference;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.hz.pm.api.common.util.DingTalkMsgClient;
import com.hz.pm.api.common.util.EnvironmentUtil;
import com.hz.pm.api.external.todo.dto.MhTodoRequestDTO;
import com.hz.pm.api.external.todo.dto.MhTodoRetDTO;
@@ -77,6 +78,7 @@ public class MHTodoClient {
.build();
log.info("发送信产待办:{}", todoReq);
if (environmentUtil.isDevEnv()) {
DingTalkMsgClient.send(receiver.getUsername(), content,paramObjs);
return;
}
String url = mhApiHost + TODO_ADD;


+ 58
- 24
hz-pm-api/src/main/java/com/hz/pm/api/external/todo/enumerization/MHTodoTypeEnum.java Прегледај датотеку

@@ -18,30 +18,64 @@ public enum MHTodoTypeEnum {

SELF_TEST_APPLY("系统自测", null,
"您单位的【%s】开工文件备案已通过,可在过程管理-适配改造中进行提交系统自测信息的操作。",
"【%s】系统自测信息需要您处理,请及时处理", null, null),
TEST_VALID_APPLY("监理核实验证", null, "您单位的【%s】系统自测备案已通过,可在过程管理-适配改造中进行填写监理核实验证信息的操作。",
"【%s】监理核实验证需要您处理,请及时处理", null, null),
FINAL_INSPECT_APPLY("终验申请", null, "您单位的【%s】已完成初验备案,可在过程管理-终验申请中进行终验申请的操作。",
"【%s】终验申请需要您处理,请及时处理", null, null),
ADAPTION_APPLY("上传开工文件", null, "您单位的【%s】已完成实施计划填写,可在过程管理-适配改造中进行上传开工文件的操作。",
"【%s】上传开工文件需要您处理,请及时处理", null, null),
PROJECT_REVIEW_APPLY("项目复核", null, "您单位的【%s】的专家评审已通过,可在过程管理-项目评审-项目复核中进行提交复核的操作。",
"【%s】项目复核需要您处理,请及时处理", null, null),
WITHOUT_BUILD_SCHEME("上传建设方案盖章件", null, "您单位的【%s】的合规性审査已通过,可在过程管理-项目评审-专家评审中进行上传建设方案盖章件的操作。",
"【%s】上传建设方案盖章件需要您处理,请及时处理", null, null),
WITHOUT_PURCHASE_NOTICE("发布采购公告", null, "您单位的【%s】立项备案已通过,可在过程管理-招标采购中进行发布采购公告的操作。",
"【%s】发布采购公告需要您处理,请及时处理", null, null),
WITHOUT_PURCHASE_CONTRACT("采购&合同信息备案", null, "您单位的【%s】已完成发布采购公告,可在过程管理-招标采购中进行采购&合同信息备案的操作。",
"【%s】采购&合同信息备案需要您处理,请及时处理", null, null),
WITHOUT_OPERATION_PLAN("实施计划填写", null, "您单位的【%s】已完成采购&合同信息备案,可在过程管理-适配改造中进行填写实施计划的操作。",
"【%s】实施计划需要您处理,请及时处理", null, null),
WITHOUT_FIRST_ACCEPT_RECORD("初验备案", null, "您单位的【%s】已完成适配改造,可在过程管理-初验申请中进行初验备案的操作。",
"【%s】初验备案需要您处理,请及时处理", null, null),
WITHOUT_ORG_CONFIRM("单位确认", null, "您单位的【%s】监理核实验证备案已通过,可在过程管理-适配改造中进行单位确认的操作。",
"【%s】单位确认需要您处理,请及时处理", null, null),
DECLARED_RECORD_APPLY("立项备案申请", null, "您单位的【%s】已下达资金,可在过程管理-项目立项中进行立项备案的操作。",
"【%s】立项备案需要您处理,请及时处理", null,
"mhProjectId=${mhProjectId}&status=${status}&projectCode=${projectCode}&projectId=${projectId}&userId=${userId}&userName=${userName}&path=${path}"),
"【%s】系统自测信息需要您处理,请及时处理",
"/declareManage/projectManages/adaptiveTransformation",
"instanceId=${instanceId}&projectId=${projectId}&nodeId=${nodeId}&taskId=${taskId}&bidId=${bizId}&userId=${userId}&userName=${userName}&path=${path}&activeName=1100"),
TEST_VALID_APPLY("监理核实验证", null,
"您单位的【%s】系统自测备案已通过,可在过程管理-适配改造中进行填写监理核实验证信息的操作。",
"【%s】监理核实验证需要您处理,请及时处理",
"/declareManage/projectManages/adaptiveTransformation",
"instanceId=${instanceId}&projectId=${projectId}&nodeId=${nodeId}&taskId=${taskId}&bidId=${bizId}&userId=${userId}&userName=${userName}&path=${path}&activeName=3100"),
FINAL_INSPECT_APPLY("终验申请", null,
"您单位的【%s】已完成初验备案,可在过程管理-终验申请中进行终验申请的操作。",
"【%s】终验申请需要您处理,请及时处理",
"/declareManage/projectManages/finalInspectionDeclare",
"instanceId=${instanceId}&projectId=${projectId}&nodeId=${nodeId}&taskId=${taskId}&bidId=${bizId}&userId=${userId}&userName=${userName}&path=${path}&activeName=401"),
ADAPTION_APPLY("上传开工文件", null,
"您单位的【%s】已完成实施计划填写,可在过程管理-适配改造中进行上传开工文件的操作。",
"【%s】上传开工文件需要您处理,请及时处理",
"/declareManage/projectManages/adaptiveTransformation",
"instanceId=${instanceId}&projectId=${projectId}&nodeId=${nodeId}&taskId=${taskId}&bidId=${bizId}&userId=${userId}&userName=${userName}&path=${path}&activeName=2100"),
PROJECT_REVIEW_APPLY("项目复核", null,
"您单位的【%s】的专家评审已通过,可在过程管理-项目评审-项目复核中进行提交复核的操作。",
"【%s】项目复核需要您处理,请及时处理",
"/declareManage/projectManages/projectRecheck",
"instanceId=${instanceId}&projectId=${projectId}&nodeId=${nodeId}&taskId=${taskId}&bidId=${bizId}&userId=${userId}&userName=${userName}&path=${path}&activeName=10040"),
WITHOUT_BUILD_SCHEME("上传建设方案盖章件", null,
"您单位的【%s】的合规性审査已通过,可在过程管理-项目评审-专家评审中进行上传建设方案盖章件的操作。",
"【%s】上传建设方案盖章件需要您处理,请及时处理",
"/declareManage/projectManages/expertReview",
"instanceId=${instanceId}&projectId=${projectId}&nodeId=${nodeId}&taskId=${taskId}&bidId=${bizId}&userId=${userId}&userName=${userName}&path=${path}&activeName=10050"),
WITHOUT_PURCHASE_NOTICE("发布采购公告", null,
"您单位的【%s】立项备案已通过,可在过程管理-招标采购中进行发布采购公告的操作。",
"【%s】发布采购公告需要您处理,请及时处理",
"/declareManage/projectManages/purchaseResults",
"instanceId=${instanceId}&projectId=${projectId}&nodeId=${nodeId}&taskId=${taskId}&bidId=${bizId}&userId=${userId}&userName=${userName}&path=${path}&activeName=20001"),
WITHOUT_PURCHASE_CONTRACT("采购&合同信息备案", null,
"您单位的【%s】已完成发布采购公告,可在过程管理-招标采购中进行采购&合同信息备案的操作。",
"【%s】采购&合同信息备案需要您处理,请及时处理",
"/declareManage/projectManages/purchaseResults",
"/instanceId=${instanceId}&projectId=${projectId}&nodeId=${nodeId}&taskId=${taskId}&bidId=${bizId}&userId=${userId}&userName=${userName}&path=${path}&activeName=101"),
WITHOUT_OPERATION_PLAN("实施计划填写", null,
"您单位的【%s】已完成采购&合同信息备案,可在过程管理-适配改造中进行填写实施计划的操作。",
"【%s】实施计划需要您处理,请及时处理",
"/declareManage/projectManages/adaptiveTransformation",
"instanceId=${instanceId}&projectId=${projectId}&nodeId=${nodeId}&taskId=${taskId}&bidId=${bizId}&userId=${userId}&userName=${userName}&path=${path}&activeName=103"),
WITHOUT_FIRST_ACCEPT_RECORD("初验备案", null,
"您单位的【%s】已完成适配改造,可在过程管理-初验申请中进行初验备案的操作。",
"【%s】初验备案需要您处理,请及时处理",
"/declareManage/projectManages/initialInspectionRecord",
"instanceId=${instanceId}&projectId=${projectId}&nodeId=${nodeId}&taskId=${taskId}&bidId=${bizId}&userId=${userId}&userName=${userName}&path=${path}&activeName=201"),
WITHOUT_ORG_CONFIRM("单位确认", null,
"您单位的【%s】监理核实验证备案已通过,可在过程管理-适配改造中进行单位确认的操作。",
"【%s】单位确认需要您处理,请及时处理",
"/declareManage/projectManages/adaptiveTransformation",
"instanceId=${instanceId}&projectId=${projectId}&nodeId=${nodeId}&taskId=${taskId}&bidId=${bizId}&userId=${userId}&userName=${userName}&path=${path}&activeName=104"),
DECLARED_RECORD_APPLY("立项备案申请", null,
"您单位的【%s】已下达资金,可在过程管理-项目立项中进行立项备案的操作。",
"【%s】立项备案需要您处理,请及时处理",
"/declareManage/projectManages/projectFiling",
"instanceId=${instanceId}&projectId=${projectId}&nodeId=${nodeId}&taskId=${taskId}&bidId=${bizId}&userId=${userId}&userName=${userName}&path=${path}&activeName=10022"),
/**
* 流程审批待办
*/


+ 1
- 0
hz-pm-api/src/main/java/com/hz/pm/api/scheduler/listener/MhTodoSendListener.java Прегледај датотеку

@@ -70,6 +70,7 @@ public class MhTodoSendListener {
MhZwddWorkNoticeDTO notice = MhZwddWorkNoticeDTO.builder()
.content(zwddMsg)
.title(nextStep.getVal())
.targetUserName(user.getRealName())
.targetUser(user.getMhUserId())
.build();
mhApiClient.sendZwddWorkNotice(notice);


+ 3
- 0
hz-pm-api/src/main/java/com/hz/pm/api/scheduler/listener/UserTaskCreateOrFinishListener.java Прегледај датотеку

@@ -176,6 +176,7 @@ public class UserTaskCreateOrFinishListener {
MhZwddWorkNoticeDTO notice = MhZwddWorkNoticeDTO.builder()
.content(zzdContent)
.title(todoType.getVal())
.targetUserName(assignee.getRealName())
.targetUser(assignee.getMhUserId())
.build();
mhApiClient.sendZwddWorkNotice(notice);
@@ -250,6 +251,7 @@ public class UserTaskCreateOrFinishListener {
MhZwddWorkNoticeDTO notice = MhZwddWorkNoticeDTO.builder()
.content(zzdContent)
.title(todoType.getVal())
.targetUserName(userFullInfo.getRealName())
.targetUser(userFullInfo.getMhUserId())
.build();
mhApiClient.sendZwddWorkNotice(notice);
@@ -271,6 +273,7 @@ public class UserTaskCreateOrFinishListener {
MhZwddWorkNoticeDTO notice = MhZwddWorkNoticeDTO.builder()
.content(zwddMsg)
.title(nextStep.getVal())
.targetUserName(userFullInfo.getRealName())
.targetUser(userFullInfo.getMhUserId())
.build();
mhApiClient.sendZwddWorkNotice(notice);


+ 1
- 0
hz-pm-api/src/main/java/com/hz/pm/api/scheduler/task/DeclaredRecordReminderTask.java Прегледај датотеку

@@ -132,6 +132,7 @@ public class DeclaredRecordReminderTask extends AbstractReminderTask {
MhZwddWorkNoticeDTO notice = MhZwddWorkNoticeDTO.builder()
.title(DECLARED_RECORD_APPLY.getVal())
.content(content)
.targetUserName(user.getRealName())
.targetUser(user.getMhUserId())
.build();
mhApiClient.sendZwddWorkNotice(notice);


+ 1
- 1
hz-pm-api/src/main/resources/application-prod.yml Прегледај датотеку

@@ -219,7 +219,7 @@ agent-login:
# 提醒任务
reminder-task:
declared-record:
open: true
open: false
cron: 0 30 8 * * ?
# 电话服务调用地址
mobile-call:


Loading…
Откажи
Сачувај