|  | @ -25,6 +25,11 @@ public class ComputeHelper {
 | 
												
													
														
															|  |     @Autowired
 |  |     @Autowired
 | 
												
													
														
															|  |     private JdbcTemplate jdbcTemplate;
 |  |     private JdbcTemplate jdbcTemplate;
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  | 
 |  |     public String findOrgType(String wlyyJobCongId){
 | 
												
													
														
															|  | 
 |  |         String sql = "SELECT IFNULL(dict_value,'') from wlyy_hospital_sys_dict WHERE dict_name = 'quota_org_type' and dict_code = '"+wlyyJobCongId+"'";
 | 
												
													
														
															|  | 
 |  |         String orgType = jdbcTemplate.queryForObject(sql,String.class);
 | 
												
													
														
															|  | 
 |  |         return orgType;
 | 
												
													
														
															|  | 
 |  |     }
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  |     /**
 |  |     /**
 | 
												
													
														
															|  |      * @param dataModels      过滤之后的数据
 |  |      * @param dataModels      过滤之后的数据
 | 
												
											
												
													
														
															|  | @ -35,8 +40,10 @@ public class ComputeHelper {
 | 
												
													
														
															|  |      */
 |  |      */
 | 
												
													
														
															|  |     public List<SaveModel> compute(List<DataModel> dataModels, List<BaseDimensionQuota> dimensionQuotas, String wlyyJobCongId, String endTime, String timeLevel) {
 |  |     public List<SaveModel> compute(List<DataModel> dataModels, List<BaseDimensionQuota> dimensionQuotas, String wlyyJobCongId, String endTime, String timeLevel) {
 | 
												
													
														
															|  |         try {
 |  |         try {
 | 
												
													
														
															|  | 
 |  |             //得到机构类型
 | 
												
													
														
															|  | 
 |  |             String orgType = findOrgType(wlyyJobCongId);
 | 
												
													
														
															|  |             //得到全部团队
 |  |             //得到全部团队
 | 
												
													
														
															|  |             List<BaseDoctorDO> doctors = findAllDoctor();
 |  | 
 | 
												
													
														
															|  | 
 |  |             List<BaseDoctorDO> doctors = findAllDoctor(orgType);
 | 
												
													
														
															|  |             //计算数据 返回map key 根据团队和维度拼凑在map中的key   1-2-1  如果维度是长度是0返回团队id 1
 |  |             //计算数据 返回map key 根据团队和维度拼凑在map中的key   1-2-1  如果维度是长度是0返回团队id 1
 | 
												
													
														
															|  |             Map<String, List<DataModel>> computeMap = computeDataModel(dimensionQuotas, dataModels);
 |  |             Map<String, List<DataModel>> computeMap = computeDataModel(dimensionQuotas, dataModels);
 | 
												
													
														
															|  |             //初始化map并且设置统计出来的数目
 |  |             //初始化map并且设置统计出来的数目
 | 
												
											
												
													
														
															|  | @ -102,7 +109,7 @@ public class ComputeHelper {
 | 
												
													
														
															|  |      *
 |  |      *
 | 
												
													
														
															|  |      * @return
 |  |      * @return
 | 
												
													
														
															|  |      */
 |  |      */
 | 
												
													
														
															|  |     private List<BaseDoctorDO> findAllDoctor() {
 |  | 
 | 
												
													
														
															|  | 
 |  |     private List<BaseDoctorDO> findAllDoctor(String orgType) {
 | 
												
													
														
															|  |         String sql = "SELECT " +
 |  |         String sql = "SELECT " +
 | 
												
													
														
															|  |                 "bd.id AS code , " +
 |  |                 "bd.id AS code , " +
 | 
												
													
														
															|  |                 "bd.name ," +
 |  |                 "bd.name ," +
 | 
												
											
												
													
														
															|  | @ -120,15 +127,14 @@ public class ComputeHelper {
 | 
												
													
														
															|  |                 " WHERE bdh.doctor_code = bd.id  " +
 |  |                 " WHERE bdh.doctor_code = bd.id  " +
 | 
												
													
														
															|  |                 "AND hd.code= bdh.dept_code " +
 |  |                 "AND hd.code= bdh.dept_code " +
 | 
												
													
														
															|  |                 "AND o.code = bdh.org_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')";
 |  | 
 | 
												
													
														
															|  | 
 |  |                 "AND bdh.del=1 and o.code not in('fxty')";
 | 
												
													
														
															|  | 
 |  |         if(StringUtils.isNotBlank(orgType)){
 | 
												
													
														
															|  | 
 |  |             sql += " and o.type = '"+orgType+"'";
 | 
												
													
														
															|  | 
 |  |         }
 | 
												
													
														
															|  |         List<BaseDoctorDO> doctorDOS = jdbcTemplate.query(sql, new BeanPropertyRowMapper(BaseDoctorDO.class));
 |  |         List<BaseDoctorDO> doctorDOS = jdbcTemplate.query(sql, new BeanPropertyRowMapper(BaseDoctorDO.class));
 | 
												
													
														
															|  |         return doctorDOS;
 |  |         return doctorDOS;
 | 
												
													
														
															|  |     }
 |  |     }
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  |     public static void main(String[] args) {
 |  | 
 | 
												
													
														
															|  |         System.out.println("3502060200".substring(0, 8));
 |  | 
 | 
												
													
														
															|  |     }
 |  | 
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  |     /**
 |  |     /**
 | 
												
													
														
															|  |      * 初始化map
 |  |      * 初始化map
 | 
												
													
														
															|  |      */
 |  |      */
 | 
												
											
												
													
														
															|  | @ -140,34 +146,30 @@ public class ComputeHelper {
 | 
												
													
														
															|  |         for (int i = 0; i < doctors.size(); i++) {
 |  |         for (int i = 0; i < doctors.size(); i++) {
 | 
												
													
														
															|  |             BaseDoctorDO one = doctors.get(i);
 |  |             BaseDoctorDO one = doctors.get(i);
 | 
												
													
														
															|  |             //排除测试机构
 |  |             //排除测试机构
 | 
												
													
														
															|  |             if (one.getOrgCode().length() >= 11) {
 |  | 
 | 
												
													
														
															|  |                 SaveModel saveModel = new SaveModel();
 |  | 
 | 
												
													
														
															|  |                 saveModel.setCity("350200");
 |  | 
 | 
												
													
														
															|  |                 saveModel.setCityName("厦门市");
 |  | 
 | 
												
													
														
															|  |                 saveModel.setTown(one.getTownCode());
 |  | 
 | 
												
													
														
															|  |                 saveModel.setTownName(one.getTownName());
 |  | 
 | 
												
													
														
															|  |                 //把末尾不是00的机构转换成00
 |  | 
 | 
												
													
														
															|  |                 String orgCode = one.getOrgCode();
 |  | 
 | 
												
													
														
															|  |                 saveModel.setHospital(orgCode);
 |  | 
 | 
												
													
														
															|  |                 saveModel.setHospitalName(one.getOrgName());
 |  | 
 | 
												
													
														
															|  |                 saveModel.setDoctor(one.getCode());
 |  | 
 | 
												
													
														
															|  |                 saveModel.setDoctorName(one.getName());
 |  | 
 | 
												
													
														
															|  |                 saveModel.setDept(one.getDeptCode());
 |  | 
 | 
												
													
														
															|  |                 saveModel.setDeptName(one.getDeptName());
 |  | 
 | 
												
													
														
															|  |                 saveModel.setQuotaCode(wlyyJobCongId);
 |  | 
 | 
												
													
														
															|  |                 saveModel.setCreateTime(new Date());
 |  | 
 | 
												
													
														
															|  |                 saveModel.setTimeLevel(timeLevel);
 |  | 
 | 
												
													
														
															|  |                 saveModel.setAreaLevel("6");//医生
 |  | 
 | 
												
													
														
															|  |                 saveModel.setQuotaDate(DateUtil.strToDate(endTime, "yyyy-MM-dd"));
 |  | 
 | 
												
													
														
															|  |                 lastMaps.put(one.getCode(), saveModel);
 |  | 
 | 
												
													
														
															|  |             }
 |  | 
 | 
												
													
														
															|  | 
 |  |             SaveModel saveModel = new SaveModel();
 | 
												
													
														
															|  | 
 |  |             saveModel.setCity("330100");
 | 
												
													
														
															|  | 
 |  |             saveModel.setCityName("杭州市");
 | 
												
													
														
															|  | 
 |  |             saveModel.setTown(one.getTownCode());
 | 
												
													
														
															|  | 
 |  |             saveModel.setTownName(one.getTownName());
 | 
												
													
														
															|  | 
 |  |             String orgCode = one.getOrgCode();
 | 
												
													
														
															|  | 
 |  |             saveModel.setHospital(orgCode);
 | 
												
													
														
															|  | 
 |  |             saveModel.setHospitalName(one.getOrgName());
 | 
												
													
														
															|  | 
 |  |             saveModel.setDoctor(one.getCode());
 | 
												
													
														
															|  | 
 |  |             saveModel.setDoctorName(one.getName());
 | 
												
													
														
															|  | 
 |  |             saveModel.setDept(one.getDeptCode());
 | 
												
													
														
															|  | 
 |  |             saveModel.setDeptName(one.getDeptName());
 | 
												
													
														
															|  | 
 |  |             saveModel.setQuotaCode(wlyyJobCongId);
 | 
												
													
														
															|  | 
 |  |             saveModel.setCreateTime(new Date());
 | 
												
													
														
															|  | 
 |  |             saveModel.setTimeLevel(timeLevel);
 | 
												
													
														
															|  | 
 |  |             saveModel.setAreaLevel("6");//医生
 | 
												
													
														
															|  | 
 |  |             saveModel.setQuotaDate(DateUtil.strToDate(endTime, "yyyy-MM-dd"));
 | 
												
													
														
															|  | 
 |  |             lastMaps.put(one.getCode(), saveModel);
 | 
												
													
														
															|  |         }
 |  |         }
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  |         //根据维度初始化数据
 |  |         //根据维度初始化数据
 | 
												
													
														
															|  |             for (int i = 0; i < dimensionQuotas.size(); i++) {
 |  |             for (int i = 0; i < dimensionQuotas.size(); i++) {
 | 
												
													
														
															|  |                 Map<String, SaveModel> mapTemp = new HashMap<>();
 |  |                 Map<String, SaveModel> mapTemp = new HashMap<>();
 | 
												
													
														
															|  |                 BaseDimensionQuota dimensionQuota = dimensionQuotas.get(i);
 |  |                 BaseDimensionQuota dimensionQuota = dimensionQuotas.get(i);
 | 
												
													
														
															|  | //                List<DictModel> dictModels = jdbcTemplate.query(dimensionQuota.getDictSql(), new BeanPropertyRowMapper(DictModel.class));
 |  | 
 | 
												
													
														
															|  |                 List<Map<String, Object>> listMap = jdbcTemplate.queryForList(dimensionQuota.getDictSql());
 |  |                 List<Map<String, Object>> listMap = jdbcTemplate.queryForList(dimensionQuota.getDictSql());
 | 
												
													
														
															|  |                 for (Map.Entry<String, SaveModel> oneSaveModel : lastMaps.entrySet()) {
 |  |                 for (Map.Entry<String, SaveModel> oneSaveModel : lastMaps.entrySet()) {
 | 
												
													
														
															|  |                     for (int j = 0; j < listMap.size(); j++) {
 |  |                     for (int j = 0; j < listMap.size(); j++) {
 | 
												
											
												
													
														
															|  | @ -188,29 +190,6 @@ public class ComputeHelper {
 | 
												
													
														
															|  |             }
 |  |             }
 | 
												
													
														
															|  |             lastMaps = mapTemp;
 |  |             lastMaps = mapTemp;
 | 
												
													
														
															|  |         }
 |  |         }
 | 
												
													
														
															|  | //        for (int i = 0; i < dimensionQuotas.size(); i++) {
 |  | 
 | 
												
													
														
															|  | //            Map<String, SaveModel> mapTemp = new HashMap<>();
 |  | 
 | 
												
													
														
															|  | //            BaseDimensionQuota dimensionQuota = dimensionQuotas.get(i);
 |  | 
 | 
												
													
														
															|  | //            List<DictModel> dictModels = jdbcTemplate.query(dimensionQuota.getDictSql(), new BeanPropertyRowMapper(DictModel.class));
 |  | 
 | 
												
													
														
															|  | //            for (Map.Entry<String, SaveModel> oneSaveModel : lastMaps.entrySet()) {
 |  | 
 | 
												
													
														
															|  | //                for (int j = 0; j < dictModels.size(); j++) {
 |  | 
 | 
												
													
														
															|  | //                    SaveModel saveModelTemp = new SaveModel();
 |  | 
 | 
												
													
														
															|  | //                    DictModel dictModel = dictModels.get(j);
 |  | 
 | 
												
													
														
															|  | //
 |  | 
 | 
												
													
														
															|  | //                    BeanUtils.copyProperties(oneSaveModel.getValue(), saveModelTemp);
 |  | 
 | 
												
													
														
															|  | //                    SaveModel.class.getMethod("setSlaveKey" + (i + 1) + "Name", String.class).invoke(saveModelTemp, dictModel.getName());
 |  | 
 | 
												
													
														
															|  | //                    SaveModel.class.getMethod("setSlaveKey" + (i + 1), String.class).invoke(saveModelTemp, dictModel.getCode());
 |  | 
 | 
												
													
														
															|  | //                    //根据维度生成新的key
 |  | 
 | 
												
													
														
															|  | //                    StringBuffer strKey = new StringBuffer(oneSaveModel.getKey() + "-" + dictModel.getCode());
 |  | 
 | 
												
													
														
															|  | //                    mapTemp.put(strKey.toString(), saveModelTemp);
 |  | 
 | 
												
													
														
															|  | //                }
 |  | 
 | 
												
													
														
															|  | //            }
 |  | 
 | 
												
													
														
															|  | //            //如果字典长度是0 抛出异常
 |  | 
 | 
												
													
														
															|  | //            if (dictModels.size() == 0) {
 |  | 
 | 
												
													
														
															|  | //                throw new Exception("dict size:0,sql:" + dimensionQuota.getDictSql());
 |  | 
 | 
												
													
														
															|  | //            }
 |  | 
 | 
												
													
														
															|  | //            lastMaps = mapTemp;
 |  | 
 | 
												
													
														
															|  | //        }
 |  | 
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  |         //设置值
 |  |         //设置值
 | 
												
													
														
															|  |         for (Map.Entry<String, SaveModel> one : lastMaps.entrySet()) {
 |  |         for (Map.Entry<String, SaveModel> one : lastMaps.entrySet()) {
 |