Переглянути джерело

更新血清送检申请单

陈长荣 3 тижнів тому
батько
коміт
7cf0b23bde
14 змінених файлів з 336 додано та 12 видалено
  1. 11 3
      jfcloud-gene-biz/src/main/java/com/github/jfcloud/gene/sample/controller/SampleCheckItemController.java
  2. 66 0
      jfcloud-gene-biz/src/main/java/com/github/jfcloud/gene/sample/entity/SampleCheckItemSerum.java
  3. 2 0
      jfcloud-gene-biz/src/main/java/com/github/jfcloud/gene/sample/entity/SampleCheckOrder.java
  4. 10 0
      jfcloud-gene-biz/src/main/java/com/github/jfcloud/gene/sample/mapper/SampleCheckItemSerumMapper.java
  5. 7 0
      jfcloud-gene-biz/src/main/java/com/github/jfcloud/gene/sample/service/SampleCheckItemSerumService.java
  6. 23 8
      jfcloud-gene-biz/src/main/java/com/github/jfcloud/gene/sample/service/biz/SampleAnimalServiceImpl.java
  7. 11 0
      jfcloud-gene-biz/src/main/java/com/github/jfcloud/gene/sample/service/impl/SampleCheckItemSerumServiceImpl.java
  8. 77 0
      jfcloud-gene-biz/src/main/java/com/github/jfcloud/gene/sample/vo/CheckItemSerumVo.java
  9. 1 1
      jfcloud-gene-biz/src/main/java/com/github/jfcloud/gene/sample/vo/CheckOrderObjVo.java
  10. 3 0
      jfcloud-gene-biz/src/main/java/com/github/jfcloud/gene/sample/vo/SampleCheckOrderVo.java
  11. 90 0
      jfcloud-gene-biz/src/main/java/com/github/jfcloud/gene/sample/vo/SampleCheckSerumVo.java
  12. 1 0
      jfcloud-gene-biz/src/main/resources/mapper/SampleCheckOrderMapper.xml
  13. BIN
      jfcloud-gene-biz/src/main/resources/officeTemplate/sampleCheckItemSerum.xlsx
  14. 34 0
      jfcloud-gene-biz/src/main/resources/sql/ddl-20250513.sql

+ 11 - 3
jfcloud-gene-biz/src/main/java/com/github/jfcloud/gene/sample/controller/SampleCheckItemController.java

@@ -3,6 +3,7 @@ package com.github.jfcloud.gene.sample.controller;
 import cn.hutool.core.io.IoUtil;
 import cn.hutool.core.io.resource.ResourceUtil;
 import cn.hutool.core.net.URLEncodeUtil;
+import com.github.jfcloud.gene.sample.enums.ScientificSampleTypeEnum;
 import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.tags.Tag;
 import lombok.RequiredArgsConstructor;
@@ -10,6 +11,7 @@ import lombok.SneakyThrows;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.RestController;
 
 import javax.servlet.http.HttpServletResponse;
@@ -25,13 +27,19 @@ public class SampleCheckItemController {
     @Operation(summary = "送检申请单明细模板")
     @SneakyThrows
     @GetMapping("/template")
-    public void downloadTemplate(HttpServletResponse response) {
+    public void downloadTemplate(@RequestParam(required = false) String type, HttpServletResponse response) {
+        String template = "officeTemplate/sampleCheckItem.xlsx";
+        String name = "送检申请单明细模板.xlsx";
+        if (ScientificSampleTypeEnum.serum.name().equals(type)) {
+            template = "officeTemplate/sampleCheckItemSerum.xlsx";
+            name = "血清样本送检申请单明细模板.xlsx";
+        }
 
         response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
         response.setCharacterEncoding("utf-8");
-        response.setHeader("Content-Disposition", "attachment;filename*=utf8''" + URLEncodeUtil.encode("送检申请单明细模板.xlsx"));
+        response.setHeader("Content-Disposition", "attachment;filename*=utf8''" + URLEncodeUtil.encode(name));
 
-        try (InputStream stream = ResourceUtil.getStream("officeTemplate/sampleCheckItem.xlsx")) {
+        try (InputStream stream = ResourceUtil.getStream(template)) {
             IoUtil.copy(stream, response.getOutputStream());
         }
     }

+ 66 - 0
jfcloud-gene-biz/src/main/java/com/github/jfcloud/gene/sample/entity/SampleCheckItemSerum.java

@@ -0,0 +1,66 @@
+package com.github.jfcloud.gene.sample.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.github.jfcloud.gene.common.entity.BaseEntity;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+@Data
+@EqualsAndHashCode(callSuper = true)
+@Schema(description = "样本送检申请单血清详情")
+public class SampleCheckItemSerum extends BaseEntity {
+
+    @TableId(type = IdType.AUTO)
+    @Schema(description = "主键ID")
+    private Integer id;
+
+    @Schema(description = "送检申请单id")
+    private Long checkOrderId;
+
+    @Schema(description = "样本编号前缀")
+    private String codePrefix;
+
+    @Schema(description = "样本编号后缀")
+    private String codeSuffix;
+
+    @Schema(description = "样本类型")
+    private String type;
+
+    @Schema(description = "性别")
+    private String sex;
+
+    @Schema(description = "年龄")
+    private String age;
+
+    @Schema(description = "动物种类")
+    private String animalSpecies;
+
+    @Schema(description = "专业组")
+    private String professionalGroup;
+
+    @Schema(description = "仪器名称")
+    private String instrument;
+
+    @Schema(description = "检测指标")
+    private String target;
+
+    @Schema(description = "样本数量")
+    private String num;
+
+    @Schema(description = "送检样本体积")
+    private String volume;
+
+    @Schema(description = "送检日期")
+    private String sendDate;
+
+    @Schema(description = "24h急检")
+    private String quickCheck;
+
+    @Schema(description = "样本需返还")
+    private String needBack;
+
+    @Schema(description = "备注或其他需求")
+    private String remark;
+}

+ 2 - 0
jfcloud-gene-biz/src/main/java/com/github/jfcloud/gene/sample/entity/SampleCheckOrder.java

@@ -62,6 +62,8 @@ public class SampleCheckOrder extends BaseEntity {
 
     private String sendUserName;
 
+    private String sendOrg;
+
     /**
      * 样本接收人
      */

+ 10 - 0
jfcloud-gene-biz/src/main/java/com/github/jfcloud/gene/sample/mapper/SampleCheckItemSerumMapper.java

@@ -0,0 +1,10 @@
+package com.github.jfcloud.gene.sample.mapper;
+
+import com.github.jfcloud.common.data.datascope.JfcloudBaseMapper;
+import com.github.jfcloud.gene.sample.entity.SampleCheckItemSerum;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface SampleCheckItemSerumMapper extends JfcloudBaseMapper<SampleCheckItemSerum> {
+
+}

+ 7 - 0
jfcloud-gene-biz/src/main/java/com/github/jfcloud/gene/sample/service/SampleCheckItemSerumService.java

@@ -0,0 +1,7 @@
+package com.github.jfcloud.gene.sample.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.github.jfcloud.gene.sample.entity.SampleCheckItemSerum;
+
+public interface SampleCheckItemSerumService extends IService<SampleCheckItemSerum> {
+}

+ 23 - 8
jfcloud-gene-biz/src/main/java/com/github/jfcloud/gene/sample/service/biz/SampleAnimalServiceImpl.java

@@ -22,7 +22,6 @@ import com.github.jfcloud.gene.constants.GeneStatusEnum;
 import com.github.jfcloud.gene.file.service.FileInfoService;
 import com.github.jfcloud.gene.flow.entity.FlowAudit;
 import com.github.jfcloud.gene.flow.service.FlowAuditService;
-import com.github.jfcloud.gene.flow.service.NotifyService;
 import com.github.jfcloud.gene.sample.entity.*;
 import com.github.jfcloud.gene.sample.enums.PathogenSampleTypeEnum;
 import com.github.jfcloud.gene.sample.enums.ScientificSampleTypeEnum;
@@ -30,12 +29,8 @@ import com.github.jfcloud.gene.sample.mapper.InspectionCommissionMapper;
 import com.github.jfcloud.gene.sample.mapper.SampleAnimalMapper;
 import com.github.jfcloud.gene.sample.mapper.SampleCheckOrderMapper;
 import com.github.jfcloud.gene.sample.mapper.SampleInfoMapper;
-import com.github.jfcloud.gene.sample.service.CommissionDetailService;
-import com.github.jfcloud.gene.sample.service.SampleAnimalService;
-import com.github.jfcloud.gene.sample.service.SampleCheckItemService;
-import com.github.jfcloud.gene.sample.service.SampleEditService;
+import com.github.jfcloud.gene.sample.service.*;
 import com.github.jfcloud.gene.sample.vo.*;
-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.rich.config.WordConfig;
@@ -50,6 +45,7 @@ import org.springframework.transaction.annotation.Transactional;
 import java.lang.reflect.Field;
 import java.util.HashSet;
 import java.util.List;
+import java.util.Optional;
 import java.util.Set;
 import java.util.stream.Collectors;
 
@@ -63,12 +59,11 @@ public class SampleAnimalServiceImpl extends ServiceImpl<SampleAnimalMapper, Sam
     private final SampleCheckOrderMapper checkOrderMapper;
     private final CommissionDetailService commissionDetailService;
     private final SampleCheckItemService sampleCheckItemService;
+    private final SampleCheckItemSerumService sampleCheckItemSerumService;
     private final WordDataService wordDataService;
     private final FileInfoService fileInfoService;
     private final UserIdNameCache userIdNameCache;
     private final FlowAuditService flowAuditService;
-    private final DBSystemPropertiesService systemPropertiesService;
-    private final NotifyService notifyService;
     private final CommonSampleEditServiceImpl commonSampleEditService;
 
     @Override
@@ -170,6 +165,13 @@ public class SampleAnimalServiceImpl extends ServiceImpl<SampleAnimalMapper, Sam
                 continue;
             }
 
+            if (ScientificSampleTypeEnum.serum.name().equals(fieldName)) {
+                List<SampleCheckItemSerum> sampleCheckItemSerums = JSON.parseArray(array.toJSONString(), SampleCheckItemSerum.class);
+                sampleCheckItemSerums.forEach(item -> item.setCheckOrderId(order.getId()));
+                sampleCheckItemSerumService.saveBatch(sampleCheckItemSerums);
+                continue;
+            }
+
             List<SampleCheckItem> sampleCheckItems = JSON.parseArray(array.toJSONString(), SampleCheckItem.class);
             sampleCheckItems.forEach(item -> item.setCheckOrderId(order.getId()));
             sampleCheckItemService.saveBatch(sampleCheckItems);
@@ -346,6 +348,19 @@ public class SampleAnimalServiceImpl extends ServiceImpl<SampleAnimalMapper, Sam
                     .orElse(new SampleCheckOrderVo());
             ReflectUtil.setFieldValue(orderObj, fieldName, orderVo);
         }
+        //血清送检申请单
+        Optional<SampleCheckOrderVo> opt = orderList.stream().filter(x -> ScientificSampleTypeEnum.serum.name().equals(x.getApplyType())).findFirst();
+        if (opt.isPresent()) {
+            SampleCheckOrderVo sampleCheckOrderVo = opt.get();
+            SampleCheckSerumVo sampleCheckSerumVo = BeanUtil.copyProperties(sampleCheckOrderVo, SampleCheckSerumVo.class);
+            List<SampleCheckItemSerum> serumList = sampleCheckItemSerumService.list(new LambdaQueryWrapper<>(SampleCheckItemSerum.class)
+                    .eq(SampleCheckItemSerum::getCheckOrderId, sampleCheckOrderVo.getId()));
+            if (CollUtil.isNotEmpty(serumList)) {
+                sampleCheckSerumVo.setItems(BeanUtil.copyToList(serumList, CheckItemSerumVo.class));
+            }
+            orderObj.setSerum(sampleCheckSerumVo);
+        }
+
         sampleAnimalVo.setOrder(orderObj);
 
         return sampleAnimalVo;

+ 11 - 0
jfcloud-gene-biz/src/main/java/com/github/jfcloud/gene/sample/service/impl/SampleCheckItemSerumServiceImpl.java

@@ -0,0 +1,11 @@
+package com.github.jfcloud.gene.sample.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.github.jfcloud.gene.sample.entity.SampleCheckItemSerum;
+import com.github.jfcloud.gene.sample.mapper.SampleCheckItemSerumMapper;
+import com.github.jfcloud.gene.sample.service.SampleCheckItemSerumService;
+import org.springframework.stereotype.Service;
+
+@Service
+public class SampleCheckItemSerumServiceImpl extends ServiceImpl<SampleCheckItemSerumMapper, SampleCheckItemSerum> implements SampleCheckItemSerumService {
+}

+ 77 - 0
jfcloud-gene-biz/src/main/java/com/github/jfcloud/gene/sample/vo/CheckItemSerumVo.java

@@ -0,0 +1,77 @@
+package com.github.jfcloud.gene.sample.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+/**
+ * 样本送检申请单详情
+ */
+@Data
+public class CheckItemSerumVo {
+
+    @Schema(description = "样本编号前缀")
+    private String codePrefix;
+
+    @Schema(description = "样本编号后缀")
+    private String codeSuffix;
+
+    @Schema(description = "样本类型")
+    private String type;
+
+    @Schema(description = "性别")
+    private String sex;
+
+    @Schema(description = "年龄")
+    private String age;
+
+    @Schema(description = "动物种类")
+    private String animalSpecies;
+
+    @Schema(description = "专业组")
+    private String professionalGroup;
+
+    @Schema(description = "仪器名称")
+    private String instrument;
+
+    /**
+     * 检测指标
+     */
+    @Schema(description = "检测指标")
+    private String target;
+
+    /**
+     * 样本数量
+     */
+    @Schema(description = "样本数量")
+    private String num;
+
+    /**
+     * 送检样本体积
+     */
+    @Schema(description = "送检样本体积")
+    private String volume;
+
+    /**
+     * 送检日期
+     */
+    @Schema(description = "送检日期")
+    private String sendDate;
+
+    /**
+     * 24h急检
+     */
+    @Schema(description = "24h急检")
+    private String quickCheck;
+
+    /**
+     * 样本需返还
+     */
+    @Schema(description = "样本需返还")
+    private String needBack;
+
+    /**
+     * 备注或其他需求
+     */
+    @Schema(description = "备注或其他需求")
+    private String remark;
+}

+ 1 - 1
jfcloud-gene-biz/src/main/java/com/github/jfcloud/gene/sample/vo/CheckOrderObjVo.java

@@ -16,6 +16,6 @@ public class CheckOrderObjVo {
     private SampleCheckOrderVo blood;
 
     @Schema(description = "血清")
-    private SampleCheckOrderVo serum;
+    private SampleCheckSerumVo serum;
 
 }

+ 3 - 0
jfcloud-gene-biz/src/main/java/com/github/jfcloud/gene/sample/vo/SampleCheckOrderVo.java

@@ -73,6 +73,9 @@ public class SampleCheckOrderVo {
     @Schema(description = "样本送检人姓名")
     private String sendUserName;
 
+    @Schema(description = "样本送检机构")
+    private String sendOrg;
+
     /**
      * 样本接收人
      */

+ 90 - 0
jfcloud-gene-biz/src/main/java/com/github/jfcloud/gene/sample/vo/SampleCheckSerumVo.java

@@ -0,0 +1,90 @@
+package com.github.jfcloud.gene.sample.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 样本送检申请单
+ */
+@Setter
+@Getter
+public class SampleCheckSerumVo {
+
+    @JsonIgnore
+    @Schema(hidden = true)
+    private Long id;
+
+    /**
+     * 申请单类型:ELISA样本送检 尿常规样本送检
+     */
+    @Schema(description = "申请单类型", example = "ELISA样本送检 尿常规样本送检", hidden = true)
+    private String applyType = "serum";
+
+    /**
+     * 送检单编号
+     */
+    @Schema(description = "送检单编号")
+    private String orderCode;
+
+    /**
+     * 申请日期
+     */
+    @Schema(description = "申请日期", hidden = true)
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date applyDate;
+
+    /**
+     * 申请人
+     */
+    @Schema(description = "申请人ID")
+    private Long applyUserId;
+
+    /**
+     * 申请人姓名
+     */
+    @Schema(description = "申请人姓名")
+    private String applyUserName;
+
+    /**
+     * 申请人电话
+     */
+    @Schema(description = "申请人电话")
+    private String applyUserMobile;
+
+    /**
+     * 申请人邮箱
+     */
+    @Schema(description = "申请人邮箱")
+    private String applyUserEmail;
+
+    /**
+     * 样本送检人
+     */
+    @Schema(description = "样本送检人ID")
+    private Long sendUserId;
+
+    @Schema(description = "样本送检人姓名")
+    private String sendUserName;
+
+    @Schema(description = "样本送检机构")
+    private String sendOrg;
+
+    /**
+     * 样本接收人
+     */
+    @Schema(description = "样本接收人ID")
+    private Long receiveUserId;
+
+    @Schema(description = "样本接收人姓名")
+    private String receiveUserName;
+
+    @Schema(description = "申请单条目")
+    private List<CheckItemSerumVo> items = new ArrayList<>();
+}

+ 1 - 0
jfcloud-gene-biz/src/main/resources/mapper/SampleCheckOrderMapper.xml

@@ -9,6 +9,7 @@
   <select id="getOrderList" resultMap="CheckOrderMap">
     select * from sample_check_order
     where sample_animal_id = #{sampleAnimalId}
+    and deleted = '0'
     order by id asc
   </select>
 

BIN
jfcloud-gene-biz/src/main/resources/officeTemplate/sampleCheckItemSerum.xlsx


+ 34 - 0
jfcloud-gene-biz/src/main/resources/sql/ddl-20250513.sql

@@ -0,0 +1,34 @@
+ALTER TABLE `jfcloud_gene`.`sample_check_order`
+    ADD COLUMN `send_org` VARCHAR(255) NULL COMMENT '送检机构' AFTER `send_user_name`;
+
+
+CREATE TABLE sample_check_item_serum
+(
+    id                 int          NOT NULL AUTO_INCREMENT PRIMARY KEY,
+    check_order_id     bigint       NOT NULL COMMENT '送检申请单id',
+    code_prefix        varchar(255) NULL COMMENT '样本编号前缀',
+    code_suffix        varchar(255) NULL COMMENT '样本编号后缀',
+
+    type               VARCHAR(20) COMMENT '样本类型',
+    sex                VARCHAR(10) COMMENT '性别',
+    age                VARCHAR(10) COMMENT '年龄',
+    animal_species     varchar(255) NULL COMMENT '动物种类',
+    professional_group VARCHAR(255) COMMENT '专业组',
+    instrument         VARCHAR(255) COMMENT '仪器名称',
+
+    target             varchar(255) NULL COMMENT '检测指标',
+    num                varchar(255) NULL COMMENT '样本数量',
+    volume             varchar(255) NULL COMMENT '送检样本体积',
+    send_date          varchar(255) NULL COMMENT '送检日期',
+    quick_check        varchar(255) NULL COMMENT '24h急检',
+    need_back          varchar(255) NULL COMMENT '样本需返还',
+    remark             text COMMENT '备注或其他需求',
+    create_by          varchar(64)  NOT NULL COMMENT '创建人',
+    update_by          varchar(64)  NULL COMMENT '修改人',
+    create_time        datetime              DEFAULT NULL COMMENT '创建时间',
+    update_time        datetime              DEFAULT NULL COMMENT '修改时间',
+    deleted            char(1)      NOT NULL DEFAULT '0' COMMENT '删除标记,0未删除,1已删除',
+    tenant_id          bigint                DEFAULT NULL COMMENT '所属租户ID',
+    dept_id            bigint                DEFAULT NULL COMMENT '所属部门ID'
+) DEFAULT CHARSET = utf8mb4
+  COLLATE = utf8mb4_general_ci COMMENT '样本送检申请单血清详情'