## 尚医通开发阶段(二)
接下来是开发医院管理界面,点击进入后就会显示这个医院的详细信息,最终效果如下:
医院接口模拟系统它有一个固定的流程:
如图:首先在接口模块中通过APIController调用APIService中对应的方法,然后再发起request请求到我们所编写的接口部分去实现。
1.医院管理展示的Controller:
@RequestMapping("/hospital/index")
public String getHospital(ModelMap model,HttpServletRequest request,RedirectAttributes redirectAttributes) {
try {
HospitalSet hospitalSet = hospitalSetMapper.selectById(1);
if(null == hospitalSet || StringUtils.isEmpty(hospitalSet.getHoscode()) || StringUtils.isEmpty(hospitalSet.getSignKey())) {
this.failureMessage("先设置医院code与签名key", redirectAttributes);
return "redirect:/hospitalSet/index";
}
model.addAttribute("hospital", apiService.getHospital());
} catch (YyghException e) {
this.failureMessage(e.getMessage(), request);
} catch (Exception e) {
this.failureMessage("数据异常", request);
}
return "hospital/index";
}
Service:
@Override
public JSONObject getHospital() {
Map<String, Object> paramMap = new HashMap<>();
paramMap.put("hoscode",this.getHoscode());
paramMap.put("timestamp", HttpRequestHelper.getTimestamp());
paramMap.put("sign", MD5.encrypt(this.getSignKey()));
JSONObject respone = HttpRequestHelper.sendRequest(paramMap,this.getApiUrl()+"/api/hosp/hospital/show");
System.out.println(respone.toJSONString());
if(null != respone && 200 == respone.getIntValue("code")) {
JSONObject jsonObject = respone.getJSONObject("data");
return jsonObject;
}
return null;
}
声明:
这个项目的医院就一个:北京协和医院。
流程:
首先就是获取这个医院的详细信息:
HospitalSet hospitalSet = hospitalSetMapper.selectById(1);
然后判断这个医院有没有唯一id和签名key,如果存在的话就调用service方法,在service层中可以看到把从数据库中的医院唯一标识以及时间戳,以及签名都存入map中,然后调用我们写的后端接口去实现:
JSONObject respone = HttpRequestHelper.sendRequest(paramMap,this.getApiUrl()+"/api/hosp/hospital/show")
1.2接下来就是我们写的接口:
Controller:
/*
查询医院
*/
@PostMapping("hospital/show")
public Result getHospital(HttpServletRequest request) {
//获取到传递过来的医院信息
Map<String, String[]> parameterMap = request.getParameterMap();
Map<String, Object> map = HttpRequestHelper.switchMap(parameterMap);
String hoscode = (String) map.get("hoscode");
Hospital byHoscode = hospitalService.getByHoscode(hoscode);
return Result.ok(byHoscode);
}
大体就是:
把传递过来的map集合做了简单的转化后,把唯一标识的hoscode取出来,然后从数据库中根据这个hoscode来查找数据.,最后返回数据到前端。
Service接口:
//根据医院编号查询
Hospital getByHoscode(String hoscode);
实现:
@Override
public Hospital getByHoscode(String hoscode) {
return hospitalReposity.getHospitalByHoscode(hoscode);
hospitalReposity:
Repository
public interface HospitalReposity extends MongoRepository<Hospital,String> {
//mong自动查询,不用写具体
//判断是否存在数据
Hospital getHospitalByHoscode(String hoscode);
}