|
@@ -0,0 +1,138 @@
|
|
|
+package com.diagbot.facade;
|
|
|
+
|
|
|
+import java.util.ArrayList;
|
|
|
+import java.util.Date;
|
|
|
+import java.util.HashMap;
|
|
|
+import java.util.List;
|
|
|
+import java.util.Map;
|
|
|
+import java.util.stream.Collectors;
|
|
|
+
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
+import org.springframework.stereotype.Component;
|
|
|
+
|
|
|
+import com.diagbot.client.TranServiceClient;
|
|
|
+import com.diagbot.dto.IndexConfigAndDataDTO;
|
|
|
+import com.diagbot.dto.IndexConfigDTO;
|
|
|
+import com.diagbot.dto.IndexDTO;
|
|
|
+import com.diagbot.dto.IndexDataDTO;
|
|
|
+import com.diagbot.dto.RespDTO;
|
|
|
+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.IndexDataAllVO;
|
|
|
+import com.diagbot.vo.IndexDataFindVO;
|
|
|
+import com.diagbot.vo.IndexDataSaveVO;
|
|
|
+import com.diagbot.vo.IndexDataVO;
|
|
|
+import com.diagbot.vo.IndexDataiIds;
|
|
|
+
|
|
|
+/**
|
|
|
+ *
|
|
|
+ * @author wangfeng
|
|
|
+ * @Description: TODO
|
|
|
+ * @date 2019年5月6日 下午8:04:09
|
|
|
+ */
|
|
|
+@Component
|
|
|
+public class IndexDataFacade {
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ TranServiceClient tranServiceClient;
|
|
|
+ @Autowired
|
|
|
+ IndexConfigFacade indexConfigFacade;
|
|
|
+
|
|
|
+ /**
|
|
|
+ *
|
|
|
+ * @param indexDataFindVO
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public IndexConfigAndDataDTO getIndexDataAll(IndexDataFindVO indexDataFindVO) {
|
|
|
+
|
|
|
+ Map<String, Object> indexDataMap = new HashMap<>();
|
|
|
+ indexDataMap.put("diseaseName", indexDataFindVO.getDiseaseName());
|
|
|
+ indexDataMap.put("patientId", indexDataFindVO.getPatientId());
|
|
|
+ indexDataMap.put("startTime", indexDataFindVO.getStartTime());
|
|
|
+ indexDataMap.put("endTime", indexDataFindVO.getEndTime());
|
|
|
+ List<Long> ids = new ArrayList<Long>();
|
|
|
+ // 获取所有需要记录的指标项
|
|
|
+ List<IndexConfigDTO> indexConfigdata = indexConfigFacade.getIndexConfig(indexDataFindVO.getDiseaseName());
|
|
|
+ for (IndexConfigDTO indexconfig : indexConfigdata) {
|
|
|
+ ids.add(indexconfig.getUniqueId());
|
|
|
+ }
|
|
|
+ IndexDataiIds indexDataiIds= new IndexDataiIds();
|
|
|
+ BeanUtil.copyProperties(indexDataFindVO,indexDataiIds);
|
|
|
+ indexDataiIds.setIds(ids);
|
|
|
+ // 获取慢病指标数据
|
|
|
+ RespDTO<List<IndexDataDTO>> dataAll = tranServiceClient.getIndexDatas(indexDataiIds);
|
|
|
+ if (dataAll == null || !"0".equals(dataAll.code)) {
|
|
|
+ throw new CommonException(CommonErrorCode.SERVER_IS_ERROR,
|
|
|
+ "获取指标数据失败");
|
|
|
+ }
|
|
|
+ List<IndexDataDTO> data = dataAll.data;
|
|
|
+ List<IndexDTO> list = new ArrayList<IndexDTO>();
|
|
|
+ // 根据公表名分组
|
|
|
+ //Map<String, List<IndexDataDTO>> dataMap =datas.stream().collect(Collectors.groupingBy(IndexDataDTO::getIndexUnique));
|
|
|
+ // 根据公表名分组
|
|
|
+ Map<String, List<IndexDataDTO>> dataMap = data.stream().collect(Collectors.groupingBy(IndexDataDTO::getIndexUnique));
|
|
|
+ for (String key : dataMap.keySet()) {
|
|
|
+ IndexDTO itemIndexDTO = new IndexDTO();
|
|
|
+ itemIndexDTO.setItemName(key);
|
|
|
+ List<String> indexUnits = new ArrayList<String>();
|
|
|
+ List<String> indexValues = new ArrayList<String>();
|
|
|
+ List<Integer> isAbnormals = new ArrayList<Integer>();
|
|
|
+ List<Date> creatTimes = new ArrayList<Date>();
|
|
|
+ List<IndexDataDTO> indexDatas = dataMap.get(key);
|
|
|
+ for (IndexDataDTO indexDataDTO : indexDatas) {
|
|
|
+ indexUnits.add(indexDataDTO.getIndexUnit());
|
|
|
+ indexValues.add(indexDataDTO.getIndexValue());
|
|
|
+ isAbnormals.add(indexDataDTO.getIsAbnormal());
|
|
|
+ creatTimes.add(indexDataDTO.getCreatTime());
|
|
|
+ }
|
|
|
+
|
|
|
+ itemIndexDTO.setIndexUnit(indexUnits);
|
|
|
+ itemIndexDTO.setIndexValue(indexValues);
|
|
|
+ itemIndexDTO.setIsAbnormal(isAbnormals);
|
|
|
+ itemIndexDTO.setCreatTime(creatTimes);
|
|
|
+ list.add(itemIndexDTO);
|
|
|
+
|
|
|
+ }
|
|
|
+ IndexConfigAndDataDTO indexsData = new IndexConfigAndDataDTO();
|
|
|
+ indexsData.setIndexConfigData(indexConfigFacade.getIndexConfig(indexDataFindVO.getDiseaseName()));
|
|
|
+ indexsData.setIndexData(list);
|
|
|
+ return indexsData;
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ public boolean saveIndexDatas(IndexDataSaveVO indexDataSaveVO) {
|
|
|
+ boolean res = false;
|
|
|
+ if (null != indexDataSaveVO && ListUtil.isNotEmpty(indexDataSaveVO.getIndexData())) {
|
|
|
+ // 获取所有需要记录的指标项
|
|
|
+ List<IndexConfigDTO> data = indexConfigFacade.getIndexConfig("");
|
|
|
+ // 遍历数据进行保存
|
|
|
+ List<IndexDataVO> indexDataList = new ArrayList<IndexDataVO>();
|
|
|
+ //过滤化验数据
|
|
|
+ List<IndexDataVO> indexDatas = indexDataSaveVO.getIndexData();
|
|
|
+ for (IndexConfigDTO configData : data) {
|
|
|
+ for (IndexDataVO indexDataNew : indexDatas) {
|
|
|
+ if (configData.getIndexUnique().equals(indexDataNew.getIndexUnique())) {
|
|
|
+ IndexDataAllVO indexData = new IndexDataAllVO();
|
|
|
+ indexData.setIndexId(configData.getUniqueId());
|
|
|
+ indexData.setIndexUnique(configData.getIndexUnique());
|
|
|
+ indexData.setCreatTime(indexDataNew.getCreatTime());
|
|
|
+ indexData.setIndexUnit(indexDataNew.getIndexUnit());
|
|
|
+ indexData.setIndexValue(indexDataNew.getIndexValue());
|
|
|
+ indexData.setIsAbnormal(indexDataNew.getIsAbnormal());
|
|
|
+ indexDataList.add(indexData);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ indexDataSaveVO.setIndexData(indexDataList);
|
|
|
+ RespDTO<Boolean> resData = tranServiceClient.saveIndexDatas(indexDataSaveVO);
|
|
|
+ RespDTOUtil.respNGDeal(resData, resData.msg);
|
|
|
+ res = resData.data;
|
|
|
+ }
|
|
|
+
|
|
|
+ return res;
|
|
|
+ }
|
|
|
+
|
|
|
+}
|