|
@ -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()) {
|