Selaa lähdekoodia

分诊 点选

zhoutg 6 vuotta sitten
vanhempi
commit
06b75d296f
19 muutettua tiedostoa jossa 586 lisäystä ja 9 poistoa
  1. 1 0
      triage-service/src/main/java/com/diagbot/config/ResourceServerConfigurer.java
  2. 1 0
      triage-service/src/main/java/com/diagbot/config/security/UrlAccessDecisionManager.java
  3. 23 0
      triage-service/src/main/java/com/diagbot/dto/PartDTO.java
  4. 22 0
      triage-service/src/main/java/com/diagbot/dto/PartSymptomDTO.java
  5. 69 0
      triage-service/src/main/java/com/diagbot/entity/Part.java
  6. 4 2
      triage-service/src/main/java/com/diagbot/entity/Symptom.java
  7. 85 0
      triage-service/src/main/java/com/diagbot/entity/SymptomWrapper.java
  8. 102 0
      triage-service/src/main/java/com/diagbot/facade/PartFacade.java
  9. 11 0
      triage-service/src/main/java/com/diagbot/facade/SymptomFacade.java
  10. 31 0
      triage-service/src/main/java/com/diagbot/mapper/PartMapper.java
  11. 13 6
      triage-service/src/main/java/com/diagbot/mapper/SymptomMapper.java
  12. 34 0
      triage-service/src/main/java/com/diagbot/service/PartService.java
  13. 13 0
      triage-service/src/main/java/com/diagbot/service/SymptomService.java
  14. 31 0
      triage-service/src/main/java/com/diagbot/service/impl/PartServiceImpl.java
  15. 8 1
      triage-service/src/main/java/com/diagbot/service/impl/SymptomServiceImpl.java
  16. 34 0
      triage-service/src/main/java/com/diagbot/vo/PartSymptomVO.java
  17. 37 0
      triage-service/src/main/java/com/diagbot/web/PartController.java
  18. 53 0
      triage-service/src/main/resources/mapper/PartMapper.xml
  19. 14 0
      triage-service/src/main/resources/mapper/SymptomMapper.xml

+ 1 - 0
triage-service/src/main/java/com/diagbot/config/ResourceServerConfigurer.java

@@ -27,6 +27,7 @@ public class ResourceServerConfigurer extends ResourceServerConfigurerAdapter {
                 .authorizeRequests()
                 .regexMatchers(".*swagger.*", ".*v2.*", ".*webjars.*", "/druid.*", "/actuator.*", "/hystrix.*").permitAll()
                 .antMatchers("/symptom/list").permitAll()
+                .antMatchers("/part/getSymptomByPartIds").permitAll()
                 .antMatchers("/**").authenticated();
         //        .antMatchers("/**").permitAll();
     }

+ 1 - 0
triage-service/src/main/java/com/diagbot/config/security/UrlAccessDecisionManager.java

@@ -66,6 +66,7 @@ public class UrlAccessDecisionManager implements AccessDecisionManager {
                 || matchers("/actuator/**", request)
                 || matchers("/hystrix/**", request)
                 || matchers("/symptom/list", request)
+                || matchers("/part/getSymptomByPartIds", request)
                 || matchers("/", request)) {
             return true;
         }

+ 23 - 0
triage-service/src/main/java/com/diagbot/dto/PartDTO.java

@@ -0,0 +1,23 @@
+package com.diagbot.dto;
+
+import com.diagbot.entity.SymptomWrapper;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @Description: 部位症状关联信息
+ * @Author: ztg
+ * @Date: 2018/10/24 16:11
+ */
+@Getter
+@Setter
+public class PartDTO {
+
+    private Long id;// 部位id
+    private String name;//部位名称
+    private Long parentId;// 上级id
+    private List<SymptomWrapper> symptomList = new ArrayList<>(); //症状列表
+}

+ 22 - 0
triage-service/src/main/java/com/diagbot/dto/PartSymptomDTO.java

@@ -0,0 +1,22 @@
+package com.diagbot.dto;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @Description: 部位症状关联信息
+ * @Author: ztg
+ * @Date: 2018/10/24 16:11
+ */
+@Getter
+@Setter
+public class PartSymptomDTO {
+
+    private Long id;// 部位id
+    private String name;//部位名称
+    private Long parentId;// 上级id
+    private List<PartDTO> partDTO = new ArrayList<>(); //部位信息
+}

+ 69 - 0
triage-service/src/main/java/com/diagbot/entity/Part.java

@@ -0,0 +1,69 @@
+package com.diagbot.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.io.Serializable;
+import java.util.Date;
+
+
+/**
+ * @Description: 部位表
+ * @Author: ztg
+ * @Date: 2018/10/24 15:52
+ */
+@TableName("triage_part")
+@Getter
+@Setter
+public class Part implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    /**
+     * 是否删除 N:未删除,Y:删除
+     */
+    private String isDeleted;
+
+    /**
+     * 记录创建时间
+     */
+    private Date gmtCreate;
+
+    /**
+     * 记录修改时间
+     */
+    private Date gmtModified;
+
+    /**
+     * 创建人,0表示无创建人值
+     */
+    private String creator;
+
+    /**
+     * 修改人,如果为0则表示纪录未修改
+     */
+    private String modifier;
+
+    /**
+     * 名称
+     */
+    private String name;
+
+    /**
+     * 上级部位
+     */
+    private Long parentId;
+
+    /**
+     * 备注
+     */
+    private String remark;
+
+
+}

+ 4 - 2
triage-service/src/main/java/com/diagbot/entity/Symptom.java

@@ -72,7 +72,9 @@ public class Symptom implements Serializable {
      */
     private Integer ageEnd;
 
-
-
+    /**
+     * 备注
+     */
+    private String remark;
 
 }

+ 85 - 0
triage-service/src/main/java/com/diagbot/entity/SymptomWrapper.java

@@ -0,0 +1,85 @@
+package com.diagbot.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * <p>
+ * 用户认证信息表
+ * </p>
+ *
+ * @author zhaops
+ * @since 2018-09-17
+ */
+@TableName("triage_symptom")
+@Getter
+@Setter
+public class SymptomWrapper implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    /**
+     * 是否删除 N:未删除,Y:删除
+     */
+    private String isDeleted;
+
+    /**
+     * 记录创建时间
+     */
+    private Date gmtCreate;
+
+    /**
+     * 记录修改时间
+     */
+    private Date gmtModified;
+
+    /**
+     * 创建人,0表示无创建人值
+     */
+    private String creator;
+
+    /**
+     * 修改人,如果为0则表示纪录未修改
+     */
+    private String modifier;
+
+    /**
+     * 名称
+     */
+    private String name;
+
+    /**
+     * 性别(1:男,2:女,3:共用)
+     */
+    private Integer sexType;
+
+    /**
+     * 最小年龄
+     */
+    private Integer ageBegin;
+
+    /**
+     * 最大年龄
+     */
+    private Integer ageEnd;
+
+    /**
+     * 备注
+     */
+    private String remark;
+
+    /**
+     * 部位id
+     */
+    private Long partId;
+
+}

+ 102 - 0
triage-service/src/main/java/com/diagbot/facade/PartFacade.java

@@ -0,0 +1,102 @@
+package com.diagbot.facade;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.diagbot.dto.PartDTO;
+import com.diagbot.dto.PartSymptomDTO;
+import com.diagbot.entity.Part;
+import com.diagbot.entity.SymptomWrapper;
+import com.diagbot.exception.CommonErrorCode;
+import com.diagbot.exception.CommonException;
+import com.diagbot.service.impl.PartServiceImpl;
+import com.diagbot.util.EntityUtil;
+import com.diagbot.util.ListUtil;
+import com.diagbot.vo.PartSymptomVO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @Description: 部位facade
+ * @Author: ztg
+ * @Date: 2018/10/23 16:33
+ */
+@Component
+public class PartFacade extends PartServiceImpl {
+
+    @Autowired
+    SymptomFacade symptomFacade;
+
+    /**
+     * 根据已选部位返回对应的症状
+     *
+     * @param partSymptomVO 参数
+     * @return 部位症状关联信息
+     */
+    public List<PartSymptomDTO> getSymptomByPartIds(PartSymptomVO partSymptomVO) {
+        List<Long> partIds = partSymptomVO.getPartIds();
+        if(ListUtil.isEmpty(partIds)) {
+            throw new CommonException(CommonErrorCode.SERVER_IS_ERROR,
+                    "请选择部位");
+        }
+        if(partSymptomVO.getSexType() == null) {
+            throw new CommonException(CommonErrorCode.SERVER_IS_ERROR,
+                    "请选择性别");
+        }
+        if(partSymptomVO.getAge() == null) {
+            throw new CommonException(CommonErrorCode.SERVER_IS_ERROR,
+                    "请选择年龄");
+        }
+        if(partSymptomVO.getAge().intValue() < 0 || partSymptomVO.getAge().intValue() > 200) {
+            throw new CommonException(CommonErrorCode.SERVER_IS_ERROR,
+                    "超出年龄范围【0 — 200】");
+        }
+        //添加默认部位-全身
+        QueryWrapper wrapper = new QueryWrapper();
+        wrapper.eq("name", "全身");
+        Part part = this.getOne(wrapper);
+        partIds.add(part.getId());
+        Map paramMap = new HashMap<>();
+        paramMap.put("ids", partIds);
+        List<PartSymptomDTO> res = this.getByPartId(paramMap);
+        List<PartDTO> partList = this.getByParentId(paramMap);
+
+        //添加二级部位信息
+        Map<Long, List<PartDTO>> keyMap = EntityUtil.makeEntityListMap(partList, "parentId");
+        for(PartSymptomDTO bean : res) {
+            bean.setPartDTO(keyMap.get(bean.getId()));
+        }
+
+        //添加部位和症状的关联信息
+        List<Long> idList = new ArrayList<>();
+        for(PartDTO bean : partList) {
+            idList.add(bean.getId());
+        }
+        Map paramMap1 = new HashMap<>();
+        paramMap1.put("ids", idList);
+        paramMap1.put("sexType", partSymptomVO.getSexType());
+        paramMap1.put("age", partSymptomVO.getAge());
+        List<SymptomWrapper> symptomList = symptomFacade.getByPartIdsFac(paramMap1);
+        Map<Long, List<SymptomWrapper>> partSymptomMap = EntityUtil.makeEntityListMap(symptomList, "partId");
+        for(PartDTO bean : partList) {
+            bean.setSymptomList(partSymptomMap.get(bean.getId()));
+        }
+
+        //如二级部位无关联的症状,删除二级部位
+//        for(int i = 0; i < res.size(); i++) {
+//            List<PartDTO> partDTO = res.get(i).getPartDTO();
+//            for(int j = 0; j < partDTO.size(); j++) {
+//                if(ListUtil.isEmpty(partDTO.get(j).getSymptomList())) {
+//                    partDTO.remove(j--);
+//                    break;
+//                }
+//            }
+//        }
+        return res;
+    }
+
+
+}

+ 11 - 0
triage-service/src/main/java/com/diagbot/facade/SymptomFacade.java

@@ -2,10 +2,12 @@ package com.diagbot.facade;
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.diagbot.entity.Symptom;
+import com.diagbot.entity.SymptomWrapper;
 import com.diagbot.service.impl.SymptomServiceImpl;
 import org.springframework.stereotype.Component;
 
 import java.util.List;
+import java.util.Map;
 
 /**
  * @Description: 症状
@@ -22,4 +24,13 @@ public class SymptomFacade extends SymptomServiceImpl{
     }
 
 
+    /**
+     * 根据部位partIds获取症状信息
+     * @param map
+     * @return
+     */
+    public List<SymptomWrapper> getByPartIdsFac(Map map) {
+        return this.getByPartIds(map);
+    }
+
 }

+ 31 - 0
triage-service/src/main/java/com/diagbot/mapper/PartMapper.java

@@ -0,0 +1,31 @@
+package com.diagbot.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.diagbot.dto.PartDTO;
+import com.diagbot.dto.PartSymptomDTO;
+import com.diagbot.entity.Part;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @Description: Mapper 接口
+ * @Author: ztg
+ * @Date: 2018/10/24 16:02
+ */
+public interface PartMapper extends BaseMapper<Part> {
+
+    /**
+     * 根据部位ids获取部位信息
+     * @param map
+     * @return
+     */
+    public List<PartSymptomDTO> getByPartId(Map map);
+
+    /**
+     * 根据部位parentIds获取部位信息
+     * @param map
+     * @return
+     */
+    public List<PartDTO> getByParentId(Map map);
+}

+ 13 - 6
triage-service/src/main/java/com/diagbot/mapper/SymptomMapper.java

@@ -2,15 +2,22 @@ package com.diagbot.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.diagbot.entity.Symptom;
+import com.diagbot.entity.SymptomWrapper;
+
+import java.util.List;
+import java.util.Map;
 
 /**
- * <p>
- * Mapper 接口
- * </p>
- *
- * @author gaodm
- * @since 2018-08-02
+ * @Description: 部位mapper
+ * @Author: ztg
+ * @Date: 2018/10/24 15:55
  */
 public interface SymptomMapper extends BaseMapper<Symptom> {
 
+    /**
+     * 根据部位ids获取症状信息
+     * @param map
+     * @return
+     */
+    public List<SymptomWrapper> getByPartIds(Map map);
 }

+ 34 - 0
triage-service/src/main/java/com/diagbot/service/PartService.java

@@ -0,0 +1,34 @@
+package com.diagbot.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.diagbot.dto.PartDTO;
+import com.diagbot.dto.PartSymptomDTO;
+import com.diagbot.entity.Part;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @Description: 服务类
+ * @Author: ztg
+ * @Date: 2018/10/24 16:03
+ */
+public interface PartService extends IService<Part> {
+
+    /**
+     * 根据部位ids获取部位信息
+     * @param map
+     * @return
+     */
+    public List<PartSymptomDTO> getByPartId(Map map);
+
+    /**
+     * 根据部位parentIds获取部位信息
+     * @param map
+     * @return
+     */
+    public List<PartDTO> getByParentId(Map map);
+
+
+
+}

+ 13 - 0
triage-service/src/main/java/com/diagbot/service/SymptomService.java

@@ -2,6 +2,10 @@ package com.diagbot.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.diagbot.entity.Symptom;
+import com.diagbot.entity.SymptomWrapper;
+
+import java.util.List;
+import java.util.Map;
 
 /**
  * <p>
@@ -12,4 +16,13 @@ import com.diagbot.entity.Symptom;
  * @since 2018-08-02
  */
 public interface SymptomService extends IService<Symptom> {
+
+
+    /**
+     * 根据部位ids获取症状信息
+     * @param map
+     * @return
+     */
+    public List<SymptomWrapper> getByPartIds(Map map);
+
 }

+ 31 - 0
triage-service/src/main/java/com/diagbot/service/impl/PartServiceImpl.java

@@ -0,0 +1,31 @@
+package com.diagbot.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.diagbot.dto.PartDTO;
+import com.diagbot.dto.PartSymptomDTO;
+import com.diagbot.entity.Part;
+import com.diagbot.mapper.PartMapper;
+import com.diagbot.service.PartService;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @Description: 服务实现类
+ * @Author: ztg
+ * @Date: 2018/10/24 16:02
+ */
+@Service
+public class PartServiceImpl extends ServiceImpl<PartMapper, Part> implements PartService {
+
+    @Override
+    public List<PartSymptomDTO> getByPartId(Map map) {
+        return baseMapper.getByPartId(map);
+    }
+
+    @Override
+    public List<PartDTO> getByParentId(Map map) {
+        return baseMapper.getByParentId(map);
+    }
+}

+ 8 - 1
triage-service/src/main/java/com/diagbot/service/impl/SymptomServiceImpl.java

@@ -2,11 +2,14 @@ package com.diagbot.service.impl;
 
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.diagbot.entity.Symptom;
-import com.diagbot.entity.SysLog;
+import com.diagbot.entity.SymptomWrapper;
 import com.diagbot.mapper.SymptomMapper;
 import com.diagbot.service.SymptomService;
 import org.springframework.stereotype.Service;
 
+import java.util.List;
+import java.util.Map;
+
 /**
  * <p>
  * 服务实现类
@@ -18,4 +21,8 @@ import org.springframework.stereotype.Service;
 @Service
 public class SymptomServiceImpl extends ServiceImpl<SymptomMapper, Symptom> implements SymptomService {
 
+    @Override
+    public List<SymptomWrapper> getByPartIds(Map map) {
+        return baseMapper.getByPartIds(map);
+    }
 }

+ 34 - 0
triage-service/src/main/java/com/diagbot/vo/PartSymptomVO.java

@@ -0,0 +1,34 @@
+package com.diagbot.vo;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.List;
+
+/**
+ * @Description: 部位症状参数
+ * @Author: ztg
+ * @Date: 2018/10/10 13:17
+ */
+@Getter
+@Setter
+public class PartSymptomVO {
+
+
+    /**
+     * 部位ids
+     */
+    private List<Long> partIds;
+
+
+    /**
+     * 性别
+     */
+    private Integer sexType;
+
+
+    /**
+     * 年龄
+     */
+    private Integer age;
+}

+ 37 - 0
triage-service/src/main/java/com/diagbot/web/PartController.java

@@ -0,0 +1,37 @@
+package com.diagbot.web;
+
+
+import com.diagbot.dto.PartSymptomDTO;
+import com.diagbot.dto.RespDTO;
+import com.diagbot.facade.PartFacade;
+import com.diagbot.vo.PartSymptomVO;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+
+/**
+ * @Description: 分诊部位Controller
+ * @Author: ztg
+ * @Date: 2018/10/23 15:09
+ */
+@RestController
+@RequestMapping("/part")
+public class PartController {
+
+    @Autowired
+    PartFacade partFacade;
+
+
+    @ApiOperation(value = "根据已选部位返回对应的症状", notes = "partIds: 部位的id,多个用逗号隔开")
+    @PostMapping("/getSymptomByPartIds")
+    public RespDTO<List<PartSymptomDTO>> getSymptomByPartIds(@RequestBody PartSymptomVO partSymptomVO) {
+        return RespDTO.onSuc(partFacade.getSymptomByPartIds(partSymptomVO));
+    }
+
+}
+

+ 53 - 0
triage-service/src/main/resources/mapper/PartMapper.xml

@@ -0,0 +1,53 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.diagbot.mapper.PartMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.diagbot.entity.Part">
+        <id column="id" property="id"/>
+        <result column="is_deleted" property="isDeleted"/>
+        <result column="gmt_create" property="gmtCreate"/>
+        <result column="gmt_modified" property="gmtModified"/>
+        <result column="creator" property="creator"/>
+        <result column="modifier" property="modifier"/>
+        <result column="name" property="name"/>
+        <result column="parent_id" property="parentId"/>
+        <result column="remark" property="remark"/>
+    </resultMap>
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="PartSymptomDTO" type="com.diagbot.dto.PartSymptomDTO">
+        <id column="id" property="id"/>
+        <result column="name" property="name"/>
+        <result column="parent_id" property="parentId"/>
+    </resultMap>
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="PartDTO" type="com.diagbot.dto.PartDTO">
+        <id column="id" property="id"/>
+        <result column="name" property="name"/>
+        <result column="parent_id" property="parentId"/>
+    </resultMap>
+
+    <select id="getByPartId" parameterType="java.util.Map" resultMap="PartSymptomDTO">
+        SELECT * FROM `triage_part` where is_deleted = 'N'
+        and id in
+        <foreach collection="ids" item="id" open="(" separator="," close=")">
+             #{id}
+        </foreach>
+    </select>
+
+
+    <select id="getByParentId" parameterType="java.util.Map" resultMap="PartDTO">
+        SELECT * FROM `triage_part` where is_deleted = 'N'
+        and parent_id in
+        <foreach collection="ids" item="id" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+        order by parent_id, order_no
+    </select>
+
+
+
+</mapper>

+ 14 - 0
triage-service/src/main/resources/mapper/SymptomMapper.xml

@@ -19,6 +19,20 @@
     </resultMap>
 
 
+    <select id="getByPartIds" parameterType="java.util.Map" resultType="com.diagbot.entity.SymptomWrapper">
+        SELECT a.*, b.part_id FROM `triage_symptom` a, triage_part_symptom b where a.is_deleted = 'N' and b.is_deleted = 'N'
+        and b.symptom_id = a.id
+        and b.part_id in
+        <foreach collection="ids" item="id" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+        and a.sex_type in (3, #{sexType})
+        <if test="age != null">
+            <![CDATA[ and a.age_begin <= #{age} ]]>
+            <![CDATA[ and a.age_end >= #{age} ]]>
+        </if>
+        order by b.part_id, b.order_no
+    </select>
 
 
 </mapper>