From fc3ae1662f08b8e64b7fc8a4f5cfe66b7eac5c77 Mon Sep 17 00:00:00 2001 From: Angel <1050374295@qq.com> Date: Fri, 1 Dec 2023 16:31:15 +0800 Subject: [PATCH] Du SYDW TEst --- .../domain/MetaActualUnitInfo.java | 132 +++++++++++++++ .../mapper/MetaActualUnitInfoMapper.java | 18 ++ .../service/MetaActualUnitInfoService.java | 15 ++ .../impl/MetaActualUnitInfoServiceImpl.java | 25 +++ .../mysqloracletest/task/UnitInfoTask.java | 157 ++++++++++++++++++ 5 files changed, 347 insertions(+) create mode 100644 src/main/java/com/ssf/mysqloracletest/domain/MetaActualUnitInfo.java create mode 100644 src/main/java/com/ssf/mysqloracletest/mapper/MetaActualUnitInfoMapper.java create mode 100644 src/main/java/com/ssf/mysqloracletest/service/MetaActualUnitInfoService.java create mode 100644 src/main/java/com/ssf/mysqloracletest/service/impl/MetaActualUnitInfoServiceImpl.java create mode 100644 src/main/java/com/ssf/mysqloracletest/task/UnitInfoTask.java diff --git a/src/main/java/com/ssf/mysqloracletest/domain/MetaActualUnitInfo.java b/src/main/java/com/ssf/mysqloracletest/domain/MetaActualUnitInfo.java new file mode 100644 index 0000000..f75818b --- /dev/null +++ b/src/main/java/com/ssf/mysqloracletest/domain/MetaActualUnitInfo.java @@ -0,0 +1,132 @@ +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.math.BigDecimal; +import java.util.Date; +import lombok.Data; + +/** + * 实有单位信息表 + * @TableName meta_actual_unit_info + */ +@TableName(value ="meta_actual_unit_info") +@Data +public class MetaActualUnitInfo implements Serializable { + /** + * 主键 + */ + @TableId(type = IdType.AUTO) + private Long id; + + /** + * 单位ID + */ + private String unitId; + + /** + * 单位名称 + */ + private String uintName; + + /** + * 单位地址 + */ + private String uintAddress; + + /** + * 联系电话 + */ + private String phone; + + /** + * 单位状态 + */ + private Integer unitState; + + /** + * 单位类型名称 + */ + private String unitTypeName; + + /** + * 派出所代码 + */ + private String policeStationCode; + + /** + * 派出所名称 + */ + private String policeStationName; + + /** + * 警务区编码 + */ + private String policeDistrictCode; + + /** + * 警务区名称 + */ + private String policeDistrictName; + + /** + * 经度 + */ + private BigDecimal longitude; + + /** + * 纬度 + */ + private BigDecimal latitude; + + /** + * 企业法定代表人 + */ + private String legalPerson; + + /** + * 法定代表人身份证 + */ + private String legalPersonIdCard; + + /** + * 元数据创建时间 + */ + 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/mapper/MetaActualUnitInfoMapper.java b/src/main/java/com/ssf/mysqloracletest/mapper/MetaActualUnitInfoMapper.java new file mode 100644 index 0000000..f8191d7 --- /dev/null +++ b/src/main/java/com/ssf/mysqloracletest/mapper/MetaActualUnitInfoMapper.java @@ -0,0 +1,18 @@ +package com.ssf.mysqloracletest.mapper; + +import com.ssf.mysqloracletest.domain.MetaActualUnitInfo; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** +* @author 10503 +* @description 针对表【meta_actual_unit_info(实有单位信息表)】的数据库操作Mapper +* @createDate 2023-12-01 09:50:00 +* @Entity com.ssf.mysqloracletest.domain.MetaActualUnitInfo +*/ +public interface MetaActualUnitInfoMapper extends BaseMapper { + +} + + + + diff --git a/src/main/java/com/ssf/mysqloracletest/service/MetaActualUnitInfoService.java b/src/main/java/com/ssf/mysqloracletest/service/MetaActualUnitInfoService.java new file mode 100644 index 0000000..e4736f8 --- /dev/null +++ b/src/main/java/com/ssf/mysqloracletest/service/MetaActualUnitInfoService.java @@ -0,0 +1,15 @@ +package com.ssf.mysqloracletest.service; + +import com.ssf.mysqloracletest.domain.MetaActualUnitInfo; +import com.baomidou.mybatisplus.extension.service.IService; +import org.springframework.stereotype.Service; + +/** +* @author 10503 +* @description 针对表【meta_actual_unit_info(实有单位信息表)】的数据库操作Service +* @createDate 2023-12-01 09:50:00 +*/ +@Service +public interface MetaActualUnitInfoService extends IService { + +} diff --git a/src/main/java/com/ssf/mysqloracletest/service/impl/MetaActualUnitInfoServiceImpl.java b/src/main/java/com/ssf/mysqloracletest/service/impl/MetaActualUnitInfoServiceImpl.java new file mode 100644 index 0000000..e7a4cfb --- /dev/null +++ b/src/main/java/com/ssf/mysqloracletest/service/impl/MetaActualUnitInfoServiceImpl.java @@ -0,0 +1,25 @@ +package com.ssf.mysqloracletest.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.ssf.mysqloracletest.domain.MetaActualUnitInfo; +import com.ssf.mysqloracletest.mapper.MetaActualUnitInfoMapper; +import com.ssf.mysqloracletest.service.MetaActualUnitInfoService; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; + + +/** + * @author 10503 + * @description 针对表【meta_actual_unit_info(实有单位信息表)】的数据库操作Service实现 + * @createDate 2023-12-01 09:50:00 + */ +@Service +@RequiredArgsConstructor +public class MetaActualUnitInfoServiceImpl extends ServiceImpl implements MetaActualUnitInfoService { + +} + + + + + diff --git a/src/main/java/com/ssf/mysqloracletest/task/UnitInfoTask.java b/src/main/java/com/ssf/mysqloracletest/task/UnitInfoTask.java new file mode 100644 index 0000000..2967084 --- /dev/null +++ b/src/main/java/com/ssf/mysqloracletest/task/UnitInfoTask.java @@ -0,0 +1,157 @@ +package com.ssf.mysqloracletest.task; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.ssf.mysqloracletest.domain.MetaActualUnitInfo; +import com.ssf.mysqloracletest.domain.VSySydwmMysql; +import com.ssf.mysqloracletest.domain.VSySydzMysql; +import com.ssf.mysqloracletest.domain.VSySydzOracle; +import com.ssf.mysqloracletest.mapper.MetaActualUnitInfoMapper; +import com.ssf.mysqloracletest.mapper.VSySydwMysqlMapper; +import com.ssf.mysqloracletest.service.MetaActualUnitInfoService; +import com.ssf.mysqloracletest.service.VSySydwMysqlService; +import com.ssf.mysqloracletest.service.VSySydzMysqlService; +import com.ssf.mysqloracletest.service.VSySydzOracleService; +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.math.BigDecimal; +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 UnitInfoTask { + + private static final Logger logger = LoggerFactory.getLogger(UnitInfoTask.class); + + @Resource + private VSySydwMysqlService vSySydwMysqlService; + + @Resource + private MetaActualUnitInfoService metaActualUnitInfoService; + + final int oncesCounts = NumKit.checkInt(ConfigParam.oncesCounts) == 0 ? 10000 : NumKit.checkInt(ConfigParam.oncesCounts); + + private boolean NsydwTag = false; + + /** + * 连云港 对接海康平台获取人员基础数据 + * // + */ + @Scheduled(initialDelay = 100, fixedDelay = 3000) + public void transNsydw() { + + if (NsydwTag) { + return; + } + + if (!"true".equals(ConfigParam.NewNsydwSwitch)) { + return; + } + + + try { + int countNsydw = vSySydwMysqlService.count(); + logger.info("countNsydw:" + countNsydw); + + if (countNsydw > 0) { + + NsydwTag = true; + + int count = countNsydw / oncesCounts; + CountDownLatch latch = new CountDownLatch(count); + ExecutorService NsydwPool = Executors.newFixedThreadPool(50); + + for (int i = 0; i <= count; i++) { + Map NsydwMap = new HashMap(); + NsydwMap.put("rowStart", i * oncesCounts); + NsydwMap.put("rowEnd", (i + 1) * oncesCounts); + NsydwPool.submit(() -> { + try { + List Nsydws = vSySydwMysqlService.lambdaQuery().list(); + for (VSySydwmMysql Nsydw : Nsydws) { + MetaActualUnitInfo unitInfo = new MetaActualUnitInfo(); + int unit = Integer.parseInt(Nsydw.getDWZT()); + BigDecimal XDecimal = new BigDecimal(Nsydw.getX()); + BigDecimal YDecimal = new BigDecimal(Nsydw.getY()); + //设置目标字段的值 + //ID(id)----->unit_id(单位ID) + unitInfo.setUnitId(Nsydw.getID()); + //DWMC(单位名称)----->unit_name(单位名称) + unitInfo.setUintName(Nsydw.getDWMC()); + //DZ(地址)----->unit_address(单位地址) + unitInfo.setUintAddress(Nsydw.getDZ()); + //LXDH(联系电话)----->phone(联系电话) + unitInfo.setPhone(Nsydw.getLXDH()); + //PCSBM(派出所编码)----->police_station_code(派出所代码) + unitInfo.setPoliceStationCode(Nsydw.getPCSBM()); + //PCSMC(派出所名称)----->police_station_name(派出所名称) + unitInfo.setPoliceStationName(Nsydw.getPCSMC()); + //JWQBM(警务区编码)----->police_district_code(警务区编码) + unitInfo.setPoliceDistrictCode(Nsydw.getJWQBM()); + //JWQMC(警务区名称)----->police_district_code(警务区名称) + unitInfo.setPoliceDistrictCode(Nsydw.getDWMC()); + //DWZT(单位状态 1有效)----->unit_state(单位状态 1有效) + unitInfo.setUnitState(unit); + //X(经度)----->longitude(经度) + unitInfo.setLongitude(XDecimal); + //Y(纬度)----->latitude(纬度) + unitInfo.setLatitude(YDecimal); + //DWLXMC(单位类型名称)----->unit_type_name(单位类型名称) + unitInfo.setUnitTypeName(Nsydw.getDWLXMC()); + //FRZJHM(法人证件号码)----->legal_person_id_card + unitInfo.setLegalPersonIdCard(Nsydw.getFRZJHM()); + //FRXM(法人姓名)----->legal_person(企业法定代表人) + unitInfo.setLegalPerson(Nsydw.getFRXM()); + //YSBZK_RKSJ(入库时间)----->meta_create_time(元数据创建时间) + unitInfo.setMetaCreateTime(Nsydw.getYSBZK_RKSJ()); + //YSBZK_GXSJ(更新时间)----->meta_update_time(元数据更新时间) + unitInfo.setMetaUpdateTime(Nsydw.getYSBZK_GXSJ()); + //确定一个数据是否唯一 + MetaActualUnitInfo one = metaActualUnitInfoService.lambdaQuery().eq(MetaActualUnitInfo::getUnitId,Nsydw.getID()).one(); + if (one == null) { + metaActualUnitInfoService.save(unitInfo); + logger.info("Nsydw-" + Nsydw.getID() + ":插入成功"); + } else { + metaActualUnitInfoService.update(new QueryWrapper<>(unitInfo)); + logger.info("Nsydw-" + Nsydw.getID() + ":更新成功"); + } + } + } catch (Exception e) { + logger.info("Nsydws:" + StringKit.getTrace(e)); + } + latch.countDown(); + }); + logger.info("NsydwMap数据总量:" + countNsydw + "," + "当前处理下标:" + NsydwMap.get("rowStart") + "/" + NsydwMap.get("rowEnd")); + } + + try { + // Wait for all threads to complete + latch.await(); + } catch (InterruptedException e) { + e.printStackTrace(); + } + // 关闭线程池 + NsydwPool.shutdown(); + } + + } catch (Exception e) { + logger.info(StringKit.getTrace(e)); + } + } + + +}