Commit 18d6e520 by landerliang@163.com

最新稳定版,修复了扫描检测报告抛异常会停止的问题(四驱车没有测到,不过已经扫描的到,应该没问题了)

parent 5037ce52
......@@ -95,10 +95,11 @@ public class LogServiceImpl implements LogService {
assert log != null;
log.setRequestIp(ip);
log.setAddress("");
log.setAddress(ip);
log.setMethod(methodName);
log.setUsername(username);
log.setParams(getParameter(method, joinPoint.getArgs()));
log.setParams("");
//log.setParams(getParameter(method, joinPoint.getArgs()));
log.setBrowser(browser);
logRepository.save(log);
}
......
......@@ -84,21 +84,8 @@ public class QuartzJob extends BaseEntity implements Serializable {
private String description;
@Column(name = "dept_id")
@ApiModelProperty("部门id")
private Long deptId;
@ApiModelProperty("环保系统账号")
private String account;
@ApiModelProperty("环保系统密码")
private String password;
@ApiModelProperty("授权人签章名称")
private String snName1;
@ApiModelProperty("批准人签章名称")
private String snName2;
@ApiModelProperty("公章名称")
private String snName3;
}
......@@ -64,4 +64,8 @@ public class QuartzLog implements Serializable {
@CreationTimestamp
@ApiModelProperty(value = "创建时间", hidden = true)
private Timestamp createTime;
@Column(name = "dept_id")
@ApiModelProperty("部门id")
private Long deptId;
}
package me.zhengjie.modules.quartz.task;
import cn.hutool.json.JSONUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import lombok.extern.slf4j.Slf4j;
import me.zhengjie.exception.BusinessException;
import me.zhengjie.modules.system.service.ReportService;
import me.zhengjie.utils.AssertUtil;
import org.springframework.beans.factory.annotation.Autowired;
......@@ -21,26 +23,31 @@ public class ReportTask {
private ReportService reportService;
public void run(String param) {
log.info(">>> 开始自动爬取新的检测报告进行下载、签章、上传");
JSONObject jsonObject = JSON.parseObject(param);
log.info(">>> ================================ 开始自动爬取新的检测报告进行下载、签章、上传 ====================================");
String replace = param.replace("\n", "");
JSONObject jsonObject = JSONObject.parseObject(replace);
log.info(">>> 环保账户: {}, 环保密码:{}, 授权人签名盘符:{}, 批准人签名盘符:{}, 公章签名盘符:{}",
log.info(">>> 环保账户: {}, 环保密码:{}, 授权人签名盘符:{}, 批准人签名盘符:{}, 公章签名盘符:{}, 部门编号:{}",
jsonObject.getString("account"),jsonObject.getString("password"),
jsonObject.getString("snKey1"),jsonObject.getString("snKey2"),jsonObject.getString("snKey3"));
jsonObject.getString("snKey1"),jsonObject.getString("snKey2"),jsonObject.getString("snKey3"),jsonObject.getInteger("deptId"));
AssertUtil.isNotNull(jsonObject.get("account"),"缺少环保系统账户,自动任务执行终止!");
AssertUtil.isNotNull(jsonObject.get("password"),"缺少环保系统密码,自动任务执行终止!");
AssertUtil.isNotNull(jsonObject.get("snKey1"),"缺少授权人签名盘符,自动任务执行终止!");
AssertUtil.isNotNull(jsonObject.get("snKey2"),"缺少批准人签名盘符,自动任务执行终止!");
AssertUtil.isNotNull(jsonObject.get("snKey3"),"缺少公章签名盘符,自动任务执行终止!");
AssertUtil.isNotNull(jsonObject.get("snKey4"),"缺少MA章签名盘符,自动任务执行终止!");
AssertUtil.isNotNull(jsonObject.get("snName1"),"缺少授权人签章名称,自动任务执行终止!");
AssertUtil.isNotNull(jsonObject.get("snName2"),"缺少批准人签章名称,自动任务执行终止!");
AssertUtil.isNotNull(jsonObject.get("snName3"),"缺少公章签章名称,自动任务执行终止!");
AssertUtil.isNotNull(jsonObject.get("snName4"),"缺少MA章名称,自动任务执行终止!");
AssertUtil.isNotNull(jsonObject.get("deptId"),"缺少部门id,自动任务执行终止!");
reportService.autoDownloadAndSignAndUploadReport(jsonObject.getString("account"),jsonObject.getString("password"),
jsonObject.getString("snKey1"),jsonObject.getString("snKey2"),jsonObject.getString("snKey3"),
jsonObject.getString("snName1"),jsonObject.getString("snName2"),jsonObject.getString("snName3"));
log.info(">> 本次自动签章任务执行完毕!");
}
jsonObject.getString("snName1"),jsonObject.getString("snName2"),jsonObject.getString("snName3")
,jsonObject.getString("snKey4"),jsonObject.getString("snName4"),jsonObject.getInteger("deptId"));
log.info(">> ========================================== 本次自动签章任务执行完毕 ==========================================");
}
}
......@@ -61,6 +61,7 @@ public class ExecutionJob extends QuartzJobBean {
QuartzLog log = new QuartzLog();
log.setJobName(quartzJob.getJobName());
log.setBeanName(quartzJob.getBeanName());
log.setDeptId(quartzJob.getDeptId());
log.setMethodName(quartzJob.getMethodName());
log.setParams(quartzJob.getParams());
long startTime = System.currentTimeMillis();
......
......@@ -16,6 +16,7 @@
package me.zhengjie.modules.security.service;
import me.zhengjie.modules.security.service.dto.JwtUserDto;
import me.zhengjie.utils.StringUtils;
import org.springframework.stereotype.Component;
......
......@@ -103,26 +103,6 @@ public class User extends BaseEntity implements Serializable {
@ApiModelProperty(value = "最后修改密码的时间", hidden = true)
private Date pwdResetTime;
@Column(name = "site_id")
@ApiModelProperty(value = "站点ID", hidden = true)
private Integer siteId;
/*@Column(name = "sn_key")
@ApiModelProperty("签章服务key")
private String snKey;
@Column(name = "sn_password")
@ApiModelProperty("签章服务密码")
private String snPassword;
@Column(name = "sn_signature")
@ApiModelProperty("签章服务签名")
private String snSignature;*/
@Transient
@ApiModelProperty(value = "站点名称",hidden = false)
private String siteName;
@Override
......
......@@ -58,20 +58,4 @@ public class SysUserVo {
@ApiModelProperty(value = "最后修改密码的时间")
private Date pwdResetTime;
@ApiModelProperty(value = "站点ID", hidden = true)
private Integer siteId;
@ApiModelProperty(value = "签名服务器snkey")
private String snKey;
@ApiModelProperty(value = "签名服务器snPassword")
private String snPassword;
@TableField(exist = false)
@ApiModelProperty(value = "站点名称",hidden = false)
private String siteName;
@ApiModelProperty("签名章名称")
private String snSignature;
}
......@@ -24,4 +24,7 @@ public class CarSignatureReqVo {
@ApiModelProperty("公章签章")
private SignatureVo signature3;
@ApiModelProperty("MA章")
private SignatureVo signature4;
}
......@@ -17,4 +17,7 @@ public class SignReportVo {
@ApiModelProperty("公章名称")
private String snName3;
@ApiModelProperty("MA章")
private String snName4;
}
......@@ -144,6 +144,7 @@ public class ReportController {
AssertUtil.isNotBlank(signReportVo.getSnName1(),"请选择授权人签名");
AssertUtil.isNotBlank(signReportVo.getSnName2(),"请选择批准人签名");
AssertUtil.isNotBlank(signReportVo.getSnName3(),"请选择公章");
AssertUtil.isNotBlank(signReportVo.getSnName4(),"请选择MA章");
return ResultVo.success(reportService.signature(signReportVo));
}
......
......@@ -118,7 +118,7 @@ public class UserController {
public ResponseEntity<Object> update(@Validated(User.Update.class) @RequestBody User resources){
checkLevel(resources);
userService.update(resources);
return new ResponseEntity<>(HttpStatus.NO_CONTENT);
return new ResponseEntity<>(HttpStatus.CREATED);
}
@Log("修改用户:个人中心")
......
......@@ -124,7 +124,7 @@ public class ReportService {
*
*/
public synchronized void autoDownloadAndSignAndUploadReport(String account,String password,String snKey1,String snKey2,String snKey3,
String snName1,String snName2,String snName3){
String snName1,String snName2,String snName3,String snKey4,String snName4,Integer deptId){
try {
......@@ -154,12 +154,14 @@ public class ReportService {
//根据snKey查询签章信息
SignatureVo signatureVo1 = signatureService.getBySnKeyAndSnName(snKey1,snName1);
SignatureVo signatureVo1 = signatureService.getBySnKeyAndSnName(snKey1,snName1,deptId);
AssertUtil.isNotNull(signatureVo1,"找不到snKey为: " + snKey1 + "的签名章");
SignatureVo signatureVo2 = signatureService.getBySnKeyAndSnName(snKey2,snName2);
SignatureVo signatureVo2 = signatureService.getBySnKeyAndSnName(snKey2,snName2,deptId);
AssertUtil.isNotNull(signatureVo2,"找不到snKey为: " + snKey2 + "的签名章");
SignatureVo signatureVo3 = signatureService.getBySnKeyAndSnName(snKey3,snName3);
SignatureVo signatureVo3 = signatureService.getBySnKeyAndSnName(snKey3,snName3,deptId);
AssertUtil.isNotNull(signatureVo3,"找不到snKey为: " + snKey3 + "的公章");
SignatureVo signatureVo4 = signatureService.getBySnKeyAndSnName(snKey4,snName4,deptId);
AssertUtil.isNotNull(signatureVo3,"找不到snKey为: " + snKey4 + "的公章");
//进行签章
CarSignatureReqVo carSignatureReqVo = new CarSignatureReqVo();
......@@ -167,6 +169,7 @@ public class ReportService {
carSignatureReqVo.setSignature1(signatureVo1);
carSignatureReqVo.setSignature2(signatureVo2);
carSignatureReqVo.setSignature3(signatureVo3);
carSignatureReqVo.setSignature4(signatureVo4);
HttpEntity<CarSignatureReqVo> httpEntity = new HttpEntity<>(carSignatureReqVo);
ResponseEntity<ResultVo> responseEntity = this.restTemplate.exchange(
......@@ -206,7 +209,7 @@ public class ReportService {
e.printStackTrace();
TaskErrorVo taskErrorVo = new TaskErrorVo();
taskErrorVo.setCreateTime(DateUtil.date());
taskErrorVo.setErrMsg(e.getCause().getMessage()==null?e.getMessage():e.getCause().getMessage());
taskErrorVo.setErrMsg(e.getCause()!=null?e.getCause().getMessage():e.getMessage());
taskErrorMapper.insert(taskErrorVo);
}
}
......@@ -273,9 +276,11 @@ public class ReportService {
SignatureVo signatureVo1 = signatureService.getByDeptId(topDept.getDeptId(), signReportVo.getSnName1());
SignatureVo signatureVo2 = signatureService.getByDeptId(topDept.getDeptId(), signReportVo.getSnName2());
SignatureVo signatureVo3 = signatureService.getByDeptId(topDept.getDeptId(), signReportVo.getSnName3());
SignatureVo signatureVo4 = signatureService.getByDeptId(topDept.getDeptId(), signReportVo.getSnName4());
AssertUtil.isNotNull(signatureVo1,"当前部门无'"+signReportVo.getSnName1()+"'的签名");
AssertUtil.isNotNull(signatureVo2,"当前部门无'"+signReportVo.getSnName2()+"'的签名");
AssertUtil.isNotNull(signatureVo3,"当前部门无'"+signReportVo.getSnName3()+"'的公章");
AssertUtil.isNotNull(signatureVo4,"当前部门无'"+signReportVo.getSnName4()+"'的公章");
ReportPdfVo reportPdfVo = reportPdfMapper.selectById(signReportVo.getReportPdfId());
......@@ -289,6 +294,7 @@ public class ReportService {
carSignatureReqVo.setSignature1(signatureVo1);
carSignatureReqVo.setSignature2(signatureVo2);
carSignatureReqVo.setSignature3(signatureVo3);
carSignatureReqVo.setSignature4(signatureVo4);
//reportPdfVo = signatureUtil.electronicGM(reportPdfVo, sysUserVo);
HttpEntity<CarSignatureReqVo> httpEntity = new HttpEntity<>(carSignatureReqVo);
ResponseEntity<ResultVo> responseEntity = this.restTemplate.exchange(
......
......@@ -44,8 +44,8 @@ public class SignatureService {
* @param snKey
* @return
*/
public SignatureVo getBySnKeyAndSnName(String snKey,String snName){
return signatureMapper.selectOne(new QueryWrapper<SignatureVo>().lambda().and(i -> i.eq(SignatureVo::getSnKey,snKey).eq(SignatureVo::getSnName,snName)));
public SignatureVo getBySnKeyAndSnName(String snKey,String snName,Integer deptId){
return signatureMapper.selectOne(new QueryWrapper<SignatureVo>().lambda().and(i -> i.eq(SignatureVo::getSnKey,snKey).eq(SignatureVo::getSnName,snName).eq(SignatureVo::getDeptId,deptId)));
}
/**
......
......@@ -70,24 +70,24 @@ public class UserServiceImpl implements UserService {
@Override
public Object queryAll(UserQueryCriteria criteria, Pageable pageable) {
Page<User> page = userRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root, criteria, criteriaBuilder), pageable);
page.getContent().forEach(user -> {
/*page.getContent().forEach(user -> {
SiteVo siteVo = siteMapper.selectById(user.getSiteId());
if(siteVo!=null){
user.setSiteName(siteVo.getName());
}
});
});*/
return PageUtil.toPage(page.map(userMapper::toDto));
}
@Override
public List<UserDto> queryAll(UserQueryCriteria criteria) {
List<User> users = userRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root, criteria, criteriaBuilder));
users.forEach(user -> {
/*users.forEach(user -> {
SiteVo siteVo = siteMapper.selectById(user.getSiteId());
if(siteVo!=null){
user.setSiteName(siteVo.getName());
}
});
});*/
return userMapper.toDto(users);
}
......
......@@ -3,10 +3,7 @@ package me.zhengjie.modules.system.util;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.io.FileUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.http.HttpRequest;
import cn.hutool.http.HttpResponse;
import cn.hutool.http.HttpStatus;
import cn.hutool.http.HttpUtil;
import cn.hutool.http.*;
import cn.hutool.json.JSONArray;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
......@@ -36,6 +33,7 @@ import sun.misc.BASE64Encoder;
import java.io.File;
import java.io.UnsupportedEncodingException;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;
......@@ -350,6 +348,10 @@ public class CarReportUtil {
e.printStackTrace();
throw new BusinessException(e.getLocalizedMessage());
}
if(driver != null){
driver.close();
}
return success;
}
......@@ -752,7 +754,9 @@ public class CarReportUtil {
}*/
//登录环保
driver = loginEp(username, password,null);
driver = loginEp(username, password,BrowserVersion.INTERNET_EXPLORER);
Thread.sleep(1000);
//抓取检测报告超链接
WebElement inspecReportBtn = driver.findElement(new By.ById("mainMenuTree_3_a"));
......@@ -762,36 +766,36 @@ public class CarReportUtil {
driver.manage().timeouts().implicitlyWait(60, TimeUnit.SECONDS)
.setScriptTimeout(60,TimeUnit.SECONDS).pageLoadTimeout(120,TimeUnit.SECONDS);
Thread.sleep(1000);
Thread.sleep(3000);
//点击完检测报告的超链接后,抓取frame窗口的元素
WebElement homeFrame = driver.findElement(new By.ByXPath("//*[@id=\"tabs\"]/div[2]/div[2]/div/iframe"));
//切换到iframe页面
WebDriver frameDriver = driver.switchTo().frame(homeFrame);
driver = driver.switchTo().frame(homeFrame);
//延迟加载html
frameDriver.manage().timeouts().implicitlyWait(60, TimeUnit.SECONDS)
driver.manage().timeouts().implicitlyWait(60, TimeUnit.SECONDS)
.setScriptTimeout(60,TimeUnit.SECONDS).pageLoadTimeout(120,TimeUnit.SECONDS);
Thread.sleep(1000);
Thread.sleep(2000);
frameDriver.findElement(new By.ByXPath("//*[@id=\"table_Condition\"]/tbody/tr[2]/td[3]/input")).click();
driver.findElement(new By.ByXPath("//*[@id=\"table_Condition\"]/tbody/tr[2]/td[3]/input")).click();
//获取车牌号输入框
WebElement carNumInput = frameDriver.findElement(new By.ByXPath("//*[@id=\"conWindow\"]/div[1]/div/table/tbody/tr[1]/td[2]/input"));
WebElement carNumInput = driver.findElement(new By.ByXPath("//*[@id=\"conWindow\"]/div[1]/div/table/tbody/tr[1]/td[2]/input"));
carNumInput.sendKeys(detailsReqVo.getCarNum());
//点击检索按钮
frameDriver.findElement(new By.ById("btnVin")).click();
driver.findElement(new By.ById("btnVin")).click();
//延迟加载html
frameDriver.manage().timeouts().implicitlyWait(60, TimeUnit.SECONDS)
driver.manage().timeouts().implicitlyWait(60, TimeUnit.SECONDS)
.setScriptTimeout(60,TimeUnit.SECONDS).pageLoadTimeout(120,TimeUnit.SECONDS);
Thread.sleep(2000);
//抓取检索后的列表
List<WebElement> trElements = frameDriver.findElements(new By.ByXPath("//*[contains(@id,'datagrid-row-')]"));
List<WebElement> trElements = driver.findElements(new By.ByXPath("//*[contains(@id,'datagrid-row-')]"));
AssertUtil.isTrue(trElements.size()>0,"获取该检测报告失败!");
//拿出对应的那条记录(根据检测编码)
WebElement trElement =null;
......@@ -804,26 +808,33 @@ public class CarReportUtil {
//点击检索出来的列表
trElement.click();
//延迟加载html
frameDriver.manage().timeouts().implicitlyWait(60, TimeUnit.SECONDS)
driver.manage().timeouts().implicitlyWait(60, TimeUnit.SECONDS)
.setScriptTimeout(60, TimeUnit.SECONDS).pageLoadTimeout(120, TimeUnit.SECONDS);
Thread.sleep(2000);
//抓取检测报告frame
WebElement reportFrame = frameDriver.findElement(new By.ById("iframe_divReport"));
WebElement reportFrame = driver.findElement(new By.ById("iframe_divReport"));
//切换到检测报告frame
WebDriver reportDriver = frameDriver.switchTo().frame(reportFrame);
driver = driver.switchTo().frame(reportFrame);
Thread.sleep(2000);
//抓取打印预览按钮进行点击
WebElement printView = reportDriver.findElement(new By.ById("A1"));
//WebElement printView = reportDriver.findElement(new By.ById("A1"));
WebElement printView = driver.findElement(new By.ById("btnPlaySelectAll"));
printView.click();
reportDriver.manage().timeouts().implicitlyWait(60, TimeUnit.SECONDS)
driver.manage().timeouts().implicitlyWait(60, TimeUnit.SECONDS)
.setScriptTimeout(60, TimeUnit.SECONDS).pageLoadTimeout(120, TimeUnit.SECONDS);
boolean isError = reportDriver.getPageSource().contains("无检测方法结果数据不允许打印操作");
boolean isError = driver.getPageSource().contains("无检测方法结果数据不允许打印操作");
AssertUtil.isNotTrue(isError,"无检测方法结果数据不允许打印操作");
Thread.sleep(2500);
//手动在授权人签字栏加上当天日期
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy.MM.dd");
String todayStr = simpleDateFormat.format(DateUtil.date());
//替换掉css样式的链接以及去掉多余的元素
Document parse = Jsoup.parse(reportDriver.getPageSource());
Document parse = Jsoup.parse(driver.getPageSource());
parse.select("a").remove();
String reportHtml = parse.html();
reportHtml = reportHtml.replace("src=\"../..", "src=\"" + host).replace("src=\"/businesscom", "src=\"" + host + "businesscom")
......@@ -835,12 +846,15 @@ public class CarReportUtil {
" <br> \n" +
" <br> \n" +
" <font color=\"#FF00FF\"> (如果此前正常,仅因浏览器升级或重安装而出问题,需重新执行以上安装) </font>", " ")
.replace("<div>","<div style=\"margin-left:-460px\">");
.replace("<div>","<div style=\"margin-left:-460px\">")
.replace("<td style=\"width:13.25%;\"> 授权签字人 </td> \n" +
" <td colspan=\"4\" style=\"width:30%;border-left:none;border-right:none;\"></td>",
"<td style=\"width:13.25%;\"> 授权签字人 </td> \n" +
" <td colspan=\"4\" style=\"width:30%;border-left:none;border-right:none;padding-left:100px\">" + todayStr + "</td>");
Document parse1 = Jsoup.parse(reportHtml);
System.out.println("检测报告二维码html:" + parse1.getElementById("qrImg").toString());
String imgSrc = parse1.getElementById("qrImg").attr("src");
Object[] cookies = reportDriver.manage().getCookies().toArray();
Object[] cookies = driver.manage().getCookies().toArray();
byte[] respBytes = HttpUtil.createGet(imgSrc).header("Cookie", cookies[0].toString() + ";" + cookies[1].toString() + ";" + cookies[2].toString()).execute().bodyBytes();
FileUtil.writeBytes(respBytes, getReportPath(fileName,".png"));
......@@ -861,12 +875,15 @@ public class CarReportUtil {
PdfUtil.convert(reportHtmlPath,getReportPath(fileName,".pdf"));
//离开当前检测报告页返回列表页面
reportDriver.switchTo().parentFrame();
//driver.switchTo().parentFrame();
log.info(">> 检测报告下载完成!");
if(driver != null){
driver.close();
}
return getReportPath(fileName, ".pdf");
} catch (InterruptedException | UnsupportedEncodingException | UnhandledAlertException e) {
driver.close();
e.printStackTrace();
throw new BusinessException("检测报告下载失败");
}
......@@ -946,7 +963,7 @@ public class CarReportUtil {
MyContext.PHOTO_TABLE_NAME,MyContext.PHOTO_WHERE,fldsVo.getFld(),conditionVoList,null,5);
JSONObject body = JSONUtil.createObj();
body.put("data",queryDataVo);
body.put("rows",5);
body.put("rows",10);
body.put("page",1);
body.put("sort","DetectEndTime");
body.put("order","DESC");
......@@ -965,7 +982,7 @@ public class CarReportUtil {
//将结果转vo对象
InspecPageVo pageVo = JSONUtil.toBean(queryResult, InspecPageVo.class);
List<TestReportVo> collect = pageVo.getRows().stream().filter(i -> Integer.valueOf(i.getPDFCount())==0).collect(Collectors.toList());
List<TestReportVo> collect = pageVo.getRows().stream().filter(i -> ((Integer.valueOf(i.getPDFCount())==0)||Integer.valueOf(i.getPDFCount())== 2)).collect(Collectors.toList());
pageVo.setRows(collect);
pageVo.setTotal(collect.size());
return pageVo.getRows();
......@@ -973,7 +990,7 @@ public class CarReportUtil {
/**
* 获取最新5条检测报告 (给定时任务使用)
* 获取最新10条检测报告 (给定时任务使用)
* @param username
* @param password
* @return
......@@ -981,37 +998,48 @@ public class CarReportUtil {
*/
public List<TestReportVo> taskReportList (String username,String password) {
//登录环保检测系统
WebDriver driver = loginEp(username, password,null);
WebDriver driver = null;
List<TestReportVo> testReportVoIPage = null;
WebElement inspecReportBtn = driver.findElement(new By.ById("mainMenuTree_3_a"));
AssertUtil.isNotNull(inspecReportBtn,"抓取报告单菜单失败");
String[] reportA = inspecReportBtn.getAttribute("onclick").split("/");
try {
//登录环保检测系统
driver = loginEp(username, password,null);
//抓取当前登录用户的站点名称
WebElement stationSpan = driver.findElement(new By.ById("orgName"));
AssertUtil.isNotBlank(stationSpan.getText(),"获取不到当前用户的站点名称");
Object[] cookies = driver.manage().getCookies().toArray();
WebElement inspecReportBtn = driver.findElement(new By.ById("mainMenuTree_3_a"));
AssertUtil.isNotNull(inspecReportBtn,"抓取报告单菜单失败");
String[] reportA = inspecReportBtn.getAttribute("onclick").split("/");
//获取所有站点信息
String stationJsonStr = HttpUtil.createGet(getStationUrl + System.currentTimeMillis())
.header("Cookie", cookies[0].toString() + ";" + cookies[1].toString() + ";" + cookies[2].toString()).execute().body();
AssertUtil.isNotBlank(stationJsonStr,"获取不到所有站点信息");
JSONArray stationList = JSONUtil.parseArray(stationJsonStr);
String stationCode = "";
for (Object station:stationList){
JSONObject stat = (JSONObject) station;
if(stat.getStr("Name").equals(stationSpan.getText())){
stationCode = stat.getStr("Code");
//抓取当前登录用户的站点名称
WebElement stationSpan = driver.findElement(new By.ById("orgName"));
AssertUtil.isNotBlank(stationSpan.getText(),"获取不到当前用户的站点名称");
Object[] cookies = driver.manage().getCookies().toArray();
//获取所有站点信息
String stationJsonStr = HttpUtil.createGet(getStationUrl + System.currentTimeMillis())
.header("Cookie", cookies[0].toString() + ";" + cookies[1].toString() + ";" + cookies[2].toString()).execute().body();
AssertUtil.isNotBlank(stationJsonStr,"获取不到所有站点信息");
JSONArray stationList = JSONUtil.parseArray(stationJsonStr);
String stationCode = "";
for (Object station:stationList){
JSONObject stat = (JSONObject) station;
if(stat.getStr("Name").equals(stationSpan.getText())){
stationCode = stat.getStr("Code");
}
}
AssertUtil.isNotBlank(stationCode,"获取不到当前用户的站点编码");
testReportVoIPage = topReportList(stationCode, cookies);
log.info(">> 扫描到的检测报告:");
testReportVoIPage.forEach(testReportVo -> {
testReportVo.setSiteName(stationSpan.getText());
System.out.println(testReportVo.toString());
});
} catch (HttpException e) {
log.error(e.getMessage());
}
if(driver != null){
driver.close();
}
AssertUtil.isNotBlank(stationCode,"获取不到当前用户的站点编码");
List<TestReportVo> testReportVoIPage = topReportList(stationCode, cookies);
log.info(">> 扫描到的检测报告:");
testReportVoIPage.forEach(testReportVo -> {
testReportVo.setSiteName(stationSpan.getText());
System.out.println(testReportVo.toString());
});
return testReportVoIPage;
......
......@@ -6,7 +6,7 @@ spring:
driverClassName: net.sf.log4jdbc.sql.jdbcapi.DriverSpy
url: jdbc:log4jdbc:mysql://${DB_HOST:127.0.0.1}:${DB_PORT:3306}/${DB_NAME:car-reptiles}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false
username: ${DB_USER:root}
password: ${DB_PWD:root}
password: ${DB_PWD:Xxt123456/}
# 初始连接数
initial-size: 5
# 最小连接数
......
......@@ -3,17 +3,35 @@ package me.zhengjie;
import me.zhengjie.modules.security.service.UserDetailsServiceImpl;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.omg.CORBA.PUBLIC_MEMBER;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
import javax.annotation.Resource;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
@RunWith(SpringRunner.class)
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
public class LoginCacheTest {
@Resource(name = "userDetailsService")
private UserDetailsServiceImpl userDetailsService;
public synchronized void testSyncronized(Integer i){
System.out.println(i + "进入同步方法");
}
public void testSync(Integer i){
System.out.println(i + "开始异步执行同步方法。。。");
if(i ==2){
try {
Thread.sleep(10000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
testSyncronized(i);
}
@Test
public void testCache() {
long start1 = System.currentTimeMillis();
......@@ -31,4 +49,13 @@ public class LoginCacheTest {
long end2 = System.currentTimeMillis();
System.out.print("使用缓存:" + (end1 - start1) + "毫秒\n 不使用缓存:" + (end2 - start2) + "毫秒");
}
@Test
public void testStramFilter(){
List<String> strings = Arrays.asList("1", "2", "0", "1", "2", "888", "2342", "2");
List<String> collect = strings.stream().filter(i -> ((Integer.valueOf(i) == 0) || (Integer.valueOf(i) == 2))).collect(Collectors.toList());
collect.forEach(s -> {
System.out.println(s);
});
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment