From 6158ba6c7baccf58b984b7f2425ac6c8f3d57897 Mon Sep 17 00:00:00 2001 From: Jackwang Date: Wed, 31 Aug 2022 14:51:46 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8C=97=E5=B0=9A=E8=AF=89=E5=8A=9E-=E9=80=9A?= =?UTF-8?q?=E8=BF=87=E7=BB=8F=E7=BA=AC=E5=BA=A6=E8=8E=B7=E5=8F=96=E6=89=80?= =?UTF-8?q?=E5=B1=9E=E7=A4=BE=E5=8C=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../epdc/dto/DeptAreaDetailResultDTO.java | 19 ++++ .../esua/epdc/dto/DeptAreaResultDTO.java | 18 ++++ .../elink/esua/epdc/dto/DeptItudeFormDTO.java | 29 +++++++ .../esua/epdc/dto/DeptItudeResultDTO.java | 19 ++++ .../epdc/controller/SysDeptController.java | 12 +++ .../com/elink/esua/epdc/dao/SysDeptDao.java | 9 ++ .../elink/esua/epdc/entity/SysDeptEntity.java | 6 +- .../esua/epdc/service/SysDeptService.java | 9 ++ .../epdc/service/impl/SysDeptServiceImpl.java | 87 +++++++++++++++++++ .../src/main/resources/mapper/AppMenuDao.xml | 6 +- .../src/main/resources/mapper/SysDeptDao.xml | 6 ++ .../epdc/controller/ApiAdminController.java | 18 +++- .../esua/epdc/feign/AdminFeignClient.java | 10 +++ .../fallback/AdminFeignClientFallback.java | 5 ++ .../elink/esua/epdc/service/AdminService.java | 13 ++- .../epdc/service/impl/AdminServiceImpl.java | 9 +- 16 files changed, 263 insertions(+), 12 deletions(-) create mode 100644 esua-epdc/epdc-admin/epdc-admin-client/src/main/java/com/elink/esua/epdc/dto/DeptAreaDetailResultDTO.java create mode 100644 esua-epdc/epdc-admin/epdc-admin-client/src/main/java/com/elink/esua/epdc/dto/DeptAreaResultDTO.java create mode 100644 esua-epdc/epdc-admin/epdc-admin-client/src/main/java/com/elink/esua/epdc/dto/DeptItudeFormDTO.java create mode 100644 esua-epdc/epdc-admin/epdc-admin-client/src/main/java/com/elink/esua/epdc/dto/DeptItudeResultDTO.java diff --git a/esua-epdc/epdc-admin/epdc-admin-client/src/main/java/com/elink/esua/epdc/dto/DeptAreaDetailResultDTO.java b/esua-epdc/epdc-admin/epdc-admin-client/src/main/java/com/elink/esua/epdc/dto/DeptAreaDetailResultDTO.java new file mode 100644 index 000000000..83bdecdfb --- /dev/null +++ b/esua-epdc/epdc-admin/epdc-admin-client/src/main/java/com/elink/esua/epdc/dto/DeptAreaDetailResultDTO.java @@ -0,0 +1,19 @@ +package com.elink.esua.epdc.dto; + +import lombok.Data; + +import java.io.Serializable; + +/** + * @program: esua-epdc + * @description: + * @author: wangtong + * @create: 2022-08-31 10:03 + **/ +@Data +public class DeptAreaDetailResultDTO implements Serializable { + + private String xmlns; + + private String content; +} diff --git a/esua-epdc/epdc-admin/epdc-admin-client/src/main/java/com/elink/esua/epdc/dto/DeptAreaResultDTO.java b/esua-epdc/epdc-admin/epdc-admin-client/src/main/java/com/elink/esua/epdc/dto/DeptAreaResultDTO.java new file mode 100644 index 000000000..97aa2ef60 --- /dev/null +++ b/esua-epdc/epdc-admin/epdc-admin-client/src/main/java/com/elink/esua/epdc/dto/DeptAreaResultDTO.java @@ -0,0 +1,18 @@ +package com.elink.esua.epdc.dto; + +import lombok.Data; + +import java.io.Serializable; + +/** + * @program: esua-epdc + * @description: 部门编码获取结果 + * @author: wangtong + * @create: 2022-08-31 09:57 + **/ +@Data +public class DeptAreaResultDTO implements Serializable { + + private DeptAreaDetailResultDTO string; + +} diff --git a/esua-epdc/epdc-admin/epdc-admin-client/src/main/java/com/elink/esua/epdc/dto/DeptItudeFormDTO.java b/esua-epdc/epdc-admin/epdc-admin-client/src/main/java/com/elink/esua/epdc/dto/DeptItudeFormDTO.java new file mode 100644 index 000000000..5e199fa11 --- /dev/null +++ b/esua-epdc/epdc-admin/epdc-admin-client/src/main/java/com/elink/esua/epdc/dto/DeptItudeFormDTO.java @@ -0,0 +1,29 @@ +package com.elink.esua.epdc.dto; + +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import java.io.Serializable; + +/** + * @program: esua-epdc + * @description: + * @author: wangtong + * @create: 2022-08-31 10:53 + **/ +@Data +public class DeptItudeFormDTO implements Serializable { + + /** + * 经度 + */ + @NotBlank(message = "经度不可为空") + private String longitude; + + /** + * 纬度 + */ + @NotBlank(message = "纬度不可为空") + private String latitude; + +} diff --git a/esua-epdc/epdc-admin/epdc-admin-client/src/main/java/com/elink/esua/epdc/dto/DeptItudeResultDTO.java b/esua-epdc/epdc-admin/epdc-admin-client/src/main/java/com/elink/esua/epdc/dto/DeptItudeResultDTO.java new file mode 100644 index 000000000..2f72d2f82 --- /dev/null +++ b/esua-epdc/epdc-admin/epdc-admin-client/src/main/java/com/elink/esua/epdc/dto/DeptItudeResultDTO.java @@ -0,0 +1,19 @@ +package com.elink.esua.epdc.dto; + +import lombok.Data; + +import java.io.Serializable; + +/** + * @program: esua-epdc + * @description: + * @author: wangtong + * @create: 2022-08-31 11:16 + **/ +@Data +public class DeptItudeResultDTO implements Serializable { + + private Long communityId; + + private Long streetId; +} diff --git a/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/controller/SysDeptController.java b/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/controller/SysDeptController.java index afe24ccf4..456af0c3f 100644 --- a/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/controller/SysDeptController.java +++ b/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/controller/SysDeptController.java @@ -414,4 +414,16 @@ public class SysDeptController { public Result> getAllDeptTree() { return sysDeptService.getAllDeptTree(); } + + /** + * @describe: 通过经纬度获取社区及街道id + * @author wangtong + * @date 2022/8/31 11:19 + * @params [dto] + * @return com.elink.esua.epdc.commons.tools.utils.Result + */ + @GetMapping("getDeptIdByItude") + public Result getDeptIdByItude(@RequestBody DeptItudeFormDTO dto) { + return sysDeptService.getDeptIdByItude(dto); + } } diff --git a/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/dao/SysDeptDao.java b/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/dao/SysDeptDao.java index 1f33de3cc..3a8a40612 100644 --- a/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/dao/SysDeptDao.java +++ b/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/dao/SysDeptDao.java @@ -268,4 +268,13 @@ public interface SysDeptDao extends BaseDao { * @return java.util.List */ List selectAllDeptTree(); + + /** + * @describe: 通过地区编码查询 + * @author wangtong + * @date 2022/8/31 13:57 + * @params [areaCode] + * @return com.elink.esua.epdc.entity.SysDeptEntity + */ + SysDeptEntity selectByAreaCode(@Param("areaCode") String areaCode); } diff --git a/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/entity/SysDeptEntity.java b/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/entity/SysDeptEntity.java index 336b07de3..94b08e688 100644 --- a/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/entity/SysDeptEntity.java +++ b/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/entity/SysDeptEntity.java @@ -13,7 +13,6 @@ import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableLogic; import com.baomidou.mybatisplus.annotation.TableName; import com.elink.esua.epdc.commons.mybatis.entity.BaseEntity; -import io.swagger.annotations.ApiModelProperty; import lombok.Data; import lombok.EqualsAndHashCode; @@ -100,4 +99,9 @@ public class SysDeptEntity extends BaseEntity { */ private String latitude; + /** + * 所属地区码(所属组织地区码) + */ + private String areaCode; + } diff --git a/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/service/SysDeptService.java b/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/service/SysDeptService.java index ffb951f10..db761a5fe 100644 --- a/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/service/SysDeptService.java +++ b/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/service/SysDeptService.java @@ -338,4 +338,13 @@ public interface SysDeptService extends BaseService { * @return com.elink.esua.epdc.commons.tools.utils.Result */ Result> getAllDeptTree(); + + /** + * @describe: 通过经纬度获取社区及街道id + * @author wangtong + * @date 2022/8/31 11:19 + * @params [dto] + * @return com.elink.esua.epdc.commons.tools.utils.Result + */ + Result getDeptIdByItude(DeptItudeFormDTO dto); } diff --git a/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/service/impl/SysDeptServiceImpl.java b/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/service/impl/SysDeptServiceImpl.java index f0b055ff9..1b7934845 100644 --- a/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/service/impl/SysDeptServiceImpl.java +++ b/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/service/impl/SysDeptServiceImpl.java @@ -9,6 +9,7 @@ package com.elink.esua.epdc.service.impl; import cn.hutool.core.collection.CollUtil; +import cn.hutool.json.XML; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; @@ -54,7 +55,13 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; +import java.io.InputStream; +import java.net.HttpURLConnection; +import java.net.URL; +import java.net.URLConnection; import java.util.*; +import java.util.regex.Matcher; +import java.util.regex.Pattern; import java.util.stream.Collectors; import java.util.stream.Stream; @@ -1332,6 +1339,86 @@ public class SysDeptServiceImpl extends BaseServiceImpl>().ok(childSortMenu); } + @Override + public Result getDeptIdByItude(DeptItudeFormDTO dto) { + String communityCode = getDeptAreaCodeByItude(dto); + if(StringUtils.isBlank(communityCode)){ + throw new RenException("暂未获取到相关社区信息,请重新选择地址后重试!"); + } + SysDeptEntity community = baseDao.selectByAreaCode(communityCode); + DeptItudeResultDTO result = new DeptItudeResultDTO(); + result.setCommunityId(community.getId()); + result.setStreetId(community.getPid()); + return new Result().ok(result); + } + + /** + * @describe: 访问外部接口获取部门(社区)地区编码 + * @author wangtong + * @date 2022/8/31 13:47 + * @params [dto] + * @return java.lang.String + */ + private String getDeptAreaCodeByItude(DeptItudeFormDTO dto){ + String responseBody = ""; + try { + // 1 指定WebService服务的请求地址: + String wsUrl = "http://120.221.72.15:9089/WebService1.asmx/JW2DSJ?x="+dto.getLatitude()+"&y="+dto.getLongitude(); + // 2 创建URL: + URL url = new URL(wsUrl); + // 3 建立连接,并将连接强转为Http连接 + URLConnection conn = url.openConnection(); + HttpURLConnection con = (HttpURLConnection) conn; + + //设置请求方式和请求头: + con.setDoInput(true); // 是否有入参 + con.setDoOutput(true); // 是否有出参 + con.setRequestMethod("GET"); // 设置请求方式 + con.setRequestProperty("content-type", "text/xml;charset=UTF-8"); + // 7,服务端返回正常: + int code = con.getResponseCode(); + if (code == 200) {// 服务端返回正常 + InputStream is = con.getInputStream(); + byte[] b = new byte[1024]; + StringBuffer sb = new StringBuffer(); + int len = 0; + while ((len = is.read(b)) != -1) { + String str = new String(b, 0, len, "UTF-8"); + sb.append(str); + } + responseBody = sb.toString(); + // responseBody中的数据格式为xml + is.close(); + } + con.disconnect(); + //使用hutool工具类,取出在xml结点中的最终数据 + cn.hutool.json.JSONObject json = XML.toJSONObject(responseBody); + DeptAreaResultDTO reobject = json.toBean(DeptAreaResultDTO.class); + String restring = reobject.getString().getContent(); + return restring.substring(getFromIndex(restring,",",3)+1,getFromIndex(restring,",",4)); + } catch (Exception e) { + e.printStackTrace(); + throw new RenException("暂未获取到相关社区信息,请重新选择地址!"); + } + } + + //子字符串modelStr在字符串str中第count次出现时的下标 + public static int getFromIndex(String str, String modelStr, Integer count) { + //对子字符串进行匹配 + Matcher slashMatcher = Pattern.compile(modelStr).matcher(str); + int index = 0; + //matcher.find();尝试查找与该模式匹配的输入序列的下一个子序列 + while(slashMatcher.find()) { + index++; + //当modelStr字符第count次出现的位置 + if(index == count){ + break; + } + } + //matcher.start();返回以前匹配的初始索引。 + return slashMatcher.start(); + } + /** * 构建树节点 */ diff --git a/esua-epdc/epdc-admin/epdc-admin-server/src/main/resources/mapper/AppMenuDao.xml b/esua-epdc/epdc-admin/epdc-admin-server/src/main/resources/mapper/AppMenuDao.xml index 9ef1b2c8f..a43d9c79b 100644 --- a/esua-epdc/epdc-admin/epdc-admin-server/src/main/resources/mapper/AppMenuDao.xml +++ b/esua-epdc/epdc-admin/epdc-admin-server/src/main/resources/mapper/AppMenuDao.xml @@ -110,7 +110,8 @@ LEFT JOIN sys_language lc ON lc.table_id = mc.id LEFT JOIN sys_app_menu_template t ON mp.template_id = t.id WHERE - mc.id IN ( + mp.del_flag=0 + and mc.id IN ( SELECT m.id meauId FROM @@ -122,7 +123,8 @@ u.mobile =#{value} AND am.menu_id IS NOT NULL AND m.pid != 0 - )order by mp.sort asc,mc.sort asc + ) + order by mp.sort asc,mc.sort asc diff --git a/esua-epdc/epdc-admin/epdc-admin-server/src/main/resources/mapper/SysDeptDao.xml b/esua-epdc/epdc-admin/epdc-admin-server/src/main/resources/mapper/SysDeptDao.xml index d31b18146..c0fec51f8 100644 --- a/esua-epdc/epdc-admin/epdc-admin-server/src/main/resources/mapper/SysDeptDao.xml +++ b/esua-epdc/epdc-admin/epdc-admin-server/src/main/resources/mapper/SysDeptDao.xml @@ -474,5 +474,11 @@ and del_flag='0' order by sort asc + diff --git a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/controller/ApiAdminController.java b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/controller/ApiAdminController.java index 91d2526a6..3d9f6d639 100644 --- a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/controller/ApiAdminController.java +++ b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/controller/ApiAdminController.java @@ -3,9 +3,8 @@ package com.elink.esua.epdc.controller; import com.elink.esua.epdc.common.token.dto.TokenDto; import com.elink.esua.epdc.commons.tools.annotation.LoginUser; import com.elink.esua.epdc.commons.tools.utils.Result; -import com.elink.esua.epdc.dto.AppUserIdMenuDTO; -import com.elink.esua.epdc.dto.CompleteDeptDTO; -import com.elink.esua.epdc.dto.SysDeptResultDTO; +import com.elink.esua.epdc.commons.tools.validator.ValidatorUtils; +import com.elink.esua.epdc.dto.*; import com.elink.esua.epdc.dto.epdc.form.CityAreaFormDTO; import com.elink.esua.epdc.service.AdminService; import org.springframework.beans.factory.annotation.Autowired; @@ -79,4 +78,17 @@ public class ApiAdminController { public Result> getAllDeptTree() { return adminService.getAllDeptTree(); } + + /** + * @describe: 通过经纬度获取社区及街道id + * @author wangtong + * @date 2022/8/31 11:19 + * @params [dto] + * @return com.elink.esua.epdc.commons.tools.utils.Result + */ + @GetMapping("dept/getDeptIdByItude") + public Result getDeptIdByItude(DeptItudeFormDTO dto) { + ValidatorUtils.validateEntity(dto); + return adminService.getDeptIdByItude(dto); + } } diff --git a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/AdminFeignClient.java b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/AdminFeignClient.java index 20aa8b386..d25c92607 100644 --- a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/AdminFeignClient.java +++ b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/AdminFeignClient.java @@ -182,4 +182,14 @@ public interface AdminFeignClient { */ @GetMapping(value = "sys/dept/getAllDeptTree", consumes = MediaType.APPLICATION_JSON_VALUE) Result> getAllDeptTree(); + + /** + * @describe: 通过经纬度获取社区及街道id + * @author wangtong + * @date 2022/8/31 13:39 + * @params [dto] + * @return com.elink.esua.epdc.commons.tools.utils.Result + */ + @GetMapping(value = "sys/dept/getDeptIdByItude", consumes = MediaType.APPLICATION_JSON_VALUE) + Result getDeptIdByItude(DeptItudeFormDTO dto); } diff --git a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/fallback/AdminFeignClientFallback.java b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/fallback/AdminFeignClientFallback.java index 1aa48f482..cb1c49891 100644 --- a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/fallback/AdminFeignClientFallback.java +++ b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/fallback/AdminFeignClientFallback.java @@ -95,4 +95,9 @@ public class AdminFeignClientFallback implements AdminFeignClient { public Result> getAllDeptTree() { return ModuleUtils.feignConError(ServiceConstant.EPDC_ADMIN_SERVER, "getAllDeptTree"); } + + @Override + public Result getDeptIdByItude(DeptItudeFormDTO dto) { + return ModuleUtils.feignConError(ServiceConstant.EPDC_ADMIN_SERVER, "getDeptIdByItude",dto); + } } diff --git a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/AdminService.java b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/AdminService.java index 5c423bd52..86d6f0e55 100644 --- a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/AdminService.java +++ b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/AdminService.java @@ -2,9 +2,7 @@ package com.elink.esua.epdc.service; import com.elink.esua.epdc.common.token.dto.TokenDto; import com.elink.esua.epdc.commons.tools.utils.Result; -import com.elink.esua.epdc.dto.AppUserIdMenuDTO; -import com.elink.esua.epdc.dto.CompleteDeptDTO; -import com.elink.esua.epdc.dto.SysDeptResultDTO; +import com.elink.esua.epdc.dto.*; import com.elink.esua.epdc.dto.epdc.form.CityAreaFormDTO; import java.util.List; @@ -63,4 +61,13 @@ public interface AdminService { * @return com.elink.esua.epdc.commons.tools.utils.Result */ Result> getAllDeptTree(); + + /** + * @describe: 通过经纬度获取社区及街道id + * @author wangtong + * @date 2022/8/31 11:19 + * @params [dto] + * @return com.elink.esua.epdc.commons.tools.utils.Result + */ + Result getDeptIdByItude(DeptItudeFormDTO dto); } diff --git a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/impl/AdminServiceImpl.java b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/impl/AdminServiceImpl.java index e8a71ae65..d37935b43 100644 --- a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/impl/AdminServiceImpl.java +++ b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/impl/AdminServiceImpl.java @@ -2,9 +2,7 @@ package com.elink.esua.epdc.service.impl; import com.elink.esua.epdc.common.token.dto.TokenDto; import com.elink.esua.epdc.commons.tools.utils.Result; -import com.elink.esua.epdc.dto.AppUserIdMenuDTO; -import com.elink.esua.epdc.dto.CompleteDeptDTO; -import com.elink.esua.epdc.dto.SysDeptResultDTO; +import com.elink.esua.epdc.dto.*; import com.elink.esua.epdc.dto.epdc.form.CityAreaFormDTO; import com.elink.esua.epdc.feign.AdminFeignClient; import com.elink.esua.epdc.service.AdminService; @@ -65,4 +63,9 @@ public class AdminServiceImpl implements AdminService { public Result> getAllDeptTree() { return adminFeignClient.getAllDeptTree(); } + + @Override + public Result getDeptIdByItude(DeptItudeFormDTO dto) { + return adminFeignClient.getDeptIdByItude(dto); + } }