Bläddra i källkod

定制表单、净化扩繁新增编辑接口

陈长荣 9 månader sedan
förälder
incheckning
52c67d55f1

+ 4 - 30
jfcloud-gene-biz/src/main/java/com/github/jfcloud/gene/file/entity/FileInfo.java

@@ -1,16 +1,18 @@
 package com.github.jfcloud.gene.file.entity;
 
+import com.github.jfcloud.gene.common.entity.BaseEntity;
 import lombok.Data;
+import lombok.EqualsAndHashCode;
 
 import java.io.Serializable;
-import java.util.Date;
 
 /**
  * 文件信息
  * file_info
  */
+@EqualsAndHashCode(callSuper = true)
 @Data
-public class FileInfo implements Serializable {
+public class FileInfo extends BaseEntity implements Serializable {
     private static final long serialVersionUID = 1L;
     private Integer id;
     /**
@@ -29,32 +31,4 @@ public class FileInfo implements Serializable {
      * 文件地址
      */
     private String url;
-    /**
-     * 是否被删除
-     */
-    private String deleted;
-    /**
-     * 创建人
-     */
-    private String createBy;
-    /**
-     * 创建时间
-     */
-    private Date createTime;
-    /**
-     * 更新人
-     */
-    private String updateBy;
-    /**
-     * 更新时间
-     */
-    private Date updateTime;
-    /**
-     * 租户ID
-     */
-    private Long tenantId;
-    /**
-     * 部门ID
-     */
-    private Long deptId;
 }

+ 7 - 0
jfcloud-gene-biz/src/main/java/com/github/jfcloud/gene/form/controller/CustomController.java

@@ -2,9 +2,11 @@ package com.github.jfcloud.gene.form.controller;
 
 import com.github.jfcloud.common.core.util.R;
 import com.github.jfcloud.gene.form.dto.StrainCustomDto;
+import com.github.jfcloud.gene.form.service.StrainCustomInfoService;
 import com.github.jfcloud.gene.form.vo.StrainCustomVo;
 import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.tags.Tag;
+import lombok.RequiredArgsConstructor;
 import org.springframework.web.bind.annotation.*;
 
 import javax.validation.Valid;
@@ -12,8 +14,11 @@ import javax.validation.Valid;
 @Tag(name = "品系定制表单")
 @RestController
 @RequestMapping("/custom")
+@RequiredArgsConstructor
 public class CustomController {
 
+    private final StrainCustomInfoService strainCustomInfoService;
+
     @Operation(summary = "详情")
     @GetMapping("/{id}")
     public R<StrainCustomDto> info(@PathVariable Long id) {
@@ -23,12 +28,14 @@ public class CustomController {
     @Operation(summary = "新增")
     @PostMapping
     public R save(@Valid @RequestBody StrainCustomVo vo) {
+        strainCustomInfoService.saveForm(vo);
         return R.ok();
     }
 
     @Operation(summary = "编辑")
     @PutMapping("/{id}")
     public R update(@PathVariable Long id, @Valid @RequestBody StrainCustomVo vo) {
+        strainCustomInfoService.updateForm(id, vo);
         return R.ok();
     }
 }

+ 7 - 0
jfcloud-gene-biz/src/main/java/com/github/jfcloud/gene/form/controller/PurificationController.java

@@ -2,9 +2,11 @@ package com.github.jfcloud.gene.form.controller;
 
 import com.github.jfcloud.common.core.util.R;
 import com.github.jfcloud.gene.form.dto.StrainPurificationInfoDto;
+import com.github.jfcloud.gene.form.service.StrainPurificationInfoService;
 import com.github.jfcloud.gene.form.vo.StrainPurificationInfoVo;
 import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.tags.Tag;
+import lombok.RequiredArgsConstructor;
 import org.springframework.web.bind.annotation.*;
 
 import javax.validation.Valid;
@@ -12,8 +14,11 @@ import javax.validation.Valid;
 @Tag(name = "品系净化扩繁表单")
 @RestController
 @RequestMapping("/purification")
+@RequiredArgsConstructor
 public class PurificationController {
 
+    private final StrainPurificationInfoService purificationInfoService;
+
     @Operation(summary = "详情")
     @GetMapping("/{id}")
     public R<StrainPurificationInfoDto> info(@PathVariable Long id) {
@@ -23,12 +28,14 @@ public class PurificationController {
     @Operation(summary = "新增")
     @PostMapping
     public R save(@Valid @RequestBody StrainPurificationInfoVo vo) {
+        purificationInfoService.saveForm(vo);
         return R.ok();
     }
 
     @Operation(summary = "编辑")
     @PutMapping("/{id}")
     public R update(@PathVariable Long id, @Valid @RequestBody StrainPurificationInfoVo vo) {
+        purificationInfoService.updateForm(id, vo);
         return R.ok();
     }
 }

+ 16 - 0
jfcloud-gene-biz/src/main/java/com/github/jfcloud/gene/form/service/StrainCustomInfoService.java

@@ -2,6 +2,22 @@ package com.github.jfcloud.gene.form.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.github.jfcloud.gene.form.entity.StrainCustomInfo;
+import com.github.jfcloud.gene.form.vo.StrainCustomVo;
 
 public interface StrainCustomInfoService extends IService<StrainCustomInfo> {
+
+    /**
+     * 保存基因定制表单
+     *
+     * @param vo
+     */
+    void saveForm(StrainCustomVo vo);
+
+    /**
+     * 更新基因定制表单
+     *
+     * @param id
+     * @param vo
+     */
+    void updateForm(Long id, StrainCustomVo vo);
 }

+ 16 - 0
jfcloud-gene-biz/src/main/java/com/github/jfcloud/gene/form/service/StrainPurificationInfoService.java

@@ -2,6 +2,22 @@ package com.github.jfcloud.gene.form.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.github.jfcloud.gene.form.entity.StrainPurificationInfo;
+import com.github.jfcloud.gene.form.vo.StrainPurificationInfoVo;
 
 public interface StrainPurificationInfoService extends IService<StrainPurificationInfo> {
+
+    /**
+     * 保存净化扩繁表单
+     *
+     * @param vo
+     */
+    void saveForm(StrainPurificationInfoVo vo);
+
+    /**
+     * 更新净化扩繁表单
+     *
+     * @param id
+     * @param vo
+     */
+    void updateForm(Long id, StrainPurificationInfoVo vo);
 }

+ 57 - 0
jfcloud-gene-biz/src/main/java/com/github/jfcloud/gene/form/service/impl/StrainCustomInfoServiceImpl.java

@@ -1,13 +1,70 @@
 package com.github.jfcloud.gene.form.service.impl;
 
+import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.lang.Assert;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.github.jfcloud.gene.common.util.CustomIdGenerator;
+import com.github.jfcloud.gene.form.entity.StrainCustomDetail;
 import com.github.jfcloud.gene.form.entity.StrainCustomInfo;
 import com.github.jfcloud.gene.form.mapper.StrainCustomInfoMapper;
+import com.github.jfcloud.gene.form.service.StrainCustomDetailService;
 import com.github.jfcloud.gene.form.service.StrainCustomInfoService;
+import com.github.jfcloud.gene.form.vo.StrainCustomVo;
+import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
 
+import java.util.List;
+import java.util.stream.Collectors;
+
 @Slf4j
 @Service
+@RequiredArgsConstructor
 public class StrainCustomInfoServiceImpl extends ServiceImpl<StrainCustomInfoMapper, StrainCustomInfo> implements StrainCustomInfoService {
+
+    private final StrainCustomDetailService strainCustomDetailService;
+
+    @Override
+    public void saveForm(StrainCustomVo vo) {
+        StrainCustomInfo customInfo = BeanUtil.copyProperties(vo, StrainCustomInfo.class);
+        customInfo.setId(CustomIdGenerator.nextId());
+        customInfo.insert();
+
+        //保存总表
+        if (!vo.getDetailList().isEmpty()) {
+            List<StrainCustomDetail> detailList = vo.getDetailList().stream()
+                    .map(x -> {
+                        StrainCustomDetail detail = BeanUtil.copyProperties(x, StrainCustomDetail.class);
+                        detail.setStrainCustomBasicId(customInfo.getId());
+                        detail.setId(CustomIdGenerator.nextId());
+                        return detail;
+                    })
+                    .collect(Collectors.toList());
+            strainCustomDetailService.saveBatch(detailList);
+        }
+    }
+
+    @Override
+    public void updateForm(Long id, StrainCustomVo vo) {
+        StrainCustomInfo info = getById(id);
+        Assert.notNull(info, "品系定制不存在");
+
+        BeanUtil.copyProperties(vo, info);
+        info.updateById();
+
+        //先删除总表,再保存总表
+        strainCustomDetailService.remove(new LambdaQueryWrapper<StrainCustomDetail>().eq(StrainCustomDetail::getStrainCustomBasicId, id));
+        if (!vo.getDetailList().isEmpty()) {
+            List<StrainCustomDetail> detailList = vo.getDetailList().stream()
+                    .map(x -> {
+                        StrainCustomDetail detail = BeanUtil.copyProperties(x, StrainCustomDetail.class);
+                        detail.setStrainCustomBasicId(info.getId());
+                        detail.setId(CustomIdGenerator.nextId());
+                        return detail;
+                    })
+                    .collect(Collectors.toList());
+            strainCustomDetailService.saveBatch(detailList);
+        }
+    }
 }

+ 87 - 0
jfcloud-gene-biz/src/main/java/com/github/jfcloud/gene/form/service/impl/StrainPurificationInfoServiceImpl.java

@@ -1,13 +1,100 @@
 package com.github.jfcloud.gene.form.service.impl;
 
+import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.lang.Assert;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.github.jfcloud.gene.common.util.CustomIdGenerator;
+import com.github.jfcloud.gene.file.entity.FileInfo;
+import com.github.jfcloud.gene.file.service.FileInfoService;
+import com.github.jfcloud.gene.form.entity.AnimalDemand;
+import com.github.jfcloud.gene.form.entity.CageDemand;
 import com.github.jfcloud.gene.form.entity.StrainPurificationInfo;
 import com.github.jfcloud.gene.form.mapper.StrainPurificationInfoMapper;
+import com.github.jfcloud.gene.form.service.AnimalDemandService;
+import com.github.jfcloud.gene.form.service.CageDemandService;
 import com.github.jfcloud.gene.form.service.StrainPurificationInfoService;
+import com.github.jfcloud.gene.form.vo.StrainPurificationInfoVo;
+import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
 
+import java.util.List;
+import java.util.stream.Collectors;
+
 @Slf4j
 @Service
+@RequiredArgsConstructor
 public class StrainPurificationInfoServiceImpl extends ServiceImpl<StrainPurificationInfoMapper, StrainPurificationInfo> implements StrainPurificationInfoService {
+
+    private final CageDemandService cageDemandService;
+
+    private final AnimalDemandService animalDemandService;
+
+    private final FileInfoService fileInfoService;
+
+    @Override
+    public void saveForm(StrainPurificationInfoVo vo) {
+        StrainPurificationInfo purificationInfo = BeanUtil.copyProperties(vo, StrainPurificationInfo.class);
+        purificationInfo.setId(CustomIdGenerator.nextId());
+        purificationInfo.insert();
+
+        saveDetailList(purificationInfo.getId(), vo);
+    }
+
+    private void saveDetailList(Long id, StrainPurificationInfoVo vo) {
+        //保存笼位需求
+        if (!vo.getCageDemands().isEmpty()) {
+            List<CageDemand> cageDemandList = vo.getCageDemands().stream()
+                    .map(x -> {
+                        CageDemand cageDemand = BeanUtil.copyProperties(x, CageDemand.class);
+                        cageDemand.setPurificationId(id);
+                        cageDemand.setId(CustomIdGenerator.nextId());
+                        return cageDemand;
+                    })
+                    .collect(Collectors.toList());
+            cageDemandService.saveBatch(cageDemandList);
+        }
+
+        //保存动物需求
+        if (!vo.getAnimalDemands().isEmpty()) {
+            List<AnimalDemand> cageDemandList = vo.getAnimalDemands().stream()
+                    .map(x -> {
+                        AnimalDemand animalDemand = BeanUtil.copyProperties(x, AnimalDemand.class);
+                        animalDemand.setPurificationId(id);
+                        animalDemand.setId(CustomIdGenerator.nextId());
+                        return animalDemand;
+                    })
+                    .collect(Collectors.toList());
+            animalDemandService.saveBatch(cageDemandList);
+        }
+
+        //保存附件
+        if (!vo.getTestingFiles().isEmpty()) {
+            List<FileInfo> fileList = vo.getTestingFiles().stream()
+                    .map(x -> {
+                        FileInfo fileInfo = BeanUtil.copyProperties(x, FileInfo.class);
+                        fileInfo.setRelateId(id);
+                        return fileInfo;
+                    })
+                    .collect(Collectors.toList());
+            fileInfoService.saveBatch(fileList);
+        }
+    }
+
+    @Override
+    public void updateForm(Long id, StrainPurificationInfoVo vo) {
+        StrainPurificationInfo info = getById(id);
+        Assert.notNull(info, "品系净化扩繁不存在");
+
+        BeanUtil.copyProperties(vo, info);
+        info.updateById();
+
+        //先删除附件等,再进行保存
+        cageDemandService.remove(new LambdaQueryWrapper<>(CageDemand.class).eq(CageDemand::getPurificationId, id));
+        animalDemandService.remove(new LambdaQueryWrapper<>(AnimalDemand.class).eq(AnimalDemand::getPurificationId, id));
+        fileInfoService.remove(new LambdaQueryWrapper<>(FileInfo.class).eq(FileInfo::getRelateId, id));
+
+        saveDetailList(id, vo);
+    }
 }

+ 4 - 0
jfcloud-gene-common/pom.xml

@@ -26,6 +26,10 @@
       <groupId>com.github.jfcloud</groupId>
       <artifactId>jfcloud-common-security</artifactId>
     </dependency>
+    <dependency>
+      <groupId>com.github.jfcloud</groupId>
+      <artifactId>jfcloud-common-data</artifactId>
+    </dependency>
   </dependencies>
 
 </project>

+ 16 - 0
jfcloud-gene-common/src/main/java/com/github/jfcloud/gene/common/util/CustomIdGenerator.java

@@ -0,0 +1,16 @@
+package com.github.jfcloud.gene.common.util;
+
+import com.github.jfcloud.common.data.id.impl.DefaultIdGenerator;
+
+public class CustomIdGenerator extends DefaultIdGenerator {
+
+    private static final CustomIdGenerator INSTANCE = new CustomIdGenerator();
+
+    private CustomIdGenerator() {
+        super();
+    }
+
+    public static long nextId() {
+        return INSTANCE.generateId();
+    }
+}