Browse Source

智能预问诊获取模板

wangyu 6 years ago
parent
commit
a1a2d0a4fe
19 changed files with 702 additions and 0 deletions
  1. 11 0
      prec-service/src/main/java/com/diagbot/client/AiptServiceClient.java
  2. 8 0
      prec-service/src/main/java/com/diagbot/client/hystrix/AiptServiceHystrix.java
  3. 30 0
      prec-service/src/main/java/com/diagbot/dto/ModuleDetailDTO.java
  4. 32 0
      prec-service/src/main/java/com/diagbot/dto/ModuleInfoDTO.java
  5. 99 0
      prec-service/src/main/java/com/diagbot/entity/ModuleDetail.java
  6. 83 0
      prec-service/src/main/java/com/diagbot/entity/ModuleInfo.java
  7. 28 0
      prec-service/src/main/java/com/diagbot/facade/ModuleDetailFacade.java
  8. 132 0
      prec-service/src/main/java/com/diagbot/facade/ModuleFacade.java
  9. 20 0
      prec-service/src/main/java/com/diagbot/mapper/ModuleDetailMapper.java
  10. 16 0
      prec-service/src/main/java/com/diagbot/mapper/ModuleInfoMapper.java
  11. 27 0
      prec-service/src/main/java/com/diagbot/service/ModuleDetailService.java
  12. 16 0
      prec-service/src/main/java/com/diagbot/service/ModuleInfoService.java
  13. 27 0
      prec-service/src/main/java/com/diagbot/service/impl/ModuleDetailServiceImpl.java
  14. 20 0
      prec-service/src/main/java/com/diagbot/service/impl/ModuleInfoServiceImpl.java
  15. 18 0
      prec-service/src/main/java/com/diagbot/vo/ConceptSearchVO.java
  16. 20 0
      prec-service/src/main/java/com/diagbot/vo/ModuleVO.java
  17. 45 0
      prec-service/src/main/java/com/diagbot/web/ModuleInfoController.java
  18. 50 0
      prec-service/src/main/resources/mapper/ModuleDetailMapper.xml
  19. 20 0
      prec-service/src/main/resources/mapper/ModuleInfoMapper.xml

+ 11 - 0
prec-service/src/main/java/com/diagbot/client/AiptServiceClient.java

@@ -7,6 +7,7 @@ import com.diagbot.dto.ConceptRetrievalDTO;
 import com.diagbot.dto.GetTopPatientInfoDTO;
 import com.diagbot.dto.PushDTO;
 import com.diagbot.dto.RespDTO;
+import com.diagbot.vo.ConceptSearchVO;
 import com.diagbot.vo.ConceptUsualVO;
 import com.diagbot.vo.GetTopPatientInfoVO;
 import com.diagbot.vo.RetrievalVO;
@@ -16,6 +17,7 @@ import org.springframework.web.bind.annotation.RequestBody;
 
 import javax.validation.Valid;
 import java.util.List;
+import java.util.Map;
 
 /**
  * @Description:调用中间层服务
@@ -59,4 +61,13 @@ public interface AiptServiceClient {
      */
     @PostMapping("/concept/retrivelConceptInfo")
     RespDTO<List<ConceptRetrievalDTO>> retrivelConceptInfo(@RequestBody @Valid RetrievalVO retrievalVO);
+
+    /**
+     * 根据概念Id列表获取概念列表Map
+     *
+     * @param conceptSearchVO 搜索参数
+     * @return 术语id和术语 Map
+     */
+    @PostMapping("/concept/getConceptMap")
+    RespDTO<Map<Long, String>> getConceptMap(@RequestBody ConceptSearchVO conceptSearchVO);
 }

+ 8 - 0
prec-service/src/main/java/com/diagbot/client/hystrix/AiptServiceHystrix.java

@@ -7,6 +7,7 @@ import com.diagbot.dto.ConceptRetrievalDTO;
 import com.diagbot.dto.GetTopPatientInfoDTO;
 import com.diagbot.dto.PushDTO;
 import com.diagbot.dto.RespDTO;
+import com.diagbot.vo.ConceptSearchVO;
 import com.diagbot.vo.ConceptUsualVO;
 import com.diagbot.vo.GetTopPatientInfoVO;
 
@@ -17,6 +18,7 @@ import org.springframework.web.bind.annotation.RequestBody;
 
 import javax.validation.Valid;
 import java.util.List;
+import java.util.Map;
 
 /**
  * @Description:调用中间层服务
@@ -55,4 +57,10 @@ public class AiptServiceHystrix implements AiptServiceClient {
         log.error("【hystrix】调用{}异常", "retrivelConceptInfo");
         return null;
     }
+
+    @Override
+    public RespDTO<Map<Long, String>> getConceptMap(ConceptSearchVO conceptSearchVO) {
+        log.error("【hystrix】调用{}异常", "getConceptMap");
+        return null;
+    }
 }

+ 30 - 0
prec-service/src/main/java/com/diagbot/dto/ModuleDetailDTO.java

@@ -0,0 +1,30 @@
+package com.diagbot.dto;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import java.io.Serializable;
+
+/**
+ * <p>
+ * 模型明细表
+ * </p>
+ *
+ * @author zhoutg
+ * @since 2018-11-15
+ */
+@Getter
+@Setter
+public class ModuleDetailDTO extends QuestionDTO implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    private String prefix; //模板前缀
+    private String suffix; //模板后缀
+    private Long moduleId; //模型id
+    private Long questionId; //questionId
+    private String flag; //特殊标识
+    private Long relationModule; //关联模板
+    private String relationModuleName;//关联模板名称
+
+}

+ 32 - 0
prec-service/src/main/java/com/diagbot/dto/ModuleInfoDTO.java

@@ -0,0 +1,32 @@
+package com.diagbot.dto;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * <p>
+ * 模型表
+ * </p>
+ *
+ * @author zhoutg
+ * @since 2018-11-15
+ */
+@Getter
+@Setter
+@TableName("icss_module_info")
+public class ModuleInfoDTO implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    private Long id; //主键
+    private String name;//名称
+    private List<ModuleDetailDTO> moduleDetailDTOList = new ArrayList<>(); //模板明细表
+    private String type;//模板类型
+    private String remark;
+
+}

+ 99 - 0
prec-service/src/main/java/com/diagbot/entity/ModuleDetail.java

@@ -0,0 +1,99 @@
+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 zhoutg
+ * @since 2018-11-22
+ */
+@TableName("prec_module_detail")
+@Getter
+@Setter
+public class ModuleDetail 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;
+
+    /**
+     * 记录修改时间,如果时间是1970年则表示纪录未修改
+     */
+    private Date gmtModified;
+
+    /**
+     * 创建人,0表示无创建人值
+     */
+    private String creator;
+
+    /**
+     * 修改人,如果为0则表示纪录未修改
+     */
+    private String modifier;
+
+    /**
+     * 名称
+     */
+    private Long moduleId;
+
+    /**
+     * 前置内容
+     */
+    private String prefix;
+
+    /**
+     * 后置内容
+     */
+    private String suffix;
+
+    /**
+     * questionId
+     */
+    private Long questionId;
+
+    /**
+     * 关联模板
+     */
+    private Long relationModule;
+
+
+    /**
+     * 特殊标识
+     */
+    private String flag;
+
+    /**
+     * 排序号
+     */
+    private Integer orderNo;
+
+    /**
+     * 备注
+     */
+    private String remark;
+
+}

+ 83 - 0
prec-service/src/main/java/com/diagbot/entity/ModuleInfo.java

@@ -0,0 +1,83 @@
+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 zhoutg
+ * @since 2018-11-15
+ */
+@Getter
+@Setter
+@TableName("prec_module_info")
+public class ModuleInfo 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;
+
+    /**
+     * 记录修改时间,如果时间是1970年则表示纪录未修改
+     */
+    private Date gmtModified;
+
+    /**
+     * 创建人,0表示无创建人值
+     */
+    private String creator;
+
+    /**
+     * 修改人,如果为0则表示纪录未修改
+     */
+    private String modifier;
+
+    /**
+     * 名称
+     */
+    private String name;
+
+    /**
+     * 类型
+     */
+    private String type;
+
+    /**
+     * 慢病
+     */
+    private Long moduleType;
+
+    /**
+     * 备注
+     */
+    private String remark;
+
+    /**
+     * 关联id
+     */
+    private Long relationId;
+
+}

+ 28 - 0
prec-service/src/main/java/com/diagbot/facade/ModuleDetailFacade.java

@@ -0,0 +1,28 @@
+package com.diagbot.facade;
+
+import com.diagbot.entity.ModuleDetail;
+import com.diagbot.service.impl.ModuleDetailServiceImpl;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @Description: 模型明细务层
+ * @author: zhoutg
+ * @time: 2018/8/6 9:11
+ */
+@Component
+public class ModuleDetailFacade extends ModuleDetailServiceImpl {
+
+
+    /**
+     * 根据moduleId,sexType,age获取模型
+     *
+     * @param map
+     * @return 模型数据
+     */
+    public List<ModuleDetail> getDetailByModuleFac(Map map) {
+        return this.getDetailByModule(map);
+    }
+}

+ 132 - 0
prec-service/src/main/java/com/diagbot/facade/ModuleFacade.java

@@ -0,0 +1,132 @@
+package com.diagbot.facade;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.diagbot.client.AiptServiceClient;
+import com.diagbot.dto.ModuleDetailDTO;
+import com.diagbot.dto.ModuleInfoDTO;
+import com.diagbot.dto.QuestionDTO;
+import com.diagbot.entity.ModuleDetail;
+import com.diagbot.entity.ModuleInfo;
+import com.diagbot.enums.IsDeleteEnum;
+import com.diagbot.service.impl.ModuleInfoServiceImpl;
+import com.diagbot.util.BeanUtil;
+import com.diagbot.util.EntityUtil;
+import com.diagbot.util.ListUtil;
+import com.diagbot.vo.ConceptSearchVO;
+import com.diagbot.vo.ModuleVO;
+import com.diagbot.vo.QuestionVO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+/**
+ * @Description: 模型业务层
+ * @author: zhoutg
+ * @time: 2018/8/6 9:11
+ */
+@Component
+public class ModuleFacade extends ModuleInfoServiceImpl {
+
+    @Autowired
+    ModuleDetailFacade moduleDetailFacade;
+    @Autowired
+    QuestionFacade questionFacade;
+    @Autowired
+    AiptServiceClient aiptServiceClient;
+
+    /**
+     * 返回所有的模型结构
+     *
+     * @return 模型结构
+     */
+    public List<ModuleInfoDTO> getAll(ModuleVO moduleVO) {
+        ConceptSearchVO conceptSearchVO = new ConceptSearchVO();
+        List<ModuleInfoDTO> data = new ArrayList<>();
+        //取到所有模板信息
+        List<ModuleInfo> list = new ArrayList<>();
+        List<Long> ids = new ArrayList<>();
+        Boolean isDefault = false;
+        if (moduleVO.getMouduleType().intValue() == 1) {
+            //根据科室筛选如果没有,返回通用模板
+            list = getModuleInfoByDisType(moduleVO.getMouduleType(), moduleVO.getRelationId());
+            if (ListUtil.isNotEmpty(list)) {
+                ids = list.stream()
+                        .map(moduleInfo -> moduleInfo.getId())
+                        .collect(Collectors.toList());
+            } else {
+                isDefault = true;
+            }
+        } else {
+            isDefault = true;
+        }
+
+        //科室没有内容,或者默认情况下,需要推测出默认模板
+        if (isDefault) {
+            //默认
+            list = getModuleInfoByDisType(0, 0L);
+            ids = list.stream()
+                    .map(moduleInfo -> moduleInfo.getId())
+                    .collect(Collectors.toList());
+        }
+        data = BeanUtil.listCopyTo(list, ModuleInfoDTO.class);
+        Map<Long, ModuleInfo> moduleInfoMap
+                = list.stream().collect(Collectors.toMap(ModuleInfo::getId, moduleInfo -> moduleInfo));
+        Map<Long, List<ModuleDetail>> moduleDetailMap = new LinkedHashMap<>();
+        //取到所有模板明细
+        if (ListUtil.isNotEmpty(ids)) {
+            Map<String, Object> paramMap = new HashMap<>();
+            paramMap.put("ids", ids);
+            paramMap.put("sexType", moduleVO.getSexType());
+            paramMap.put("age", moduleVO.getAge());
+            List<ModuleDetail> moduleDetailList = moduleDetailFacade.getDetailByModuleFac(paramMap);
+            if (ListUtil.isNotEmpty(moduleDetailList)) {
+                moduleDetailMap = EntityUtil.makeEntityListMap(moduleDetailList, "moduleId");
+            }
+
+        }
+        //循环放入模板明细
+        List<ModuleDetailDTO> moduleDetailDTOList = new ArrayList<>();
+        for (ModuleInfoDTO bean : data) {
+            if (moduleDetailMap.get(bean.getId()) != null) {
+                moduleDetailDTOList = BeanUtil.listCopyTo(moduleDetailMap.get(bean.getId()), ModuleDetailDTO.class);
+                for (ModuleDetailDTO detailDTO : moduleDetailDTOList) {
+                    if (null != detailDTO.getQuestionId()) {
+                        QuestionVO questionVO = new QuestionVO();
+                        questionVO.setId(detailDTO.getQuestionId());
+                        questionVO.setSexType(moduleVO.getSexType());
+                        questionVO.setAge(moduleVO.getAge());
+                        QuestionDTO questionDTO = questionFacade.getById(questionVO);
+                        BeanUtil.copyProperties(questionDTO, detailDTO);
+                    }
+                    if (null != detailDTO.getRelationModule() &&
+                            moduleInfoMap.get(detailDTO.getRelationModule()) != null) {
+                            detailDTO.setRelationModuleName(moduleInfoMap.get(detailDTO.getRelationModule()).getName());
+                    }
+                }
+                bean.setModuleDetailDTOList(moduleDetailDTOList);
+            }
+        }
+        return data;
+    }
+
+    /**
+     * 获取相应类型的模板信息
+     *
+     * @param moduleType
+     * @return
+     */
+    public List<ModuleInfo> getModuleInfoByDisType(Integer moduleType, Long relationId) {
+        QueryWrapper<ModuleInfo> queryWrapper = new QueryWrapper();
+        queryWrapper.eq("is_deleted", IsDeleteEnum.N.getKey())
+                .eq("module_type", moduleType)
+                .eq("relation_id", relationId);
+        queryWrapper.orderByAsc("id");
+        return this.list(queryWrapper);
+    }
+}

+ 20 - 0
prec-service/src/main/java/com/diagbot/mapper/ModuleDetailMapper.java

@@ -0,0 +1,20 @@
+package com.diagbot.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.diagbot.entity.ModuleDetail;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * <p>
+ * 模型明细表 Mapper 接口
+ * </p>
+ *
+ * @author zhoutg
+ * @since 2018-11-22
+ */
+public interface ModuleDetailMapper extends BaseMapper<ModuleDetail> {
+
+    public List<ModuleDetail> getDetailByModule(Map map);
+}

+ 16 - 0
prec-service/src/main/java/com/diagbot/mapper/ModuleInfoMapper.java

@@ -0,0 +1,16 @@
+package com.diagbot.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.diagbot.entity.ModuleInfo;
+
+/**
+ * <p>
+ * 模型表 Mapper 接口
+ * </p>
+ *
+ * @author zhoutg
+ * @since 2018-11-15
+ */
+public interface ModuleInfoMapper extends BaseMapper<ModuleInfo> {
+
+}

+ 27 - 0
prec-service/src/main/java/com/diagbot/service/ModuleDetailService.java

@@ -0,0 +1,27 @@
+package com.diagbot.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.diagbot.entity.ModuleDetail;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * <p>
+ * 模型明细表 服务类
+ * </p>
+ *
+ * @author zhoutg
+ * @since 2018-11-22
+ */
+public interface ModuleDetailService extends IService<ModuleDetail> {
+
+
+    /**
+     * 根据moduleId,sexType,age获取模型
+     *
+     * @param map
+     * @return 模型数据
+     */
+    public List<ModuleDetail> getDetailByModule(Map map);
+}

+ 16 - 0
prec-service/src/main/java/com/diagbot/service/ModuleInfoService.java

@@ -0,0 +1,16 @@
+package com.diagbot.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.diagbot.entity.ModuleInfo;
+
+/**
+ * <p>
+ * 模型表 服务类
+ * </p>
+ *
+ * @author zhoutg
+ * @since 2018-11-15
+ */
+public interface ModuleInfoService extends IService<ModuleInfo> {
+
+}

+ 27 - 0
prec-service/src/main/java/com/diagbot/service/impl/ModuleDetailServiceImpl.java

@@ -0,0 +1,27 @@
+package com.diagbot.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.diagbot.entity.ModuleDetail;
+import com.diagbot.mapper.ModuleDetailMapper;
+import com.diagbot.service.ModuleDetailService;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * <p>
+ * 模型明细表 服务实现类
+ * </p>
+ *
+ * @author zhoutg
+ * @since 2018-11-22
+ */
+@Service
+public class ModuleDetailServiceImpl extends ServiceImpl<ModuleDetailMapper, ModuleDetail> implements ModuleDetailService {
+
+    @Override
+    public List<ModuleDetail> getDetailByModule(Map map) {
+        return baseMapper.getDetailByModule(map);
+    }
+}

+ 20 - 0
prec-service/src/main/java/com/diagbot/service/impl/ModuleInfoServiceImpl.java

@@ -0,0 +1,20 @@
+package com.diagbot.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.diagbot.entity.ModuleInfo;
+import com.diagbot.mapper.ModuleInfoMapper;
+import com.diagbot.service.ModuleInfoService;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 模型表 服务实现类
+ * </p>
+ *
+ * @author zhoutg
+ * @since 2018-11-15
+ */
+@Service
+public class ModuleInfoServiceImpl extends ServiceImpl<ModuleInfoMapper, ModuleInfo> implements ModuleInfoService {
+
+}

+ 18 - 0
prec-service/src/main/java/com/diagbot/vo/ConceptSearchVO.java

@@ -0,0 +1,18 @@
+package com.diagbot.vo;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.List;
+
+/**
+ * @Description:
+ * @author: gaodm
+ * @time: 2019/5/6 18:50
+ */
+@Getter
+@Setter
+public class ConceptSearchVO {
+    //术语Id列表
+    private List<Long> conceptIds;
+}

+ 20 - 0
prec-service/src/main/java/com/diagbot/vo/ModuleVO.java

@@ -0,0 +1,20 @@
+package com.diagbot.vo;
+
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * @Description: 模型入参
+ * @author: zhoutg
+ * @time: 2018/8/6 10:16
+ */
+@Getter
+@Setter
+public class ModuleVO {
+    private Integer sexType;
+    private Integer age;
+    //模板类型
+    private Integer mouduleType;
+    //科室id
+    private Long relationId;
+}

+ 45 - 0
prec-service/src/main/java/com/diagbot/web/ModuleInfoController.java

@@ -0,0 +1,45 @@
+package com.diagbot.web;
+
+
+import com.diagbot.dto.ModuleInfoDTO;
+import com.diagbot.dto.RespDTO;
+import com.diagbot.facade.ModuleFacade;
+import com.diagbot.vo.ModuleVO;
+import io.swagger.annotations.Api;
+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;
+
+/**
+ * <p>
+ * 模型表 前端控制器
+ * </p>
+ *
+ * @author zhoutg
+ * @since 2018-11-15
+ */
+@RestController
+@RequestMapping("/moduleInfo")
+@Api(value = "模型相关API", tags = { "智能预问诊-模型相关API" })
+@SuppressWarnings("unchecked")
+public class ModuleInfoController {
+
+    @Autowired
+    ModuleFacade moduleFacade;
+
+    @ApiOperation(value = "知识库标准化-返回所有的模型数据[by:wangyu]",
+            notes = "moduleType: 模板类型(0.通用 1.根据科室划分 2.慢病)<br>" +
+                    "relationId: 关联id,当moduleType为0时传0,当moduleType为1时,传科室id,当moduleType为2时传疾病id<br>" +
+                    "age: 年龄<br>" +
+                    "sex: 性别(1.男 2.女 3.通用)")
+    @PostMapping("/getAll")
+    public RespDTO<List<ModuleInfoDTO>> getAll(@RequestBody ModuleVO moduleVO) {
+        List<ModuleInfoDTO> data = moduleFacade.getAll(moduleVO);
+        return RespDTO.onSuc(data);
+    }
+}

+ 50 - 0
prec-service/src/main/resources/mapper/ModuleDetailMapper.xml

@@ -0,0 +1,50 @@
+<?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.ModuleDetailMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.diagbot.entity.ModuleDetail">
+        <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="module_id" property="moduleId" />
+        <result column="prefix" property="prefix" />
+        <result column="suffix" property="suffix" />
+        <result column="question_id" property="questionId" />
+        <result column="flag" property="flag" />
+        <result column="relation_module" property="relationModule" />
+        <result column="order_no" property="orderNo" />
+        <result column="remark" property="remark" />
+    </resultMap>
+
+
+    <select id="getDetailByModule" parameterType="java.util.Map" resultMap="BaseResultMap">
+        select t3.* from
+        (select  DISTINCT t1.* from
+        prec_module_detail t1 left join prec_question_info t2 on t1.question_id = t2.id
+        where t1.is_deleted = 'N' and t2.is_deleted = 'N'
+        and t1.module_id in
+        <foreach item="id" collection="ids" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+        <if test="sexType != null and sexType != ''">
+            and t2.sex_type in (3, #{sexType})
+        </if>
+        <if test="age != null and age != ''">
+            <![CDATA[ and t2.age_begin <= #{age} ]]>
+            <![CDATA[ and t2.age_end >= #{age} ]]>
+        </if>
+        union
+        select  DISTINCT t1.* from
+        prec_module_detail t1 where t1.question_id is null and  t1.is_deleted = 'N'
+        and t1.module_id in
+        <foreach item="id" collection="ids" open="(" separator="," close=")">
+            #{id}
+        </foreach>) t3
+        order by t3.module_id, t3.order_no
+    </select>
+
+</mapper>

+ 20 - 0
prec-service/src/main/resources/mapper/ModuleInfoMapper.xml

@@ -0,0 +1,20 @@
+<?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.ModuleInfoMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.diagbot.entity.ModuleInfo">
+        <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="type" property="type" />
+        <result column="module_type" property="moduleType" />
+        <result column="relation_id" property="relationId" />
+        <result column="remark" property="remark" />
+    </resultMap>
+
+</mapper>