摘要:
预警报告的修改
预警报告返回的数据要根据前端那个模板还决定返回的格式。所以我修改了返回数据的格式,好让前端来调用这个接口返回的数据。首先看见模板返回的是三个参数是名字,备注,异常情况。我这里返回的异常的情况很多。所以要统一的发送出去。所以我就将异常的情况都存到一个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 编辑器,勾上自动编译或手动重新编译。
-
总结
今天的学习的状态不是很好,中午没有休息下午的就很犯困。今天修改了一些的接口的要改进的地方。遇到了一个技术上的不足,项目已经部署到服务器了,但是小程序移动端连不到服务器。
标签:删除,填报,预警,list4,修改,add,put,null From: https://www.cnblogs.com/ikunba/p/17373429.html