From d7260291fb511965406b87c85ec68a9645264807 Mon Sep 17 00:00:00 2001 From: hanrenchun Date: Thu, 30 Nov 2023 11:35:10 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BB=8E=E4=B8=9A=E4=BA=BA=E5=91=98,=E6=8E=A5?= =?UTF-8?q?=E8=AD=A6=E4=BF=A1=E6=81=AF=E7=9A=84=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- config/application.properties | 8 +- .../domain/JcjCjxxViewOracle.java | 4 +- .../domain/VSySydwCyryMysql.java | 30 +++++ .../domain/VSySydwCyryOracle.java | 32 +++++ .../mapper/VSySydwCyryMysqlMapper.java | 25 ++++ .../mapper/VSySydwCyryOracleMapper.java | 27 +++++ .../service/VSySydwCyryMysqlService.java | 18 +++ .../service/VSySydwCyryOracleService.java | 19 +++ .../impl/VSySydwCyryMysqlServiceImpl.java | 41 +++++++ .../impl/VSySydwCyryOracleServiceImpl.java | 43 +++++++ .../ssf/mysqloracletest/task/CyryTask.java | 114 ++++++++++++++++++ .../ssf/mysqloracletest/task/JcjCjxxTask.java | 39 +++++- .../mysqloracletest/utils/ConfigParam.java | 2 + .../mapper/VSySydwCyryMysqlMapper.xml | 93 ++++++++++++++ .../mapper/VSySydwCyryOracleMapper.xml | 36 ++++++ 15 files changed, 524 insertions(+), 7 deletions(-) create mode 100644 src/main/java/com/ssf/mysqloracletest/domain/VSySydwCyryMysql.java create mode 100644 src/main/java/com/ssf/mysqloracletest/domain/VSySydwCyryOracle.java create mode 100644 src/main/java/com/ssf/mysqloracletest/mapper/VSySydwCyryMysqlMapper.java create mode 100644 src/main/java/com/ssf/mysqloracletest/mapper/VSySydwCyryOracleMapper.java create mode 100644 src/main/java/com/ssf/mysqloracletest/service/VSySydwCyryMysqlService.java create mode 100644 src/main/java/com/ssf/mysqloracletest/service/VSySydwCyryOracleService.java create mode 100644 src/main/java/com/ssf/mysqloracletest/service/impl/VSySydwCyryMysqlServiceImpl.java create mode 100644 src/main/java/com/ssf/mysqloracletest/service/impl/VSySydwCyryOracleServiceImpl.java create mode 100644 src/main/java/com/ssf/mysqloracletest/task/CyryTask.java create mode 100644 src/main/resources/mapper/VSySydwCyryMysqlMapper.xml create mode 100644 src/main/resources/mapper/VSySydwCyryOracleMapper.xml diff --git a/config/application.properties b/config/application.properties index 0c798ca..95922a7 100644 --- a/config/application.properties +++ b/config/application.properties @@ -4,9 +4,13 @@ sydzSwitch=false oncesCounts=10000 syfwSwitch=false -syrkSwitch=true +syrkSwitch=false jksbSwitch=false -cjxxSwitch=false + + +cjxxSwitch=true +zdrySwitch=false +cyrySwitch=false diff --git a/src/main/java/com/ssf/mysqloracletest/domain/JcjCjxxViewOracle.java b/src/main/java/com/ssf/mysqloracletest/domain/JcjCjxxViewOracle.java index ae424d6..c51f22a 100644 --- a/src/main/java/com/ssf/mysqloracletest/domain/JcjCjxxViewOracle.java +++ b/src/main/java/com/ssf/mysqloracletest/domain/JcjCjxxViewOracle.java @@ -85,8 +85,8 @@ public class JcjCjxxViewOracle implements Serializable { private String ZBLDDW; private String ZBLDDWMC; private String SPXGSJ; - private String YZB; - private String XZB; + private byte[] YZB; + private byte[] XZB; private String BZSJ; private String BZDW; private String BZR; diff --git a/src/main/java/com/ssf/mysqloracletest/domain/VSySydwCyryMysql.java b/src/main/java/com/ssf/mysqloracletest/domain/VSySydwCyryMysql.java new file mode 100644 index 0000000..b039173 --- /dev/null +++ b/src/main/java/com/ssf/mysqloracletest/domain/VSySydwCyryMysql.java @@ -0,0 +1,30 @@ +package com.ssf.mysqloracletest.domain; + +import lombok.Data; + +import java.io.Serializable; + +/** + * @TableName v_sy_sydw_cyry + */ +@Data +public class VSySydwCyryMysql implements Serializable { + /** + * + */ + private String ID; + private String DWID; + private String GJ; + private String ZJLX; + private String ZJHM; + private String XM; + private String XB; + private String MZ; + private String LXDH; + private String ZT; + private String RYFL; + private String YSBZK_RKSJ; + private String YSBZK_GXSJ; + private String DWMC; + +} \ No newline at end of file diff --git a/src/main/java/com/ssf/mysqloracletest/domain/VSySydwCyryOracle.java b/src/main/java/com/ssf/mysqloracletest/domain/VSySydwCyryOracle.java new file mode 100644 index 0000000..11fda56 --- /dev/null +++ b/src/main/java/com/ssf/mysqloracletest/domain/VSySydwCyryOracle.java @@ -0,0 +1,32 @@ +package com.ssf.mysqloracletest.domain; + +import lombok.Data; + +import java.io.Serializable; + +/** + * + * @TableName v_sy_sydw_cyry + */ +@Data +public class VSySydwCyryOracle implements Serializable { + /** + * + */ + private String ID; + private String DWID; + private String GJ; + private String ZJLX; + private String ZJHM; + private String XM; + private String XB; + private String MZ; + private String LXDH; + private String ZT; + private String RYFL; + private String YSBZK_RKSJ; + private String YSBZK_GXSJ; + private String DWMC; + + +} \ No newline at end of file diff --git a/src/main/java/com/ssf/mysqloracletest/mapper/VSySydwCyryMysqlMapper.java b/src/main/java/com/ssf/mysqloracletest/mapper/VSySydwCyryMysqlMapper.java new file mode 100644 index 0000000..7b7bb8d --- /dev/null +++ b/src/main/java/com/ssf/mysqloracletest/mapper/VSySydwCyryMysqlMapper.java @@ -0,0 +1,25 @@ +package com.ssf.mysqloracletest.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.ssf.mysqloracletest.domain.VSySydwCyryMysql; +import org.apache.ibatis.annotations.Mapper; + +/** +* @author 28758 +* @description 针对表【v_sy_sydw_cyry】的数据库操作Mapper +* @createDate 2023-11-29 20:30:59 +* @Entity com.ssf.mysqloracletest.domain.VSySydwCyry +*/ +@Mapper +public interface VSySydwCyryMysqlMapper extends BaseMapper { + + public VSySydwCyryMysql selectVSyCyryById(String id); + + public int insertVSySyrk(VSySydwCyryMysql bean); + + public int updateVSyCyryById(VSySydwCyryMysql bean); +} + + + + diff --git a/src/main/java/com/ssf/mysqloracletest/mapper/VSySydwCyryOracleMapper.java b/src/main/java/com/ssf/mysqloracletest/mapper/VSySydwCyryOracleMapper.java new file mode 100644 index 0000000..b27b591 --- /dev/null +++ b/src/main/java/com/ssf/mysqloracletest/mapper/VSySydwCyryOracleMapper.java @@ -0,0 +1,27 @@ +package com.ssf.mysqloracletest.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.ssf.mysqloracletest.domain.VSySydwCyryMysql; +import com.ssf.mysqloracletest.domain.VSySydwCyryOracle; +import com.ssf.mysqloracletest.domain.ZhxfZdrygkRyjbxxViewOracle; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; +import java.util.Map; + +/** +* @author 28758 +* @description 针对表【v_sy_sydw_cyry】的数据库操作Mapper +* @createDate 2023-11-29 20:30:59 +* @Entity com.ssf.mysqloracletest.domain.VSySydwCyry +*/ +@Mapper +public interface VSySydwCyryOracleMapper extends BaseMapper { + public int countCyry(); + + public List getCyryList(Map map); +} + + + + diff --git a/src/main/java/com/ssf/mysqloracletest/service/VSySydwCyryMysqlService.java b/src/main/java/com/ssf/mysqloracletest/service/VSySydwCyryMysqlService.java new file mode 100644 index 0000000..83c2c1c --- /dev/null +++ b/src/main/java/com/ssf/mysqloracletest/service/VSySydwCyryMysqlService.java @@ -0,0 +1,18 @@ +package com.ssf.mysqloracletest.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.ssf.mysqloracletest.domain.VSySydwCyryMysql; +import com.ssf.mysqloracletest.domain.ZhxfZdrygkRyjbxxViewMysql; + +/** +* @author 28758 +* @description 针对表【v_sy_sydw_cyry】的数据库操作Service +* @createDate 2023-11-29 20:30:59 +*/ +public interface VSySydwCyryMysqlService extends IService { + public VSySydwCyryMysql selectCyryById(String id); + + public int insertCyry(VSySydwCyryMysql syrk); + + public int updateCyryById(VSySydwCyryMysql syrk); +} diff --git a/src/main/java/com/ssf/mysqloracletest/service/VSySydwCyryOracleService.java b/src/main/java/com/ssf/mysqloracletest/service/VSySydwCyryOracleService.java new file mode 100644 index 0000000..1b42e38 --- /dev/null +++ b/src/main/java/com/ssf/mysqloracletest/service/VSySydwCyryOracleService.java @@ -0,0 +1,19 @@ +package com.ssf.mysqloracletest.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.ssf.mysqloracletest.domain.VSySydwCyryMysql; +import com.ssf.mysqloracletest.domain.VSySydwCyryOracle; + +import java.util.List; +import java.util.Map; + +/** +* @author 28758 +* @description 针对表【v_sy_sydw_cyry】的数据库操作Service +* @createDate 2023-11-29 20:30:59 +*/ +public interface VSySydwCyryOracleService extends IService { + public int countCyry(); + + public List getCyryList(Map map); +} diff --git a/src/main/java/com/ssf/mysqloracletest/service/impl/VSySydwCyryMysqlServiceImpl.java b/src/main/java/com/ssf/mysqloracletest/service/impl/VSySydwCyryMysqlServiceImpl.java new file mode 100644 index 0000000..fd12a23 --- /dev/null +++ b/src/main/java/com/ssf/mysqloracletest/service/impl/VSySydwCyryMysqlServiceImpl.java @@ -0,0 +1,41 @@ +package com.ssf.mysqloracletest.service.impl; + +import com.baomidou.dynamic.datasource.annotation.DS; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.ssf.mysqloracletest.domain.VSySydwCyryMysql; +import com.ssf.mysqloracletest.domain.VSySydwCyryMysql; +import com.ssf.mysqloracletest.mapper.VSySydwCyryMysqlMapper; +import com.ssf.mysqloracletest.mapper.VSySydwCyryMysqlMapper; +import com.ssf.mysqloracletest.service.VSySydwCyryMysqlService; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; + +/** +* @author 28758 +* @description 针对表【v_sy_sydw_cyry】的数据库操作Service实现 +* @createDate 2023-11-29 20:30:59 +*/ +@Service +@DS("mysql") +@RequiredArgsConstructor +public class VSySydwCyryMysqlServiceImpl extends ServiceImpl + implements VSySydwCyryMysqlService { + + private final VSySydwCyryMysqlMapper vSySydwCyryMysqlMapper; + + public VSySydwCyryMysql selectCyryById(String id) { + return vSySydwCyryMysqlMapper.selectVSyCyryById(id); + } + + public int insertCyry(VSySydwCyryMysql syrk) { + return vSySydwCyryMysqlMapper.insertVSySyrk(syrk); + } + + public int updateCyryById(VSySydwCyryMysql syrk) { + return vSySydwCyryMysqlMapper.updateVSyCyryById(syrk); + } +} + + + + diff --git a/src/main/java/com/ssf/mysqloracletest/service/impl/VSySydwCyryOracleServiceImpl.java b/src/main/java/com/ssf/mysqloracletest/service/impl/VSySydwCyryOracleServiceImpl.java new file mode 100644 index 0000000..851ed6a --- /dev/null +++ b/src/main/java/com/ssf/mysqloracletest/service/impl/VSySydwCyryOracleServiceImpl.java @@ -0,0 +1,43 @@ +package com.ssf.mysqloracletest.service.impl; + +import com.baomidou.dynamic.datasource.annotation.DS; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.ssf.mysqloracletest.domain.VSySydwCyryMysql; +import com.ssf.mysqloracletest.domain.VSySydwCyryOracle; +import com.ssf.mysqloracletest.mapper.VSySydwCyryMysqlMapper; +import com.ssf.mysqloracletest.mapper.VSySydwCyryOracleMapper; +import com.ssf.mysqloracletest.service.VSySydwCyryMysqlService; +import com.ssf.mysqloracletest.service.VSySydwCyryOracleService; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.List; +import java.util.Map; + +/** +* @author 28758 +* @description 针对表【v_sy_sydw_cyry】的数据库操作Service实现 +* @createDate 2023-11-29 20:30:59 +*/ +@Service +@DS("oracleSydz") +public class VSySydwCyryOracleServiceImpl extends ServiceImpl + implements VSySydwCyryOracleService { + + @Resource + private VSySydwCyryOracleMapper oracleMapper; + + @Override + public int countCyry() { + return oracleMapper.countCyry(); + } + + @Override + public List getCyryList(Map map) { + return oracleMapper.getCyryList(map); + } +} + + + + diff --git a/src/main/java/com/ssf/mysqloracletest/task/CyryTask.java b/src/main/java/com/ssf/mysqloracletest/task/CyryTask.java new file mode 100644 index 0000000..d2739e2 --- /dev/null +++ b/src/main/java/com/ssf/mysqloracletest/task/CyryTask.java @@ -0,0 +1,114 @@ +package com.ssf.mysqloracletest.task; + +import com.ssf.mysqloracletest.domain.VSySydwCyryMysql; +import com.ssf.mysqloracletest.domain.VSySydwCyryOracle; +import com.ssf.mysqloracletest.service.VSySydwCyryMysqlService; +import com.ssf.mysqloracletest.service.VSySydwCyryOracleService; +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 CyryTask { + + private static final Logger logger = LoggerFactory.getLogger(CyryTask.class); + + @Resource + private VSySydwCyryMysqlService vSySydwCyryMysqlService; + + @Resource + private VSySydwCyryOracleService vSySydwCyryOracleService; + + final int oncesCounts = NumKit.checkInt(ConfigParam.oncesCounts) == 0 ? 1000 : NumKit.checkInt(ConfigParam.oncesCounts); + + private boolean cyryTag = false; + + /** + * 连云港 对接海康平台获取人员基础数据 + * // + */ + @Scheduled(initialDelay = 100, fixedDelay = 3000) + public void transcyry() { + + if (cyryTag) { + return; + } + + if (!"true".equals(ConfigParam.cyrySwitch)) { + return; + } + + + try { + int countcyry = vSySydwCyryOracleService.countCyry(); + logger.info("countcyry:" + countcyry); + + if (countcyry > 0) { + + cyryTag = true; + + int count = countcyry / oncesCounts; + CountDownLatch latch = new CountDownLatch(count); + ExecutorService cyryPool = Executors.newFixedThreadPool(50); + + for (int i = 0; i <= count; i++) { + Map cyryMap = new HashMap(); + cyryMap.put("rowStart", i * oncesCounts); + cyryMap.put("rowEnd", (i + 1) * oncesCounts); + cyryPool.submit(() -> { + try { + List cyrys = vSySydwCyryOracleService.getCyryList(cyryMap); + for (VSySydwCyryOracle cyry : cyrys) { + VSySydwCyryMysql sBean = new VSySydwCyryMysql(); + BeanUtils.copyProperties(cyry, sBean); + //确定一个数据是否唯一 + VSySydwCyryMysql checkcyry = vSySydwCyryMysqlService.selectCyryById(cyry.getID()); + if (checkcyry == null) { + vSySydwCyryMysqlService.insertCyry(sBean); + logger.info("cyry-" + cyry.getID() + ":插入成功"); + } else { + vSySydwCyryMysqlService.updateCyryById(sBean); + logger.info("cyry-" + cyry.getID() + ":更新成功"); + } + } + } catch (Exception e) { + logger.info("cyrys:" + e.getMessage()); + } + latch.countDown(); + }); + logger.info("cyryMap数据总量:" + countcyry + "," + "当前处理下标:" + cyryMap.get("rowStart") + "/" + cyryMap.get("rowEnd")); + } + + try { + // Wait for all threads to complete + latch.await(); + } catch (InterruptedException e) { + e.printStackTrace(); + } + // 关闭线程池 + cyryPool.shutdown(); + } + + } catch (Exception e) { + logger.info(StringKit.getTrace(e)); + } + } + + +} diff --git a/src/main/java/com/ssf/mysqloracletest/task/JcjCjxxTask.java b/src/main/java/com/ssf/mysqloracletest/task/JcjCjxxTask.java index 66373e5..f6129a0 100644 --- a/src/main/java/com/ssf/mysqloracletest/task/JcjCjxxTask.java +++ b/src/main/java/com/ssf/mysqloracletest/task/JcjCjxxTask.java @@ -1,5 +1,6 @@ package com.ssf.mysqloracletest.task; +import cn.hutool.core.io.FileUtil; import com.ssf.mysqloracletest.domain.JcjCjxxViewMysql; import com.ssf.mysqloracletest.domain.JcjCjxxViewOracle; import com.ssf.mysqloracletest.service.JcjCjxxViewMysqlService; @@ -14,9 +15,9 @@ 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.io.File; +import java.text.SimpleDateFormat; +import java.util.*; import java.util.concurrent.CountDownLatch; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; @@ -77,8 +78,25 @@ public class JcjCjxxTask { for (JcjCjxxViewOracle cjxx : cjxxs) { JcjCjxxViewMysql sBean = new JcjCjxxViewMysql(); BeanUtils.copyProperties(cjxx, sBean); + + + byte[] qrCode1 = cjxx.getXZB(); + byte[] qrCode2 = cjxx.getYZB(); + try { + String filePath = getFolderPath(ConfigParam.GyzhafPhotoPicPath) + cjxx.getCJBH() +"XZB"+ StringKit.toString(UUID.randomUUID()).replaceAll("-", "") + ".jpg"; + File file = FileUtil.writeBytes(qrCode1, filePath); + logger.info(file.getPath() + ",生成成功"); + String filePath1 = getFolderPath(ConfigParam.GyzhafPhotoPicPath) + cjxx.getCJBH() +"YZB"+ StringKit.toString(UUID.randomUUID()).replaceAll("-", "") + ".jpg"; + File file1 = FileUtil.writeBytes(qrCode2, filePath1); + logger.info(file1.getPath() + ",生成成功"); + sBean.setXZB(filePath); + sBean.setYZB(filePath1); + } catch (Exception e) { + logger.info(cjxx.getCJBH()+ ",文件生成失败"); + } //确定一个数据是否唯一 JcjCjxxViewMysql checkcjxx = cjxxMysqlService.selectCjxxById(cjxx.getCJBH()); + if (checkcjxx == null) { cjxxMysqlService.insertCjxx(sBean); logger.info("cjxx-" + cjxx.getCJBH() + ":插入成功"); @@ -108,6 +126,21 @@ public class JcjCjxxTask { } catch (Exception e) { logger.info(StringKit.getTrace(e)); } + + + } + private static String getFolderPath(String picpath) { + String floderPath; + Date date = new Date(); + SimpleDateFormat simpleDate = new SimpleDateFormat("yyyyMMdd"); + String day = simpleDate.format(date); + floderPath = picpath + ConfigParam.seq + "cjxx" + ConfigParam.seq + day + ConfigParam.seq; + File fileFloderPath = new File(floderPath); + //创建文件夹 + if (!fileFloderPath.exists()) { + fileFloderPath.mkdirs(); + } + return floderPath; } diff --git a/src/main/java/com/ssf/mysqloracletest/utils/ConfigParam.java b/src/main/java/com/ssf/mysqloracletest/utils/ConfigParam.java index fd6efb8..7ef0bf6 100644 --- a/src/main/java/com/ssf/mysqloracletest/utils/ConfigParam.java +++ b/src/main/java/com/ssf/mysqloracletest/utils/ConfigParam.java @@ -20,4 +20,6 @@ public class ConfigParam { public static String zdrySwitch = StringKit.toString(PropertiesUtil.queryPropertiesByKey("zdrySwitch")); public static String JjxxSwitch = StringKit.toString(PropertiesUtil.queryPropertiesByKey("JjxxSwitch")); + public static String cyrySwitch = StringKit.toString(PropertiesUtil.queryPropertiesByKey("cyrySwitch")); + public static String GyzhafPhotoPicPath = StringKit.toString(PropertiesUtil.queryPropertiesByKey("GyzhafPhotoPicPath")); } diff --git a/src/main/resources/mapper/VSySydwCyryMysqlMapper.xml b/src/main/resources/mapper/VSySydwCyryMysqlMapper.xml new file mode 100644 index 0000000..70d5237 --- /dev/null +++ b/src/main/resources/mapper/VSySydwCyryMysqlMapper.xml @@ -0,0 +1,93 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + insert into v_sy_sydw_cyry + + ID , + DWID , + GJ , + ZJLX , + ZJHM , + XM , + XB , + MZ , + LXDH , + ZT , + RYFL , + YSBZK_RKSJ, + YSBZK_GXSJ, + DWMC , + + + + + #{ID }, + #{DWID }, + #{GJ }, + #{ZJLX }, + #{ZJHM }, + #{XM }, + #{XB }, + #{MZ }, + #{LXDH }, + #{ZT }, + #{RYFL }, + #{YSBZK_RKSJ}, + #{YSBZK_GXSJ}, + #{DWMC }, + + + + + + update v_sy_sydw_cyry + + ID =#{ID }, + DWID =#{DWID }, + GJ =#{GJ }, + ZJLX =#{ZJLX }, + ZJHM =#{ZJHM }, + XM =#{XM }, + XB =#{XB }, + MZ =#{MZ }, + LXDH =#{LXDH }, + ZT =#{ZT }, + RYFL =#{RYFL }, + YSBZK_RKSJ=#{YSBZK_RKSJ}, + YSBZK_GXSJ=#{YSBZK_GXSJ}, + DWMC =#{DWMC }, + + + where ID = #{ID} + + diff --git a/src/main/resources/mapper/VSySydwCyryOracleMapper.xml b/src/main/resources/mapper/VSySydwCyryOracleMapper.xml new file mode 100644 index 0000000..a7a805d --- /dev/null +++ b/src/main/resources/mapper/VSySydwCyryOracleMapper.xml @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + +