接口的开发:
每周填报
患者每周都将自己的情况上传上去,根据上传的数据要对数据进行预警,那些指数出现问题。是一周来进行判断。
接口的前期想法:其中关联着很多的表,运健写了有一些接口是决定我这边的接口要如何的去写,比如是他写的运动下拉表列,没有将指定的运动id传进去,所以我要根据对应的内容来:比如说这个患者运动了“3次”,我就要从这个3次中,读取指定的id,到用户表user中去将读取出来的运动的id,修改到用户表中去。其中的数据来自多个表,我不得不新建了DTO来帮助我写接口,将每个表中需要的数据都复制到DTO中
-
其中设计到三张表(Tbuser用户表,TbbBloodSugar血糖表,TbBlood血压表)
-
Controller
-
/**
* 每周填报
* @param weeklyReport
* @return
*/
@PutMapping("/weeklyreport")
public AjaxResult weeklyreport(WeeklyReport weeklyReport){
boolean b = tbUserService.weeklyReport(weeklyReport);
if (b){
return AjaxResult.success("上传成功");
}else {
return AjaxResult.error("上传失败,请完善填写的数据");
}
}
-
-
ITbuserService
-
/**
*每周填报
* @param weeklyReport
* @return
*/
public boolean weeklyReport(WeeklyReport weeklyReport);
-
-
TbuserServiceImpl
-
**
* 每周填报
* @param weeklyReport
* @return
*/
@Override
public boolean weeklyReport(WeeklyReport weeklyReport) {
boolean update1=false;
boolean update2=false;
boolean update=false;
//查询出指定的患者
LambdaQueryWrapper<TbUser> lambdaQueryWrapper = new LambdaQueryWrapper<>();
lambdaQueryWrapper.eq(TbUser::getUserId,weeklyReport.getUserId());
TbUser one = iTbUserService.getOne(lambdaQueryWrapper);
//修改身高
one.setHeight(weeklyReport.getHeight());
//修改体重
one.setWeight(weeklyReport.getWeight());
//修改胸围
one.setChestMeasurement(weeklyReport.getChestMeasurement());
//—————————————————————————修改运动次数———————————————————————
//获取修改的运动次数中文字
String motionNumber = weeklyReport.getMotionNumber();
LambdaQueryWrapper<TbUserMotion> lambdaQueryWrapper1 = new LambdaQueryWrapper<>();
lambdaQueryWrapper1.eq(TbUserMotion::getMotionNumber,motionNumber);
//找对应的数据返回运动id
TbUserMotion one1 = iTbUserMotionService.getOne(lambdaQueryWrapper1);
int motionId = one1.getMotionId();
//修改运动次数
one.setMotionNumber(motionId);
//—————————————————————————修改运动时间———————————————————————
//获取修改运动时间的中文字
String motionTime = weeklyReport.getMotionTime();
LambdaQueryWrapper<TbUserMotion> lambdaQueryWrapper2 = new LambdaQueryWrapper<>();
lambdaQueryWrapper2.eq(TbUserMotion::getMotionTime,motionTime);
//找对应的数据返回运动id
TbUserMotion one2 = iTbUserMotionService.getOne(lambdaQueryWrapper2);
int motionId1 = one2.getMotionId();
//修改运动的时间
one.setMotionTime(motionId1);
update = iTbUserService.update(one, lambdaQueryWrapper);
//—————————————————————————修改血压的舒张压———————————————————————
//获取用户血压的id
String bloodId = one.getBloodId();
LambdaQueryWrapper<TbBlood> lambdaQueryWrapper3 = new LambdaQueryWrapper<>();
lambdaQueryWrapper3.eq(TbBlood::getBloodId,bloodId);
//找到指定的血压id
TbBlood one3 = iTbBloodService.getOne(lambdaQueryWrapper3);
//获取修改舒张压的数据
Long diastolicPressure = weeklyReport.getDiastolicPressure();
one3.setDiastolicPressure(diastolicPressure);
//获取修改收缩压的数据
Long systolicPressure = weeklyReport.getSystolicPressure();
one3.setSystolicPressure(systolicPressure);
//获取修改血压测量的时间
Date bloodPressureTime = weeklyReport.getBloodPressureTime();
one3.setBloodPressureTime(bloodPressureTime);
update1 = iTbBloodService.update(one3, lambdaQueryWrapper3);
//—————————————————————————修改血糖———————————————————————
//读取用户的血糖id
String bloodSugarId = one.getBloodSugarId();
LambdaQueryWrapper<TbBloodSugar> lambdaQueryWrapper4 = new LambdaQueryWrapper<>();
lambdaQueryWrapper4.eq(TbBloodSugar::getBloodSugarId,bloodSugarId);
//找到指定的血糖id
TbBloodSugar one4 = iTbBloodSugarService.getOne(lambdaQueryWrapper4);
//获取并修改餐后血糖
Long postprandialBloodSugar = weeklyReport.getPostprandialBloodSugar();
one4.setPostprandialBloodSugar(postprandialBloodSugar);
//获取并修改空腹血糖
Long fastingBloodSugar = weeklyReport.getFastingBloodSugar();
one4.setFastingBloodSugar(fastingBloodSugar);
update2 = iTbBloodSugarService.update(one4, lambdaQueryWrapper4);
return update && update1 && update2;
}
-
月季填报
月季填报是每个月的要对患者的一些变化不大数据,要每月进行上传,也是供给预警来判断的。这个接口和周填报表是同一个理念的,其中要修改的数据大部分也单表就可以找到,比如血脂,总胆固醇,高密度脂蛋白,低密度脂蛋白。这个接口比周填报要简单点,其中比较麻烦的颈动脉超声检查,他有这自己独立的表,所以我要到他的表中将其中的数据进行修改。
-
其中设计到二张表(Tbuser用户表,TbAtheromatousPlaque颈动脉超声检查表)
-
Controller
-
/**
* 月季填报
* @param monthlyReport
* @return
*/
@PutMapping("/monthlyreport")
public AjaxResult monthlyreport(MonthlyReport monthlyReport){
boolean b = tbUserService.monthlyReport(monthlyReport);
if (b){
return AjaxResult.success("上传成功");
}else {
return AjaxResult.error("上传失败,请完善填写的数据");
}
}
-
-
ITbuserService
-
/**
* 月季填报
* @param monthlyReport
* @return
*/
public boolean monthlyReport(MonthlyReport monthlyReport);
-
-
TbuserServiceImpl
-
/**
* 月季填报
* @param monthlyReport
* @return
*/
@Override
public boolean monthlyReport(MonthlyReport monthlyReport) {
boolean update=false;
boolean update1=false;
//找到指定的用户
LambdaQueryWrapper<TbUser> lambdaQueryWrapper = new LambdaQueryWrapper<>();
lambdaQueryWrapper.eq(TbUser::getUserId,monthlyReport.getUserId());
TbUser one = iTbUserService.getOne(lambdaQueryWrapper);
//修改血脂
one.setBloodFat(monthlyReport.getBloodFat());
//修改总胆固醇
one.setTotalCholesterol(monthlyReport.getTotalCholesterol());
//修改高密度脂蛋白
one.setHighDensityLipoprotein(monthlyReport.getHighDensityLipoprotein());
//修改低密度脂蛋白
one.setLowDensityLipoprotein(monthlyReport.getLowDensityLipoprotein());
update = iTbUserService.update(one, lambdaQueryWrapper);
//—————————————————————颈动脉超声检查——————————————————————————————
//查询该用户指定的颈动脉超声
LambdaQueryWrapper<TbAtheromatousPlaque> lambdaQueryWrapper1 = new LambdaQueryWrapper<>();
lambdaQueryWrapper1.eq(TbAtheromatousPlaque::getUserId,one.getUserId());
TbAtheromatousPlaque one1 = iTbAtheromatousPlaqueService.getOne(lambdaQueryWrapper1);
//修改有无粥样斑快
one1.setAtheromatousPlaque(monthlyReport.getAtheromatousPlaque());
//修改粥样斑快大小
one1.setAtheromatousPlaqueSize(monthlyReport.getAtheromatousPlaqueSize());
update1 = iTbAtheromatousPlaqueService.update(one1, lambdaQueryWrapper1);
return update && update1;
}
-
根据患者的userId去查询他所属的签约医生的名字
这个接口是跟前端对接的时候,缺少的接口。在家属端在修改患者的填报或者是数据的填写的时候,数据要回显在当中的框中。当时我不理解的,其他的数据都有回显这个选择医生的数据没有。当时我知道了,当数据当点击选这医生的时候,就要回其数据进行回显,接口写太多写乱掉了,不知道哪些有还是没有,知道到后面开发的差不多的时候,要将缺少的接口要进行添加或者修改
-
其中设计到二张表(Tbuser用户表,TbDotctor医生表)
-
家属端中有添加自己的所属患者,属于同一个家属。所以当要每个患者的都有一个Id传入当中,传入一个userId患者的id,读取其签约医生的id,我们根据签约医生的id,到医生表中,找到这个医生,将其所以数据都反馈出来包括名字
-
Controller
-
/**
* 根据患者的userId去查询他所属的签约医生的名字
* @param userId
* @return
*/
@GetMapping("/selectDoctorName")
private AjaxResult selectDoctorName(Long userId){
List<TbDoctor> tbDoctors = tbFamilyService.selectDoctorName(userId);
return AjaxResult.success(tbDoctors);
}
-
-
IFamilyService
-
/**
* 根据患者的userId去查询他所属的签约医生的名字
* @param userId
* @return
*/
List<TbDoctor> selectDoctorName(Long userId);
-
-
FamilyServiceImol
-
/**
* 根据患者的userId去查询他所属的签约医生的名字
* @param userId
* @return
*/
@Override
public List<TbDoctor> selectDoctorName(Long userId) {
List list1 = new ArrayList();
//到数据查询指定的患者
LambdaQueryWrapper<TbUser> lambdaQueryWrapper = new LambdaQueryWrapper<>();
lambdaQueryWrapper.eq(TbUser::getUserId,userId);
TbUser one = iTbUserService.getOne(lambdaQueryWrapper);
//根据该患者的信息,找到其医生的id
Long doctorId = one.getDoctorId();
//根据找到的医生的id,到数据库医生表中查询该医生
LambdaQueryWrapper<TbDoctor> lambdaQueryWrapper1 = new LambdaQueryWrapper<>();
lambdaQueryWrapper1.eq(TbDoctor::getDoctorId,doctorId);
TbDoctor one1 = iTbDoctorService.getOne(lambdaQueryWrapper1);
//添加到list中
list1.add(one1);
return list1;
}
-
插询家属端患者的签约签约医生的电话
这个接口是跟前端对接的时候,缺少的接口。其中的接口就的求助当中的功能和用户端的求助是不一样。我们要点击求助将其电话要反馈出来,万一遇到紧急境况家属端也可以拨打电话来求助
-
其中设计到二张表(Tbuser用户表,TbFamily家属表)
-
在家属端中我们和魏芳妮沟通了一下,当这个家属有多名患者时,要反馈哪个医生的电话呢,最后就是同一个家属下的患者都是签约医生,这样的话,输出来的电话就是只有一个,就不会先一个患者的症状,打电话过去是另外一个医生的乌龙
-
Controller
-
/**
* 插询家属端患者的签约签约医生的电话
* @param familyId
* @return
*/
@GetMapping("/selectDoctorPhone")
private AjaxResult selectDoctorPhone(Long familyId){
List<TbDoctor> tbDoctors = tbFamilyService.selectDoctorPhone(familyId);
return AjaxResult.success(tbDoctors);
}
-
-
IFamilyService
-
/**
* 插询家属端患者的签约签约医生的电话
* @param familyId
* @return
*/
List<TbDoctor> selectDoctorPhone(Long familyId);
-
-
FamilyServiceImol
-
@Autowired
private ITbDoctorService iTbDoctorService;
/**
* 插询家属端患者的签约签约医生的电话
* @param familyId
* @return
*/
@Override
public List<TbDoctor> selectDoctorPhone(Long familyId) {
//查询出患者中的签约医生
List list1 = new ArrayList();
LambdaQueryWrapper<TbUser> lambdaQueryWrapper = new LambdaQueryWrapper<>();
lambdaQueryWrapper.eq(TbUser::getFamilyId,familyId);
//查询签约医生的id
List<TbUser> list = iTbUserService.list(lambdaQueryWrapper);
TbUser tbUser = list.get(0);
Long doctorId = tbUser.getDoctorId();
//根据签约医生的id,到医生中查询出医生的信息
LambdaQueryWrapper<TbDoctor> lambdaQueryWrapper1 = new LambdaQueryWrapper<>();
lambdaQueryWrapper1.eq(TbDoctor::getDoctorId,doctorId);
TbDoctor one = iTbDoctorService.getOne(lambdaQueryWrapper1);
list1.add(one);
return list1;
}
-
问题及解决
后台管理视频上传bug
问题的分析:当我将这个接口的视频上传的时候,视频的路径是上传过去了,当时网络中一直跳出下边如图的问题。我在其他患者患管理中也是这样的问题,我上网找了许多的资料,根本就是没有解决的方法。
解决:后来我将前端的ui,重新启动了一遍,就不会出现这样的报错了
扩展学习
消息订阅的学习
我到微信的公共平台中登录小程序中,有着发送消息订阅的案列。但是其中的,是自带的接口,需要一些的接口的参数,我根据其中的一些的参数进行填写,其中一些不知道的参数,就问前端,要吗就是去网上找这个参数要在哪里找。
其中的access_token要根据其他的参数来生成的
template_id是微信中弹出消息的模板id是前端给你的
总结
今天的学的状态是不错的,完成每周填报和季月填报的接口,还要前端反馈给我的一些缺少的接口。难点在于消息订阅我在,还没有做出开,找到需要的数据,将其发送,会报错。在找其原因 的时候花了很多的时间。
标签:LambdaQueryWrapper,return,填报,weeklyReport,monthlyReport,接口,开发,id From: https://www.cnblogs.com/ikunba/p/17347650.html