Ver código fonte

Merge remote-tracking branch 'origin/dev/icss' into dev/icss

wangyu 6 anos atrás
pai
commit
ba3f380ef4
28 arquivos alterados com 564 adições e 262 exclusões
  1. 7 0
      common/pom.xml
  2. 1 2
      common/src/main/java/com/diagbot/util/BeanUtil.java
  3. 72 0
      common/src/main/java/com/diagbot/util/Cn2SpellUtil.java
  4. 2 0
      icss-service/src/main/java/com/diagbot/dto/QuestionDTO.java
  5. 4 4
      icss-service/src/main/java/com/diagbot/entity/IntroduceDetail.java
  6. 10 0
      icss-service/src/main/java/com/diagbot/entity/QuestionInfo.java
  7. 0 1
      icss-service/src/main/java/com/diagbot/enums/IntroducePositionEnum.java
  8. 3 0
      icss-service/src/main/resources/mapper/QuestionInfoMapper.xml
  9. 1 3
      icssman-service/src/main/java/com/diagbot/dto/VitalInfoDTO.java
  10. 22 0
      icssman-service/src/main/java/com/diagbot/dto/VitalOrderDTO.java
  11. 20 0
      icssman-service/src/main/java/com/diagbot/entity/CommonParam.java
  12. 4 4
      icssman-service/src/main/java/com/diagbot/entity/IntroduceDetail.java
  13. 10 0
      icssman-service/src/main/java/com/diagbot/entity/QuestionInfo.java
  14. 26 134
      icssman-service/src/main/java/com/diagbot/entity/wrapper/QuestionWrapper.java
  15. 0 1
      icssman-service/src/main/java/com/diagbot/enums/IntroducePositionEnum.java
  16. 55 0
      icssman-service/src/main/java/com/diagbot/enums/TagTypeEnum.java
  17. 6 36
      icssman-service/src/main/java/com/diagbot/facade/DeptVitalFacade.java
  18. 137 39
      icssman-service/src/main/java/com/diagbot/facade/QuestionInfoFacade.java
  19. 86 14
      icssman-service/src/main/java/com/diagbot/facade/VitalOrderFacade.java
  20. 12 2
      icssman-service/src/main/java/com/diagbot/mapper/DeptVitalMapper.java
  21. 12 5
      icssman-service/src/main/java/com/diagbot/service/DeptVitalService.java
  22. 12 8
      icssman-service/src/main/java/com/diagbot/service/impl/DeptVitalServiceImpl.java
  23. 1 1
      icssman-service/src/main/java/com/diagbot/vo/DeptVitalPageVO.java
  24. 17 0
      icssman-service/src/main/java/com/diagbot/vo/QuestionTextVO.java
  25. 1 1
      icssman-service/src/main/java/com/diagbot/web/DeptVitalController.java
  26. 15 7
      icssman-service/src/main/java/com/diagbot/web/VitalOrderController.java
  27. 26 0
      icssman-service/src/main/resources/mapper/DeptVitalMapper.xml
  28. 2 0
      icssman-service/src/main/resources/mapper/QuestionInfoMapper.xml

+ 7 - 0
common/pom.xml

@@ -103,6 +103,13 @@
             <scope>compile</scope>
         </dependency>
 
+        <dependency>
+            <groupId>com.belerweb</groupId>
+            <artifactId>pinyin4j</artifactId>
+            <version>2.5.1</version>
+            <scope>compile</scope>
+        </dependency>
+
         <!--<dependency>-->
             <!--<groupId>com.fasterxml.jackson.core</groupId>-->
             <!--<artifactId>jackson-core</artifactId>-->

+ 1 - 2
common/src/main/java/com/diagbot/util/BeanUtil.java

@@ -10,8 +10,7 @@ import java.util.List;
 /**
  * @Description: 对象转换工具类
  * @author: gaodm
- * @date: 2017/12/28 10:16
- * @version: V1.0
+ * @time: 2018/12/14 14:21
  */
 public class BeanUtil {
     /**

+ 72 - 0
common/src/main/java/com/diagbot/util/Cn2SpellUtil.java

@@ -0,0 +1,72 @@
+package com.diagbot.util;
+
+import net.sourceforge.pinyin4j.PinyinHelper;
+import net.sourceforge.pinyin4j.format.HanyuPinyinCaseType;
+import net.sourceforge.pinyin4j.format.HanyuPinyinOutputFormat;
+import net.sourceforge.pinyin4j.format.HanyuPinyinToneType;
+
+/**
+ * @Description: 汉字转拼音
+ * @author: gaodm
+ * @time: 2018/12/14 14:20
+ */
+public class Cn2SpellUtil {
+
+    /**
+     * 汉字转换位汉语拼音首字母,英文字符不变
+     *
+     * @param chines 汉字
+     * @return 拼音
+     */
+    public static String converterToFirstSpell(String chines) {
+        String pinyinName = "";
+        char[] nameChar = chines.toCharArray();
+        HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat();
+        defaultFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE);
+        defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
+        for (int i = 0; i < nameChar.length; i++) {
+            if (nameChar[i] > 128) {
+                try {
+                    pinyinName +=
+                            PinyinHelper.toHanyuPinyinStringArray(nameChar[i], defaultFormat)[0].charAt(0);
+                } catch (Exception e) {
+                    e.printStackTrace();
+                }
+            } else {
+                pinyinName += nameChar[i];
+            }
+        }
+        return pinyinName;
+    }
+
+    /**
+     * 汉字转换位汉语拼音,英文字符不变
+     *
+     * @param chines 汉字
+     * @return 拼音
+     */
+    public static String converterToSpell(String chines) {
+        String pinyinName = "";
+        char[] nameChar = chines.toCharArray();
+        HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat();
+        defaultFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE);
+        defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
+        for (int i = 0; i < nameChar.length; i++) {
+            if (nameChar[i] > 128) {
+                try {
+                    pinyinName += PinyinHelper.toHanyuPinyinStringArray(nameChar[i], defaultFormat)[0];
+                } catch (Exception e) {
+                    e.printStackTrace();
+                }
+            } else {
+                pinyinName += nameChar[i];
+            }
+        }
+        return pinyinName;
+    }
+
+    public static void main(String[] args) {
+        System.out.println(converterToFirstSpell("欢迎来到Java世界"));
+        System.out.println(converterToSpell("欢迎来到Java世界"));
+    }
+}

+ 2 - 0
icss-service/src/main/java/com/diagbot/dto/QuestionDTO.java

@@ -36,6 +36,8 @@ public class QuestionDTO {
     private Integer exclusionType; //互斥类型
     private String judgeType; //判断类型(0:本身异常;1:本身正常;2:数字范围;3:计算公式;9:无需判断)
     private String copyType;//是否复制
+    private Integer showInfo; //是否显示i
+    private String joint;     //标签后的连接符
     private List<QuestionDetail> questionDetailList = new ArrayList<>(); //标签明细表
     private List<QuestionDTO> questionMapping = new ArrayList<>();     //下级标签
     private String remark;//备注

+ 4 - 4
icss-service/src/main/java/com/diagbot/entity/IntroduceDetail.java

@@ -76,9 +76,9 @@ public class IntroduceDetail implements Serializable {
     private Integer orderNo;
 
     /**
-     * 显示位置:0-都展示,1-推送展示,2-更多展示,3-一般治疗展示,4-手术治疗展示
+     * 显示位置(多选):1-推送展示,2-更多展示,3-一般治疗展示,4-手术治疗展示
      */
-    private Integer position;
+    private String position;
 
     /**
      * 是否诊断依据(1-是,0-否)
@@ -173,11 +173,11 @@ public class IntroduceDetail implements Serializable {
         this.orderNo = orderNo;
     }
 
-    public Integer getPosition() {
+    public String getPosition() {
         return position;
     }
 
-    public void setPosition(Integer position) {
+    public void setPosition(String position) {
         this.position = position;
     }
 

+ 10 - 0
icss-service/src/main/java/com/diagbot/entity/QuestionInfo.java

@@ -116,6 +116,16 @@ public class QuestionInfo implements Serializable {
      */
     private Integer showAdd;
 
+    /**
+     * 是否显示 i
+     */
+    private Integer showInfo;
+
+    /**
+     * 标签后的连接符
+     */
+    private String joint;
+
     /**
      * 备注
      */

+ 0 - 1
icss-service/src/main/java/com/diagbot/enums/IntroducePositionEnum.java

@@ -9,7 +9,6 @@ import lombok.Setter;
  * @time: 2018/11/23 10:12
  */
 public enum IntroducePositionEnum implements KeyedNamed {
-    All(0, "都展示"),
     Push(1, "推送展示"),
     More(2, "更多展示"),
     CommonTreatment(3, "一般治疗展示"),

+ 3 - 0
icss-service/src/main/resources/mapper/QuestionInfoMapper.xml

@@ -21,6 +21,9 @@
         <result column="max_value" property="maxValue" />
         <result column="judge_type" property="judgeType" />
         <result column="copy_type" property="copyType" />
+        <result column="show_add" property="showAdd" />
+        <result column="show_info" property="showInfo" />
+        <result column="joint" property="joint" />
         <result column="remark" property="remark" />
     </resultMap>
 

+ 1 - 3
icssman-service/src/main/java/com/diagbot/dto/VitalInfoDTO.java

@@ -10,8 +10,6 @@ import lombok.Setter;
  */
 @Getter
 @Setter
-public class VitalInfoDTO{
-    private String TagName;
-    private Long id;
+public class VitalInfoDTO extends QuestionShortDTO{
     private Integer orderNo;
 }

+ 22 - 0
icssman-service/src/main/java/com/diagbot/dto/VitalOrderDTO.java

@@ -0,0 +1,22 @@
+package com.diagbot.dto;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * @Description:
+ * @Author:zhaops
+ * @time: 2018/12/14 14:32
+ */
+@Getter
+@Setter
+public class VitalOrderDTO {
+    private String operator;
+    private String operatorName;
+    private Date gmtOperate;
+    List<VitalInfoDTO> vitals;
+    List<QuestionShortDTO> unOrderedVitals;
+}

+ 20 - 0
icssman-service/src/main/java/com/diagbot/entity/CommonParam.java

@@ -0,0 +1,20 @@
+package com.diagbot.entity;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.Date;
+
+/**
+ * @Description:
+ * @Author: ztg
+ * @Date: 2018/12/14 14:15
+ */
+@Getter
+@Setter
+public class CommonParam {
+    private String person;     //操作人
+    private Date now;          //当前时间
+    private String saveOrUpdate;//更新或新增标识
+    private QuestionInfo questionInfo; //主表信息
+}

+ 4 - 4
icssman-service/src/main/java/com/diagbot/entity/IntroduceDetail.java

@@ -76,9 +76,9 @@ public class IntroduceDetail implements Serializable {
     private Integer orderNo;
 
     /**
-     * 显示位置:0-都展示,1-推送展示,2-更多展示,3-一般治疗展示,4-手术治疗展示
+     * 显示位置(多选):1-推送展示,2-更多展示,3-一般治疗展示,4-手术治疗展示
      */
-    private Integer position;
+    private String position;
 
     /**
      * 是否诊断依据(1-是,0-否)
@@ -173,11 +173,11 @@ public class IntroduceDetail implements Serializable {
         this.orderNo = orderNo;
     }
 
-    public Integer getPosition() {
+    public String getPosition() {
         return position;
     }
 
-    public void setPosition(Integer position) {
+    public void setPosition(String position) {
         this.position = position;
     }
 

+ 10 - 0
icssman-service/src/main/java/com/diagbot/entity/QuestionInfo.java

@@ -145,6 +145,16 @@ public class QuestionInfo implements Serializable {
      */
     private Integer showAdd;
 
+    /**
+     * 是否显示 i
+     */
+    private Integer showInfo;
+
+    /**
+     * 标签后的连接符
+     */
+    private String joint;
+
     /**
      * 备注
      */

+ 26 - 134
icssman-service/src/main/java/com/diagbot/entity/wrapper/QuestionWrapper.java

@@ -2,18 +2,18 @@ package com.diagbot.entity.wrapper;
 
 import com.diagbot.entity.QuestionDetail;
 import com.diagbot.entity.QuestionMapping;
+import com.diagbot.vo.QuestionTextVO;
 import lombok.Getter;
 import lombok.Setter;
 
 import java.io.Serializable;
 import java.math.BigDecimal;
 import java.util.ArrayList;
-import java.util.Date;
 import java.util.List;
 
 /**
  * <p>
- * 标签基础表
+ * 标签保存参数
  * </p>
  *
  * @author zhoutg
@@ -23,136 +23,28 @@ import java.util.List;
 @Getter
 @Setter
 public class QuestionWrapper implements Serializable {
-
-    private static final long serialVersionUID = 1L;
-
-    /**
-     * 主键
-     */
-    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 String tagType;
-
-    /**
-     * 控件类型(0:无类型,默认值 1:下拉单选 2:下拉多选 3:纯文本 4:待定 5:待定 6:文本框 7:数字键盘文本框 99:联合推送)
-     */
-    private Integer controlType;
-
-    /**
-     * 类型(1:症状 3:其他史 4:查体,5:化验 6:辅检 7:诊断)
-     */
-    private Integer type;
-
-    /**
-     * 子类型,(0:项目,1:描述)
-     */
-    private Integer subType;
-
-    /**
-     * 前置内容
-     */
-    private String labelPrefix;
-
-    /**
-     * 后置内容
-     */
-    private String labelSuffix;
-
-    /**
-     * 最小值
-     */
-    private BigDecimal minValue;
-
-    /**
-     * 最大值
-     */
-    private BigDecimal maxValue;
-
-    /**
-     * 判断类型(0:本身异常;1:本身正常;2:数字范围;3:计算公式;9:无需判断)
-     */
-    private String judgeType;
-
-    /**
-     * 文本生成规则(0:点选顺序,例如初为 1:从上到下,从左到右,例如查体杂音 2:从左到右,从上到下,例如伴/无)
-     */
-    private Integer textGenerate;
-
-    /**
-     * 是否复制 (0:不复制,1:复制)
-     */
-    private String copyType;
-
-    /**
-     * 是否显示+ (0:不显示 1:显示),+功能等于复制
-     */
-    private Integer showAdd;
-
-    /**
-     * 备注
-     */
-    private String remark;
-
-    /**
-     * 明细
-     */
-    private List<QuestionDetail> questionDetails = new ArrayList<>();
-
-    /**
-     * 映射表
-     */
-    private List<QuestionMapping> questionMappings = new ArrayList<>();
+    private Long id; //主键
+    private String tagName; //标签名
+    private String name; //界面名称
+    private Integer sexType; //性别(1:男 2:女 3:通用)
+    private Integer ageBegin; //最小年龄
+    private Integer ageEnd; //最大年龄
+    private String tagType; //标签显示类型
+    private Integer controlType; //控件类型
+    private Integer type; //所属类型(1:症状 3:其他史 4:查体,5:化验 6:辅检 7:诊断)
+    private Integer subType; //(0:项目,1:描述)
+    private String labelPrefix; //前置内容
+    private String labelSuffix; //后置内容
+    private BigDecimal minValue; //最小值
+    private BigDecimal maxValue; //最大值
+    private String judgeType; //判断类型(0:本身异常;1:本身正常;2:数字范围;3:计算公式;9:无需判断)
+    private Integer textGenerate; //文本生成规则
+    private String copyType; //是否复制
+    private Integer showAdd; //是否显示+
+    private Integer showInfo; //是否显示i
+    private String joint;     //标签连接符
+    private String remark; //备注
+    private List<QuestionDetail> questionDetails = new ArrayList<>(); //明细
+    private List<QuestionMapping> questionMappings = new ArrayList<>(); //映射关系
+    private List<QuestionTextVO> questionText = new ArrayList<>(); //形成的文字标签
 }

+ 0 - 1
icssman-service/src/main/java/com/diagbot/enums/IntroducePositionEnum.java

@@ -9,7 +9,6 @@ import lombok.Setter;
  * @time: 2018/11/23 10:12
  */
 public enum IntroducePositionEnum implements KeyedNamed {
-    All(0, "都展示"),
     Push(1, "推送展示"),
     More(2, "更多展示"),
     CommonTreatment(3, "一般治疗展示"),

+ 55 - 0
icssman-service/src/main/java/com/diagbot/enums/TagTypeEnum.java

@@ -0,0 +1,55 @@
+package com.diagbot.enums;
+
+import com.diagbot.core.KeyedNamed;
+import lombok.Setter;
+
+/**
+ * @Description:标签显示类型
+ * @Author:zhoutg
+ * @time: 2018/11/21 11:39
+ */
+public enum TagTypeEnum implements KeyedNamed {
+    V1(1, "单项单列"),
+    V2(2, "单项多列"),
+    V3(3, "横铺单标签形式"),
+    V4(4, "横铺多标签形式"),
+    V5(5, "竖铺组合项"),
+    V6(6, "组合项多列"),
+    V7(7, "化验类型"),
+    V8(8, "模板专用文字");
+
+    @Setter
+    private Integer key;
+
+    @Setter
+    private String name;
+
+    TagTypeEnum(Integer key, String name) {
+        this.key = key;
+        this.name = name;
+    }
+
+    public static TagTypeEnum getEnum(Integer key) {
+        for (TagTypeEnum item : TagTypeEnum.values()) {
+            if (item.key == key) {
+                return item;
+            }
+        }
+        return null;
+    }
+
+    public static String getName(Integer key) {
+        TagTypeEnum item = getEnum(key);
+        return item != null ? item.name : null;
+    }
+
+    @Override
+    public int getKey() {
+        return key;
+    }
+
+    @Override
+    public String getName() {
+        return name;
+    }
+}

+ 6 - 36
icssman-service/src/main/java/com/diagbot/facade/DeptVitalFacade.java

@@ -192,49 +192,19 @@ public class DeptVitalFacade extends DeptVitalServiceImpl {
      * @param deptVitalPageVO
      * @return
      */
-    public IPage<DeptVitalDTO> getDeptVitalPage(DeptVitalPageVO deptVitalPageVO) {
-        /*QueryWrapper<DeptVital> deptVitalQueryWrapper = new QueryWrapper<>();
-        deptVitalQueryWrapper.eq("is_deleted", IsDeleteEnum.N.getKey()).
-                select("dept_id", "gmt_create", "creator", "gmt_modified", "modifier").
-                groupBy("dept_id", "gmt_create", "creator", "gmt_modified", "modifier");
-        List<DeptVital> deptVitalList = this.list(deptVitalQueryWrapper);
-        Map<Long, DeptVital> deptVitalMap = EntityUtil.makeEntityMap(deptVitalList, "deptId");
-        List<Long> deptIds = deptVitalList.stream().map(deptVital -> deptVital.getDeptId()).collect(Collectors.toList());
-
-        QueryWrapper<DeptInfo> deptInfoQueryWrapper = new QueryWrapper<>();
-        deptInfoQueryWrapper.like("name", deptVitalPageVO.getDeptName()).
-                eq("is_deleted", IsDeleteEnum.N.getKey()).
-                in("id", deptIds);
-        IPage<DeptVitalDTO> page = deptInfoFacade.page(deptVitalPageVO, deptInfoQueryWrapper);
-
-        List<DeptVitalDTO> deptVitalDTOListRet = Lists.newLinkedList();
+    public IPage<DeptVitalDTO> getDeptVitalPageByMap(DeptVitalPageVO deptVitalPageVO) {
+        IPage<DeptVitalDTO> page = this.getDeptVitalPage(deptVitalPageVO);
         List<DeptVitalDTO> deptVitalDTOList = page.getRecords();
-        for (DeptInfo deptInfo : deptVitalDTOList) {
-            DeptVitalDTO deptVitalDTO = new DeptVitalDTO();
-            BeanUtil.copyProperties(deptInfo, deptVitalDTO);
-            //取映射关系维护时间,不取科室维护时间
-            if (deptVitalMap.get(deptInfo.getId()) != null) {
-                DeptVital deptVital = deptVitalMap.get(deptInfo.getId());
-                deptVitalDTO.setGmtCreate(deptVital.getGmtCreate());
-                deptVitalDTO.setGmtModified(deptVital.getGmtModified());
-                deptVitalDTO.setCreator(deptVital.getCreator());
-                deptVitalDTO.setModifier(deptVital.getModifier());
-                deptVitalDTO.setGmtOperate(deptVitalDTO.getGmtModified());
-                deptVitalDTO.setOperator(deptVitalDTO.getModifier());
-            }
-            deptVitalDTOListRet.add(deptVitalDTO);
-        }
-        List<String> userIds = deptVitalDTOListRet.stream().map(deptVitalDTO -> deptVitalDTO.getModifier()).collect(Collectors.toList());
+        List<String> userIds = deptVitalDTOList.stream().map(deptVitalDTO -> deptVitalDTO.getOperator()).collect(Collectors.toList());
         RespDTO<Map<String, String>> data = userServiceClient.getUserInfoByIds(userIds);
         Map<String, String> userInfos = data.data;
-        for (DeptVitalDTO deptVitalDTO : deptVitalDTOListRet) {
+        for (DeptVitalDTO deptVitalDTO : deptVitalDTOList) {
             if (userInfos.get(deptVitalDTO.getOperator()) != null) {
                 deptVitalDTO.setOperatorName(userInfos.get(deptVitalDTO.getOperator()));
             }
         }
-        page.setRecords(deptVitalDTOListRet);
-        return page;*/
-        return null;
+        page.setRecords(deptVitalDTOList);
+        return page;
     }
 
     /**

+ 137 - 39
icssman-service/src/main/java/com/diagbot/facade/QuestionInfoFacade.java

@@ -6,13 +6,16 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.diagbot.dto.GetQuestionInfoDTO;
 import com.diagbot.dto.QuestionIndexDTO;
 import com.diagbot.dto.QuestionPageDTO;
+import com.diagbot.entity.CommonParam;
 import com.diagbot.entity.QuestionDetail;
 import com.diagbot.entity.QuestionInfo;
+import com.diagbot.entity.QuestionMapping;
 import com.diagbot.entity.wrapper.QuestionWrapper;
 import com.diagbot.enums.IsDeleteEnum;
 import com.diagbot.exception.CommonErrorCode;
 import com.diagbot.exception.CommonException;
 import com.diagbot.service.QuestionDetailService;
+import com.diagbot.service.QuestionMappingService;
 import com.diagbot.service.impl.QuestionInfoServiceImpl;
 import com.diagbot.util.BeanUtil;
 import com.diagbot.util.DateUtil;
@@ -48,6 +51,9 @@ public class QuestionInfoFacade extends QuestionInfoServiceImpl {
     @Qualifier("questionDetailServiceImpl")
     QuestionDetailService questionDetailService;
     @Autowired
+    @Qualifier("questionMappingServiceImpl")
+    QuestionMappingService questionMappingService;
+    @Autowired
     QuestionMappingFacade questionMappingFacade;
     @Autowired
     ModuleDetailFacade moduleDetailFacade;
@@ -59,48 +65,110 @@ public class QuestionInfoFacade extends QuestionInfoServiceImpl {
      * @param questionSaveVO
      */
     public void saveOrUpdate(QuestionSaveVO questionSaveVO) {
-
-//        String person = UserUtils.getCurrentPrincipleID(); //TODO person
-        String person = "default";
         QuestionWrapper questionWrapper = questionSaveVO.getQuestionWrapper();
-        //1、主表信息
+        CommonParam param = initCommonParam();
+        saveQuestionInfo(questionWrapper, param);
+        switch (questionWrapper.getTagType()) {
+            case "1":   //单项,例如:程度、体温
+                saveQuestionDetail(questionWrapper, param);
+                break;
+            case "2":   //组合项,例如:杂音,修改主表和mapping
+                saveQuestionMapping(questionWrapper, param);
+                break;
+            case "3":
+                break;
+            case "4":
+                break;
+            case "5":
+                break;
+            case "6":
+                break;
+            case "7":
+                break;
+            case "8":
+                break;
+            default:
+                throw new CommonException(CommonErrorCode.SERVER_IS_ERROR, "请选择标签显示类型");
+        }
+    }
+
+
+
+
+    /**
+     * 初始化参数
+     *
+     * @return
+     */
+    public CommonParam initCommonParam() {
+        CommonParam param = new CommonParam();
+        //String person = UserUtils.getCurrentPrincipleID(); //TODO person
+        String person = "1";
+        param.setNow(DateUtil.now());
+        param.setPerson(person);
+        param.setSaveOrUpdate("save");
         QuestionInfo questionInfo = new QuestionInfo();
-        String saveOrUpdate = "save"; //新增或修改的标识
-        if(questionWrapper.getId() != null) {
-            questionInfo = this.getOne(new QueryWrapper<QuestionInfo>()
-                    .eq("id", questionWrapper.getId())
-                    .eq("is_deleted", IsDeleteEnum.N.getKey()));
-            if(questionInfo == null) {
-                throw new CommonException(CommonErrorCode.SERVER_IS_ERROR, "标签不存在");
+        param.setQuestionInfo(questionInfo);
+        return param;
+    }
+
+
+    /**
+     * 保存映射关系
+     *
+     * @param questionWrapper
+     * @param param
+     */
+    public void saveQuestionMapping(QuestionWrapper questionWrapper, CommonParam param) {
+        QuestionInfo questionInfo = param.getQuestionInfo();
+        Date now = param.getNow();
+        String person = param.getPerson();
+        //先删除原明细,再插入新明细
+        questionMappingFacade.update(new QuestionMapping(), //删除原映射关系
+                new UpdateWrapper<QuestionMapping>()
+                        .eq("parent_question", questionInfo.getId())
+                        .eq("is_deleted", IsDeleteEnum.N.getKey())
+                        .set("gmt_modified", now)
+                        .set("modifier", person)
+                        .set("is_deleted", IsDeleteEnum.Y.getKey()));
+        List<QuestionMapping> questionMappings = questionWrapper.getQuestionMappings();
+        if(ListUtil.isNotEmpty(questionMappings)) {
+            List<QuestionMapping> saveMapping = new ArrayList<>();
+            int i = 1;
+            for(QuestionMapping mapping : questionMappings) {
+                QuestionMapping bean = new QuestionMapping();
+                BeanUtil.copyProperties(mapping, bean);
+                bean.setId(null); //防止前端传参,将前端的id置空自动插入
+                bean.setCreator(person);
+                bean.setGmtCreate(now);
+                bean.setModifier(person);
+                bean.setGmtModified(now);
+                bean.setOrderNo(i++);
+                saveMapping.add(bean);
             }
-            saveOrUpdate = "update";
+            questionMappingService.saveBatch(saveMapping);
         }
-        BeanUtil.copyProperties(questionWrapper, questionInfo);
-        List<QuestionInfo> questionInfoList = this.list(new QueryWrapper<QuestionInfo>()
-                .eq("tag_name", questionInfo.getTagName())
-                .eq("is_deleted", IsDeleteEnum.N.getKey())
-                .eq("type", questionInfo.getType())
-                .ne("id", questionInfo.getId() == null ? 0 : questionInfo.getId()));
-        if(questionInfoList.size() > 0) { //标签type、tagName唯一
-            throw new CommonException(CommonErrorCode.SERVER_IS_ERROR, "标签名已存在");
-        }
-        Date now = DateUtil.now();
-        if("save".equals(saveOrUpdate)) {
-            questionInfo.setCreator(person); //创建人
-            questionInfo.setGmtCreate(now);//创建时间
-        }
-        questionInfo.setGmtModified(now);//修改时间
-        questionInfo.setModifier(person);//修改人
-        this.saveOrUpdate(questionInfo);
+    }
+
 
-        //2、明细信息(先删除原明细,再插入新明细)
+    /**
+     * 保存明细
+     *
+     * @param questionWrapper
+     * @param param
+     */
+    public void saveQuestionDetail(QuestionWrapper questionWrapper, CommonParam param) {
+        QuestionInfo questionInfo = param.getQuestionInfo();
+        Date now = param.getNow();
+        String person = param.getPerson();
+        //先删除原明细,再插入新明细
         questionDetailFacade.update(new QuestionDetail(), //删除原明细
                 new UpdateWrapper<QuestionDetail>()
-                    .eq("question_id", questionInfo.getId())
-                    .eq("is_deleted", IsDeleteEnum.N.getKey())
-                    .set("gmt_modified", now)
-                    .set("modifier", person)
-                    .set("is_deleted", IsDeleteEnum.Y.getKey()));
+                        .eq("question_id", questionInfo.getId())
+                        .eq("is_deleted", IsDeleteEnum.N.getKey())
+                        .set("gmt_modified", now)
+                        .set("modifier", person)
+                        .set("is_deleted", IsDeleteEnum.Y.getKey()));
         List<QuestionDetail> questionDetails = questionWrapper.getQuestionDetails();
         if(ListUtil.isNotEmpty(questionDetails)) {
             List<QuestionDetail> saveDetail = new ArrayList<>();
@@ -119,13 +187,44 @@ public class QuestionInfoFacade extends QuestionInfoServiceImpl {
             }
             questionDetailService.saveBatch(saveDetail);
         }
-
-        //3、映射信息
+    }
 
 
+    /**
+     * 保存主表
+     *
+     * @param questionWrapper
+     * @param param
+     */
+    public void saveQuestionInfo(QuestionWrapper questionWrapper, CommonParam param) {
+        QuestionInfo questionInfo = param.getQuestionInfo();
+        if(questionWrapper.getId() != null) {
+            questionInfo = this.getOne(new QueryWrapper<QuestionInfo>()
+                    .eq("id", questionWrapper.getId())
+                    .eq("is_deleted", IsDeleteEnum.N.getKey()));
+            if(questionInfo == null) { //校验
+                throw new CommonException(CommonErrorCode.SERVER_IS_ERROR, "标签不存在");
+            }
+            param.setSaveOrUpdate("update");
+        }
+        BeanUtil.copyProperties(questionWrapper, questionInfo);
+        List<QuestionInfo> questionInfoList = this.list(new QueryWrapper<QuestionInfo>()
+                .eq("tag_name", questionInfo.getTagName())
+                .eq("is_deleted", IsDeleteEnum.N.getKey())
+                .eq("type", questionInfo.getType())
+                .ne("id", questionInfo.getId() == null ? -1 : questionInfo.getId()));
+        if(questionInfoList.size() > 0) { //标签type、tagName唯一
+            throw new CommonException(CommonErrorCode.SERVER_IS_ERROR, "标签名已存在");
+        }
+        if("save".equals(param.getSaveOrUpdate())) {
+            questionInfo.setCreator(param.getPerson()); //创建人
+            questionInfo.setGmtCreate(param.getNow());//创建时间
+        }
+        questionInfo.setGmtModified(param.getNow());//修改时间
+        questionInfo.setModifier(param.getPerson());//修改人
+        this.saveOrUpdate(questionInfo);
     }
 
-
     /**
      * 标签列表
      *
@@ -140,7 +239,6 @@ public class QuestionInfoFacade extends QuestionInfoServiceImpl {
     }
 
 
-
     /**
      * 根据id删除标签
      *

+ 86 - 14
icssman-service/src/main/java/com/diagbot/facade/VitalOrderFacade.java

@@ -2,12 +2,18 @@ package com.diagbot.facade;
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
+import com.diagbot.client.UserServiceClient;
+import com.diagbot.dto.QuestionShortDTO;
+import com.diagbot.dto.RespDTO;
 import com.diagbot.dto.VitalInfoDTO;
+import com.diagbot.dto.VitalOrderDTO;
 import com.diagbot.entity.QuestionInfo;
 import com.diagbot.entity.VitalOrder;
 import com.diagbot.enums.IsDeleteEnum;
+import com.diagbot.enums.QuestionTypeEnum;
 import com.diagbot.service.VitalOrderService;
 import com.diagbot.service.impl.VitalOrderServiceImpl;
+import com.diagbot.util.BeanUtil;
 import com.diagbot.util.DateUtil;
 import com.diagbot.util.EntityUtil;
 import com.diagbot.util.UserUtils;
@@ -19,6 +25,7 @@ import org.springframework.stereotype.Component;
 
 import java.util.List;
 import java.util.Map;
+import java.util.stream.Collectors;
 
 /**
  * @Description:
@@ -33,6 +40,8 @@ public class VitalOrderFacade extends VitalOrderServiceImpl {
     VitalOrderService vitalOrderService;
     @Autowired
     QuestionInfoFacade questionInfoFacade;
+    @Autowired
+    UserServiceClient userServiceClient;
 
     public Boolean saveAll(List<VitalOrderVO> vitalOrderVOList) {
         //先删除现有排序
@@ -63,24 +72,87 @@ public class VitalOrderFacade extends VitalOrderServiceImpl {
      *
      * @return
      */
-    public List<VitalInfoDTO> getAll() {
+    public VitalOrderDTO getVitalOrderList() {
+        VitalOrderDTO vitalOrderDTO = new VitalOrderDTO();
+
         QueryWrapper<VitalOrder> vitalOrderQueryWrapper = new QueryWrapper<>();
-        vitalOrderQueryWrapper.orderByAsc("order_no");
-        List<VitalOrder> vitalOrderLis = this.list(vitalOrderQueryWrapper);
-        Map<Long, VitalOrder> orderMap = EntityUtil.makeEntityMap(vitalOrderLis, "id");
-        List<QuestionInfo> vitals = Lists.newArrayList(questionInfoFacade.listByIds(orderMap.keySet()));
+        vitalOrderQueryWrapper.orderByAsc("order_no")
+                .eq("is_deleted", IsDeleteEnum.N.getKey());
+        List<VitalOrder> vitalOrderList = this.list(vitalOrderQueryWrapper);
+        List<Long> vitalIds = vitalOrderList.stream().map(vitalOrder -> vitalOrder.getQuestionId()).collect(Collectors.toList());
+
+        //操作人
+        if (vitalOrderList.size() > 0) {
+            String userId = vitalOrderList.get(0).getModifier();
+            vitalOrderDTO.setGmtOperate(vitalOrderList.get(0).getGmtModified());
+            vitalOrderDTO.setOperator(userId);
+            List<String> userIds = Lists.newArrayList();
+            userIds.add(userId);
+            RespDTO<Map<String, String>> userInfoMap = userServiceClient.getUserInfoByIds(userIds);
+            vitalOrderDTO.setOperatorName(userInfoMap.data.get(userId));
+        }
+
+        //已排序查体标签
+        List<QuestionInfo> vitals = Lists.newArrayList(questionInfoFacade.listByIds(vitalIds));
         Map<Long, QuestionInfo> vitalMap = EntityUtil.makeEntityMap(vitals, "id");
-        List<VitalInfoDTO> vitalInfoDTOList = Lists.newArrayList();
-        for (Map.Entry<Long, VitalOrder> entry : orderMap.entrySet()) {
-            if (vitalMap.get(entry.getKey()) != null) {
-                VitalInfoDTO vitalInfoDTO = new VitalInfoDTO();
-                vitalInfoDTO.setId(vitalMap.get(entry.getKey()).getId());
-                vitalInfoDTO.setTagName(vitalMap.get(entry.getKey()).getTagName());
-                vitalInfoDTO.setOrderNo(entry.getValue().getOrderNo());
-                vitalInfoDTOList.add(vitalInfoDTO);
+
+        List<VitalInfoDTO> vitalInfoDTOList = Lists.newLinkedList();
+        for (VitalOrder vitalOrder : vitalOrderList) {
+            VitalInfoDTO vitalInfoDTO = new VitalInfoDTO();
+            QuestionInfo questionInfo = vitalMap.get(vitalOrder.getQuestionId());
+            if (questionInfo != null) {
+                BeanUtil.copyProperties(questionInfo, vitalInfoDTO);
             }
+            vitalInfoDTO.setOrderNo(vitalOrder.getOrderNo());
+            vitalInfoDTOList.add(vitalInfoDTO);
+        }
+        vitalOrderDTO.setVitals(vitalInfoDTOList);
+
+        //未排序查体标签
+        QueryWrapper<QuestionInfo> unOrderedVitalQueryWrapper = new QueryWrapper<>();
+        unOrderedVitalQueryWrapper.eq("is_deleted", IsDeleteEnum.N.getKey())
+                .eq("type", QuestionTypeEnum.Vital.getKey())
+                .eq("sub_type", 0)
+                .notIn("id", vitalIds);
+        List<QuestionInfo> unOrderVitals = questionInfoFacade.list(unOrderedVitalQueryWrapper);
+        List<QuestionShortDTO> unOrderedVitalList = Lists.newLinkedList();
+        for (QuestionInfo questionInfo : unOrderVitals) {
+            QuestionShortDTO questionShortDTO = new QuestionShortDTO();
+            BeanUtil.copyProperties(questionInfo, questionShortDTO);
+            unOrderedVitalList.add(questionShortDTO);
+        }
+        vitalOrderDTO.setUnOrderedVitals(unOrderedVitalList);
+
+        return vitalOrderDTO;
+    }
+
+    /**
+     * 获取未排序查体标签
+     *
+     * @return
+     */
+    public List<QuestionShortDTO> getUnOrderedVitalList() {
+        //已排序查体标签
+        QueryWrapper<VitalOrder> vitalOrderQueryWrapper = new QueryWrapper<>();
+        vitalOrderQueryWrapper.eq("is_deleted", IsDeleteEnum.N.getKey());
+        List<VitalOrder> vitalOrderList = this.list(vitalOrderQueryWrapper);
+        List<Long> vitalIds = vitalOrderList.stream().map(vitalOrder -> vitalOrder.getQuestionId()).collect(Collectors.toList());
+
+        //未排序查体标签
+        QueryWrapper<QuestionInfo> unOrderedVitalQueryWrapper = new QueryWrapper<>();
+        unOrderedVitalQueryWrapper.eq("is_deleted", IsDeleteEnum.N.getKey())
+                .eq("type", QuestionTypeEnum.Vital.getKey())
+                .eq("sub_type", 0)
+                .notIn("id", vitalIds);
+        List<QuestionInfo> vitals = questionInfoFacade.list(unOrderedVitalQueryWrapper);
+
+        List<QuestionShortDTO> questionShortDTOList = Lists.newLinkedList();
+        for (QuestionInfo questionInfo : vitals) {
+            QuestionShortDTO questionShortDTO = new QuestionShortDTO();
+            BeanUtil.copyProperties(questionInfo, questionShortDTO);
+            questionShortDTOList.add(questionShortDTO);
         }
-        return vitalInfoDTOList;
+        return questionShortDTOList;
     }
 
     /**

+ 12 - 2
icssman-service/src/main/java/com/diagbot/mapper/DeptVitalMapper.java

@@ -1,7 +1,11 @@
 package com.diagbot.mapper;
 
-import com.diagbot.entity.DeptVital;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.diagbot.dto.DeptVitalDTO;
+import com.diagbot.entity.DeptVital;
+import com.diagbot.vo.DeptVitalPageVO;
+import org.apache.ibatis.annotations.Param;
 
 /**
  * <p>
@@ -12,5 +16,11 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
  * @since 2018-11-22
  */
 public interface DeptVitalMapper extends BaseMapper<DeptVital> {
-
+    /**
+     * 查体模板分页信息
+     *
+     * @param deptVitalPageVO
+     * @return
+     */
+    IPage<DeptVitalDTO> getDeptVitalPage(@Param("deptVitalPageVO") DeptVitalPageVO deptVitalPageVO);
 }

+ 12 - 5
icssman-service/src/main/java/com/diagbot/service/DeptVitalService.java

@@ -1,9 +1,10 @@
 package com.diagbot.service;
 
-import com.diagbot.entity.DeptVital;
+import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.IService;
-
-import java.util.List;
+import com.diagbot.dto.DeptVitalDTO;
+import com.diagbot.entity.DeptVital;
+import com.diagbot.vo.DeptVitalPageVO;
 
 /**
  * <p>
@@ -14,5 +15,11 @@ import java.util.List;
  * @since 2018-11-22
  */
 public interface DeptVitalService extends IService<DeptVital> {
-    Boolean saveRecords(List<DeptVital> deptVitalList);
-}
+    /**
+     * 查体模板分页信息
+     *
+     * @param deptVitalPageVO
+     * @return
+     */
+    IPage<DeptVitalDTO> getDeptVitalPage(DeptVitalPageVO deptVitalPageVO);
+}

+ 12 - 8
icssman-service/src/main/java/com/diagbot/service/impl/DeptVitalServiceImpl.java

@@ -1,13 +1,14 @@
 package com.diagbot.service.impl;
 
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.diagbot.dto.DeptVitalDTO;
 import com.diagbot.entity.DeptVital;
 import com.diagbot.mapper.DeptVitalMapper;
 import com.diagbot.service.DeptVitalService;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.diagbot.vo.DeptVitalPageVO;
 import org.springframework.stereotype.Service;
 
-import java.util.List;
-
 /**
  * <p>
  * 科室查体对应表 服务实现类
@@ -18,10 +19,13 @@ import java.util.List;
  */
 @Service
 public class DeptVitalServiceImpl extends ServiceImpl<DeptVitalMapper, DeptVital> implements DeptVitalService {
-
-    public Boolean saveRecords(List<DeptVital> deptVitalList){
-        super.saveBatch(deptVitalList);
-        return true;
+    /**
+     * 查体模板分页信息
+     *
+     * @param deptVitalPageVO
+     * @return
+     */
+    public IPage<DeptVitalDTO> getDeptVitalPage(DeptVitalPageVO deptVitalPageVO) {
+        return baseMapper.getDeptVitalPage(deptVitalPageVO);
     }
-
 }

+ 1 - 1
icssman-service/src/main/java/com/diagbot/vo/DeptVitalPageVO.java

@@ -12,5 +12,5 @@ import lombok.Setter;
 @Getter
 @Setter
 public class DeptVitalPageVO extends Page {
-    String deptName;
+    private String deptName;
 }

+ 17 - 0
icssman-service/src/main/java/com/diagbot/vo/QuestionTextVO.java

@@ -0,0 +1,17 @@
+package com.diagbot.vo;
+
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * @Description: 标签文字
+ * @Author: ztg
+ * @Date: 2018/10/24 16:11
+ */
+@Getter
+@Setter
+public class QuestionTextVO {
+
+    private String words; //文字
+    private Integer order; //排序号
+}

+ 1 - 1
icssman-service/src/main/java/com/diagbot/web/DeptVitalController.java

@@ -92,7 +92,7 @@ public class DeptVitalController {
     @PostMapping("/getDeptVitalPage")
     @SysLogger("getDeptVitalPage")
     public RespDTO getDeptVitalPage(@RequestBody DeptVitalPageVO deptVitalPageVO) {
-        IPage<DeptVitalDTO> infoIPage = deptVitalFacade.getDeptVitalPage(deptVitalPageVO);
+        IPage<DeptVitalDTO> infoIPage = deptVitalFacade.getDeptVitalPageByMap(deptVitalPageVO);
         return RespDTO.onSuc(infoIPage);
     }
 

+ 15 - 7
icssman-service/src/main/java/com/diagbot/web/VitalOrderController.java

@@ -2,9 +2,9 @@ package com.diagbot.web;
 
 
 import com.diagbot.annotation.SysLogger;
+import com.diagbot.dto.QuestionShortDTO;
 import com.diagbot.dto.RespDTO;
-import com.diagbot.dto.VitalInfoDTO;
-import com.diagbot.entity.VitalOrder;
+import com.diagbot.dto.VitalOrderDTO;
 import com.diagbot.facade.VitalOrderFacade;
 import com.diagbot.vo.VitalOrderVO;
 import io.swagger.annotations.Api;
@@ -47,11 +47,19 @@ public class VitalOrderController {
         return RespDTO.onSuc(data);
     }
 
-    @ApiOperation(value = "获取查体排序-全部[by:zhaops]")
-    @PostMapping("/getAll")
-    @SysLogger("getAll")
-    public RespDTO<List<VitalInfoDTO>> getAll() {
-        List<VitalInfoDTO> data = vitalOrderFacade.getAll();
+    @ApiOperation(value = "获取查体排序[by:zhaops]")
+    @PostMapping("/getVitalOrderList")
+    @SysLogger("getVitalOrderList")
+    public RespDTO<VitalOrderDTO> getVitalOrderList() {
+        VitalOrderDTO data = vitalOrderFacade.getVitalOrderList();
+        return RespDTO.onSuc(data);
+    }
+
+    @ApiOperation(value = "获取未排序查体标签-初始页面[by:zhaops]")
+    @PostMapping("/getUnOrderedVitalList")
+    @SysLogger("getUnOrderedVitalList")
+    public RespDTO<QuestionShortDTO> getUnOrderedVitalList() {
+        List<QuestionShortDTO> data = vitalOrderFacade.getUnOrderedVitalList();
         return RespDTO.onSuc(data);
     }
 

+ 26 - 0
icssman-service/src/main/resources/mapper/DeptVitalMapper.xml

@@ -15,4 +15,30 @@
         <result column="remark" property="remark" />
     </resultMap>
 
+    <!-- 通用查询映射结果 -->
+    <resultMap id="DeptVitalDTOMap" type="com.diagbot.dto.DeptVitalDTO">
+        <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="remark" property="remark" />
+        <result column="operator" property="operator" />
+        <result column="gmtOperate" property="gmt_operate" />
+    </resultMap>
+
+    <!--查询已有模板分页-->
+    <select id="getDeptVitalPage" resultMap="DeptVitalDTOMap">
+        SELECT DISTINCT a.*, b.modifier AS operator,b.gmt_modified AS gmt_operate
+        FROM icss_dept_info a,icss_dept_vital b
+        WHERE a.id = b.dept_id
+          AND a.is_deleted = 'N'
+          AND b.is_deleted = 'N'
+          <if test="deptVitalPageVO.deptName!=null and deptVitalPageVO.deptName!=''">
+              AND a.name like CONCAT("%",#{deptVitalPageVO.deptName},"%")
+          </if>
+    </select>
+
 </mapper>

+ 2 - 0
icssman-service/src/main/resources/mapper/QuestionInfoMapper.xml

@@ -27,6 +27,8 @@
         <result column="text_generate" property="textGenerate" />
         <result column="copy_type" property="copyType" />
         <result column="show_add" property="showAdd" />
+        <result column="show_info" property="showInfo" />
+        <result column="joint" property="joint" />
         <result column="remark" property="remark" />
     </resultMap>