zjh
2025-06-05 2c19fa65dc87ea8f3d81f84154f4eeabff7f8d00
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
 
import cn.hutool.core.io.FileUtil;
import com.ltkj.LtkjApplication;
import com.ltkj.framework.config.MatchUtils;
import com.ltkj.hosp.domain.TjJcycxm;
import com.ltkj.hosp.idutil.IdUtils;
import jodd.util.StringUtil;
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 {
 
            String s = "620821201106110016";
            System.out.println(String.valueOf(MatchUtils.getSexByIdCard(s)));
 
        }
 
 
    /**
     * 执行生成
     * @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();
//    }
}