cc 4 months ago
parent
commit
e8b6331d5a
17 changed files with 809 additions and 6 deletions
  1. 3 1
      .claude/settings.local.json
  2. 27 1
      sql/external_tables.sql
  3. 1 1
      src/main/java/com/qingjian/common/model/external/entity/CoResident.java
  4. 3 3
      src/main/java/com/qingjian/common/model/external/entity/Criminal.java
  5. 50 0
      src/main/java/com/qingjian/module/dm/clean/impl/loader/ExternalCertInfoLoader.java
  6. 59 0
      src/main/java/com/qingjian/module/dm/clean/impl/loader/ExternalCoResidentLoader.java
  7. 41 0
      src/main/java/com/qingjian/module/dm/clean/impl/loader/ExternalCoVehViolLoader.java
  8. 64 0
      src/main/java/com/qingjian/module/dm/clean/impl/loader/ExternalCriminalLoader.java
  9. 51 0
      src/main/java/com/qingjian/module/dm/clean/impl/loader/ExternalEntryRecLoader.java
  10. 77 0
      src/main/java/com/qingjian/module/dm/clean/impl/loader/ExternalFugiCoLoader.java
  11. 85 0
      src/main/java/com/qingjian/module/dm/clean/impl/loader/ExternalFugiCoRevokeLoader.java
  12. 81 0
      src/main/java/com/qingjian/module/dm/clean/impl/loader/ExternalFugiRevokeLoader.java
  13. 74 0
      src/main/java/com/qingjian/module/dm/clean/impl/loader/ExternalFugitiveLoader.java
  14. 51 0
      src/main/java/com/qingjian/module/dm/clean/impl/loader/ExternalHouseholdLoader.java
  15. 50 0
      src/main/java/com/qingjian/module/dm/clean/impl/loader/ExternalLicInfoLoader.java
  16. 46 0
      src/main/java/com/qingjian/module/dm/clean/impl/loader/ExternalVehViolationLoader.java
  17. 46 0
      src/main/java/com/qingjian/module/dm/clean/impl/loader/ExternalVehicleInfoLoader.java

+ 3 - 1
.claude/settings.local.json

@@ -17,7 +17,9 @@
       "WebSearch",
       "WebSearch",
       "Bash(mvn compile *)",
       "Bash(mvn compile *)",
       "Bash(sort -t\\\\\\( -k2 -n)",
       "Bash(sort -t\\\\\\( -k2 -n)",
-      "Bash(python3)"
+      "Bash(python3)",
+      "Bash(python3 sql/_fix_comments.py)",
+      "Bash(python3 sql/_gen_sql.py)"
     ]
     ]
   }
   }
 }
 }

+ 27 - 1
sql/external_tables.sql

@@ -8,6 +8,8 @@ DROP TABLE IF EXISTS cert_info;
 CREATE TABLE cert_info
 CREATE TABLE cert_info
 (
 (
     id         BIGINT PRIMARY KEY, -- 主键
     id         BIGINT PRIMARY KEY, -- 主键
+    fileId     BIGINT,             -- 文件ID
+    sheetId    BIGINT,             -- 页签ID
     cid        VARCHAR,            -- 身份证号
     cid        VARCHAR,            -- 身份证号
     birth      VARCHAR,            -- 出生日期
     birth      VARCHAR,            -- 出生日期
     certType   VARCHAR,            -- 证件类型
     certType   VARCHAR,            -- 证件类型
@@ -29,6 +31,8 @@ DROP TABLE IF EXISTS entry_rec;
 CREATE TABLE entry_rec
 CREATE TABLE entry_rec
 (
 (
     id        BIGINT PRIMARY KEY, -- 主键
     id        BIGINT PRIMARY KEY, -- 主键
+    fileId    BIGINT,             -- 文件ID
+    sheetId   BIGINT,             -- 页签ID
     certType  VARCHAR,            -- 证件类别
     certType  VARCHAR,            -- 证件类别
     certNo    VARCHAR,            -- 证件号码
     certNo    VARCHAR,            -- 证件号码
     gender    VARCHAR,            -- 性别
     gender    VARCHAR,            -- 性别
@@ -51,6 +55,8 @@ DROP TABLE IF EXISTS vehicle_info;
 CREATE TABLE vehicle_info
 CREATE TABLE vehicle_info
 (
 (
     id       BIGINT PRIMARY KEY, -- 主键
     id       BIGINT PRIMARY KEY, -- 主键
+    fileId   BIGINT,             -- 文件ID
+    sheetId  BIGINT,             -- 页签ID
     engModel VARCHAR,            -- 机动车发动机型号
     engModel VARCHAR,            -- 机动车发动机型号
     fuelType VARCHAR,            -- 机动车能源种类
     fuelType VARCHAR,            -- 机动车能源种类
     engCc    VARCHAR,            -- 机动车发动机排量
     engCc    VARCHAR,            -- 机动车发动机排量
@@ -68,6 +74,8 @@ DROP TABLE IF EXISTS lic_info;
 CREATE TABLE lic_info
 CREATE TABLE lic_info
 (
 (
     id            BIGINT PRIMARY KEY, -- 主键
     id            BIGINT PRIMARY KEY, -- 主键
+    fileId        BIGINT,             -- 文件ID
+    sheetId       BIGINT,             -- 页签ID
     nation        VARCHAR,            -- 国籍/地区
     nation        VARCHAR,            -- 国籍/地区
     firstDate     VARCHAR,            -- 初次领证日期
     firstDate     VARCHAR,            -- 初次领证日期
     tmpResNo      VARCHAR,            -- 暂住证编号
     tmpResNo      VARCHAR,            -- 暂住证编号
@@ -89,6 +97,8 @@ DROP TABLE IF EXISTS veh_violation;
 CREATE TABLE veh_violation
 CREATE TABLE veh_violation
 (
 (
     id        BIGINT PRIMARY KEY, -- 主键
     id        BIGINT PRIMARY KEY, -- 主键
+    fileId    BIGINT,             -- 文件ID
+    sheetId   BIGINT,             -- 页签ID
     person    VARCHAR,            -- 当事人
     person    VARCHAR,            -- 当事人
     licNo     VARCHAR,            -- 驾驶证号
     licNo     VARCHAR,            -- 驾驶证号
     plateType VARCHAR,            -- 号牌种类
     plateType VARCHAR,            -- 号牌种类
@@ -106,6 +116,8 @@ DROP TABLE IF EXISTS household;
 CREATE TABLE household
 CREATE TABLE household
 (
 (
     id            BIGINT PRIMARY KEY, -- 主键
     id            BIGINT PRIMARY KEY, -- 主键
+    fileId        BIGINT,             -- 文件ID
+    sheetId       BIGINT,             -- 页签ID
     age           VARCHAR,            -- 年龄
     age           VARCHAR,            -- 年龄
     height        VARCHAR,            -- 身高
     height        VARCHAR,            -- 身高
     job           VARCHAR,            -- 职业
     job           VARCHAR,            -- 职业
@@ -128,6 +140,8 @@ DROP TABLE IF EXISTS co_resident;
 CREATE TABLE co_resident
 CREATE TABLE co_resident
 (
 (
     id            BIGINT PRIMARY KEY, -- 主键
     id            BIGINT PRIMARY KEY, -- 主键
+    fileId        BIGINT,             -- 文件ID
+    sheetId       BIGINT,             -- 页签ID
     name          VARCHAR,            -- 姓名
     name          VARCHAR,            -- 姓名
     gender        VARCHAR,            -- 性别
     gender        VARCHAR,            -- 性别
     birth         VARCHAR,            -- 出生日期
     birth         VARCHAR,            -- 出生日期
@@ -158,6 +172,8 @@ DROP TABLE IF EXISTS co_veh_viol;
 CREATE TABLE co_veh_viol
 CREATE TABLE co_veh_viol
 (
 (
     id      BIGINT PRIMARY KEY, -- 主键
     id      BIGINT PRIMARY KEY, -- 主键
+    fileId  BIGINT,             -- 文件ID
+    sheetId BIGINT,             -- 页签ID
     name    VARCHAR,            -- 姓名
     name    VARCHAR,            -- 姓名
     cid     VARCHAR,            -- 身份证号
     cid     VARCHAR,            -- 身份证号
     plateNo VARCHAR,            -- 车号牌
     plateNo VARCHAR,            -- 车号牌
@@ -170,6 +186,8 @@ DROP TABLE IF EXISTS criminal;
 CREATE TABLE criminal
 CREATE TABLE criminal
 (
 (
     id        BIGINT PRIMARY KEY, -- 主键
     id        BIGINT PRIMARY KEY, -- 主键
+    fileId    BIGINT,             -- 文件ID
+    sheetId   BIGINT,             -- 页签ID
     name      VARCHAR,            -- 姓名
     name      VARCHAR,            -- 姓名
     alias     VARCHAR,            -- 别名绰号
     alias     VARCHAR,            -- 别名绰号
     gender    VARCHAR,            -- 性别
     gender    VARCHAR,            -- 性别
@@ -182,7 +200,7 @@ CREATE TABLE criminal
     regDist   VARCHAR,            -- 户口所在地区划
     regDist   VARCHAR,            -- 户口所在地区划
     bodyMark  VARCHAR,            -- 体表标记
     bodyMark  VARCHAR,            -- 体表标记
     skill     VARCHAR,            -- 专长
     skill     VARCHAR,            -- 专长
-    identity  VARCHAR,            -- 个人身份
+    identitys VARCHAR,            -- 个人身份
     caseType  VARCHAR,            -- 案件类别
     caseType  VARCHAR,            -- 案件类别
     caseBrief VARCHAR,            -- 简要案情
     caseBrief VARCHAR,            -- 简要案情
     result    VARCHAR,            -- 警情处理结果
     result    VARCHAR,            -- 警情处理结果
@@ -205,6 +223,8 @@ DROP TABLE IF EXISTS fugitive;
 CREATE TABLE fugitive
 CREATE TABLE fugitive
 (
 (
     id           BIGINT PRIMARY KEY, -- 主键
     id           BIGINT PRIMARY KEY, -- 主键
+    fileId       BIGINT,             -- 文件ID
+    sheetId      BIGINT,             -- 页签ID
     name         VARCHAR,            -- 姓名
     name         VARCHAR,            -- 姓名
     gender       VARCHAR,            -- 性别
     gender       VARCHAR,            -- 性别
     ethnicity    VARCHAR,            -- 民族
     ethnicity    VARCHAR,            -- 民族
@@ -250,6 +270,8 @@ DROP TABLE IF EXISTS fugi_revoke;
 CREATE TABLE fugi_revoke
 CREATE TABLE fugi_revoke
 (
 (
     id             BIGINT PRIMARY KEY, -- 主键
     id             BIGINT PRIMARY KEY, -- 主键
+    fileId         BIGINT,             -- 文件ID
+    sheetId        BIGINT,             -- 页签ID
     name           VARCHAR,            -- 姓名
     name           VARCHAR,            -- 姓名
     gender         VARCHAR,            -- 性别
     gender         VARCHAR,            -- 性别
     ethnicity      VARCHAR,            -- 民族
     ethnicity      VARCHAR,            -- 民族
@@ -302,6 +324,8 @@ DROP TABLE IF EXISTS fugi_co;
 CREATE TABLE fugi_co
 CREATE TABLE fugi_co
 (
 (
     id           BIGINT PRIMARY KEY, -- 主键
     id           BIGINT PRIMARY KEY, -- 主键
+    fileId       BIGINT,             -- 文件ID
+    sheetId      BIGINT,             -- 页签ID
     name         VARCHAR,            -- 姓名
     name         VARCHAR,            -- 姓名
     gender       VARCHAR,            -- 性别
     gender       VARCHAR,            -- 性别
     birth        VARCHAR,            -- 出生日期
     birth        VARCHAR,            -- 出生日期
@@ -350,6 +374,8 @@ DROP TABLE IF EXISTS fugi_co_revoke;
 CREATE TABLE fugi_co_revoke
 CREATE TABLE fugi_co_revoke
 (
 (
     id             BIGINT PRIMARY KEY, -- 主键
     id             BIGINT PRIMARY KEY, -- 主键
+    fileId         BIGINT,             -- 文件ID
+    sheetId        BIGINT,             -- 页签ID
     name           VARCHAR,            -- 姓名
     name           VARCHAR,            -- 姓名
     gender         VARCHAR,            -- 性别
     gender         VARCHAR,            -- 性别
     birth          VARCHAR,            -- 出生日期
     birth          VARCHAR,            -- 出生日期

+ 1 - 1
src/main/java/com/qingjian/common/model/external/entity/CoResident.java

@@ -163,7 +163,7 @@ public class CoResident extends Cleaned implements Serializable {
 
 
     public String str() {
     public String str() {
         List<String> list = Lists.newArrayList(
         List<String> list = Lists.newArrayList(
-        name
+                name
                 , gender
                 , gender
                 , birth
                 , birth
                 , cid
                 , cid

+ 3 - 3
src/main/java/com/qingjian/common/model/external/entity/Criminal.java

@@ -98,8 +98,8 @@ public class Criminal extends Cleaned implements Serializable {
     /**
     /**
      * 个人身份
      * 个人身份
      */
      */
-    @TableField("identity")
-    private String identity;
+    @TableField("identitys")
+    private String identitys;
 
 
     /**
     /**
      * 案件类别
      * 案件类别
@@ -205,7 +205,7 @@ public class Criminal extends Cleaned implements Serializable {
                 , regDist
                 , regDist
                 , bodyMark
                 , bodyMark
                 , skill
                 , skill
-                , identity
+                , identitys
                 , caseType
                 , caseType
                 , caseBrief
                 , caseBrief
                 , result
                 , result

+ 50 - 0
src/main/java/com/qingjian/module/dm/clean/impl/loader/ExternalCertInfoLoader.java

@@ -0,0 +1,50 @@
+package com.qingjian.module.dm.clean.impl.loader;
+
+import com.qingjian.common.model.external.entity.CertInfo;
+import com.qingjian.common.model.otg.dto.SearchDTO;
+import com.qingjian.common.utils.LuceneManager;
+import com.qingjian.module.dm.clean.AbstractDataLoader;
+import lombok.extern.slf4j.Slf4j;
+
+import java.sql.SQLException;
+
+@Slf4j
+public class ExternalCertInfoLoader extends AbstractDataLoader<CertInfo, CertInfo> {
+
+    public ExternalCertInfoLoader() {
+        super("cert_info");
+    }
+
+    @Override
+    protected void doWrite(CertInfo coi) {
+        if (duckDBAppender == null) {
+            return;
+        }
+        try {
+            duckDBAppender.beginRow();
+            duckDBAppender.append(coi.getId());
+            duckDBAppender.append(coi.getFileId());
+            duckDBAppender.append(coi.getSheetId());
+            duckDBAppender.append(coi.getCid());
+            duckDBAppender.append(coi.getBirth());
+            duckDBAppender.append(coi.getCertType());
+            duckDBAppender.append(coi.getCertNo());
+            duckDBAppender.append(coi.getBplace());
+            duckDBAppender.append(coi.getRegAddr());
+            duckDBAppender.append(coi.getPcs());
+            duckDBAppender.append(coi.getDplace());
+            duckDBAppender.append(coi.getIssOrg());
+            duckDBAppender.append(coi.getExitReason());
+            duckDBAppender.append(coi.getIssDate());
+            duckDBAppender.append(coi.getExpDate());
+            duckDBAppender.append(coi.getStoreTime());
+            duckDBAppender.append(coi.getPhoto());
+            duckDBAppender.endRow();
+        } catch (SQLException e) {
+            log.error(e.getMessage(), e);
+        }
+        LuceneManager.add(new SearchDTO(coi.getId().toString(), null, null,
+                null, coi.str(), "cert_info", coi.getFileName(), coi.getSheetName()));
+    }
+
+}

+ 59 - 0
src/main/java/com/qingjian/module/dm/clean/impl/loader/ExternalCoResidentLoader.java

@@ -0,0 +1,59 @@
+package com.qingjian.module.dm.clean.impl.loader;
+
+import com.qingjian.common.model.external.entity.CoResident;
+import com.qingjian.common.model.otg.dto.SearchDTO;
+import com.qingjian.common.utils.LuceneManager;
+import com.qingjian.module.dm.clean.AbstractDataLoader;
+import lombok.extern.slf4j.Slf4j;
+
+import java.sql.SQLException;
+
+@Slf4j
+public class ExternalCoResidentLoader extends AbstractDataLoader<CoResident, CoResident> {
+
+    public ExternalCoResidentLoader() {
+        super("co_resident");
+    }
+
+    @Override
+    protected void doWrite(CoResident coi) {
+        if (duckDBAppender == null) {
+            return;
+        }
+        try {
+            duckDBAppender.beginRow();
+            duckDBAppender.append(coi.getId());
+            duckDBAppender.append(coi.getFileId());
+            duckDBAppender.append(coi.getSheetId());
+            duckDBAppender.append(coi.getName());
+            duckDBAppender.append(coi.getGender());
+            duckDBAppender.append(coi.getBirth());
+            duckDBAppender.append(coi.getCid());
+            duckDBAppender.append(coi.getEthnicity());
+            duckDBAppender.append(coi.getOrigin());
+            duckDBAppender.append(coi.getRegAddr());
+            duckDBAppender.append(coi.getAka());
+            duckDBAppender.append(coi.getAge());
+            duckDBAppender.append(coi.getHeight());
+            duckDBAppender.append(coi.getJob());
+            duckDBAppender.append(coi.getEdu());
+            duckDBAppender.append(coi.getStatus());
+            duckDBAppender.append(coi.getOriginCountry());
+            duckDBAppender.append(coi.getCompany());
+            duckDBAppender.append(coi.getRelation());
+            duckDBAppender.append(coi.getRegDist());
+            duckDBAppender.append(coi.getBirthCountry());
+            duckDBAppender.append(coi.getBirthDist());
+            duckDBAppender.append(coi.getMilStatus());
+            duckDBAppender.append(coi.getMarital());
+            duckDBAppender.append(coi.getDeathDate());
+            duckDBAppender.append(coi.getPhoto());
+            duckDBAppender.endRow();
+        } catch (SQLException e) {
+            log.error(e.getMessage(), e);
+        }
+        LuceneManager.add(new SearchDTO(coi.getId().toString(), null, null,
+                null, coi.str(), "co_resident", coi.getFileName(), coi.getSheetName()));
+    }
+
+}

+ 41 - 0
src/main/java/com/qingjian/module/dm/clean/impl/loader/ExternalCoVehViolLoader.java

@@ -0,0 +1,41 @@
+package com.qingjian.module.dm.clean.impl.loader;
+
+import com.qingjian.common.model.external.entity.CoVehViol;
+import com.qingjian.common.model.otg.dto.SearchDTO;
+import com.qingjian.common.utils.LuceneManager;
+import com.qingjian.module.dm.clean.AbstractDataLoader;
+import lombok.extern.slf4j.Slf4j;
+
+import java.sql.SQLException;
+
+@Slf4j
+public class ExternalCoVehViolLoader extends AbstractDataLoader<CoVehViol, CoVehViol> {
+
+    public ExternalCoVehViolLoader() {
+        super("co_veh_viol");
+    }
+
+    @Override
+    protected void doWrite(CoVehViol coi) {
+        if (duckDBAppender == null) {
+            return;
+        }
+        try {
+            duckDBAppender.beginRow();
+            duckDBAppender.append(coi.getId());
+            duckDBAppender.append(coi.getFileId());
+            duckDBAppender.append(coi.getSheetId());
+            duckDBAppender.append(coi.getName());
+            duckDBAppender.append(coi.getCid());
+            duckDBAppender.append(coi.getPlateNo());
+            duckDBAppender.append(coi.getCoCount());
+            duckDBAppender.append(coi.getPhoto());
+            duckDBAppender.endRow();
+        } catch (SQLException e) {
+            log.error(e.getMessage(), e);
+        }
+        LuceneManager.add(new SearchDTO(coi.getId().toString(), null, null,
+                null, coi.str(), "co_veh_viol", coi.getFileName(), coi.getSheetName()));
+    }
+
+}

+ 64 - 0
src/main/java/com/qingjian/module/dm/clean/impl/loader/ExternalCriminalLoader.java

@@ -0,0 +1,64 @@
+package com.qingjian.module.dm.clean.impl.loader;
+
+import com.qingjian.common.model.external.entity.Criminal;
+import com.qingjian.common.model.otg.dto.SearchDTO;
+import com.qingjian.common.utils.LuceneManager;
+import com.qingjian.module.dm.clean.AbstractDataLoader;
+import lombok.extern.slf4j.Slf4j;
+
+import java.sql.SQLException;
+
+@Slf4j
+public class ExternalCriminalLoader extends AbstractDataLoader<Criminal, Criminal> {
+
+    public ExternalCriminalLoader() {
+        super("criminal");
+    }
+
+    @Override
+    protected void doWrite(Criminal coi) {
+        if (duckDBAppender == null) {
+            return;
+        }
+        try {
+            duckDBAppender.beginRow();
+            duckDBAppender.append(coi.getId());
+            duckDBAppender.append(coi.getFileId());
+            duckDBAppender.append(coi.getSheetId());
+            duckDBAppender.append(coi.getName());
+            duckDBAppender.append(coi.getAlias());
+            duckDBAppender.append(coi.getGender());
+            duckDBAppender.append(coi.getCid());
+            duckDBAppender.append(coi.getEthnicity());
+            duckDBAppender.append(coi.getBirth());
+            duckDBAppender.append(coi.getHeight());
+            duckDBAppender.append(coi.getFootLen());
+            duckDBAppender.append(coi.getEdu());
+            duckDBAppender.append(coi.getRegDist());
+            duckDBAppender.append(coi.getBodyMark());
+            duckDBAppender.append(coi.getSkill());
+            duckDBAppender.append(coi.getIdentitys());
+            duckDBAppender.append(coi.getCaseType());
+            duckDBAppender.append(coi.getCaseBrief());
+            duckDBAppender.append(coi.getResult());
+            duckDBAppender.append(coi.getUnit());
+            duckDBAppender.append(coi.getDocNo());
+            duckDBAppender.append(coi.getCatchDate());
+            duckDBAppender.append(coi.getSentence());
+            duckDBAppender.append(coi.getOutDate());
+            duckDBAppender.append(coi.getOutTo());
+            duckDBAppender.append(coi.getOutReason());
+            duckDBAppender.append(coi.getInReason());
+            duckDBAppender.append(coi.getRegDetail());
+            duckDBAppender.append(coi.getCurAddr());
+            duckDBAppender.append(coi.getRemark());
+            duckDBAppender.append(coi.getPhoto());
+            duckDBAppender.endRow();
+        } catch (SQLException e) {
+            log.error(e.getMessage(), e);
+        }
+        LuceneManager.add(new SearchDTO(coi.getId().toString(), null, null,
+                null, coi.str(), "criminal", coi.getFileName(), coi.getSheetName()));
+    }
+
+}

+ 51 - 0
src/main/java/com/qingjian/module/dm/clean/impl/loader/ExternalEntryRecLoader.java

@@ -0,0 +1,51 @@
+package com.qingjian.module.dm.clean.impl.loader;
+
+import com.qingjian.common.model.external.entity.EntryRec;
+import com.qingjian.common.model.otg.dto.SearchDTO;
+import com.qingjian.common.utils.LuceneManager;
+import com.qingjian.module.dm.clean.AbstractDataLoader;
+import lombok.extern.slf4j.Slf4j;
+
+import java.sql.SQLException;
+
+@Slf4j
+public class ExternalEntryRecLoader extends AbstractDataLoader<EntryRec, EntryRec> {
+
+    public ExternalEntryRecLoader() {
+        super("entry_rec");
+    }
+
+    @Override
+    protected void doWrite(EntryRec coi) {
+        if (duckDBAppender == null) {
+            return;
+        }
+        try {
+            duckDBAppender.beginRow();
+            duckDBAppender.append(coi.getId());
+            duckDBAppender.append(coi.getFileId());
+            duckDBAppender.append(coi.getSheetId());
+            duckDBAppender.append(coi.getCertType());
+            duckDBAppender.append(coi.getCertNo());
+            duckDBAppender.append(coi.getGender());
+            duckDBAppender.append(coi.getNation());
+            duckDBAppender.append(coi.getVisaType());
+            duckDBAppender.append(coi.getCid());
+            duckDBAppender.append(coi.getBirth());
+            duckDBAppender.append(coi.getIoDate());
+            duckDBAppender.append(coi.getIoTime());
+            duckDBAppender.append(coi.getPort());
+            duckDBAppender.append(coi.getTransport());
+            duckDBAppender.append(coi.getVehicle());
+            duckDBAppender.append(coi.getVisaNo());
+            duckDBAppender.append(coi.getCountry());
+            duckDBAppender.append(coi.getPhoto());
+            duckDBAppender.endRow();
+        } catch (SQLException e) {
+            log.error(e.getMessage(), e);
+        }
+        LuceneManager.add(new SearchDTO(coi.getId().toString(), null, null,
+                null, coi.str(), "entry_rec", coi.getFileName(), coi.getSheetName()));
+    }
+
+}

+ 77 - 0
src/main/java/com/qingjian/module/dm/clean/impl/loader/ExternalFugiCoLoader.java

@@ -0,0 +1,77 @@
+package com.qingjian.module.dm.clean.impl.loader;
+
+import com.qingjian.common.model.external.entity.FugiCo;
+import com.qingjian.common.model.otg.dto.SearchDTO;
+import com.qingjian.common.utils.LuceneManager;
+import com.qingjian.module.dm.clean.AbstractDataLoader;
+import lombok.extern.slf4j.Slf4j;
+
+import java.sql.SQLException;
+
+@Slf4j
+public class ExternalFugiCoLoader extends AbstractDataLoader<FugiCo, FugiCo> {
+
+    public ExternalFugiCoLoader() {
+        super("fugi_co");
+    }
+
+    @Override
+    protected void doWrite(FugiCo coi) {
+        if (duckDBAppender == null) {
+            return;
+        }
+        try {
+            duckDBAppender.beginRow();
+            duckDBAppender.append(coi.getId());
+            duckDBAppender.append(coi.getFileId());
+            duckDBAppender.append(coi.getSheetId());
+            duckDBAppender.append(coi.getName());
+            duckDBAppender.append(coi.getGender());
+            duckDBAppender.append(coi.getBirth());
+            duckDBAppender.append(coi.getCertNo());
+            duckDBAppender.append(coi.getEthnicity());
+            duckDBAppender.append(coi.getOrigin());
+            duckDBAppender.append(coi.getRegAddr());
+            duckDBAppender.append(coi.getWarrantNo());
+            duckDBAppender.append(coi.getFugiNo());
+            duckDBAppender.append(coi.getCaseNo());
+            duckDBAppender.append(coi.getRegName());
+            duckDBAppender.append(coi.getRegPerson());
+            duckDBAppender.append(coi.getRegOrg());
+            duckDBAppender.append(coi.getRegTime());
+            duckDBAppender.append(coi.getApproveTime());
+            duckDBAppender.append(coi.getRejectReason());
+            duckDBAppender.append(coi.getHeightMax());
+            duckDBAppender.append(coi.getHeightMin());
+            duckDBAppender.append(coi.getRegDist());
+            duckDBAppender.append(coi.getAccent());
+            duckDBAppender.append(coi.getFprintNo());
+            duckDBAppender.append(coi.getBounty());
+            duckDBAppender.append(coi.getCaseDate());
+            duckDBAppender.append(coi.getCaseUnitType());
+            duckDBAppender.append(coi.getCaseUnit());
+            duckDBAppender.append(coi.getOfficer());
+            duckDBAppender.append(coi.getMainUnitType());
+            duckDBAppender.append(coi.getMainOrg());
+            duckDBAppender.append(coi.getPhone());
+            duckDBAppender.append(coi.getCaseBrief());
+            duckDBAppender.append(coi.getCurDist());
+            duckDBAppender.append(coi.getCurAddr());
+            duckDBAppender.append(coi.getCaseType());
+            duckDBAppender.append(coi.getHuntLevel());
+            duckDBAppender.append(coi.getJobType());
+            duckDBAppender.append(coi.getPersonType());
+            duckDBAppender.append(coi.getModTime());
+            duckDBAppender.append(coi.getDnaNo());
+            duckDBAppender.append(coi.getFleeTime());
+            duckDBAppender.append(coi.getFleeDir());
+            duckDBAppender.append(coi.getPhoto());
+            duckDBAppender.endRow();
+        } catch (SQLException e) {
+            log.error(e.getMessage(), e);
+        }
+        LuceneManager.add(new SearchDTO(coi.getId().toString(), null, null,
+                null, coi.str(), "fugi_co", coi.getFileName(), coi.getSheetName()));
+    }
+
+}

+ 85 - 0
src/main/java/com/qingjian/module/dm/clean/impl/loader/ExternalFugiCoRevokeLoader.java

@@ -0,0 +1,85 @@
+package com.qingjian.module.dm.clean.impl.loader;
+
+import com.qingjian.common.model.external.entity.FugiCoRevoke;
+import com.qingjian.common.model.otg.dto.SearchDTO;
+import com.qingjian.common.utils.LuceneManager;
+import com.qingjian.module.dm.clean.AbstractDataLoader;
+import lombok.extern.slf4j.Slf4j;
+
+import java.sql.SQLException;
+
+@Slf4j
+public class ExternalFugiCoRevokeLoader extends AbstractDataLoader<FugiCoRevoke, FugiCoRevoke> {
+
+    public ExternalFugiCoRevokeLoader() {
+        super("fugi_co_revoke");
+    }
+
+    @Override
+    protected void doWrite(FugiCoRevoke coi) {
+        if (duckDBAppender == null) {
+            return;
+        }
+        try {
+            duckDBAppender.beginRow();
+            duckDBAppender.append(coi.getId());
+            duckDBAppender.append(coi.getFileId());
+            duckDBAppender.append(coi.getSheetId());
+            duckDBAppender.append(coi.getName());
+            duckDBAppender.append(coi.getGender());
+            duckDBAppender.append(coi.getBirth());
+            duckDBAppender.append(coi.getCertNo());
+            duckDBAppender.append(coi.getEthnicity());
+            duckDBAppender.append(coi.getOrigin());
+            duckDBAppender.append(coi.getRegAddr());
+            duckDBAppender.append(coi.getRevokeTime());
+            duckDBAppender.append(coi.getRevokeProcTime());
+            duckDBAppender.append(coi.getRevokeName());
+            duckDBAppender.append(coi.getWarrantNo());
+            duckDBAppender.append(coi.getFugiNo());
+            duckDBAppender.append(coi.getCaseNo());
+            duckDBAppender.append(coi.getRegName());
+            duckDBAppender.append(coi.getRegPerson());
+            duckDBAppender.append(coi.getRegOrg());
+            duckDBAppender.append(coi.getRegTime());
+            duckDBAppender.append(coi.getApproveTime());
+            duckDBAppender.append(coi.getRejectReason());
+            duckDBAppender.append(coi.getHeightMax());
+            duckDBAppender.append(coi.getHeightMin());
+            duckDBAppender.append(coi.getRegDist());
+            duckDBAppender.append(coi.getAccent());
+            duckDBAppender.append(coi.getFprintNo());
+            duckDBAppender.append(coi.getBounty());
+            duckDBAppender.append(coi.getCaseDate());
+            duckDBAppender.append(coi.getCaseUnitType());
+            duckDBAppender.append(coi.getCaseUnit());
+            duckDBAppender.append(coi.getOfficer());
+            duckDBAppender.append(coi.getMainUnitType());
+            duckDBAppender.append(coi.getMainUnit());
+            duckDBAppender.append(coi.getPhone());
+            duckDBAppender.append(coi.getCurDist());
+            duckDBAppender.append(coi.getFleeTime());
+            duckDBAppender.append(coi.getCurAddr());
+            duckDBAppender.append(coi.getCaseType());
+            duckDBAppender.append(coi.getHuntLevel());
+            duckDBAppender.append(coi.getJobType());
+            duckDBAppender.append(coi.getPersonType());
+            duckDBAppender.append(coi.getModTime());
+            duckDBAppender.append(coi.getDnaNo());
+            duckDBAppender.append(coi.getRevokeApprover());
+            duckDBAppender.append(coi.getCatchDate());
+            duckDBAppender.append(coi.getCatchWay());
+            duckDBAppender.append(coi.getCatchUnit());
+            duckDBAppender.append(coi.getCatchPlace());
+            duckDBAppender.append(coi.getFleeDir());
+            duckDBAppender.append(coi.getCaseBrief());
+            duckDBAppender.append(coi.getPhoto());
+            duckDBAppender.endRow();
+        } catch (SQLException e) {
+            log.error(e.getMessage(), e);
+        }
+        LuceneManager.add(new SearchDTO(coi.getId().toString(), null, null,
+                null, coi.str(), "fugi_co_revoke", coi.getFileName(), coi.getSheetName()));
+    }
+
+}

+ 81 - 0
src/main/java/com/qingjian/module/dm/clean/impl/loader/ExternalFugiRevokeLoader.java

@@ -0,0 +1,81 @@
+package com.qingjian.module.dm.clean.impl.loader;
+
+import com.qingjian.common.model.external.entity.FugiRevoke;
+import com.qingjian.common.model.otg.dto.SearchDTO;
+import com.qingjian.common.utils.LuceneManager;
+import com.qingjian.module.dm.clean.AbstractDataLoader;
+import lombok.extern.slf4j.Slf4j;
+
+import java.sql.SQLException;
+
+@Slf4j
+public class ExternalFugiRevokeLoader extends AbstractDataLoader<FugiRevoke, FugiRevoke> {
+
+    public ExternalFugiRevokeLoader() {
+        super("fugi_revoke");
+    }
+
+    @Override
+    protected void doWrite(FugiRevoke coi) {
+        if (duckDBAppender == null) {
+            return;
+        }
+        try {
+            duckDBAppender.beginRow();
+            duckDBAppender.append(coi.getId());
+            duckDBAppender.append(coi.getFileId());
+            duckDBAppender.append(coi.getSheetId());
+            duckDBAppender.append(coi.getName());
+            duckDBAppender.append(coi.getGender());
+            duckDBAppender.append(coi.getEthnicity());
+            duckDBAppender.append(coi.getCertNo());
+            duckDBAppender.append(coi.getBirth());
+            duckDBAppender.append(coi.getOrigin());
+            duckDBAppender.append(coi.getHeightMax());
+            duckDBAppender.append(coi.getHeightMin());
+            duckDBAppender.append(coi.getFugiNo());
+            duckDBAppender.append(coi.getPersonType());
+            duckDBAppender.append(coi.getJobType());
+            duckDBAppender.append(coi.getAccent());
+            duckDBAppender.append(coi.getFprintNo());
+            duckDBAppender.append(coi.getDnaNo());
+            duckDBAppender.append(coi.getWarrantNo());
+            duckDBAppender.append(coi.getCaseNo());
+            duckDBAppender.append(coi.getCaseType());
+            duckDBAppender.append(coi.getFleeTime());
+            duckDBAppender.append(coi.getFleeDir());
+            duckDBAppender.append(coi.getCaseUnitType());
+            duckDBAppender.append(coi.getCaseUnit());
+            duckDBAppender.append(coi.getCaseDate());
+            duckDBAppender.append(coi.getBounty());
+            duckDBAppender.append(coi.getCatchDate());
+            duckDBAppender.append(coi.getCatchDist());
+            duckDBAppender.append(coi.getCatchWay());
+            duckDBAppender.append(coi.getCatchUnit());
+            duckDBAppender.append(coi.getRegName());
+            duckDBAppender.append(coi.getRegTime());
+            duckDBAppender.append(coi.getRegOrg());
+            duckDBAppender.append(coi.getRevokeName());
+            duckDBAppender.append(coi.getRevokeTime());
+            duckDBAppender.append(coi.getRevokeApprover());
+            duckDBAppender.append(coi.getMainUnitType());
+            duckDBAppender.append(coi.getMainUnit());
+            duckDBAppender.append(coi.getOfficer());
+            duckDBAppender.append(coi.getPhone());
+            duckDBAppender.append(coi.getCatchDistCode());
+            duckDBAppender.append(coi.getCode());
+            duckDBAppender.append(coi.getRegDist());
+            duckDBAppender.append(coi.getRegAddr());
+            duckDBAppender.append(coi.getCurDist());
+            duckDBAppender.append(coi.getCurAddr());
+            duckDBAppender.append(coi.getCaseBrief());
+            duckDBAppender.append(coi.getPhoto());
+            duckDBAppender.endRow();
+        } catch (SQLException e) {
+            log.error(e.getMessage(), e);
+        }
+        LuceneManager.add(new SearchDTO(coi.getId().toString(), null, null,
+                null, coi.str(), "fugi_revoke", coi.getFileName(), coi.getSheetName()));
+    }
+
+}

+ 74 - 0
src/main/java/com/qingjian/module/dm/clean/impl/loader/ExternalFugitiveLoader.java

@@ -0,0 +1,74 @@
+package com.qingjian.module.dm.clean.impl.loader;
+
+import com.qingjian.common.model.external.entity.Fugitive;
+import com.qingjian.common.model.otg.dto.SearchDTO;
+import com.qingjian.common.utils.LuceneManager;
+import com.qingjian.module.dm.clean.AbstractDataLoader;
+import lombok.extern.slf4j.Slf4j;
+
+import java.sql.SQLException;
+
+@Slf4j
+public class ExternalFugitiveLoader extends AbstractDataLoader<Fugitive, Fugitive> {
+
+    public ExternalFugitiveLoader() {
+        super("fugitive");
+    }
+
+    @Override
+    protected void doWrite(Fugitive coi) {
+        if (duckDBAppender == null) {
+            return;
+        }
+        try {
+            duckDBAppender.beginRow();
+            duckDBAppender.append(coi.getId());
+            duckDBAppender.append(coi.getFileId());
+            duckDBAppender.append(coi.getSheetId());
+            duckDBAppender.append(coi.getName());
+            duckDBAppender.append(coi.getGender());
+            duckDBAppender.append(coi.getEthnicity());
+            duckDBAppender.append(coi.getCertNo());
+            duckDBAppender.append(coi.getBirth());
+            duckDBAppender.append(coi.getJobType());
+            duckDBAppender.append(coi.getHeightMax());
+            duckDBAppender.append(coi.getHeightMin());
+            duckDBAppender.append(coi.getAccent());
+            duckDBAppender.append(coi.getFugiNo());
+            duckDBAppender.append(coi.getPersonType());
+            duckDBAppender.append(coi.getFprintNo());
+            duckDBAppender.append(coi.getDnaNo());
+            duckDBAppender.append(coi.getFleeTime());
+            duckDBAppender.append(coi.getWarrantNo());
+            duckDBAppender.append(coi.getCaseNo());
+            duckDBAppender.append(coi.getCaseType());
+            duckDBAppender.append(coi.getCaseUnitType());
+            duckDBAppender.append(coi.getCaseUnit());
+            duckDBAppender.append(coi.getCaseDate());
+            duckDBAppender.append(coi.getHuntLevel());
+            duckDBAppender.append(coi.getBounty());
+            duckDBAppender.append(coi.getRegName());
+            duckDBAppender.append(coi.getRegTime());
+            duckDBAppender.append(coi.getModTime());
+            duckDBAppender.append(coi.getMainUnitType());
+            duckDBAppender.append(coi.getOfficer());
+            duckDBAppender.append(coi.getPhone());
+            duckDBAppender.append(coi.getRegOrg());
+            duckDBAppender.append(coi.getMainOrg());
+            duckDBAppender.append(coi.getRegDist());
+            duckDBAppender.append(coi.getRegAddr());
+            duckDBAppender.append(coi.getCurDist());
+            duckDBAppender.append(coi.getCurAddr());
+            duckDBAppender.append(coi.getOrigin());
+            duckDBAppender.append(coi.getFleeDir());
+            duckDBAppender.append(coi.getCaseBrief());
+            duckDBAppender.append(coi.getPhoto());
+            duckDBAppender.endRow();
+        } catch (SQLException e) {
+            log.error(e.getMessage(), e);
+        }
+        LuceneManager.add(new SearchDTO(coi.getId().toString(), null, null,
+                null, coi.str(), "fugitive", coi.getFileName(), coi.getSheetName()));
+    }
+
+}

+ 51 - 0
src/main/java/com/qingjian/module/dm/clean/impl/loader/ExternalHouseholdLoader.java

@@ -0,0 +1,51 @@
+package com.qingjian.module.dm.clean.impl.loader;
+
+import com.qingjian.common.model.external.entity.Household;
+import com.qingjian.common.model.otg.dto.SearchDTO;
+import com.qingjian.common.utils.LuceneManager;
+import com.qingjian.module.dm.clean.AbstractDataLoader;
+import lombok.extern.slf4j.Slf4j;
+
+import java.sql.SQLException;
+
+@Slf4j
+public class ExternalHouseholdLoader extends AbstractDataLoader<Household, Household> {
+
+    public ExternalHouseholdLoader() {
+        super("household");
+    }
+
+    @Override
+    protected void doWrite(Household coi) {
+        if (duckDBAppender == null) {
+            return;
+        }
+        try {
+            duckDBAppender.beginRow();
+            duckDBAppender.append(coi.getId());
+            duckDBAppender.append(coi.getFileId());
+            duckDBAppender.append(coi.getSheetId());
+            duckDBAppender.append(coi.getAge());
+            duckDBAppender.append(coi.getHeight());
+            duckDBAppender.append(coi.getJob());
+            duckDBAppender.append(coi.getEdu());
+            duckDBAppender.append(coi.getStatus());
+            duckDBAppender.append(coi.getOriginCountry());
+            duckDBAppender.append(coi.getCompany());
+            duckDBAppender.append(coi.getRelation());
+            duckDBAppender.append(coi.getRegDist());
+            duckDBAppender.append(coi.getBirthCountry());
+            duckDBAppender.append(coi.getBirthDist());
+            duckDBAppender.append(coi.getMilStatus());
+            duckDBAppender.append(coi.getMarital());
+            duckDBAppender.append(coi.getDeathDate());
+            duckDBAppender.append(coi.getPhoto());
+            duckDBAppender.endRow();
+        } catch (SQLException e) {
+            log.error(e.getMessage(), e);
+        }
+        LuceneManager.add(new SearchDTO(coi.getId().toString(), null, null,
+                null, coi.str(), "household", coi.getFileName(), coi.getSheetName()));
+    }
+
+}

+ 50 - 0
src/main/java/com/qingjian/module/dm/clean/impl/loader/ExternalLicInfoLoader.java

@@ -0,0 +1,50 @@
+package com.qingjian.module.dm.clean.impl.loader;
+
+import com.qingjian.common.model.external.entity.LicInfo;
+import com.qingjian.common.model.otg.dto.SearchDTO;
+import com.qingjian.common.utils.LuceneManager;
+import com.qingjian.module.dm.clean.AbstractDataLoader;
+import lombok.extern.slf4j.Slf4j;
+
+import java.sql.SQLException;
+
+@Slf4j
+public class ExternalLicInfoLoader extends AbstractDataLoader<LicInfo, LicInfo> {
+
+    public ExternalLicInfoLoader() {
+        super("lic_info");
+    }
+
+    @Override
+    protected void doWrite(LicInfo coi) {
+        if (duckDBAppender == null) {
+            return;
+        }
+        try {
+            duckDBAppender.beginRow();
+            duckDBAppender.append(coi.getId());
+            duckDBAppender.append(coi.getFileId());
+            duckDBAppender.append(coi.getSheetId());
+            duckDBAppender.append(coi.getNation());
+            duckDBAppender.append(coi.getFirstDate());
+            duckDBAppender.append(coi.getTmpResNo());
+            duckDBAppender.append(coi.getVehType());
+            duckDBAppender.append(coi.getOrigType());
+            duckDBAppender.append(coi.getIssOrg());
+            duckDBAppender.append(coi.getLicTerm());
+            duckDBAppender.append(coi.getStatus());
+            duckDBAppender.append(coi.getOverScoreDate());
+            duckDBAppender.append(coi.getScore());
+            duckDBAppender.append(coi.getRegAddr());
+            duckDBAppender.append(coi.getFileNo());
+            duckDBAppender.append(coi.getContactAddr());
+            duckDBAppender.append(coi.getPhoto());
+            duckDBAppender.endRow();
+        } catch (SQLException e) {
+            log.error(e.getMessage(), e);
+        }
+        LuceneManager.add(new SearchDTO(coi.getId().toString(), null, null,
+                null, coi.str(), "lic_info", coi.getFileName(), coi.getSheetName()));
+    }
+
+}

+ 46 - 0
src/main/java/com/qingjian/module/dm/clean/impl/loader/ExternalVehViolationLoader.java

@@ -0,0 +1,46 @@
+package com.qingjian.module.dm.clean.impl.loader;
+
+import com.qingjian.common.model.external.entity.VehViolation;
+import com.qingjian.common.model.otg.dto.SearchDTO;
+import com.qingjian.common.utils.LuceneManager;
+import com.qingjian.module.dm.clean.AbstractDataLoader;
+import lombok.extern.slf4j.Slf4j;
+
+import java.sql.SQLException;
+
+@Slf4j
+public class ExternalVehViolationLoader extends AbstractDataLoader<VehViolation, VehViolation> {
+
+    public ExternalVehViolationLoader() {
+        super("veh_violation");
+    }
+
+    @Override
+    protected void doWrite(VehViolation coi) {
+        if (duckDBAppender == null) {
+            return;
+        }
+        try {
+            duckDBAppender.beginRow();
+            duckDBAppender.append(coi.getId());
+            duckDBAppender.append(coi.getFileId());
+            duckDBAppender.append(coi.getSheetId());
+            duckDBAppender.append(coi.getPerson());
+            duckDBAppender.append(coi.getLicNo());
+            duckDBAppender.append(coi.getPlateType());
+            duckDBAppender.append(coi.getPlateNo());
+            duckDBAppender.append(coi.getViolTime());
+            duckDBAppender.append(coi.getViolAddr());
+            duckDBAppender.append(coi.getDealTime());
+            duckDBAppender.append(coi.getDealOrg());
+            duckDBAppender.append(coi.getViolAct());
+            duckDBAppender.append(coi.getPhoto());
+            duckDBAppender.endRow();
+        } catch (SQLException e) {
+            log.error(e.getMessage(), e);
+        }
+        LuceneManager.add(new SearchDTO(coi.getId().toString(), null, null,
+                null, coi.str(), "veh_violation", coi.getFileName(), coi.getSheetName()));
+    }
+
+}

+ 46 - 0
src/main/java/com/qingjian/module/dm/clean/impl/loader/ExternalVehicleInfoLoader.java

@@ -0,0 +1,46 @@
+package com.qingjian.module.dm.clean.impl.loader;
+
+import com.qingjian.common.model.external.entity.VehicleInfo;
+import com.qingjian.common.model.otg.dto.SearchDTO;
+import com.qingjian.common.utils.LuceneManager;
+import com.qingjian.module.dm.clean.AbstractDataLoader;
+import lombok.extern.slf4j.Slf4j;
+
+import java.sql.SQLException;
+
+@Slf4j
+public class ExternalVehicleInfoLoader extends AbstractDataLoader<VehicleInfo, VehicleInfo> {
+
+    public ExternalVehicleInfoLoader() {
+        super("vehicle_info");
+    }
+
+    @Override
+    protected void doWrite(VehicleInfo coi) {
+        if (duckDBAppender == null) {
+            return;
+        }
+        try {
+            duckDBAppender.beginRow();
+            duckDBAppender.append(coi.getId());
+            duckDBAppender.append(coi.getFileId());
+            duckDBAppender.append(coi.getSheetId());
+            duckDBAppender.append(coi.getEngModel());
+            duckDBAppender.append(coi.getFuelType());
+            duckDBAppender.append(coi.getEngCc());
+            duckDBAppender.append(coi.getEngPwr());
+            duckDBAppender.append(coi.getLoadCap());
+            duckDBAppender.append(coi.getSeatCnt());
+            duckDBAppender.append(coi.getMadeDate());
+            duckDBAppender.append(coi.getAddr());
+            duckDBAppender.append(coi.getTmpAddr());
+            duckDBAppender.append(coi.getPhoto());
+            duckDBAppender.endRow();
+        } catch (SQLException e) {
+            log.error(e.getMessage(), e);
+        }
+        LuceneManager.add(new SearchDTO(coi.getId().toString(), null, null,
+                null, coi.str(), "vehicle_info", coi.getFileName(), coi.getSheetName()));
+    }
+
+}