Commit 18d6e520 by landerliang@163.com

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

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