From 067ddcefe78a6000a59a0ec9fed3f22ba18fc33c Mon Sep 17 00:00:00 2001 From: hanrenchun Date: Wed, 6 Dec 2023 17:44:41 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A4=84=E8=AD=A6=E4=B8=8E=E4=BB=8E=E4=B8=9A?= =?UTF-8?q?=E4=BA=BA=E5=91=98=E7=9A=84=E6=95=B0=E6=8D=AE=E6=B8=85=E6=B4=97?= =?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 | 6 +- .../domain/JcjCjxxViewMysql.java | 2 + .../domain/ZhxfZdrygkRyjbxxViewMysql.java | 2 +- .../task/MetaActualUnitUserInfoTask.java | 137 +++++++------- .../task/MetaHandleAlarmTask.java | 171 ++++++++++-------- .../mapper/JcjCjxxViewMapperMysql.xml | 4 +- .../mapper/MetaActualUserInfoMapper.xml | 18 +- 7 files changed, 184 insertions(+), 156 deletions(-) diff --git a/config/application.properties b/config/application.properties index dd42544..9964450 100644 --- a/config/application.properties +++ b/config/application.properties @@ -17,9 +17,9 @@ JjxxSwitch=false NewNsydwSwitch=false metaImpUserSwitch=false NewNalarminfoSwitch=false -metaHandleAlarmSwitch=false -metaActualUnitUserInfoSwitch=true -metaActualUserInfoSwitch=true +metaHandleAlarmSwitch=true +metaActualUnitUserInfoSwitch=false +metaActualUserInfoSwitch=false actualTimecjxxSwitch=false actualTimejjxxSwitch=false RentalHouseSwitch=false diff --git a/src/main/java/com/ssf/mysqloracletest/domain/JcjCjxxViewMysql.java b/src/main/java/com/ssf/mysqloracletest/domain/JcjCjxxViewMysql.java index 8838491..f6b6864 100644 --- a/src/main/java/com/ssf/mysqloracletest/domain/JcjCjxxViewMysql.java +++ b/src/main/java/com/ssf/mysqloracletest/domain/JcjCjxxViewMysql.java @@ -223,4 +223,6 @@ public class JcjCjxxViewMysql implements Serializable { private String JQSXMC; @TableField(value = "RYWKSJ") private String RYWKSJ; + + private String status; } \ No newline at end of file diff --git a/src/main/java/com/ssf/mysqloracletest/domain/ZhxfZdrygkRyjbxxViewMysql.java b/src/main/java/com/ssf/mysqloracletest/domain/ZhxfZdrygkRyjbxxViewMysql.java index c05ec58..b806ab3 100644 --- a/src/main/java/com/ssf/mysqloracletest/domain/ZhxfZdrygkRyjbxxViewMysql.java +++ b/src/main/java/com/ssf/mysqloracletest/domain/ZhxfZdrygkRyjbxxViewMysql.java @@ -123,6 +123,6 @@ public class ZhxfZdrygkRyjbxxViewMysql implements Serializable { @TableField(value = "status") private String status; - private String status; + } \ No newline at end of file diff --git a/src/main/java/com/ssf/mysqloracletest/task/MetaActualUnitUserInfoTask.java b/src/main/java/com/ssf/mysqloracletest/task/MetaActualUnitUserInfoTask.java index 04239ec..e9fe224 100644 --- a/src/main/java/com/ssf/mysqloracletest/task/MetaActualUnitUserInfoTask.java +++ b/src/main/java/com/ssf/mysqloracletest/task/MetaActualUnitUserInfoTask.java @@ -1,15 +1,21 @@ package com.ssf.mysqloracletest.task; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.ssf.mysqloracletest.domain.JcjCjxxViewMysql; import com.ssf.mysqloracletest.domain.MetaActualUnitUserInfo; +import com.ssf.mysqloracletest.domain.MetaHandleAlarmInfo; import com.ssf.mysqloracletest.domain.VSySydwCyryMysql; import com.ssf.mysqloracletest.service.MetaActualUnitUserInfoService; 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 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; @@ -17,102 +23,93 @@ 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 +@RequiredArgsConstructor public class MetaActualUnitUserInfoTask { private static final Logger logger = LoggerFactory.getLogger(MetaActualUnitUserInfoTask.class); - @Resource - private VSySydwCyryMysqlService vSySydwCyryMysqlService; + private final VSySydwCyryMysqlService vSySydwCyryMysqlService; - @Resource - private MetaActualUnitUserInfoService metaActualUnitUserInfoService; + private final 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; - for (int i = 0; i <= count; i++) { - Map cyryMap = new HashMap(); - cyryMap.put("rowStart", i * oncesCounts); - cyryMap.put("rowEnd", (i + 1) * oncesCounts); - 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()); - } - logger.info("cyryMap数据总量:" + countcyry + "," + "当前处理下标:" + cyryMap.get("rowStart") + "/" + cyryMap.get("rowEnd")); - } + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.isNull("status"); + Page page = new Page<>(1, 1000); + List resultList = vSySydwCyryMysqlService.page(page, queryWrapper).getRecords(); + CountDownLatch latch = new CountDownLatch(resultList.size()); + ExecutorService cyryPool = Executors.newFixedThreadPool(5); + + + for (VSySydwCyryMysql bean : resultList) { + cyryPool.submit(() -> { + cleanCyry(bean); + latch.countDown(); + }); } + + } catch ( + Exception e) { + logger.info(StringKit.getTrace(e)); + } + } + + private void cleanCyry(VSySydwCyryMysql bean) { + VSySydwCyryMysql cyry = new VSySydwCyryMysql(); + try { + BeanUtils.copyProperties(bean, cyry); + MetaActualUnitUserInfo metaActualUnitUserInfo = new MetaActualUnitUserInfo(); + VSySydwCyryMysql vSySydwCyryMysql = vSySydwCyryMysqlService.selectCyryById(cyry.getID()); + 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(vSySydwCyryMysql.getYSBZK_RKSJ()); + metaActualUnitUserInfo.setMetaUpdateTime(vSySydwCyryMysql.getYSBZK_GXSJ()); + //确定一个数据是否唯一 + boolean save = metaActualUnitUserInfoService.save(metaActualUnitUserInfo); + if (save){ + cyry.setStatus("1"); + vSySydwCyryMysqlService.updateCyryById(cyry); + } } catch (Exception e) { logger.info(StringKit.getTrace(e)); + cyry.setStatus("2"); + vSySydwCyryMysqlService.updateCyryById(cyry); } + } diff --git a/src/main/java/com/ssf/mysqloracletest/task/MetaHandleAlarmTask.java b/src/main/java/com/ssf/mysqloracletest/task/MetaHandleAlarmTask.java index 89a272a..267121e 100644 --- a/src/main/java/com/ssf/mysqloracletest/task/MetaHandleAlarmTask.java +++ b/src/main/java/com/ssf/mysqloracletest/task/MetaHandleAlarmTask.java @@ -1,16 +1,21 @@ package com.ssf.mysqloracletest.task; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ssf.mysqloracletest.domain.JcjCjxxViewMysql; import com.ssf.mysqloracletest.domain.MetaHandleAlarmInfo; +import com.ssf.mysqloracletest.domain.VJwtSyfw; import com.ssf.mysqloracletest.service.JcjCjxxViewMysqlService; import com.ssf.mysqloracletest.service.MetaHandleAlarmInfoService; import com.ssf.mysqloracletest.service.MetaImpUserInfoService; 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; @@ -21,35 +26,24 @@ import java.util.Map; import java.util.concurrent.CountDownLatch; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; +import java.util.regex.Matcher; +import java.util.regex.Pattern; /** - * 用户数据接入 + * 用户数据接入 */ @Component +@RequiredArgsConstructor public class MetaHandleAlarmTask { private static final Logger logger = LoggerFactory.getLogger(MetaHandleAlarmTask.class); - @Resource - private MetaHandleAlarmInfoService metaHandleAlarmInfoService; + private final MetaHandleAlarmInfoService metaHandleAlarmInfoService; + private final JcjCjxxViewMysqlService jcjCjxxViewMysqlService; - @Resource - private JcjCjxxViewMysqlService jcjCjxxViewMysqlService; - - final int oncesCounts = NumKit.checkInt(ConfigParam.oncesCounts) == 0 ? 1000 : NumKit.checkInt(ConfigParam.oncesCounts); - - private boolean cjxxTag = false; - - /** - * 连云港 对接海康平台获取人员基础数据 - * // - */ @Scheduled(initialDelay = 100, fixedDelay = 3000) public void transcjxx() { - if (cjxxTag) { - return; - } if (!"true".equals(ConfigParam.metaHandleAlarmSwitch)) { return; @@ -57,68 +51,101 @@ public class MetaHandleAlarmTask { try { - int countcjxx = jcjCjxxViewMysqlService.count(); - logger.info("countcjxx:" + countcjxx); - - if (countcjxx > 0) { - - cjxxTag = true; - - int count = countcjxx / oncesCounts; - CountDownLatch latch = new CountDownLatch(count); - ExecutorService cjxxPool = Executors.newFixedThreadPool(20); - - for (int i = 0; i <= count; i++) { - Map cjxxMap = new HashMap(); - cjxxMap.put("rowStart", i * oncesCounts); - cjxxMap.put("rowEnd", (i + 1) * oncesCounts); - cjxxPool.submit(() -> { - try { - List list = jcjCjxxViewMysqlService.lambdaQuery().list(); - for (JcjCjxxViewMysql cjxx : list) { - MetaHandleAlarmInfo metaHandleAlarmInfo = new MetaHandleAlarmInfo(); - metaHandleAlarmInfo.setAlarmCode(cjxx.getJJBH()); - metaHandleAlarmInfo.setHandleAlarmUnit(cjxx.getCJDWMC()); - metaHandleAlarmInfo.setHandleAlarmTime(cjxx.getCJSJ()); - metaHandleAlarmInfo.setHandleAlarmContent(cjxx.getCLJGNR()); - metaHandleAlarmInfo.setHandleAlarmAddress(cjxx.getCJXXDD()); - metaHandleAlarmInfo.setHandleAlarmUser(cjxx.getCJRHZXS()); - metaHandleAlarmInfo.setHandleAlarmUserCode(cjxx.getCJR()); - metaHandleAlarmInfo.setHandleAlarmResult(cjxx.getCJJGMC()); - //确定一个数据是否唯一 - MetaHandleAlarmInfo one = metaHandleAlarmInfoService.lambdaQuery().eq(MetaHandleAlarmInfo::getAlarmCode, cjxx.getJJBH()).one(); - if (one == null) { - metaHandleAlarmInfoService.save(metaHandleAlarmInfo); - logger.info("cjxx-" + cjxx.getJJBH() + ":插入成功"); - } else { - UpdateWrapper metaHandleAlarmInfoUpdateWrapper = new UpdateWrapper<>(); - metaHandleAlarmInfoUpdateWrapper.eq("alarm_code", cjxx.getJJBH()); - metaHandleAlarmInfoService.update(metaHandleAlarmInfo,metaHandleAlarmInfoUpdateWrapper); - logger.info("cjxx-" + cjxx.getJJBH() + ":更新成功"); - } - } - } catch (Exception e) { - logger.info("cjxxs:" + e.getMessage()); - } - latch.countDown(); - }); - logger.info("cjxxMap数据总量:" + countcjxx + "," + "当前处理下标:" + cjxxMap.get("rowStart") + "/" + cjxxMap.get("rowEnd")); - } + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.isNull("status"); + Page page = new Page<>(1, 1000); + List resultList = jcjCjxxViewMysqlService.page(page, queryWrapper).getRecords(); + CountDownLatch latch = new CountDownLatch(resultList.size()); + ExecutorService cjxxPool = Executors.newFixedThreadPool(5); + + for (JcjCjxxViewMysql bean : resultList) { + cjxxPool.submit(() -> { + cleanCjxx(bean); + latch.countDown(); + }); + } - try { - // Wait for all threads to complete - latch.await(); - } catch (InterruptedException e) { - e.printStackTrace(); - } - // 关闭线程池 - cjxxPool.shutdown(); + + try { + // Wait for all threads to complete + latch.await(); + } catch (InterruptedException e) { + e.printStackTrace(); } + // 关闭线程池 + cjxxPool.shutdown(); } catch (Exception e) { logger.info(StringKit.getTrace(e)); } } + private void cleanCjxx(JcjCjxxViewMysql bean) { + JcjCjxxViewMysql cjxx = new JcjCjxxViewMysql(); + try { + BeanUtils.copyProperties(bean, cjxx); + MetaHandleAlarmInfo metaHandleAlarmInfo = new MetaHandleAlarmInfo(); + metaHandleAlarmInfo.setAlarmCode(cjxx.getJJBH()); + metaHandleAlarmInfo.setHandleAlarmUnit(cjxx.getCJDWMC()); + metaHandleAlarmInfo.setHandleAlarmTime(cjxx.getCJSJ()); + metaHandleAlarmInfo.setHandleAlarmContent(cjxx.getCLJGNR()); + metaHandleAlarmInfo.setHandleAlarmAddress(cjxx.getCJXXDD()); + if (!containsChinese(cjxx.getCJR())) { + metaHandleAlarmInfo.setHandleAlarmUser(cjxx.getCJRHZXS()); + metaHandleAlarmInfo.setHandleAlarmUserCode(cjxx.getCJR()); + }else { + String s = extractChinese(cjxx.getCJR()); + String s1 = extractNonChinese(cjxx.getCJR()); + String substring = s1.substring(0, s1.length() - 1); + if (cjxx.getCJRHZXS()!=null) { + metaHandleAlarmInfo.setHandleAlarmUser(cjxx.getCJRHZXS() +","+ s); + }else { + metaHandleAlarmInfo.setHandleAlarmUser(s); + } + metaHandleAlarmInfo.setHandleAlarmUserCode(substring); + } + metaHandleAlarmInfo.setHandleAlarmResult(cjxx.getCJJGMC()); + boolean save = metaHandleAlarmInfoService.save(metaHandleAlarmInfo); + if (save) { + cjxx.setStatus("1"); + jcjCjxxViewMysqlService.updateCjxxById(cjxx); + } + } catch (Exception e) { + logger.info(StringKit.getTrace(e)); + cjxx.setStatus("2"); + jcjCjxxViewMysqlService.updateCjxxById(cjxx); + } + + } + + private static boolean containsChinese(String str) { + Pattern pattern = Pattern.compile("[\u4e00-\u9fa5]"); + Matcher matcher = pattern.matcher(str); + return matcher.find(); + } + + // 提取字符串中的中文 + private static String extractChinese(String str) { + Pattern pattern = Pattern.compile("[\u4e00-\u9fa5]"); + Matcher matcher = pattern.matcher(str); + + StringBuilder chineseCharacters = new StringBuilder(); + while (matcher.find()) { + chineseCharacters.append(matcher.group()); + } + + return chineseCharacters.toString(); + } + + private static String extractNonChinese(String str) { + Pattern pattern = Pattern.compile("[^\u4e00-\u9fa5]"); + Matcher matcher = pattern.matcher(str); + StringBuilder nonChineseCharacters = new StringBuilder(); + while (matcher.find()) { + nonChineseCharacters.append(matcher.group()); + } + + return nonChineseCharacters.toString(); + } } diff --git a/src/main/resources/mapper/JcjCjxxViewMapperMysql.xml b/src/main/resources/mapper/JcjCjxxViewMapperMysql.xml index 880e7d7..2577a54 100644 --- a/src/main/resources/mapper/JcjCjxxViewMapperMysql.xml +++ b/src/main/resources/mapper/JcjCjxxViewMapperMysql.xml @@ -109,6 +109,7 @@ + @@ -441,8 +442,9 @@ WS_YXX=#{WS_YXX}, JQSXMC=#{JQSXMC}, RYWKSJ=#{RYWKSJ}, + status=#{status}, - where CJBH = #{CJBH} + where JJBH = #{JJBH} - + and user_pic = #{userPic} and user_name like concat('%', #{userName}, '%') and id_card = #{idCard} @@ -57,12 +57,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" and actual_user_type = #{actualUserType} - + - + insert into meta_actual_user_info @@ -86,7 +86,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" meta_create_time, meta_update_time, actual_user_type, - + #{userPic}, #{userName}, @@ -108,7 +108,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" #{metaCreateTime}, #{metaUpdateTime}, #{actualUserType}, - + @@ -143,7 +143,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - delete from meta_actual_user_info where id in + delete from meta_actual_user_info where id in #{id}