Jelajahi Sumber

基因定制项目执行

陈长荣 3 bulan lalu
induk
melakukan
6bb084de67

+ 3 - 2
jfcloud-gene-biz/src/main/java/com/github/jfcloud/gene/flow/controller/FlowController.java

@@ -17,6 +17,7 @@ import com.github.jfcloud.gene.flow.service.FlowInfoService;
 import com.github.jfcloud.gene.flow.vo.FlowAuditVo;
 import com.github.jfcloud.gene.flow.vo.FlowDetailVo;
 import com.github.jfcloud.gene.flow.vo.FlowPageVo;
+import com.github.jfcloud.gene.flow.vo.SynProjectVo;
 import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.tags.Tag;
 import javafx.util.Pair;
@@ -133,8 +134,8 @@ public class FlowController {
 
     @Operation(summary = "执行")
     @PostMapping("/execute/{id}")
-    public R execute(@PathVariable Long id) {
-        flowInfoService.execute(id);
+    public R execute(@PathVariable Long id, @RequestBody @Valid SynProjectVo vo) {
+        flowInfoService.execute(id, vo);
         return R.ok();
     }
 

+ 3 - 0
jfcloud-gene-biz/src/main/java/com/github/jfcloud/gene/flow/dto/FlowPageDto.java

@@ -12,6 +12,9 @@ public class FlowPageDto {
     @Schema(description = "流程id")
     private Long id;
 
+    @Schema(description = "科研id")
+    private Long kyId;
+
     /**
      * 项目名称
      */

+ 2 - 1
jfcloud-gene-biz/src/main/java/com/github/jfcloud/gene/flow/service/FlowInfoService.java

@@ -8,6 +8,7 @@ import com.github.jfcloud.gene.flow.entity.FlowInfo;
 import com.github.jfcloud.gene.flow.vo.FlowAuditVo;
 import com.github.jfcloud.gene.flow.vo.FlowDetailVo;
 import com.github.jfcloud.gene.flow.vo.FlowPageVo;
+import com.github.jfcloud.gene.flow.vo.SynProjectVo;
 
 public interface FlowInfoService extends IService<FlowInfo> {
 
@@ -63,7 +64,7 @@ public interface FlowInfoService extends IService<FlowInfo> {
      *
      * @param id
      */
-    void execute(Long id);
+    void execute(Long id, SynProjectVo vo);
 
     /**
      * 生成文档

+ 32 - 1
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.common.core.util.R;
 import com.github.jfcloud.common.data.datascope.DataScope;
 import com.github.jfcloud.common.holder.RequestHolder;
 import com.github.jfcloud.gene.cache.UserIdNameCache;
@@ -35,6 +36,7 @@ import com.github.jfcloud.gene.flow.service.NotifyService;
 import com.github.jfcloud.gene.flow.vo.FlowAuditVo;
 import com.github.jfcloud.gene.flow.vo.FlowDetailVo;
 import com.github.jfcloud.gene.flow.vo.FlowPageVo;
+import com.github.jfcloud.gene.flow.vo.SynProjectVo;
 import com.github.jfcloud.gene.form.dto.StrainCustomDto;
 import com.github.jfcloud.gene.form.dto.StrainPurificationInfoDto;
 import com.github.jfcloud.gene.form.entity.StrainCustomInfo;
@@ -43,6 +45,8 @@ import com.github.jfcloud.gene.form.service.StrainCustomInfoService;
 import com.github.jfcloud.gene.form.service.StrainPurificationInfoService;
 import com.github.jfcloud.gene.util.WordDataService;
 import com.github.jfcloud.gene.util.WordUtil;
+import com.github.jfcloud.project.api.dto.ProjectFeignDTO;
+import com.github.jfcloud.project.api.feign.RemoteProjectService;
 import lombok.RequiredArgsConstructor;
 import lombok.SneakyThrows;
 import lombok.extern.slf4j.Slf4j;
@@ -71,6 +75,7 @@ public class FlowInfoServiceImpl extends ServiceImpl<FlowInfoMapper, FlowInfo> i
     private final WordDataService wordDataService;
     private final FileInfoService fileInfoService;
     private final FlowFileVersionService fileVersionService;
+    private final RemoteProjectService remoteProjectService;
 
     @Override
     public Page<FlowPageDto> getPage(FlowPageVo vo) {
@@ -280,8 +285,34 @@ public class FlowInfoServiceImpl extends ServiceImpl<FlowInfoMapper, FlowInfo> i
     }
 
     @Override
-    public void execute(Long id) {
+    public void execute(Long id, SynProjectVo vo) {
+        FlowInfo flowInfo = getById(id);
+        Assert.notNull(flowInfo, "基因定制流程不存在");
+        Assert.isTrue(GeneStatusEnum.COMPLETED.getStatus().equals(flowInfo.getStatus()), "基因定制流程非完成状态");
+        Assert.isNull(flowInfo.getKyId(), "基因定制流程已执行");
+
+        //推送数据到科研项目,并得到科研项目id
+        ProjectFeignDTO projectFeignDTO = new ProjectFeignDTO();
+        projectFeignDTO.setName(flowInfo.getProjectName());
+        projectFeignDTO.setLeader(vo.getProjectLeader());
+        projectFeignDTO.setProjectType(vo.getApprovalType());
+
+        //推送申请人nickname
+        String nickname = userIdNameCache.getNicknameByUserId(vo.getProjectLeader());
+        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();
     }
 
     /**

+ 16 - 0
jfcloud-gene-biz/src/main/java/com/github/jfcloud/gene/flow/vo/SynProjectVo.java

@@ -0,0 +1,16 @@
+package com.github.jfcloud.gene.flow.vo;
+
+import lombok.Data;
+
+import javax.validation.constraints.NotNull;
+import java.io.Serializable;
+
+@Data
+public class SynProjectVo implements Serializable {
+
+    @NotNull(message = "请选择项目负责人")
+    private Long projectLeader;
+
+    @NotNull(message = "请选择项目类型")
+    private Long approvalType;
+}