Browse Source

诊断依据新增和修改(待完善)

zhoutg 5 years ago
parent
commit
7e4f17c0b5

+ 19 - 0
knowledgeman-service/src/main/java/com/diagbot/entity/CommonParam.java

@@ -0,0 +1,19 @@
+package com.diagbot.entity;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.Date;
+
+/**
+ * @Description:
+ * @Author: ztg
+ * @Date: 2018/12/14 14:15
+ */
+@Getter
+@Setter
+public class CommonParam {
+    private String person;     //操作人
+    private Date now;          //当前时间
+    private int insertOrUpdate;//更新或新增标识
+}

+ 4 - 15
knowledgeman-service/src/main/java/com/diagbot/entity/Diagnose.java

@@ -3,6 +3,7 @@ package com.diagbot.entity;
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModelProperty;
 import lombok.Getter;
 import lombok.Setter;
 
@@ -33,11 +34,13 @@ public class Diagnose implements Serializable {
     /**
      * 是否删除,N:未删除,Y:删除
      */
+    @ApiModelProperty(hidden = true)
     private String isDeleted;
 
     /**
      * 记录创建时间
      */
+    @ApiModelProperty(hidden = true)
     private Date gmtCreate;
 
     /**
@@ -48,6 +51,7 @@ public class Diagnose implements Serializable {
     /**
      * 创建人姓名
      */
+    @ApiModelProperty(hidden = true)
     private String creator;
 
     /**
@@ -76,19 +80,4 @@ public class Diagnose implements Serializable {
     private String remark;
 
 
-    @Override
-    public String toString() {
-        return "Diagnose{" +
-        "id=" + id +
-        ", isDeleted=" + isDeleted +
-        ", gmtCreate=" + gmtCreate +
-        ", gmtModified=" + gmtModified +
-        ", creator=" + creator +
-        ", modifier=" + modifier +
-        ", disName=" + disName +
-        ", hasQuestion=" + hasQuestion +
-        ", neoUpdate=" + neoUpdate +
-        ", remark=" + remark +
-        "}";
-    }
 }

+ 54 - 0
knowledgeman-service/src/main/java/com/diagbot/entity/DiagnoseDetailSave.java

@@ -0,0 +1,54 @@
+package com.diagbot.entity;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import java.io.Serializable;
+
+/**
+ * <p>
+ * 诊断依据明细表
+ * </p>
+ *
+ * @author zhoutg
+ * @since 2019-08-08
+ */
+@Getter
+@Setter
+public class DiagnoseDetailSave implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 类型
+     */
+    private Integer type;
+
+    /**
+     * 编码
+     */
+    private String code;
+
+    /**
+     * 标准词
+     */
+    private String standard;
+
+    /**
+     * 关联词
+     */
+    private String relation;
+
+    /**
+     * 结果
+     */
+    private String result;
+
+    /**
+     * 公式
+     */
+    private String formula;
+
+
+
+}

+ 43 - 0
knowledgeman-service/src/main/java/com/diagbot/entity/wrapper/DiagnoseWrapper.java

@@ -0,0 +1,43 @@
+package com.diagbot.entity.wrapper;
+
+import com.diagbot.entity.DiagnoseDetailSave;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+import javax.validation.constraints.NotBlank;
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * <p>
+ * 诊断依据表
+ * </p>
+ *
+ * @author zhoutg
+ * @since 2019-08-08
+ */
+@Getter
+@Setter
+public class DiagnoseWrapper implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty(value = "主键")
+    private Long id;
+
+    @ApiModelProperty(value = "修改人姓名")
+    @NotBlank(message="修改人姓名不能为空")
+    private String modifier;
+
+    @ApiModelProperty(value = "诊断名称")
+    @NotBlank(message="诊断名称不能为空")
+    private String disName;
+
+    @ApiModelProperty(value = "疾病特征")
+    private List<DiagnoseDetailSave> disFeature = new ArrayList<>();
+
+    @ApiModelProperty(value = "疾病公式")
+    private List<DiagnoseDetailSave> disformula = new ArrayList<>();
+}

+ 51 - 0
knowledgeman-service/src/main/java/com/diagbot/enums/InsertOrUpdateEnum.java

@@ -0,0 +1,51 @@
+package com.diagbot.enums;
+
+import com.diagbot.core.KeyedNamed;
+import lombok.Setter;
+
+/**
+ * 
+ * @author zhoutg
+ * @Description:
+ * @date 2018年11月21日 下午2:31:42
+ */
+public enum InsertOrUpdateEnum implements KeyedNamed {
+    Insert(1, "新增"),
+    Update(2, "修改");
+
+    @Setter
+    private Integer key;
+
+    @Setter
+    private String name;
+
+    InsertOrUpdateEnum(Integer key, String name) {
+        this.key = key;
+        this.name = name;
+    }
+
+    public static InsertOrUpdateEnum getEnum(Integer key) {
+        for (InsertOrUpdateEnum item : InsertOrUpdateEnum.values()) {
+            if (item.key == key) {
+                return item;
+            }
+        }
+        return null;
+    }
+
+    public static String getName(Integer key) {
+        InsertOrUpdateEnum item = getEnum(key);
+        return item != null ? item.name : null;
+    }
+
+    @Override
+    public int getKey() {
+        return key;
+    }
+
+    @Override
+    public String getName() {
+        return name;
+    }
+}
+

+ 10 - 0
knowledgeman-service/src/main/java/com/diagbot/facade/DiagnoseDetailFacade.java

@@ -0,0 +1,10 @@
+package com.diagbot.facade;
+
+import com.diagbot.service.impl.DiagnoseDetailServiceImpl;
+import org.springframework.stereotype.Component;
+
+@Component
+public class DiagnoseDetailFacade extends DiagnoseDetailServiceImpl {
+
+
+}

+ 98 - 0
knowledgeman-service/src/main/java/com/diagbot/facade/DiagnoseFacade.java

@@ -1,22 +1,34 @@
 package com.diagbot.facade;
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.diagbot.dto.ConceptBaseDTO;
 import com.diagbot.dto.DiagnosePageDTO;
+import com.diagbot.entity.CommonParam;
 import com.diagbot.entity.Diagnose;
+import com.diagbot.entity.DiagnoseDetail;
+import com.diagbot.entity.DiagnoseDetailSave;
+import com.diagbot.entity.DiagnoseQuestion;
+import com.diagbot.entity.wrapper.DiagnoseWrapper;
+import com.diagbot.enums.InsertOrUpdateEnum;
 import com.diagbot.enums.IsDeleteEnum;
 import com.diagbot.enums.LexiconTypeEnum;
 import com.diagbot.exception.CommonErrorCode;
 import com.diagbot.exception.CommonException;
+import com.diagbot.service.DiagnoseDetailService;
+import com.diagbot.service.DiagnoseQuestionService;
 import com.diagbot.service.impl.DiagnoseServiceImpl;
+import com.diagbot.util.BeanUtil;
 import com.diagbot.util.DateUtil;
 import com.diagbot.vo.DeleteDiagnoseVO;
 import com.diagbot.vo.DiagnosePageVO;
 import com.diagbot.vo.DiseaseIndexVO;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.stereotype.Component;
 
+import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
 
@@ -25,6 +37,12 @@ public class DiagnoseFacade extends DiagnoseServiceImpl {
 
     @Autowired
     ConceptFacade conceptFacade;
+    @Autowired
+    @Qualifier("diagnoseDetailServiceImpl")
+    DiagnoseDetailService diagnoseDetailService;
+    @Autowired
+    @Qualifier("diagnoseQuestionServiceImpl")
+    DiagnoseQuestionService diagnoseQuestionService;
 
     /**
      * 诊断依据分页
@@ -76,4 +94,84 @@ public class DiagnoseFacade extends DiagnoseServiceImpl {
         diseaseIndexVO.setLibType(LexiconTypeEnum.DIAGNOSIS.getKey());
         return this.index(diseaseIndexVO);
     }
+
+
+    /**
+     * 诊断依据新增或修改
+     *
+     * @param diagnoseWrapper
+     */
+    public void insertOrUpdate(DiagnoseWrapper diagnoseWrapper) {
+        CommonParam param = initCommonParam();
+        param.setPerson(diagnoseWrapper.getModifier());
+
+        Diagnose diagnose = new Diagnose();
+        BeanUtil.copyProperties(diagnoseWrapper, diagnose);
+        if (diagnoseWrapper.getId() == null) { //新增
+            diagnose.setCreator(param.getPerson());
+            diagnose.setGmtCreate(param.getNow());
+        } else { // 修改
+            // 明细删除
+            diagnoseDetailService.remove(new QueryWrapper<DiagnoseDetail>()
+                    .eq("diagnose_id", diagnoseWrapper.getId())
+            );
+            // 删除问题词
+            diagnoseQuestionService.remove(new QueryWrapper<DiagnoseQuestion>()
+                    .eq("diagnose_id", diagnoseWrapper.getId())
+            );
+           param.setInsertOrUpdate(InsertOrUpdateEnum.Update.getKey());
+        }
+        diagnose.setGmtModified(param.getNow());
+        this.saveOrUpdate(diagnose);
+
+        // 新增明细
+        List<DiagnoseDetail> diagnoseDetailList = new ArrayList<>();
+        int i = 0;
+        // 遍历诊断特征
+        for (DiagnoseDetailSave bean : diagnoseWrapper.getDisFeature()) {
+            DiagnoseDetail diagnoseDetail = new DiagnoseDetail();
+            BeanUtil.copyProperties(bean, diagnoseDetail);
+            diagnoseDetail.setDiagnoseId(diagnose.getId());
+            diagnoseDetail.setCreator(param.getPerson());
+            diagnoseDetail.setGmtCreate(param.getNow());
+            diagnoseDetail.setModifier(param.getPerson());
+            diagnoseDetail.setGmtModified(param.getNow());
+            diagnoseDetail.setDisName(diagnose.getDisName());
+            diagnoseDetail.setOrderNo(++i);
+            // TODO 校验数据
+            diagnoseDetailList.add(diagnoseDetail);
+        }
+
+        // 遍历诊断公式
+        for (DiagnoseDetailSave bean : diagnoseWrapper.getDisformula()) {
+            DiagnoseDetail diagnoseDetail = new DiagnoseDetail();
+            BeanUtil.copyProperties(bean, diagnoseDetail);
+            diagnoseDetail.setDiagnoseId(diagnose.getId());
+            diagnoseDetail.setCreator(param.getPerson());
+            diagnoseDetail.setGmtCreate(param.getNow());
+            diagnoseDetail.setModifier(param.getPerson());
+            diagnoseDetail.setGmtModified(param.getNow());
+            diagnoseDetail.setDisName(diagnose.getDisName());
+            diagnoseDetail.setOrderNo(++i);
+            // TODO 校验数据
+            diagnoseDetailList.add(diagnoseDetail);
+        }
+        diagnoseDetailService.saveBatch(diagnoseDetailList);
+
+
+        // 新增问题词
+        // TODO
+    }
+
+    /**
+     * 初始化参数
+     *
+     * @return
+     */
+    public CommonParam initCommonParam() {
+        CommonParam param = new CommonParam();
+        param.setNow(DateUtil.now());
+        param.setInsertOrUpdate(InsertOrUpdateEnum.Insert.getKey());
+        return param;
+    }
 }

+ 3 - 3
knowledgeman-service/src/main/java/com/diagbot/vo/DiagnoseDetailSaveVO.java

@@ -1,6 +1,6 @@
 package com.diagbot.vo;
 
-import com.diagbot.entity.DiagnoseDetail;
+import com.diagbot.entity.DiagnoseDetailSave;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Getter;
@@ -24,9 +24,9 @@ import java.util.List;
 public class DiagnoseDetailSaveVO implements Serializable {
 
     @ApiModelProperty(value = "疾病特征")
-    private List<DiagnoseDetail> disFeature = new ArrayList<>();
+    private List<DiagnoseDetailSave> disFeature = new ArrayList<>();
 
     @ApiModelProperty(value = "疾病公式")
-    private List<DiagnoseDetail> disformula = new ArrayList<>();
+    private List<DiagnoseDetailSave> disformula = new ArrayList<>();
 
 }

+ 12 - 0
knowledgeman-service/src/main/java/com/diagbot/web/DiagnoseController.java

@@ -6,6 +6,7 @@ import com.diagbot.annotation.SysLogger;
 import com.diagbot.dto.ConceptBaseDTO;
 import com.diagbot.dto.DiagnosePageDTO;
 import com.diagbot.dto.RespDTO;
+import com.diagbot.entity.wrapper.DiagnoseWrapper;
 import com.diagbot.facade.DiagnoseFacade;
 import com.diagbot.vo.DeleteDiagnoseVO;
 import com.diagbot.vo.DiagnosePageVO;
@@ -13,6 +14,7 @@ import com.diagbot.vo.DiseaseIndexVO;
 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.RestController;
@@ -60,4 +62,14 @@ public class DiagnoseController {
         List<ConceptBaseDTO> data = diagnoseFacade.indexFac(diseaseIndexVO);
         return RespDTO.onSuc(data);
     }
+
+
+    @ApiOperation(value = "诊断依据-新增或更新[by:zhoutg]")
+    @PostMapping("/insertOrUpdate")
+    @SysLogger("insertOrUpdate")
+    @Transactional
+    public RespDTO<Boolean> insertOrUpdate(@RequestBody DiagnoseWrapper diagnoseWrapper) {
+        diagnoseFacade.insertOrUpdate(diagnoseWrapper);
+        return RespDTO.onSuc(true);
+    }
 }