浏览代码

诊断依据-获取详情

kongwz 4 年之前
父节点
当前提交
cb3c8ef160

+ 22 - 0
cdssman-service/src/main/java/com/diagbot/dto/DiseaseAllDetailDTO.java

@@ -0,0 +1,22 @@
+package com.diagbot.dto;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import java.io.Serializable;
+
+/**
+ * @author kwz
+ * @date 2021/3/9
+ * @time 17:08
+ */
+@Getter
+@Setter
+public class DiseaseAllDetailDTO implements Serializable {
+    private Long sid;
+    private String disName;
+    private Integer rid;
+    private String rname;
+    private Long eid;
+    private String itemName;
+}

+ 20 - 0
cdssman-service/src/main/java/com/diagbot/dto/DiseaseDetailDTO.java

@@ -0,0 +1,20 @@
+package com.diagbot.dto;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * @author kwz
+ * @date 2021/3/9
+ * @time 17:05
+ */
+@Getter
+@Setter
+public class DiseaseDetailDTO implements Serializable {
+    private Long sid;
+    private String disName;
+    List<List<DiseaseSubDetailDTO>> datas;
+}

+ 20 - 0
cdssman-service/src/main/java/com/diagbot/dto/DiseaseSubDetailDTO.java

@@ -0,0 +1,20 @@
+package com.diagbot.dto;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import java.io.Serializable;
+
+/**
+ * @author kwz
+ * @date 2021/3/9
+ * @time 17:08
+ */
+@Getter
+@Setter
+public class DiseaseSubDetailDTO implements Serializable {
+    private Integer rid;
+    private String rname;
+    private Long eid;
+    private String itemName;
+}

+ 56 - 0
cdssman-service/src/main/java/com/diagbot/facade/KlDiseaseFacade.java

@@ -1,12 +1,25 @@
 package com.diagbot.facade;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.diagbot.dto.DiseaseAllDetailDTO;
+import com.diagbot.dto.DiseaseDetailDTO;
 import com.diagbot.dto.DiseasePageDTO;
+import com.diagbot.dto.DiseaseSubDetailDTO;
 import com.diagbot.service.KlDiseaseService;
 import com.diagbot.service.impl.KlDiseaseServiceImpl;
+import com.diagbot.util.ListUtil;
 import com.diagbot.vo.DiseasePageVO;
+import com.diagbot.vo.GetDiseaseDetailVO;
+import com.google.common.collect.Maps;
+import org.apache.commons.collections4.MapUtils;
+import org.apache.commons.compress.utils.Lists;
 import org.springframework.stereotype.Component;
 
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
 /**
  * @author wangfeng
  * @Description:
@@ -18,4 +31,47 @@ public class KlDiseaseFacade extends KlDiseaseServiceImpl {
     public IPage<DiseasePageDTO> getDiseasePageAll(DiseasePageVO klConceptInfoVO) {
         return  this.getDiseasePage(klConceptInfoVO);
     }
+
+
+    public DiseaseDetailDTO getDetail(GetDiseaseDetailVO getDiseaseDetailVO) {
+        DiseaseDetailDTO diseaseDetailDTO = new DiseaseDetailDTO();
+
+        Map<Integer,List<DiseaseSubDetailDTO>> disSubDetailMap = Maps.newHashMap();
+        List<DiseaseAllDetailDTO> diseaseAllDetailDTOS = this.getDiseaseDetail(getDiseaseDetailVO);
+        if(ListUtil.isNotEmpty(diseaseAllDetailDTOS)){
+            diseaseAllDetailDTOS.forEach(x ->{
+                diseaseDetailDTO.setSid(x.getSid());
+                diseaseDetailDTO.setDisName(x.getDisName());
+                if(disSubDetailMap.containsKey(x.getRid())){
+                    List<DiseaseSubDetailDTO> diseaseSubDetailDTOS = disSubDetailMap.get(x.getRid());
+                    DiseaseSubDetailDTO diseaseSubDetailDTO = new DiseaseSubDetailDTO();
+                    diseaseSubDetailDTO.setEid(x.getEid());
+                    diseaseSubDetailDTO.setItemName(x.getItemName());
+                    diseaseSubDetailDTO.setRid(x.getRid());
+                    diseaseSubDetailDTO.setRname(x.getRname());
+                    diseaseSubDetailDTOS.add(diseaseSubDetailDTO);
+                    disSubDetailMap.put(x.getRid(),diseaseSubDetailDTOS);
+                }else {
+                    List<DiseaseSubDetailDTO> diseaseSubDetailDTOS = Lists.newArrayList();
+                    DiseaseSubDetailDTO diseaseSubDetailDTO = new DiseaseSubDetailDTO();
+                    diseaseSubDetailDTO.setEid(x.getEid());
+                    diseaseSubDetailDTO.setItemName(x.getItemName());
+                    diseaseSubDetailDTO.setRid(x.getRid());
+                    diseaseSubDetailDTO.setRname(x.getRname());
+                    diseaseSubDetailDTOS.add(diseaseSubDetailDTO);
+                    disSubDetailMap.put(x.getRid(),diseaseSubDetailDTOS);
+                }
+
+            });
+        }
+        if(MapUtils.isNotEmpty(disSubDetailMap)){
+            Map<Integer, List<DiseaseSubDetailDTO>> collect = disSubDetailMap.entrySet().stream().sorted(Map.Entry.comparingByKey())
+                    .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue,
+                            (oldValue, newValue) -> newValue, LinkedHashMap::new));
+            List<List<DiseaseSubDetailDTO>> datas = Lists.newArrayList();
+            collect.forEach((x,y)->datas.add(y));
+            diseaseDetailDTO.setDatas(datas);
+        }
+        return diseaseDetailDTO;
+    }
 }

+ 5 - 0
cdssman-service/src/main/java/com/diagbot/mapper/KlDiseaseMapper.java

@@ -1,10 +1,14 @@
 package com.diagbot.mapper;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.diagbot.dto.DiseaseAllDetailDTO;
 import com.diagbot.dto.DiseasePageDTO;
 import com.diagbot.entity.KlDisease;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.diagbot.vo.DiseasePageVO;
+import com.diagbot.vo.GetDiseaseDetailVO;
+
+import java.util.List;
 
 /**
  * <p>
@@ -17,4 +21,5 @@ import com.diagbot.vo.DiseasePageVO;
 public interface KlDiseaseMapper extends BaseMapper<KlDisease> {
 
     IPage<DiseasePageDTO> getDiseasePage(DiseasePageVO klConceptInfoVO);
+    List<DiseaseAllDetailDTO> getDiseaseAllDetaill(GetDiseaseDetailVO getDiseaseDetailVO);
 }

+ 7 - 0
cdssman-service/src/main/java/com/diagbot/service/KlDiseaseService.java

@@ -1,10 +1,14 @@
 package com.diagbot.service;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.diagbot.dto.DiseaseAllDetailDTO;
 import com.diagbot.dto.DiseasePageDTO;
 import com.diagbot.entity.KlDisease;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.diagbot.vo.DiseasePageVO;
+import com.diagbot.vo.GetDiseaseDetailVO;
+
+import java.util.List;
 
 /**
  * <p>
@@ -16,4 +20,7 @@ import com.diagbot.vo.DiseasePageVO;
  */
 public interface KlDiseaseService extends IService<KlDisease> {
     IPage<DiseasePageDTO> getDiseasePage(DiseasePageVO klConceptInfoVO);
+
+    List<DiseaseAllDetailDTO> getDiseaseDetail(GetDiseaseDetailVO getDiseaseDetailVO);
 }
+

+ 9 - 0
cdssman-service/src/main/java/com/diagbot/service/impl/KlDiseaseServiceImpl.java

@@ -2,14 +2,18 @@ package com.diagbot.service.impl;
 
 import com.baomidou.dynamic.datasource.annotation.DS;
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.diagbot.dto.DiseaseAllDetailDTO;
 import com.diagbot.dto.DiseasePageDTO;
 import com.diagbot.entity.KlDisease;
 import com.diagbot.mapper.KlDiseaseMapper;
 import com.diagbot.service.KlDiseaseService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.diagbot.vo.DiseasePageVO;
+import com.diagbot.vo.GetDiseaseDetailVO;
 import org.springframework.stereotype.Service;
 
+import java.util.List;
+
 /**
  * <p>
  * 疾病表 服务实现类
@@ -26,4 +30,9 @@ public class KlDiseaseServiceImpl extends ServiceImpl<KlDiseaseMapper, KlDisease
     public IPage<DiseasePageDTO> getDiseasePage(DiseasePageVO klConceptInfoVO) {
         return baseMapper.getDiseasePage(klConceptInfoVO);
     }
+
+    @Override
+    public List<DiseaseAllDetailDTO> getDiseaseDetail(GetDiseaseDetailVO getDiseaseDetailVO) {
+        return baseMapper.getDiseaseAllDetaill(getDiseaseDetailVO);
+    }
 }

+ 22 - 0
cdssman-service/src/main/java/com/diagbot/vo/GetDiseaseDetailVO.java

@@ -0,0 +1,22 @@
+package com.diagbot.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+import javax.validation.constraints.NotNull;
+import java.io.Serializable;
+
+/**
+ * 诊断依据表入参
+ * @author kwz
+ * @date 2021/3/9
+ * @time 16:19
+ */
+@Setter
+@Getter
+public class GetDiseaseDetailVO implements Serializable {
+    @ApiModelProperty(value = "诊断依据主键")
+    @NotNull(message="诊断依据id不能为空")
+    private Long id;
+}

+ 12 - 0
cdssman-service/src/main/java/com/diagbot/web/KlDiseaseController.java

@@ -3,10 +3,12 @@ package com.diagbot.web;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.diagbot.annotation.SysLogger;
+import com.diagbot.dto.DiseaseDetailDTO;
 import com.diagbot.dto.DiseasePageDTO;
 import com.diagbot.dto.RespDTO;
 import com.diagbot.facade.KlDiseaseFacade;
 import com.diagbot.vo.DiseasePageVO;
+import com.diagbot.vo.GetDiseaseDetailVO;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -16,6 +18,8 @@ import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
+import javax.validation.Valid;
+
 /**
  * <p>
  * 疾病表 前端控制器
@@ -38,4 +42,12 @@ public class KlDiseaseController {
     public RespDTO<IPage<DiseasePageDTO>> getDiseasePages(@RequestBody DiseasePageVO klConceptInfoVO) {
         return RespDTO.onSuc(klDiseaseFacade.getDiseasePageAll(klConceptInfoVO));
     }
+
+    @ApiOperation(value = "诊断依据-获取详情[by:kongwz]")
+    @PostMapping("/getDetail")
+    @SysLogger("getDetail")
+    public RespDTO<DiseaseDetailDTO> getDetail(@Valid @RequestBody GetDiseaseDetailVO getDiseaseDetailVO) {
+        DiseaseDetailDTO diagnoseDetailSaveDTO = klDiseaseFacade.getDetail(getDiseaseDetailVO);
+        return RespDTO.onSuc(diagnoseDetailSaveDTO);
+    }
 }

+ 36 - 0
cdssman-service/src/main/resources/mapper/KlDiseaseMapper.xml

@@ -36,4 +36,40 @@
             WHERE UPPER(res.lib_name) LIKE concat('%',UPPER(trim(#{disName})) ,'%' )
         </if>
     </select>
+
+    <select id="getDiseaseAllDetaill" resultType="com.diagbot.dto.DiseaseAllDetailDTO">
+        SELECT
+	kr.start_id as sid,
+	klc1.lib_name as disName,
+	kr.relation_id as rid,
+	klex.name as rname,
+	kr.end_id as eid,
+	klc2.lib_name as itemName
+FROM
+	kl_relation kr,
+	kl_relation_order kro,
+	kl_concept klc1,
+	kl_concept klc2,
+	kl_lexicon_relationship klex
+WHERE
+	kr.id = kro.t_relation_id
+AND klc1.id = kr.start_id
+AND klc2.id = kr.end_id
+AND kr.relation_id = klex. CODE
+<if test="id != null">
+    AND kr.start_id = #{id}
+</if>
+AND kr.relation_id IN (
+	501,
+	502,
+	503,
+	504,
+	505,
+	506,
+	507,
+	508
+)
+ORDER BY
+	rid,kro.order_no
+    </select>
 </mapper>