预警报告的修改,填报信息提醒

发布时间 2023-05-05 10:36:39作者: 葬爱_坤疤

摘要:

预警报告的修改

预警报告返回的数据要根据前端那个模板还决定返回的格式。所以我修改了返回数据的格式,好让前端来调用这个接口返回的数据。首先看见模板返回的是三个参数是名字,备注,异常情况。我这里返回的异常的情况很多。所以要统一的发送出去。所以我就将异常的情况都存到一个list中,其中一些没有异常的存进去的就是一个null,然后将其中null都删除掉。

     List<String> list4 = new ArrayList();
       list4.add(a);
       list4.add(b);
       list4.add(c);
       list4.add(d);
       list4.add(e);
       list4.add(f);
       list4.add(g);
       list4.add(h);
       list4.add(i);
       list4.add(j);
       list4.add(k);
       list4.add(l);
       list4.add(m);
       list4.add(n);

//去重
       list4 = list4.stream().distinct().collect(Collectors.toList());
       //删除集合中某一元素值
       for (int z = 0;z<list4.size();z++){
           if (list4.get(z)==null){
               list4.remove(z);
//               z=z-1;
          }
      }

       //将其中包含null,的去掉
      String o = a+","+b+","+c+","+d+","+e+","+f+","+g+","+h+","+i+","+j+","+k+","+l+","+m+","+n;
       o = o.replace("null,","");


       map2.put("abnormal",list4);
       if (list4.size()==0){
           map2.put("remarks","指标正常。");
      }else {
           map2.put("remarks","指标异常,请及时关注。");
      }

首先使用for循环删除其中null的元素,是删除不干净的,因为一旦删除一个元素,后面的元素就会向前进一位,这时候就两种方法就是在删除的同时,将其list的下标减一,这样就不会放过任何一个元素的判断。

 

 

填报的提示信息

当填报的时间到了一周或者是一个月的话,我就返回一些提示的数据给前端的,我的想法是弄成消息推送,但是不能实时的推送啊,如何调用接口一定要又一个事件。所以如何做不成消息推送,就弄一个弹框。我考虑到了当第一次填报是没有的,是添加个人的数据,其中就包括了填报的内容,但是月时间字段和周时间的字段是空的,所以就要判断一下这个字段。

 @Autowired
   private ITbUserService iTbUserService;
   /**
    * 填报的提示消息
    * @param userId
    * @return
    */
   @Override
   public Map<String,String> getFillingReminder(Long userId) {
       Map<String,String> map = new HashMap();

       //到用户表中找到指定的患者
       LambdaQueryWrapper<TbUser> lambdaQueryWrapper = new LambdaQueryWrapper<>();
       lambdaQueryWrapper.eq(TbUser::getUserId,userId);
       TbUser one = iTbUserService.getOne(lambdaQueryWrapper);


       String s = String.valueOf(one.getMonthlyTime());
       String s1 = String.valueOf(one.getWeeklyTime());
       //————————————————每周填报的消息通知——————————————————
       if (s1 !="null"){
           //周报填报时间
           Date weeklyTime = one.getWeeklyTime();

           //算出当前一周的时间差
           long l1 = new Date().getTime() - weeklyTime.getTime();
           //有多少天数
           long l3 = l1 / (86400000L);

           if (l3>=7){
               map.put("weeklyTime","请填写每周填报");
          }else {
               map.put("weeklyTime","未到填写的时间");
          }
      }else {
           //当周填报的时间未空的时候就返回一个空
           map.put("weeklyTime","请认真填写各项指标");
      }
 //————————————————每月填报的消息通知——————————————————
       if (s!="null"){
           //月季填报时间
           Date monthlyTime = one.getMonthlyTime();

           //算出当前一个月的时间差
           long l = new Date().getTime() - monthlyTime.getTime();
           //有多少天数
           long l2 = l / (86400000L);

           if (l2>=30){
               map.put("monthlyTime","请填写月季填报");
          }else {
               map.put("monthlyTime","未到填写的时间");
          }
      }else {
           map.put("monthlyTime","请认真填写各项指标");
      }

       return map;
  }

 

问题及解决

业务层的类名出现重复的bug

问题的分析:这个值班的医生是若依系统自带的数据库,其中就是登录到后台管理的一些信息,所以这里的两个实体类及业务层之类id没有导入到项目代码中。我生成了其类,复制到IDEA中。一运行就出现了这个报错

报错的信息:其中的SysUserServiceImpl,和其他的目录的中的类出现了重复的现象

解决:我直接将其改一个名字就解决了,这个bug,我一开始以为是路径出现重复的原因

 

 

 

学习重点及理解

如何将list中指定的一些元素删除掉

我找到了三种的方法:

  • 首先使用for循环删除其中null的元素,是删除不干净的,因为一旦删除一个元素,后面的元素就会向前进一位,这时候在删除的同时,将其list的下标减一,这样就不会放过任何一个元素的判断。

    • for (int z = 0;z<list4.size();z++){
               if (list4.get(z)==null){
                   list4.remove(z);
                  z=z-1;
              }
          }
  • 方法二:也是用for循环,但是要从后面开始删除,这个是原因避免第一种方法的弊端,你将元素从后面开始判断,不管下标前进。每个元素都是会判断一遍

    • for (int z = list4.size();z>0;z--){
                if (list4.get(z)==null){
                    list4.remove(z);
                }
            }
  • 方法三:就是将其中的去重再删除,这个方法是(不推荐)的因为在你知道其中就这哪些参数的时候,到是还可以。因为去重的话会对list中的所有的元素都进行去重,但是你只是想去重其中的一个。将其中的null去重后,只剩下一个,再用for循环判断删除的。

    • list4 = list4.stream().distinct().collect(Collectors.toList());
           //删除集合中某一元素值
           for (int z = 0;z<list4.size();z++){
               if (list4.get(z)==null){
                   list4.remove(z);
              }
          }

       

扩展学习

面试题

  • spring boot 配置文件有哪几种类型?它们有什么区别?

    • 配置文件有 . properties 格式和 . yml 格式,它们主要的区别是书法风格不同。

    • . properties 配置如下:

      • spring.RabbitMQ.port=5672
    • . yml 配置如下:

      • spring:
          RabbitMQ:
              port: 5672
    • yml 格式不支持 @PropertySource 注解导入。

     

  • spring boot 有哪些方式可以实现热部署?

    • 使用 devtools 启动热部署,添加 devtools 库,在配置文件中把 spring. devtools. restart. enabled 设置为 true; 使用 Intellij Idea 编辑器,勾上自动编译或手动重新编译。

 

 

总结

今天的学习的状态不是很好,中午没有休息下午的就很犯困。今天修改了一些的接口的要改进的地方。遇到了一个技术上的不足,项目已经部署到服务器了,但是小程序移动端连不到服务器。