Browse Source

标签保存

zhoutg 6 years ago
parent
commit
fa8031caec

+ 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; //主表信息
+}

+ 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<>(); //形成的文字标签
 }

+ 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;
+    }
+}

+ 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删除标签
      *

+ 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; //排序号
+}