diff --git a/config/application.properties b/config/application.properties index d449ab5..f83ed4f 100644 --- a/config/application.properties +++ b/config/application.properties @@ -21,7 +21,8 @@ metaActualUnitUserInfoSwitch=false metaActualUserInfoSwitch=false actualTimecjxxSwitch=false actualTimejjxxSwitch=false -RentalHouseSwitch=true +RentalHouseSwitch=false +metaRealEstateInfoSwitch=true diff --git a/src/main/java/com/ssf/mysqloracletest/domain/MetaRealEstateInfo.java b/src/main/java/com/ssf/mysqloracletest/domain/MetaRealEstateInfo.java new file mode 100644 index 0000000..f6f1a93 --- /dev/null +++ b/src/main/java/com/ssf/mysqloracletest/domain/MetaRealEstateInfo.java @@ -0,0 +1,56 @@ +package com.ssf.mysqloracletest.domain; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 实有房屋信息表(MetaRealEstateInfo)Domain + * + * @author makejava + * @since 2023-12-05 09:24:09 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@TableName(value = "meta_real_estate_info") +public class MetaRealEstateInfo { + + /** + * 主键 + */ + @TableId(value = "id", type = IdType.AUTO) + private Long id; + + /** + * 房屋ID + */ + private String homeId; + + /** + * 派出所代码 + */ + private String policeStationCode; + + /** + * 警务区编码 + */ + private String policeDistrictCode; + + /** + * 实有房屋地址 + */ + private String realEstateAddress; + + /** + * 经度 + */ + private Double longitude; + + /** + * 纬度 + */ + private Double latitude; + +} diff --git a/src/main/java/com/ssf/mysqloracletest/domain/VJwtSyfw.java b/src/main/java/com/ssf/mysqloracletest/domain/VJwtSyfw.java new file mode 100644 index 0000000..01f68ff --- /dev/null +++ b/src/main/java/com/ssf/mysqloracletest/domain/VJwtSyfw.java @@ -0,0 +1,30 @@ +package com.ssf.mysqloracletest.domain; + +import lombok.Data; + +/** + * 实有房屋对象 v_jwt_syfw + * + * @author ruoyi + * @date 2023-12-04 + */ +@Data +public class VJwtSyfw { + + private Long id; + + private String pcsdm; + + private String jwqdm; + + private String mc; + + private String x; + + private String y; + + private String oldid; + + private String status; + +} diff --git a/src/main/java/com/ssf/mysqloracletest/mapper/MetaRealEstateInfoMapper.java b/src/main/java/com/ssf/mysqloracletest/mapper/MetaRealEstateInfoMapper.java new file mode 100644 index 0000000..dac757b --- /dev/null +++ b/src/main/java/com/ssf/mysqloracletest/mapper/MetaRealEstateInfoMapper.java @@ -0,0 +1,16 @@ +package com.ssf.mysqloracletest.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.ssf.mysqloracletest.domain.MetaRealEstateInfo; +import org.apache.ibatis.annotations.Mapper; + +/** + * 实有房屋信息表(MetaRealEstateInfo)Mapper + * + * @author makejava + * @since 2023-12-05 09:24:09 + */ +@Mapper +public interface MetaRealEstateInfoMapper extends BaseMapper { + +} diff --git a/src/main/java/com/ssf/mysqloracletest/mapper/VJwtSyfwMapper.java b/src/main/java/com/ssf/mysqloracletest/mapper/VJwtSyfwMapper.java new file mode 100644 index 0000000..ad77513 --- /dev/null +++ b/src/main/java/com/ssf/mysqloracletest/mapper/VJwtSyfwMapper.java @@ -0,0 +1,64 @@ +package com.ssf.mysqloracletest.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.ssf.mysqloracletest.domain.VJwtSyfw; + +import java.util.List; + +/** + * 【请填写功能名称】Mapper接口 + * + * @author ruoyi + * @date 2023-12-04 + */ +public interface VJwtSyfwMapper extends BaseMapper { + /** + * 查询【请填写功能名称】 + * + * @param id 【请填写功能名称】主键 + * @return 【请填写功能名称】 + */ + public VJwtSyfw selectVJwtSyfwById(Long id); + + /** + * 查询【请填写功能名称】列表 + * + * @param vJwtSyfw 【请填写功能名称】 + * @return 【请填写功能名称】集合 + */ + public List selectVJwtSyfwList(VJwtSyfw vJwtSyfw); + + /** + * 新增【请填写功能名称】 + * + * @param vJwtSyfw 【请填写功能名称】 + * @return 结果 + */ + public int insertVJwtSyfw(VJwtSyfw vJwtSyfw); + + /** + * 修改【请填写功能名称】 + * + * @param vJwtSyfw 【请填写功能名称】 + * @return 结果 + */ + public int updateVJwtSyfw(VJwtSyfw vJwtSyfw); + + public int updateVJwtSyfwByMc(VJwtSyfw vJwtSyfw); + + /** + * 删除【请填写功能名称】 + * + * @param id 【请填写功能名称】主键 + * @return 结果 + */ + public int deleteVJwtSyfwById(Long id); + + /** + * 批量删除【请填写功能名称】 + * + * @param ids 需要删除的数据主键集合 + * @return 结果 + */ + public int deleteVJwtSyfwByIds(Long[] ids); +} diff --git a/src/main/java/com/ssf/mysqloracletest/service/JwtSyfwService.java b/src/main/java/com/ssf/mysqloracletest/service/JwtSyfwService.java new file mode 100644 index 0000000..a336b07 --- /dev/null +++ b/src/main/java/com/ssf/mysqloracletest/service/JwtSyfwService.java @@ -0,0 +1,69 @@ +package com.ssf.mysqloracletest.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.ssf.mysqloracletest.domain.VJwtSyfw; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 【请填写功能名称】Service接口 + * + * @author ruoyi + * @date 2023-12-04 + */ +@Service +public interface JwtSyfwService extends IService { + /** + * 查询【请填写功能名称】 + * + * @param id 【请填写功能名称】主键 + * @return 【请填写功能名称】 + */ + public VJwtSyfw selectVJwtSyfwById(Long id); + + /** + * 查询【请填写功能名称】列表 + * + * @param vJwtSyfw 【请填写功能名称】 + * @return 【请填写功能名称】集合 + */ + public List selectVJwtSyfwList(VJwtSyfw vJwtSyfw); + + /** + * 新增【请填写功能名称】 + * + * @param vJwtSyfw 【请填写功能名称】 + * @return 结果 + */ + public int insertVJwtSyfw(VJwtSyfw vJwtSyfw); + + /** + * 修改【请填写功能名称】 + * + * @param vJwtSyfw 【请填写功能名称】 + * @return 结果 + */ + public int updateVJwtSyfw(VJwtSyfw vJwtSyfw); + + public int updateVJwtSyfwByMc(VJwtSyfw vJwtSyfw); + + /** + * 批量删除【请填写功能名称】 + * + * @param ids 需要删除的【请填写功能名称】主键集合 + * @return 结果 + */ + public int deleteVJwtSyfwByIds(Long[] ids); + + /** + * 删除【请填写功能名称】信息 + * + * @param id 【请填写功能名称】主键 + * @return 结果 + */ + public int deleteVJwtSyfwById(Long id); + + + public boolean saveOrUpdate(VJwtSyfw bean); +} diff --git a/src/main/java/com/ssf/mysqloracletest/service/MetaRealEstateInfoService.java b/src/main/java/com/ssf/mysqloracletest/service/MetaRealEstateInfoService.java new file mode 100644 index 0000000..5e4cd1c --- /dev/null +++ b/src/main/java/com/ssf/mysqloracletest/service/MetaRealEstateInfoService.java @@ -0,0 +1,23 @@ +package com.ssf.mysqloracletest.service; + + +import com.baomidou.mybatisplus.extension.service.IService; +import com.ssf.mysqloracletest.domain.MetaRealEstateInfo; + +/** + * 实有房屋信息表(MetaRealEstateInfo)Service + * + * @author makejava + * @since 2023-12-05 09:24:09 + */ +public interface MetaRealEstateInfoService extends IService { + + /** + * 新增或者更新实有房屋信息表 + * + * @param metaRealEstateInfo 实有房屋信息表对象 + * @return 结果 + */ + boolean insertOrUpdate(MetaRealEstateInfo metaRealEstateInfo); + +} diff --git a/src/main/java/com/ssf/mysqloracletest/service/impl/MetaRealEstateInfoServiceImpl.java b/src/main/java/com/ssf/mysqloracletest/service/impl/MetaRealEstateInfoServiceImpl.java new file mode 100644 index 0000000..084198d --- /dev/null +++ b/src/main/java/com/ssf/mysqloracletest/service/impl/MetaRealEstateInfoServiceImpl.java @@ -0,0 +1,24 @@ +package com.ssf.mysqloracletest.service.impl; + + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.ssf.mysqloracletest.domain.MetaRealEstateInfo; +import com.ssf.mysqloracletest.mapper.MetaRealEstateInfoMapper; +import com.ssf.mysqloracletest.service.MetaRealEstateInfoService; +import org.springframework.stereotype.Service; + +/** + * 实有房屋信息表(MetaRealEstateInfo)ServiceImpl + * + * @author makejava + * @since 2023-12-05 09:24:09 + */ +@Service +public class MetaRealEstateInfoServiceImpl extends ServiceImpl implements MetaRealEstateInfoService { + + @Override + public boolean insertOrUpdate(MetaRealEstateInfo metaRealEstateInfo) { + return false; + } + +} diff --git a/src/main/java/com/ssf/mysqloracletest/service/impl/VJwtSyfwServiceImpl.java b/src/main/java/com/ssf/mysqloracletest/service/impl/VJwtSyfwServiceImpl.java new file mode 100644 index 0000000..edb8f21 --- /dev/null +++ b/src/main/java/com/ssf/mysqloracletest/service/impl/VJwtSyfwServiceImpl.java @@ -0,0 +1,117 @@ +package com.ssf.mysqloracletest.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.ssf.mysqloracletest.domain.VJwtSyfw; +import com.ssf.mysqloracletest.mapper.VJwtSyfwMapper; +import com.ssf.mysqloracletest.service.JwtSyfwService; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 【请填写功能名称】Service业务层处理 + * + * @author ruoyi + * @date 2023-12-04 + */ +@Service +@RequiredArgsConstructor +public class VJwtSyfwServiceImpl extends ServiceImpl + implements JwtSyfwService { + + + private final VJwtSyfwMapper vJwtSyfwMapper; + + + /** + * 查询【请填写功能名称】 + * + * @param id 【请填写功能名称】主键 + * @return 【请填写功能名称】 + */ + @Override + public VJwtSyfw selectVJwtSyfwById(Long id) { + return vJwtSyfwMapper.selectVJwtSyfwById(id); + } + + /** + * 查询【请填写功能名称】列表 + * + * @param vJwtSyfw 【请填写功能名称】 + * @return 【请填写功能名称】 + */ + @Override + public List selectVJwtSyfwList(VJwtSyfw vJwtSyfw) { + return vJwtSyfwMapper.selectVJwtSyfwList(vJwtSyfw); + } + + /** + * 新增【请填写功能名称】 + * + * @param vJwtSyfw 【请填写功能名称】 + * @return 结果 + */ + @Override + public int insertVJwtSyfw(VJwtSyfw vJwtSyfw) { + return vJwtSyfwMapper.insertVJwtSyfw(vJwtSyfw); + } + + /** + * 修改【请填写功能名称】 + * + * @param vJwtSyfw 【请填写功能名称】 + * @return 结果 + */ + @Override + public int updateVJwtSyfw(VJwtSyfw vJwtSyfw) { + return vJwtSyfwMapper.updateVJwtSyfw(vJwtSyfw); + } + + + @Override + public int updateVJwtSyfwByMc(VJwtSyfw vJwtSyfw) { + return vJwtSyfwMapper.updateVJwtSyfwByMc(vJwtSyfw); + } + + /** + * 批量删除【请填写功能名称】 + * + * @param ids 需要删除的【请填写功能名称】主键 + * @return 结果 + */ + @Override + public int deleteVJwtSyfwByIds(Long[] ids) { + return vJwtSyfwMapper.deleteVJwtSyfwByIds(ids); + } + + /** + * 删除【请填写功能名称】信息 + * + * @param id 【请填写功能名称】主键 + * @return 结果 + */ + @Override + public int deleteVJwtSyfwById(Long id) { + return vJwtSyfwMapper.deleteVJwtSyfwById(id); + } + + + @Override + public boolean saveOrUpdate(VJwtSyfw bean) { + VJwtSyfw syfwPara = new VJwtSyfw(); + syfwPara.setMc(bean.getMc()); + List syfws = selectVJwtSyfwList(syfwPara); + if (syfws != null && syfws.size() > 0) { + //根据地址更新数据 + updateVJwtSyfwByMc(bean); + } else { + //插入数据 + insertVJwtSyfw(bean); + } + + return false; + } + + +} diff --git a/src/main/java/com/ssf/mysqloracletest/task/MetaRealEstateInfoTask.java b/src/main/java/com/ssf/mysqloracletest/task/MetaRealEstateInfoTask.java new file mode 100644 index 0000000..0db9ca7 --- /dev/null +++ b/src/main/java/com/ssf/mysqloracletest/task/MetaRealEstateInfoTask.java @@ -0,0 +1,107 @@ +package com.ssf.mysqloracletest.task; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.ssf.mysqloracletest.domain.MetaRealEstateInfo; +import com.ssf.mysqloracletest.domain.VJwtSyfw; +import com.ssf.mysqloracletest.service.JwtSyfwService; +import com.ssf.mysqloracletest.service.MetaRealEstateInfoService; +import com.ssf.mysqloracletest.utils.ConfigParam; +import com.ssf.mysqloracletest.utils.NumKit; +import com.ssf.mysqloracletest.utils.StringKit; +import lombok.RequiredArgsConstructor; +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 java.util.List; +import java.util.concurrent.CountDownLatch; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; + +/** + * 用户数据接入 + */ +@Component +@RequiredArgsConstructor +public class MetaRealEstateInfoTask { + + private static final Logger logger = LoggerFactory.getLogger(MetaRealEstateInfoTask.class); + + private final MetaRealEstateInfoService estateInfoService; + private final JwtSyfwService jwySyfwService; + + + /** + * 清洗实有房屋 + */ + @Scheduled(initialDelay = 100, fixedDelay = 3000) + public void transMetaRealEstateInfo() { + + if (!"true".equals(ConfigParam.metaRealEstateInfoSwitch)) { + return; + } + + try { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.isNull("status"); + Page page = new Page<>(1, 1000); + List resultList = jwySyfwService.page(page, queryWrapper).getRecords(); + + CountDownLatch latch = new CountDownLatch(resultList.size()); + ExecutorService jwtSyfwPool = Executors.newFixedThreadPool(50); + + for (VJwtSyfw bean : resultList) { + jwtSyfwPool.submit(() -> { + cleanJwtSyfw(bean); + latch.countDown(); + }); + } + + + try { + // Wait for all threads to complete + latch.await(); + } catch (InterruptedException e) { + e.printStackTrace(); + } + // 关闭线程池 + jwtSyfwPool.shutdown(); + } catch (Exception e) { + logger.info(StringKit.getTrace(e)); + } + + + + } + + private void cleanJwtSyfw(VJwtSyfw bean) { + VJwtSyfw jwtSyfwCp = new VJwtSyfw(); + try { + + BeanUtils.copyProperties(bean, jwtSyfwCp); + MetaRealEstateInfo realEstateInfo = new MetaRealEstateInfo(); +// realEstateInfo.setId(); +// realEstateInfo.setHomeId(); + realEstateInfo.setPoliceStationCode(StringKit.toString(jwtSyfwCp.getPcsdm())); + realEstateInfo.setPoliceDistrictCode(StringKit.toString(jwtSyfwCp.getJwqdm())); + realEstateInfo.setRealEstateAddress(StringKit.toString(jwtSyfwCp.getMc())); + realEstateInfo.setLongitude(NumKit.checkDouble(jwtSyfwCp.getY())); + realEstateInfo.setLatitude(NumKit.checkDouble(jwtSyfwCp.getX())); + boolean b = estateInfoService.save(realEstateInfo); + + if (b) { + jwtSyfwCp.setStatus("1"); + jwySyfwService.updateVJwtSyfw(jwtSyfwCp); + } + } catch (Exception e) { + logger.info(StringKit.getTrace(e)); + jwtSyfwCp.setStatus("2"); + jwySyfwService.updateVJwtSyfw(jwtSyfwCp); + } + } + + +} diff --git a/src/main/java/com/ssf/mysqloracletest/task/VSySyfwTask.java b/src/main/java/com/ssf/mysqloracletest/task/VSySyfwTask.java index eeec256..9c68d61 100644 --- a/src/main/java/com/ssf/mysqloracletest/task/VSySyfwTask.java +++ b/src/main/java/com/ssf/mysqloracletest/task/VSySyfwTask.java @@ -1,11 +1,7 @@ package com.ssf.mysqloracletest.task; -import com.ssf.mysqloracletest.domain.VSySydzMysql; -import com.ssf.mysqloracletest.domain.VSySydzOracle; import com.ssf.mysqloracletest.domain.VSySyfwMysql; import com.ssf.mysqloracletest.domain.VSySyfwOracle; -import com.ssf.mysqloracletest.service.VSySydzMysqlService; -import com.ssf.mysqloracletest.service.VSySydzOracleService; import com.ssf.mysqloracletest.service.VSySyfwMysqlService; import com.ssf.mysqloracletest.service.VSySyfwOracleService; import com.ssf.mysqloracletest.utils.ConfigParam; @@ -26,7 +22,7 @@ import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; /** - * 用户数据接入 + * 用户数据接入 */ @Component public class VSySyfwTask { diff --git a/src/main/java/com/ssf/mysqloracletest/utils/ConfigParam.java b/src/main/java/com/ssf/mysqloracletest/utils/ConfigParam.java index 26374f0..3529764 100644 --- a/src/main/java/com/ssf/mysqloracletest/utils/ConfigParam.java +++ b/src/main/java/com/ssf/mysqloracletest/utils/ConfigParam.java @@ -39,5 +39,6 @@ public class ConfigParam { //rentalHouse数据清洗开关 public static String RentalHouseSwitch = StringKit.toString(PropertiesUtil.queryPropertiesByKey("RentalHouseSwitch")); + public static String metaRealEstateInfoSwitch = StringKit.toString(PropertiesUtil.queryPropertiesByKey("metaRealEstateInfoSwitch")); } diff --git a/src/main/resources/mapper/VJwtSyfwMapper.xml b/src/main/resources/mapper/VJwtSyfwMapper.xml new file mode 100644 index 0000000..5a3f236 --- /dev/null +++ b/src/main/resources/mapper/VJwtSyfwMapper.xml @@ -0,0 +1,97 @@ + + + + + + + + + + + + + + + + + select id, pcsdm, jwqdm, mc, x, y, oldid,status from v_jwt_syfw + + + + + + + + insert into v_jwt_syfw + + pcsdm, + jwqdm, + mc, + x, + y, + oldid, + status, + + + #{pcsdm}, + #{jwqdm}, + #{mc}, + #{x}, + #{y}, + #{oldid}, + #{status}, + + + + + update v_jwt_syfw + + pcsdm = #{pcsdm}, + jwqdm = #{jwqdm}, + mc = #{mc}, + x = #{x}, + y = #{y}, + oldid = #{oldid}, + status = #{status}, + + where id = #{id} + + + + update v_jwt_syfw + + pcsdm = #{pcsdm}, + jwqdm = #{jwqdm}, + x = #{x}, + y = #{y}, + oldid = #{oldid}, + + where mc = #{mc} + + + + delete from v_jwt_syfw where id = #{id} + + + + delete from v_jwt_syfw where id in + + #{id} + + + \ No newline at end of file