diff --git a/config/application.properties b/config/application.properties index ae33526..479208f 100644 --- a/config/application.properties +++ b/config/application.properties @@ -4,5 +4,5 @@ sydzSwitch=false oncesCounts=10000 syfwSwitch=false - +syrkSwitch=false jksbSwitch=true diff --git a/src/main/java/com/ssf/mysqloracletest/domain/VSySyrkMysql.java b/src/main/java/com/ssf/mysqloracletest/domain/VSySyrkMysql.java new file mode 100644 index 0000000..625f4b9 --- /dev/null +++ b/src/main/java/com/ssf/mysqloracletest/domain/VSySyrkMysql.java @@ -0,0 +1,221 @@ +package com.ssf.mysqloracletest.domain; + +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import java.io.Serializable; + +/** + * + * @TableName v_sy_syrk + */ +@TableName(value ="v_sy_syrk") +@Data +public class VSySyrkMysql implements Serializable { + /** + * + */ + private String zjlid; + + /** + * + */ + private String ysxtjrzj; + + /** + * + */ + private String xxscPdbz; + + /** + * + */ + private String id; + + /** + * + */ + private String ryfjid; + + /** + * + */ + private String ryid; + + /** + * + */ + private String sfzh; + + /** + * + */ + private String xm; + + /** + * + */ + private String xb; + + /** + * + */ + private String mz; + + /** + * + */ + private String hyzk; + + /** + * + */ + private String whcd; + + /** + * + */ + private String csrq; + + /** + * + */ + private String sjhm; + + /** + * + */ + private String lxdh; + + /** + * + */ + private String hjssxq; + + /** + * + */ + private String hjdxz; + + /** + * + */ + private String xjzdxz; + + /** + * + */ + private String rylx; + + /** + * + */ + private String pcsdm; + + /** + * + */ + private String pcsmc; + + /** + * + */ + private String cjwhdm; + + /** + * + */ + private String cjwhmc; + + /** + * + */ + private String jwqdm; + + /** + * + */ + private String jwqmc; + + /** + * + */ + private String wgdm; + + /** + * + */ + private String wgmc; + + /** + * + */ + private String jzwid; + + /** + * + */ + private String fjid; + + /** + * + */ + private String fjdm; + + /** + * + */ + private String xqid; + + /** + * + */ + private String sts; + + /** + * + */ + private String crId; + + /** + * + */ + private String crMc; + + /** + * + */ + private String crDt; + + /** + * + */ + private String chId; + + /** + * + */ + private String chMc; + + /** + * + */ + private String chDt; + + /** + * + */ + private String cdcJym; + + /** + * + */ + private String ysbzkRksj; + + /** + * + */ + private String ysbzkGxsj; + + +} \ No newline at end of file diff --git a/src/main/java/com/ssf/mysqloracletest/domain/VSySyrkOracle.java b/src/main/java/com/ssf/mysqloracletest/domain/VSySyrkOracle.java new file mode 100644 index 0000000..70ca270 --- /dev/null +++ b/src/main/java/com/ssf/mysqloracletest/domain/VSySyrkOracle.java @@ -0,0 +1,222 @@ +package com.ssf.mysqloracletest.domain; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import java.io.Serializable; + +/** + * + * @TableName v_sy_syrk + */ +@TableName(value ="v_sy_syrk") +@Data +public class VSySyrkOracle implements Serializable { + /** + * + */ + private String zjlid; + + /** + * + */ + private String ysxtjrzj; + + /** + * + */ + private String xxscPdbz; + + /** + * + */ + private String id; + + /** + * + */ + private String ryfjid; + + /** + * + */ + private String ryid; + + /** + * + */ + private String sfzh; + + /** + * + */ + private String xm; + + /** + * + */ + private String xb; + + /** + * + */ + private String mz; + + /** + * + */ + private String hyzk; + + /** + * + */ + private String whcd; + + /** + * + */ + private String csrq; + + /** + * + */ + private String sjhm; + + /** + * + */ + private String lxdh; + + /** + * + */ + private String hjssxq; + + /** + * + */ + private String hjdxz; + + /** + * + */ + private String xjzdxz; + + /** + * + */ + private String rylx; + + /** + * + */ + private String pcsdm; + + /** + * + */ + private String pcsmc; + + /** + * + */ + private String cjwhdm; + + /** + * + */ + private String cjwhmc; + + /** + * + */ + private String jwqdm; + + /** + * + */ + private String jwqmc; + + /** + * + */ + private String wgdm; + + /** + * + */ + private String wgmc; + + /** + * + */ + private String jzwid; + + /** + * + */ + private String fjid; + + /** + * + */ + private String fjdm; + + /** + * + */ + private String xqid; + + /** + * + */ + private String sts; + + /** + * + */ + private String crId; + + /** + * + */ + private String crMc; + + /** + * + */ + private String crDt; + + /** + * + */ + private String chId; + + /** + * + */ + private String chMc; + + /** + * + */ + private String chDt; + + /** + * + */ + private String cdcJym; + + /** + * + */ + private String ysbzkRksj; + + /** + * + */ + private String ysbzkGxsj; + + +} \ No newline at end of file diff --git a/src/main/java/com/ssf/mysqloracletest/mapper/VSySyrkMysqlMapper.java b/src/main/java/com/ssf/mysqloracletest/mapper/VSySyrkMysqlMapper.java new file mode 100644 index 0000000..864a037 --- /dev/null +++ b/src/main/java/com/ssf/mysqloracletest/mapper/VSySyrkMysqlMapper.java @@ -0,0 +1,26 @@ +package com.ssf.mysqloracletest.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.ssf.mysqloracletest.domain.VSySyrkMysql; +import org.apache.ibatis.annotations.Mapper; + + +/** +* @author 28758 +* @description 针对表【v_sy_syrk】的数据库操作Mapper +* @createDate 2023-11-28 18:50:36 +* @Entity generator.domain.VSySyrk +*/ +@Mapper +public interface VSySyrkMysqlMapper extends BaseMapper { + + public VSySyrkMysql selectVSySyrkById(String id); + + public int insertVSySyrk(VSySyrkMysql bean); + + public int updateVSySyrkById(VSySyrkMysql bean); +} + + + + diff --git a/src/main/java/com/ssf/mysqloracletest/mapper/VSySyrkOracleMapper.java b/src/main/java/com/ssf/mysqloracletest/mapper/VSySyrkOracleMapper.java new file mode 100644 index 0000000..92d04c4 --- /dev/null +++ b/src/main/java/com/ssf/mysqloracletest/mapper/VSySyrkOracleMapper.java @@ -0,0 +1,28 @@ +package com.ssf.mysqloracletest.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.ssf.mysqloracletest.domain.VSySyfwOracle; +import com.ssf.mysqloracletest.domain.VSySyrkOracle; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; +import java.util.Map; + + +/** +* @author 28758 +* @description 针对表【v_sy_syrk】的数据库操作Mapper +* @createDate 2023-11-28 18:50:36 +* @Entity generator.domain.VSySyrk +*/ +@Mapper +public interface VSySyrkOracleMapper extends BaseMapper { + public int countSyrk(); + + public List getSyrkList(Map map); + +} + + + + diff --git a/src/main/java/com/ssf/mysqloracletest/service/VSySyrkMysqlService.java b/src/main/java/com/ssf/mysqloracletest/service/VSySyrkMysqlService.java new file mode 100644 index 0000000..dce5d59 --- /dev/null +++ b/src/main/java/com/ssf/mysqloracletest/service/VSySyrkMysqlService.java @@ -0,0 +1,18 @@ +package com.ssf.mysqloracletest.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.ssf.mysqloracletest.domain.VSySyrkMysql; + +/** +* @author 28758 +* @description 针对表【v_sy_syrk】的数据库操作Service +* @createDate 2023-11-28 18:50:36 +*/ +public interface VSySyrkMysqlService extends IService { + public VSySyrkMysql selectVSySyrkById(String id); + + public int insertVSySyrk(VSySyrkMysql syrk); + + public int updateVSySyrkById(VSySyrkMysql syrk); + +} diff --git a/src/main/java/com/ssf/mysqloracletest/service/VSySyrkOracleService.java b/src/main/java/com/ssf/mysqloracletest/service/VSySyrkOracleService.java new file mode 100644 index 0000000..2d8cc61 --- /dev/null +++ b/src/main/java/com/ssf/mysqloracletest/service/VSySyrkOracleService.java @@ -0,0 +1,20 @@ +package com.ssf.mysqloracletest.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.ssf.mysqloracletest.domain.VSySyrkOracle; +import com.ssf.mysqloracletest.domain.VSySyrkOracle; + +import java.util.List; +import java.util.Map; + +/** +* @author 28758 +* @description 针对表【v_sy_syrk】的数据库操作Service +* @createDate 2023-11-28 18:50:36 +*/ +public interface VSySyrkOracleService extends IService { + public int countSyrk(); + + public List getSyrkList(Map map); + +} diff --git a/src/main/java/com/ssf/mysqloracletest/service/impl/VSySyrkMysqlServiceImpl.java b/src/main/java/com/ssf/mysqloracletest/service/impl/VSySyrkMysqlServiceImpl.java new file mode 100644 index 0000000..7f45283 --- /dev/null +++ b/src/main/java/com/ssf/mysqloracletest/service/impl/VSySyrkMysqlServiceImpl.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.VSySyrkMysql; +import com.ssf.mysqloracletest.mapper.VSySyrkMysqlMapper; +import com.ssf.mysqloracletest.service.VSySyrkMysqlService; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; + +/** +* @author 28758 +* @description 针对表【v_sy_syrk】的数据库操作Service实现 +* @createDate 2023-11-28 18:50:36 +*/ +@Service +@DS("mysql") +@RequiredArgsConstructor +public class VSySyrkMysqlServiceImpl extends ServiceImpl implements VSySyrkMysqlService { + + private final VSySyrkMysqlMapper sySyrkMysqlMapper; + + @Override + public VSySyrkMysql selectVSySyrkById(String id) { + return sySyrkMysqlMapper.selectVSySyrkById(id); + } + + @Override + public int insertVSySyrk(VSySyrkMysql syrk) { + return 0; + } + + @Override + public int updateVSySyrkById(VSySyrkMysql syrk) { + return 0; + } +} + + + + diff --git a/src/main/java/com/ssf/mysqloracletest/service/impl/VSySyrkOracleServiceImpl.java b/src/main/java/com/ssf/mysqloracletest/service/impl/VSySyrkOracleServiceImpl.java new file mode 100644 index 0000000..fbb29eb --- /dev/null +++ b/src/main/java/com/ssf/mysqloracletest/service/impl/VSySyrkOracleServiceImpl.java @@ -0,0 +1,42 @@ +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.VSySyrkOracle; +import com.ssf.mysqloracletest.domain.VSySyrkOracle; +import com.ssf.mysqloracletest.mapper.VSySyrkOracleMapper; +import com.ssf.mysqloracletest.mapper.VSySyrkOracleMapper; +import com.ssf.mysqloracletest.service.VSySyrkOracleService; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.List; +import java.util.Map; + +/** +* @author 28758 +* @description 针对表【v_sy_syrk】的数据库操作Service实现 +* @createDate 2023-11-28 18:50:36 +*/ +@Service +@DS("oracleSydz") +public class VSySyrkOracleServiceImpl extends ServiceImpl implements VSySyrkOracleService { + + @Resource + private VSySyrkOracleMapper oracleMapper; + + @Override + public int countSyrk() { + return oracleMapper.countSyrk(); + } + + @Override + public List getSyrkList(Map map) { + return oracleMapper.getSyrkList(map); + } +} + + + + diff --git a/src/main/java/com/ssf/mysqloracletest/task/VSySyrkTask.java b/src/main/java/com/ssf/mysqloracletest/task/VSySyrkTask.java new file mode 100644 index 0000000..f0c664b --- /dev/null +++ b/src/main/java/com/ssf/mysqloracletest/task/VSySyrkTask.java @@ -0,0 +1,114 @@ +package com.ssf.mysqloracletest.task; + +import com.ssf.mysqloracletest.domain.VSySyrkMysql; +import com.ssf.mysqloracletest.domain.VSySyrkOracle; +import com.ssf.mysqloracletest.service.VSySyrkMysqlService; +import com.ssf.mysqloracletest.service.VSySyrkOracleService; +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 VSySyrkTask { + + private static final Logger logger = LoggerFactory.getLogger(VSySyrkTask.class); + + @Resource + private VSySyrkMysqlService syrkMysqlService; + + @Resource + private VSySyrkOracleService syrkOracleService; + + final int oncesCounts = NumKit.checkInt(ConfigParam.oncesCounts) == 0 ? 1000 : NumKit.checkInt(ConfigParam.oncesCounts); + + private boolean syrkTag = false; + + /** + * 连云港 对接海康平台获取人员基础数据 + * // + */ + @Scheduled(initialDelay = 100, fixedDelay = 3000) + public void transSyrk() { + + if (syrkTag) { + return; + } + + if (!"true".equals(ConfigParam.syrkSwitch)) { + return; + } + + + try { + int countSyrk = syrkOracleService.countSyrk(); + logger.info("countsyrk:" + countSyrk); + + if (countSyrk > 0) { + + syrkTag = true; + + int count = countSyrk / oncesCounts; + CountDownLatch latch = new CountDownLatch(count); + ExecutorService syrkPool = Executors.newFixedThreadPool(50); + + for (int i = 0; i <= count; i++) { + Map syrkMap = new HashMap(); + syrkMap.put("rowStart", i * oncesCounts); + syrkMap.put("rowEnd", (i + 1) * oncesCounts); + syrkPool.submit(() -> { + try { + List syrks = syrkOracleService.getSyrkList(syrkMap); + for (VSySyrkOracle syrk : syrks) { + VSySyrkMysql sBean = new VSySyrkMysql(); + BeanUtils.copyProperties(syrk, sBean); + //确定一个数据是否唯一 + VSySyrkMysql checkSyrk = syrkMysqlService.selectVSySyrkById(syrk.getZjlid()); + if (checkSyrk == null) { + syrkMysqlService.insertVSySyrk(sBean); + logger.info("syrk-" + syrk.getZjlid() + ":插入成功"); + } else { + syrkMysqlService.updateVSySyrkById(sBean); + logger.info("syrk-" + syrk.getZjlid() + ":更新成功"); + } + } + } catch (Exception e) { + logger.info("syrks:" + e.getMessage()); + } + latch.countDown(); + }); + logger.info("syrkMap数据总量:" + countSyrk + "," + "当前处理下标:" + syrkMap.get("rowStart") + "/" + syrkMap.get("rowEnd")); + } + + try { + // Wait for all threads to complete + latch.await(); + } catch (InterruptedException e) { + e.printStackTrace(); + } + // 关闭线程池 + syrkPool.shutdown(); + } + + } catch (Exception e) { + logger.info(StringKit.getTrace(e)); + } + } + + +} diff --git a/src/main/java/com/ssf/mysqloracletest/utils/ConfigParam.java b/src/main/java/com/ssf/mysqloracletest/utils/ConfigParam.java index 9e57cc6..be7e840 100644 --- a/src/main/java/com/ssf/mysqloracletest/utils/ConfigParam.java +++ b/src/main/java/com/ssf/mysqloracletest/utils/ConfigParam.java @@ -13,4 +13,5 @@ public class ConfigParam { public static String syfwSwitch = StringKit.toString(PropertiesUtil.queryPropertiesByKey("syfwSwitch")); public static String jksbSwitch = StringKit.toString(PropertiesUtil.queryPropertiesByKey("jksbSwitch")); + public static String syrkSwitch = StringKit.toString(PropertiesUtil.queryPropertiesByKey("syrkSwitch")); } diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index 97731e8..4171922 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -1 +1 @@ -server: port: 5678 spring: datasource: dynamic: primary: mysql #设置默认的数据源或者数据源组,默认值即为master strict: false #设置严格模式,默认false不启动. 启动后再为匹配到指定数据源时候回抛出异常,不启动会使用默认数据源. datasource: oracleSydz: url: jdbc:oracle:thin:@50.146.63.219:1588/sygadsj driver-class-name: oracle.jdbc.driver.OracleDriver username: za_sjdj password: 'za_sjdj0324' mysql: url: jdbc:mysql://localhost:55306/yhzafk?useUnicode=true&characterEncoding=utf8&useSSL=false&allowMultiQueries=true&serverTimezone=GMT driver-class-name: com.mysql.cj.jdbc.Driver username: root password: '!QAZ1qaz' mybatis-plus: mapper-locations: - classpath:mapper/*.xml \ No newline at end of file +server: port: 5678 spring: datasource: dynamic: primary: mysql #设置默认的数据源或者数据源组,默认值即为master strict: false #设置严格模式,默认false不启动. 启动后再为匹配到指定数据源时候回抛出异常,不启动会使用默认数据源. datasource: oracleSydz: url: jdbc:oracle:thin:@50.146.63.219:1588/sygadsj driver-class-name: oracle.jdbc.driver.OracleDriver username: za_sjdj password: 'za_sjdj0324' mysql: url: jdbc:mysql://localhost:55306/yhzafk?useUnicode=true&characterEncoding=utf8&useSSL=false&allowMultiQueries=true&serverTimezone=GMT driver-class-name: com.mysql.cj.jdbc.Driver username: root password: '!QAZ1qaz' mybatis-plus: mapper-locations: - classpath:mapper/*.xml \ No newline at end of file diff --git a/src/main/resources/mapper/VSySyrkMysqlMapper.xml b/src/main/resources/mapper/VSySyrkMysqlMapper.xml new file mode 100644 index 0000000..ef7b48d --- /dev/null +++ b/src/main/resources/mapper/VSySyrkMysqlMapper.xml @@ -0,0 +1,183 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + insert into v_sy_syrk + + ZJLID, + YSXTJRZJ, + XXSC_PDBZ, + ID, + RYFJID, + RYID, + SFZH, + XM, + XB, + MZ, + HYZK, + WHCD, + CSRQ, + SJHM, + LXDH, + PCSDM, + PCSMC, + CJWHDM, + CJWHMC, + JWQDM, + JWQMC, + WGDM, + WGMC, + JZWID, + FJID, + FJDM, + XQID, + STS, + CR_ID, + CR_MC, + CR_DT, + CH_ID, + CH_MC, + CH_DT, + CDC_JYM, + YSBZK_RKSJ, + YSBZK_GXSJ, + + + #{ZJLID}, + #{YSXTJRZJ}, + #{XXSC_PDBZ}, + #{ID}, + #{RYFJID}, + #{RYID}, + #{SFZH}, + #{XM}, + #{XB}, + #{MZ}, + #{HYZK}, + #{WHCD}, + #{CSRQ}, + #{SJHM}, + #{LXDH}, + #{PCSDM}, + #{PCSMC}, + #{CJWHDM}, + #{CJWHMC}, + #{JWQDM}, + #{JWQMC}, + #{WGDM}, + #{WGMC}, + #{JZWID}, + #{FJID}, + #{FJDM}, + #{XQID}, + #{STS}, + #{CR_ID}, + #{CR_MC}, + #{CR_DT}, + #{CH_ID}, + #{CH_MC}, + #{CH_DT}, + #{CDC_JYM}, + #{YSBZK_RKSJ}, + #{YSBZK_GXSJ}, + + + + + update v_sy_syrk + + ZJLID=#{ZJLID}, + YSXTJRZJ=#{YSXTJRZJ}, + XXSC_PDBZ=#{XXSC_PDBZ}, + ID=#{ID}, + RYFJID=#{RYFJID}, + RYID=#{RYID}, + SFZH=#{SFZH}, + XM=#{XM}, + XB=#{XB}, + MZ=#{MZ}, + HYZK=#{HYZK}, + WHCD=#{WHCD}, + CSRQ=#{CSRQ}, + SJHM=#{SJHM}, + LXDH=#{LXDH}, + PCSDM=#{PCSDM}, + PCSMC=#{PCSMC}, + CJWHDM=#{CJWHDM}, + CJWHMC=#{CJWHMC}, + JWQDM=#{JWQDM}, + JWQMC=#{JWQMC}, + WGDM=#{WGDM}, + WGMC=#{WGMC}, + JZWID=#{JZWID}, + FJID=#{FJID}, + FJDM=#{FJDM}, + XQID=#{XQID}, + STS=#{STS}, + CR_ID=#{CR_ID}, + CR_MC=#{CR_MC}, + CR_DT=#{CR_DT}, + CH_ID=#{CH_ID}, + CH_MC=#{CH_MC}, + CH_DT=#{CH_DT}, + CDC_JYM=#{CDC_JYM}, + YSBZK_RKSJ=#{YSBZK_RKSJ}, + YSBZK_GXSJ=#{YSBZK_GXSJ}, + + where ID = #{id} + + + diff --git a/src/main/resources/mapper/VSySyrkOracleMapper.xml b/src/main/resources/mapper/VSySyrkOracleMapper.xml new file mode 100644 index 0000000..cde4e45 --- /dev/null +++ b/src/main/resources/mapper/VSySyrkOracleMapper.xml @@ -0,0 +1,62 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +