Răsfoiți Sursa

项目执行推送至动物中心,并发送钉钉通知

陈长荣 3 luni în urmă
părinte
comite
59a496f360

+ 4 - 14
jfcloud-gene-biz/pom.xml

@@ -59,6 +59,10 @@
       <version>k6.1.3</version>
     </dependency>
 
+    <dependency>
+      <groupId>com.github.jfcloud</groupId>
+      <artifactId>jfcloud-ac-project-api</artifactId>
+    </dependency>
   </dependencies>
 
   <build>
@@ -69,20 +73,6 @@
       </plugin>
     </plugins>
     <resources>
-<!--      <resource>-->
-<!--        <directory>src/main/resources</directory>-->
-<!--        <filtering>true</filtering>-->
-<!--        <includes>-->
-<!--          <include>**/*.properties</include>-->
-<!--          <include>**/*.xml</include>-->
-<!--          <include>**/*.yml</include>-->
-<!--          <include>**/*.yaml</include>-->
-<!--          <include>**/*.ftl</include>-->
-<!--          <include>**/*.html</include>-->
-<!--          <include>**/*.json</include>-->
-<!--        </includes>-->
-<!--      </resource>-->
-
       <resource>
         <directory>src/main/resources</directory>
         <filtering>true</filtering>

+ 12 - 0
jfcloud-gene-biz/src/main/java/com/github/jfcloud/gene/flow/service/NotifyService.java

@@ -1,9 +1,21 @@
 package com.github.jfcloud.gene.flow.service;
 
+import com.github.jfcloud.admin.api.sys.dto.message.MessageUserDTO;
+
+import java.util.List;
+
 public interface NotifyService {
 
     /**
      * 通知
      */
     void notify(Long flowId);
+
+    /**
+     * 发送钉钉消息
+     *
+     * @param msg
+     * @param users
+     */
+    void sendDingding(String msg, List<MessageUserDTO> users);
 }

+ 36 - 5
jfcloud-gene-biz/src/main/java/com/github/jfcloud/gene/flow/service/impl/FlowInfoServiceImpl.java

@@ -12,6 +12,7 @@ import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.github.jfcloud.admin.api.sys.dto.message.MessageUserDTO;
 import com.github.jfcloud.common.core.util.R;
 import com.github.jfcloud.common.data.datascope.DataScope;
 import com.github.jfcloud.common.holder.RequestHolder;
@@ -44,10 +45,13 @@ import com.github.jfcloud.gene.form.entity.StrainCustomInfo;
 import com.github.jfcloud.gene.form.entity.StrainPurificationInfo;
 import com.github.jfcloud.gene.form.service.StrainCustomInfoService;
 import com.github.jfcloud.gene.form.service.StrainPurificationInfoService;
+import com.github.jfcloud.gene.sys.service.DBSystemPropertiesService;
 import com.github.jfcloud.gene.util.WordDataService;
 import com.github.jfcloud.gene.util.WordUtil;
+import com.github.jfcloud.project.api.dto.LacmsProjectDTO;
 import com.github.jfcloud.project.api.dto.ProjectFeignDTO;
 import com.github.jfcloud.project.api.feign.RemoteProjectService;
+import com.github.jfcloud.project.api.feign.SubProjectFeign;
 import lombok.RequiredArgsConstructor;
 import lombok.SneakyThrows;
 import lombok.extern.slf4j.Slf4j;
@@ -65,6 +69,7 @@ import java.util.List;
 import java.util.Objects;
 import java.util.Optional;
 import java.util.stream.Collectors;
+import java.util.stream.Stream;
 
 @Slf4j
 @Service
@@ -79,7 +84,9 @@ public class FlowInfoServiceImpl extends ServiceImpl<FlowInfoMapper, FlowInfo> i
     private final FileInfoService fileInfoService;
     private final FlowFileVersionService fileVersionService;
     private final RemoteProjectService remoteProjectService;
+    private final SubProjectFeign subProjectFeign;
     private final FlowAuditService flowAuditService;
+    private final DBSystemPropertiesService systemPropertiesService;
 
     @Override
     public Page<FlowPageDto> getPage(FlowPageVo vo) {
@@ -304,17 +311,41 @@ public class FlowInfoServiceImpl extends ServiceImpl<FlowInfoMapper, FlowInfo> i
         projectFeignDTO.setLeaders(nickname);
 
         log.info("推送科研项目:flowId={}, param={}", id, JSON.toJSONString(projectFeignDTO));
-
         R<Long> longR = remoteProjectService.initProject(projectFeignDTO);
         if (!longR.isOk()) {
             log.error("projectId={}推送科研失败,{}", id, longR);
         }
         Assert.isTrue(longR.isOk(), "操作失败,科研" + longR);
         Long kyId = longR.getData();
-        new FlowInfo()
-                .setId(id)
-                .setKyId(kyId)
-                .updateById();
+        new FlowInfo().setId(id).setKyId(kyId).updateById();
+
+        //推送数据到动物中心,生成动物中心项目信息
+        LacmsProjectDTO lacmsProjectDTO = new LacmsProjectDTO();
+        lacmsProjectDTO.setKyId(kyId);
+        lacmsProjectDTO.setProjectName(flowInfo.getProjectName());
+        lacmsProjectDTO.setProjectLeader(vo.getProjectLeader());
+        lacmsProjectDTO.setPl(flowInfo.getProjectLeaderName());
+        lacmsProjectDTO.setEthicsCode(flowInfo.getApprovalNo());
+        log.info("推送动物中心:flowId={}, param={}", id, JSON.toJSONString(lacmsProjectDTO));
+        subProjectFeign.initProject(lacmsProjectDTO);
+
+        //通知相关人
+        String userIds = systemPropertiesService.getValue("gene.execute.id");
+        if (StrUtil.isNotBlank(userIds)) {
+            //钉钉通知
+            if (systemPropertiesService.getBooleanValue("gene.execute.dingding.enable")) {
+                List<MessageUserDTO> userList = Stream.of(userIds.split(","))
+                        .filter(StrUtil::isNotBlank)
+                        .map(x -> {
+                            MessageUserDTO messageUserDTO = new MessageUserDTO();
+                            messageUserDTO.setUserId(Long.parseLong(x));
+                            return messageUserDTO;
+                        })
+                        .collect(Collectors.toList());
+                String dingMsg = String.format("【基因定制/%s】【%s】已执行,请查看", flowInfo.getProjectName(), UserUtil.getNickName());
+                notifyService.sendDingding(dingMsg, userList);
+            }
+        }
     }
 
     /**

+ 12 - 11
jfcloud-gene-biz/src/main/java/com/github/jfcloud/gene/flow/service/impl/NotifyServiceImpl.java

@@ -1,5 +1,6 @@
 package com.github.jfcloud.gene.flow.service.impl;
 
+import cn.hutool.core.collection.CollUtil;
 import com.alibaba.fastjson.JSON;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.github.jfcloud.admin.api.sys.dto.message.MessageUserDTO;
@@ -19,7 +20,8 @@ import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
 
 import java.util.ArrayList;
-import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
 import java.util.Objects;
 
 @Slf4j
@@ -87,24 +89,23 @@ public class NotifyServiceImpl implements NotifyService {
 
         //查询是否需要钉钉通知
         String key = String.format("gene.%s.dingding.enable", flowInfo.getStatus());
-        if (Boolean.parseBoolean(systemPropertiesService.getValue(key))) {
+        if (systemPropertiesService.getBooleanValue(key)) {
             MessageUserDTO messageUserDTO = new MessageUserDTO();
             messageUserDTO.setUserId(userId);
-            sendDingding(dingMsg, messageUserDTO);
+            sendDingding(dingMsg, Collections.singletonList(messageUserDTO));
         }
 
         //查询是否需要邮件通知,目前邮件通知随钉钉消息一起发送
 //        key = String.format("gene.%s.email.enable", flowInfo.getStatus());
     }
 
-    /**
-     * 发送钉钉消息
-     *
-     * @param msg
-     * @param userList
-     */
-    private void sendDingding(String msg, MessageUserDTO... user) {
-        TextMessageParam param = new TextMessageParam(new ArrayList<>(Arrays.asList(user)), msg, "基因定制");
+    @Override
+    public void sendDingding(String msg, List<MessageUserDTO> users) {
+        if (CollUtil.isEmpty(users)) {
+            log.error("钉钉通知用户为空");
+            return;
+        }
+        TextMessageParam param = new TextMessageParam(new ArrayList<>(users), msg, "基因定制");
         log.info("【消息通知】发送:{}", JSON.toJSONString(param));
 
         try {

+ 2 - 0
jfcloud-gene-biz/src/main/java/com/github/jfcloud/gene/sys/service/DBSystemPropertiesService.java

@@ -7,5 +7,7 @@ public interface DBSystemPropertiesService extends IService<DBSystemProperties>
 
     String getValue(String key);
 
+    boolean getBooleanValue(String key);
+
     boolean equals(String key, String value);
 }

+ 5 - 0
jfcloud-gene-biz/src/main/java/com/github/jfcloud/gene/sys/service/impl/DBSystemPropertiesServiceImpl.java

@@ -25,6 +25,11 @@ public class DBSystemPropertiesServiceImpl extends ServiceImpl<DBSystemPropertie
         return properties.getPropValue();
     }
 
+    @Override
+    public boolean getBooleanValue(String key) {
+        return Boolean.parseBoolean(getValue(key));
+    }
+
     @Override
     public boolean equals(String key, String value) {
         return Objects.equals(getValue(key), value);