Przeglądaj źródła

化验大小项与公表项映射基础类

zhaops 5 lat temu
rodzic
commit
8b7435e52d

+ 38 - 0
icssman-service/src/main/java/com/diagbot/web/CacheController.java

@@ -0,0 +1,38 @@
+package com.diagbot.web;
+
+import com.diagbot.annotation.SysLogger;
+import com.diagbot.dto.RespDTO;
+import com.diagbot.facade.CacheFacade;
+import com.diagbot.vo.IdVO;
+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;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * @Description:
+ * @Author:zhaops
+ * @time: 2019/9/20 10:20
+ */
+@RestController
+@RequestMapping("/cache")
+@SuppressWarnings("unchecked")
+@Api(value = "缓存相关API", tags = { "缓存相关API" })
+public class CacheController {
+    @Autowired
+    CacheFacade cacheFacade;
+
+    @ApiOperation(value = "删除缓存[by:zhaops]",
+            notes = "")
+    @PostMapping("/clearCache")
+    @SysLogger("clearCache")
+    @Transactional
+    public RespDTO<Boolean> clearCache(@RequestBody IdVO idVO) {
+        cacheFacade.clearCache(idVO.getId());
+        return RespDTO.onSuc(true);
+    }
+}

+ 26 - 0
knowledgeman-service/src/main/java/com/diagbot/client/ICSSManServiceClient.java

@@ -0,0 +1,26 @@
+package com.diagbot.client;
+
+import com.diagbot.client.hystrix.ICSSManServiceHystrix;
+import com.diagbot.dto.RespDTO;
+import com.diagbot.entity.QuestionInfo;
+import com.diagbot.vo.IdVO;
+import com.diagbot.vo.QuestionIndexVO;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+
+import java.util.List;
+
+/**
+ * @Description:
+ * @Author:zhaops
+ * @time: 2019/9/20 9:55
+ */
+@FeignClient(value = "icssman-service", fallback = ICSSManServiceHystrix.class)
+public interface ICSSManServiceClient {
+    @PostMapping("/questionInfo/index")
+    RespDTO<List<QuestionInfo>> index(@RequestBody QuestionIndexVO questionIndexVO);
+
+    @PostMapping("/cache/clearCache")
+    RespDTO<Boolean> clearCache(@RequestBody IdVO idVO);
+}

+ 33 - 0
knowledgeman-service/src/main/java/com/diagbot/client/hystrix/ICSSManServiceHystrix.java

@@ -0,0 +1,33 @@
+package com.diagbot.client.hystrix;
+
+import com.diagbot.client.ICSSManServiceClient;
+import com.diagbot.dto.RespDTO;
+import com.diagbot.entity.QuestionInfo;
+import com.diagbot.vo.IdVO;
+import com.diagbot.vo.QuestionIndexVO;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Component;
+import org.springframework.web.bind.annotation.RequestBody;
+
+import java.util.List;
+
+/**
+ * @Description:
+ * @Author:zhaops
+ * @time: 2019/9/20 9:56
+ */
+@Component
+@Slf4j
+public class ICSSManServiceHystrix implements ICSSManServiceClient {
+    @Override
+    public RespDTO<List<QuestionInfo>> index(@RequestBody QuestionIndexVO questionIndexVO) {
+        log.error("【hystrix】调用{}异常", "index");
+        return null;
+    }
+
+    @Override
+    public RespDTO<Boolean> clearCache(@RequestBody IdVO idVO) {
+        log.error("【hystrix】调用{}异常", "clearCache");
+        return null;
+    }
+}

+ 23 - 0
knowledgeman-service/src/main/java/com/diagbot/dto/LisMappingPageDTO.java

@@ -0,0 +1,23 @@
+package com.diagbot.dto;
+
+import com.diagbot.entity.LisMapping;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.Date;
+
+/**
+ * @Description:化验公表映射出参
+ * @Author:zhaops
+ * @time: 2019/3/26 10:39
+ */
+@Getter
+@Setter
+public class LisMappingPageDTO extends LisMapping {
+    private String mealName;
+    private String itemName;
+    private String uniqueName;
+    private String operator;
+    private String operatorName;
+    private Date gmtOperate;
+}

+ 173 - 0
knowledgeman-service/src/main/java/com/diagbot/entity/QuestionInfo.java

@@ -0,0 +1,173 @@
+package com.diagbot.entity;
+
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * <p>
+ * 标签基础表
+ * </p>
+ *
+ * @author zhoutg
+ * @since 2018-12-03
+ */
+@TableName("icss_question_info")
+@Getter
+@Setter
+public class QuestionInfo 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 tagName;
+
+    /**
+     * 内容
+     */
+    private String name;
+
+    /**
+     * 性别(1:男 2:女 3:通用)
+     */
+    private Integer sexType;
+
+    /**
+     * 最小年龄
+     */
+    private Integer ageBegin;
+
+    /**
+     * 最大年龄
+     */
+    private Integer ageEnd;
+
+    /**
+     * 标签标识(1:单项单列,例如: 程度,咳出通畅度  2:单项多列,例如:杂音,添加症状 3:横铺单标签形式,例如:血压 4:横铺多标签形式,例如:咳嗽 5:竖铺组合项,例如:有无治疗 6:组合项多列 既往史 7:化验)
+     */
+    private Integer tagType;
+
+    /**
+     * 控件类型(0:无类型,默认值 1:下拉单选 2:下拉多选 3:纯文本 4:待定 5:待定 6:文本框 7:数字键盘文本框 99:联合推送)
+     */
+    private Integer controlType;
+
+    /**
+     * 类型(1:症状 3:其他史 4:查体,5:化验 6:辅检 7:诊断)
+     */
+    private Integer type;
+
+    /**
+     * 检索类型
+     */
+    private Integer subType;
+
+    /**
+     * 元素类型
+     */
+    private Integer itemType;
+
+    /**
+     * 前置内容
+     */
+    private String labelPrefix;
+
+    /**
+     * 后置内容
+     */
+    private String labelSuffix;
+
+    /**
+     * 最小值
+     */
+    @TableField(fill = FieldFill.UPDATE)
+    private BigDecimal minValue;
+
+    /**
+     * 最大值
+     */
+    @TableField(fill = FieldFill.UPDATE)
+    private BigDecimal maxValue;
+
+    /**
+     * 文本生成规则(0:点选顺序,例如初为 1:从上到下,从左到右,例如查体杂音 2:从左到右,从上到下,例如伴/无)
+     */
+    private Integer textGenerate;
+
+    /**
+     * 是否复制 (0:不复制,1:复制)
+     */
+    private Integer copyType;
+
+    /**
+     * 复制文字
+     */
+    private String showAdd;
+
+    /**
+     * 是否显示 i
+     */
+    private Integer showInfo;
+
+    /**
+     * 标签后的连接符
+     */
+    private String joint;
+
+    /**
+     * 公式编码
+     */
+    private String formulaCode;
+
+    /**
+     * 特殊标记(0:没有标记,1:主诉高亮,2:诱因记录)
+     */
+    private Integer specFlag;
+
+    /**
+     * 备注
+     */
+    private String remark;
+
+}

+ 204 - 1
knowledgeman-service/src/main/java/com/diagbot/facade/LisMappingFacade.java

@@ -1,12 +1,215 @@
 package com.diagbot.facade;
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.diagbot.client.ICSSManServiceClient;
+import com.diagbot.client.UserServiceClient;
+import com.diagbot.dto.LisMappingPageDTO;
+import com.diagbot.dto.RespDTO;
+import com.diagbot.entity.Concept;
+import com.diagbot.entity.LisMapping;
+import com.diagbot.entity.QuestionInfo;
+import com.diagbot.enums.IsDeleteEnum;
+import com.diagbot.exception.CommonErrorCode;
+import com.diagbot.exception.CommonException;
+import com.diagbot.service.impl.LisMappingServiceImpl;
+import com.diagbot.util.DateUtil;
+import com.diagbot.util.ListUtil;
+import com.diagbot.util.RespDTOUtil;
+import com.diagbot.util.UserUtils;
+import com.diagbot.vo.GetUniqueNameVO;
+import com.diagbot.vo.IdVO;
+import com.diagbot.vo.LisMappingPageVO;
+import com.diagbot.vo.LisMappingVO;
+import com.diagbot.vo.QuestionIndexVO;
+import com.google.common.collect.Lists;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
 /**
  * @Description:
  * @Author:zhaops
  * @time: 2019/9/19 11:42
  */
 @Component
-public class LisMappingFacade {
+public class LisMappingFacade extends LisMappingServiceImpl {
+    @Autowired
+    private ConceptFacade conceptFacade;
+    @Autowired
+    private UserServiceClient userServiceClient;
+    @Autowired
+    private ICSSManServiceClient icssManServiceClient;
+
+    /**
+     * 化验公表映射分页信息
+     *
+     * @param lisMappingPageVO
+     * @return
+     */
+    public IPage<LisMappingPageDTO> getLisMappingPage(LisMappingPageVO lisMappingPageVO) {
+        IPage<LisMappingPageDTO> dtoPage = this.lisMappingPage(lisMappingPageVO);
+        List<LisMappingPageDTO> records = dtoPage.getRecords();
+        List<String> userIds = records.stream().map(record -> record.getModifier()).collect(Collectors.toList());
+        RespDTO<Map<String, String>> data = userServiceClient.getUserInfoByIds(userIds);
+        Map<String, String> userInfos = data.data;
+        for (LisMappingPageDTO record : records) {
+            record.setGmtOperate(record.getGmtModified());
+            record.setOperator(record.getModifier());
+            record.setOperatorName(userInfos.get(record.getModifier()));
+        }
+        dtoPage.setRecords(records);
+        return dtoPage;
+    }
+
+    /**
+     * 保存化验公表映射关系
+     *
+     * @param lisMappingVO
+     * @return
+     */
+    public Boolean saveLisMapping(LisMappingVO lisMappingVO) {
+        String userId = UserUtils.getCurrentPrincipleID();
+        Date now = DateUtil.now();
+        LisMapping lisMapping = new LisMapping();
+        lisMapping.setCreator(userId);
+        lisMapping.setGmtCreate(now);
+
+        //验证医学术语是否存在
+        Concept mealConcept = conceptFacade.getById(lisMappingVO.getMealId());
+        if (mealConcept == null) {
+            throw new CommonException(CommonErrorCode.SERVER_IS_ERROR, "化验套餐项术语不存在");
+        }
+        if (lisMappingVO.getItemId() != null && !lisMappingVO.getItemId().equals(0L)) {
+            Concept itemConcept = conceptFacade.getById(lisMappingVO.getItemId());
+            if (itemConcept == null) {
+                throw new CommonException(CommonErrorCode.SERVER_IS_ERROR, "化验明细项术语不存在");
+            }
+        }
+        Concept uniqueConcept = conceptFacade.getById(lisMappingVO.getUniqueId());
+        if (uniqueConcept == null) {
+            throw new CommonException(CommonErrorCode.SERVER_IS_ERROR, "化验公表项项术语不存在");
+        }
+
+        QueryWrapper<LisMapping> lisMappingQueryWrapper = new QueryWrapper<>();
+        lisMappingQueryWrapper.eq("is_deleted", IsDeleteEnum.N.getKey())
+                .eq("meal_id", lisMappingVO.getMealId());
+        if (lisMappingVO.getItemId() == null || lisMappingVO.getItemId().equals(0L)) {
+            lisMappingQueryWrapper.and(i -> i.isNull("item_id").or(j -> j.eq("item_id", "0")));
+        } else {
+            lisMappingQueryWrapper.eq("item_id", lisMappingVO.getItemId());
+        }
+        List<LisMapping> lisMappingList = this.list(lisMappingQueryWrapper);
+        if (lisMappingList.size() > 1) {
+            throw new CommonException(CommonErrorCode.SERVER_IS_ERROR, "存在多条映射关系,请删除重复映射");
+        } else if (lisMappingList.size() == 1) {
+            lisMapping = lisMappingList.get(0);
+        }
+        lisMapping.setMealId(lisMappingVO.getMealId());
+        if (lisMappingVO.getItemId() == null || lisMappingVO.getItemId().equals(0L)) {
+            lisMapping.setItemId(0L);
+        } else {
+            lisMapping.setItemId(lisMappingVO.getItemId());
+        }
+        lisMapping.setUniqueId(lisMappingVO.getUniqueId());
+        lisMapping.setModifier(userId);
+        lisMapping.setGmtModified(now);
+        lisMapping.setIsDeleted(IsDeleteEnum.N.getKey());
+        Boolean state = this.saveOrUpdate(lisMapping);
+
+        //清除缓存
+        QuestionIndexVO questionIndexVO = new QuestionIndexVO();
+        questionIndexVO.setName(mealConcept.getLibName());
+        questionIndexVO.setType(5);
+        List<Integer> tagTypes = Lists.newArrayList();
+        tagTypes.add(7);
+        questionIndexVO.setTagType(tagTypes);
+        RespDTO<List<QuestionInfo>> respDTO = icssManServiceClient.index(questionIndexVO);
+        if (RespDTOUtil.respIsOK(respDTO)) {
+            List<QuestionInfo> questionInfoList = respDTO.data;
+            IdVO idVO = new IdVO();
+            idVO.setId(questionInfoList.get(0).getId());
+            RespDTO<Boolean> cacheRespDTO = icssManServiceClient.clearCache(idVO);
+        }
+        return state;
+    }
+
+    /**
+     * 判断映射关系是否已存在
+     *
+     * @param lisMappingVO
+     * @return
+     */
+    public Boolean hasLisMapping(LisMappingVO lisMappingVO) {
+        QueryWrapper<LisMapping> lisMappingQueryWrapper = new QueryWrapper<>();
+        lisMappingQueryWrapper.eq("is_deleted", IsDeleteEnum.N.getKey())
+                .eq("meal_id", lisMappingVO.getMealId());
+        if (lisMappingVO.getItemId() == null || lisMappingVO.getItemId().equals(0L)) {
+            lisMappingQueryWrapper.and(i -> i.isNull("item_id").or(j -> j.eq("item_id", "0")));
+        } else {
+            lisMappingQueryWrapper.eq("item_id", lisMappingVO.getItemId());
+        }
+        List<LisMapping> lisMappingList = this.list(lisMappingQueryWrapper);
+        if (ListUtil.isNotEmpty(lisMappingList)) {
+            return true;
+        } else {
+            return false;
+        }
+    }
+
+    /**
+     * 删除单条化验公表映射关系
+     *
+     * @param idVO
+     * @return
+     */
+    public Boolean delLisMappingById(IdVO idVO) {
+        String userId = UserUtils.getCurrentPrincipleID();
+        Date now = DateUtil.now();
+        LisMapping lisMapping = this.getById(idVO.getId());
+        if (lisMapping == null) {
+            throw new CommonException(CommonErrorCode.NOT_EXISTS, "映射关系不存在,不允许删除");
+        }
+        lisMapping.setIsDeleted(IsDeleteEnum.Y.getKey());
+        lisMapping.setModifier(userId);
+        lisMapping.setGmtModified(now);
+        Boolean state = this.updateById(lisMapping);
+        return state;
+    }
+
+
+    /**
+     * 获取化验公表名称
+     *
+     * @param getUniqueNameVO
+     * @return
+     */
+    public String getLisUniqueName(GetUniqueNameVO getUniqueNameVO) {
+        String uniqueName = "";
+        Concept mealConcept = conceptFacade.getById(getUniqueNameVO.getMealName());
+        Concept itemConcept = null;
+        if (getUniqueNameVO.getItemName() != null && !getUniqueNameVO.getItemName().equals(0L)) {
+            itemConcept = conceptFacade.getById(getUniqueNameVO.getItemName());
+        }
+        QueryWrapper<LisMapping> lisMappingQueryWrapper = new QueryWrapper<>();
+        lisMappingQueryWrapper.eq("is_deleted", IsDeleteEnum.N.getKey())
+                .eq("meal_id", mealConcept.getId());
+        if (itemConcept == null) {
+            lisMappingQueryWrapper.and(i -> i.isNull("item_id").or(j -> j.eq("item_id", 0)));
+        } else {
+            lisMappingQueryWrapper.eq("item_id", itemConcept.getId());
+        }
+        List<LisMapping> lisMappingList = this.list(lisMappingQueryWrapper);
+        if (ListUtil.isNotEmpty(lisMappingList)) {
+            Concept uniqueConcept = conceptFacade.getById(lisMappingList.get(0).getId());
+            if (uniqueConcept != null) {
+                uniqueName = uniqueConcept.getLibName();
+            }
+        }
+        return uniqueName;
+    }
 }

+ 12 - 2
knowledgeman-service/src/main/java/com/diagbot/mapper/LisMappingMapper.java

@@ -1,7 +1,11 @@
 package com.diagbot.mapper;
 
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.diagbot.dto.LisMappingPageDTO;
 import com.diagbot.entity.LisMapping;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.diagbot.vo.LisMappingPageVO;
+import org.apache.ibatis.annotations.Param;
 
 /**
  * <p>
@@ -12,5 +16,11 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
  * @since 2019-09-19
  */
 public interface LisMappingMapper extends BaseMapper<LisMapping> {
-
-}
+    /**
+     * 获取化验公表映射分页
+     *
+     * @param lisMappingPageVO
+     * @return
+     */
+    IPage<LisMappingPageDTO> lisMappingPage(@Param("lisMappingPageVO") LisMappingPageVO lisMappingPageVO);
+}

+ 11 - 1
knowledgeman-service/src/main/java/com/diagbot/service/LisMappingService.java

@@ -1,7 +1,11 @@
 package com.diagbot.service;
 
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.diagbot.dto.LisMappingPageDTO;
 import com.diagbot.entity.LisMapping;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.diagbot.vo.LisMappingPageVO;
+import org.apache.ibatis.annotations.Param;
 
 /**
  * <p>
@@ -12,5 +16,11 @@ import com.baomidou.mybatisplus.extension.service.IService;
  * @since 2019-09-19
  */
 public interface LisMappingService extends IService<LisMapping> {
-
+    /**
+     * 获取化验公表映射分页
+     *
+     * @param lisMappingPageVO
+     * @return
+     */
+    IPage<LisMappingPageDTO> lisMappingPage(@Param("lisMappingPageVO") LisMappingPageVO lisMappingPageVO);
 }

+ 13 - 1
knowledgeman-service/src/main/java/com/diagbot/service/impl/LisMappingServiceImpl.java

@@ -1,9 +1,13 @@
 package com.diagbot.service.impl;
 
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.diagbot.dto.LisMappingPageDTO;
 import com.diagbot.entity.LisMapping;
 import com.diagbot.mapper.LisMappingMapper;
 import com.diagbot.service.LisMappingService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.diagbot.vo.LisMappingPageVO;
+import org.apache.ibatis.annotations.Param;
 import org.springframework.stereotype.Service;
 
 /**
@@ -16,5 +20,13 @@ import org.springframework.stereotype.Service;
  */
 @Service
 public class LisMappingServiceImpl extends ServiceImpl<LisMappingMapper, LisMapping> implements LisMappingService {
-
+    /**
+     * 获取化验公表映射分页
+     *
+     * @param lisMappingPageVO
+     * @return
+     */
+    public IPage<LisMappingPageDTO> lisMappingPage(@Param("lisMappingPageVO") LisMappingPageVO lisMappingPageVO) {
+        return this.baseMapper.lisMappingPage(lisMappingPageVO);
+    }
 }

+ 19 - 0
knowledgeman-service/src/main/java/com/diagbot/vo/GetUniqueNameVO.java

@@ -0,0 +1,19 @@
+package com.diagbot.vo;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import javax.validation.constraints.NotBlank;
+
+/**
+ * @Description:
+ * @Author:zhaops
+ * @time: 2019/9/20 9:43
+ */
+@Getter
+@Setter
+public class GetUniqueNameVO {
+    @NotBlank(message = "请输入化验套餐")
+    private String mealName;
+    private String itemName;
+}

+ 18 - 0
knowledgeman-service/src/main/java/com/diagbot/vo/IdVO.java

@@ -0,0 +1,18 @@
+package com.diagbot.vo;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import javax.validation.constraints.NotNull;
+
+/**
+ * @Description:
+ * @Author:zhaops
+ * @time: 2019/9/20 9:51
+ */
+@Getter
+@Setter
+public class IdVO {
+    @NotNull(message = "请输入id")
+    private Long id;
+}

+ 18 - 0
knowledgeman-service/src/main/java/com/diagbot/vo/LisMappingPageVO.java

@@ -0,0 +1,18 @@
+package com.diagbot.vo;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * @Description: 化验公表映射分页入参
+ * @Author:zhaops
+ * @time: 2019/3/26 10:37
+ */
+@Getter
+@Setter
+public class LisMappingPageVO extends Page {
+    private String mealName;
+    private String itemName;
+    private String uniqueName;
+}

+ 21 - 0
knowledgeman-service/src/main/java/com/diagbot/vo/LisMappingVO.java

@@ -0,0 +1,21 @@
+package com.diagbot.vo;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import javax.validation.constraints.NotBlank;
+
+/**
+ * @Description: 化验公表项保存参数
+ * @Author:zhaops
+ * @time: 2019/3/26 19:58
+ */
+@Getter
+@Setter
+public class LisMappingVO {
+    @NotBlank(message = "请输入化验套餐ID")
+    private Long mealId;
+    private Long itemId;
+    @NotBlank(message = "请输入化验公表ID")
+    private Long uniqueId;
+}

+ 28 - 0
knowledgeman-service/src/main/java/com/diagbot/vo/QuestionIndexVO.java

@@ -0,0 +1,28 @@
+package com.diagbot.vo;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.List;
+
+/**
+ * @Description:
+ * @Author:zhoutg
+ * @time: 2018/11/29 15:09
+ */
+@Getter
+@Setter
+public class QuestionIndexVO {
+    private String tagName;
+    private String name;
+    private Integer sexType;
+    private Integer age;
+    private Integer type;
+    private List<Integer> controlType;
+    private List<Integer> tagType;
+    private List<Long> notIds;
+    private String existName; //是否重复
+    private List<Integer> notTagType;
+    private List<Integer> notControlType;
+    private List<String> filterList;
+}

+ 75 - 2
knowledgeman-service/src/main/java/com/diagbot/web/LisMappingController.java

@@ -1,12 +1,24 @@
 package com.diagbot.web;
 
 
+import com.diagbot.annotation.SysLogger;
+import com.diagbot.dto.RespDTO;
+import com.diagbot.facade.LisMappingFacade;
+import com.diagbot.vo.GetUniqueNameVO;
+import com.diagbot.vo.IdVO;
+import com.diagbot.vo.LisMappingPageVO;
+import com.diagbot.vo.LisMappingVO;
 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;
-
-import org.springframework.stereotype.Controller;
 import org.springframework.web.bind.annotation.RestController;
 
+import javax.validation.Valid;
+
 /**
  * <p>
  * 化验项目公表映射 前端控制器
@@ -19,5 +31,66 @@ import org.springframework.web.bind.annotation.RestController;
 @RequestMapping("/lisMapping")
 @Api(value = "化验大小项与公表项对应维护API", tags = { "知识库标准化-化验大小项与公表项对应维护API" })
 public class LisMappingController {
+    @Autowired
+    LisMappingFacade lisMappingFacade;
+
+    /**
+     * 分页查询提示信息,带条件查询
+     *
+     * @param lisMappingPageVO
+     * @return
+     */
+    @ApiOperation(value = "2期-分页查询提示信息,带条件[by:zhaops]",
+            notes = "current:页码,必填<br>" +
+                    "size:每页显示条数,必填<br>" +
+                    "mealName:大项名称<br>" +
+                    "itemName:小项名称<br>" +
+                    "uniqueName:公表名称<br>")
+    @PostMapping("/getLisMappingPage")
+    @SysLogger("getLisMappingPage")
+    public RespDTO getLisMappingPage(@RequestBody LisMappingPageVO lisMappingPageVO) {
+        return RespDTO.onSuc(lisMappingFacade.getLisMappingPage(lisMappingPageVO));
+    }
+
+    @ApiOperation(value = "2期-化验公表项映射保存[by:zhaops]",
+            notes = "mealName:大项名称,必填<br>" +
+                    "itemName:小项名称<br>" +
+                    "uniqueName:公表名称,必填<br>")
+    @PostMapping("/saveLisMapping")
+    @SysLogger("saveLisMapping")
+    @Transactional
+    public RespDTO<Boolean> saveLisMapping(@RequestBody @Valid LisMappingVO lisMappingVO) {
+        return RespDTO.onSuc(lisMappingFacade.saveLisMapping(lisMappingVO));
+    }
+
+    @ApiOperation(value = "2期-化验公表项映射是否已存在[by:zhaops]",
+            notes = "mealName:大项名称,必填<br>" +
+                    "itemName:小项名称<br>" +
+                    "uniqueName:公表名称,必填<br>")
+    @PostMapping("/hasLisMapping")
+    @SysLogger("hasLisMapping")
+    @Transactional
+    public RespDTO<Boolean> hasLisMapping(@RequestBody @Valid LisMappingVO lisMappingVO) {
+        return RespDTO.onSuc(lisMappingFacade.hasLisMapping(lisMappingVO));
+    }
+
+    @ApiOperation(value = "2期-删除单条化验公表项映射[by:zhaops]",
+            notes = "id:id,必填<br>")
+    @PostMapping("/delLisMappingById")
+    @SysLogger("delLisMappingById")
+    @Transactional
+    public RespDTO<Boolean> delLisMappingById(@RequestBody @Valid IdVO idVO) {
+        return RespDTO.onSuc(lisMappingFacade.delLisMappingById(idVO));
+    }
+
+    @ApiOperation(value = "查找化验公表名[by:zhaops]",
+            notes = "mealName:大项名称,必填<br>" +
+                    "itemName:小项名称<br>")
+    @PostMapping("/getUniqueName")
+    @SysLogger("getUniqueName")
+    @Transactional
+    public RespDTO<String> getUniqueName(@RequestBody @Valid GetUniqueNameVO getUniqueNameVO) {
+        return RespDTO.onSuc(lisMappingFacade.getLisUniqueName(getUniqueNameVO));
+    }
 
 }

+ 51 - 0
knowledgeman-service/src/main/resources/mapper/LisMappingMapper.xml

@@ -15,4 +15,55 @@
         <result column="unique_id" property="uniqueId" />
     </resultMap>
 
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultDTOMap" type="com.diagbot.dto.LisMappingPageDTO">
+        <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="meal_id" property="mealId" />
+        <result column="item_id" property="itemId" />
+        <result column="unique_id" property="uniqueId" />
+        <result column="meal_name" property="mealName" />
+        <result column="item_name" property="itemName" />
+        <result column="unique_name" property="uniqueName" />
+    </resultMap>
+
+    <!-- 分页查询 -->
+    <select id="lisMappingPage" resultMap="BaseResultDTOMap">
+        SELECT
+        lis_mapping.*, item_con.lib_name AS itemName
+        FROM
+        (
+        SELECT
+        lis.*, meal_con.lib_name AS mealName,
+        unique_con.lib_name AS uniqueName
+        FROM
+        kl_lis_mapping lis,
+        kl_concept meal_con,
+        kl_concept unique_con
+        WHERE
+        lis.is_deleted = 'N'
+        AND meal_con.is_deleted = 'N'
+        AND unique_con.is_deleted = 'N'
+        AND lis.meal_id = meal_con.id
+        AND lis.unique_id = unique_con.id
+        ) lis_mapping
+        LEFT JOIN kl_concept item_con ON lis_mapping.item_id = item_con.id
+        AND item_con.is_deleted = 'N'
+        WHERE 1=1
+        <if test="lisMappingPageVO.mealName != null and lisMappingPageVO.mealName != '' ">
+            and lis_mapping.meal_name like concat('%',#{lisMappingPageVO.mealName},'%')
+        </if>
+        <if test="lisMappingPageVO.itemName != null and lisMappingPageVO.itemName != '' ">
+            and item_con.item_name like concat('%',#{lisMappingPageVO.itemName},'%')
+        </if>
+        <if test="lisMappingPageVO.uniqueName != null and lisMappingPageVO.uniqueName != '' ">
+            and lis_mapping.unique_name like concat('%',#{lisMappingPageVO.uniqueName},'%')
+        </if>
+        order by lis_mapping.gmt_modified desc
+    </select>
+
 </mapper>