From 1c9d913d9974f0feb7c5756a665fcd08f22ee4b3 Mon Sep 17 00:00:00 2001
From: 13693261870 <252740454@qq.com>
Date: 星期五, 06 十月 2023 14:16:29 +0800
Subject: [PATCH] 添加 批量更新企业坐标 接口

---
 src/main/java/com/smartearth/poiexcel/controller/EntController.java |  105 ++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 105 insertions(+), 0 deletions(-)

diff --git a/src/main/java/com/smartearth/poiexcel/controller/EntController.java b/src/main/java/com/smartearth/poiexcel/controller/EntController.java
index f1baa5b..025ac18 100644
--- a/src/main/java/com/smartearth/poiexcel/controller/EntController.java
+++ b/src/main/java/com/smartearth/poiexcel/controller/EntController.java
@@ -1,19 +1,30 @@
 package com.smartearth.poiexcel.controller;
 
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
 import com.smartearth.poiexcel.entity.EntEntity;
 import com.smartearth.poiexcel.entity.ResponseMsg;
+import com.smartearth.poiexcel.entity.StaticData;
+import com.smartearth.poiexcel.mapper.EntMapper;
+import com.smartearth.poiexcel.mapper.QiYeMapper;
 import com.smartearth.poiexcel.service.EntService;
+import com.smartearth.poiexcel.utils.HttpUtils;
 import com.smartearth.poiexcel.utils.StringHelper;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiImplicitParams;
 import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.util.StringUtils;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
 import javax.annotation.Resource;
+import java.util.Base64;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 
 /**
  * 浼佷笟鎺у埗鍣�
@@ -26,6 +37,15 @@
 public class EntController extends BaseController {
     @Resource
     EntService entService;
+
+    @Resource
+    EntMapper entMapper;
+
+    @Resource
+    QiYeMapper qiYeMapper;
+
+    @Value("${address.code.url}")
+    private String addressCodeUrl;
 
     @ApiOperation(value = "鏌ヨ浠ょ墝")
     @GetMapping({"/selectToken"})
@@ -109,4 +129,89 @@
             return fail(ex, -1);
         }
     }
+
+    @ApiOperation(value = "鎵归噺鏇存柊浼佷笟鍧愭爣")
+    @GetMapping({"/updateCoords"})
+    public ResponseMsg<Object> updateCoords() {
+        try {
+            int rows = 0;
+            int count = qiYeMapper.selectCount();
+            if (0 == count) {
+                return success("娌℃湁鏁版嵁闇�瑕佹洿鏂�", count);
+            }
+
+            int pages = (count - 1) / StaticData.I100 + 1;
+            for (int i = 0; i < pages; i++) {
+                List<EntEntity> list = qiYeMapper.selectByPage(StaticData.I100, StaticData.I100 * (i - 1));
+                if (null == list || list.isEmpty()) {
+                    continue;
+                }
+
+                for (EntEntity ent : list) {
+                    if (!StringHelper.isEmpty(ent.getAddress())) {
+                        setEntCoord(ent);
+                    }
+                }
+
+                rows += qiYeMapper.updates(list);
+            }
+
+            return success(rows);
+        } catch (Exception ex) {
+            return fail(ex, -1);
+        }
+    }
+
+    /**
+     * 璁剧疆浼佷笟鍧愭爣鍊�
+     */
+    private void setEntCoord(EntEntity ent) {
+        try {
+            String json = selectAddrCode(ent.getAddress());
+            if (StringHelper.isEmpty(json)) {
+                return;
+            }
+
+            JSONObject obj = JSONObject.parseObject(json);
+            if (null == obj || !StaticData.S1.equals(obj.get("status"))) {
+                return;
+            }
+
+            JSONArray jsonArray = obj.getJSONArray("geocodes");
+            if (null == jsonArray || jsonArray.isEmpty()) {
+                return;
+            }
+
+            JSONObject object = jsonArray.getJSONObject(0);
+            String addr = object.getString("formatted_address");
+            if (StringHelper.isEmpty(addr)) {
+                return;
+            }
+
+            String encoding = StringHelper.getEncoding(addr);
+            if (encoding != null) {
+                addr = new String(addr.getBytes(encoding));
+            }
+            // ent.setAddress(addr)
+
+            String location = object.getString("location");
+            String[] split = location.split(",");
+            ent.setX(Double.parseDouble(split[1]));
+            ent.setY(Double.parseDouble(split[0]));
+        } catch (Exception ex) {
+            log.error(ex.getMessage(), ex);
+        }
+    }
+
+    private String selectAddrCode(String address) throws Exception {
+        StringBuilder sb = new StringBuilder(addressCodeUrl);
+        sb.append("?address=").append(address).append("&output=json&batch=true&coord=cgcs2000&adcode=yes");
+
+        // 璁剧疆璇锋眰澶�
+        Map<String, String> headers = new HashMap<>();
+        headers.put("Authorization", "Basic " + Base64.getUrlEncoder().encodeToString(("jjjskfq" + ":" + "Jjjskfq@2022").getBytes()));
+
+        // 鎵ц璇锋眰
+        return HttpUtils.get(sb.toString(), null, headers);
+    }
 }

--
Gitblit v1.9.3