工作笔记

运行web项目可以通过在控制台terminal中进入目录cd web/manage 执行npm install执行,最好是进入web文件夹通过git命令 npm run serve
起工程之前先起nacos和mq
 
SSM  spring boot注解怎么配置用法
 
IDEA断点
F8 往下走
F7 进入方法
F9 是走到下一个断点  没有就走到最后
 
使div下移动
<div class="col-md-12" style="margin-top: 170px;">
</div>
 
ipconfig/all 查看MAC地址
 
您的OA登陆:账号:工号  ,密码:姓名全拼 hs!&9p4ay@5q  。  http://oa.halosee.com/login.jsp           邮箱:  姓名全拼@halosee.com     初始密码:Hs20170825     https://qiye.163.com/login/ 邮箱新密码为 ju0718902!
用户名 juruixing 密码 ju0718902!
 
git clone  -> file -> new  -> Project from version Control 输入ssh克隆路径选择文件夹 
配置gitlab秘钥
 
git更新提交代码
VCS栏 -> git pull /push
VCS栏 -> commit
 
磁悬浮项目中RedisClient.java中来切换redis连接本地库还是生产库
 
 
 
 
TreeSet的遍历只能使用迭代器的遍历方法
String[] splitAddress=address.split("\\.");
split表达式,其实就是一个正则表达式。*  ^ | 等符号在正则表达式中属于一种有特殊含义的字符,如果使用此种字符作为分隔符,必须使用转义符即\\加以转义
 
原始协议数据如何转换成协议表?(根据data_code中去数据包中找到某个位置的数据)
关键核心在于data_code的生成
TJ10-31 前面是固定的
字节偏移决定是哪一个字节 字节长度决定有几个字节 
位偏移决定在字节上的位置  位长度就是占用几个字节
 
spring.datasource.password=root
 
#mongodb 10.73.95.128
spring.data.mongodb.uri=mongodb://localhost:27017/
spring.data.mongodb.database=metrodata
 
 
//将yyyy-MM-dd HH:mm:ss格式时间减去二十分钟
var newDate = new Date(new Date(endTime).getTime()-1200000)
 
dim_metro_coach_detail 车厢明细表
interfaceType 协议表中的协议版本号
 
累计运营数据分析页面 空调能耗 辅助系统能耗  累计运行里程 有data_code
牵引能耗 运行里程无data_code
 
Nacos  (Hadoop -> HBase  大数据)
 
线路号 -  列车号 -  车厢号 
 
git双重验证
  • 4fac3eec8ba9a08c
  • 8bac962bf9909d53
  • 8069ac38dfdee591
  • 403149e78c9ebdd1
  • e52ddbef449a5a71
  • 29fed6ce61d9fde6
  • 4dc6834c1966a864
  • b9edfa96b7c328a4
  • 058432d17f2e3018
  • 7c6dbd937da33cf3
根据故障诊断逻辑图配置dim_metro_fault_diag_rule
1.首先根据故障名称查询dim_metro_fault_detial 故障明细表
2.根据子节点名称查询dim_phm_trunscate_rules 协议表 根据data_name 获取display_code ,coach_no等信息
3.配置dim_metro_fault_diag_rule表
 
redis中配置
DT_TRAIN_DATA 25_00206-0006 20211102142216
DT_ONLINE_DATA 00206-0006 {"time":"20211102142216","status":"1"}
 
MongoDB数据库
metroData  time字段为数据包生成时间
faultData
metroModelWarnLog 模型故障定义表
MySql数据库
dim_metro_fault_diag_rule
dim_phm_trunscate_tules
dim_metro_fault_detail
 
每列车的displaycode是唯一的
datacode是分每节车厢的 ,根据display_code 和coachNo确定data_code,即每节车厢的data_code
画故障树时,故障需要根据display_code值,模型不需要(只需要根据idStrs)
模型展示根据模型定义表的结束时间再系统时间五分钟之内展示
故障展示取的mongo中的eventDataHis表当天时间五分钟内的数据
beginTime,endTime为故障发生时间和结束时间
dataTime为故障下发时间
 
打包部署jar包
服务器信息:172.30.88.22    root/langchao123
 
1.打包生成  gxhs-zh-****-r.jar(****为打包日期)
 
2.登录172.30.88.22并 上传jar至  /home/phm_zz 目录下
 
3.部署:
①杀掉应用进程(没有的可以不杀,越过①即可):
ps -ef|grep java  查看到pid, 然后 kill -9  pid
②在phm_zz目录下执行
nohup java -jar ./gxhs-zh-****-r.jar >./logs/metro.log 2>&1 &
 
PS: 输入jar包前几个字母,然后按Tab键,可快速输入jar包全名
 
4.实时查看日志  
① cd ../logs   
② tail -f metro.log
③退出查看:Ctrl+C
 
 
 
如何重启流(修改了数据库协议表)
进入服务器找到路径 /home/app/bin下找到dataReceiveServer.sh
查看进程ps -ef|grep java
杀死进程 kill -9 pid
重启流 nohup ./dataReceiveServer.sh >/dev/null &
 
实时查看日志  tail -f xx.log
查看日志尾部向前200行  tail -n 200 xx.log
 
//LinkedHashSet存储不重复的数据
LinkedHashSet是Set集合的一个实现,具有set集合不重复的特点,同时具有可预测的迭代顺序,也就是我们插入的顺序。
并且linkedHashSet是一个非线程安全的集合。
public List<String> removeStringListDupli(List<String> stringList) {
Set<String> set = new LinkedHashSet<>();
set.addAll(stringList);
stringList.clear();
stringList.addAll(set);
return stringList;
}
 
在系统里新建菜单要配置菜单,角色,账号三个配置(业主展示用)
 
 
时间转换
Date nowDate = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
SimpleDateFormat sdf1 = new SimpleDateFormat("yyyyMMdd000000");
String endTime = sdf.format(nowDate);
String startTime = sdf1.format(nowDate);
 
 

DateTimeFormatter format = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
DateTimeFormatter format1 = DateTimeFormatter.ofPattern("yyyyMMddHHmmss");
LocalDateTime localDateTime = LocalDateTime.parse(metroData.getTime(), format1);
metroData.setTime(localDateTime.format(format));
 
 

 
如果后端返回的数据是类型String = gson.toJson(map);
则前端js接收需要接收方式为: data[key]
 
JSON.stringify()的作用是将 JavaScript 对象转换为 JSON 字符串,而JSON.parse()可以将JSON字符串转为一个对象。
[1].如果后端接收到数据为 String  trainId
则前端ajax传输方式为data:{"trainId": trainId}
如果后端接收到数据为Map paramMap
则前端ajax传输方式为
data:JSON.stringify({"trainId":trainId}),
contentType: "application/json",
 
ss
了解一下git的提交 更新 解决冲突 切换分支
【用流对某个key出现次数进行排序 筛选出top5】
//对系统分组获取key 系统名称
Map<String, List<FaultData>> systemMapList = resultList.stream().collect(Collectors.groupingBy(FaultData::getSystemName));
//获取key-value 系统名称 对应故障发生系统名称的次数
Map<String,Integer> systemNumMap = new HashMap<>();
for (Map.Entry<String, List<FaultData>> stringListEntry : systemMapList.entrySet()) {
systemNumMap.put(stringListEntry.getKey(),stringListEntry.getValue().size());
}
List<Map<String,Integer>> result = new ArrayList<>();
//获取List<Map> [{key:value},{},{}]
systemNumMap.entrySet().stream()
.sorted(Collections.reverseOrder(Map.Entry.comparingByKey()))
.forEachOrdered(x -> {
Map<String,Integer> resultMap = new HashMap<>();
resultMap.put(x.getKey(),x.getValue());
result.add(resultMap);
});
List<Map<String, Integer>> maps = new ArrayList<>();
if(result.size() >=5){
maps = result.subList(0,5);
}
 
创新中心周报填7.5小时  城阳写8小时
 
subList截取必须重新赋值给一个新的对象才有效
list.subList(0,5)
 
List<DimPhmTruncateRulesDomain> displayList = rules.stream()
.filter(t -> StringUtils.isNotBlank(t.getCoachNo()))
.collect(Collectors.toList());
Map<String, String> displayMap = displayList.stream()
.collect(Collectors.toMap(t -> t.getCoachNo() + t.getDisplayCode(), t -> t.getDataCode(), (key1, key2) -> key2));
 
 
 
controller层查询数据库,redis不能写在for循环里面 这样会导致数据查询时间返回过长
String[] params = paramStr.split(",");
Set<String> paramset = Arrays.stream(params).collect(Collectors.toSet());
String finalParamStr = paramStr = StringUtils.join(paramset, ",");
 
DateTimeFormatter formatter1 = DateTimeFormatter.ofPattern("yyyyMMddHHmmss");
DateTimeFormatter formatter2 = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
//格式转化
String startTime = LocalDateTime.parse(stime, formatter2).format(formatter1);
String endTime = LocalDateTime.parse(etime, formatter2).format(formatter1);
 
故障表的beginTime,endTime时间再当前时间五分钟内才显示
metro_data表的time字段跟redis时间一致 才显示列号
如果故障详情页信息展示出来 metro_data表中的time字段在redis时间之前毫秒在000-999之间
 
instanceof 是 Java 的保留关键字,它的作用是测试它左边的对象是否是它右边的类的实例,返回 boolean 的数据类型
if(value instanceof List){
List list= (List)value;
Collections.reverse(list);
}
 
如何对集合实现降序排序
Collections.sort(list); 升序排序
//再反转 Collections.reverse(list); 反转则降序排序
 
选颜色网址
echarts实例网址
 
机房服务器关机
不能直接摁电源键关机 ,要使用poweroff命令关机
 
mongodb表dim_phm_metro_fault中beginTime字段为故障发生时间
对beginTime字段先升序后降序 便能获取到最新时间了:
List<FaultData> eventLogs = resultListTemp.stream().sorted(Comparator.comparing(FaultData::getBeginTime).reversed()).collect(Collectors.toList());
 
 
子系统devId  区分车厢号
【报文头 数据区头 数据区  故障区头 故障区 报文尾】
nginx反向代理 
模型的beginTime,endTime不带毫秒,故障的beginTime,endTime带毫秒
 
select * from dim_metro_fault_detail t where t.fault_model = "TJ10EDCU10" order by RIGHT(fault_name,12),fault_name;
 
 
alt + f8
 
 
 
 
 
 
 
 

 
 
posted @ 2022-11-28 16:24  LoneLy_JU  阅读(76)  评论(0)    收藏  举报