虽然我学习java已经4年多了,但是我实话实说使用的话还是第一次真正意义上的使用java,这一次是我们的影像库出现了问题,好像是影像库的服务挂掉了。
问题出现
因为我负责运维的系统会在单据发起的时候产生一个二维码,这里则需要使用影像库的服务,但是很不巧这个影像库的这个服务挂掉了,两天,我们这个二维码的使用是在最后一个环节才会使用,所以说当我意识到出现了问题时候,已经产生了80+个数据,(在这里吐槽一下我的系统的流量两天才不到100个)。
问题思路
首先解决的思路肯定是,先手动生成二维码,然后写sql,去更新生产的库,但是问题来了,第一个生成二维码的url在swagger上面,这个是只能够传单个单据的参数,但是很不巧的是这个需要四个参数,返回值是二维码在影像库的地址,我们可以通过数据库将需要的参数取出,然后只能够手动去swagger将参数去生成二维码,这一步还是避免不不了的,然后去通过批量的方式将sql进行生成。
问题解决
首先第一个就是找到数据,在数据如何搜索,但是很不巧的是数据库里面有一些垃圾数据,然后经过多次尝试
SELECT
t.instance_id,
t.bill_code,
CONCAT(
'{"proDefId":"","proInsId":"',t.instance_id,
'","instanceId":','"',t.instance_id,
'","flowKey":','"',t.flow_key,
'","compId":','"',t.comp_id,
'","compCode":','"',t.comp_code,
'"}'
) bussInfo
FROM
(
SELECT
bill_code,
instance_id,
flow_key,
comp_id,
comp_code,
created_date,
codeimage
FROM
reim_base_bill
) t
WHERE
t.codeimage IS NULL
AND
t.created_date>'2020-11-29 17:09:55'
AND
t.instance_id<> ''
ORDER BY
t.created_date DESC
然后将搜索出来的数据存到Excel中,便于我们后面手动swagger里面找到
拼接出来的json样式就是
{
"proDefId":"",
"proInsId":"2786440",
"instanceId":"2786440",
"flowKey":"sid_9f50165e932b4203a57845dcfef50f9c:17:1651697",
"compId":"331","compCode":"001001021"
}
然后是手动的将json参数放在swagger上面得到影像库的地址,这一步是因为我们的接口发布需要经过测试但是最近我们的新项目上线所以没有时间来处理这个问题,直接手动的将json参数放在swagger上面得到影像库的地址。
然后就是感觉是一个灵魂之作,虽然简单但是我感觉这是我实用的第一步,
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
ArrayList billcode=new ArrayList();
ArrayList codeimage=new ArrayList();
for (int i = 0; i < 82; i++) {
String s = sc.nextLine();
billcode.add(s);
}
for (int i = 0; i < 82; i++) {
String s = sc.nextLine();
codeimage.add(s);
}
for (int i = 0; i < 82; i++) {
System.out.println("UPDATE reim_base_bill set codeimage='"+codeimage.get(i)+"'");
System.out.println("where bill_code='"+billcode.get(i)+"';");
System.out.println();
}
}
最后通过这个代码的得到的sql
UPDATE reim_base_bill
set codeimage='7z21g4l2g13544fskib465m7i'
where bill_code='RBZJ-202012001001006000021';
虽然半年的运维生活还是浪费了很多的时间,但是也是学到了一些东西正在整理中,