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.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;
|
|
/**
|
* 企业控制器
|
* @author WWW
|
* @date 2023-10-05
|
*/
|
@Api(tags = "企业控制器")
|
@RestController
|
@RequestMapping("/ent")
|
@SuppressWarnings("ALL")
|
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"})
|
public ResponseMsg<Object> selectToken() {
|
try {
|
String token = entService.selectToken();
|
|
return success(StringHelper.isEmpty(token) ? 0 : 1, token);
|
} catch (Exception ex) {
|
return fail(ex, -1);
|
}
|
}
|
|
@ApiOperation(value = "查询企业")
|
@ApiImplicitParams({
|
@ApiImplicitParam(name = "token", value = "令牌", dataType = "String", paramType = "query", example = ""),
|
@ApiImplicitParam(name = "startDate", value = "开始日期", dataType = "String", paramType = "query", example = "2023-06-29"),
|
@ApiImplicitParam(name = "endDate", value = "结束日期", dataType = "String", paramType = "query", example = "2023-06-30"),
|
@ApiImplicitParam(name = "qylabel", value = "标签", dataType = "Integer", paramType = "query", example = "开业"),
|
@ApiImplicitParam(name = "showCount", value = "显示记录数", dataType = "Integer", paramType = "query", example = "10"),
|
@ApiImplicitParam(name = "currentPage", value = "当前分页数", dataType = "Integer", paramType = "query", example = "1")
|
})
|
@GetMapping({"/selectEnts"})
|
public ResponseMsg<Object> selectEnts(String token, String startDate, String endDate, String qylabel, Integer showCount, Integer currentPage) {
|
try {
|
if (StringHelper.isEmpty(token)) {
|
token = entService.selectToken();
|
}
|
if (StringHelper.isEmpty(token)) {
|
return fail("查询令牌失败");
|
}
|
if (null == showCount || showCount < 1) {
|
showCount = 10;
|
}
|
if (null == currentPage || currentPage < 1) {
|
currentPage = 1;
|
}
|
|
List<EntEntity> list = entService.selectEnts(token, startDate, endDate, qylabel, showCount, currentPage);
|
|
return success(null == list || list.isEmpty() ? 0 : list.size(), list);
|
} catch (Exception ex) {
|
return fail(ex, -1);
|
}
|
}
|
|
@ApiOperation(value = "插入企业")
|
@ApiImplicitParams({
|
@ApiImplicitParam(name = "token", value = "令牌", dataType = "String", paramType = "query", example = ""),
|
@ApiImplicitParam(name = "startDate", value = "开始日期", dataType = "String", paramType = "query", example = "2023-06-29"),
|
@ApiImplicitParam(name = "endDate", value = "结束日期", dataType = "String", paramType = "query", example = "2023-06-30"),
|
@ApiImplicitParam(name = "qylabel", value = "标签", dataType = "Integer", paramType = "query", example = "开业"),
|
@ApiImplicitParam(name = "showCount", value = "显示记录数", dataType = "Integer", paramType = "query", example = "10"),
|
@ApiImplicitParam(name = "currentPage", value = "当前分页数", dataType = "Integer", paramType = "query", example = "1")
|
})
|
@GetMapping({"/insertEnts"})
|
public ResponseMsg<Object> insertEnts(String token, String startDate, String endDate, String qylabel, Integer showCount, Integer currentPage) {
|
try {
|
if (StringHelper.isEmpty(token)) {
|
token = entService.selectToken();
|
}
|
if (StringHelper.isEmpty(token)) {
|
return fail("查询令牌失败");
|
}
|
if (null == showCount || showCount < 1) {
|
showCount = 10;
|
}
|
if (null == currentPage || currentPage < 1) {
|
currentPage = 1;
|
}
|
|
List<EntEntity> list = entService.selectEnts(token, startDate, endDate, qylabel, showCount, currentPage);
|
if (null == list || list.isEmpty()) {
|
return fail("查询企业为空");
|
}
|
|
Integer rows = entService.insertEnts(list);
|
|
return success(rows);
|
} catch (Exception ex) {
|
return fail(ex, -1);
|
}
|
}
|
|
@ApiOperation(value = "分页查询")
|
@ApiImplicitParams({
|
@ApiImplicitParam(name = "pageSize", value = "每页条数", dataType = "Integer", paramType = "query", example = "10"),
|
@ApiImplicitParam(name = "pageIndex", value = "分页数(从1开始)", dataType = "Integer", paramType = "query", example = "1")
|
})
|
@GetMapping(value = "/selectByPage")
|
public ResponseMsg<Object> selectByPage(Integer pageSize, Integer pageIndex) {
|
try {
|
if (null == pageSize || pageSize < 1) {
|
pageSize = 10;
|
}
|
if (null == pageIndex || pageIndex < 1) {
|
pageIndex = 1;
|
}
|
int count = qiYeMapper.selectCount();
|
List<EntEntity> list = qiYeMapper.selectByPage(pageSize, StaticData.I100 * (pageIndex - 1));
|
|
return success(count, list);
|
} catch (Exception ex) {
|
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 = 1; 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[0]));
|
ent.setY(Double.parseDouble(split[1]));
|
} 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);
|
}
|
}
|