|
@ -23,8 +23,12 @@ public class ComputeHelper {
|
|
|
private JdbcTemplate jdbcTemplate;
|
|
|
|
|
|
public String findOrgType(String wlyyJobCongId){
|
|
|
String orgType="";
|
|
|
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);
|
|
|
List<String> orgTypes = jdbcTemplate.queryForList(sql,String.class);
|
|
|
if (orgTypes.size()>0){
|
|
|
return orgTypes.get(0);
|
|
|
}
|
|
|
return orgType;
|
|
|
}
|
|
|
|
|
@ -43,7 +47,9 @@ public class ComputeHelper {
|
|
|
//计算数据 返回map key 根据团队和维度拼凑在map中的key 1-2-1 如果维度是长度是0返回团队id 1
|
|
|
Map<String, List<DataModel>> computeMap = computeDataModel(dimensionQuotas, dataModels,wlyyJobCongId);
|
|
|
List<SaveModel> savemodels = null;
|
|
|
if("42".equals(wlyyJobCongId)){
|
|
|
if ("45".equals(wlyyJobCongId)||"47".equals(wlyyJobCongId)){
|
|
|
savemodels = initAndSetResultCity( dimensionQuotas, computeMap, wlyyJobCongId, endTime, timeLevel);
|
|
|
}else if("42".equals(wlyyJobCongId)||"41".equals(wlyyJobCongId)||"43".equals(wlyyJobCongId)||"46".equals(wlyyJobCongId)||"48".equals(wlyyJobCongId)){
|
|
|
//新生儿入学只到机构级别
|
|
|
List<BaseOrgDO> orgDOs = findAllOrg(orgType);
|
|
|
savemodels = initAndSetResultOrg(orgDOs, dimensionQuotas, computeMap, wlyyJobCongId, endTime, timeLevel);
|
|
@ -72,7 +78,10 @@ public class ComputeHelper {
|
|
|
Map<String, List<DataModel>> returnMap = new HashMap<>();
|
|
|
dataModels.stream().forEach(one -> {
|
|
|
String key;
|
|
|
if("42".equals(wlyyJobCongId)){
|
|
|
if ("45".equals(wlyyJobCongId)||"47".equals(wlyyJobCongId)){
|
|
|
key = getCityKey(one,dimensionQuotas.size());
|
|
|
}
|
|
|
else if("42".equals(wlyyJobCongId)||"41".equals(wlyyJobCongId)||"43".equals(wlyyJobCongId)||"46".equals(wlyyJobCongId)||"48".equals(wlyyJobCongId)){
|
|
|
key = getOrgKey(one, dimensionQuotas.size());
|
|
|
}else{
|
|
|
key = getKey(one, dimensionQuotas.size());
|
|
@ -131,6 +140,24 @@ public class ComputeHelper {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
private String getCityKey(DataModel one, int size) {
|
|
|
try {
|
|
|
if (size > 0) {
|
|
|
StringBuffer str = new StringBuffer("330100");
|
|
|
for (int i = 1; i <= size; i++) {
|
|
|
String invokeKey = (String) DataModel.class.getMethod("getSlaveKey" + i).invoke(one);
|
|
|
str.append("-" + invokeKey);
|
|
|
}
|
|
|
return str.toString();
|
|
|
} else {
|
|
|
return one.getHospital();
|
|
|
}
|
|
|
} catch (Exception e) {
|
|
|
e.printStackTrace();
|
|
|
return null;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 得到全部机构
|
|
|
*
|
|
@ -357,4 +384,82 @@ public class ComputeHelper {
|
|
|
}
|
|
|
return returnList;
|
|
|
}
|
|
|
|
|
|
private List<SaveModel> initAndSetResultCity(List<BaseDimensionQuota> dimensionQuotas, Map<String, List<DataModel>> countMap, String wlyyJobCongId, String endTime, String timeLevel) throws Exception {
|
|
|
List<SaveModel> returnList = new ArrayList<>();
|
|
|
Map<String, SaveModel> lastMaps = new HashMap<>();
|
|
|
|
|
|
//初始化医生的数据
|
|
|
SaveModel saveModel = new SaveModel();
|
|
|
saveModel.setCity("330100");
|
|
|
saveModel.setCityName("杭州市");
|
|
|
// saveModel.setTown(one.getTownCode());
|
|
|
// saveModel.setTownName(one.getTownName());
|
|
|
// saveModel.setHospitalName(one.getName());
|
|
|
// saveModel.setHospital(one.getCode());
|
|
|
saveModel.setQuotaCode(wlyyJobCongId);
|
|
|
saveModel.setCreateTime(new Date());
|
|
|
saveModel.setTimeLevel(timeLevel);
|
|
|
saveModel.setAreaLevel("2");//市
|
|
|
saveModel.setQuotaDate(DateUtil.strToDate(endTime, "yyyy-MM-dd"));
|
|
|
lastMaps.put("330100", saveModel);
|
|
|
|
|
|
//根据维度初始化数据
|
|
|
for (int i = 0; i < dimensionQuotas.size(); i++) {
|
|
|
Map<String, SaveModel> mapTemp = new HashMap<>();
|
|
|
BaseDimensionQuota dimensionQuota = dimensionQuotas.get(i);
|
|
|
List<Map<String, Object>> listMap = jdbcTemplate.queryForList(dimensionQuota.getDictSql());
|
|
|
for (Map.Entry<String, SaveModel> oneSaveModel : lastMaps.entrySet()) {
|
|
|
for (int j = 0; j < listMap.size(); j++) {
|
|
|
SaveModel saveModelTemp = new SaveModel();
|
|
|
Map<String, Object> dictModel = listMap.get(j);
|
|
|
|
|
|
BeanUtils.copyProperties(oneSaveModel.getValue(), saveModelTemp);
|
|
|
SaveModel.class.getMethod("setSlaveKey" + (i + 1) + "Name", String.class).invoke(saveModelTemp, dictModel.get("name"));
|
|
|
SaveModel.class.getMethod("setSlaveKey" + (i + 1), String.class).invoke(saveModelTemp, dictModel.get("code"));
|
|
|
//根据维度生成新的key
|
|
|
StringBuffer strKey = new StringBuffer(oneSaveModel.getKey() + "-" + dictModel.get("code"));
|
|
|
mapTemp.put(strKey.toString(), saveModelTemp);
|
|
|
}
|
|
|
}
|
|
|
//如果字典长度是0 抛出异常
|
|
|
if (listMap.size() == 0) {
|
|
|
throw new Exception("dict size:0,sql:" + dimensionQuota.getDictSql());
|
|
|
}
|
|
|
lastMaps = mapTemp;
|
|
|
}
|
|
|
|
|
|
//设置值
|
|
|
for (Map.Entry<String, SaveModel> one : lastMaps.entrySet()) {
|
|
|
if (countMap.containsKey(one.getKey())) {
|
|
|
List<DataModel> dataModels = countMap.get(one.getKey());
|
|
|
Double result1 = 0.0;
|
|
|
Double result2 = 0.0;
|
|
|
for (int j = 0; j < dataModels.size(); j++) {
|
|
|
DataModel dataModel = dataModels.get(j);
|
|
|
Double num = 0.0;
|
|
|
if (dataModel.getNum() != null) {
|
|
|
num = dataModel.getNum();
|
|
|
} else {
|
|
|
num = 1.0;
|
|
|
}
|
|
|
result1 += num;
|
|
|
result2++;
|
|
|
}
|
|
|
saveModel = one.getValue();
|
|
|
saveModel.setResult1(result1);
|
|
|
saveModel.setResult2(result2);
|
|
|
if (dataModels.size() > 0 && StringUtils.isNotEmpty(dataModels.get(0).getSlaveKey1()) && !StringUtils.isNotEmpty(saveModel.getSlaveKey1())) {
|
|
|
saveModel.setSlaveKey1(dataModels.get(0).getSlaveKey1());
|
|
|
}
|
|
|
if (dataModels.size() > 0 && StringUtils.isNotEmpty(dataModels.get(0).getSlaveKey2()) && !StringUtils.isNotEmpty(saveModel.getSlaveKey2())) {
|
|
|
saveModel.setSlaveKey2(dataModels.get(0).getSlaveKey2());
|
|
|
}
|
|
|
returnList.add(saveModel);
|
|
|
} else {
|
|
|
returnList.add(one.getValue());
|
|
|
}
|
|
|
}
|
|
|
return returnList;
|
|
|
}
|
|
|
}
|