From 8942291ddff25f30c9bd0501b46515df27042f8a Mon Sep 17 00:00:00 2001 From: hanrenchun Date: Sat, 2 Dec 2023 16:27:46 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8E=A5=E8=AD=A6=E4=BF=A1=E6=81=AF=E5=AE=9E?= =?UTF-8?q?=E6=97=B6=E6=95=B0=E6=8D=AE=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mapper/JcjJjxxViewOracleMapper.java | 2 + .../mapper/JcjJxxViewMysqlMapper.java | 2 + .../service/JcjJjxxViewMysqlService.java | 2 + .../service/JcjJjxxViewOracleService.java | 2 + .../impl/JcjJjxxViewMysqlServiceImpl.java | 5 + .../impl/JcjJjxxViewOracleServiceImpl.java | 5 + .../ssf/mysqloracletest/task/JcjJjxxTask.java | 260 ++++++++++-------- 7 files changed, 163 insertions(+), 115 deletions(-) diff --git a/src/main/java/com/ssf/mysqloracletest/mapper/JcjJjxxViewOracleMapper.java b/src/main/java/com/ssf/mysqloracletest/mapper/JcjJjxxViewOracleMapper.java index 303d52f..26dcb2a 100644 --- a/src/main/java/com/ssf/mysqloracletest/mapper/JcjJjxxViewOracleMapper.java +++ b/src/main/java/com/ssf/mysqloracletest/mapper/JcjJjxxViewOracleMapper.java @@ -10,4 +10,6 @@ public interface JcjJjxxViewOracleMapper { public int countJjxx(); public List getJjxxList(Map map); + + public List getRealTimeRecording(String maxTime); } diff --git a/src/main/java/com/ssf/mysqloracletest/mapper/JcjJxxViewMysqlMapper.java b/src/main/java/com/ssf/mysqloracletest/mapper/JcjJxxViewMysqlMapper.java index 554c6b1..e396bd6 100644 --- a/src/main/java/com/ssf/mysqloracletest/mapper/JcjJxxViewMysqlMapper.java +++ b/src/main/java/com/ssf/mysqloracletest/mapper/JcjJxxViewMysqlMapper.java @@ -9,4 +9,6 @@ public interface JcjJxxViewMysqlMapper extends BaseMapper { public int insertJjxx(JcjJjxxViewMysql bean); public int updateJjxxByJJBH(JcjJjxxViewMysql bean); + + public JcjJjxxViewMysql selectRecordOrderByRksj(); } diff --git a/src/main/java/com/ssf/mysqloracletest/service/JcjJjxxViewMysqlService.java b/src/main/java/com/ssf/mysqloracletest/service/JcjJjxxViewMysqlService.java index ee373e6..cf02d88 100644 --- a/src/main/java/com/ssf/mysqloracletest/service/JcjJjxxViewMysqlService.java +++ b/src/main/java/com/ssf/mysqloracletest/service/JcjJjxxViewMysqlService.java @@ -15,4 +15,6 @@ public interface JcjJjxxViewMysqlService extends IService{ public int updateJjxxByJJBH(JcjJjxxViewMysql bean); + public JcjJjxxViewMysql selectRecordOrderByRksj(); + } diff --git a/src/main/java/com/ssf/mysqloracletest/service/JcjJjxxViewOracleService.java b/src/main/java/com/ssf/mysqloracletest/service/JcjJjxxViewOracleService.java index bdc7f10..0ac658f 100644 --- a/src/main/java/com/ssf/mysqloracletest/service/JcjJjxxViewOracleService.java +++ b/src/main/java/com/ssf/mysqloracletest/service/JcjJjxxViewOracleService.java @@ -15,4 +15,6 @@ public interface JcjJjxxViewOracleService{ public int countJjxx(); public List getJjxxList(Map map); + + public List getRealTimeRecording(String maxTime); } diff --git a/src/main/java/com/ssf/mysqloracletest/service/impl/JcjJjxxViewMysqlServiceImpl.java b/src/main/java/com/ssf/mysqloracletest/service/impl/JcjJjxxViewMysqlServiceImpl.java index f3a8edf..a7b3620 100644 --- a/src/main/java/com/ssf/mysqloracletest/service/impl/JcjJjxxViewMysqlServiceImpl.java +++ b/src/main/java/com/ssf/mysqloracletest/service/impl/JcjJjxxViewMysqlServiceImpl.java @@ -34,6 +34,11 @@ public class JcjJjxxViewMysqlServiceImpl extends ServiceImpl getJjxxList(Map map) { return oracleMapper.getJjxxList(map); } + + @Override + public List getRealTimeRecording(String maxTime) { + return oracleMapper.getRealTimeRecording(maxTime); + } } diff --git a/src/main/java/com/ssf/mysqloracletest/task/JcjJjxxTask.java b/src/main/java/com/ssf/mysqloracletest/task/JcjJjxxTask.java index bcffce9..a052337 100644 --- a/src/main/java/com/ssf/mysqloracletest/task/JcjJjxxTask.java +++ b/src/main/java/com/ssf/mysqloracletest/task/JcjJjxxTask.java @@ -1,115 +1,145 @@ -//package com.ssf.mysqloracletest.task; -// -//import com.ssf.mysqloracletest.domain.JcjJjxxViewMysql; -//import com.ssf.mysqloracletest.domain.JcjJjxxViewOracle; -//import com.ssf.mysqloracletest.service.JcjJjxxViewMysqlService; -//import com.ssf.mysqloracletest.service.JcjJjxxViewOracleService; -//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.beans.BeanUtils; -//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 JcjJjxxTask { -// -// private static final Logger logger = LoggerFactory.getLogger(JcjJjxxTask.class); -// -// @Resource -// private JcjJjxxViewMysqlService jcjJjxxViewMysqlService; -// -// @Resource -// private JcjJjxxViewOracleService jcjJjxxViewOracleService; -// -// final int oncesCounts = NumKit.checkInt(ConfigParam.oncesCounts) == 0 ? 1000 : NumKit.checkInt(ConfigParam.oncesCounts); -// -// private boolean JjxxTag = false; -// -// /** -// * 连云港 对接海康平台获取人员基础数据 -// * // -// */ -// @Scheduled(initialDelay = 100, fixedDelay = 3000) -// public void transJjxx() { -// -// if (JjxxTag) { -// return; -// } -// -// if (!"true".equals(ConfigParam.JjxxSwitch)) { -// return; -// } -// -// -// try { -// int countJjxx = jcjJjxxViewOracleService.countJjxx(); -// logger.info("countJjxx:" + countJjxx); -// -// logger.info("countJjxx:" + countJjxx); -// if (countJjxx > 0) { -// -// JjxxTag = true; -// -// int count = countJjxx / oncesCounts; -// CountDownLatch latch = new CountDownLatch(count); -// ExecutorService JjxxPool = Executors.newFixedThreadPool(50); -// -// for (int i = 0; i <= count; i++) { -// Map JjxxMap = new HashMap(); -// JjxxMap.put("rowStart", i * oncesCounts); -// JjxxMap.put("rowEnd", (i + 1) * oncesCounts); -// JjxxPool.submit(() -> { -// try { -// List Jjxxs = jcjJjxxViewOracleService.getJjxxList(JjxxMap); -// for (JcjJjxxViewOracle Jjxx : Jjxxs) { -// JcjJjxxViewMysql sBean = new JcjJjxxViewMysql(); -// BeanUtils.copyProperties(Jjxx, sBean); -// //确定一个数据是否唯一 -// JcjJjxxViewMysql checkJjxx = jcjJjxxViewMysqlService.selectJcjJxxByJJBH(Jjxx.getJJBH()); -// if (checkJjxx == null) { -// jcjJjxxViewMysqlService.insertJjxx(sBean); -// logger.info("Jjxx-" + Jjxx.getJJBH() + ":插入成功"); -// } else { -// jcjJjxxViewMysqlService.updateJjxxByJJBH(sBean); -// logger.info("Jjxx-" + Jjxx.getJJBH() + ":更新成功"); -// } -// } -// } catch (Exception e) { -// logger.info("Jjxxs:" + StringKit.getTrace(e)); -// } -// latch.countDown(); -// }); -// logger.info("JjxxMap数据总量:" + countJjxx + "," + "当前处理下标:" + JjxxMap.get("rowStart") + "/" + JjxxMap.get("rowEnd")); -// } -// -// try { -// // Wait for all threads to complete -// latch.await(); -// } catch (InterruptedException e) { -// e.printStackTrace(); -// } -// // 关闭线程池 -// JjxxPool.shutdown(); -// } -// -// } catch (Exception e) { -// logger.info(StringKit.getTrace(e)); -// } -// } -// -// -//} +package com.ssf.mysqloracletest.task; + +import com.ssf.mysqloracletest.domain.JcjJjxxViewMysql; +import com.ssf.mysqloracletest.domain.JcjJjxxViewOracle; +import com.ssf.mysqloracletest.service.JcjJjxxViewMysqlService; +import com.ssf.mysqloracletest.service.JcjJjxxViewOracleService; +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.beans.BeanUtils; +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 JcjJjxxTask { + + private static final Logger logger = LoggerFactory.getLogger(JcjJjxxTask.class); + + @Resource + private JcjJjxxViewMysqlService jcjJjxxViewMysqlService; + + @Resource + private JcjJjxxViewOracleService jcjJjxxViewOracleService; + + final int oncesCounts = NumKit.checkInt(ConfigParam.oncesCounts) == 0 ? 1000 : NumKit.checkInt(ConfigParam.oncesCounts); + + private boolean JjxxTag = false; + + /** + * 连云港 对接海康平台获取人员基础数据 + * // + */ + @Scheduled(initialDelay = 100, fixedDelay = 3000) + public void transJjxx() { + + if (JjxxTag) { + return; + } + + if (!"true".equals(ConfigParam.JjxxSwitch)) { + return; + } + + + try { + int countJjxx = jcjJjxxViewOracleService.countJjxx(); + logger.info("countJjxx:" + countJjxx); + + logger.info("countJjxx:" + countJjxx); + if (countJjxx > 0) { + + JjxxTag = true; + + int count = countJjxx / oncesCounts; + CountDownLatch latch = new CountDownLatch(count); + ExecutorService JjxxPool = Executors.newFixedThreadPool(50); + + for (int i = 0; i <= count; i++) { + Map JjxxMap = new HashMap(); + JjxxMap.put("rowStart", i * oncesCounts); + JjxxMap.put("rowEnd", (i + 1) * oncesCounts); + JjxxPool.submit(() -> { + try { + List Jjxxs = jcjJjxxViewOracleService.getJjxxList(JjxxMap); + for (JcjJjxxViewOracle Jjxx : Jjxxs) { + JcjJjxxViewMysql sBean = new JcjJjxxViewMysql(); + BeanUtils.copyProperties(Jjxx, sBean); + //确定一个数据是否唯一 + JcjJjxxViewMysql checkJjxx = jcjJjxxViewMysqlService.selectJcjJxxByJJBH(Jjxx.getJJBH()); + if (checkJjxx == null) { + jcjJjxxViewMysqlService.insertJjxx(sBean); + logger.info("Jjxx-" + Jjxx.getJJBH() + ":插入成功"); + } else { + jcjJjxxViewMysqlService.updateJjxxByJJBH(sBean); + logger.info("Jjxx-" + Jjxx.getJJBH() + ":更新成功"); + } + } + } catch (Exception e) { + logger.info("Jjxxs:" + StringKit.getTrace(e)); + } + latch.countDown(); + }); + logger.info("JjxxMap数据总量:" + countJjxx + "," + "当前处理下标:" + JjxxMap.get("rowStart") + "/" + JjxxMap.get("rowEnd")); + } + + try { + // Wait for all threads to complete + latch.await(); + } catch (InterruptedException e) { + e.printStackTrace(); + } + // 关闭线程池 + JjxxPool.shutdown(); + } + + } catch (Exception e) { + logger.info(StringKit.getTrace(e)); + } + } + + @Scheduled(initialDelay = 100, fixedDelay = 3000) + public void transcjxxNow() { + + try { + + //1 去mysql查出当前最大时间 + JcjJjxxViewMysql jcjJjxxViewMysql = jcjJjxxViewMysqlService.selectRecordOrderByRksj(); + //2 用得到的最大时间去oracle 查询大于这个时间的记录 + List list = jcjJjxxViewOracleService.getRealTimeRecording(jcjJjxxViewMysql.getWS_RKSJ()); + //3 解析入库 + for (JcjJjxxViewOracle Jjxx : list) { + JcjJjxxViewMysql sBean = new JcjJjxxViewMysql(); + BeanUtils.copyProperties(Jjxx, sBean); + //确定一个数据是否唯一 + JcjJjxxViewMysql checkJjxx = jcjJjxxViewMysqlService.selectJcjJxxByJJBH(Jjxx.getJJBH()); + if (checkJjxx == null) { + jcjJjxxViewMysqlService.insertJjxx(sBean); + logger.info("Jjxx-" + Jjxx.getJJBH() + ":插入成功"); + } else { + jcjJjxxViewMysqlService.updateJjxxByJJBH(sBean); + logger.info("Jjxx-" + Jjxx.getJJBH() + ":更新成功"); + } + } + }catch (Exception e){ + e.printStackTrace(); + } + + + } + + +}