From 6cb1e9f03b27818a5b0c853ae0210fd34321bbdf Mon Sep 17 00:00:00 2001 From: hanrenchun Date: Sat, 2 Dec 2023 10:04:30 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A4=84=E8=AD=A6=E6=95=B0=E6=8D=AE=E6=96=B0?= =?UTF-8?q?=E5=A2=9E=E5=AD=97=E6=AE=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../domain/MetaHandleAlarmInfo.java | 4 + .../task/MetaHandleAlarmTask.java | 122 ++++++++++++++++++ 2 files changed, 126 insertions(+) create mode 100644 src/main/java/com/ssf/mysqloracletest/task/MetaHandleAlarmTask.java diff --git a/src/main/java/com/ssf/mysqloracletest/domain/MetaHandleAlarmInfo.java b/src/main/java/com/ssf/mysqloracletest/domain/MetaHandleAlarmInfo.java index d139645..dcb931a 100644 --- a/src/main/java/com/ssf/mysqloracletest/domain/MetaHandleAlarmInfo.java +++ b/src/main/java/com/ssf/mysqloracletest/domain/MetaHandleAlarmInfo.java @@ -21,6 +21,10 @@ public class MetaHandleAlarmInfo implements Serializable { @TableId(type = IdType.AUTO) private Long id; + /** + * 警情编码 + */ + private String alarmCode; /** * 处警单位名称 */ diff --git a/src/main/java/com/ssf/mysqloracletest/task/MetaHandleAlarmTask.java b/src/main/java/com/ssf/mysqloracletest/task/MetaHandleAlarmTask.java new file mode 100644 index 0000000..aae6aff --- /dev/null +++ b/src/main/java/com/ssf/mysqloracletest/task/MetaHandleAlarmTask.java @@ -0,0 +1,122 @@ +package com.ssf.mysqloracletest.task; + +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.ssf.mysqloracletest.domain.JcjCjxxViewMysql; +import com.ssf.mysqloracletest.domain.MetaHandleAlarmInfo; +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 org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.concurrent.CountDownLatch; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; + +/** + * 用户数据接入 + */ +@Component +public class MetaHandleAlarmTask { + + private static final Logger logger = LoggerFactory.getLogger(MetaHandleAlarmTask.class); + + @Resource + private MetaHandleAlarmInfoService metaHandleAlarmInfoService; + + @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; + } + + + try { + int countcjxx = jcjCjxxViewMysqlService.count(); + logger.info("countcjxx:" + countcjxx); + + if (countcjxx > 0) { + + cjxxTag = true; + + int count = countcjxx / oncesCounts; + CountDownLatch latch = new CountDownLatch(count); + ExecutorService cjxxPool = Executors.newFixedThreadPool(50); + + for (int i = 0; i <= count; i++) { + Map cjxxMap = new HashMap(); + cjxxMap.put("rowStart", i * oncesCounts); + cjxxMap.put("rowEnd", (i + 1) * oncesCounts); + cjxxPool.submit(() -> { + try { + List list = jcjCjxxViewMysqlService.lambdaQuery().list(); + for (JcjCjxxViewMysql cjxx : list) { + MetaHandleAlarmInfo metaHandleAlarmInfo = new MetaHandleAlarmInfo(); + metaHandleAlarmInfo.setAlarmCode(cjxx.getCJBH()); + metaHandleAlarmInfo.setHandleAlarmUnit(cjxx.getCJDWMC()); + metaHandleAlarmInfo.setHandleAlarmTime(cjxx.getCJSJ()); + metaHandleAlarmInfo.setHandleAlarmContent(cjxx.getCLJGNR()); + metaHandleAlarmInfo.setHandleAlarmAddress(cjxx.getCJXXDD()); + metaHandleAlarmInfo.setHandleAlarmUser(cjxx.getCJRHZXS()); + metaHandleAlarmInfo.setHandleAlarmUserCode(cjxx.getCJR()); + metaHandleAlarmInfo.setHandleAlarmResult(cjxx.getCJJGMC()); + //确定一个数据是否唯一 + MetaHandleAlarmInfo one = metaHandleAlarmInfoService.lambdaQuery().eq(MetaHandleAlarmInfo::getAlarmCode, cjxx.getCJBH()).one(); + if (one == null) { + metaHandleAlarmInfoService.save(metaHandleAlarmInfo); + logger.info("cjxx-" + cjxx.getCJBH() + ":插入成功"); + } else { + metaHandleAlarmInfoService.update(metaHandleAlarmInfo,new UpdateWrapper<>(metaHandleAlarmInfo)); + logger.info("cjxx-" + cjxx.getCJBH() + ":更新成功"); + } + } + } catch (Exception e) { + logger.info("cjxxs:" + e.getMessage()); + } + latch.countDown(); + }); + logger.info("cjxxMap数据总量:" + countcjxx + "," + "当前处理下标:" + cjxxMap.get("rowStart") + "/" + cjxxMap.get("rowEnd")); + } + + try { + // Wait for all threads to complete + latch.await(); + } catch (InterruptedException e) { + e.printStackTrace(); + } + // 关闭线程池 + cjxxPool.shutdown(); + } + + } catch (Exception e) { + logger.info(StringKit.getTrace(e)); + } + } + + +}