首页 > 其他分享 >填报接口的开发

填报接口的开发

时间:2023-04-23 20:34:36浏览次数:37  
标签:LambdaQueryWrapper return 填报 weeklyReport monthlyReport 接口 开发 id

接口的开发:

每周填报

患者每周都将自己的情况上传上去,根据上传的数据要对数据进行预警,那些指数出现问题。是一周来进行判断。

接口的前期想法:其中关联着很多的表,运健写了有一些接口是决定我这边的接口要如何的去写,比如是他写的运动下拉表列,没有将指定的运动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

相关文章

  • 提高开发生产力的4大敲门砖
    引言:本文章将分四大板块介绍提高程序员生产力的方案,最大化利用你的IDE,其中LiveTemplate篇,插件篇非常值的一看,用好才能提速增效ProductityGuide篇PostfixCompletion篇LiveTemplate篇插件篇ProductityGuide篇自行打开IDEA-help-Myproductity(旧版本叫Produ......
  • js循环调用接口,获取每一次接口的值
    vue代码。data数据:list:[{listName:"待办",listNum:0},{listName:"退回",listNum:0},{listName:"已办",listNum:0},{listName:"全部",listNum:0}],methods里面的方法:asyncgetAllData(){this.list......
  • 活动回顾|微服务x容器开源开发者 Meetup 成都站回放 & PPT 下载
    4月15日,“微服务x容器开源开发者Meetup”成都站圆满落幕。活动现场,Dubbo、OpenSergo、OpenYurt、Seata、Higress、OpenKruiseGame等云原生领域传统&新锐开源项目的核心维护者与来自互联网、IT服务商 、在线金融、智慧交通、智能制造、医疗数字化、游戏/互娱、信息安全等......
  • 提高开发生产力 - 生产力指南篇(之一)
    生产力指南篇-之一自行打开IDEA-help-Myproductity(旧版本叫ProductityGuide),idea统计的生产力特性,熟练掌握这些特性,开发事半功倍Tips:大部分特性包含快捷键炒作,快捷键因为WINMAC或者idea键位不同,然后IDEA提供了多种版本快捷键,所以选择自己适合的即可(sublime/ec......
  • 开发工具的激活
    IntelliJIDEA/Pycharm激活请先下载安装包及破解包:链接:https://pan.baidu.com/s/1JGpDTTF7MBI-IWPXRkNVPg?pwd=zhnn提取码:zhnn--来自百度网盘超级会员V6的分享1、本激活方法适用于2022、2021、2020、2019、2018全系列版本;;2、使用前请仔细阅读下面的图文教程,按照教程一......
  • 密码加密存储 登陆接口
    实际项目中我们不会把密码明文存储在数据库中。​默认使用的PasswordEncoder要求数据库中的密码格式为:{id}password。它会根据id去判断密码的加密方式。但是我们一般不会采用这种方式。所以就需要替换PasswordEncoder。​我们一般使用SpringSecurity为我们提供的BCryptPasswo......
  • 阿里云1+X云计算开发与运维实战——云存储访问的授权管理
    实验概述    现代企业中,不同的岗位拥有不同的权限。比如会计对能够查看、修改公司的账务;人事可以调动、编写公司员工的个人档案;总经理管理公司的所有事务......在网络应用中考虑到安全和管理方面的需求,我们也会为用户授予相应的权限,管理网络资产。           ......
  • 钉钉小程序开发 图片上传功能
    dd.chooseImage({//请求图片count:1,//上传图片张数限制success:res=>{console.log("返回的文件信息为:");console.log(res);varfilePaths=res.filePaths;dd.getAuthCode({success:function(res){console.log("fil......
  • 阿里云1+X云计算开发与运维实战——云监控初体验
    实验概述本实验会自动创建一台已部署Nginx的ECS实例和一台负载均衡SLB实例。首先,使用阿里云云监控的 云服务监控 服务,配置并查看ECS实例和SLB实例的监控数据。然后,设置ECS实例的报警规则,并验证报警规则生效。之后,使用 站点监控 服务,监控已部署Nginx的站点的状态,并设置站点报警......
  • 直播电商平台开发,横竖屏切换的方法
    直播电商平台开发,横竖屏切换的方法 //旋转方向-(void)interfaceOrientation:(UIInterfaceOrientation)orientation{  if([[UIDevicecurrentDevice]respondsToSelector:@selector(setOrientation:)]){    SELselector       =NSSelectorFromStr......