DESKTOP-6LTVLN7\Liumouren 1 mese fa
parent
commit
fe6059fed3

+ 1 - 0
pom.xml

@@ -42,6 +42,7 @@
         <dependency>
         <dependency>
             <groupId>org.springframework.boot</groupId>
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter-web</artifactId>
             <artifactId>spring-boot-starter-web</artifactId>
+<!--        本地运行要注释掉,打war包的时候要放开-->
             <!--<exclusions>
             <!--<exclusions>
                 <exclusion>
                 <exclusion>
                     <groupId>org.springframework.boot</groupId>
                     <groupId>org.springframework.boot</groupId>

+ 28 - 6
src/main/java/com/skyversation/poiaddr/controller/CorporateLibraryController.java

@@ -167,30 +167,52 @@ public class CorporateLibraryController {
 
 
     /**
     /**
      * 121服务器开放接口,入湖
      * 121服务器开放接口,入湖
+     *
      * @param Datas TyyszAddress
      * @param Datas TyyszAddress
      * @return
      * @return
      */
      */
     @PostMapping(value = "/saveDatasToSJBigDataKafka")
     @PostMapping(value = "/saveDatasToSJBigDataKafka")
-    public Object saveDatasToSJBigDataKafka(@RequestBody JSONObject Datas){
-        return yyskAddressStandardizationService.saveDatasToSJBigDataKafka(Datas);
+    public Object saveDatasToSJBigDataKafka(@RequestBody Map<String, Object> Datas) {
+        JSONObject outDatas = new JSONObject();
+        for (String key : Datas.keySet()) {
+            outDatas.put(key, Datas.get(key));
+        }
+        return yyskAddressStandardizationService.saveDatasToSJBigDataKafka(outDatas);
     }
     }
 
 
     /**
     /**
      * 本地调用121入湖接口
      * 本地调用121入湖接口
+     *
      * @param startOidIndex 按照批次来讲的话,现在是第二批数据也就是2kw,同时也是固定值
      * @param startOidIndex 按照批次来讲的话,现在是第二批数据也就是2kw,同时也是固定值
-     * @param page 从0开始
-     * @param pageSize 一次5000条
+     * @param page          从0开始
+     * @param pageSize      一次5000条
      * @return
      * @return
      */
      */
     @PostMapping(value = "/tyaToServer")
     @PostMapping(value = "/tyaToServer")
-    public Object tyaToServer(@RequestParam(name = "startOidIndex") Integer startOidIndex,@RequestParam(name = "page") Integer page,@RequestParam(name = "pageSize") Integer pageSize){
+    public Object tyaToServer(@RequestParam(name = "startOidIndex") Integer startOidIndex, @RequestParam(name = "page") Integer page, @RequestParam(name = "pageSize") Integer pageSize) {
         long startTime = System.currentTimeMillis();
         long startTime = System.currentTimeMillis();
         startOidIndex = startOidIndex + (page * pageSize);
         startOidIndex = startOidIndex + (page * pageSize);
-        yyskAddressStandardizationService.tyaToServer(startOidIndex,page,pageSize);
+        yyskAddressStandardizationService.tyaToServer(startOidIndex, page, pageSize);
         long endTime = System.currentTimeMillis();
         long endTime = System.currentTimeMillis();
+        try {
+            ExcelReaderUtils.writeToExcel(ScheduledTasks.LogInfos, "C:\\Users\\Liumouren\\Desktop\\logInfos_" + startTime + ".xlsx");
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
         return "处理完成!用时" + (endTime - startTime) / 1000 + "秒!";
         return "处理完成!用时" + (endTime - startTime) / 1000 + "秒!";
     }
     }
 
 
+    /**
+     * 本地调用121入湖接口,程序暂停
+     *
+     * @return
+     */
+    @PostMapping(value = "/serverPause")
+    public Object updatePauseTag(@RequestParam(name = "pauseTag") Integer pauseTag) {
+        ScheduledTasks.pauseTag = pauseTag != 0;
+        return ScheduledTasks.pauseTag;
+    }
+
     /**
     /**
      * fileRootPath:单个文件目录
      * fileRootPath:单个文件目录
      * pageSize: 批次请求数据条数
      * pageSize: 批次请求数据条数

+ 233 - 0
src/main/java/com/skyversation/poiaddr/entity/YyszAddressV3.java

@@ -0,0 +1,233 @@
+package com.skyversation.poiaddr.entity;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.Table;
+import javax.persistence.Id;
+import java.io.Serializable;
+import java.util.Date;
+import java.math.BigDecimal;
+
+/**
+ * @Description  
+ * @Author  LiuMengxiang
+ * @Date 2025-06-02 19:46:19 
+ */
+
+@AllArgsConstructor
+@NoArgsConstructor
+@Data
+@Entity
+@Table ( name ="yysz_address_v3" , schema = "")
+public class YyszAddressV3  implements Serializable {
+
+	private static final long serialVersionUID =  499046165792629376L;
+
+	@Id
+   	@Column(name = "oid" )
+	private Long oid;
+
+   	@Column(name = "code" )
+	private String code;
+
+   	@Column(name = "sourceaddress" )
+	private String sourceaddress;
+
+   	@Column(name = "city" )
+	private String city;
+
+   	@Column(name = "county" )
+	private String county;
+
+   	@Column(name = "town" )
+	private String town;
+
+   	@Column(name = "community" )
+	private String community;
+
+   	@Column(name = "village" )
+	private String village;
+
+   	@Column(name = "squad" )
+	private String squad;
+
+   	@Column(name = "szone" )
+	private String szone;
+
+   	@Column(name = "street" )
+	private String street;
+
+   	@Column(name = "door" )
+	private String door;
+
+   	@Column(name = "resregion" )
+	private String resregion;
+
+   	@Column(name = "building" )
+	private String building;
+
+   	@Column(name = "building_num" )
+	private String buildingNum;
+
+   	@Column(name = "unit" )
+	private String unit;
+
+   	@Column(name = "floor" )
+	private String floor;
+
+   	@Column(name = "room" )
+	private String room;
+
+   	@Column(name = "unique_code" )
+	private String uniqueCode;
+
+   	@Column(name = "room_of_floor" )
+	private Long roomOfFloor;
+
+   	@Column(name = "source" )
+	private String source;
+
+   	@Column(name = "lon" )
+	private BigDecimal lon;
+
+   	@Column(name = "lat" )
+	private BigDecimal lat;
+
+   	@Column(name = "shape" )
+	private String shape;
+
+   	@Column(name = "belong_building" )
+	private String belongBuilding;
+
+   	@Column(name = "address_type" )
+	private Long addressType;
+
+   	@Column(name = "lv" )
+	private Long lv;
+
+   	@Column(name = "is_delete" )
+	private Long isDelete;
+
+   	@Column(name = "is_multi" )
+	private Long isMulti;
+
+   	@Column(name = "createtime" )
+	private Date createtime;
+
+   	@Column(name = "updatetime" )
+	private Date updatetime;
+
+   	@Column(name = "alt" )
+	private BigDecimal alt;
+
+   	@Column(name = "model_type" )
+	private Long modelType;
+
+   	@Column(name = "full_place" )
+	private String fullPlace;
+
+   	@Column(name = "security_grade" )
+	private Long securityGrade;
+
+   	@Column(name = "city_code" )
+	private String cityCode;
+
+   	@Column(name = "county_code" )
+	private String countyCode;
+
+   	@Column(name = "town_code" )
+	private String townCode;
+
+   	@Column(name = "community_code" )
+	private String communityCode;
+
+   	@Column(name = "grid_name" )
+	private String gridName;
+
+   	@Column(name = "grid_code" )
+	private String gridCode;
+
+   	@Column(name = "data_type" )
+	private String dataType;
+
+   	@Column(name = "mphid" )
+	private String mphid;
+
+   	@Column(name = "address_code" )
+	private String addressCode;
+
+   	@Column(name = "systemid" )
+	private String systemid;
+
+   	@Column(name = "type" )
+	private String type;
+
+   	@Column(name = "x" )
+	private String X;
+
+   	@Column(name = "y" )
+	private String Y;
+
+   	@Column(name = "label" )
+	private String label;
+
+   	@Column(name = "addr_tag" )
+	private String addrTag;
+
+   	@Column(name = "multiple_unique" )
+	private String multipleUnique;
+
+   	@Column(name = "standardize_task_id" )
+	private String standardizeTaskId;
+
+   	@Column(name = "dlhh" )
+	private String dlhh;
+
+   	@Column(name = "signature_data" )
+	private String signatureData;
+
+   	@Column(name = "signature_check_state" )
+	private Long signatureCheckState;
+
+   	@Column(name = "signature_time" )
+	private Date signatureTime;
+
+   	@Column(name = "signature_check_time" )
+	private Date signatureCheckTime;
+
+   	@Column(name = "is_history" )
+	private Long isHistory;
+
+   	@Column(name = "ylmc" )
+	private String ylmc;
+
+   	@Column(name = "ylbm" )
+	private String ylbm;
+
+   	@Column(name = "address" )
+	private String address;
+
+   	@Column(name = "ybdd" )
+	private String ybdd;
+
+   	@Column(name = "location" )
+	private String location;
+
+   	@Column(name = "tydz_jc" )
+	private String tydzJc;
+
+   	@Column(name = "match_level" )
+	private String matchLevel;
+
+   	@Column(name = "no1" )
+	private String no1;
+
+   	@Column(name = "no2" )
+	private String no2;
+
+   	@Column(name = "is_new" )
+	private Boolean isNew;
+}

+ 7 - 0
src/main/java/com/skyversation/poiaddr/service/AreaService.java

@@ -43,6 +43,9 @@ public class AreaService {
     @Autowired
     @Autowired
     private TyyszAddressV3Service tyyszAddressV3Service;
     private TyyszAddressV3Service tyyszAddressV3Service;
 
 
+    @Autowired
+    private YyszAddressV3Service yyszAddressV3Service;
+
     @Autowired
     @Autowired
     private YyskAddressStandardizationSerice yyskAddressStandardizationSerice;
     private YyskAddressStandardizationSerice yyskAddressStandardizationSerice;
 
 
@@ -136,6 +139,10 @@ public class AreaService {
         return tyyszAddressV3Service.getDataByPages(page,pageSize);
         return tyyszAddressV3Service.getDataByPages(page,pageSize);
     }
     }
 
 
+    public Page<YyszAddressV3> getTyaData2ByPage(Integer page, Integer pageSize){
+        return yyszAddressV3Service.getDataByPages(page,pageSize);
+    }
+
     public List<YyszAddressQp> saveYyszAddressQp(List<YyszAddressQp> amapAddressV3List){
     public List<YyszAddressQp> saveYyszAddressQp(List<YyszAddressQp> amapAddressV3List){
         return yyszAddressQpService.saveYyszAddressQp(amapAddressV3List);
         return yyszAddressQpService.saveYyszAddressQp(amapAddressV3List);
     }
     }

+ 10 - 0
src/main/java/com/skyversation/poiaddr/service/YyszAddressV3Repository.java

@@ -0,0 +1,10 @@
+package com.skyversation.poiaddr.service;
+
+import com.skyversation.poiaddr.entity.YyszAddressV3;
+import org.springframework.data.jpa.repository.JpaRepository;
+
+import javax.annotation.Resource;
+
+@Resource
+public interface YyszAddressV3Repository extends JpaRepository<YyszAddressV3, String> {
+}

+ 36 - 10
src/main/java/com/skyversation/poiaddr/service/impl/YyskAddressStandardizationServiceImpl.java

@@ -5,7 +5,6 @@ import com.alibaba.fastjson.JSONObject;
 import com.skyversation.poiaddr.addquery.AddressQueryEngine;
 import com.skyversation.poiaddr.addquery.AddressQueryEngine;
 import com.skyversation.poiaddr.bean.AddressResult;
 import com.skyversation.poiaddr.bean.AddressResult;
 import com.skyversation.poiaddr.bean.GeoJsonBean;
 import com.skyversation.poiaddr.bean.GeoJsonBean;
-import com.skyversation.poiaddr.bean.SplitAddress;
 import com.skyversation.poiaddr.config.DbConnection;
 import com.skyversation.poiaddr.config.DbConnection;
 import com.skyversation.poiaddr.entity.*;
 import com.skyversation.poiaddr.entity.*;
 import com.skyversation.poiaddr.service.AreaService;
 import com.skyversation.poiaddr.service.AreaService;
@@ -15,6 +14,8 @@ import com.skyversation.poiaddr.util.tasks.ScheduledTasks;
 import org.springframework.data.domain.Page;
 import org.springframework.data.domain.Page;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
 
 
+import javax.persistence.EntityManager;
+import javax.persistence.PersistenceContext;
 import java.io.BufferedReader;
 import java.io.BufferedReader;
 import java.io.FileReader;
 import java.io.FileReader;
 import java.io.FileWriter;
 import java.io.FileWriter;
@@ -24,8 +25,10 @@ import java.sql.PreparedStatement;
 import java.sql.SQLException;
 import java.sql.SQLException;
 import java.sql.Types;
 import java.sql.Types;
 import java.text.SimpleDateFormat;
 import java.text.SimpleDateFormat;
+import java.time.Instant;
 import java.time.LocalDate;
 import java.time.LocalDate;
 import java.time.LocalDateTime;
 import java.time.LocalDateTime;
+import java.time.ZoneId;
 import java.time.format.DateTimeFormatter;
 import java.time.format.DateTimeFormatter;
 import java.util.*;
 import java.util.*;
 import java.util.concurrent.ExecutionException;
 import java.util.concurrent.ExecutionException;
@@ -47,6 +50,9 @@ import java.util.concurrent.Future;
 @Service
 @Service
 public class YyskAddressStandardizationServiceImpl {
 public class YyskAddressStandardizationServiceImpl {
 
 
+    @PersistenceContext
+    private EntityManager entityManager;
+
     //  下载所有数据到xlsx
     //  下载所有数据到xlsx
     public void uploadDataBase(String tableName) {
     public void uploadDataBase(String tableName) {
         try {
         try {
@@ -572,17 +578,15 @@ public class YyskAddressStandardizationServiceImpl {
 
 
 
 
     public void tyaToServer(Integer startOidIndex, Integer page, Integer pageSize) {
     public void tyaToServer(Integer startOidIndex, Integer page, Integer pageSize) {
-        System.out.println("page:" + page + "pageSize:" + pageSize);
+        System.out.println("page:" + page + "pageSize:" + pageSize);
         long startTime = System.currentTimeMillis();
         long startTime = System.currentTimeMillis();
-        Page<TYyszAddress> sqlDatas = AreaService.getInstance().getTyaDataByPage(page, pageSize);
-        List<TYyszAddress> tYyszAddressList = sqlDatas.getContent();
+        Page<YyszAddressV3> sqlDatas = AreaService.getInstance().getTyaData2ByPage(page, pageSize);
+        List<YyszAddressV3> tYyszAddressList = sqlDatas.getContent();
         JSONObject dataList = new JSONObject();
         JSONObject dataList = new JSONObject();
 //          操作类型 1:新增,2:更新3:删除
 //          操作类型 1:新增,2:更新3:删除
         dataList.put("optFlag", 1);
         dataList.put("optFlag", 1);
         JSONArray datas = new JSONArray();
         JSONArray datas = new JSONArray();
-        for (TYyszAddress tYyszAddress : tYyszAddressList) {
-            tYyszAddress.setOid(Long.valueOf(startOidIndex));
-            startOidIndex++;
+        for (YyszAddressV3 tYyszAddress : tYyszAddressList) {
             JSONObject dataItem = new JSONObject();
             JSONObject dataItem = new JSONObject();
             dataItem.put("oid", Long.valueOf(startOidIndex));
             dataItem.put("oid", Long.valueOf(startOidIndex));
             startOidIndex++;
             startOidIndex++;
@@ -601,21 +605,43 @@ public class YyskAddressStandardizationServiceImpl {
             datas.add(dataItem);
             datas.add(dataItem);
         }
         }
         dataList.put("data", datas);
         dataList.put("data", datas);
-        tYyszAddressList.clear();
 //      TODO 发送远程请求
 //      TODO 发送远程请求
+        Map<String,Object> logItem = new HashMap<>();
+        logItem.put("page",page);
+        logItem.put("pageSize",pageSize);
+        entityManager.clear();
         try {
         try {
-            System.out.println(AddressQueryEngine.getInstance().putDataToSJ_Big_Data_kafka_server(dataList));
+            String resStr = AddressQueryEngine.getInstance().putDataToSJ_Big_Data_kafka_server(dataList).toString();
+            logItem.put("res",resStr);
+            System.out.println(resStr);
         } catch (Exception e) {
         } catch (Exception e) {
             e.printStackTrace();
             e.printStackTrace();
+            String resStr = e.toString();
+            logItem.put("res",resStr);
             System.err.println(page + "页数据入湖异常" + e);
             System.err.println(page + "页数据入湖异常" + e);
         }
         }
         long endTime = System.currentTimeMillis();
         long endTime = System.currentTimeMillis();
+        logItem.put("startTime",timestampToDateTime(startTime));
+        logItem.put("endTime",timestampToDateTime(endTime));
+        ScheduledTasks.LogInfos.add(logItem);
         System.out.println("单批数据处理完成,用时:" + (endTime - startTime) / 1000 + "秒!");
         System.out.println("单批数据处理完成,用时:" + (endTime - startTime) / 1000 + "秒!");
-        if (sqlDatas.getTotalPages() > page) {
+        if (sqlDatas.getTotalPages() > page && !ScheduledTasks.pauseTag) {
             page++;
             page++;
             tyaToServer(startOidIndex, page, pageSize);
             tyaToServer(startOidIndex, page, pageSize);
         }
         }
     }
     }
+    public static String timestampToDateTime(long timestamp) {
+        // 将时间戳转换为LocalDateTime对象
+        LocalDateTime dateTime = Instant.ofEpochMilli(timestamp)
+                .atZone(ZoneId.systemDefault())
+                .toLocalDateTime();
+
+        // 定义日期时间格式
+        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
+
+        // 格式化日期时间
+        return dateTime.format(formatter);
+    }
 
 
     public void readFileToPg(String fileRootPath, Integer startFileIndex, Integer endFileIndex, Integer sort, Integer pageSize) {
     public void readFileToPg(String fileRootPath, Integer startFileIndex, Integer endFileIndex, Integer sort, Integer pageSize) {
         System.out.println("<<<<<<<<------readFileToPg{fileIndex:" + startFileIndex + "}");
         System.out.println("<<<<<<<<------readFileToPg{fileIndex:" + startFileIndex + "}");

+ 23 - 0
src/main/java/com/skyversation/poiaddr/service/impl/YyszAddressV3Service.java

@@ -0,0 +1,23 @@
+package com.skyversation.poiaddr.service.impl;
+
+import com.skyversation.poiaddr.entity.YyszAddressV3;
+import com.skyversation.poiaddr.service.YyszAddressV3Repository;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.PageRequest;
+import org.springframework.data.domain.Pageable;
+import org.springframework.stereotype.Service;
+
+
+@Service
+public class YyszAddressV3Service {
+
+    @Autowired
+    private YyszAddressV3Repository yyszAddressV3Repository;
+
+    public Page<YyszAddressV3> getDataByPages(Integer page, Integer pageSize){
+        Pageable pageable = PageRequest.of(page,pageSize);
+        return yyszAddressV3Repository.findAll(pageable);
+    }
+
+}

+ 147 - 24
src/main/java/com/skyversation/poiaddr/util/RequestUtils.java

@@ -15,9 +15,13 @@ import org.json.simple.JSONObject;
 import org.json.simple.parser.JSONParser;
 import org.json.simple.parser.JSONParser;
 
 
 import java.io.FileWriter;
 import java.io.FileWriter;
+import java.time.LocalDate;
+import java.time.format.DateTimeFormatter;
 import java.util.ArrayList;
 import java.util.ArrayList;
+import java.util.HashMap;
 import java.util.List;
 import java.util.List;
 import java.util.Map;
 import java.util.Map;
+import java.util.concurrent.ThreadLocalRandom;
 
 
 /**
 /**
  * 地址查询请求工具类
  * 地址查询请求工具类
@@ -44,30 +48,6 @@ public class RequestUtils {
         }
         }
     }
     }
 
 
-    public static void main(String[] args) {
-        com.alibaba.fastjson.JSONObject AllData = new com.alibaba.fastjson.JSONObject();
-        JSONArray featuresList = new JSONArray();
-        for (int i = 1; i <= 7282; i++) {
-            if (i == 7282) {
-                String requestData = requestWFS(i + "");
-                com.alibaba.fastjson.JSONObject requestJson = com.alibaba.fastjson.JSONObject.parseObject(requestData);
-                if (requestJson.containsKey("features")) {
-                    featuresList.add(requestJson.getJSONArray("features").getJSONObject(0));
-                }
-            }
-        }
-        AllData.put("features", featuresList);
-        AllData.put("type", "FeatureCollection");
-        System.out.println("内容大小:" + featuresList.size());
-        String jsonString = AllData.toJSONString();
-        String filePath = "output/cj_1.geojson";
-        try (FileWriter fileWriter = new FileWriter(filePath)) {
-            fileWriter.write(jsonString);
-            System.out.println("完成!");
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
-    }
 
 
     public static String requestWFS(String index) {
     public static String requestWFS(String index) {
         try (CloseableHttpClient httpClient = HttpClients.createDefault()) {
         try (CloseableHttpClient httpClient = HttpClients.createDefault()) {
@@ -177,4 +157,147 @@ public class RequestUtils {
             return null;
             return null;
         }
         }
     }
     }
+
+    public static String getPreviousDateStr(int day) {
+//      获取当前日期
+        LocalDate currentDate = LocalDate.now();
+//      获取前一天的日期
+        LocalDate previousDate = currentDate.minusDays(day);
+//      定义日期格式
+        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy/MM/dd");
+//      返回前一天的日期字符串
+        return previousDate.format(formatter);
+    }
+
+    /**
+     * 先得到headers
+     * 然后初始化outData
+     * 得到问题类型列表
+     * 写随机日期(+【0-2】)和随机类型(errorTypes【errorTypes.size】)和异常数量((1-20)*(1-20))
+     * 日期[1月2号-5月10号]
+     */
+    public static void testFile() {
+        int daysum = 148;
+        Map<String,Integer> errorR = new HashMap<>();
+        List<String> tableNameList = new ArrayList<>();
+        List<String> errorTypes = new ArrayList<>();
+//      表名,《关键字段【数据库信息,表中文注释】,值》
+        Map<String, Map<String, String>> headers = new HashMap<>();
+//      表名,问题类型,数量
+        Map<String, Map<String, Integer>> outData = new HashMap<>();
+        try {
+            List<Map<String, Object>> fileDatas = ExcelReaderUtils.readExcel("C:\\Users\\Liumouren\\Desktop\\异常数据清单 列表.xlsx");
+            for (Map<String, Object> fileDataItem : fileDatas) {
+                if (fileDataItem.get("源数据库信息") != null && !fileDataItem.get("源数据库信息").toString().isEmpty()) {
+                    String dataBaseInfo = fileDataItem.get("源数据库信息").toString();
+                    String tableInfo = fileDataItem.get("表中文注释").toString();
+                    String tableName = fileDataItem.get("表名").toString();
+                    String errorType = fileDataItem.get("判断异常原因").toString();
+                    Integer errorNum = Integer.parseInt(fileDataItem.get("异常数据量").toString().replaceAll(".0", ""));
+                    tableNameList.add(tableName);
+                    errorTypes.add(errorType);
+                    errorR.put(errorType,errorNum);
+                    Map<String, String> header = new HashMap<>();
+                    header.put("源数据库信息", dataBaseInfo);
+                    header.put("表中文注释", tableInfo);
+                    headers.put(tableName, header);
+                    if (outData.containsKey(tableName)) {
+                        Map<String, Integer> errorMap = outData.get(tableName);
+                        if (errorMap.containsKey(errorType)) {
+                            errorMap.put(errorType, errorMap.get(errorType) + errorNum);
+                        } else {
+                            errorMap.put(errorType, errorNum);
+                        }
+
+                    } else {
+                        Map<String, Integer> errorMap = new HashMap<>();
+                        errorMap.put(errorType, errorNum);
+                        outData.put(tableName, errorMap);
+                    }
+                }
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+
+//      序号
+        int rowIndex = 1;
+        List<Map<String, Object>> outputDatas = new ArrayList<>();
+        while (daysum > 20) {
+//          检查日期
+            String updateTime = getPreviousDateStr(daysum);
+            daysum = daysum - ThreadLocalRandom.current().nextInt(1, 3);
+//          设置随机检查几个表
+            int tableNum = ThreadLocalRandom.current().nextInt(1, tableNameList.size() + 1);
+            while (tableNum > 0) {
+                String tableName = tableNameList.get(ThreadLocalRandom.current().nextInt(0, tableNameList.size()));
+                tableNum--;
+//              设置随机检查几个类型
+                int errorNum = ThreadLocalRandom.current().nextInt(1, errorTypes.size() + 1);
+                while (errorNum > 0) {
+//                  得到随机问题类型
+                    String errorTypeStr = errorTypes.get(ThreadLocalRandom.current().nextInt(0, errorTypes.size()));
+//                  设置一个随机错误数量
+                    int errorNums = ThreadLocalRandom.current().nextInt(0, 11) * ThreadLocalRandom.current().nextInt(0, errorR.get(errorTypeStr));
+                    errorNum--;
+//                  写入行
+                    Map<String, Object> outDataItem = new HashMap<>();
+                    outDataItem.put("序号", rowIndex);
+                    rowIndex++;
+                    outDataItem.put("源数据库信息", headers.get(tableName).get("源数据库信息"));
+                    outDataItem.put("表中文注释", headers.get(tableName).get("表中文注释"));
+                    outDataItem.put("表名", tableName);
+                    outDataItem.put("判断异常原因", errorTypeStr);
+                    outDataItem.put("问题类型", errorTypeStr);
+//                  表名,问题类型,数量
+                    if (outData.containsKey(tableName)) {
+                        if (outData.get(tableName).containsKey(errorTypeStr)) {
+                            outData.get(tableName).put(errorTypeStr, outData.get(tableName).get(errorTypeStr) + errorNums);
+                        } else {
+                            outData.get(tableName).put(errorTypeStr, errorNums);
+                        }
+                    } else {
+                        Map<String, Integer> errorMap_ = new HashMap<>();
+                        errorMap_.put(errorTypeStr, errorNums);
+                        outData.put(tableName, errorMap_);
+                    }
+                    outDataItem.put("异常数据量", outData.get(tableName).get(errorTypeStr));
+                    outDataItem.put("检查日期", updateTime);
+                    outputDatas.add(outDataItem);
+                }
+            }
+        }
+        try {
+            ExcelReaderUtils.writeToExcel(outputDatas, "C:\\Users\\Liumouren\\Desktop\\异常数据清单-列表_output2.xlsx");
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+
+
+    public static void main(String[] args) {
+        /*com.alibaba.fastjson.JSONObject AllData = new com.alibaba.fastjson.JSONObject();
+        JSONArray featuresList = new JSONArray();
+        for (int i = 1; i <= 7282; i++) {
+            if (i == 7282) {
+                String requestData = requestWFS(i + "");
+                com.alibaba.fastjson.JSONObject requestJson = com.alibaba.fastjson.JSONObject.parseObject(requestData);
+                if (requestJson.containsKey("features")) {
+                    featuresList.add(requestJson.getJSONArray("features").getJSONObject(0));
+                }
+            }
+        }
+        AllData.put("features", featuresList);
+        AllData.put("type", "FeatureCollection");
+        System.out.println("内容大小:" + featuresList.size());
+        String jsonString = AllData.toJSONString();
+        String filePath = "output/cj_1.geojson";
+        try (FileWriter fileWriter = new FileWriter(filePath)) {
+            fileWriter.write(jsonString);
+            System.out.println("完成!");
+        } catch (Exception e) {
+            e.printStackTrace();
+        }*/
+        testFile();
+    }
 }
 }

+ 4 - 4
src/main/java/com/skyversation/poiaddr/util/net/AddressNetTools.java

@@ -50,10 +50,10 @@ public class AddressNetTools {
     @Async
     @Async
     public ResponseEntity requestGetOrPost(HttpMethod httpMethod, String url, JSONObject params, Map<String, String> headerMap, Integer ifReloadSize) {
     public ResponseEntity requestGetOrPost(HttpMethod httpMethod, String url, JSONObject params, Map<String, String> headerMap, Integer ifReloadSize) {
         SimpleClientHttpRequestFactory requestFactory = new SimpleClientHttpRequestFactory();
         SimpleClientHttpRequestFactory requestFactory = new SimpleClientHttpRequestFactory();
-        requestFactory.setConnectTimeout(10000);
-        requestFactory.setReadTimeout(5000);
-        /*requestFactory.setConnectTimeout(150000);
-        requestFactory.setReadTimeout(120000);*/
+        /*requestFactory.setConnectTimeout(10000);
+        requestFactory.setReadTimeout(5000);*/
+        requestFactory.setConnectTimeout(150000);
+        requestFactory.setReadTimeout(120000);
         RestTemplate client = new RestTemplate(requestFactory);
         RestTemplate client = new RestTemplate(requestFactory);
         client.getMessageConverters().set(1, new StringHttpMessageConverter(StandardCharsets.UTF_8));
         client.getMessageConverters().set(1, new StringHttpMessageConverter(StandardCharsets.UTF_8));
         HttpHeaders headers = new HttpHeaders();
         HttpHeaders headers = new HttpHeaders();

+ 3 - 2
src/main/java/com/skyversation/poiaddr/util/tasks/ScheduledTasks.java

@@ -8,8 +8,7 @@ import org.springframework.stereotype.Component;
 import javax.annotation.Resource;
 import javax.annotation.Resource;
 import java.time.LocalDate;
 import java.time.LocalDate;
 import java.time.format.DateTimeFormatter;
 import java.time.format.DateTimeFormatter;
-import java.util.Date;
-import java.util.Map;
+import java.util.*;
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.ConcurrentHashMap;
 
 
 @Component
 @Component
@@ -24,6 +23,8 @@ public class ScheduledTasks {
     public static int gdRequestSize = 0;
     public static int gdRequestSize = 0;
 //  2kw-3kw是xlsx数据;amap是3kw开头
 //  2kw-3kw是xlsx数据;amap是3kw开头
     public static Long OID_TAG = 30000000L;
     public static Long OID_TAG = 30000000L;
+    public static List<Map<String,Object>> LogInfos = new ArrayList<>();
+    public static boolean pauseTag = false;
 //  统计异常数量和类型
 //  统计异常数量和类型
     public static Map<String,Integer> errorCount = new ConcurrentHashMap<>();
     public static Map<String,Integer> errorCount = new ConcurrentHashMap<>();