浏览代码

查体模板缓存到redis

zhaops 5 年之前
父节点
当前提交
df803223e1

+ 3 - 83
icss-service/src/main/java/com/diagbot/aggregate/PushItemAggregate.java

@@ -3,33 +3,23 @@ package com.diagbot.aggregate;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.diagbot.biz.push.entity.Treat;
 import com.diagbot.biz.push.enums.FeatureTypeEnum;
-import com.diagbot.client.AiptServiceClient;
-import com.diagbot.client.bean.ConceptBaseVO;
-import com.diagbot.client.bean.ConceptExistVO;
-import com.diagbot.dto.ConceptBaseDTO;
 import com.diagbot.dto.ConceptPushDTO;
 import com.diagbot.dto.PushDTO;
 import com.diagbot.dto.QuestionDTO;
 import com.diagbot.dto.QuestionPushDTO;
-import com.diagbot.dto.RespDTO;
-import com.diagbot.entity.DeptVital;
 import com.diagbot.entity.QuestionInfo;
 import com.diagbot.enums.ConceptTypeEnum;
 import com.diagbot.enums.IsDeleteEnum;
 import com.diagbot.enums.QuestionTypeEnum;
 import com.diagbot.enums.TagTypeEnum;
-import com.diagbot.exception.CommonErrorCode;
-import com.diagbot.exception.CommonException;
-import com.diagbot.facade.DeptVitalFacade;
+import com.diagbot.facade.PushCacheFacade;
 import com.diagbot.facade.QuestionFacade;
 import com.diagbot.facade.TreatmentFacade;
 import com.diagbot.util.BeanUtil;
 import com.diagbot.util.EntityUtil;
 import com.diagbot.util.ListUtil;
-import com.diagbot.util.RespDTOUtil;
 import com.diagbot.vo.PushVO;
 import com.diagbot.vo.QuestionIds2VO;
-import com.diagbot.vo.QuestionVO;
 import com.google.common.collect.Lists;
 import io.github.lvyahui8.spring.annotation.DataConsumer;
 import io.github.lvyahui8.spring.annotation.DataProvider;
@@ -53,9 +43,7 @@ public class PushItemAggregate {
     @Autowired
     private QuestionFacade questionFacade;
     @Autowired
-    private AiptServiceClient aiptServiceClient;
-    @Autowired
-    private DeptVitalFacade deptVitalFacade;
+    private PushCacheFacade pushCacheFacade;
     @Autowired
     private TreatmentFacade treatmentFacade;
 
@@ -126,7 +114,7 @@ public class PushItemAggregate {
         List<QuestionPushDTO> moduleVitalDTO = Lists.newLinkedList();
         if (featureTypeSet.contains(String.valueOf(FeatureTypeEnum.Feature_Type_Vital_Module.getKey()))) {
             ConceptPushDTO dept = data.getDept();
-            moduleVitalDTO = getVitalModule(dept, pushVO);
+            moduleVitalDTO = pushCacheFacade.getVitalModule(dept, pushVO);
         }
         return moduleVitalDTO;
     }
@@ -214,74 +202,6 @@ public class PushItemAggregate {
         return concepts;
     }
 
-    /**
-     * 获取查体模板
-     *
-     * @param dept
-     * @param pushVO
-     * @return
-     */
-    public List<QuestionPushDTO> getVitalModule(ConceptPushDTO dept, PushVO pushVO) {
-        List<QuestionPushDTO> vitalDTO = Lists.newLinkedList();
-        if (dept.getConceptId() == null) {
-            throw new CommonException(CommonErrorCode.NOT_EXISTS, "全科信息未维护");
-        }
-        QueryWrapper<DeptVital> deptVitalQueryWrapper = new QueryWrapper<>();
-        deptVitalQueryWrapper
-                .eq("is_deleted", IsDeleteEnum.N.getKey())
-                .eq("dept_id", dept.getConceptId())
-                .orderByAsc("order_no");
-        List<DeptVital> deptVitalList = deptVitalFacade.list(deptVitalQueryWrapper);
-        //科室模板为空时,取全科模板
-        if (deptVitalList.size() == 0 && dept.getName().equals("全科") == false) {
-            ConceptBaseVO conceptBaseVO = new ConceptBaseVO();
-            conceptBaseVO.setName("全科");
-            conceptBaseVO.setLibType(ConceptTypeEnum.DEPARTMENT.getKey());
-            RespDTO<ConceptBaseDTO> res = aiptServiceClient.existConcept(conceptBaseVO);
-            RespDTOUtil.respNGDeal(res, "全科信息未维护");
-            BeanUtil.copyProperties(res.data, dept);
-            deptVitalQueryWrapper = new QueryWrapper<>();
-            deptVitalQueryWrapper
-                    .eq("is_deleted", IsDeleteEnum.N.getKey())
-                    .eq("dept_id", dept.getConceptId())
-                    .orderByAsc("order_no");
-            deptVitalList = deptVitalFacade.list(deptVitalQueryWrapper);
-        }
-        //标签列表
-        for (DeptVital deptVital : deptVitalList) {
-            QuestionVO questionVO = new QuestionVO();
-            QuestionPushDTO questionPushDTO = new QuestionPushDTO();
-            questionVO.setAge(pushVO.getAge());
-            questionVO.setSexType(pushVO.getSex());
-            questionVO.setId(deptVital.getVitalId());
-            QuestionDTO questionDTO = questionFacade.getById(questionVO);
-            if (questionDTO != null && questionDTO.getId() != null) {
-                BeanUtil.copyProperties(questionDTO, questionPushDTO);
-                questionPushDTO.setLibType(ConceptTypeEnum.Vital.getKey());
-                vitalDTO.add(questionPushDTO);
-            }
-        }
-        //增加概念id
-        if (ListUtil.isNotEmpty(vitalDTO)) {
-            ConceptExistVO conceptExistVO = new ConceptExistVO();
-            conceptExistVO.setType(ConceptTypeEnum.Vital.getKey());
-            List<String> vitalNames = vitalDTO
-                    .stream()
-                    .map(vital -> vital.getTagName())
-                    .collect(Collectors.toList());
-            conceptExistVO.setNameList(vitalNames);
-            RespDTO<Map<String, Long>> respDTO = aiptServiceClient.getConceptMapByNameAndType(conceptExistVO);
-            if (RespDTOUtil.respIsOK(respDTO)) {
-                Map<String, Long> vitalMap = respDTO.data;
-                for (QuestionPushDTO questionPushDTO : vitalDTO) {
-                    if (vitalMap.get(questionPushDTO.getTagName()) != null) {
-                        questionPushDTO.setConceptId(vitalMap.get(questionPushDTO.getTagName()));
-                    }
-                }
-            }
-        }
-        return vitalDTO;
-    }
 
     /**
      * 获取化验填写单

+ 115 - 0
icss-service/src/main/java/com/diagbot/facade/PushCacheFacade.java

@@ -0,0 +1,115 @@
+package com.diagbot.facade;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.diagbot.client.AiptServiceClient;
+import com.diagbot.client.bean.ConceptBaseVO;
+import com.diagbot.client.bean.ConceptExistVO;
+import com.diagbot.dto.ConceptBaseDTO;
+import com.diagbot.dto.ConceptPushDTO;
+import com.diagbot.dto.QuestionDTO;
+import com.diagbot.dto.QuestionPushDTO;
+import com.diagbot.dto.RespDTO;
+import com.diagbot.entity.DeptVital;
+import com.diagbot.enums.ConceptTypeEnum;
+import com.diagbot.enums.IsDeleteEnum;
+import com.diagbot.exception.CommonErrorCode;
+import com.diagbot.exception.CommonException;
+import com.diagbot.util.BeanUtil;
+import com.diagbot.util.ListUtil;
+import com.diagbot.util.RespDTOUtil;
+import com.diagbot.vo.PushVO;
+import com.diagbot.vo.QuestionVO;
+import com.google.common.collect.Lists;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.cache.annotation.Cacheable;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+/**
+ * @Description:
+ * @Author:zhaops
+ * @time: 2020/4/8 13:40
+ */
+@Component
+public class PushCacheFacade {
+    @Autowired
+    private DeptVitalFacade deptVitalFacade;
+    @Autowired
+    private AiptServiceClient aiptServiceClient;
+    @Autowired
+    private QuestionFacade questionFacade;
+
+    /**
+     * 获取查体模板
+     *
+     * @param dept
+     * @param pushVO
+     * @return
+     */
+    @Cacheable(value = "icss-service", key = "'VitalModule:deptName_' + #dept.name + '_sex_' + #pushVO.sex")
+    public List<QuestionPushDTO> getVitalModule(ConceptPushDTO dept, PushVO pushVO) {
+        List<QuestionPushDTO> vitalDTO = Lists.newLinkedList();
+        if (dept.getConceptId() == null) {
+            throw new CommonException(CommonErrorCode.NOT_EXISTS, "全科信息未维护");
+        }
+        QueryWrapper<DeptVital> deptVitalQueryWrapper = new QueryWrapper<>();
+        deptVitalQueryWrapper
+                .eq("is_deleted", IsDeleteEnum.N.getKey())
+                .eq("dept_id", dept.getConceptId())
+                .orderByAsc("order_no");
+        List<DeptVital> deptVitalList = deptVitalFacade.list(deptVitalQueryWrapper);
+        //科室模板为空时,取全科模板
+        if (deptVitalList.size() == 0 && dept.getName().equals("全科") == false) {
+            ConceptBaseVO conceptBaseVO = new ConceptBaseVO();
+            conceptBaseVO.setName("全科");
+            conceptBaseVO.setLibType(ConceptTypeEnum.DEPARTMENT.getKey());
+            RespDTO<ConceptBaseDTO> res = aiptServiceClient.existConcept(conceptBaseVO);
+            RespDTOUtil.respNGDeal(res, "全科信息未维护");
+            BeanUtil.copyProperties(res.data, dept);
+            deptVitalQueryWrapper = new QueryWrapper<>();
+            deptVitalQueryWrapper
+                    .eq("is_deleted", IsDeleteEnum.N.getKey())
+                    .eq("dept_id", dept.getConceptId())
+                    .orderByAsc("order_no");
+            deptVitalList = deptVitalFacade.list(deptVitalQueryWrapper);
+        }
+        //标签列表
+        for (DeptVital deptVital : deptVitalList) {
+            QuestionVO questionVO = new QuestionVO();
+            QuestionPushDTO questionPushDTO = new QuestionPushDTO();
+            questionVO.setAge(pushVO.getAge());
+            questionVO.setSexType(pushVO.getSex());
+            questionVO.setId(deptVital.getVitalId());
+            QuestionDTO questionDTO = questionFacade.getById(questionVO);
+            if (questionDTO != null && questionDTO.getId() != null) {
+                BeanUtil.copyProperties(questionDTO, questionPushDTO);
+                questionPushDTO.setLibType(ConceptTypeEnum.Vital.getKey());
+                vitalDTO.add(questionPushDTO);
+            }
+        }
+        //增加概念id
+        if (ListUtil.isNotEmpty(vitalDTO)) {
+            ConceptExistVO conceptExistVO = new ConceptExistVO();
+            conceptExistVO.setType(ConceptTypeEnum.Vital.getKey());
+            List<String> vitalNames = vitalDTO
+                    .stream()
+                    .map(vital -> vital.getTagName())
+                    .collect(Collectors.toList());
+            conceptExistVO.setNameList(vitalNames);
+            RespDTO<Map<String, Long>> respDTO = aiptServiceClient.getConceptMapByNameAndType(conceptExistVO);
+            if (RespDTOUtil.respIsOK(respDTO)) {
+                Map<String, Long> vitalMap = respDTO.data;
+                for (QuestionPushDTO questionPushDTO : vitalDTO) {
+                    if (vitalMap.get(questionPushDTO.getTagName()) != null) {
+                        questionPushDTO.setConceptId(vitalMap.get(questionPushDTO.getTagName()));
+                    }
+                }
+            }
+        }
+        return vitalDTO;
+    }
+
+}