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