瀏覽代碼

回流表逻辑初期

DESKTOP-6LTVLN7\Liumouren 3 周之前
父節點
當前提交
4a6bdf6a97

+ 56 - 0
src/main/java/com/skyversation/poiaddr/bean/TAddressCallback.java

@@ -0,0 +1,56 @@
+package com.skyversation.poiaddr.bean;
+
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.Id;
+import javax.persistence.Table;
+import java.io.Serializable;
+
+/**
+ * 我们自己的回流表
+ *
+ */
+@Entity
+@Table(name = "t_address_callback_demo", schema = "")
+@Data
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class TAddressCallback implements Serializable {
+
+    @Id
+    @Column(name = "search_address")
+    private String searchAddress;
+
+    @Column(name = "cankao_address")
+    private String cankaoAddress;
+
+    @Column(name = "pname")
+    private String pname;
+
+    @Column(name = "standard_address")
+    private String standardAddress;
+
+    @Column(name = "county")
+    private String county;
+
+    @Column(name = "street_town_name")
+    private String streetTownName;
+
+    @Column(name = "community")
+    private String community;
+
+    @Column(name = "lon")
+    private String lon;
+
+    @Column(name = "lat")
+    private String lat;
+
+    @Column(name = "status_tag")
+    private Integer statusTag;
+}

+ 0 - 5
src/main/java/com/skyversation/poiaddr/bean/ZrrCallback20250609.java

@@ -16,11 +16,6 @@ import java.io.Serializable;
 @AllArgsConstructor
 @AllArgsConstructor
 public class ZrrCallback20250609 implements Serializable {
 public class ZrrCallback20250609 implements Serializable {
 
 
-//    @Id
-//    @GeneratedValue(strategy = GenerationType.IDENTITY)
-//    @Column(name = "id", nullable = false)
-//    private Long id;
-
     @Id
     @Id
     @Column(name = "search_address")
     @Column(name = "search_address")
     private String searchAddress;
     private String searchAddress;

+ 38 - 31
src/main/java/com/skyversation/poiaddr/service/AreaService.java

@@ -6,6 +6,7 @@ import com.skyversation.poiaddr.addquery.AddressQueryEngine;
 import com.skyversation.poiaddr.addquery.Constant;
 import com.skyversation.poiaddr.addquery.Constant;
 import com.skyversation.poiaddr.bean.*;
 import com.skyversation.poiaddr.bean.*;
 import com.skyversation.poiaddr.config.DbConnection;
 import com.skyversation.poiaddr.config.DbConnection;
+import com.skyversation.poiaddr.service.impl.TAddressCallbackRepository;
 import com.skyversation.poiaddr.service.impl.YyszAddressRepository;
 import com.skyversation.poiaddr.service.impl.YyszAddressRepository;
 import com.skyversation.poiaddr.service.impl.ZrrCallBackRepository;
 import com.skyversation.poiaddr.service.impl.ZrrCallBackRepository;
 import com.skyversation.poiaddr.util.ShanghaiAddressSplitUtil;
 import com.skyversation.poiaddr.util.ShanghaiAddressSplitUtil;
@@ -44,6 +45,9 @@ public class AreaService {
     @Resource
     @Resource
     private ZrrCallBackRepository zrrCallBackRepository;
     private ZrrCallBackRepository zrrCallBackRepository;
 
 
+    @Resource
+    private TAddressCallbackRepository tAddressCallbackRepository;
+
     public static AreaService getInstance() {
     public static AreaService getInstance() {
         if (instance == null) {
         if (instance == null) {
             return new AreaService();
             return new AreaService();
@@ -217,39 +221,39 @@ public class AreaService {
                     index++;
                     index++;
                     int finalIndex = index;
                     int finalIndex = index;
                     futures.add(executorService.submit(() -> {
                     futures.add(executorService.submit(() -> {
-                    System.out.print(">" + finalIndex);
-                    ZrrCallback20250609 zrrCallback20250609 = new ZrrCallback20250609();
-                    zrrCallback20250609.setSearchAddress(addrStr);
-                    AddressResult addressResult = AddressQueryEngine.getInstance().commonSearchByName_nw(addrStr);
-                    AddressResult.ContentBean contentBean = new AddressResult.ContentBean();
-                    if (addressResult != null && addressResult.getCode() == AddressResultEnum.DB_SUCCESS && addressResult.getData() != null && addressResult.getData().size() > 0) {
-                        contentBean = addressResult.getData().get(0);
-                    }
-                    if (contentBean != null && contentBean.getLon() != null) {
-                        AddressQueryEngine.getInstance().getCjWgWgwByLoc(addressResult);
-                        zrrCallback20250609.setLat(contentBean.getLat() + "");
-                        zrrCallback20250609.setLon(contentBean.getLon() + "");
-                        zrrCallback20250609.setPname(contentBean.getPname());
-                        zrrCallback20250609.setCounty(contentBean.getCityname());
-                        zrrCallback20250609.setCankaoAddress(contentBean.getAddress());
-                        zrrCallback20250609.setStreetTownName(contentBean.getAdname());
-                        zrrCallback20250609.setCommunity(contentBean.getCommunity());
-                        zrrCallback20250609.setStandardAddress(contentBean.getStandAddr());
-                        SplitAddress splitAddress = ShanghaiAddressSplitUtil.splitBestAddress(addrStr);
-                        if (!StringUtils.hasText(contentBean.getPname())) {
-                            contentBean.setPname(splitAddress.getCity());
-                            zrrCallback20250609.setPname(splitAddress.getCity());
+                        System.out.print(">" + finalIndex);
+                        ZrrCallback20250609 zrrCallback20250609 = new ZrrCallback20250609();
+                        zrrCallback20250609.setSearchAddress(addrStr);
+                        AddressResult addressResult = AddressQueryEngine.getInstance().commonSearchByName_nw(addrStr);
+                        AddressResult.ContentBean contentBean = new AddressResult.ContentBean();
+                        if (addressResult != null && addressResult.getCode() == AddressResultEnum.DB_SUCCESS && addressResult.getData() != null && addressResult.getData().size() > 0) {
+                            contentBean = addressResult.getData().get(0);
                         }
                         }
-                        if (!StringUtils.hasText(contentBean.getPname())) {
-                            contentBean.setPname("上海市");
-                            zrrCallback20250609.setPname("上海市");
+                        if (contentBean != null && contentBean.getLon() != null) {
+                            AddressQueryEngine.getInstance().getCjWgWgwByLoc(addressResult);
+                            zrrCallback20250609.setLat(contentBean.getLat() + "");
+                            zrrCallback20250609.setLon(contentBean.getLon() + "");
+                            zrrCallback20250609.setPname(contentBean.getPname());
+                            zrrCallback20250609.setCounty(contentBean.getCityname());
+                            zrrCallback20250609.setCankaoAddress(contentBean.getAddress());
+                            zrrCallback20250609.setStreetTownName(contentBean.getAdname());
+                            zrrCallback20250609.setCommunity(contentBean.getCommunity());
+                            zrrCallback20250609.setStandardAddress(contentBean.getStandAddr());
+                            SplitAddress splitAddress = ShanghaiAddressSplitUtil.splitBestAddress(addrStr);
+                            if (!StringUtils.hasText(contentBean.getPname())) {
+                                contentBean.setPname(splitAddress.getCity());
+                                zrrCallback20250609.setPname(splitAddress.getCity());
+                            }
+                            if (!StringUtils.hasText(contentBean.getPname())) {
+                                contentBean.setPname("上海市");
+                                zrrCallback20250609.setPname("上海市");
+                            }
+                            zrrCallback20250609.setStandardAddress(contentBean.getPname() + contentBean.getCityname() +
+                                    contentBean.getAdname() + contentBean.getCommunity() + splitAddress.getAddr());
+                        }
+                        if (zrrCallback20250609.getSearchAddress() != null) {
+                            outDatas.add(zrrCallback20250609);
                         }
                         }
-                        zrrCallback20250609.setStandardAddress(contentBean.getPname() + contentBean.getCityname() +
-                                contentBean.getAdname() + contentBean.getCommunity() + splitAddress.getAddr());
-                    }
-                    if (zrrCallback20250609.getSearchAddress() != null) {
-                        outDatas.add(zrrCallback20250609);
-                    }
                     }));
                     }));
                 }
                 }
 
 
@@ -451,6 +455,9 @@ public class AreaService {
         return yyszAddressRepository.getAddressPoisByDivisions(splitAddress.getCity(), splitAddress.getDistrict(), splitAddress.getStreet(), splitAddress.getCommunity());
         return yyszAddressRepository.getAddressPoisByDivisions(splitAddress.getCity(), splitAddress.getDistrict(), splitAddress.getStreet(), splitAddress.getCommunity());
     }
     }
 
 
+    public List<TAddressCallback> getCallbackDataByTag(Integer tag) {
+        return tAddressCallbackRepository.getCallbackByTag(tag);
+    }
 
 
     public List<Map<String, Object>> getUniScDatas() {
     public List<Map<String, Object>> getUniScDatas() {
         try {
         try {

+ 16 - 0
src/main/java/com/skyversation/poiaddr/service/impl/TAddressCallbackRepository.java

@@ -0,0 +1,16 @@
+package com.skyversation.poiaddr.service.impl;
+
+import com.skyversation.poiaddr.bean.TAddressCallback;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.Query;
+import org.springframework.data.repository.query.Param;
+
+import javax.annotation.Resource;
+import java.util.List;
+
+@Resource
+public interface TAddressCallbackRepository extends JpaRepository<TAddressCallback, String> {
+    // 执行自定义的SQL查询
+    @Query(value = "SELECT * FROM t_address_callback_demo WHERE status_tag = :statusTag ", nativeQuery = true)
+    List<TAddressCallback> getCallbackByTag(@Param("statusTag") Integer statusTag);
+}

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

@@ -1,5 +1,6 @@
 package com.skyversation.poiaddr.util.tasks;
 package com.skyversation.poiaddr.util.tasks;
 
 
+import com.skyversation.poiaddr.bean.TAddressCallback;
 import com.skyversation.poiaddr.config.DbConnection;
 import com.skyversation.poiaddr.config.DbConnection;
 import com.skyversation.poiaddr.service.AreaService;
 import com.skyversation.poiaddr.service.AreaService;
 import com.skyversation.poiaddr.service.impl.YyskAddressStandardizationServiceImpl;
 import com.skyversation.poiaddr.service.impl.YyskAddressStandardizationServiceImpl;
@@ -37,6 +38,16 @@ public class ScheduledTasks {
 
 
     public static List<String> setAddress = new ArrayList<>();
     public static List<String> setAddress = new ArrayList<>();
 
 
+    /**
+     * 回流表处理状态
+     * 0:停止
+     * 1:正在运行
+     * 需求:查询状态为0的数据,
+     * 然后调用市中心接口返回结果更新状态或者删除掉
+     * 把返回的结果数据放到地址库中
+     */
+    public static int callBackRunStatus = 0;
+
     /**
     /**
      * 回流地址列表
      * 回流地址列表
      * 每秒都检查一下,看看列表里面的数量
      * 每秒都检查一下,看看列表里面的数量
@@ -83,7 +94,7 @@ public class ScheduledTasks {
      *  查询地址表的所有数据,直接放到缓存里面(可选)
      *  查询地址表的所有数据,直接放到缓存里面(可选)
      *
      *
      */
      */
-    @Scheduled(cron = "0 30 0 * * *")
+//    @Scheduled(cron = "0 30 0 * * *")
     public void getCallBack(){
     public void getCallBack(){
         String in_tableName = "dws.dws_sjqdsjzx_zrr_hjjzxx_arrange";
         String in_tableName = "dws.dws_sjqdsjzx_zrr_hjjzxx_arrange";
         String in_real_address = "roomdetailedaddress,hjdz";
         String in_real_address = "roomdetailedaddress,hjdz";
@@ -99,9 +110,16 @@ public class ScheduledTasks {
      * 如果返回了正确的数据,入到地址库表中,并更新state为2
      * 如果返回了正确的数据,入到地址库表中,并更新state为2
      * 否则更新状态为1
      * 否则更新状态为1
      */
      */
-//    @Scheduled(cron = "0 30 2 * * ?")
+    @Scheduled(cron = "0 30 2 * * ?")
     public void dbdataCallBackTask() {
     public void dbdataCallBackTask() {
-        String sqlStr = "";
+        System.out.println("开始回流表查询并更新任务!");
+        if(callBackRunStatus != 1){
+//          首先查询数据列表
+            List<TAddressCallback> tAddressCallbacks = AreaService.getInstance().getCallbackDataByTag(0);
+            
+        }else{
+            System.out.println("上一次定时任务未结束!");
+        }
     }
     }
 
 
     /**
     /**