|
|
|
@ -1,16 +1,21 @@
|
|
|
|
|
package com.ssf.mysqloracletest.task;
|
|
|
|
|
|
|
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
|
|
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
|
|
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
|
|
import com.ssf.mysqloracletest.domain.JcjCjxxViewMysql;
|
|
|
|
|
import com.ssf.mysqloracletest.domain.MetaHandleAlarmInfo;
|
|
|
|
|
import com.ssf.mysqloracletest.domain.VJwtSyfw;
|
|
|
|
|
import com.ssf.mysqloracletest.service.JcjCjxxViewMysqlService;
|
|
|
|
|
import com.ssf.mysqloracletest.service.MetaHandleAlarmInfoService;
|
|
|
|
|
import com.ssf.mysqloracletest.service.MetaImpUserInfoService;
|
|
|
|
|
import com.ssf.mysqloracletest.utils.ConfigParam;
|
|
|
|
|
import com.ssf.mysqloracletest.utils.NumKit;
|
|
|
|
|
import com.ssf.mysqloracletest.utils.StringKit;
|
|
|
|
|
import lombok.RequiredArgsConstructor;
|
|
|
|
|
import org.slf4j.Logger;
|
|
|
|
|
import org.slf4j.LoggerFactory;
|
|
|
|
|
import org.springframework.beans.BeanUtils;
|
|
|
|
|
import org.springframework.scheduling.annotation.Scheduled;
|
|
|
|
|
import org.springframework.stereotype.Component;
|
|
|
|
|
|
|
|
|
@ -21,35 +26,24 @@ import java.util.Map;
|
|
|
|
|
import java.util.concurrent.CountDownLatch;
|
|
|
|
|
import java.util.concurrent.ExecutorService;
|
|
|
|
|
import java.util.concurrent.Executors;
|
|
|
|
|
import java.util.regex.Matcher;
|
|
|
|
|
import java.util.regex.Pattern;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 用户数据接入
|
|
|
|
|
*/
|
|
|
|
|
@Component
|
|
|
|
|
@RequiredArgsConstructor
|
|
|
|
|
public class MetaHandleAlarmTask {
|
|
|
|
|
|
|
|
|
|
private static final Logger logger = LoggerFactory.getLogger(MetaHandleAlarmTask.class);
|
|
|
|
|
|
|
|
|
|
@Resource
|
|
|
|
|
private MetaHandleAlarmInfoService metaHandleAlarmInfoService;
|
|
|
|
|
private final MetaHandleAlarmInfoService metaHandleAlarmInfoService;
|
|
|
|
|
private final JcjCjxxViewMysqlService jcjCjxxViewMysqlService;
|
|
|
|
|
|
|
|
|
|
@Resource
|
|
|
|
|
private JcjCjxxViewMysqlService jcjCjxxViewMysqlService;
|
|
|
|
|
|
|
|
|
|
final int oncesCounts = NumKit.checkInt(ConfigParam.oncesCounts) == 0 ? 1000 : NumKit.checkInt(ConfigParam.oncesCounts);
|
|
|
|
|
|
|
|
|
|
private boolean cjxxTag = false;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 连云港 对接海康平台获取人员基础数据
|
|
|
|
|
* //
|
|
|
|
|
*/
|
|
|
|
|
@Scheduled(initialDelay = 100, fixedDelay = 3000)
|
|
|
|
|
public void transcjxx() {
|
|
|
|
|
|
|
|
|
|
if (cjxxTag) {
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (!"true".equals(ConfigParam.metaHandleAlarmSwitch)) {
|
|
|
|
|
return;
|
|
|
|
@ -57,68 +51,101 @@ public class MetaHandleAlarmTask {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
try {
|
|
|
|
|
int countcjxx = jcjCjxxViewMysqlService.count();
|
|
|
|
|
logger.info("countcjxx:" + countcjxx);
|
|
|
|
|
QueryWrapper<JcjCjxxViewMysql> queryWrapper = new QueryWrapper<>();
|
|
|
|
|
queryWrapper.isNull("status");
|
|
|
|
|
Page<JcjCjxxViewMysql> page = new Page<>(1, 1000);
|
|
|
|
|
List<JcjCjxxViewMysql> resultList = jcjCjxxViewMysqlService.page(page, queryWrapper).getRecords();
|
|
|
|
|
CountDownLatch latch = new CountDownLatch(resultList.size());
|
|
|
|
|
ExecutorService cjxxPool = Executors.newFixedThreadPool(5);
|
|
|
|
|
|
|
|
|
|
for (JcjCjxxViewMysql bean : resultList) {
|
|
|
|
|
cjxxPool.submit(() -> {
|
|
|
|
|
cleanCjxx(bean);
|
|
|
|
|
latch.countDown();
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (countcjxx > 0) {
|
|
|
|
|
|
|
|
|
|
cjxxTag = true;
|
|
|
|
|
try {
|
|
|
|
|
// Wait for all threads to complete
|
|
|
|
|
latch.await();
|
|
|
|
|
} catch (InterruptedException e) {
|
|
|
|
|
e.printStackTrace();
|
|
|
|
|
}
|
|
|
|
|
// 关闭线程池
|
|
|
|
|
cjxxPool.shutdown();
|
|
|
|
|
|
|
|
|
|
int count = countcjxx / oncesCounts;
|
|
|
|
|
CountDownLatch latch = new CountDownLatch(count);
|
|
|
|
|
ExecutorService cjxxPool = Executors.newFixedThreadPool(20);
|
|
|
|
|
} catch (Exception e) {
|
|
|
|
|
logger.info(StringKit.getTrace(e));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
for (int i = 0; i <= count; i++) {
|
|
|
|
|
Map cjxxMap = new HashMap();
|
|
|
|
|
cjxxMap.put("rowStart", i * oncesCounts);
|
|
|
|
|
cjxxMap.put("rowEnd", (i + 1) * oncesCounts);
|
|
|
|
|
cjxxPool.submit(() -> {
|
|
|
|
|
private void cleanCjxx(JcjCjxxViewMysql bean) {
|
|
|
|
|
JcjCjxxViewMysql cjxx = new JcjCjxxViewMysql();
|
|
|
|
|
try {
|
|
|
|
|
List<JcjCjxxViewMysql> list = jcjCjxxViewMysqlService.lambdaQuery().list();
|
|
|
|
|
for (JcjCjxxViewMysql cjxx : list) {
|
|
|
|
|
BeanUtils.copyProperties(bean, cjxx);
|
|
|
|
|
MetaHandleAlarmInfo metaHandleAlarmInfo = new MetaHandleAlarmInfo();
|
|
|
|
|
metaHandleAlarmInfo.setAlarmCode(cjxx.getJJBH());
|
|
|
|
|
metaHandleAlarmInfo.setHandleAlarmUnit(cjxx.getCJDWMC());
|
|
|
|
|
metaHandleAlarmInfo.setHandleAlarmTime(cjxx.getCJSJ());
|
|
|
|
|
metaHandleAlarmInfo.setHandleAlarmContent(cjxx.getCLJGNR());
|
|
|
|
|
metaHandleAlarmInfo.setHandleAlarmAddress(cjxx.getCJXXDD());
|
|
|
|
|
if (!containsChinese(cjxx.getCJR())) {
|
|
|
|
|
metaHandleAlarmInfo.setHandleAlarmUser(cjxx.getCJRHZXS());
|
|
|
|
|
metaHandleAlarmInfo.setHandleAlarmUserCode(cjxx.getCJR());
|
|
|
|
|
metaHandleAlarmInfo.setHandleAlarmResult(cjxx.getCJJGMC());
|
|
|
|
|
//确定一个数据是否唯一
|
|
|
|
|
MetaHandleAlarmInfo one = metaHandleAlarmInfoService.lambdaQuery().eq(MetaHandleAlarmInfo::getAlarmCode, cjxx.getJJBH()).one();
|
|
|
|
|
if (one == null) {
|
|
|
|
|
metaHandleAlarmInfoService.save(metaHandleAlarmInfo);
|
|
|
|
|
logger.info("cjxx-" + cjxx.getJJBH() + ":插入成功");
|
|
|
|
|
} else {
|
|
|
|
|
UpdateWrapper<MetaHandleAlarmInfo> metaHandleAlarmInfoUpdateWrapper = new UpdateWrapper<>();
|
|
|
|
|
metaHandleAlarmInfoUpdateWrapper.eq("alarm_code", cjxx.getJJBH());
|
|
|
|
|
metaHandleAlarmInfoService.update(metaHandleAlarmInfo,metaHandleAlarmInfoUpdateWrapper);
|
|
|
|
|
logger.info("cjxx-" + cjxx.getJJBH() + ":更新成功");
|
|
|
|
|
}else {
|
|
|
|
|
String s = extractChinese(cjxx.getCJR());
|
|
|
|
|
String s1 = extractNonChinese(cjxx.getCJR());
|
|
|
|
|
String substring = s1.substring(0, s1.length() - 1);
|
|
|
|
|
if (cjxx.getCJRHZXS()!=null) {
|
|
|
|
|
metaHandleAlarmInfo.setHandleAlarmUser(cjxx.getCJRHZXS() +","+ s);
|
|
|
|
|
}else {
|
|
|
|
|
metaHandleAlarmInfo.setHandleAlarmUser(s);
|
|
|
|
|
}
|
|
|
|
|
metaHandleAlarmInfo.setHandleAlarmUserCode(substring);
|
|
|
|
|
}
|
|
|
|
|
} catch (Exception e) {
|
|
|
|
|
logger.info("cjxxs:" + e.getMessage());
|
|
|
|
|
metaHandleAlarmInfo.setHandleAlarmResult(cjxx.getCJJGMC());
|
|
|
|
|
boolean save = metaHandleAlarmInfoService.save(metaHandleAlarmInfo);
|
|
|
|
|
if (save) {
|
|
|
|
|
cjxx.setStatus("1");
|
|
|
|
|
jcjCjxxViewMysqlService.updateCjxxById(cjxx);
|
|
|
|
|
}
|
|
|
|
|
latch.countDown();
|
|
|
|
|
});
|
|
|
|
|
logger.info("cjxxMap数据总量:" + countcjxx + "," + "当前处理下标:" + cjxxMap.get("rowStart") + "/" + cjxxMap.get("rowEnd"));
|
|
|
|
|
} catch (Exception e) {
|
|
|
|
|
logger.info(StringKit.getTrace(e));
|
|
|
|
|
cjxx.setStatus("2");
|
|
|
|
|
jcjCjxxViewMysqlService.updateCjxxById(cjxx);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
try {
|
|
|
|
|
// Wait for all threads to complete
|
|
|
|
|
latch.await();
|
|
|
|
|
} catch (InterruptedException e) {
|
|
|
|
|
e.printStackTrace();
|
|
|
|
|
}
|
|
|
|
|
// 关闭线程池
|
|
|
|
|
cjxxPool.shutdown();
|
|
|
|
|
|
|
|
|
|
private static boolean containsChinese(String str) {
|
|
|
|
|
Pattern pattern = Pattern.compile("[\u4e00-\u9fa5]");
|
|
|
|
|
Matcher matcher = pattern.matcher(str);
|
|
|
|
|
return matcher.find();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
} catch (Exception e) {
|
|
|
|
|
logger.info(StringKit.getTrace(e));
|
|
|
|
|
// 提取字符串中的中文
|
|
|
|
|
private static String extractChinese(String str) {
|
|
|
|
|
Pattern pattern = Pattern.compile("[\u4e00-\u9fa5]");
|
|
|
|
|
Matcher matcher = pattern.matcher(str);
|
|
|
|
|
|
|
|
|
|
StringBuilder chineseCharacters = new StringBuilder();
|
|
|
|
|
while (matcher.find()) {
|
|
|
|
|
chineseCharacters.append(matcher.group());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return chineseCharacters.toString();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private static String extractNonChinese(String str) {
|
|
|
|
|
Pattern pattern = Pattern.compile("[^\u4e00-\u9fa5]");
|
|
|
|
|
Matcher matcher = pattern.matcher(str);
|
|
|
|
|
|
|
|
|
|
StringBuilder nonChineseCharacters = new StringBuilder();
|
|
|
|
|
while (matcher.find()) {
|
|
|
|
|
nonChineseCharacters.append(matcher.group());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return nonChineseCharacters.toString();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|