|  | @ -1,16 +1,16 @@
 | 
	
		
			
				|  |  | package com.yihu.jw.quota.etl.extract;
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | import com.yihu.jw.entity.base.org.BaseOrgDO;
 | 
	
		
			
				|  |  | import com.yihu.jw.entity.ehr.quota.TjQuotaDimensionMain;
 | 
	
		
			
				|  |  | import com.yihu.jw.entity.ehr.quota.TjQuotaDimensionSlave;
 | 
	
		
			
				|  |  | import com.yihu.jw.restmodel.ehr.org.MOrganization;
 | 
	
		
			
				|  |  | import com.yihu.jw.util.date.DateUtil;
 | 
	
		
			
				|  |  | import com.yihu.jw.quota.etl.Contant;
 | 
	
		
			
				|  |  | import com.yihu.jw.quota.util.BasesicUtil;
 | 
	
		
			
				|  |  | import com.yihu.jw.quota.vo.DictModel;
 | 
	
		
			
				|  |  | import com.yihu.jw.quota.vo.OrgHealthCategoryShowModel;
 | 
	
		
			
				|  |  | import com.yihu.jw.quota.vo.DoctorVo;
 | 
	
		
			
				|  |  | import com.yihu.jw.quota.vo.QuotaVo;
 | 
	
		
			
				|  |  | import com.yihu.jw.quota.vo.SaveModel;
 | 
	
		
			
				|  |  | import com.yihu.jw.util.date.DateUtil;
 | 
	
		
			
				|  |  | import org.apache.commons.lang3.time.DateUtils;
 | 
	
		
			
				|  |  | import org.slf4j.Logger;
 | 
	
		
			
				|  |  | import org.slf4j.LoggerFactory;
 | 
	
	
		
			
				|  | @ -23,6 +23,7 @@ import org.springframework.stereotype.Component;
 | 
	
		
			
				|  |  | import org.springframework.util.StringUtils;
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | import java.util.*;
 | 
	
		
			
				|  |  | import java.util.stream.Collectors;
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | /**
 | 
	
		
			
				|  |  |  * Created by janseny on 2017/7/10.
 | 
	
	
		
			
				|  | @ -80,8 +81,8 @@ public class ExtractUtil {
 | 
	
		
			
				|  |  |             if(saveModel.getTown() != null){
 | 
	
		
			
				|  |  |                 townDictMap.put(saveModel.getTown(), saveModel.getTownName());
 | 
	
		
			
				|  |  |             }
 | 
	
		
			
				|  |  |             if(saveModel.getOrg() != null){
 | 
	
		
			
				|  |  |                 orgDictMap.put(saveModel.getOrg(), saveModel.getOrgName());
 | 
	
		
			
				|  |  |             if(saveModel.getHospital() != null){
 | 
	
		
			
				|  |  |                 orgDictMap.put(saveModel.getHospital(), saveModel.getHospitalName());
 | 
	
		
			
				|  |  |             }
 | 
	
		
			
				|  |  |             if(saveModel.getDept() != null){
 | 
	
		
			
				|  |  |                 deptDictMap.put(saveModel.getDept(), saveModel.getDeptName());
 | 
	
	
		
			
				|  | @ -125,8 +126,8 @@ public class ExtractUtil {
 | 
	
		
			
				|  |  |                         saveModel.setTown(value);
 | 
	
		
			
				|  |  |                         saveModel.setTownName(townDictMap.get(value));
 | 
	
		
			
				|  |  |                     }else if(main.getMainCode().equals(main_org) && !StringUtils.isEmpty(orgDictMap.get(value))){
 | 
	
		
			
				|  |  |                         saveModel.setOrg(value);
 | 
	
		
			
				|  |  |                         saveModel.setOrgName(orgDictMap.get(value));
 | 
	
		
			
				|  |  |                         saveModel.setHospital(value);
 | 
	
		
			
				|  |  |                         saveModel.setHospital(orgDictMap.get(value));
 | 
	
		
			
				|  |  |                     }else if(main.getMainCode().equals(main_year) && !StringUtils.isEmpty(yearDictMap.get(value))){
 | 
	
		
			
				|  |  |                         saveModel.setYearName(yearDictMap.get(value));
 | 
	
		
			
				|  |  |                         saveModel.setYear(value);
 | 
	
	
		
			
				|  | @ -144,7 +145,7 @@ public class ExtractUtil {
 | 
	
		
			
				|  |  |                     }
 | 
	
		
			
				|  |  |                 }
 | 
	
		
			
				|  |  |             }
 | 
	
		
			
				|  |  |             if(saveModel.getTown() != null || saveModel.getOrg() !=null){
 | 
	
		
			
				|  |  |             if(saveModel.getTown() != null || saveModel.getHospital() !=null){
 | 
	
		
			
				|  |  |                 for (int i = 0; i < qds.size(); i++) {
 | 
	
		
			
				|  |  |                     int num = i+1 ;
 | 
	
		
			
				|  |  |                     if(num == 1) {
 | 
	
	
		
			
				|  | @ -243,7 +244,7 @@ public class ExtractUtil {
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  |         //关联机构相关信息
 | 
	
		
			
				|  |  |         if(orgDictMap != null && orgDictMap.size() > 0){
 | 
	
		
			
				|  |  |             setSaveModelProperties(returnList);
 | 
	
		
			
				|  |  |             setSaveModelPropertiesOrg(returnList);
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  |         logger.info("指标:" + quotaVo.getName() + "统计时指标或者机构未关联上错误数据有:" + errorCount);
 | 
	
		
			
				|  |  |         return returnList;
 | 
	
	
		
			
				|  | @ -324,18 +325,38 @@ public class ExtractUtil {
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |         // 设置维度组合的统计值
 | 
	
		
			
				|  |  |         for (Map.Entry<String, String> entry : statisticsResultMap.entrySet()) {
 | 
	
		
			
				|  |  |         for (Map.Entry<String, SaveModel> entry : allData.entrySet()) {
 | 
	
		
			
				|  |  |             String key = entry.getKey();
 | 
	
		
			
				|  |  |             SaveModel saveModel = allData.get(key);
 | 
	
		
			
				|  |  |             if (saveModel != null) {
 | 
	
		
			
				|  |  |             String result = statisticsResultMap.get(key);
 | 
	
		
			
				|  |  |             if(!StringUtils.isEmpty(result)){
 | 
	
		
			
				|  |  |                 saveModel.setResult(statisticsResultMap.get(key));
 | 
	
		
			
				|  |  |                 saveModel.setQuotaDate(daySlaveDictMap.get(key));
 | 
	
		
			
				|  |  |                 saveModel.setResult1(Double.parseDouble(saveModel.getResult()));
 | 
	
		
			
				|  |  |                 saveModel.setResult2(Double.parseDouble(saveModel.getResult()));
 | 
	
		
			
				|  |  |                 saveModel.setTimeLevel(dataLevel);
 | 
	
		
			
				|  |  |                 returnList.add(saveModel);
 | 
	
		
			
				|  |  |             }else {
 | 
	
		
			
				|  |  |                 saveModel.setResult("0");
 | 
	
		
			
				|  |  |                 saveModel.setQuotaDate(saveModel.getSlaveKey1());
 | 
	
		
			
				|  |  |                 saveModel.setResult1(Double.parseDouble(saveModel.getResult()));
 | 
	
		
			
				|  |  |                 saveModel.setResult2(Double.parseDouble(saveModel.getResult()));
 | 
	
		
			
				|  |  |                 saveModel.setTimeLevel(dataLevel);
 | 
	
		
			
				|  |  |                 returnList.add(saveModel);
 | 
	
		
			
				|  |  |             }
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  | //        for (Map.Entry<String, String> entry : statisticsResultMap.entrySet()) {
 | 
	
		
			
				|  |  | //            String key = entry.getKey();
 | 
	
		
			
				|  |  | //            SaveModel saveModel = allData.get(key);
 | 
	
		
			
				|  |  | //            if (saveModel != null) {
 | 
	
		
			
				|  |  | //                saveModel.setResult(statisticsResultMap.get(key));
 | 
	
		
			
				|  |  | //                saveModel.setQuotaDate(daySlaveDictMap.get(key));
 | 
	
		
			
				|  |  | //                saveModel.setResult1(Double.parseDouble(saveModel.getResult()));
 | 
	
		
			
				|  |  | //                saveModel.setResult2(Double.parseDouble(saveModel.getResult()));
 | 
	
		
			
				|  |  | //                saveModel.setTimeLevel(dataLevel);
 | 
	
		
			
				|  |  | //                returnList.add(saveModel);
 | 
	
		
			
				|  |  | //            }
 | 
	
		
			
				|  |  | //        }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |         List<String> dimins = new ArrayList<>();
 | 
	
		
			
				|  |  |         for (TjQuotaDimensionSlave slave : qds) {
 | 
	
	
		
			
				|  | @ -373,9 +394,7 @@ public class ExtractUtil {
 | 
	
		
			
				|  |  |                 if (dictData == null) {
 | 
	
		
			
				|  |  |                     throw new Exception("主纬度配置有误");
 | 
	
		
			
				|  |  |                 } else {
 | 
	
		
			
				|  |  |                     if (dimensionMain.getMainCode().equals("org")) {//机构关联出区县
 | 
	
		
			
				|  |  |                         setSaveModelProperties(dictData);
 | 
	
		
			
				|  |  |                     }
 | 
	
		
			
				|  |  |                     setSaveModelProperties(dimensionMain,dictData);
 | 
	
		
			
				|  |  |                     //设置到map里面
 | 
	
		
			
				|  |  |                     setAllData(allData, dictData, dimensionMain.getType());
 | 
	
		
			
				|  |  |                 }
 | 
	
	
		
			
				|  | @ -412,24 +431,21 @@ public class ExtractUtil {
 | 
	
		
			
				|  |  |         try {
 | 
	
		
			
				|  |  |             if (dimensionMains != null) {
 | 
	
		
			
				|  |  |                 //查询字典数据
 | 
	
		
			
				|  |  |                 List<SaveModel> dictData = jdbcTemplate.query(dimensionMains.get(0).getDictSql(), new BeanPropertyRowMapper(SaveModel.class));
 | 
	
		
			
				|  |  |                 TjQuotaDimensionMain dimensionMain = dimensionMains.get(0);
 | 
	
		
			
				|  |  |                 List<SaveModel> dictData = jdbcTemplate.query(dimensionMain.getDictSql(), new BeanPropertyRowMapper(SaveModel.class));
 | 
	
		
			
				|  |  |                 if (dictData == null) {
 | 
	
		
			
				|  |  |                     throw new Exception("主纬度配置有误");
 | 
	
		
			
				|  |  |                 } else {
 | 
	
		
			
				|  |  |                     if (dimensionMains.get(0).getMainCode().equals("org")) {//机构关联出区县
 | 
	
		
			
				|  |  |                         setSaveModelProperties(dictData);
 | 
	
		
			
				|  |  |                     }
 | 
	
		
			
				|  |  |                     setSaveModelProperties(dimensionMain,dictData);
 | 
	
		
			
				|  |  |                     //设置到map里面
 | 
	
		
			
				|  |  |                     setAllData(allData, dictData, dimensionMains.get(0).getType());
 | 
	
		
			
				|  |  |                     setAllData(allData, dictData, dimensionMain.getType());
 | 
	
		
			
				|  |  |                 }
 | 
	
		
			
				|  |  |             }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |             for (int i = 0; i < dimensionMains.size(); i++) {
 | 
	
		
			
				|  |  |                 if (i != 0) {
 | 
	
		
			
				|  |  |                     List<SaveModel> saveDataMain = jdbcTemplate.query(dimensionMains.get(i).getDictSql(), new BeanPropertyRowMapper(SaveModel.class));
 | 
	
		
			
				|  |  |                     if (dimensionMains.get(i).getMainCode().equals("org")) {//机构关联出区县
 | 
	
		
			
				|  |  |                         setSaveModelProperties(saveDataMain);
 | 
	
		
			
				|  |  |                     }
 | 
	
		
			
				|  |  |                     setSaveModelProperties(dimensionMains.get(i),saveDataMain);
 | 
	
		
			
				|  |  |                     allData = setOtherMainData(allData, saveDataMain, dimensionMains.get(i).getMainCode(), dimensionMains.get(i).getType());
 | 
	
		
			
				|  |  |                 }
 | 
	
		
			
				|  |  |             }
 | 
	
	
		
			
				|  | @ -450,11 +466,29 @@ public class ExtractUtil {
 | 
	
		
			
				|  |  |                 allData = setAllSlaveData(allData, dictDataSlave, i);
 | 
	
		
			
				|  |  |             }
 | 
	
		
			
				|  |  |         } catch (Exception e) {
 | 
	
		
			
				|  |  |             e.printStackTrace();
 | 
	
		
			
				|  |  |             throw new Exception("纬度配置有误");
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  |         return allData;
 | 
	
		
			
				|  |  |     }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     private void setSaveModelProperties(TjQuotaDimensionMain dimensionMain,List<SaveModel> dictData){
 | 
	
		
			
				|  |  |         switch (dimensionMain.getMainCode()){
 | 
	
		
			
				|  |  |             case "org":
 | 
	
		
			
				|  |  |                 //机构关联信息
 | 
	
		
			
				|  |  |                 setSaveModelPropertiesOrg(dictData);
 | 
	
		
			
				|  |  |                 break;
 | 
	
		
			
				|  |  |             case "dept":
 | 
	
		
			
				|  |  |                 //机构关联信息
 | 
	
		
			
				|  |  |                 setSaveModelPropertiesDept(dictData);
 | 
	
		
			
				|  |  |                 break;
 | 
	
		
			
				|  |  |             case "doctor":
 | 
	
		
			
				|  |  |                 //机构关联信息
 | 
	
		
			
				|  |  |                 setSaveModelPropertiesDoctor(dictData);
 | 
	
		
			
				|  |  |                 break;
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  |     }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     //如果选择多个维度,除了第一个维度外其他维度组合
 | 
	
		
			
				|  |  |     private Map<String, SaveModel> setOtherMainData(Map<String, SaveModel> allData,
 | 
	
		
			
				|  |  |                                                     List<SaveModel> saveDataMain,
 | 
	
	
		
			
				|  | @ -462,6 +496,7 @@ public class ExtractUtil {
 | 
	
		
			
				|  |  |                                                     String dimensionType) {
 | 
	
		
			
				|  |  |         Map<String, SaveModel> returnAllData = new HashMap<>();
 | 
	
		
			
				|  |  |         try {
 | 
	
		
			
				|  |  |             code = "org".equals(code)?"hospital":code;//org转hospital
 | 
	
		
			
				|  |  |             for (Map.Entry<String, SaveModel> one : allData.entrySet()) {
 | 
	
		
			
				|  |  |                 for (int i = 0; i < saveDataMain.size(); i++) {
 | 
	
		
			
				|  |  |                     SaveModel mainOne = saveDataMain.get(i);
 | 
	
	
		
			
				|  | @ -477,29 +512,37 @@ public class ExtractUtil {
 | 
	
		
			
				|  |  |                         saveModelTemp.setTown(mainOne.getTown());
 | 
	
		
			
				|  |  |                         saveModelTemp.setTownName(mainOne.getTownName());
 | 
	
		
			
				|  |  |                     }
 | 
	
		
			
				|  |  |                     if (!StringUtils.isEmpty(mainOne.getEconomic())) {
 | 
	
		
			
				|  |  |                         saveModelTemp.setEconomic(mainOne.getEconomic());
 | 
	
		
			
				|  |  |                         saveModelTemp.setEconomicName(mainOne.getEconomicName());
 | 
	
		
			
				|  |  |                     }
 | 
	
		
			
				|  |  |                     if (!StringUtils.isEmpty(mainOne.getLevel())) {
 | 
	
		
			
				|  |  |                         saveModelTemp.setLevel(mainOne.getLevel());
 | 
	
		
			
				|  |  |                         saveModelTemp.setLevelName(mainOne.getLevelName());
 | 
	
		
			
				|  |  |                     }
 | 
	
		
			
				|  |  |                     if (!StringUtils.isEmpty(mainOne.getOrgHealthCategoryId())) {
 | 
	
		
			
				|  |  |                         saveModelTemp.setOrgHealthCategoryId(mainOne.getOrgHealthCategoryId());
 | 
	
		
			
				|  |  |                     if(!StringUtils.isEmpty(mainOne.getCity())){
 | 
	
		
			
				|  |  |                         saveModelTemp.setCityName(mainOne.getCityName());
 | 
	
		
			
				|  |  |                         saveModelTemp.setCity(mainOne.getCity());
 | 
	
		
			
				|  |  |                     }
 | 
	
		
			
				|  |  |                     if (!StringUtils.isEmpty(mainOne.getOrgHealthCategoryCode())) {
 | 
	
		
			
				|  |  |                         saveModelTemp.setOrgHealthCategoryCode(mainOne.getOrgHealthCategoryCode());
 | 
	
		
			
				|  |  |                     }
 | 
	
		
			
				|  |  |                     if (!StringUtils.isEmpty(mainOne.getOrgHealthCategoryName())) {
 | 
	
		
			
				|  |  |                         saveModelTemp.setOrgHealthCategoryName(mainOne.getOrgHealthCategoryName());
 | 
	
		
			
				|  |  |                     }
 | 
	
		
			
				|  |  |                     if (!StringUtils.isEmpty(mainOne.getOrgHealthCategoryPid())) {
 | 
	
		
			
				|  |  |                         saveModelTemp.setOrgHealthCategoryPid(mainOne.getOrgHealthCategoryPid());
 | 
	
		
			
				|  |  |                     }
 | 
	
		
			
				|  |  |                     if (!StringUtils.isEmpty(mainOne.getOrgHealthCategoryTopPid())) {
 | 
	
		
			
				|  |  |                         saveModelTemp.setOrgHealthCategoryTopPid(mainOne.getOrgHealthCategoryTopPid());
 | 
	
		
			
				|  |  |                     if(!StringUtils.isEmpty(mainOne.getProvince())){
 | 
	
		
			
				|  |  |                         saveModelTemp.setProvinceName(mainOne.getProvinceName());
 | 
	
		
			
				|  |  |                         saveModelTemp.setProvince(mainOne.getProvince());
 | 
	
		
			
				|  |  |                     }
 | 
	
		
			
				|  |  | //                    if (!StringUtils.isEmpty(mainOne.getEconomic())) {
 | 
	
		
			
				|  |  | //                        saveModelTemp.setEconomic(mainOne.getEconomic());
 | 
	
		
			
				|  |  | //                        saveModelTemp.setEconomicName(mainOne.getEconomicName());
 | 
	
		
			
				|  |  | //                    }
 | 
	
		
			
				|  |  | //                    if (!StringUtils.isEmpty(mainOne.getLevel())) {
 | 
	
		
			
				|  |  | //                        saveModelTemp.setLevel(mainOne.getLevel());
 | 
	
		
			
				|  |  | //                        saveModelTemp.setLevelName(mainOne.getLevelName());
 | 
	
		
			
				|  |  | //                    }
 | 
	
		
			
				|  |  | //                    if (!StringUtils.isEmpty(mainOne.getOrgHealthCategoryId())) {
 | 
	
		
			
				|  |  | //                        saveModelTemp.setOrgHealthCategoryId(mainOne.getOrgHealthCategoryId());
 | 
	
		
			
				|  |  | //                    }
 | 
	
		
			
				|  |  | //                    if (!StringUtils.isEmpty(mainOne.getOrgHealthCategoryCode())) {
 | 
	
		
			
				|  |  | //                        saveModelTemp.setOrgHealthCategoryCode(mainOne.getOrgHealthCategoryCode());
 | 
	
		
			
				|  |  | //                    }
 | 
	
		
			
				|  |  | //                    if (!StringUtils.isEmpty(mainOne.getOrgHealthCategoryName())) {
 | 
	
		
			
				|  |  | //                        saveModelTemp.setOrgHealthCategoryName(mainOne.getOrgHealthCategoryName());
 | 
	
		
			
				|  |  | //                    }
 | 
	
		
			
				|  |  | //                    if (!StringUtils.isEmpty(mainOne.getOrgHealthCategoryPid())) {
 | 
	
		
			
				|  |  | //                        saveModelTemp.setOrgHealthCategoryPid(mainOne.getOrgHealthCategoryPid());
 | 
	
		
			
				|  |  | //                    }
 | 
	
		
			
				|  |  | //                    if (!StringUtils.isEmpty(mainOne.getOrgHealthCategoryTopPid())) {
 | 
	
		
			
				|  |  | //                        saveModelTemp.setOrgHealthCategoryTopPid(mainOne.getOrgHealthCategoryTopPid());
 | 
	
		
			
				|  |  | //                    }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | 
 | 
	
	
		
			
				|  | @ -574,7 +617,7 @@ public class ExtractUtil {
 | 
	
		
			
				|  |  |             case Contant.main_dimension.area_org: {
 | 
	
		
			
				|  |  |                 //设置机构
 | 
	
		
			
				|  |  |                 dictData.stream().forEach(one -> {
 | 
	
		
			
				|  |  |                     setOneData(allData, one.getOrg(), one, Contant.main_dimension_areaLevel.area_org);
 | 
	
		
			
				|  |  |                     setOneData(allData, one.getHospital(), one, Contant.main_dimension_areaLevel.area_org);
 | 
	
		
			
				|  |  |                 });
 | 
	
		
			
				|  |  |                 break;
 | 
	
		
			
				|  |  |             }
 | 
	
	
		
			
				|  | @ -623,8 +666,8 @@ public class ExtractUtil {
 | 
	
		
			
				|  |  |                 break;
 | 
	
		
			
				|  |  |             }
 | 
	
		
			
				|  |  |             case Contant.main_dimension.area_org: {
 | 
	
		
			
				|  |  |                 code = mainOne.getOrg();
 | 
	
		
			
				|  |  |                 name = mainOne.getOrgName();
 | 
	
		
			
				|  |  |                 code = mainOne.getHospital();
 | 
	
		
			
				|  |  |                 name = mainOne.getHospitalName();
 | 
	
		
			
				|  |  |                 break;
 | 
	
		
			
				|  |  |             }
 | 
	
		
			
				|  |  |             case Contant.main_dimension.area_dept: {
 | 
	
	
		
			
				|  | @ -632,6 +675,11 @@ public class ExtractUtil {
 | 
	
		
			
				|  |  |                 name = mainOne.getDeptName();
 | 
	
		
			
				|  |  |                 break;
 | 
	
		
			
				|  |  |             }
 | 
	
		
			
				|  |  |             case Contant.main_dimension.area_doctor: {
 | 
	
		
			
				|  |  |                 code = mainOne.getDoctor();
 | 
	
		
			
				|  |  |                 name = mainOne.getDoctorName();
 | 
	
		
			
				|  |  |                 break;
 | 
	
		
			
				|  |  |             }
 | 
	
		
			
				|  |  |             case Contant.main_dimension.time_year: {
 | 
	
		
			
				|  |  |                 code = mainOne.getYear();
 | 
	
		
			
				|  |  |                 name = mainOne.getYearName();
 | 
	
	
		
			
				|  | @ -658,84 +706,196 @@ public class ExtractUtil {
 | 
	
		
			
				|  |  |         allData.put(key, one);
 | 
	
		
			
				|  |  |     }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     private void setSaveModelProperties(List<SaveModel> saveDataMain) {
 | 
	
		
			
				|  |  |         //上饶区县
 | 
	
		
			
				|  |  |         String townSql = "SELECT id as code,name as name  from address_dict where pid = '361100'";
 | 
	
		
			
				|  |  |         List<DictModel> townDictDatas = jdbcTemplate.query(townSql, new BeanPropertyRowMapper(DictModel.class));
 | 
	
		
			
				|  |  |         Map<String,String> townMap = new HashMap<>();
 | 
	
		
			
				|  |  |         for(DictModel dictModel : townDictDatas){
 | 
	
		
			
				|  |  |             townMap.put(dictModel.getCode(), dictModel.getName());
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  |         //机构类型 目录对应的名称和节点id
 | 
	
		
			
				|  |  |         String orgHealthCategorySql = "SELECT id as orgHealthCategoryId,pid as orgHealthCategoryPid,top_pid as orgHealthCategoryTopPid,code as orgHealthCategoryCode, name as orgHealthCategoryName from org_health_category";
 | 
	
		
			
				|  |  |         List<OrgHealthCategoryShowModel> orgHealthCategoryDictDatas = jdbcTemplate.query(orgHealthCategorySql, new BeanPropertyRowMapper(OrgHealthCategoryShowModel.class));
 | 
	
		
			
				|  |  |         Map<String,OrgHealthCategoryShowModel>  orgHealthCategoryMap = new HashMap<>();
 | 
	
		
			
				|  |  |         for(OrgHealthCategoryShowModel orgHealthCategory : orgHealthCategoryDictDatas){
 | 
	
		
			
				|  |  |             orgHealthCategoryMap.put(orgHealthCategory.getOrgHealthCategoryCode(), orgHealthCategory);
 | 
	
		
			
				|  |  |     /**
 | 
	
		
			
				|  |  |      * 机构关联信息
 | 
	
		
			
				|  |  |      * @param saveDataMain
 | 
	
		
			
				|  |  |      */
 | 
	
		
			
				|  |  |     private void setSaveModelPropertiesOrg(List<SaveModel> saveDataMain) {
 | 
	
		
			
				|  |  |         String sql = "SELECT * from base.base_org WHERE del = 1";
 | 
	
		
			
				|  |  |         List<BaseOrgDO> baseOrgDOList = jdbcTemplate.query(sql,new BeanPropertyRowMapper<>(BaseOrgDO.class));
 | 
	
		
			
				|  |  |         Map<String,BaseOrgDO> orgDOMap = baseOrgDOList.stream().collect(Collectors.toMap(BaseOrgDO::getCode,org->org,(oldVo,newVo)->oldVo));
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |         for (SaveModel model : saveDataMain) {
 | 
	
		
			
				|  |  |             BaseOrgDO orgDO = orgDOMap.get(model.getHospital());
 | 
	
		
			
				|  |  |             if(orgDO!=null){
 | 
	
		
			
				|  |  |                 model.setCity(orgDO.getCityCode());
 | 
	
		
			
				|  |  |                 model.setCityName(orgDO.getCityName());
 | 
	
		
			
				|  |  |                 model.setTown(orgDO.getTownCode());
 | 
	
		
			
				|  |  |                 model.setTownName(orgDO.getTownName());
 | 
	
		
			
				|  |  |                 model.setProvince(orgDO.getProvinceCode());
 | 
	
		
			
				|  |  |                 model.setProvinceName(orgDO.getProvinceName());
 | 
	
		
			
				|  |  |             }
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  |     }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     /**
 | 
	
		
			
				|  |  |      * 部门关联信息
 | 
	
		
			
				|  |  |      * @param saveDataMain
 | 
	
		
			
				|  |  |      */
 | 
	
		
			
				|  |  |     private void setSaveModelPropertiesDept(List<SaveModel> saveDataMain) {
 | 
	
		
			
				|  |  |         String sql = "SELECT distinct " +
 | 
	
		
			
				|  |  |                 "bdh.dept_code deptCode," +
 | 
	
		
			
				|  |  |                 "hd.name AS deptName," +
 | 
	
		
			
				|  |  |                 "bdh.org_code hospital," +
 | 
	
		
			
				|  |  |                 "bdh.org_name hospitalName," +
 | 
	
		
			
				|  |  |                 "o.town_code townCode," +
 | 
	
		
			
				|  |  |                 "o.town_name townName," +
 | 
	
		
			
				|  |  |                 "o.city_code cityCode," +
 | 
	
		
			
				|  |  |                 "o.city_name cityName," +
 | 
	
		
			
				|  |  |                 "o.province_code provinceCode," +
 | 
	
		
			
				|  |  |                 "o.province_name provinceName" +
 | 
	
		
			
				|  |  |                 " FROM " +
 | 
	
		
			
				|  |  |                 "base.base_doctor_hospital bdh, " +
 | 
	
		
			
				|  |  |                 "base.base_doctor bd," +
 | 
	
		
			
				|  |  |                 "base.base_org o," +
 | 
	
		
			
				|  |  |                 "base.dict_hospital_dept hd " +
 | 
	
		
			
				|  |  |                 " WHERE bdh.doctor_code = bd.id  " +
 | 
	
		
			
				|  |  |                 "AND hd.code= bdh.dept_code " +
 | 
	
		
			
				|  |  |                 "AND o.code = bdh.org_code " +
 | 
	
		
			
				|  |  |                 "AND bdh.del=1 AND hd.CONSULT_DEPT_FLAG='1' AND bd.job_title_code IN('1201','1301','1401','1101','066','067','061','1310','061','065','1','2','3','4')";
 | 
	
		
			
				|  |  |         List<DoctorVo> doctorVoList = jdbcTemplate.query(sql,new BeanPropertyRowMapper<>(DoctorVo.class));
 | 
	
		
			
				|  |  |         Map<String,DoctorVo> doctorVoMap = doctorVoList.stream().collect(Collectors.toMap(DoctorVo::getDeptCode,org->org,(oldVo,newVo)->oldVo));
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |         //经济类型
 | 
	
		
			
				|  |  |         String economicSql = "SELECT code, catalog from system_dict_entries WHERE dict_id = 102 ";
 | 
	
		
			
				|  |  |         Map<String, Object> economicMap = new HashMap<>();
 | 
	
		
			
				|  |  |         List<Map<String, Object>> list = jdbcTemplate.queryForList(economicSql);
 | 
	
		
			
				|  |  |         if (null != list && list.size() > 0) {
 | 
	
		
			
				|  |  |             for (Map<String, Object> map : list) {
 | 
	
		
			
				|  |  |                 economicMap.put(map.get("code") + "", map.get("catalog") + "");
 | 
	
		
			
				|  |  |         for (SaveModel model : saveDataMain) {
 | 
	
		
			
				|  |  |             DoctorVo doctorVo = doctorVoMap.get(model.getDept());
 | 
	
		
			
				|  |  |             if(doctorVo!=null){
 | 
	
		
			
				|  |  |                 model.setHospital(doctorVo.getHospitalCode());
 | 
	
		
			
				|  |  |                 model.setHospitalName(doctorVo.getHospitalName());
 | 
	
		
			
				|  |  |                 model.setCity(doctorVo.getCityCode());
 | 
	
		
			
				|  |  |                 model.setCityName(doctorVo.getCityName());
 | 
	
		
			
				|  |  |                 model.setTown(doctorVo.getTownCode());
 | 
	
		
			
				|  |  |                 model.setTownName(doctorVo.getTownName());
 | 
	
		
			
				|  |  |                 model.setProvince(doctorVo.getProvinceCode());
 | 
	
		
			
				|  |  |                 model.setProvinceName(doctorVo.getProvinceName());
 | 
	
		
			
				|  |  |             }
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  |     }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     /**
 | 
	
		
			
				|  |  |      * 医生关联信息
 | 
	
		
			
				|  |  |      * @param saveDataMain
 | 
	
		
			
				|  |  |      */
 | 
	
		
			
				|  |  |     private void setSaveModelPropertiesDoctor(List<SaveModel> saveDataMain) {
 | 
	
		
			
				|  |  |         String sql = "SELECT " +
 | 
	
		
			
				|  |  |                 "bd.id AS code , " +
 | 
	
		
			
				|  |  |                 "bd.name ," +
 | 
	
		
			
				|  |  |                 "bdh.dept_code deptCode," +
 | 
	
		
			
				|  |  |                 "hd.name AS deptName," +
 | 
	
		
			
				|  |  |                 "bdh.org_code hospital," +
 | 
	
		
			
				|  |  |                 "bdh.org_name hospitalName," +
 | 
	
		
			
				|  |  |                 "o.town_code townCode," +
 | 
	
		
			
				|  |  |                 "o.town_name townName," +
 | 
	
		
			
				|  |  |                 "o.city_code cityCode," +
 | 
	
		
			
				|  |  |                 "o.city_name cityName," +
 | 
	
		
			
				|  |  |                 "o.province_code provinceCode," +
 | 
	
		
			
				|  |  |                 "o.province_name provinceName" +
 | 
	
		
			
				|  |  |                 " FROM " +
 | 
	
		
			
				|  |  |                 "base.base_doctor_hospital bdh, " +
 | 
	
		
			
				|  |  |                 "base.base_doctor bd," +
 | 
	
		
			
				|  |  |                 "base.base_org o," +
 | 
	
		
			
				|  |  |                 "base.dict_hospital_dept hd " +
 | 
	
		
			
				|  |  |                 " WHERE bdh.doctor_code = bd.id  " +
 | 
	
		
			
				|  |  |                 "AND hd.code= bdh.dept_code " +
 | 
	
		
			
				|  |  |                 "AND o.code = bdh.org_code " +
 | 
	
		
			
				|  |  |                 "AND bdh.del=1 AND hd.CONSULT_DEPT_FLAG='1' AND bd.job_title_code IN('1201','1301','1401','1101','066','067','061','1310','061','065','1','2','3','4')";
 | 
	
		
			
				|  |  |         List<DoctorVo> doctorVoList = jdbcTemplate.query(sql,new BeanPropertyRowMapper<>(DoctorVo.class));
 | 
	
		
			
				|  |  |         Map<String,DoctorVo> doctorVoMap = doctorVoList.stream().collect(Collectors.toMap(DoctorVo::getCode,org->org,(oldVo,newVo)->oldVo));
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |         for (SaveModel model : saveDataMain) {
 | 
	
		
			
				|  |  |             String dictSql = "SELECT org_code as orgCode,hos_type_id as hosTypeId,administrative_division as administrativeDivision, hos_economic as hosEconomic, level_id as levelId  from organizations where org_code=";
 | 
	
		
			
				|  |  |             dictSql += "'" + model.getOrg() + "'";
 | 
	
		
			
				|  |  |             List<MOrganization> organizations = jdbcTemplate.query(dictSql, new BeanPropertyRowMapper(MOrganization.class));
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |             if (organizations != null && organizations.size() > 0) {
 | 
	
		
			
				|  |  |                 MOrganization organization = organizations.get(0);
 | 
	
		
			
				|  |  |                 if (!StringUtils.isEmpty(organization.getAdministrativeDivision())) {
 | 
	
		
			
				|  |  |                     String orgCode = organization.getAdministrativeDivision().toString();
 | 
	
		
			
				|  |  |                     if(townMap.get(orgCode) != null ){
 | 
	
		
			
				|  |  |                         model.setTown(orgCode);
 | 
	
		
			
				|  |  |                         model.setTownName(townMap.get(orgCode));
 | 
	
		
			
				|  |  |                     }
 | 
	
		
			
				|  |  |                 }
 | 
	
		
			
				|  |  |                 //关联出对应的机构类型
 | 
	
		
			
				|  |  |                 if (!StringUtils.isEmpty(organization.getHosTypeId())) {
 | 
	
		
			
				|  |  |                     if(orgHealthCategoryMap.get(organization.getHosTypeId()) != null ){
 | 
	
		
			
				|  |  |                         OrgHealthCategoryShowModel orgHealthCategory = orgHealthCategoryMap.get(organization.getHosTypeId());
 | 
	
		
			
				|  |  |                         model.setOrgHealthCategoryCode(organization.getHosTypeId());
 | 
	
		
			
				|  |  |                         model.setOrgHealthCategoryName(orgHealthCategory.getOrgHealthCategoryName());
 | 
	
		
			
				|  |  |                         model.setOrgHealthCategoryId(orgHealthCategory.getOrgHealthCategoryId());
 | 
	
		
			
				|  |  |                         model.setOrgHealthCategoryPid(orgHealthCategory.getOrgHealthCategoryPid());
 | 
	
		
			
				|  |  |                         model.setOrgHealthCategoryTopPid(orgHealthCategory.getOrgHealthCategoryTopPid());
 | 
	
		
			
				|  |  |                     }
 | 
	
		
			
				|  |  |                 }
 | 
	
		
			
				|  |  |                 if (!StringUtils.isEmpty(organization.getHosEconomic())) {
 | 
	
		
			
				|  |  |                     String name = economicMap.get(organizations.get(0).getHosEconomic()) + "";
 | 
	
		
			
				|  |  |                     if ("公立".equals(name)) {
 | 
	
		
			
				|  |  |                         model.setEconomic("1021");
 | 
	
		
			
				|  |  |                         model.setEconomicName("公立");
 | 
	
		
			
				|  |  |                     } else {
 | 
	
		
			
				|  |  |                         model.setEconomic("1022");
 | 
	
		
			
				|  |  |                         model.setEconomicName("非公立");
 | 
	
		
			
				|  |  |                     }
 | 
	
		
			
				|  |  |                 }
 | 
	
		
			
				|  |  |                 if (!StringUtils.isEmpty(organization.getLevelId())) {
 | 
	
		
			
				|  |  |                     String levelId = organization.getLevelId();
 | 
	
		
			
				|  |  |                     if ("1".equals(levelId)) {
 | 
	
		
			
				|  |  |                         model.setLevel(levelId);
 | 
	
		
			
				|  |  |                         model.setLevelName("一级");
 | 
	
		
			
				|  |  |                     } else if ("2".equals(levelId)) {
 | 
	
		
			
				|  |  |                         model.setLevel(levelId);
 | 
	
		
			
				|  |  |                         model.setLevelName("二级");
 | 
	
		
			
				|  |  |                     } else if ("3".equals(levelId)) {
 | 
	
		
			
				|  |  |                         model.setLevel(levelId);
 | 
	
		
			
				|  |  |                         model.setLevelName("三级");
 | 
	
		
			
				|  |  |                     } else {
 | 
	
		
			
				|  |  |                         model.setLevel(levelId);
 | 
	
		
			
				|  |  |                         model.setLevelName("未定级");
 | 
	
		
			
				|  |  |                     }
 | 
	
		
			
				|  |  |                 }
 | 
	
		
			
				|  |  |             DoctorVo doctorVo = doctorVoMap.get(model.getDoctor());
 | 
	
		
			
				|  |  |             if(doctorVo!=null){
 | 
	
		
			
				|  |  |                 model.setDept(doctorVo.getDeptCode());
 | 
	
		
			
				|  |  |                 model.setDeptName(doctorVo.getDeptName());
 | 
	
		
			
				|  |  |                 model.setHospital(doctorVo.getHospitalCode());
 | 
	
		
			
				|  |  |                 model.setHospitalName(doctorVo.getHospitalName());
 | 
	
		
			
				|  |  |                 model.setCity(doctorVo.getCityCode());
 | 
	
		
			
				|  |  |                 model.setCityName(doctorVo.getCityName());
 | 
	
		
			
				|  |  |                 model.setTown(doctorVo.getTownCode());
 | 
	
		
			
				|  |  |                 model.setTownName(doctorVo.getTownName());
 | 
	
		
			
				|  |  |                 model.setProvince(doctorVo.getProvinceCode());
 | 
	
		
			
				|  |  |                 model.setProvinceName(doctorVo.getProvinceName());
 | 
	
		
			
				|  |  |             }
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  |     }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | //    private void setSaveModelProperties(List<SaveModel> saveDataMain) {
 | 
	
		
			
				|  |  | //        //上饶区县
 | 
	
		
			
				|  |  | //        String townSql = "SELECT id as code,name as name  from address_dict where pid = '361100'";
 | 
	
		
			
				|  |  | //        List<DictModel> townDictDatas = jdbcTemplate.query(townSql, new BeanPropertyRowMapper(DictModel.class));
 | 
	
		
			
				|  |  | //        Map<String,String> townMap = new HashMap<>();
 | 
	
		
			
				|  |  | //        for(DictModel dictModel : townDictDatas){
 | 
	
		
			
				|  |  | //            townMap.put(dictModel.getCode(), dictModel.getName());
 | 
	
		
			
				|  |  | //        }
 | 
	
		
			
				|  |  | //        //机构类型 目录对应的名称和节点id
 | 
	
		
			
				|  |  | //        String orgHealthCategorySql = "SELECT id as orgHealthCategoryId,pid as orgHealthCategoryPid,top_pid as orgHealthCategoryTopPid,code as orgHealthCategoryCode, name as orgHealthCategoryName from org_health_category";
 | 
	
		
			
				|  |  | //        List<OrgHealthCategoryShowModel> orgHealthCategoryDictDatas = jdbcTemplate.query(orgHealthCategorySql, new BeanPropertyRowMapper(OrgHealthCategoryShowModel.class));
 | 
	
		
			
				|  |  | //        Map<String,OrgHealthCategoryShowModel>  orgHealthCategoryMap = new HashMap<>();
 | 
	
		
			
				|  |  | //        for(OrgHealthCategoryShowModel orgHealthCategory : orgHealthCategoryDictDatas){
 | 
	
		
			
				|  |  | //            orgHealthCategoryMap.put(orgHealthCategory.getOrgHealthCategoryCode(), orgHealthCategory);
 | 
	
		
			
				|  |  | //        }
 | 
	
		
			
				|  |  | //
 | 
	
		
			
				|  |  | //        //经济类型
 | 
	
		
			
				|  |  | //        String economicSql = "SELECT code, catalog from system_dict_entries WHERE dict_id = 102 ";
 | 
	
		
			
				|  |  | //        Map<String, Object> economicMap = new HashMap<>();
 | 
	
		
			
				|  |  | //        List<Map<String, Object>> list = jdbcTemplate.queryForList(economicSql);
 | 
	
		
			
				|  |  | //        if (null != list && list.size() > 0) {
 | 
	
		
			
				|  |  | //            for (Map<String, Object> map : list) {
 | 
	
		
			
				|  |  | //                economicMap.put(map.get("code") + "", map.get("catalog") + "");
 | 
	
		
			
				|  |  | //            }
 | 
	
		
			
				|  |  | //        }
 | 
	
		
			
				|  |  | //
 | 
	
		
			
				|  |  | //        for (SaveModel model : saveDataMain) {
 | 
	
		
			
				|  |  | //            String dictSql = "SELECT org_code as orgCode,hos_type_id as hosTypeId,administrative_division as administrativeDivision, hos_economic as hosEconomic, level_id as levelId  from organizations where org_code=";
 | 
	
		
			
				|  |  | //            dictSql += "'" + model.getHospital() + "'";
 | 
	
		
			
				|  |  | //            List<MOrganization> organizations = jdbcTemplate.query(dictSql, new BeanPropertyRowMapper(MOrganization.class));
 | 
	
		
			
				|  |  | //
 | 
	
		
			
				|  |  | //            if (organizations != null && organizations.size() > 0) {
 | 
	
		
			
				|  |  | //                MOrganization organization = organizations.get(0);
 | 
	
		
			
				|  |  | //                if (!StringUtils.isEmpty(organization.getAdministrativeDivision())) {
 | 
	
		
			
				|  |  | //                    String orgCode = organization.getAdministrativeDivision().toString();
 | 
	
		
			
				|  |  | //                    if(townMap.get(orgCode) != null ){
 | 
	
		
			
				|  |  | //                        model.setTown(orgCode);
 | 
	
		
			
				|  |  | //                        model.setTownName(townMap.get(orgCode));
 | 
	
		
			
				|  |  | //                    }
 | 
	
		
			
				|  |  | //                }
 | 
	
		
			
				|  |  | //                //关联出对应的机构类型
 | 
	
		
			
				|  |  | //                if (!StringUtils.isEmpty(organization.getHosTypeId())) {
 | 
	
		
			
				|  |  | //                    if(orgHealthCategoryMap.get(organization.getHosTypeId()) != null ){
 | 
	
		
			
				|  |  | //                        OrgHealthCategoryShowModel orgHealthCategory = orgHealthCategoryMap.get(organization.getHosTypeId());
 | 
	
		
			
				|  |  | //                        model.setOrgHealthCategoryCode(organization.getHosTypeId());
 | 
	
		
			
				|  |  | //                        model.setOrgHealthCategoryName(orgHealthCategory.getOrgHealthCategoryName());
 | 
	
		
			
				|  |  | //                        model.setOrgHealthCategoryId(orgHealthCategory.getOrgHealthCategoryId());
 | 
	
		
			
				|  |  | //                        model.setOrgHealthCategoryPid(orgHealthCategory.getOrgHealthCategoryPid());
 | 
	
		
			
				|  |  | //                        model.setOrgHealthCategoryTopPid(orgHealthCategory.getOrgHealthCategoryTopPid());
 | 
	
		
			
				|  |  | //                    }
 | 
	
		
			
				|  |  | //                }
 | 
	
		
			
				|  |  | //                if (!StringUtils.isEmpty(organization.getHosEconomic())) {
 | 
	
		
			
				|  |  | //                    String name = economicMap.get(organizations.get(0).getHosEconomic()) + "";
 | 
	
		
			
				|  |  | //                    if ("公立".equals(name)) {
 | 
	
		
			
				|  |  | //                        model.setEconomic("1021");
 | 
	
		
			
				|  |  | //                        model.setEconomicName("公立");
 | 
	
		
			
				|  |  | //                    } else {
 | 
	
		
			
				|  |  | //                        model.setEconomic("1022");
 | 
	
		
			
				|  |  | //                        model.setEconomicName("非公立");
 | 
	
		
			
				|  |  | //                    }
 | 
	
		
			
				|  |  | //                }
 | 
	
		
			
				|  |  | //                if (!StringUtils.isEmpty(organization.getLevelId())) {
 | 
	
		
			
				|  |  | //                    String levelId = organization.getLevelId();
 | 
	
		
			
				|  |  | //                    if ("1".equals(levelId)) {
 | 
	
		
			
				|  |  | //                        model.setLevel(levelId);
 | 
	
		
			
				|  |  | //                        model.setLevelName("一级");
 | 
	
		
			
				|  |  | //                    } else if ("2".equals(levelId)) {
 | 
	
		
			
				|  |  | //                        model.setLevel(levelId);
 | 
	
		
			
				|  |  | //                        model.setLevelName("二级");
 | 
	
		
			
				|  |  | //                    } else if ("3".equals(levelId)) {
 | 
	
		
			
				|  |  | //                        model.setLevel(levelId);
 | 
	
		
			
				|  |  | //                        model.setLevelName("三级");
 | 
	
		
			
				|  |  | //                    } else {
 | 
	
		
			
				|  |  | //                        model.setLevel(levelId);
 | 
	
		
			
				|  |  | //                        model.setLevelName("未定级");
 | 
	
		
			
				|  |  | //                    }
 | 
	
		
			
				|  |  | //                }
 | 
	
		
			
				|  |  | //            }
 | 
	
		
			
				|  |  | //        }
 | 
	
		
			
				|  |  | //    }
 | 
	
		
			
				|  |  | }
 |