|
@@ -28,7 +28,7 @@ import java.util.*;
|
|
|
@Slf4j
|
|
|
@Service
|
|
|
public class AppointmentService {
|
|
|
- private static List<MzClass> mzClasses;
|
|
|
+ private static final List<MzClass> mzClasses = new ArrayList<>();
|
|
|
private final AppointmentDao dao;
|
|
|
|
|
|
@Value("${hrgApiUrl}")
|
|
@@ -44,75 +44,78 @@ public class AppointmentService {
|
|
|
return ResultVoUtil.success(mzClasses);
|
|
|
}
|
|
|
log.info("重新获取门诊科室并缓存。");
|
|
|
+ List<Map<String, Object>> tempMzClasses = fetchMzClassesFromApi();
|
|
|
+ if (null == tempMzClasses) {
|
|
|
+ return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, "获取科室分类失败,请联系服务中心。");
|
|
|
+ }
|
|
|
+ for (Map<String, Object> mzClass : tempMzClasses) {
|
|
|
+ fetchMzDepartmentsByMzClasses(mzClass);
|
|
|
+ }
|
|
|
+ return ResultVoUtil.success(mzClasses);
|
|
|
+ }
|
|
|
+
|
|
|
+ private List<Map<String, Object>> fetchMzClassesFromApi() {
|
|
|
RestTemplate template = new RestTemplate();
|
|
|
MzClassResponse response = template.getForObject(hrgApiUrl + "/getMzClass", MzClassResponse.class);
|
|
|
if (null == response || -1 == response.getResultCode()) {
|
|
|
- return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, "获取科室分类失败,请联系服务中心。");
|
|
|
+ return null;
|
|
|
}
|
|
|
- mzClasses = new ArrayList<>();
|
|
|
- JSONObject param = new JSONObject();
|
|
|
- for (Map<String, Object> item : response.getData()) {
|
|
|
- MzClass pojo = new MzClass();
|
|
|
- pojo.setId(item.get("code").toString());
|
|
|
- pojo.setText(item.get("name").toString());
|
|
|
- param.put("mzClass", pojo.getId());
|
|
|
- MzClassResponse response2 = template.postForObject(hrgApiUrl + "/getUnitCodeByMzClass", param, MzClassResponse.class);
|
|
|
- if (null != response2 && response2.getResultCode() == 0) {
|
|
|
- List<MzDept> children = new ArrayList<>();
|
|
|
- for (Map<String, Object> child : response2.getData()) {
|
|
|
- MzDept dept = new MzDept();
|
|
|
- dept.setId(child.get("code").toString());
|
|
|
- dept.setText(child.get("name").toString());
|
|
|
- List<Map<String, Object>> grandChildrenMap = CastUtil.cast(child.get("children"));
|
|
|
- if (null != grandChildrenMap && grandChildrenMap.size() > 0) {
|
|
|
- List<MzDept> grandChildren = new ArrayList<>();
|
|
|
- for (Map<String, Object> temp : grandChildrenMap) {
|
|
|
- MzDept mzDept = new MzDept();
|
|
|
- mzDept.setId(temp.get("code").toString());
|
|
|
- mzDept.setText(temp.get("name").toString());
|
|
|
- grandChildren.add(mzDept);
|
|
|
- }
|
|
|
- dept.setChildren(grandChildren);
|
|
|
+ return response.getData();
|
|
|
+ }
|
|
|
+
|
|
|
+ private void fetchMzDepartmentsByMzClasses(Map<String, Object> mzClass) {
|
|
|
+ String mzClassCode = mzClass.get("code").toString();
|
|
|
+ JSONObject params = JSONObject.parseObject("{\"mzClass\": \"" + mzClassCode + "\"}");
|
|
|
+ MzClassResponse tempMzDepartments = new RestTemplate().postForObject(hrgApiUrl + "/getUnitCodeByMzClass",
|
|
|
+ params, MzClassResponse.class);
|
|
|
+ if (null != tempMzDepartments && tempMzDepartments.getResultCode() == 0) {
|
|
|
+ List<MzDept> children = new ArrayList<>();
|
|
|
+ for (Map<String, Object> child : tempMzDepartments.getData()) {
|
|
|
+ MzDept childDepartment = new MzDept(child.get("code").toString(), child.get("name").toString());
|
|
|
+ List<Map<String, Object>> grandChildrenMap = CastUtil.cast(child.get("children"));
|
|
|
+ if (null != grandChildrenMap && grandChildrenMap.size() > 0) {
|
|
|
+ List<MzDept> grandChildren = new ArrayList<>();
|
|
|
+ for (Map<String, Object> grandChild : grandChildrenMap) {
|
|
|
+ grandChildren.add(new MzDept(grandChild.get("code").toString(), grandChild.get("name").toString()));
|
|
|
}
|
|
|
- children.add(dept);
|
|
|
+ childDepartment.setChildren(grandChildren);
|
|
|
}
|
|
|
- pojo.setChildren(children);
|
|
|
- mzClasses.add(pojo);
|
|
|
+ children.add(childDepartment);
|
|
|
}
|
|
|
+ mzClasses.add(new MzClass(mzClassCode, mzClass.get("name").toString(), children));
|
|
|
}
|
|
|
- return ResultVoUtil.success(mzClasses);
|
|
|
}
|
|
|
|
|
|
public ResultVo<String> refreshMzClasses() {
|
|
|
+ mzClasses.clear();
|
|
|
log.info("门诊科室缓存已重置。");
|
|
|
- mzClasses = null;
|
|
|
return ResultVoUtil.success("门诊科室缓存已重置。");
|
|
|
}
|
|
|
|
|
|
public ResultVo<Integer[]> getSourcesByDate(GetSourcesByDateParam param) {
|
|
|
- Integer[] retArr = new Integer[7];
|
|
|
- RestTemplate restTemplate = new RestTemplate();
|
|
|
+ Integer[] sourceArray = new Integer[7];
|
|
|
+ RestTemplate template = new RestTemplate();
|
|
|
Calendar calendar = Calendar.getInstance();
|
|
|
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
|
|
|
for (int i = 0; i < 7; i++) {
|
|
|
- retArr[i] = 0;
|
|
|
+ sourceArray[i] = 0;
|
|
|
int addNum = i == 0 ? 0 : 1;
|
|
|
calendar.set(Calendar.DAY_OF_YEAR, calendar.get(Calendar.DAY_OF_YEAR) + addNum);
|
|
|
String date = format.format(calendar.getTime());
|
|
|
String url = String.format(hrgApiUrl + "/getDoctorByDateAndDept?requestDay=%s&unitCode=%s", date, param.getDept());
|
|
|
- SourcesResponse hrgResponse = restTemplate.getForObject(url, SourcesResponse.class);
|
|
|
+ SourcesResponse hrgResponse = template.getForObject(url, SourcesResponse.class);
|
|
|
if (null == hrgResponse || hrgResponse.getResultCode() == -1) {
|
|
|
- retArr[i] = 0;
|
|
|
+ sourceArray[i] = 0;
|
|
|
continue;
|
|
|
}
|
|
|
for (Map<String, Object> item : hrgResponse.getData()) {
|
|
|
if ((int) item.get("leftNum") > 0) {
|
|
|
- retArr[i] = 1;
|
|
|
+ sourceArray[i] = 1;
|
|
|
break;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
- return ResultVoUtil.success(retArr);
|
|
|
+ return ResultVoUtil.success(sourceArray);
|
|
|
}
|
|
|
|
|
|
public ResultVo<Object> getDoctorSources(GetDoctorSourcesParam param) {
|