Parcourir la source

添加定时器变量和部分方法

DESKTOP-6LTVLN7\Liumouren il y a 4 semaines
Parent
commit
28a7a0fc7a

+ 13 - 9
src/main/java/com/skyversation/poiaddr/controller/CorporateLibraryController.java

@@ -36,17 +36,23 @@ public class CorporateLibraryController {
     @Resource
     private YyskAddressStandardizationServiceImpl yyskAddressStandardizationService;
 
-    //    地址查询
+    //    根据经纬度查询确定区、镇、居委
     @RequestMapping(value = "/searchInfoByLocal")
     public String searchInfoByLocal(HttpServletRequest request) {
         AddressResult addressResult = new AddressResult();
-        addressResult.getAddrBean();
-        AddressQueryEngine.getInstance().getCjWgWgwByLoc(addressResult);
-        if (addressResult == null) {
-            return MessageManage.getInstance().getResultContent(Constant.NO_DATA, "无数据", "无数据");
-        } else {
-            return MessageManage.getInstance().getResultContent(Constant.SUCCESS, addressResult, "成功");
+        String lon = request.getParameter("lon");
+        String lat = request.getParameter("lat");
+        if(StringUtils.hasText(lon) && StringUtils.hasText(lat)){
+            GeoJsonBean cjBean = AreaService.getInstance().isInResidentialCommitteePolygon(Double.parseDouble(lon), Double.parseDouble(lat));
+            if(cjBean!= null && cjBean.getProperties() != null){
+                addressResult.getAddrBean().setPname("上海市");
+                addressResult.getAddrBean().setCityname(cjBean.getProperties().getString("所属区"));
+                addressResult.getAddrBean().setAdname(cjBean.getProperties().getString("所属街"));
+                addressResult.getAddrBean().setCommunityCode(cjBean.getProperties().getString("居委会"));
+                addressResult.getAddrBean().setCommunity(cjBean.getProperties().getString("居委_1"));
+            }
         }
+        return MessageManage.getInstance().getResultContent(Constant.SUCCESS, addressResult, "成功");
     }
 
 
@@ -140,9 +146,7 @@ public class CorporateLibraryController {
                                 }
                                 dataItem.put("standard_address", contentBean.getPname() + contentBean.getCityname() +
                                         contentBean.getAdname() + contentBean.getCommunity() + splitAddress.getAddr());
-
                             }
-
                             dataItem.put("type", "szx");
                         }
                     }

+ 30 - 10
src/main/java/com/skyversation/poiaddr/service/AreaService.java

@@ -140,32 +140,52 @@ public class AreaService {
         System.out.println("<<<<<<<<------run geo data complete------>>>>>>>>>");
     }
 
+    public void callBackAddrs(List<String> addrs){
+        String maxIdSqlStr = "select id from t_address_callback order by id desc limit 1";
+        int maxId = 0;
+        try {
+            List<Map<String, Object>> datas = DbConnection.getInstance().runSqlStr(maxIdSqlStr);
+            if (datas != null && datas.size() == 1) {
+                maxId = Integer.parseInt(datas.get(0).get("id").toString());
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        for(String addr: addrs){
+            SplitAddress splitAddress = ShanghaiAddressSplitUtil.splitBestAddress(addr);
+            String sql = "insert into t_address_callback (id,create_time,address,name,provice_name,city_name,town_name,community_name,status,process_status,is_new) values (" +
+                    "" + maxId + 1 + ",'" + ScheduledTasks.getPreviousDateStr() + "','" + addr + "','" + splitAddress.getAddr() + "','" + splitAddress.getProvince() + "','" + splitAddress.getCity() + "','" + splitAddress.getStreet() + "','" + splitAddress.getCommunity() + "'," + 0 + "," + 0 + "," + 1 + ")";
+            try {
+                DbConnection.getInstance().updateSql(sql);
+            } catch (Exception e) {
+                e.printStackTrace();
+            }
+        }
+
+    }
 
     public void callBackErrorAddr(String addrStr) {
+//      查询回流列表中是否存在
+        if(!ScheduledTasks.callBackAddrs.contains(addrStr)){
+            ScheduledTasks.callBackAddrs.add(addrStr);
+        }
         System.out.println("尝试回流无结果数据:" + addrStr);
         SplitAddress splitAddress = ShanghaiAddressSplitUtil.splitBestAddress(addrStr);
         if (splitAddress.getStatus() == 3 || splitAddress.getStatus() == -1) {
             System.out.println("拒绝回流,检测到非地址");
             return;
         }
-        String maxIdSqlStr = "select id from t_address_callback order by id desc limit 1";
-        int maxId = 0;
+        String maxIdSqlStr = "select * from t_address_callback where status = 0 or status = 1";
         try {
             List<Map<String, Object>> datas = DbConnection.getInstance().runSqlStr(maxIdSqlStr);
             if (datas != null && datas.size() == 1) {
-                maxId = Integer.parseInt(datas.get(0).get("id").toString());
+
             }
         } catch (Exception e) {
             e.printStackTrace();
         }
 
-        String sql = "insert into t_address_callback (id,create_time,address,name,provice_name,city_name,town_name,community_name,status,process_status,is_new) values (" +
-                "" + maxId + 1 + ",'" + ScheduledTasks.getPreviousDateStr() + "','" + addrStr + "','" + splitAddress.getAddr() + "','" + splitAddress.getProvince() + "','" + splitAddress.getCity() + "','" + splitAddress.getStreet() + "','" + splitAddress.getCommunity() + "'," + 0 + "," + 0 + "," + 1 + ")";
-        try {
-            DbConnection.getInstance().updateSql(sql);
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
+
         System.out.println("回流成功,等待进一检查处理");
     }
 

+ 0 - 25
src/main/java/com/skyversation/poiaddr/service/impl/YyskAddressStandardizationServiceImpl.java

@@ -210,31 +210,6 @@ public class YyskAddressStandardizationServiceImpl {
         }catch (Exception e){
             e.printStackTrace();
         }
-
-        /*String sqls = "update songjiang_uni_sc_id_v1 set street_town_name = ?,standard_address = ?,county = ? where uni_sc_id = ?";
-        try (PreparedStatement preparedStatement = DbConnection.getInstance().connection.prepareStatement(sqls)) {
-            for (Map<String,Object> entity : datas) {
-                if (entity.get("street_town_name") != null && entity.get("county") != null) {
-                    preparedStatement.setString(1, entity.get("street_town_name").toString());
-                    if (entity.get("standard_address") == null) {
-                        preparedStatement.setNull(2, Types.VARCHAR);
-                    } else {
-                        preparedStatement.setString(2, entity.get("standard_address").toString());
-                    }
-                    preparedStatement.setString(3, entity.get("county").toString());
-                    preparedStatement.setString(4, entity.get("uni_sc_id").toString());
-                    // 将当前的 SQL 语句添加到批量操作中
-                    preparedStatement.addBatch();
-                }
-            }
-            // 执行批量操作
-            int[] updateCounts = preparedStatement.executeBatch();
-            System.out.println("总条数:" + datas.size() + ";更新的记录数: " + updateCounts.length);
-        } catch (SQLException throwables) {
-            System.err.println("------updateError--------------------------------------" + sqls + "更新异常!");
-            throwables.printStackTrace();
-            System.err.println("更新异常" + throwables);
-        }*/
     }
 
     //   批量修改地址表

+ 22 - 0
src/main/java/com/skyversation/poiaddr/util/tasks/ScheduledTasks.java

@@ -8,7 +8,9 @@ import org.springframework.stereotype.Component;
 import javax.annotation.Resource;
 import java.time.LocalDate;
 import java.time.format.DateTimeFormatter;
+import java.util.ArrayList;
 import java.util.Date;
+import java.util.List;
 
 @Component
 public class ScheduledTasks {
@@ -28,9 +30,29 @@ public class ScheduledTasks {
      */
     public static Integer taskPageNum = 0;
 
+    /**
+     * 回流地址列表
+     * 每秒都检查一下,看看列表里面的数量
+     * 如果大于1000的话,全部录入到calllBack表
+     * 半个小时检查一下callback表
+     * 对状态为null的数据进行查询
+     * 查询到的数据更新状态并把数据保存到湖里
+     * 找不到的数据更新状态
+     * 一天执行一次,把callBack表中查询到的数据保存到地址库中,并删除callBack表有数据的记录
+     */
+    public static List<String> callBackAddrs = new ArrayList<>();
+
     @Resource
     private YyskAddressStandardizationServiceImpl yyskAddressStandardizationService;
 
+
+    @Scheduled(cron = "*/1 * * * * *")
+    public void setCallBackAddrs() {
+        if (callBackAddrs.size() > 1000) {
+
+        }
+    }
+
     /**
      * 每天凌晨一点跑地址表没跑过的数据
      */