5 changed files with 388 additions and 124 deletions
@ -0,0 +1,77 @@ |
|||
package com.zdxt.enforcementcode.domain.bo; |
|||
|
|||
import lombok.Data; |
|||
|
|||
import java.util.Date; |
|||
|
|||
/** |
|||
* 行政检查信息同步写入行(对应市司法局数据共享表 SZSFJ_ZFJDM_XZJC_INFO) |
|||
* |
|||
* @author zdxt |
|||
*/ |
|||
@Data |
|||
public class XzjcInfoSyncBo { |
|||
|
|||
/** 业务ID(YWID) */ |
|||
private String ywid; |
|||
|
|||
/** 被检查企业名称(BJQYMC) */ |
|||
private String bjqymc; |
|||
|
|||
/** 被检查企业统一社会信用代码(BJQYTYSHXYDM) */ |
|||
private String bjqytyshxydm; |
|||
|
|||
/** 检查事项(JCSX) */ |
|||
private String jcsx; |
|||
|
|||
/** 入企时间(RQSJ) */ |
|||
private Date rqsj; |
|||
|
|||
/** 执法依据(ZFYJ) */ |
|||
private String zfyj; |
|||
|
|||
/** 检查类别(JCLB) */ |
|||
private String jclb; |
|||
|
|||
/** 检查原因(JCYY) */ |
|||
private String jcyy; |
|||
|
|||
/** 是否联合检查:0否,1是(SFLHJC) */ |
|||
private Integer sflhjc; |
|||
|
|||
/** 联合检查编号(LHJCBH) */ |
|||
private String lhjcbh; |
|||
|
|||
/** 是否委托检查:0否,1是(SFWTJC) */ |
|||
private Integer sfwtjc; |
|||
|
|||
/** 委托检查部门名称(WTJCBMMC) */ |
|||
private String wtjcbmmc; |
|||
|
|||
/** 其他原因详情(QTYYXXQ) */ |
|||
private String qtyyxxq; |
|||
|
|||
/** 执法人员姓名(ZFRYXM) */ |
|||
private String zfryxm; |
|||
|
|||
/** 行政执法证号(XZZFZH) */ |
|||
private String xzzfzh; |
|||
|
|||
/** 其他执法人员姓名(QTZFRYXM) */ |
|||
private String qtzfryxm; |
|||
|
|||
/** 其他行政执法证号(QTXZZFZH) */ |
|||
private String qtxzzfzh; |
|||
|
|||
/** 执法单位名称(ZFDWMC) */ |
|||
private String zfdwmc; |
|||
|
|||
/** 执法部门名称(ZFBMMC) */ |
|||
private String zfbmmc; |
|||
|
|||
/** 业务创建时间(YWCJSJ) */ |
|||
private Date ywcjsj; |
|||
|
|||
/** 业务修改时间(YWXGSJ) */ |
|||
private Date ywxgsj; |
|||
} |
|||
@ -0,0 +1,46 @@ |
|||
package com.zdxt.enforcementcode.mapper; |
|||
|
|||
import com.zdxt.enforcementcode.domain.bo.XzjcInfoSyncBo; |
|||
import org.apache.ibatis.annotations.Param; |
|||
|
|||
import java.util.Date; |
|||
import java.util.List; |
|||
import java.util.Map; |
|||
|
|||
/** |
|||
* 行政检查信息同步 Mapper 接口 |
|||
* <p>增量同步 enforcement_registration -> SZSFJ_ZFJDM_XZJC_INFO(市司法局数据共享表)</p> |
|||
* |
|||
* @author zdxt |
|||
*/ |
|||
public interface XzjcInfoSyncMapper { |
|||
|
|||
/** |
|||
* 查询增量水位:目标表已同步数据的最大业务修改时间(MAX(YWXGSJ)) |
|||
* |
|||
* @return 水位时间;目标表为空时返回 null |
|||
*/ |
|||
Date selectWatermark(); |
|||
|
|||
/** |
|||
* 按 (update_time, id) 键集分页查询源表增量数据 |
|||
* |
|||
* @param cursorTime 游标时间(null 时全量) |
|||
* @param cursorId 游标 ID(cursorTime 非空且本参数为 null 时,按 update_time >= cursorTime 含边界防漏) |
|||
* @param endTime 截止时间(上界,不含),只同步该时间之前的数据(通常为今天零点,即前一天晚上的数据) |
|||
* @param pageSize 分页大小 |
|||
* @return 增量数据行(列为 enforcement_registration 小写列名) |
|||
*/ |
|||
List<Map<String, Object>> selectIncrementalPage(@Param("cursorTime") Date cursorTime, |
|||
@Param("cursorId") String cursorId, |
|||
@Param("endTime") Date endTime, |
|||
@Param("pageSize") int pageSize); |
|||
|
|||
/** |
|||
* 批量 upsert 目标表(基于 uk_ywid 唯一键 INSERT ... ON DUPLICATE KEY UPDATE,幂等) |
|||
* |
|||
* @param list 写入行集合 |
|||
* @return 影响行数(MySQL upsert 语义,不代表真实写入条数) |
|||
*/ |
|||
int upsertBatch(@Param("list") List<XzjcInfoSyncBo> list); |
|||
} |
|||
@ -0,0 +1,89 @@ |
|||
<?xml version="1.0" encoding="UTF-8" ?> |
|||
<!DOCTYPE mapper |
|||
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" |
|||
"http://mybatis.org/dtd/mybatis-3-mapper.dtd"> |
|||
<mapper namespace="com.zdxt.enforcementcode.mapper.XzjcInfoSyncMapper"> |
|||
|
|||
<!-- 增量水位:目标表已同步数据的最大业务修改时间;表为空时返回 NULL --> |
|||
<select id="selectWatermark" resultType="java.util.Date"> |
|||
SELECT MAX(YWXGSJ) |
|||
FROM SZSFJ_ZFJDM_XZJC_INFO |
|||
</select> |
|||
|
|||
<!-- 按 (update_time, id) 键集分页查询源表增量数据: |
|||
仅同步已提交数据(is_submit=1,临时保存的不外发); |
|||
cursorTime 为空 -> 全量; |
|||
cursorTime 非空且 cursorId 为空 -> update_time >= cursorTime(含边界,防漏,配合幂等 upsert); |
|||
两者均非空 -> 严格游标(大于时刻 或 同时刻且 id 更大),避免页间重复; |
|||
endTime 为上界(不含),只读取该时间之前的数据 --> |
|||
<select id="selectIncrementalPage" resultType="java.util.HashMap"> |
|||
SELECT |
|||
id, enterprise_name, enterprise_number, |
|||
law_enforcement_item_text, law_enforcement_item, |
|||
enforcement_time, |
|||
law_enforcement_basis_text, law_enforcement_basis, |
|||
law_enforce_category, check_category, |
|||
has_union, union_no, has_auto, entrust_dept_name, other_reasons, |
|||
law_enforcer, law_enforcer_id, |
|||
law_enforcer_two, law_enforcer_id_two, |
|||
bureau_dept_name, law_enforcement, |
|||
create_time, update_time |
|||
FROM enforcement_registration |
|||
WHERE is_delete = 0 |
|||
AND is_submit = 1 |
|||
AND update_time IS NOT NULL |
|||
<if test="endTime != null"> |
|||
AND update_time < #{endTime} |
|||
</if> |
|||
<if test="cursorTime != null"> |
|||
<choose> |
|||
<when test="cursorId != null"> |
|||
AND (update_time > #{cursorTime} |
|||
OR (update_time = #{cursorTime} AND id > #{cursorId})) |
|||
</when> |
|||
<otherwise> |
|||
AND update_time >= #{cursorTime} |
|||
</otherwise> |
|||
</choose> |
|||
</if> |
|||
ORDER BY update_time ASC, id ASC |
|||
LIMIT #{pageSize} |
|||
</select> |
|||
|
|||
<!-- 批量 upsert(uk_ywid 冲突时更新);注:affected 返回值(插入 1/更新 2)不代表真实行数 --> |
|||
<insert id="upsertBatch"> |
|||
INSERT INTO SZSFJ_ZFJDM_XZJC_INFO |
|||
(YWID, BJQYMC, BJQYTYSHXYDM, JCSX, RQSJ, ZFYJ, JCLB, JCYY, |
|||
SFLHJC, LHJCBH, SFWTJC, WTJCBMMC, QTYYXXQ, |
|||
ZFRYXM, XZZFZH, QTZFRYXM, QTXZZFZH, ZFDWMC, ZFBMMC, YWCJSJ, YWXGSJ) |
|||
VALUES |
|||
<foreach collection="list" item="item" separator=","> |
|||
(#{item.ywid}, #{item.bjqymc}, #{item.bjqytyshxydm}, #{item.jcsx}, #{item.rqsj}, |
|||
#{item.zfyj}, #{item.jclb}, #{item.jcyy}, #{item.sflhjc}, #{item.lhjcbh}, |
|||
#{item.sfwtjc}, #{item.wtjcbmmc}, #{item.qtyyxxq}, |
|||
#{item.zfryxm}, #{item.xzzfzh}, #{item.qtzfryxm}, #{item.qtxzzfzh}, |
|||
#{item.zfdwmc}, #{item.zfbmmc}, #{item.ywcjsj}, #{item.ywxgsj}) |
|||
</foreach> |
|||
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), |
|||
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) |
|||
</insert> |
|||
</mapper> |
|||
Loading…
Reference in new issue