浏览代码

静态知识维护

zhaops 4 年之前
父节点
当前提交
095dc48fbf

+ 86 - 1
src/main/java/com/diagbot/facade/KlConceptStaticFacade.java

@@ -15,17 +15,23 @@ import com.diagbot.enums.LexiconEnum;
 import com.diagbot.enums.StatusEnum;
 import com.diagbot.exception.CommonErrorCode;
 import com.diagbot.exception.CommonException;
+import com.diagbot.service.KlConceptDetailService;
 import com.diagbot.service.impl.KlConceptStaticServiceImpl;
 import com.diagbot.util.BeanUtil;
+import com.diagbot.util.DateUtil;
 import com.diagbot.util.EntityUtil;
 import com.diagbot.util.ListUtil;
 import com.diagbot.util.StringUtil;
 import com.diagbot.vo.KlConceptStaticPageVO;
+import com.diagbot.vo.KlConceptStaticVO;
 import com.diagbot.vo.StaticKnowledgeVO;
+import com.google.common.collect.Lists;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.stereotype.Component;
 
 import java.util.Arrays;
+import java.util.Date;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -47,6 +53,10 @@ public class KlConceptStaticFacade extends KlConceptStaticServiceImpl {
     @Autowired
     private DictionaryFacade dictionaryFacade;
 
+    @Autowired
+    @Qualifier("klConceptDetailServiceImpl")
+    private KlConceptDetailService klConceptDetailService;
+
     /**
      * 获取静态知识
      *
@@ -208,6 +218,81 @@ public class KlConceptStaticFacade extends KlConceptStaticServiceImpl {
         return page;
     }
 
+    /**
+     * 保存记录(新增or修改)
+     *
+     * @param klConceptStaticVO
+     * @return
+     */
+    public Boolean saveOrUpdateRecord(KlConceptStaticVO klConceptStaticVO) {
+        //String userId = SysUserUtils.getCurrentPrincipleID();
+        if (klConceptStaticVO.getUserId() == null) {
+            klConceptStaticVO.setUserId(0L);
+        }
+        Date now = DateUtil.now();
+
+        Integer type = convertType(klConceptStaticVO.getType(), 1);
+        klConceptStaticVO.setType(type);
+
+        KlConcept concept = new KlConcept();
+        if (klConceptStaticVO.getId() != null) {
+            concept = klConceptFacade.getById(klConceptStaticVO.getId());
+        } else {
+            concept = klConceptFacade.getOne(new QueryWrapper<KlConcept>()
+                    .eq("is_deleted", IsDeleteEnum.N.getKey())
+                    .eq("lib_name", klConceptStaticVO.getName())
+                    .eq("lib_type", type), false);
+        }
+        if (concept == null) {
+            throw new CommonException(CommonErrorCode.NOT_EXISTS, "标准术语不存在");
+        }
+        if (!concept.getLibName().equals(klConceptStaticVO.getName())) {
+            throw new CommonException(CommonErrorCode.PARAM_IS_ERROR, "标准术语名称不允许修改");
+        }
+
+        Long conceptId = concept.getId();
+        KlConceptStatic staticInfo = this.getOne(new QueryWrapper<KlConceptStatic>()
+                .eq("is_deleted", IsDeleteEnum.N.getKey())
+                .eq("concept_id", concept.getId()), false);
+
+        if (staticInfo == null) {
+            staticInfo = new KlConceptStatic();
+            staticInfo.setId(null);
+            staticInfo.setConceptId(concept.getId());
+            staticInfo.setStatus(StatusEnum.Enable.getKey());
+            staticInfo.setCreator(klConceptStaticVO.getUserId().toString());
+            staticInfo.setGmtCreate(now);
+        }
+        staticInfo.setClinicalPathwayName(klConceptStaticVO.getClinicalPathwayName());
+        staticInfo.setNoticeName(klConceptStaticVO.getNoticeName());
+        staticInfo.setModifier(klConceptStaticVO.getUserId().toString());
+        staticInfo.setGmtModified(now);
+
+        List<KlConceptDetail> details = Lists.newLinkedList();
+        if (ListUtil.isNotEmpty(klConceptStaticVO.getDetails())) {
+            details = BeanUtil.listCopyTo(klConceptStaticVO.getDetails(), KlConceptDetail.class);
+        }
+        details.forEach(detail -> {
+            detail.setConceptId(conceptId);
+            detail.setCreator(klConceptStaticVO.getUserId().toString());
+            detail.setGmtCreate(now);
+            detail.setModifier(klConceptStaticVO.getUserId().toString());
+            detail.setGmtModified(now);
+        });
+
+        //保存静态知识基础信息
+        this.saveOrUpdate(staticInfo);
+
+        //删除已有明细
+        klConceptDetailService.remove(new QueryWrapper<KlConceptDetail>()
+                .eq("concept_id", concept.getId()));
+
+        //保存新的明细
+        klConceptDetailService.saveBatch(details);
+
+        return true;
+    }
+
 
     public Integer convertType(Integer type, Integer flag) {
         Integer retType = null;
@@ -257,4 +342,4 @@ public class KlConceptStaticFacade extends KlConceptStaticServiceImpl {
         }
         return retType;
     }
-}
+}

+ 47 - 0
src/main/java/com/diagbot/vo/KlConceptDetailVO.java

@@ -0,0 +1,47 @@
+package com.diagbot.vo;
+
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * @Description:
+ * @Author:zhaops
+ * @time: 2021/2/24 15:03
+ */
+@Getter
+@Setter
+public class KlConceptDetailVO {
+    /**
+     * 明细id
+     */
+    private Long id;
+    /**
+     * 提示概念id
+     */
+    private Long conceptId;
+
+    /**
+     * 提示明细标题
+     */
+    private String title;
+
+    /**
+     * 提示明细内容
+     */
+    private String content;
+
+    /**
+     * 纯文本
+     */
+    private String text;
+
+    /**
+     * 提示明细序号
+     */
+    private Integer orderNo;
+
+    /**
+     * 内容类型(多选):1-化验、辅检、手术和操作、诊断、药品静态信息,2-注意事项,3-临床路径,4-治疗方案
+     */
+    private String contentType;
+}

+ 51 - 0
src/main/java/com/diagbot/vo/KlConceptStaticVO.java

@@ -0,0 +1,51 @@
+package com.diagbot.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.List;
+
+/**
+ * @Description:
+ * @Author:zhaops
+ * @time: 2021/2/24 15:03
+ */
+@Getter
+@Setter
+public class KlConceptStaticVO {
+    private Long id;
+    /**
+     * 标准术语
+     */
+    private String name;
+    /**
+     * 术语类型
+     */
+    private Integer type;
+    /**
+     * 术语类型
+     */
+    @ApiModelProperty(hidden = true)
+    private String typeName;
+    /**
+     * 临床路径名称
+     */
+    private String clinicalPathwayName;
+
+    /**
+     * 注意事项名称
+     */
+    private String noticeName;
+
+    /**
+     * 静态知识明细
+     */
+    private List<KlConceptDetailVO> details;
+
+    /**
+     * 操作id
+     */
+    @ApiModelProperty(hidden = true)
+    private Long userId;
+}

+ 17 - 0
src/main/java/com/diagbot/web/KlConceptStaticController.java

@@ -7,10 +7,12 @@ import com.diagbot.dto.RespDTO;
 import com.diagbot.dto.StaticKnowledgeDTO;
 import com.diagbot.facade.KlConceptStaticFacade;
 import com.diagbot.vo.KlConceptStaticPageVO;
+import com.diagbot.vo.KlConceptStaticVO;
 import com.diagbot.vo.StaticKnowledgeVO;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
@@ -51,4 +53,19 @@ public class KlConceptStaticController {
         IPage<KlConceptStaticDTO> data = klConceptStaticFacade.getPage(klConceptStaticPageVO);
         return RespDTO.onSuc(data);
     }
+
+    @ApiOperation(value = "保存静态知识-新增或修改[zhaops]",
+            notes = "id: id <br>" +
+                    "name: 术语名称 <br>" +
+                    "type: 类型:1-诊断、2-药品、3-检验套餐、4-检验细项、5-检查、6-检查子项、7-手术和操作 <br>" +
+                    "clinicalPathwayName: 临床路径名称<br>" +
+                    "noticeName: 注意事项名称<br>" +
+                    "details: 明细<br>")
+    @PostMapping("/saveOrUpdateRecord")
+    @SysLogger("saveOrUpdateRecord")
+    //@Transactional
+    public RespDTO<Boolean> saveOrUpdateRecord(@Valid @RequestBody KlConceptStaticVO klConceptStaticVO) {
+        Boolean data = klConceptStaticFacade.saveOrUpdateRecord(klConceptStaticVO);
+        return RespDTO.onSuc(data);
+    }
 }