|
import cn.hutool.core.io.FileUtil;
|
import com.ltkj.LtkjApplication;
|
import com.ltkj.hosp.idutil.IdUtils;
|
import lombok.extern.slf4j.Slf4j;
|
import org.junit.Test;
|
import org.junit.runner.RunWith;
|
import org.openqa.selenium.Dimension;
|
import org.openqa.selenium.WebDriver;
|
import org.openqa.selenium.chrome.ChromeDriver;
|
import org.openqa.selenium.chrome.ChromeOptions;
|
import org.openqa.selenium.support.ui.WebDriverWait;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Value;
|
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
|
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
|
import org.springframework.boot.test.context.SpringBootTest;
|
import org.springframework.test.context.junit4.SpringRunner;
|
import java.math.BigDecimal;
|
import java.net.HttpURLConnection;
|
import java.net.URL;
|
import java.util.*;
|
import java.io.BufferedReader;
|
import java.io.InputStreamReader;
|
import java.util.concurrent.ExecutorService;
|
import java.util.concurrent.Executors;
|
import java.util.regex.Matcher;
|
import java.util.regex.Pattern;
|
import org.openqa.selenium.*;
|
|
import java.io.File;
|
import java.io.IOException;
|
/**
|
* @Author: 西安路泰科技有限公司/赵佳豪
|
* @Date: 2022/12/12 9:05
|
*/
|
@RunWith(SpringRunner.class)
|
@SpringBootTest(classes = LtkjApplication.class, webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
|
@Slf4j
|
@EnableAutoConfiguration(exclude = {DataSourceAutoConfiguration.class})
|
public class zjhTest {
|
|
@Autowired
|
private IdUtils idUtils;
|
|
@Value("${token.secret_key}")
|
private String secret;
|
@Test
|
public void test() throws InterruptedException {
|
|
ExecutorService executorService = Executors.newFixedThreadPool(20); // 20个线程池
|
Set<String> numbers = Collections.synchronizedSet(new HashSet<>()); // 线程安全的Set,存放生成的编号
|
// 并发执行
|
for (int i = 0; i < 20; i++) {
|
executorService.execute(() -> {
|
try {
|
String number = idUtils.getNewTjNumberRedisLock(); // 调用获取编号的方法
|
numbers.add(number); // 添加到 Set
|
} catch (RuntimeException e) {
|
throw new RuntimeException(e);
|
}
|
});
|
}
|
System.out.println(numbers);
|
executorService.shutdown(); // 关闭线程池
|
|
}
|
|
|
public static void main(String[] args) throws Exception {
|
List<String> numbers = Arrays.asList(
|
"25032800283", "25032800284", "25032800285", "25032800286",
|
"25032800287", "25032800288", "25032800289", "25032800290",
|
"25032800291", "25032800292", "25032800293", "25032800294",
|
"25032800295", "25032800296", "25032800297", "25032800298",
|
"25032800299", "25032800300", "25032800301", "25032800302",
|
"25032800303", "25032800304", "25032800305", "25032800306",
|
"25032800307", "25032800308", "25032800309", "25032800310",
|
"25032800311", "25032800312", "25032800313", "25032800314",
|
"25032800315", "25032800316", "25032800317", "25032800318",
|
"25032800319", "25032800320", "25032800321", "25032800322",
|
"25032800323", "25032800324", "25032800325", "25032800326",
|
"25032800327", "25032800328", "25032800329", "25032800330",
|
"25032800331", "25032800332", "25032800333", "25032800334",
|
"25032800335", "25032800336", "25032800337", "25032800338",
|
"25032800339", "25032800340", "25032800341", "25032800342",
|
"25032800343", "25032800344", "25032800345", "25032800346",
|
"25032800347", "25032800348", "25032800349", "25032800350",
|
"25032800351", "25032800352", "25032800353", "25032800354",
|
"25032800355", "25032800356", "25032800357", "25032800358",
|
"25032800359", "25032800360", "25032800361", "25032800362",
|
"25032800363", "25032800364", "25032800365", "25032800366",
|
"25032800367", "25032800368", "25032800369", "25032800370",
|
"25032800371", "25032800372", "25032800373", "25032800374"
|
);
|
|
Set<String> uniqueNumbers = new HashSet<>(numbers);
|
if (uniqueNumbers.size() == numbers.size()) {
|
System.out.println("✅ 没有重复编号!");
|
} else {
|
System.out.println("❌ 发现重复编号!");
|
numbers.stream()
|
.filter(n -> Collections.frequency(numbers, n) > 1)
|
.distinct()
|
.forEach(n -> System.out.println("重复的编号:" + n));
|
}
|
}
|
|
|
/**
|
* 执行生成
|
* @param filePath 图片生成路径
|
* @return 是否成功
|
*/
|
private void chrome(String filePath) throws IOException {
|
System.setProperty("webdriver.chrome.driver", "D:\\tools\\chromedriver.exe");
|
ChromeOptions options = new ChromeOptions();
|
options.setBinary("D:\\tools\\124063440\\chrome.exe");
|
options.addArguments("--headless"); // 启用无头模式
|
options.addArguments("--disable-gpu"); // 禁用GPU加速
|
options.addArguments("--no-sandbox"); // 禁用沙盒模式(可选,适用于某些Linux环境)
|
System.setProperty("webdriver.chrome.verboseLogging", "true");
|
WebDriver driver = null;
|
try {
|
driver = new ChromeDriver(options);
|
driver.manage().window().setSize(new Dimension(600, 730));
|
driver.get("www.baidu.com");
|
WebDriverWait wait = new WebDriverWait(driver,10);
|
File screenshot = ((TakesScreenshot) driver).getScreenshotAs(OutputType.FILE);
|
FileUtil.copyFile(screenshot, new File("D:\\"+filePath));
|
}catch (Exception e){
|
log.error("玩家信息异常 ->{}",String.valueOf(e));
|
}finally {
|
if (driver != null)
|
driver.quit();
|
}
|
}
|
|
/**
|
* 将科学计数法文本转换成字符文本
|
* @param number
|
* @return
|
*/
|
public static String translateToPlainStr(String number) {
|
|
return getString(number);
|
}
|
|
private static String getString(String number) {
|
if (null == number || number.trim().length() == 0) {
|
return number;
|
}
|
String regEx="^([\\+|-]?\\d+(.{0}|.\\d+))[Ee]{1}([\\+|-]?\\d+)$";
|
// 编译正则表达式
|
Pattern pattern = Pattern.compile(regEx);
|
// 忽略大小写的写法
|
// Pattern pat = Pattern.compile(regEx, Pattern.CASE_INSENSITIVE);
|
Matcher matcher = pattern.matcher(number);
|
// 字符串是否与正则表达式相匹配
|
boolean rs = matcher.matches();
|
// 判断是否为字符串的科学计数法
|
if(rs){
|
// 科学计数法转数字
|
BigDecimal originValue = new BigDecimal(number);
|
System.out.println("手机号为 ==> " + originValue.toPlainString());
|
// 数字转字符串
|
return originValue.toPlainString();
|
}
|
return number;
|
}
|
|
|
public static void forwardUrl(String targetUrl, String forwardUrl) throws Exception {
|
// 创建URL对象
|
URL url = new URL(forwardUrl);
|
|
// 打开连接
|
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
|
|
// 设置请求方法
|
connection.setRequestMethod("GET");
|
|
// 设置请求头,例如Referer或其他你需要转发的头信息
|
connection.setRequestProperty("Referer", targetUrl);
|
|
// 连接
|
connection.connect();
|
|
// 检查响应代码
|
int responseCode = connection.getResponseCode();
|
if (responseCode == HttpURLConnection.HTTP_OK) {
|
// 读取服务器响应
|
BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream()));
|
String inputLine;
|
StringBuilder response = new StringBuilder();
|
|
while ((inputLine = in.readLine()) != null) {
|
response.append(inputLine);
|
}
|
|
in.close();
|
|
// 打印服务器响应
|
System.out.println(response.toString());
|
} else {
|
System.out.println("GET request not worked");
|
}
|
|
// 关闭连接
|
connection.disconnect();
|
}
|
|
|
|
|
|
//
|
// public static String getAdd(String log, String lat ){
|
// //lat 小 log 大
|
// //参数解释: 纬度,经度 type 001 (100代表道路,010代表POI,001代表门址,111可以同时显示前三项)
|
// String urlString = "http://gc.ditu.aliyun.com/regeocoding?l="+lat+","+log+"&type=010";
|
// JSONObject salerJson=JSONObject.parseObject(getUrl(urlString));
|
// JSONObject jsonData=JSONObject.parseObject(String.valueOf(salerJson));
|
// /* JSONArray fileItemsjson = JSONArray.fromObject(jsonData.get("addrList").toString());
|
// System.out.println("地区"+fileItemsjson);
|
// JSONObject job = fileItemsjson.getJSONObject(0);*/
|
// return jsonData.toString();
|
// }
|
//
|
// public static String getUrl(String url)
|
// {
|
// String resData = null;
|
// StringBuffer s = new StringBuffer();
|
// BufferedReader bReader = null;
|
// try {
|
// //114.55.248.182
|
// URL urlWeb = new URL(url);
|
// URLConnection connection = urlWeb.openConnection();
|
// bReader = new BufferedReader(new InputStreamReader(connection.getInputStream(), "utf-8"));
|
// while (null != (resData = bReader.readLine())) {
|
// s.append(resData);
|
// }
|
// bReader.close();
|
// } catch (MalformedURLException e) {
|
// e.printStackTrace();
|
// } catch (IOException e) {
|
// e.printStackTrace();
|
// }
|
// System.out.println(s);
|
// return s.toString();
|
// }
|
}
|