签字base64 保存到mysql 用户提交特别慢 平均每分钟 只能 提交10个人
@PostMapping("/getqianzi")
@ResponseBody
public AjaxResult getqianzi(@RequestBody List<String> parmes, HttpServletRequest request) {
HttpSession session = request.getSession();
String data = (String) session.getAttribute("data");
if (data == null || data.equals("")) {
return new AjaxResult(AjaxResult.Type.ERROR, "请返回首页登陆", " ");
}
RyCmsf ryCmsf = new RyCmsf();
ryCmsf.setSfzh(data);
List<RyCmsf> list = ryCmsfService.selectRyCmsfList12(ryCmsf);
String zz = null;
List<String> list5 = new ArrayList<String>();
String aa = null;
if (list.size() > 0) {
for (RyCmsf rr : list) {
list5.add(rr.getSfzh());
rr.setYuliu2("1");
ryCmsfService.updateRyCmsf(rr);
}
}
if (data == null || data.equals("")) {
return new AjaxResult(AjaxResult.Type.ERROR, "请返回首页登陆", " ");
}
RyCmyj ryCmyj = new RyCmyj();
ryCmyj.setCode("0");
ryCmyj.setLiuyan("无异议,");
ryCmyj.setGuanlianZd(data);
RyCmyj cmyj = ryCmyjService.selectRyCmyjByParcelCode(data);
if (cmyj == null) {
ryCmyjService.insertRyCmyj(ryCmyj);
} else {
ryCmyjService.updateRyCmyj(ryCmyj);
}
//查询该用户的全部签名数据
RyQianzi ry = new RyQianzi();
ry.setGuanlian(data);
List<RyQianzi> ryQianzis = this.ryQianziService.selectRyQianziList(ry);
//复制数据到ry_qianzi_history
for (RyQianzi qianzi : ryQianzis) {
//查询是否存在
RyQianziHistory history = new RyQianziHistory();
history.setQianziZfc(qianzi.getQianziZfc());
history.setGuanlian(qianzi.getGuanlian());
history.setId(Long.parseLong(DaoHelper.getSeq()));
history.setYuliu(qianzi.getYuliu());
historyService.insertRyQianziHistory(history);
//根据宗地代码删除旧的数据
ryQianziService.deleteRyQianziById(qianzi.getId());
}
ryQianziBackupService.deleteRyQianziBackupByZDDM(data);
for (int i = 0; i < parmes.size(); i++) {
RyQianzi ryQianzi = new RyQianzi();
ryQianzi.setQianziZfc(parmes.get(i));
ryQianzi.setGuanlian(data);
ryQianzi.setYuliu(Integer.toString(i + 1));
ryQianziService.insertRyQianzi(ryQianzi);
RyQianziBackup ryQianziBackup = new RyQianziBackup();
ryQianziBackup.setQianziZfc(parmes.get(i));
ryQianziBackup.setGuanlian(data);
ryQianziBackup.setYuliu(Integer.toString(i + 1));
ryQianziBackup.setYuliu1("1");
ryQianziBackupService.insertRyQianziBackup(ryQianziBackup);
// try {
// String s = Base64ToFileImage(parmes.get(i).substring(parmes.get(i).indexOf(",") + 1), data + "--" + new Date().getTime() + ".jpg", data);
// String qzURL = Constants.RESOURCE_PREFIX + "/" + s.substring(s.indexOf("upload/"));
// String url = SystemInfoContant.SYSTEM_URL + qzURL;
//
// URL imgURL = new URL(url.trim());
//
// HttpURLConnection urlConn = (HttpURLConnection) imgURL.openConnection();//构造连接
// urlConn.setRequestProperty(SystemInfoContant.REQUEST_PROPERTY1, SystemInfoContant.REQUEST_PROPERTY2);
// urlConn.setConnectTimeout(SystemInfoContant.TIMEOUT);
// urlConn.setReadTimeout(SystemInfoContant.TIMEOUT);
// urlConn.connect();
// if (urlConn.getResponseCode() == 200) {//返回的状态码是200 表示成功
// RyQianzi ryQianzi = new RyQianzi();
// ryQianzi.setQianziZfc(qzURL);
// ryQianzi.setGuanlian(data);
// ryQianzi.setYuliu(Integer.toString(i + 1));
// ryQianziService.insertRyQianzi(ryQianzi);
// RyQianziBackup ryQianziBackup = new RyQianziBackup();
// ryQianziBackup.setQianziZfc(parmes.get(i));
// ryQianziBackup.setGuanlian(data);
// ryQianziBackup.setYuliu(Integer.toString(i + 1));
// ryQianziBackup.setYuliu1("1");
// ryQianziBackupService.insertRyQianziBackup(ryQianziBackup);
// urlConn.disconnect();
// } else {
// return new AjaxResult(AjaxResult.Type.ERROR, "签名上传失败", " ");
// }
//
// } catch (IOException e) {
// e.printStackTrace();
// }
}
String da = (String) session.getAttribute("da");
RyCmsf ryCmsf1 = new RyCmsf();
ryCmsf1.setZddm(da);
List<RyCmsf> list1 = ryCmsfService.selectRyCmsfList12(ryCmsf1);
String aa1 = null;
if (list1.size() > 0) {
for (RyCmsf rr :
list1) {
aa1 = rr.getSfzh();
}
} else {
return new AjaxResult(AjaxResult.Type.SUCCESS, "成功", 0);
}
session.setAttribute("data", aa1);
return new AjaxResult(AjaxResult.Type.SUCCESS, "成功", 1);
}
public String Base64ToFileImage(String base64String, String fileName, String data) {
if (StringUtils.isBlank(base64String)) {
return null;
}
// 上传文件路径
String filePath = RuoYiConfig.getUploadPath();
// 拼接存放地址
String fileBase64 = filePath + "/" + "Base64QianZi" + "/" + DateUtils.getDate() + "/" + data;
// base64转字节
BASE64Decoder decoder = new BASE64Decoder();
String newUrl = null;
try {
byte[] bfile = decoder.decodeBuffer(base64String);
//调整异常数据
for (int i = 0; i < bfile.length; ++i) {
if (bfile[i] < 0) {
bfile[i] += 256;
}
}
//文件目录不存在则创建
File outFile = new File(fileBase64);
if (!outFile.exists()) {
outFile.mkdirs();
}
//图片地址
newUrl = fileBase64 + "/" + fileName;
OutputStream out = new FileOutputStream(newUrl);
out.write(bfile);
out.flush();
out.close();
} catch (IOException e) {
e.printStackTrace();
}
return newUrl;
}
正常运行没有报错
MySQL 线程池 200扩容到1000 只好了一小会
发现 线程池 大量 休眠线程 修改了存活时间 还是只好了一下下
现在感觉像是操作签字时 进行了表锁 同时只能一个人用 其他人都在排队 抢执行权
并发签字 至少每分钟 100人上下 当然越多越好
数据量太大了,保存到表里不合适,建议保存为图片到文件夹,数据库里面只保存对应的文件名称。
签名操作和表锁什么关系?前端页面锁了后端代码?