From 7f8a739b16114542864118257e5ef8a238dd0dd9 Mon Sep 17 00:00:00 2001 From: hanrenchun Date: Sat, 2 Dec 2023 15:48:20 +0800 Subject: [PATCH 1/3] =?UTF-8?q?=E4=BB=8E=E4=B8=9A=E4=BA=BA=E5=91=98?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E6=B8=85=E6=B4=97,=E9=87=8D=E7=82=B9?= =?UTF-8?q?=E4=BA=BA=E5=91=98=E5=92=8C=E5=A4=84=E8=AD=A6=E4=BA=BA=E5=91=98?= =?UTF-8?q?=E9=80=BB=E8=BE=91=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- config/application.properties | 7 +- .../domain/MetaActualUnitUserInfo.java | 106 +++++++++++++ .../domain/VSySydwCyryMysql.java | 17 +++ .../mapper/MetaActualUnitUserInfoMapper.java | 18 +++ .../mapper/VSySydwMysqlMapper.java | 3 +- .../MetaActualUnitUserInfoService.java | 13 ++ .../service/VSySydwMysqlService.java | 4 +- .../MetaActualUnitUserInfoServiceImpl.java | 22 +++ .../service/impl/VSySydwMysqlServiceImpl.java | 5 +- .../task/MetaActualUnitUserInfoTask.java | 139 ++++++++++++++++++ .../task/MetaHandleAlarmTask.java | 4 +- .../task/MetaImpUserInfoTask.java | 23 ++- .../mysqloracletest/utils/ConfigParam.java | 1 + 13 files changed, 352 insertions(+), 10 deletions(-) create mode 100644 src/main/java/com/ssf/mysqloracletest/domain/MetaActualUnitUserInfo.java create mode 100644 src/main/java/com/ssf/mysqloracletest/mapper/MetaActualUnitUserInfoMapper.java create mode 100644 src/main/java/com/ssf/mysqloracletest/service/MetaActualUnitUserInfoService.java create mode 100644 src/main/java/com/ssf/mysqloracletest/service/impl/MetaActualUnitUserInfoServiceImpl.java create mode 100644 src/main/java/com/ssf/mysqloracletest/task/MetaActualUnitUserInfoTask.java diff --git a/config/application.properties b/config/application.properties index 8b37afb..0fdcd90 100644 --- a/config/application.properties +++ b/config/application.properties @@ -14,8 +14,9 @@ cyrySwitch=false JjxxSwitch=false #------------------------?????---------------------------- NewNsydwSwitch=false -metaImpUserSwitch=false -NewNalarminfoSwitch=true - +metaImpUserSwitch=true +NewNalarminfoSwitch=false +metaHandleAlarmSwitch=false +metaActualUnitUserInfoSwitch=false diff --git a/src/main/java/com/ssf/mysqloracletest/domain/MetaActualUnitUserInfo.java b/src/main/java/com/ssf/mysqloracletest/domain/MetaActualUnitUserInfo.java new file mode 100644 index 0000000..2dada95 --- /dev/null +++ b/src/main/java/com/ssf/mysqloracletest/domain/MetaActualUnitUserInfo.java @@ -0,0 +1,106 @@ +package com.ssf.mysqloracletest.domain; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import java.io.Serializable; +import java.util.Date; +import lombok.Data; + +/** + * 单位从业人员信息表 + * @TableName meta_actual_unit_user_info + */ +@TableName(value ="meta_actual_unit_user_info") +@Data +public class MetaActualUnitUserInfo implements Serializable { + /** + * 主键 + */ + @TableId(type = IdType.AUTO) + private Long id; + + /** + * 单位id + */ + private Long unitId; + + /** + * 单位名称 + */ + private String unitName; + + /** + * 员工照片 + */ + private String staffPic; + + /** + * 员工姓名 + */ + private String staffName; + + /** + * 员工身份证 + */ + private String identityId; + + /** + * 联系方式 + */ + private String contactInfo; + + /** + * 性别 + */ + private Integer sex; + + /** + * 人员分类 + */ + private Integer staffType; + + /** + * 人员状态 + */ + private Integer staffState; + + /** + * 元数据创建时间 + */ + private String metaCreateTime; + + /** + * 元数据更新时间 + */ + private String metaUpdateTime; + + /** + * 创建时间 + */ + private Date createTime; + + /** + * 创建者 + */ + private Integer createBy; + + /** + * 更新时间 + */ + private Date updateTime; + + /** + * 更新者 + */ + private Integer updateBy; + + /** + * 0:不活跃,1:活跃 + */ + private Integer isActive; + + @TableField(exist = false) + private static final long serialVersionUID = 1L; +} \ No newline at end of file diff --git a/src/main/java/com/ssf/mysqloracletest/domain/VSySydwCyryMysql.java b/src/main/java/com/ssf/mysqloracletest/domain/VSySydwCyryMysql.java index b039173..735c9bc 100644 --- a/src/main/java/com/ssf/mysqloracletest/domain/VSySydwCyryMysql.java +++ b/src/main/java/com/ssf/mysqloracletest/domain/VSySydwCyryMysql.java @@ -1,5 +1,7 @@ package com.ssf.mysqloracletest.domain; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data; import java.io.Serializable; @@ -8,23 +10,38 @@ import java.io.Serializable; * @TableName v_sy_sydw_cyry */ @Data +@TableName(value = "v_sy_sydw_cyry") public class VSySydwCyryMysql implements Serializable { /** * */ + @TableField(value = "ID") private String ID; + @TableField(value = "DWID") private String DWID; + @TableField(value = "GJ") private String GJ; + @TableField(value = "ZJLX") private String ZJLX; + @TableField(value = "ZJHM") private String ZJHM; + @TableField(value = "XM") private String XM; + @TableField(value = "XB") private String XB; + @TableField(value = "MZ") private String MZ; + @TableField(value = "LXDH") private String LXDH; + @TableField(value = "ZT") private String ZT; + @TableField(value = "RYFL") private String RYFL; + @TableField(value = "YSBZK_RKSJ") private String YSBZK_RKSJ; + @TableField(value = "YSBZK_GXSJ") private String YSBZK_GXSJ; + @TableField(value = "DWMC") private String DWMC; } \ No newline at end of file diff --git a/src/main/java/com/ssf/mysqloracletest/mapper/MetaActualUnitUserInfoMapper.java b/src/main/java/com/ssf/mysqloracletest/mapper/MetaActualUnitUserInfoMapper.java new file mode 100644 index 0000000..b19e241 --- /dev/null +++ b/src/main/java/com/ssf/mysqloracletest/mapper/MetaActualUnitUserInfoMapper.java @@ -0,0 +1,18 @@ +package com.ssf.mysqloracletest.mapper; + +import com.ssf.mysqloracletest.domain.MetaActualUnitUserInfo; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** +* @author 28758 +* @description 针对表【meta_actual_unit_user_info(单位从业人员信息表)】的数据库操作Mapper +* @createDate 2023-12-02 10:31:32 +* @Entity com.ssf.mysqloracletest.domain.MetaActualUnitUserInfo +*/ +public interface MetaActualUnitUserInfoMapper extends BaseMapper { + +} + + + + diff --git a/src/main/java/com/ssf/mysqloracletest/mapper/VSySydwMysqlMapper.java b/src/main/java/com/ssf/mysqloracletest/mapper/VSySydwMysqlMapper.java index f17fb77..d40956d 100644 --- a/src/main/java/com/ssf/mysqloracletest/mapper/VSySydwMysqlMapper.java +++ b/src/main/java/com/ssf/mysqloracletest/mapper/VSySydwMysqlMapper.java @@ -1,5 +1,6 @@ package com.ssf.mysqloracletest.mapper; +import com.ssf.mysqloracletest.domain.VSySydwCyryOracle; import com.ssf.mysqloracletest.domain.VSySydwmMysql; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.ssf.mysqloracletest.domain.VSySydzMysql; @@ -12,7 +13,7 @@ import org.apache.ibatis.annotations.Mapper; * @Entity com.ssf.mysqloracletest.domain.VSySydw */ @Mapper -public interface VSySydwMysqlMapper { +public interface VSySydwMysqlMapper extends BaseMapper { public VSySydwmMysql selectVSySydwByZJLID(String ZJLID); public int insertVSySydw(VSySydwmMysql bean); diff --git a/src/main/java/com/ssf/mysqloracletest/service/MetaActualUnitUserInfoService.java b/src/main/java/com/ssf/mysqloracletest/service/MetaActualUnitUserInfoService.java new file mode 100644 index 0000000..67df7ab --- /dev/null +++ b/src/main/java/com/ssf/mysqloracletest/service/MetaActualUnitUserInfoService.java @@ -0,0 +1,13 @@ +package com.ssf.mysqloracletest.service; + +import com.ssf.mysqloracletest.domain.MetaActualUnitUserInfo; +import com.baomidou.mybatisplus.extension.service.IService; + +/** +* @author 28758 +* @description 针对表【meta_actual_unit_user_info(单位从业人员信息表)】的数据库操作Service +* @createDate 2023-12-02 10:31:32 +*/ +public interface MetaActualUnitUserInfoService extends IService { + +} diff --git a/src/main/java/com/ssf/mysqloracletest/service/VSySydwMysqlService.java b/src/main/java/com/ssf/mysqloracletest/service/VSySydwMysqlService.java index deb408f..65165fa 100644 --- a/src/main/java/com/ssf/mysqloracletest/service/VSySydwMysqlService.java +++ b/src/main/java/com/ssf/mysqloracletest/service/VSySydwMysqlService.java @@ -1,5 +1,7 @@ package com.ssf.mysqloracletest.service; +import com.baomidou.mybatisplus.extension.service.IService; +import com.ssf.mysqloracletest.domain.VSySydwCyryMysql; import com.ssf.mysqloracletest.domain.VSySydwmMysql; import com.ssf.mysqloracletest.domain.VSySydzMysql; @@ -8,7 +10,7 @@ import com.ssf.mysqloracletest.domain.VSySydzMysql; * @description 针对表【v_sy_sydw】的数据库操作Service * @createDate 2023-11-29 22:43:38 */ -public interface VSySydwMysqlService { +public interface VSySydwMysqlService extends IService { public VSySydwmMysql selectVSySydwByZJLID(String ZJLID); public int insertVSySydw(VSySydwmMysql sydw); diff --git a/src/main/java/com/ssf/mysqloracletest/service/impl/MetaActualUnitUserInfoServiceImpl.java b/src/main/java/com/ssf/mysqloracletest/service/impl/MetaActualUnitUserInfoServiceImpl.java new file mode 100644 index 0000000..c17bdef --- /dev/null +++ b/src/main/java/com/ssf/mysqloracletest/service/impl/MetaActualUnitUserInfoServiceImpl.java @@ -0,0 +1,22 @@ +package com.ssf.mysqloracletest.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.ssf.mysqloracletest.domain.MetaActualUnitUserInfo; +import com.ssf.mysqloracletest.service.MetaActualUnitUserInfoService; +import com.ssf.mysqloracletest.mapper.MetaActualUnitUserInfoMapper; +import org.springframework.stereotype.Service; + +/** +* @author 28758 +* @description 针对表【meta_actual_unit_user_info(单位从业人员信息表)】的数据库操作Service实现 +* @createDate 2023-12-02 10:31:32 +*/ +@Service +public class MetaActualUnitUserInfoServiceImpl extends ServiceImpl + implements MetaActualUnitUserInfoService{ + +} + + + + diff --git a/src/main/java/com/ssf/mysqloracletest/service/impl/VSySydwMysqlServiceImpl.java b/src/main/java/com/ssf/mysqloracletest/service/impl/VSySydwMysqlServiceImpl.java index 309e3c2..582d42b 100644 --- a/src/main/java/com/ssf/mysqloracletest/service/impl/VSySydwMysqlServiceImpl.java +++ b/src/main/java/com/ssf/mysqloracletest/service/impl/VSySydwMysqlServiceImpl.java @@ -1,7 +1,10 @@ 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.VSySydwmMysql; +import com.ssf.mysqloracletest.mapper.VSySydwCyryMysqlMapper; import com.ssf.mysqloracletest.mapper.VSySydwMysqlMapper; import com.ssf.mysqloracletest.mapper.VSySyfwMysqlMapper; import com.ssf.mysqloracletest.service.VSySydwMysqlService; @@ -17,7 +20,7 @@ import org.springframework.stereotype.Service; @Service @DS("mysql") @RequiredArgsConstructor -public class VSySydwMysqlServiceImpl implements VSySydwMysqlService { +public class VSySydwMysqlServiceImpl extends ServiceImpl implements VSySydwMysqlService { private final VSySydwMysqlMapper vSySydwMysqlMapper; diff --git a/src/main/java/com/ssf/mysqloracletest/task/MetaActualUnitUserInfoTask.java b/src/main/java/com/ssf/mysqloracletest/task/MetaActualUnitUserInfoTask.java new file mode 100644 index 0000000..a62ac3d --- /dev/null +++ b/src/main/java/com/ssf/mysqloracletest/task/MetaActualUnitUserInfoTask.java @@ -0,0 +1,139 @@ +package com.ssf.mysqloracletest.task; + +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.ssf.mysqloracletest.domain.MetaActualUnitUserInfo; +import com.ssf.mysqloracletest.domain.MetaImpUserInfo; +import com.ssf.mysqloracletest.domain.VSySydwCyryMysql; +import com.ssf.mysqloracletest.service.MetaActualUnitUserInfoService; +import com.ssf.mysqloracletest.service.MetaImpUserInfoService; +import com.ssf.mysqloracletest.service.VSySydwCyryMysqlService; +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 MetaActualUnitUserInfoTask { + + private static final Logger logger = LoggerFactory.getLogger(MetaActualUnitUserInfoTask.class); + + @Resource + private VSySydwCyryMysqlService vSySydwCyryMysqlService; + + @Resource + private MetaActualUnitUserInfoService metaActualUnitUserInfoService; + + 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.metaActualUnitUserInfoSwitch)) { + return; + } + + + try { + int countcyry = vSySydwCyryMysqlService.count(); + 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 list = vSySydwCyryMysqlService.lambdaQuery().list(); + for (VSySydwCyryMysql cyry : list) { + MetaActualUnitUserInfo metaActualUnitUserInfo = new MetaActualUnitUserInfo(); + if (cyry.getDWID()!=null) { + metaActualUnitUserInfo.setUnitId(Long.parseLong(cyry.getDWID())); + } + metaActualUnitUserInfo.setUnitName(cyry.getDWMC()); + metaActualUnitUserInfo.setStaffName(cyry.getXM()); + metaActualUnitUserInfo.setIdentityId(cyry.getZJHM()); + metaActualUnitUserInfo.setContactInfo(cyry.getLXDH()); + if (cyry.getXB()!=null) { + metaActualUnitUserInfo.setSex(Integer.parseInt(cyry.getXB())); + } + if (cyry.getRYFL()!=null) { + metaActualUnitUserInfo.setStaffType(Integer.parseInt(cyry.getRYFL())); + } + if ("Y".equals(cyry.getZT())){ + metaActualUnitUserInfo.setStaffState(1); + }else if ("N".equals(cyry.getZT())){ + metaActualUnitUserInfo.setStaffState(2); + } + metaActualUnitUserInfo.setMetaCreateTime(cyry.getYSBZK_RKSJ()); + metaActualUnitUserInfo.setMetaUpdateTime(cyry.getYSBZK_GXSJ()); + //确定一个数据是否唯一 + MetaActualUnitUserInfo one = metaActualUnitUserInfoService.lambdaQuery().eq(MetaActualUnitUserInfo::getIdentityId, cyry.getZJHM()) + .eq(MetaActualUnitUserInfo::getStaffType, cyry.getRYFL()).one(); + if (one == null) { + metaActualUnitUserInfoService.save(metaActualUnitUserInfo); + logger.info("cyry-" + cyry.getZJHM() + ":插入成功"); + } else { + UpdateWrapper metaActualUnitUserInfoUpdateWrapper = new UpdateWrapper<>(); + metaActualUnitUserInfoUpdateWrapper.eq("identity_id", cyry.getZJHM()); + metaActualUnitUserInfoUpdateWrapper.eq("staff_type", cyry.getRYFL()); + metaActualUnitUserInfoService.update(metaActualUnitUserInfo,metaActualUnitUserInfoUpdateWrapper); + logger.info("cyry-" + cyry.getZJHM() + ":更新成功"); + } + } + } 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/MetaHandleAlarmTask.java b/src/main/java/com/ssf/mysqloracletest/task/MetaHandleAlarmTask.java index aae6aff..6639c75 100644 --- a/src/main/java/com/ssf/mysqloracletest/task/MetaHandleAlarmTask.java +++ b/src/main/java/com/ssf/mysqloracletest/task/MetaHandleAlarmTask.java @@ -91,7 +91,9 @@ public class MetaHandleAlarmTask { metaHandleAlarmInfoService.save(metaHandleAlarmInfo); logger.info("cjxx-" + cjxx.getCJBH() + ":插入成功"); } else { - metaHandleAlarmInfoService.update(metaHandleAlarmInfo,new UpdateWrapper<>(metaHandleAlarmInfo)); + UpdateWrapper metaHandleAlarmInfoUpdateWrapper = new UpdateWrapper<>(); + metaHandleAlarmInfoUpdateWrapper.eq("alarm_code", cjxx.getCJBH()); + metaHandleAlarmInfoService.update(metaHandleAlarmInfo,metaHandleAlarmInfoUpdateWrapper); logger.info("cjxx-" + cjxx.getCJBH() + ":更新成功"); } } diff --git a/src/main/java/com/ssf/mysqloracletest/task/MetaImpUserInfoTask.java b/src/main/java/com/ssf/mysqloracletest/task/MetaImpUserInfoTask.java index b0538a4..9166d46 100644 --- a/src/main/java/com/ssf/mysqloracletest/task/MetaImpUserInfoTask.java +++ b/src/main/java/com/ssf/mysqloracletest/task/MetaImpUserInfoTask.java @@ -1,5 +1,7 @@ package com.ssf.mysqloracletest.task; +import com.baomidou.mybatisplus.core.conditions.Wrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.ssf.mysqloracletest.domain.MetaImpUserInfo; import com.ssf.mysqloracletest.domain.ZhxfZdrygkRyjbxxViewMysql; @@ -78,9 +80,22 @@ public class MetaImpUserInfoTask { MetaImpUserInfo metaImpUserInfo = new MetaImpUserInfo(); metaImpUserInfo.setUserName(zdry.getXM()); metaImpUserInfo.setIdCard(zdry.getZJHM()); - metaImpUserInfo.setSex(Integer.parseInt(zdry.getXB())); + if (zdry.getXB()!=null) { + metaImpUserInfo.setSex(Integer.parseInt(zdry.getXB())); + } metaImpUserInfo.setPhone(zdry.getSJHM()); - metaImpUserInfo.setImpUserType(zdry.getZDRRYLBBJ()); + String s = "000000"; + if (zdry.getZDRYXL()!=null && !zdry.getZDRYXL().contains(",")){ + String substring = zdry.getZDRYXL().substring(0, 4); + substring=substring+ s; + metaImpUserInfo.setImpUserType(substring); + }else if (zdry.getZDRYXL().contains(",")){ + String[] split = zdry.getZDRYXL().split(","); + String substring = split[0].substring(0, 4); + String substring1 = split[1].substring(0, 4); + substring = substring+s+","+substring1+s; + metaImpUserInfo.setImpUserType(substring); + } metaImpUserInfo.setImpUserSubType(zdry.getZDRYXL()); metaImpUserInfo.setHouseHoldRegister(zdry.getHJDQH()); metaImpUserInfo.setHouseHoldAddress(zdry.getHJDXZ()); @@ -94,7 +109,9 @@ public class MetaImpUserInfoTask { metaImpUserInfoService.save(metaImpUserInfo); logger.info("zdry-" + zdry.getZJHM() + ":插入成功"); } else { - metaImpUserInfoService.update(metaImpUserInfo,new UpdateWrapper<>(metaImpUserInfo)); + UpdateWrapper metaImpUserInfoUpdateWrapper = new UpdateWrapper<>(); + metaImpUserInfoUpdateWrapper.eq("id_card", zdry.getZJHM()); + metaImpUserInfoService.update(metaImpUserInfo,metaImpUserInfoUpdateWrapper); logger.info("zdry-" + zdry.getZJHM() + ":更新成功"); } } diff --git a/src/main/java/com/ssf/mysqloracletest/utils/ConfigParam.java b/src/main/java/com/ssf/mysqloracletest/utils/ConfigParam.java index a9c4120..2d6736a 100644 --- a/src/main/java/com/ssf/mysqloracletest/utils/ConfigParam.java +++ b/src/main/java/com/ssf/mysqloracletest/utils/ConfigParam.java @@ -26,6 +26,7 @@ public class ConfigParam { public static String metaImpUserSwitch = StringKit.toString(PropertiesUtil.queryPropertiesByKey("metaImpUserSwitch")); public static String metaHandleAlarmSwitch = StringKit.toString(PropertiesUtil.queryPropertiesByKey("metaHandleAlarmSwitch")); + public static String metaActualUnitUserInfoSwitch = StringKit.toString(PropertiesUtil.queryPropertiesByKey("metaActualUnitUserInfoSwitch")); //将数据洗进 --->业务表的开关---------------------------------------------------------------------------------------------------------- public static String NewNsydwSwitch = StringKit.toString(PropertiesUtil.queryPropertiesByKey("NewNsydwSwitch")); From d10dcfc2f6bc2690839ede37af82365dbb751c2a Mon Sep 17 00:00:00 2001 From: hanrenchun Date: Sat, 2 Dec 2023 15:51:40 +0800 Subject: [PATCH 2/3] =?UTF-8?q?=E4=BB=8E=E4=B8=9A=E4=BA=BA=E5=91=98?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E6=B8=85=E6=B4=97,=E9=87=8D=E7=82=B9?= =?UTF-8?q?=E4=BA=BA=E5=91=98=E5=92=8C=E5=A4=84=E8=AD=A6=E4=BA=BA=E5=91=98?= =?UTF-8?q?=E9=80=BB=E8=BE=91=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mysqloracletest/service/impl/VSySydwMysqlServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/ssf/mysqloracletest/service/impl/VSySydwMysqlServiceImpl.java b/src/main/java/com/ssf/mysqloracletest/service/impl/VSySydwMysqlServiceImpl.java index bbaa856..bea3b8e 100644 --- a/src/main/java/com/ssf/mysqloracletest/service/impl/VSySydwMysqlServiceImpl.java +++ b/src/main/java/com/ssf/mysqloracletest/service/impl/VSySydwMysqlServiceImpl.java @@ -23,7 +23,7 @@ import org.springframework.stereotype.Service; @Service @DS("mysql") @RequiredArgsConstructor -public class VSySydwMysqlServiceImplextends extends ServiceImpl implements VSySydwMysqlService { +public class VSySydwMysqlServiceImpl extends ServiceImpl implements VSySydwMysqlService { private final VSySydwMysqlMapper vSySydwMysqlMapper; From 8942291ddff25f30c9bd0501b46515df27042f8a Mon Sep 17 00:00:00 2001 From: hanrenchun Date: Sat, 2 Dec 2023 16:27:46 +0800 Subject: [PATCH 3/3] =?UTF-8?q?=E6=8E=A5=E8=AD=A6=E4=BF=A1=E6=81=AF?= =?UTF-8?q?=E5=AE=9E=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(); + } + + + } + + +}