Quellcode durchsuchen

标签关联条目

zhoutg vor 5 Jahren
Ursprung
Commit
38790505cc

+ 16 - 0
mrman-service/src/main/java/com/diagbot/dto/QuesCasesEntryDTO.java

@@ -0,0 +1,16 @@
+package com.diagbot.dto;
+
+import lombok.Data;
+
+/**
+ * @author wangfeng
+ * @Description:
+ * @date 2020-04-27 10:09
+ */
+@Data
+public class QuesCasesEntryDTO {
+    private static final long serialVersionUID = 1L;
+
+    private Long casesEntryId; // 条目id
+    private String casesEntryName; // 条目名称
+}

+ 1 - 1
mrman-service/src/main/java/com/diagbot/dto/QuestionDTO.java

@@ -27,7 +27,7 @@ public class QuestionDTO {
     private Integer addLine; //换行(0:不换行,1:换行)
     private Integer bold;//换行(0:不换行,1:加粗)
     private Integer position; //显示位置(1:靠右显示)
-    private String casesEntryIds;//质控条目id列表
+    private List<QuesCasesEntryDTO> quesCasesEntryDTOList = new ArrayList<>(); //质控条目明细
     private List<QuestionDTO> questionMapping = new ArrayList<>();     //下级标签
     private String remark;//备注
 }

+ 73 - 0
mrman-service/src/main/java/com/diagbot/entity/QcQuestionEntry.java

@@ -0,0 +1,73 @@
+package com.diagbot.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * <p>
+ * 标签条目映射表
+ * </p>
+ *
+ * @author zhoutg
+ * @since 2020-05-07
+ */
+@Data
+public class QcQuestionEntry 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;
+
+    /**
+     * question_id
+     */
+    private Long questionId;
+
+    /**
+     * cases_entry_id
+     */
+    private Long casesEntryId;
+
+    /**
+     * 排序号
+     */
+    private Integer orderNo;
+
+    /**
+     * 备注
+     */
+    private String remark;
+}

+ 2 - 2
mrman-service/src/main/java/com/diagbot/entity/wrapper/QuestionWrapper.java

@@ -1,5 +1,6 @@
 package com.diagbot.entity.wrapper;
 
+import com.diagbot.vo.QuesCasesEntryVO;
 import lombok.Data;
 
 import java.io.Serializable;
@@ -29,7 +30,6 @@ public class QuestionWrapper implements Serializable {
     private Integer addLine; // 换行(0:不换行,1:换行)
     private Integer bold; //换行(0:不换行,1:加粗)
     private Integer position; //显示位置(1:靠右显示)
-    private String casesEntryIds; //质控条目id列表
-    //private String remark; //备注
     private List<QuestionMappingWrapper> questionMappings = new ArrayList<>(); //映射关系
+    private List<QuesCasesEntryVO> quesCasesEntryVOList; // 质控条目明细
 }

+ 26 - 0
mrman-service/src/main/java/com/diagbot/facade/QcQuestionEntryFacade.java

@@ -0,0 +1,26 @@
+package com.diagbot.facade;
+
+import com.diagbot.dto.QuesCasesEntryDTO;
+import com.diagbot.service.impl.QcQuestionEntryServiceImpl;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+
+/**
+ * @author zhoutg
+ * @Description:
+ * @date 2020-03-10 16:32
+ */
+@Component
+public class QcQuestionEntryFacade extends QcQuestionEntryServiceImpl {
+
+    /**
+     * 根据questionId获取质控条目明细
+     *
+     * @param id
+     * @return
+     */
+    public List<QuesCasesEntryDTO> getByQuestionIdFac(Long id) {
+        return this.getByQuestionId(id);
+    }
+}

+ 59 - 2
mrman-service/src/main/java/com/diagbot/facade/QcQuestionFacade.java

@@ -8,6 +8,7 @@ import com.diagbot.dto.QuestionDTO;
 import com.diagbot.dto.QuestionPageDTO;
 import com.diagbot.entity.CommonParam;
 import com.diagbot.entity.QcModuleInfo;
+import com.diagbot.entity.QcQuestionEntry;
 import com.diagbot.entity.QcQuestionInfo;
 import com.diagbot.entity.QcQuestionMapping;
 import com.diagbot.entity.wrapper.QuestionInfoWrapper;
@@ -15,8 +16,10 @@ import com.diagbot.entity.wrapper.QuestionMappingWrapper;
 import com.diagbot.entity.wrapper.QuestionWrapper;
 import com.diagbot.enums.InsertOrUpdateEnum;
 import com.diagbot.enums.IsDeleteEnum;
+import com.diagbot.enums.TagTypeEnum;
 import com.diagbot.exception.CommonErrorCode;
 import com.diagbot.exception.CommonException;
+import com.diagbot.service.QcQuestionEntryService;
 import com.diagbot.service.QcQuestionMappingService;
 import com.diagbot.service.impl.QcQuestionInfoServiceImpl;
 import com.diagbot.util.BeanUtil;
@@ -26,6 +29,7 @@ import com.diagbot.util.ListUtil;
 import com.diagbot.util.StringUtil;
 import com.diagbot.util.UserUtils;
 import com.diagbot.vo.DeleteQuestionVO;
+import com.diagbot.vo.QuesCasesEntryVO;
 import com.diagbot.vo.QuestionIdsVO;
 import com.diagbot.vo.QuestionIndexVO;
 import com.diagbot.vo.QuestionPageVO;
@@ -34,7 +38,6 @@ import com.diagbot.vo.QuestionVO;
 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.Arrays;
 import java.util.Date;
@@ -65,6 +68,13 @@ public class QcQuestionFacade extends QcQuestionInfoServiceImpl {
 //    ModuleDetailFacade moduleDetailFacade;
     @Autowired
     QcModuleInfoFacade qcModuleInfoFacade;
+    @Autowired
+    QcCacesEntryFacade qcCacesEntryFacade;
+    @Autowired
+    QcQuestionEntryFacade qcQuestionEntryFacade;
+    @Autowired
+    @Qualifier("qcQuestionEntryServiceImpl")
+    QcQuestionEntryService questionEntryService;
 
     /**
      * 标签保存
@@ -76,8 +86,10 @@ public class QcQuestionFacade extends QcQuestionInfoServiceImpl {
         CommonParam param = initCommonParam();
         //保存|修改主表信息
         saveQuestionInfo(questionWrapper, param);
-        // 保存映射表
+        // 保存组合标签和字标签映射表
         saveQuestionMapping(questionWrapper, param);
+        // 保存标签和条目映射表
+        saveQuestionEntry(questionWrapper.getQuesCasesEntryVOList(), param);
     }
 
     /**
@@ -112,6 +124,46 @@ public class QcQuestionFacade extends QcQuestionInfoServiceImpl {
         }
     }
 
+    /**
+     * 保存标签和条目映射关系
+     *
+     * @param quesCasesEntryVOList
+     * @param param
+     */
+    public void saveQuestionEntry(List<QuesCasesEntryVO> quesCasesEntryVOList, CommonParam param) {
+        if (ListUtil.isEmpty(quesCasesEntryVOList)) {
+            return ;
+        }
+
+        Date now = param.getNow();
+        String person = param.getPerson();
+
+        //先删除原明细
+        qcQuestionEntryFacade.update(new QcQuestionEntry(),
+                new UpdateWrapper<QcQuestionEntry>()
+                        .eq("question_id", param.getQcQuestionInfo().getId())
+                        .eq("is_deleted", IsDeleteEnum.N.getKey())
+                        .set("gmt_modified", now)
+                        .set("modifier", person)
+                        .set("is_deleted", IsDeleteEnum.Y.getKey()));
+
+        //再插入新明细
+        List<QcQuestionEntry> qcQuestionEntryList = new ArrayList<>();
+        int i = 1;
+        for (QuesCasesEntryVO vo : quesCasesEntryVOList) {
+            QcQuestionEntry bean = new QcQuestionEntry();
+            bean.setQuestionId(param.getQcQuestionInfo().getId());
+            bean.setCasesEntryId(vo.getCasesEntryId());
+            bean.setCreator(person);
+            bean.setGmtCreate(now);
+            bean.setModifier(person);
+            bean.setGmtModified(now);
+            bean.setOrderNo(i++);
+            qcQuestionEntryList.add(bean);
+        }
+        questionEntryService.saveBatch(qcQuestionEntryList);
+    }
+
     /**
      * 删除映射关系
      *
@@ -343,6 +395,11 @@ public class QcQuestionFacade extends QcQuestionInfoServiceImpl {
         QuestionDTO res = new QuestionDTO();
         BeanUtil.copyProperties(questionInfo, res);
 
+        // 如果是单标签且有明细内容,就获取条目内容Fac
+        if (TagTypeEnum.T1.getKey() == res.getTagType()) {
+            res.setQuesCasesEntryDTOList(qcQuestionEntryFacade.getByQuestionIdFac(questionVO.getId()));
+        }
+
         //获取子标签
         List<QuestionInfoWrapper> questionMapping = this.getByQuestionMapping(paramMap);
         List<QuestionDTO> sonQuestionList = BeanUtil.listCopyTo(questionMapping, QuestionDTO.class);

+ 20 - 0
mrman-service/src/main/java/com/diagbot/mapper/QcQuestionEntryMapper.java

@@ -0,0 +1,20 @@
+package com.diagbot.mapper;
+
+import com.diagbot.dto.QuesCasesEntryDTO;
+import com.diagbot.entity.QcQuestionEntry;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 标签条目映射表 Mapper 接口
+ * </p>
+ *
+ * @author zhoutg
+ * @since 2020-05-07
+ */
+public interface QcQuestionEntryMapper extends BaseMapper<QcQuestionEntry> {
+
+    public List<QuesCasesEntryDTO> getByQuestionId(Long id);
+}

+ 20 - 0
mrman-service/src/main/java/com/diagbot/service/QcQuestionEntryService.java

@@ -0,0 +1,20 @@
+package com.diagbot.service;
+
+import com.diagbot.dto.QuesCasesEntryDTO;
+import com.diagbot.entity.QcQuestionEntry;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 标签条目映射表 服务类
+ * </p>
+ *
+ * @author zhoutg
+ * @since 2020-05-07
+ */
+public interface QcQuestionEntryService extends IService<QcQuestionEntry> {
+
+    public List<QuesCasesEntryDTO> getByQuestionId(Long id);
+}

+ 27 - 0
mrman-service/src/main/java/com/diagbot/service/impl/QcQuestionEntryServiceImpl.java

@@ -0,0 +1,27 @@
+package com.diagbot.service.impl;
+
+import com.diagbot.dto.QuesCasesEntryDTO;
+import com.diagbot.entity.QcQuestionEntry;
+import com.diagbot.mapper.QcQuestionEntryMapper;
+import com.diagbot.service.QcQuestionEntryService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 标签条目映射表 服务实现类
+ * </p>
+ *
+ * @author zhoutg
+ * @since 2020-05-07
+ */
+@Service
+public class QcQuestionEntryServiceImpl extends ServiceImpl<QcQuestionEntryMapper, QcQuestionEntry> implements QcQuestionEntryService {
+
+    @Override
+    public List<QuesCasesEntryDTO> getByQuestionId(Long id) {
+        return baseMapper.getByQuestionId(id);
+    }
+}

+ 15 - 0
mrman-service/src/main/java/com/diagbot/vo/QuesCasesEntryVO.java

@@ -0,0 +1,15 @@
+package com.diagbot.vo;
+
+import lombok.Data;
+
+/**
+ * @author zhoutg
+ * @Description:
+ * @date 2020-04-27 10:09
+ */
+@Data
+public class QuesCasesEntryVO {
+    private static final long serialVersionUID = 1L;
+
+    private Long casesEntryId; // 条目id
+}

+ 9 - 18
mrman-service/src/main/resources/mapper/QcCasesEntryMapper.xml

@@ -74,24 +74,14 @@
         <if test="filter != null and filter == 1">
             and a.id not in
             (
-            select DISTINCT cases_entry_id from (
-            select aa.id,substring_index(substring_index(aa.cases_entry_ids,',',bb.help_topic_id+1),',',-1) cases_entry_id
-            from
-            qc_question_info aa
-            join
-            <![CDATA[
-                        mysql.help_topic bb
-                        on bb.help_topic_id < (length(aa.cases_entry_ids) - length(replace(aa.cases_entry_ids,',',''))+1)
-                    ]]>
-            where aa.is_deleted = 'N'
-            <if test="hospitalId != null">
-                AND aa.hospital_id = #{hospitalId}
-            </if>
-            <if test="modeId != null and modeId != ''">
-                AND aa.mode_id = #{modeId}
-            </if>
-            ) tt
-            where tt.cases_entry_id != ''
+                select DISTINCT q2.cases_entry_id from qc_question_info q1, qc_question_entry q2
+                where q1.is_deleted = 'N' and q2.is_deleted = 'N' and q1.id = q2.question_id
+                <if test="hospitalId != null">
+                    and q1.hospital_id = #{hospitalId}
+                </if>
+                <if test="modeId != null and modeId != ''">
+                    AND q1.mode_id = #{modeId}
+                </if>
             )
         </if>
         ORDER BY a.cases_id,a.id
@@ -106,6 +96,7 @@
             #{ids}
         </foreach>
     </select>
+
     <select id ="getQcCasesEntryAll" resultType="com.diagbot.dto.QcCasesEntryAllDTO">
         SELECT a.*,b.name as modeName FROM qc_cases_entry a
         LEFT JOIN  qc_mode b ON b.id= a.mode_id

+ 27 - 0
mrman-service/src/main/resources/mapper/QcQuestionEntryMapper.xml

@@ -0,0 +1,27 @@
+<?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.QcQuestionEntryMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.diagbot.entity.QcQuestionEntry">
+        <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="question_id" property="questionId" />
+        <result column="cases_entry_id" property="casesEntryId" />
+        <result column="order_no" property="orderNo" />
+        <result column="remark" property="remark" />
+    </resultMap>
+
+    <select id="getByQuestionId" resultType="com.diagbot.dto.QuesCasesEntryDTO">
+        SELECT b.id cases_entry_id, b.`name` cases_entry_name
+        FROM `qc_question_entry` a, qc_cases_entry b
+        where a.is_deleted = 'N' and b.is_deleted = 'N'
+        and a.cases_entry_id = b.id and a.question_id = #{id}
+        order by a.order_no
+    </select>
+
+</mapper>

+ 0 - 1
mrman-service/src/main/resources/mapper/QcQuestionInfoMapper.xml

@@ -20,7 +20,6 @@
         <result column="retract" property="retract" />
         <result column="add_line" property="addLine" />
         <result column="bold" property="bold" />
-        <result column="cases_entry_ids" property="casesEntryIds" />
         <result column="remark" property="remark" />
     </resultMap>
 

+ 1 - 1
mrman-service/src/test/java/com/diagbot/CodeGeneration.java

@@ -56,7 +56,7 @@ public class CodeGeneration {
         StrategyConfig strategy = new StrategyConfig();
 //        strategy.setTablePrefix(new String[] { "icss_" });// 此处可以修改为您的表前缀
          strategy.setNaming(NamingStrategy.underline_to_camel);// 表名生成策略
-        strategy.setInclude(new String[] { "med_record_module" }); // 需要生成的表
+        strategy.setInclude(new String[] { "qc_question_entry" }); // 需要生成的表
 
         strategy.setSuperServiceClass(null);
         strategy.setSuperServiceImplClass(null);