ids);
+}
diff --git a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/quartz/job/XzjcInfoShareJob.java b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/quartz/job/XzjcInfoShareJob.java
new file mode 100644
index 00000000..64257a78
--- /dev/null
+++ b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/quartz/job/XzjcInfoShareJob.java
@@ -0,0 +1,35 @@
+package com.zdxt.enforcementcode.quartz.job;
+
+import com.zdxt.enforcementcode.service.IXzjcInfoShareService;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Component;
+
+/**
+ * 共享库同步到提供库(局级)
+ * 行政检查信息共享同步定时任务
+ * 将 zfjd_tgk.SZSFJ_ZFJDM_XZJC_INFO 中 TBZT=0 的数据同步到 zfjd_gxk.SZ_SFJ_ZFJDM_XZJC_INFO
+ * 默认 cron: 0 30 2 * * ?(每天凌晨 2:30,晚于 2:00 的 tgk 写入任务)
+ *
+ * @author zdxt
+ */
+@Slf4j
+@Component
+@RequiredArgsConstructor
+public class XzjcInfoShareJob {
+
+ private final IXzjcInfoShareService xzjcInfoShareService;
+
+ /**
+ * 任务执行入口(public,供 JobInvokeUtil 通过反射调用)
+ */
+ public void execute() {
+ log.info("[XzjcInfoShareJob] 定时任务触发:行政检查信息共享同步(tgk->gxk)");
+ try {
+ xzjcInfoShareService.shareSync();
+ } catch (Exception e) {
+ log.error("[XzjcInfoShareJob] 行政检查信息共享同步失败", e);
+ throw e;
+ }
+ }
+}
diff --git a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/quartz/job/XzjcInfoSyncJob.java b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/quartz/job/XzjcInfoSyncJob.java
index 6ebe5974..16bcd790 100644
--- a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/quartz/job/XzjcInfoSyncJob.java
+++ b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/quartz/job/XzjcInfoSyncJob.java
@@ -6,6 +6,7 @@ import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
/**
+ * 业务数据同步到共享库(内部)
* 行政检查信息同步定时任务
* 每天将 enforcement_registration 增量数据同步到 zfjd_tgk 库的 SZSFJ_ZFJDM_XZJC_INFO(市司法局数据共享表)
* 默认 cron: 0 0 2 * * ?(每天凌晨 2 点)
diff --git a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/IXzjcInfoShareService.java b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/IXzjcInfoShareService.java
new file mode 100644
index 00000000..454f8f2a
--- /dev/null
+++ b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/IXzjcInfoShareService.java
@@ -0,0 +1,16 @@
+package com.zdxt.enforcementcode.service;
+
+/**
+ * 行政检查信息共享同步服务(zfjd_tgk -> zfjd_gxk)
+ *
+ * @author zdxt
+ */
+public interface IXzjcInfoShareService {
+
+ /**
+ * 执行一次共享同步:拉取 tgk 中 TBZT='0' 的通知行写入 gxk,成功后回写 TBZT='1'
+ *
+ * @return 实际同步条数
+ */
+ int shareSync();
+}
diff --git a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/impl/XzjcInfoShareServiceImpl.java b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/impl/XzjcInfoShareServiceImpl.java
new file mode 100644
index 00000000..28e8b06b
--- /dev/null
+++ b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/impl/XzjcInfoShareServiceImpl.java
@@ -0,0 +1,115 @@
+package com.zdxt.enforcementcode.service.impl;
+
+import com.zdxt.enforcementcode.domain.bo.datashare.XzjcInfoShareBo;
+import com.zdxt.enforcementcode.mapper.datashare.XzjcInfoShareGxkMapper;
+import com.zdxt.enforcementcode.mapper.datashare.XzjcInfoShareMapper;
+import com.zdxt.enforcementcode.service.IXzjcInfoShareService;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.redisson.api.RLock;
+import org.redisson.api.RedissonClient;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+import java.util.concurrent.TimeUnit;
+
+/**
+ * 行政检查信息共享同步服务实现
+ * 源表:zfjd_tgk.SZSFJ_ZFJDM_XZJC_INFO(TBZT='0');目标表:zfjd_gxk.SZ_SFJ_ZFJDM_XZJC_INFO
+ * 写入成功的行回写源表 TBZT='1';单行失败跳过不标记,下次任务重试
+ *
+ * @author zdxt
+ */
+@Slf4j
+@Service
+@RequiredArgsConstructor
+public class XzjcInfoShareServiceImpl implements IXzjcInfoShareService {
+
+ /** 分页读取大小(一页一批) */
+ private static final int PAGE_SIZE = 500;
+
+ /** 单次任务最大分页数 */
+ private static final int MAX_PAGES = 1000;
+
+ /** 共享同步分布式锁 key */
+ private static final String LOCK_KEY = "xzjc_info_share:lock";
+
+ private final XzjcInfoShareMapper xzjcInfoShareMapper;
+ private final XzjcInfoShareGxkMapper xzjcInfoShareGxkMapper;
+ private final RedissonClient redissonClient;
+
+ @Override
+ public int shareSync() {
+ RLock lock = redissonClient.getLock(LOCK_KEY);
+ boolean locked = false;
+ try {
+ locked = lock.tryLock(0, -1, TimeUnit.SECONDS);
+ if (!locked) {
+ log.warn("[XzjcInfoShare] 上一次共享同步尚未结束(锁被占用),本次触发跳过");
+ return 0;
+ }
+ return doShare();
+ } catch (InterruptedException e) {
+ Thread.currentThread().interrupt();
+ log.error("[XzjcInfoShare] 共享同步任务获取锁时被中断", e);
+ return 0;
+ } finally {
+ if (locked && lock.isHeldByCurrentThread()) {
+ lock.unlock();
+ }
+ }
+ }
+
+ private int doShare() {
+ int total = 0;
+ for (int page = 1; page <= MAX_PAGES; page++) {
+ List rows = xzjcInfoShareMapper.selectUnsyncedPage(PAGE_SIZE);
+ if (rows.isEmpty()) {
+ break;
+ }
+ // 达梦目标表已存在的业务ID -> U,不存在 -> I(YWID 唯一口径)
+ Set existing = new HashSet<>();
+ if (!rows.isEmpty()) {
+ List ywids = new ArrayList<>(rows.size());
+ for (XzjcInfoShareBo bo : rows) {
+ ywids.add(bo.getYwid());
+ }
+ List hit = xzjcInfoShareGxkMapper.selectExistingYwids(ywids);
+ if (hit != null) {
+ existing.addAll(hit);
+ }
+ }
+ // 逐行写入,仅成功行参与回写 TBZT,失败行下轮重试
+ List syncedIds = new ArrayList<>(rows.size());
+ for (XzjcInfoShareBo bo : rows) {
+ boolean isUpdate = existing.contains(bo.getYwid());
+ bo.setCdOperation(isUpdate ? "U" : "I");
+ try {
+ if (isUpdate) {
+ xzjcInfoShareGxkMapper.updateByYwid(bo);
+ } else {
+ xzjcInfoShareGxkMapper.insertOne(bo);
+ }
+ syncedIds.add(bo.getId());
+ } catch (Exception rowEx) {
+ log.error("[XzjcInfoShare] 脏数据跳过: id={}, ywid={}, cd_operation={}",
+ bo.getId(), bo.getYwid(), bo.getCdOperation(), rowEx);
+ }
+ }
+ if (!syncedIds.isEmpty()) {
+ xzjcInfoShareMapper.markSynced(syncedIds);
+ }
+ total += syncedIds.size();
+ log.info("[XzjcInfoShare] 第 {} 页完成, 本页成功 {}/{} 条", page, syncedIds.size(), rows.size());
+
+ if (rows.size() < PAGE_SIZE) {
+ break;
+ }
+ }
+ log.info("[XzjcInfoShare] 共享同步完成(zfjd_tgk -> zfjd_gxk): 共处理 {} 条", total);
+ return total;
+ }
+}
diff --git a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/impl/XzjcInfoSyncServiceImpl.java b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/impl/XzjcInfoSyncServiceImpl.java
index 1548d316..03927f7f 100644
--- a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/impl/XzjcInfoSyncServiceImpl.java
+++ b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/impl/XzjcInfoSyncServiceImpl.java
@@ -7,17 +7,22 @@ import com.zdxt.enforcementcode.mapper.XzjcInfoSyncTgkMapper;
import com.zdxt.enforcementcode.service.IXzjcInfoSyncService;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
+import org.redisson.api.RAtomicLong;
import org.redisson.api.RLock;
import org.redisson.api.RedissonClient;
import org.springframework.stereotype.Service;
import java.sql.Timestamp;
+import java.time.Duration;
import java.time.LocalDate;
import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.Date;
+import java.util.HashSet;
import java.util.List;
import java.util.Map;
+import java.util.Set;
import java.util.concurrent.TimeUnit;
/**
@@ -41,6 +46,9 @@ public class XzjcInfoSyncServiceImpl implements IXzjcInfoSyncService {
/** 同步分布式锁 key */
private static final String LOCK_KEY = "xzjc_info_sync:lock";
+ /** 批次号序号 Redis key 前缀(按数据日期分 key) */
+ private static final String BATCH_SEQ_KEY = "xzjc_info_sync:batch:seq:";
+
/** 源表读取(master) */
private final XzjcInfoSyncMapper xzjcInfoSyncMapper;
@@ -94,10 +102,13 @@ public class XzjcInfoSyncServiceImpl implements IXzjcInfoSyncService {
if (rows.isEmpty()) {
break;
}
-
+ // rows 整页为一批,页内所有行共享同一批次号
+ String batchNo = nextBatchNo();
List batch = new ArrayList<>(rows.size());
for (Map row : rows) {
- batch.add(toBo(row));
+ XzjcInfoSyncBo bo = toBo(row);
+ bo.setCdBatch(batchNo);
+ batch.add(bo);
}
upsertSafely(batch);
total += rows.size();
@@ -106,7 +117,8 @@ public class XzjcInfoSyncServiceImpl implements IXzjcInfoSyncService {
Map last = rows.get(rows.size() - 1);
cursorTime = toTimestamp(last.get("update_time"));
cursorId = str(last.get("id"));
- log.info("[XzjcInfoSync] 第 {} 页完成, 累计 {} 条, 游标=({}, {})", page, total, cursorTime, cursorId);
+ log.info("[XzjcInfoSync] 第 {} 页完成, 累计 {} 条, 批次={}, 游标=({}, {})",
+ page, total, batchNo, cursorTime, cursorId);
if (rows.size() < PAGE_SIZE) {
break;
@@ -124,27 +136,37 @@ public class XzjcInfoSyncServiceImpl implements IXzjcInfoSyncService {
}
/**
- * 页级批量 upsert;整批失败时降级为逐条写入,跳过脏数据行,避免单行异常导致游标卡死
+ * 页级写入(YWID 唯一口径):不存在则插入(CD_OPERATION='I'),存在则按 YWID 更新(CD_OPERATION='U');
+ * 已删除记录置 D 通知下游;更新时 TBZT 重置 '0' 通知推管方再次拉取;
+ * 单行异常跳过脏数据,避免游标卡死
*/
private void upsertSafely(List batch) {
-// try {
-// xzjcInfoSyncTgkMapper.upsertBatch(batch);
-// } catch (Exception e) {
-// log.error("[XzjcInfoSync] 批量写入失败,降级逐条写入排查脏数据, 批次大小={}", batch.size(), e);
-// for (XzjcInfoSyncBo bo : batch) {
-// try {
-// xzjcInfoSyncTgkMapper.upsertBatch(List.of(bo));
-// } catch (Exception rowEx) {
-// log.error("[XzjcInfoSync] 脏数据跳过: ywid={}", bo.getYwid(), rowEx);
-// }
-// }
-// }
-
+ Set existing = new HashSet<>();
+ if (!batch.isEmpty()) {
+ List ywids = new ArrayList<>(batch.size());
+ for (XzjcInfoSyncBo bo : batch) {
+ ywids.add(bo.getYwid());
+ }
+ List hit = xzjcInfoSyncTgkMapper.selectExistingYwids(ywids);
+ if (hit != null) {
+ existing.addAll(hit);
+ }
+ }
for (XzjcInfoSyncBo bo : batch) {
+ boolean exists = existing.contains(bo.getYwid());
+ if (bo.getSfsc() != null && bo.getSfsc() == 1) {
+ bo.setCdOperation("D");
+ } else {
+ bo.setCdOperation(exists ? "U" : "I");
+ }
try {
- xzjcInfoSyncTgkMapper.upsertBatch(List.of(bo));
+ if (exists) {
+ xzjcInfoSyncTgkMapper.updateByYwid(bo);
+ } else {
+ xzjcInfoSyncTgkMapper.insertNew(bo);
+ }
} catch (Exception rowEx) {
- log.error("[XzjcInfoSync] 脏数据跳过: ywid={}", bo.getYwid(), rowEx);
+ log.error("[XzjcInfoSync] 脏数据跳过: ywid={}, cd_operation={}", bo.getYwid(), bo.getCdOperation(), rowEx);
}
}
}
@@ -163,6 +185,8 @@ public class XzjcInfoSyncServiceImpl implements IXzjcInfoSyncService {
bo.setYwid(str(row.get("id")));
bo.setBjqymc(fit(row.get("enterprise_name"), 128));
bo.setBjqytyshxydm(fit(row.get("enterprise_number"), 32));
+ bo.setSsqybm(fit(row.get("ssqybm"), 64));
+ bo.setSsqymc(fit(row.get("ssqymc"), 64));
bo.setJcsx(fit(coalesce(row, "law_enforcement_item_text", "law_enforcement_item"), 512));
bo.setRqsj(toDate(row.get("enforcement_time")));
bo.setZfyj(fit(coalesce(row, "law_enforcement_basis_text", "law_enforcement_basis"), 512));
@@ -179,8 +203,10 @@ public class XzjcInfoSyncServiceImpl implements IXzjcInfoSyncService {
bo.setXzzfzh(fit(row.get("law_enforcer_id"), 64));
bo.setQtzfryxm(fit(row.get("law_enforcer_two"), 64));
bo.setQtxzzfzh(fit(row.get("law_enforcer_id_two"), 64));
+ bo.setZfdwid(fit(row.get("bureau_dept_id"), 64));
bo.setZfdwmc(fit(row.get("bureau_dept_name"), 64));
bo.setZfbmmc(fit(row.get("law_enforcement"), 64));
+ bo.setSfsc(toLong(row.get("is_delete")) != null && toLong(row.get("is_delete")) == 1 ? 1 : 0);
bo.setYwcjsj(toDate(row.get("create_time")));
bo.setYwxgsj(toDate(row.get("update_time")));
return bo;
@@ -217,6 +243,36 @@ public class XzjcInfoSyncServiceImpl implements IXzjcInfoSyncService {
}
}
+ /**
+ * 生成下一批次号:"数据日期+数据序号"(yyyyMMdd + 5位序号)
+ * 数据日期取当前系统时间所在日期
+ * 数据序号通过 Redis RAtomicLong 原子自增,当天从 00001 开始递增,天然支持多实例并发
+ * Redis 当天首次使用时,以目标表当天已用最大批次号兜底初始化,防止 Redis 数据丢失后重号
+ */
+ private String nextBatchNo() {
+ String day = LocalDate.now().format(DateTimeFormatter.BASIC_ISO_DATE);
+ RAtomicLong counter = redissonClient.getAtomicLong(BATCH_SEQ_KEY + day);
+ long seq = counter.incrementAndGet();
+ if (seq == 1) {
+ String maxBatch = xzjcInfoSyncTgkMapper.selectMaxBatch(day);
+ if (maxBatch != null && maxBatch.length() > 8) {
+ try {
+ int dbMax = Integer.parseInt(maxBatch.substring(8));
+ // CAS 失败说明并发下已有更新值,直接取当前值
+ seq = counter.compareAndSet(1, dbMax + 1) ? dbMax + 1 : counter.get();
+ } catch (NumberFormatException e) {
+ log.warn("[XzjcInfoSync] 当天最大批次号[{}]序号段非法, 从 00001 重新开始", maxBatch);
+ }
+ }
+ // 序号 key 保留 2 天,过期自动清理,避免跨天残留
+ counter.expire(Duration.ofDays(2));
+ }
+ if (seq > 99999) {
+ log.warn("[XzjcInfoSync] 当日序号已达 {} 超出五位,批次号将超过规范长度", seq);
+ }
+ return day + String.format("%05d", seq);
+ }
+
/**
* 时间类型兼容转换(Timestamp / LocalDateTime / 字符串)
*/
diff --git a/zdxt-modules/zdxt-enforcement-code/src/main/resources/mapper/enforcementcode/XzjcInfoShareGxkMapper.xml b/zdxt-modules/zdxt-enforcement-code/src/main/resources/mapper/enforcementcode/XzjcInfoShareGxkMapper.xml
new file mode 100644
index 00000000..b248927c
--- /dev/null
+++ b/zdxt-modules/zdxt-enforcement-code/src/main/resources/mapper/enforcementcode/XzjcInfoShareGxkMapper.xml
@@ -0,0 +1,67 @@
+
+
+
+
+
+
+
+
+
+ INSERT INTO SZ_SFJ_ZFJDM_XZJC_INFO
+ (YWID, BJQYMC, BJQYTYSHXYDM, SSQYBM, SSQYMC, JCSX, RQSJ, ZFYJ, JCLB, JCYY,
+ SFLHJC, LHJCBH, SFWTJC, WTJCBMMC, SFSM, WSMYY, QTYYXXQ,
+ ZFRYXM, XZZFZH, QTZFRYXM, QTXZZFZH, ZFDWID, ZFDWMC, ZFBMMC, SFSC, YWCJSJ, YWXGSJ,
+ CD_OPERATION, CD_BATCH)
+ VALUES
+ (#{item.ywid}, #{item.bjqymc}, #{item.bjqytyshxydm}, #{item.ssqybm}, #{item.ssqymc}, #{item.jcsx}, #{item.rqsj},
+ #{item.zfyj}, #{item.jclb}, #{item.jcyy}, #{item.sflhjc}, #{item.lhjcbh},
+ #{item.sfwtjc}, #{item.wtjcbmmc}, #{item.sfsm}, #{item.wsmyy}, #{item.qtyyxxq},
+ #{item.zfryxm}, #{item.xzzfzh}, #{item.qtzfryxm}, #{item.qtxzzfzh},
+ #{item.zfdwid}, #{item.zfdwmc}, #{item.zfbmmc}, #{item.sfsc}, #{item.ywcjsj}, #{item.ywxgsj},
+ #{item.cdOperation}, #{item.cdBatch})
+
+
+
+
+ UPDATE SZ_SFJ_ZFJDM_XZJC_INFO
+ SET BJQYMC = #{item.bjqymc},
+ BJQYTYSHXYDM = #{item.bjqytyshxydm},
+ SSQYBM = #{item.ssqybm},
+ SSQYMC = #{item.ssqymc},
+ JCSX = #{item.jcsx},
+ RQSJ = #{item.rqsj},
+ ZFYJ = #{item.zfyj},
+ JCLB = #{item.jclb},
+ JCYY = #{item.jcyy},
+ SFLHJC = #{item.sflhjc},
+ LHJCBH = #{item.lhjcbh},
+ SFWTJC = #{item.sfwtjc},
+ WTJCBMMC = #{item.wtjcbmmc},
+ SFSM = #{item.sfsm},
+ WSMYY = #{item.wsmyy},
+ QTYYXXQ = #{item.qtyyxxq},
+ ZFRYXM = #{item.zfryxm},
+ XZZFZH = #{item.xzzfzh},
+ QTZFRYXM = #{item.qtzfryxm},
+ QTXZZFZH = #{item.qtxzzfzh},
+ ZFDWID = #{item.zfdwid},
+ ZFDWMC = #{item.zfdwmc},
+ ZFBMMC = #{item.zfbmmc},
+ SFSC = #{item.sfsc},
+ YWCJSJ = #{item.ywcjsj},
+ YWXGSJ = #{item.ywxgsj},
+ CD_OPERATION = #{item.cdOperation},
+ CD_BATCH = #{item.cdBatch},
+ CD_TIME = CURRENT_TIMESTAMP
+ WHERE YWID = #{item.ywid}
+
+
diff --git a/zdxt-modules/zdxt-enforcement-code/src/main/resources/mapper/enforcementcode/XzjcInfoShareMapper.xml b/zdxt-modules/zdxt-enforcement-code/src/main/resources/mapper/enforcementcode/XzjcInfoShareMapper.xml
new file mode 100644
index 00000000..e4a685eb
--- /dev/null
+++ b/zdxt-modules/zdxt-enforcement-code/src/main/resources/mapper/enforcementcode/XzjcInfoShareMapper.xml
@@ -0,0 +1,29 @@
+
+
+
+
+
+
+
+
+
+ UPDATE SZSFJ_ZFJDM_XZJC_INFO
+ SET TBZT = '1'
+ WHERE TBZT = '0'
+ AND ID IN
+
+ #{id}
+
+
+
diff --git a/zdxt-modules/zdxt-enforcement-code/src/main/resources/mapper/enforcementcode/XzjcInfoSyncMapper.xml b/zdxt-modules/zdxt-enforcement-code/src/main/resources/mapper/enforcementcode/XzjcInfoSyncMapper.xml
index fb4f19b2..b038a39d 100644
--- a/zdxt-modules/zdxt-enforcement-code/src/main/resources/mapper/enforcementcode/XzjcInfoSyncMapper.xml
+++ b/zdxt-modules/zdxt-enforcement-code/src/main/resources/mapper/enforcementcode/XzjcInfoSyncMapper.xml
@@ -4,44 +4,61 @@
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+
+ 仅同步已提交数据(is_submit=1,临时保存的不外发);
+ 已删除数据(is_delete=1)也需同步,由 SFSC 字段通知共享方删除状态(逻辑删除为 UPDATE,会触发 update_time 变化被增量捞起);
+ 所属区域经 sys_dept.area_node → dashboard_area_info(area_code/name, level=3 区级)推导,与大屏统计同口径;
+ 区域兜底:area_code 为空默认 440300000(深圳市),name 为空默认 深圳市;
+ cursorTime 为空 -> 全量;
+ cursorTime 非空且 cursorId 为空 -> update_time >= cursorTime(含边界,防漏,配合幂等 upsert);
+ 两者均非空 -> 严格游标(大于时刻 或 同时刻且 id 更大),避免页间重复;
+ endTime 为上界(不含),只读取该时间之前的数据 -->
diff --git a/zdxt-modules/zdxt-enforcement-code/src/main/resources/mapper/enforcementcode/XzjcInfoSyncTgkMapper.xml b/zdxt-modules/zdxt-enforcement-code/src/main/resources/mapper/enforcementcode/XzjcInfoSyncTgkMapper.xml
index 229d59b6..9e6f4894 100644
--- a/zdxt-modules/zdxt-enforcement-code/src/main/resources/mapper/enforcementcode/XzjcInfoSyncTgkMapper.xml
+++ b/zdxt-modules/zdxt-enforcement-code/src/main/resources/mapper/enforcementcode/XzjcInfoSyncTgkMapper.xml
@@ -10,44 +10,74 @@
FROM SZSFJ_ZFJDM_XZJC_INFO
-
-
-
+
+
+
+
+
+
+
+
+
+
INSERT INTO SZSFJ_ZFJDM_XZJC_INFO
- (YWID, BJQYMC, BJQYTYSHXYDM, JCSX, RQSJ, ZFYJ, JCLB, JCYY,
+ (YWID, BJQYMC, BJQYTYSHXYDM, SSQYBM, SSQYMC, JCSX, RQSJ, ZFYJ, JCLB, JCYY,
SFLHJC, LHJCBH, SFWTJC, WTJCBMMC, SFSM, WSMYY, QTYYXXQ,
- ZFRYXM, XZZFZH, QTZFRYXM, QTXZZFZH, ZFDWMC, ZFBMMC, YWCJSJ, YWXGSJ, ZLBS)
+ ZFRYXM, XZZFZH, QTZFRYXM, QTXZZFZH, ZFDWID, ZFDWMC, ZFBMMC, SFSC, YWCJSJ, YWXGSJ,
+ CD_OPERATION, CD_BATCH, TBZT)
VALUES
-
- (#{item.ywid}, #{item.bjqymc}, #{item.bjqytyshxydm}, #{item.jcsx}, #{item.rqsj},
+ (#{item.ywid}, #{item.bjqymc}, #{item.bjqytyshxydm}, #{item.ssqybm}, #{item.ssqymc}, #{item.jcsx}, #{item.rqsj},
#{item.zfyj}, #{item.jclb}, #{item.jcyy}, #{item.sflhjc}, #{item.lhjcbh},
#{item.sfwtjc}, #{item.wtjcbmmc}, #{item.sfsm}, #{item.wsmyy}, #{item.qtyyxxq},
#{item.zfryxm}, #{item.xzzfzh}, #{item.qtzfryxm}, #{item.qtxzzfzh},
- #{item.zfdwmc}, #{item.zfbmmc}, #{item.ywcjsj}, #{item.ywxgsj}, '0')
-
- ON DUPLICATE KEY UPDATE
- BJQYMC = VALUES(BJQYMC),
- BJQYTYSHXYDM = VALUES(BJQYTYSHXYDM),
- JCSX = VALUES(JCSX),
- RQSJ = VALUES(RQSJ),
- ZFYJ = VALUES(ZFYJ),
- JCLB = VALUES(JCLB),
- JCYY = VALUES(JCYY),
- SFLHJC = VALUES(SFLHJC),
- LHJCBH = VALUES(LHJCBH),
- SFWTJC = VALUES(SFWTJC),
- WTJCBMMC = VALUES(WTJCBMMC),
- SFSM = VALUES(SFSM),
- WSMYY = VALUES(WSMYY),
- QTYYXXQ = VALUES(QTYYXXQ),
- ZFRYXM = VALUES(ZFRYXM),
- XZZFZH = VALUES(XZZFZH),
- QTZFRYXM = VALUES(QTZFRYXM),
- QTXZZFZH = VALUES(QTXZZFZH),
- ZFDWMC = VALUES(ZFDWMC),
- ZFBMMC = VALUES(ZFBMMC),
- YWCJSJ = VALUES(YWCJSJ),
- YWXGSJ = VALUES(YWXGSJ),
- ZLBS = '0'
+ #{item.zfdwid}, #{item.zfdwmc}, #{item.zfbmmc}, #{item.sfsc}, #{item.ywcjsj}, #{item.ywxgsj},
+ #{item.cdOperation}, #{item.cdBatch}, '0')
+
+
+
+ UPDATE SZSFJ_ZFJDM_XZJC_INFO
+ SET BJQYMC = #{item.bjqymc},
+ BJQYTYSHXYDM = #{item.bjqytyshxydm},
+ SSQYBM = #{item.ssqybm},
+ SSQYMC = #{item.ssqymc},
+ JCSX = #{item.jcsx},
+ RQSJ = #{item.rqsj},
+ ZFYJ = #{item.zfyj},
+ JCLB = #{item.jclb},
+ JCYY = #{item.jcyy},
+ SFLHJC = #{item.sflhjc},
+ LHJCBH = #{item.lhjcbh},
+ SFWTJC = #{item.sfwtjc},
+ WTJCBMMC = #{item.wtjcbmmc},
+ SFSM = #{item.sfsm},
+ WSMYY = #{item.wsmyy},
+ QTYYXXQ = #{item.qtyyxxq},
+ ZFRYXM = #{item.zfryxm},
+ XZZFZH = #{item.xzzfzh},
+ QTZFRYXM = #{item.qtzfryxm},
+ QTXZZFZH = #{item.qtxzzfzh},
+ ZFDWID = #{item.zfdwid},
+ ZFDWMC = #{item.zfdwmc},
+ ZFBMMC = #{item.zfbmmc},
+ SFSC = #{item.sfsc},
+ YWCJSJ = #{item.ywcjsj},
+ YWXGSJ = #{item.ywxgsj},
+ CD_OPERATION = #{item.cdOperation},
+ CD_BATCH = #{item.cdBatch},
+ TBZT = '0'
+ WHERE YWID = #{item.ywid}
+
+
diff --git a/zdxt-web-server/zdxt-admin-web-server/src/main/resources/application-dev.yml b/zdxt-web-server/zdxt-admin-web-server/src/main/resources/application-dev.yml
index bb5a7466..d1c0cdc2 100644
--- a/zdxt-web-server/zdxt-admin-web-server/src/main/resources/application-dev.yml
+++ b/zdxt-web-server/zdxt-admin-web-server/src/main/resources/application-dev.yml
@@ -70,6 +70,12 @@ spring:
url: jdbc:mysql://172.16.20.72:3306/zfjd_tgk?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
username: root
password: zdxt@8888
+ # 共享库(行政检查信息 tgk -> gxk 同步目标库)
+ gxk:
+ lazy: true
+ url: jdbc:mysql://172.16.20.72:3306/zfjd_gxk?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
+ username: root
+ password: zdxt@8888
hikari:
# 最大连接池数量
maxPoolSize: 500
@@ -273,8 +279,6 @@ siq:
appId: CE07DEE723E241DFB34D80090A569B12
secretKey: ENC(6+WSjXj7UebpPJGq69e7aVZ1ZIrL9wnPcD+rU5XDFCNYGQM8fVvtcQ==)
msgAppId: CE07DEE723E241DFB34D80090A569B12
- siqBaseUrl: https://egbpub.siqhz.com
- msgSecretKey: 0C4E08DCC7DD490E86EF2B79E81691D1
msgTemplateId: 2076972618633498625
# 模拟数据开关(true=使用模拟数据,false=调用真实接口)
mock:
diff --git a/zdxt-web-server/zdxt-admin-web-server/src/main/resources/application-prod.yml b/zdxt-web-server/zdxt-admin-web-server/src/main/resources/application-prod.yml
index 866fcd05..f6b3c22f 100644
--- a/zdxt-web-server/zdxt-admin-web-server/src/main/resources/application-prod.yml
+++ b/zdxt-web-server/zdxt-admin-web-server/src/main/resources/application-prod.yml
@@ -65,32 +65,14 @@ spring:
url: jdbc:mysql:loadbalance://10.134.89.36:15144,10.134.89.37:15144,10.134.89.38:15144,10.134.89.39:15144/zfjd?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
username: zfjd
password: szsf@zfjd
- # # 从库数据源
- # slave:
- # lazy: true
- # type: ${spring.datasource.type}
- # driverClassName: com.mysql.cj.jdbc.Driver
- # url: jdbc:mysql://localhost:3306/ry-vue?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true&rewriteBatchedStatements=true&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true
- # username:
- # password:
- # oracle:
- # type: ${spring.datasource.type}
- # driverClassName: oracle.jdbc.OracleDriver
- # url: jdbc:oracle:thin:@//localhost:1521/XE
- # username: ROOT
- # password: root
- # postgres:
- # type: ${spring.datasource.type}
- # driverClassName: org.postgresql.Driver
- # url: jdbc:postgresql://localhost:5432/postgres?useUnicode=true&characterEncoding=utf8&useSSL=true&autoReconnect=true&reWriteBatchedInserts=true
- # username: root
- # password: root
- # sqlserver:
- # type: ${spring.datasource.type}
- # driverClassName: com.microsoft.sqlserver.jdbc.SQLServerDriver
- # url: jdbc:sqlserver://localhost:1433;DatabaseName=tempdb;SelectMethod=cursor;encrypt=false;rewriteBatchedStatements=true
- # username: SA
- # password: root
+ # 共享库(达梦,行政检查信息 tgk -> gxk 同步目标库)
+ gxk:
+ lazy: true
+ type: ${spring.datasource.type}
+ driverClassName: dm.jdbc.driver.DmDriver
+ url: jdbc:dm://10.224.157.67:10405?schema=SSFJTGK&compatibleMode=mysql&characterEncoding=utf-8
+ username: SSFJJDM
+ password: "6AK$xi7AH+"
hikari:
# 最大连接池数量
maxPoolSize: 20