From 587ae348c9eeab5e296ae3784f3e5aa01354a2fb Mon Sep 17 00:00:00 2001 From: yangwei <867012372@qq.com> Date: Mon, 3 Mar 2025 16:22:00 +0800 Subject: [PATCH] =?UTF-8?q?[feat]=201=E3=80=81=E4=BF=AE=E6=94=B9=E5=B7=A1?= =?UTF-8?q?=E6=9F=A5=E5=8C=BA=E5=9F=9F=E7=9B=B8=E5=85=B3=E4=BB=A3=E7=A0=81?= =?UTF-8?q?=E9=80=BB=E8=BE=91=EF=BC=8C=E4=BB=A5=E5=8F=8A=E5=AF=B9=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E8=A1=A8=E7=9A=84=E4=BF=AE=E6=94=B9=E3=80=82=202?= =?UTF-8?q?=E3=80=81=E4=BF=AE=E5=A4=8D=E6=B5=81=E7=A8=8B=E5=A4=9A=E8=8A=82?= =?UTF-8?q?=E7=82=B9=E7=9A=84=E6=97=B6=E5=80=99=EF=BC=8C=E6=97=A0=E6=B3=95?= =?UTF-8?q?=E6=8C=87=E6=B4=BE=E5=A4=84=E7=90=86=E4=BA=BA=E7=9A=84=E6=83=85?= =?UTF-8?q?=E5=86=B5=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dromara/system/api/RemoteUserService.java | 2 + .../api/domain/enums/WorkflowCodeEnum.java | 19 + dk-modules/business/pom.xml | 31 +- .../controller/BusinessAlertController.java | 17 +- .../BusinessPatrolAreasController.java | 69 ++-- .../domain/BusinessGeospatialVectors.java | 146 +++++++ .../business/domain/BusinessPatrolAreas.java | 12 +- .../domain/BusinessPatrolAreasPlatform.java | 54 --- .../domain/BusinessPatrolAreasPoints.java | 42 -- .../business/domain/BusinessPlatformInfo.java | 54 --- ...AreasUser.java => BusinessVectorDict.java} | 33 +- ...oCode.java => BusinessVectorDictItem.java} | 32 +- .../dubbo/RemoteBusinessAlertServiceImpl.java | 4 +- .../BusinessPatrolAreasPlatformMapper.java | 10 - .../BusinessPatrolAreasPointsMapper.java | 16 - .../mapper/BusinessPatrolAreasUserMapper.java | 16 - .../BusinessPlatformInfoCodeMapper.java | 17 - .../mapper/BusinessPlatformInfoMapper.java | 23 -- .../mapper/BusinessVectorDictItemMapper.java | 8 + .../mapper/BusinessVectorDictMapper.java | 10 + ...ervice.java => IBusinessAlertService.java} | 3 +- .../IBusinessPatrolAreasPointsService.java | 13 - .../service/IBusinessPatrolAreasService.java | 10 +- .../IBusinessPatrolAreasUserService.java | 13 - .../service/IBusinessPlatformInfoService.java | 9 - .../IBusinessVectorDictItemService.java | 12 + .../service/IBusinessVectorDictService.java | 17 + .../impl/BusinessAlertServiceImpl.java | 7 +- .../BusinessPatrolAreasPointsServiceImpl.java | 23 -- .../impl/BusinessPatrolAreasServiceImpl.java | 224 ++++++----- .../BusinessPatrolAreasUserServiceImpl.java | 23 -- .../impl/BusinessPlatformInfoServiceImpl.java | 17 - .../BusinessVectorDictItemServiceImpl.java | 28 ++ .../impl/BusinessVectorDictServiceImpl.java | 37 ++ .../business/utils/ShpAnalysisUtil.java | 368 ++++++++++++++++++ .../BusinessPatrolAreasPointsMapper.xml | 11 - .../BusinessPatrolAreasUserMapper.xml | 9 - .../BusinessPlatformInfoCodeMapper.xml | 10 - .../business/BusinessPlatformInfoMapper.xml | 31 -- ...r.xml => BusinessVectorDictItemMapper.xml} | 4 +- .../business/BusinessVectorDictMapper.xml | 28 ++ .../system/dubbo/RemoteUserServiceImpl.java | 6 + .../dromara/system/mapper/SysUserMapper.java | 3 + .../system/service/ISysUserService.java | 1 + .../service/impl/SysUserServiceImpl.java | 9 +- .../resources/mapper/system/SysUserMapper.xml | 13 + .../impl/FlwTaskAssigneeServiceImpl.java | 2 +- .../service/impl/FlwTaskServiceImpl.java | 2 +- pom.xml | 42 +- 49 files changed, 978 insertions(+), 612 deletions(-) create mode 100644 dk-api/api-workflow/src/main/java/org/dromara/workflow/api/domain/enums/WorkflowCodeEnum.java create mode 100644 dk-modules/business/src/main/java/org/dromara/business/domain/BusinessGeospatialVectors.java delete mode 100644 dk-modules/business/src/main/java/org/dromara/business/domain/BusinessPatrolAreasPlatform.java delete mode 100644 dk-modules/business/src/main/java/org/dromara/business/domain/BusinessPatrolAreasPoints.java delete mode 100644 dk-modules/business/src/main/java/org/dromara/business/domain/BusinessPlatformInfo.java rename dk-modules/business/src/main/java/org/dromara/business/domain/{BusinessPatrolAreasUser.java => BusinessVectorDict.java} (51%) rename dk-modules/business/src/main/java/org/dromara/business/domain/{BusinessPlatformInfoCode.java => BusinessVectorDictItem.java} (60%) delete mode 100644 dk-modules/business/src/main/java/org/dromara/business/mapper/BusinessPatrolAreasPlatformMapper.java delete mode 100644 dk-modules/business/src/main/java/org/dromara/business/mapper/BusinessPatrolAreasPointsMapper.java delete mode 100644 dk-modules/business/src/main/java/org/dromara/business/mapper/BusinessPatrolAreasUserMapper.java delete mode 100644 dk-modules/business/src/main/java/org/dromara/business/mapper/BusinessPlatformInfoCodeMapper.java delete mode 100644 dk-modules/business/src/main/java/org/dromara/business/mapper/BusinessPlatformInfoMapper.java create mode 100644 dk-modules/business/src/main/java/org/dromara/business/mapper/BusinessVectorDictItemMapper.java create mode 100644 dk-modules/business/src/main/java/org/dromara/business/mapper/BusinessVectorDictMapper.java rename dk-modules/business/src/main/java/org/dromara/business/service/{BusinessAlertService.java => IBusinessAlertService.java} (94%) delete mode 100644 dk-modules/business/src/main/java/org/dromara/business/service/IBusinessPatrolAreasPointsService.java delete mode 100644 dk-modules/business/src/main/java/org/dromara/business/service/IBusinessPatrolAreasUserService.java delete mode 100644 dk-modules/business/src/main/java/org/dromara/business/service/IBusinessPlatformInfoService.java create mode 100644 dk-modules/business/src/main/java/org/dromara/business/service/IBusinessVectorDictItemService.java create mode 100644 dk-modules/business/src/main/java/org/dromara/business/service/IBusinessVectorDictService.java delete mode 100644 dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessPatrolAreasPointsServiceImpl.java delete mode 100644 dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessPatrolAreasUserServiceImpl.java delete mode 100644 dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessPlatformInfoServiceImpl.java create mode 100644 dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessVectorDictItemServiceImpl.java create mode 100644 dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessVectorDictServiceImpl.java create mode 100644 dk-modules/business/src/main/java/org/dromara/business/utils/ShpAnalysisUtil.java delete mode 100644 dk-modules/business/src/main/resources/mapper/business/BusinessPatrolAreasPointsMapper.xml delete mode 100644 dk-modules/business/src/main/resources/mapper/business/BusinessPatrolAreasUserMapper.xml delete mode 100644 dk-modules/business/src/main/resources/mapper/business/BusinessPlatformInfoCodeMapper.xml delete mode 100644 dk-modules/business/src/main/resources/mapper/business/BusinessPlatformInfoMapper.xml rename dk-modules/business/src/main/resources/mapper/business/{BusinessPatrolAreasPlatformMapper.xml => BusinessVectorDictItemMapper.xml} (65%) create mode 100644 dk-modules/business/src/main/resources/mapper/business/BusinessVectorDictMapper.xml diff --git a/dk-api/api-system/src/main/java/org/dromara/system/api/RemoteUserService.java b/dk-api/api-system/src/main/java/org/dromara/system/api/RemoteUserService.java index 1269d8b..6fc0210 100644 --- a/dk-api/api-system/src/main/java/org/dromara/system/api/RemoteUserService.java +++ b/dk-api/api-system/src/main/java/org/dromara/system/api/RemoteUserService.java @@ -155,4 +155,6 @@ public interface RemoteUserService { * @return 用户 */ List selectUsersByPostIds(List postIds); + + List selectUserByUserIds(List userIds); } diff --git a/dk-api/api-workflow/src/main/java/org/dromara/workflow/api/domain/enums/WorkflowCodeEnum.java b/dk-api/api-workflow/src/main/java/org/dromara/workflow/api/domain/enums/WorkflowCodeEnum.java new file mode 100644 index 0000000..89a74b0 --- /dev/null +++ b/dk-api/api-workflow/src/main/java/org/dromara/workflow/api/domain/enums/WorkflowCodeEnum.java @@ -0,0 +1,19 @@ +package org.dromara.workflow.api.domain.enums; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +/** + * 流程类型,后续有的话可以根据具体业务加,要保证流程定义里面的标识key和这边code保持一致 + */ +@Getter +@AllArgsConstructor +public enum WorkflowCodeEnum { + + ALERT("alert","预警流程"); + + final String code; + + final String description; + +} diff --git a/dk-modules/business/pom.xml b/dk-modules/business/pom.xml index 25e6f4c..6b6ef01 100644 --- a/dk-modules/business/pom.xml +++ b/dk-modules/business/pom.xml @@ -108,11 +108,39 @@ + org.dromara api-workflow + + + org.geotools + gt-geojson + ${geotools.version} + + + org.geotools + gt-geometry + ${geotools.version} + + + org.geotools + gt-epsg-hsql + ${geotools.version} + + + org.geotools + gt-jts-wrapper + ${geotools.version} + + + org.geotools + gt-shapefile + 29.5 + + ${project.artifactId} @@ -131,6 +159,7 @@ - + + diff --git a/dk-modules/business/src/main/java/org/dromara/business/controller/BusinessAlertController.java b/dk-modules/business/src/main/java/org/dromara/business/controller/BusinessAlertController.java index fa97d24..d02691f 100644 --- a/dk-modules/business/src/main/java/org/dromara/business/controller/BusinessAlertController.java +++ b/dk-modules/business/src/main/java/org/dromara/business/controller/BusinessAlertController.java @@ -1,28 +1,15 @@ package org.dromara.business.controller; -import jakarta.servlet.http.HttpServletResponse; -import jakarta.validation.constraints.NotEmpty; -import jakarta.validation.constraints.NotNull; import lombok.RequiredArgsConstructor; import org.dromara.business.domain.BusinessAlert; import org.dromara.business.domain.bo.BusinessAlertBo; -import org.dromara.business.domain.vo.BusinessAlertVo; -import org.dromara.business.service.BusinessAlertService; -import org.dromara.common.core.domain.R; -import org.dromara.common.core.validate.AddGroup; -import org.dromara.common.core.validate.EditGroup; -import org.dromara.common.excel.utils.ExcelUtil; -import org.dromara.common.idempotent.annotation.RepeatSubmit; -import org.dromara.common.log.annotation.Log; -import org.dromara.common.log.enums.BusinessType; +import org.dromara.business.service.IBusinessAlertService; import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.common.web.core.BaseController; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; -import java.util.List; - /** * 预警任务 * @@ -36,7 +23,7 @@ import java.util.List; public class BusinessAlertController extends BaseController { - private final BusinessAlertService businessAlertService; + private final IBusinessAlertService businessAlertService; /** * 查询全部预警 diff --git a/dk-modules/business/src/main/java/org/dromara/business/controller/BusinessPatrolAreasController.java b/dk-modules/business/src/main/java/org/dromara/business/controller/BusinessPatrolAreasController.java index 9ecbdce..20f6991 100644 --- a/dk-modules/business/src/main/java/org/dromara/business/controller/BusinessPatrolAreasController.java +++ b/dk-modules/business/src/main/java/org/dromara/business/controller/BusinessPatrolAreasController.java @@ -1,31 +1,28 @@ package org.dromara.business.controller; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import jakarta.servlet.http.HttpServletRequest; import lombok.RequiredArgsConstructor; -import org.dromara.business.domain.BusinessAlert; import org.dromara.business.domain.BusinessPatrolAreas; -import org.dromara.business.domain.BusinessPatrolAreasPoints; -import org.dromara.business.domain.BusinessPatrolAreasUser; import org.dromara.business.domain.bo.BusinessPatrolAreasBo; -import org.dromara.business.service.IBusinessPatrolAreasPointsService; import org.dromara.business.service.IBusinessPatrolAreasService; -import org.dromara.business.service.IBusinessPatrolAreasUserService; import org.dromara.common.core.domain.R; -import org.dromara.common.core.utils.MapstructUtils; +import org.dromara.common.mybatis.core.page.PageQuery; +import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.common.satoken.utils.LoginHelper; import org.dromara.common.web.core.BaseController; import org.dromara.system.api.model.LoginUser; import org.jeecgframework.poi.excel.def.NormalExcelConstants; import org.jeecgframework.poi.excel.entity.ExportParams; import org.jeecgframework.poi.excel.view.JeecgEntityExcelView; -import org.springframework.beans.factory.annotation.Value; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; import org.springframework.web.servlet.ModelAndView; +import javax.servlet.http.HttpServletRequest; +import java.util.Arrays; import java.util.List; /** @@ -39,43 +36,35 @@ public class BusinessPatrolAreasController extends BaseController { private final IBusinessPatrolAreasService patrolAreasService; - private final IBusinessPatrolAreasPointsService patrolAreasPointsService; - private final IBusinessPatrolAreasUserService patrolAreasUserService; - -// @Value("${jeecg.path.upload}") - private String upLoadPath; /** * 巡查区域-分页列表查询 * * @param patrolAreasBo - * @param pageNo - * @param pageSize + * @param pageQuery * @return */ - @GetMapping(value = "/list") - public R> queryPageList(BusinessPatrolAreasBo patrolAreasBo, - @RequestParam(name="pageNo", defaultValue="1") Integer pageNo, - @RequestParam(name="pageSize", defaultValue="10") Integer pageSize) { - Page page = new Page(pageNo, pageSize); - IPage pageList = patrolAreasService.pagePatrolAreas(page, patrolAreasBo); - return R.ok(pageList); + @GetMapping(value = "/page") + public TableDataInfo pagePatrolAreas(BusinessPatrolAreasBo patrolAreasBo, + PageQuery pageQuery) { + return patrolAreasService.pagePatrolAreas(pageQuery, patrolAreasBo); } /** * 巡查区域-添加 * - * @param patrolAreas + * @param file * @return */ - @PostMapping(value = "/add") - public R add(@RequestBody BusinessPatrolAreas patrolAreas) { - boolean flag = patrolAreasService.addPatrolAreas(patrolAreas); - if(flag){ - return R.ok("添加成功!"); + @PostMapping("/upload") + public R upload(@RequestParam("file") MultipartFile file) { + try { + patrolAreasService.addPatrolAreas(file); + return R.ok("上传成功!"); + } catch (Exception e) { + return R.fail("上传失败!"); } - return R.fail("新增失败"); } /** @@ -115,12 +104,6 @@ public class BusinessPatrolAreasController extends BaseController { @DeleteMapping(value = "/delete") public R delete(String id) { boolean flag = patrolAreasService.removeById(id); - if(flag){ - List patrolAreasUsersDels = patrolAreasUserService.listPatrolAreasUserByAreaId(id); - List patrolAreasPointsDels = patrolAreasPointsService.listPatrolAreasPointByAreaId(id); - patrolAreasUserService.removeByIds(patrolAreasUsersDels); - patrolAreasPointsService.removeByIds(patrolAreasPointsDels); - } if(flag){ return R.ok("删除成功!"); } @@ -136,12 +119,13 @@ public class BusinessPatrolAreasController extends BaseController { public ModelAndView exportXls(BusinessPatrolAreas patrolAreas, HttpServletRequest request) { //Step.2 AutoPoi 导出Excel ModelAndView mv = new ModelAndView(new JeecgEntityExcelView()); - //update-begin--Author:kangxiaolin Date:20180825 for:[03]用户导出,如果选择数据则只导出相关数据-------------------- -// String selections = request.getParameter("selections"); -// if(!oConvertUtils.isEmpty(selections)){ -// queryWrapper.in("id",selections.split(",")); -// } - //update-end--Author:kangxiaolin Date:20180825 for:[03]用户导出,如果选择数据则只导出相关数据---------------------- + + String selections = request.getParameter("selections"); + if (ObjectUtil.isNotEmpty(selections)) { + List areasIdList = Arrays.asList(selections.split(",")); + patrolAreas.setAreasIdList(areasIdList); + } + List pageList = patrolAreasService.exportXls(patrolAreas); //导出文件名称 @@ -149,7 +133,6 @@ public class BusinessPatrolAreasController extends BaseController { mv.addObject(NormalExcelConstants.CLASS, BusinessPatrolAreas.class); LoginUser user = LoginHelper.getLoginUser(); ExportParams exportParams = new ExportParams("用户列表数据", "导出人:"+user.getNickname(), "导出信息"); - exportParams.setImageBasePath(upLoadPath); mv.addObject(NormalExcelConstants.PARAMS, exportParams); mv.addObject(NormalExcelConstants.DATA_LIST, pageList); return mv; diff --git a/dk-modules/business/src/main/java/org/dromara/business/domain/BusinessGeospatialVectors.java b/dk-modules/business/src/main/java/org/dromara/business/domain/BusinessGeospatialVectors.java new file mode 100644 index 0000000..605fc27 --- /dev/null +++ b/dk-modules/business/src/main/java/org/dromara/business/domain/BusinessGeospatialVectors.java @@ -0,0 +1,146 @@ +package org.dromara.business.domain; + + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.util.Date; + +/** + *存储解析的shp的矢量数据 + */ +@Data +@TableName("business_geospatial_vectors") +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +public class BusinessGeospatialVectors { + + /** + * ID + */ + @TableId(type = IdType.AUTO) + private String id; + + // 1. 图形基础属性 + private String landCategories; // 几何信息 + + private String lineColor; // 线颜色 + + private String areaColor; // 面颜色 + + private String lineTransparency; // 线透明度 + + private String lineWidth; // 线宽度 + + private String areaTransparency; // 面透明度 + + private String shapeLength; // 形状长度 + + private String shapeArea; // 形状面积 + + // 2. 图斑标识信息 + private String featureCode; // 标识码 + + private String featureTypeCode; // 要素代码 + + private String temporaryFeatureId; // 图斑预编号 + + private String featureId; // 图斑编号 + + private String featureType; // 图斑类型 + + private String objectId; // 对象ID + + // 3. 地类信息 + private String landTypeCode; // 地类编码 + + private String landTypeName; // 地类名称 + + private String landUseType; // 土地利用类型 + + private String landActualUse; // 土地用途 + + // 4. 权属与行政区划信息 + private String ownershipNature; // 权属性质 + + private String ownershipUnitCode; // 权属单位代码 + + private String ownershipUnitName; // 权属单位名称 + + private String landUnitCode; // 坐落单位代码 + + private String landUnitName; // 坐落单位名称 + + private String adminDivisionCode; // 行政区代码 + + private String adminDivisionName; // 行政区名称 + + // 5. 面积信息 + private String featureArea; // 图斑面积 + + private String deductionArea; // 扣除面积 + + private String featureLandArea; // 图斑地类面积 + + private String linearFeatureWidth; // 线状地物宽度 + + // 6. 农用地相关信息 + private String arableLandQuality; // 耕地等别 + + private String arableLandQualityCode; // 耕地等别代码 + + private String basicFarmlandType; // 基本农田类型 + + // 7. 规划信息 + private String planningPurpose; // 规划用途 + + private String planningPurposeCode; // 规划用途代码 + + private String planningPeriod; // 规划期限 + + // 8. 变更与历史信息 + private String originalFeatureCode; // 原始代码 + + private String originalLandTypeCode; // 原地类编码 + + private String changeRecordId; // 变更编号 + + private String changeDate; // 变更日期 + + // 9. 时间信息 + private String updateDate; // 更新日期 + + private String completionDate; // 建设日期 + + private String dataYear; // 数据年份 + + // 10. 其他属性 + private String notes; // 备注 + + private String approvalNumber; // 批准文号 + + private String urbanVillageCode; // 城镇村属性码 + + private String extendedInfo; // 扩展信息 + + private String belongingArea; // 所属区域 + + private String geographicLocation; // 地理位置 + + // 11. 拆转查相关信息 + private String demolitionType; // 拆查类型 + + private String demolitionArea; // 拆查面积 + + private String demolitionName; // 拆查名称 + + private Integer batchNo; //批次号 + + private Date createTime; //创建时间 + + +} diff --git a/dk-modules/business/src/main/java/org/dromara/business/domain/BusinessPatrolAreas.java b/dk-modules/business/src/main/java/org/dromara/business/domain/BusinessPatrolAreas.java index 08d583d..fbddfda 100644 --- a/dk-modules/business/src/main/java/org/dromara/business/domain/BusinessPatrolAreas.java +++ b/dk-modules/business/src/main/java/org/dromara/business/domain/BusinessPatrolAreas.java @@ -31,13 +31,18 @@ public class BusinessPatrolAreas extends BaseEntity { /**区域名称*/ @Excel(name = "区域名称", width = 15) private String name; + /**区域编号*/ @Excel(name = "区域编号", width = 15) private String number; + /**所属乡镇id*/ @Excel(name = "所属乡镇id", width = 15) private String deptId; + /**地理数据*/ + private String landCategories; + /**所属乡镇id*/ @Excel(name = "所属乡镇名称", width = 15) @TableField(exist = false) @@ -61,14 +66,11 @@ public class BusinessPatrolAreas extends BaseEntity { /**是否禁用:0:禁用 1:启用**/ private Integer isDisable; - /**巡查区域人员信息集合**/ - @TableField(exist = false) - private List patrolAreasUsers = new ArrayList<>(); /**巡查区域平台类型集合**/ @TableField(exist = false) private List patrolAreasIdList = new ArrayList<>(); - /**巡查区域坐标集合**/ + @TableField(exist = false) - private List patrolAreasPoints = new ArrayList<>(); + private List areasIdList = new ArrayList<>(); } diff --git a/dk-modules/business/src/main/java/org/dromara/business/domain/BusinessPatrolAreasPlatform.java b/dk-modules/business/src/main/java/org/dromara/business/domain/BusinessPatrolAreasPlatform.java deleted file mode 100644 index e1fd339..0000000 --- a/dk-modules/business/src/main/java/org/dromara/business/domain/BusinessPatrolAreasPlatform.java +++ /dev/null @@ -1,54 +0,0 @@ -package org.dromara.business.domain; - -import com.alibaba.excel.annotation.ExcelProperty; -import com.baomidou.mybatisplus.annotation.IdType; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import lombok.Data; -import lombok.EqualsAndHashCode; -import lombok.experimental.Accessors; -import org.dromara.common.mybatis.core.domain.BaseEntity; - -/** - * Description:
- * date: 2024/8/12$ 17:17$
- * - * @author: yq - */ - -@Data -@TableName("business_patrol_areas_platform_info") -@EqualsAndHashCode(callSuper = false) -@Accessors(chain = true) -public class BusinessPatrolAreasPlatform extends BaseEntity { - - /** - * ID - */ - @TableId(type = IdType.ASSIGN_ID) - private String id; - - @ExcelProperty(value = "patrol_areas_id") - private String patrolAreasId; - /**区域名称*/ - @ExcelProperty(value = "平台名称") - private String platformName; - - @ExcelProperty(value = "平台类型") - private String platformType; - - /**区域编号*/ - @ExcelProperty(value = "平台图片") - private String imageUrl; - - /** - * 排序 - */ - @ExcelProperty(value = "排序") - private Integer sort; - - - - - -} diff --git a/dk-modules/business/src/main/java/org/dromara/business/domain/BusinessPatrolAreasPoints.java b/dk-modules/business/src/main/java/org/dromara/business/domain/BusinessPatrolAreasPoints.java deleted file mode 100644 index e4d0d52..0000000 --- a/dk-modules/business/src/main/java/org/dromara/business/domain/BusinessPatrolAreasPoints.java +++ /dev/null @@ -1,42 +0,0 @@ -package org.dromara.business.domain; - -import com.alibaba.excel.annotation.ExcelProperty; -import com.baomidou.mybatisplus.annotation.IdType; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import lombok.Data; -import lombok.EqualsAndHashCode; -import lombok.experimental.Accessors; -import org.dromara.common.mybatis.core.domain.BaseEntity; - -import java.math.BigDecimal; - -/** - * @Description: 巡查区域坐标 - */ -@Data -@TableName("business_patrol_area_points") -@EqualsAndHashCode(callSuper = false) -@Accessors(chain = true) -public class BusinessPatrolAreasPoints extends BaseEntity { - - /** - * ID - */ - @TableId(type = IdType.ASSIGN_ID) - private String id; - - /**areaId*/ - @ExcelProperty(value = "areaId") - private String areaId; - /**纬度*/ - @ExcelProperty(value = "纬度") - private BigDecimal lat; - /**经度*/ - @ExcelProperty(value = "经度") - private BigDecimal lng; - /**序号*/ - @ExcelProperty(value = "序号") - private Integer sortNumber; - -} diff --git a/dk-modules/business/src/main/java/org/dromara/business/domain/BusinessPlatformInfo.java b/dk-modules/business/src/main/java/org/dromara/business/domain/BusinessPlatformInfo.java deleted file mode 100644 index 68fe097..0000000 --- a/dk-modules/business/src/main/java/org/dromara/business/domain/BusinessPlatformInfo.java +++ /dev/null @@ -1,54 +0,0 @@ - -package org.dromara.business.domain; - -import com.baomidou.mybatisplus.annotation.IdType; -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import lombok.Data; -import lombok.EqualsAndHashCode; -import lombok.experimental.Accessors; -import org.dromara.common.mybatis.core.domain.BaseEntity; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -/** - * @Description: 平台信息 - */ -@Data -@TableName("business_platform_info") -@EqualsAndHashCode(callSuper = false) -@Accessors(chain = true) -public class BusinessPlatformInfo extends BaseEntity { - - /** - * ID - */ - @TableId(type = IdType.ASSIGN_ID) - private String id; - - /**设备昵称**/ - private String platformName; - - /**设备类型**/ - private String platformType; - - /**平台图片**/ - private String imageUrl; - - /**app图片**/ - private String imageAppUrl; - - /**排序**/ - private Integer sort; - /**路由**/ - private String routes; - /**平台识别类型集合**/ - @TableField(exist = false) - private List platformInfoCodes = new ArrayList<>(); - @TableField(exist = false) - private Map total = new HashMap<>(); -} diff --git a/dk-modules/business/src/main/java/org/dromara/business/domain/BusinessPatrolAreasUser.java b/dk-modules/business/src/main/java/org/dromara/business/domain/BusinessVectorDict.java similarity index 51% rename from dk-modules/business/src/main/java/org/dromara/business/domain/BusinessPatrolAreasUser.java rename to dk-modules/business/src/main/java/org/dromara/business/domain/BusinessVectorDict.java index 28b8f3c..f75edde 100644 --- a/dk-modules/business/src/main/java/org/dromara/business/domain/BusinessPatrolAreasUser.java +++ b/dk-modules/business/src/main/java/org/dromara/business/domain/BusinessVectorDict.java @@ -1,7 +1,7 @@ package org.dromara.business.domain; -import com.alibaba.excel.annotation.ExcelProperty; import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data; @@ -9,29 +9,34 @@ import lombok.EqualsAndHashCode; import lombok.experimental.Accessors; import org.dromara.common.mybatis.core.domain.BaseEntity; +import java.util.List; + /** - * @Description: 巡查区域人员信息 + * 矢量数据字段映射主表 */ @Data -@TableName("business_patrol_area_users") +@TableName("Business_vector_dict") @EqualsAndHashCode(callSuper = false) @Accessors(chain = true) -public class BusinessPatrolAreasUser extends BaseEntity { +public class BusinessVectorDict extends BaseEntity { /** - * ID + * */ @TableId(type = IdType.ASSIGN_ID) private String id; - /**巡查区域id*/ - @ExcelProperty(value = "巡查区域id") - private String areaId; - /**巡查人员id*/ - @ExcelProperty(value = "巡查人员id") - private String userId; - /**巡查人员姓名*/ - @ExcelProperty(value = "巡查人员姓名") - private String realname; + /** + * 字段名称 + */ + private String dictCode; + + /** + * 描述 + */ + private String dictName; + + @TableField(exist = false) + private List fieldMappingsList; } diff --git a/dk-modules/business/src/main/java/org/dromara/business/domain/BusinessPlatformInfoCode.java b/dk-modules/business/src/main/java/org/dromara/business/domain/BusinessVectorDictItem.java similarity index 60% rename from dk-modules/business/src/main/java/org/dromara/business/domain/BusinessPlatformInfoCode.java rename to dk-modules/business/src/main/java/org/dromara/business/domain/BusinessVectorDictItem.java index aeec561..1fcad8b 100644 --- a/dk-modules/business/src/main/java/org/dromara/business/domain/BusinessPlatformInfoCode.java +++ b/dk-modules/business/src/main/java/org/dromara/business/domain/BusinessVectorDictItem.java @@ -1,4 +1,3 @@ - package org.dromara.business.domain; import com.baomidou.mybatisplus.annotation.IdType; @@ -10,23 +9,34 @@ import lombok.experimental.Accessors; import org.dromara.common.mybatis.core.domain.BaseEntity; /** - * @Description: 平台信息 + * 矢量数据字段映射关联表 */ @Data -@TableName("business_platform_info_code") +@TableName("Business_vector_dict_item") @EqualsAndHashCode(callSuper = false) @Accessors(chain = true) -public class BusinessPlatformInfoCode extends BaseEntity { +public class BusinessVectorDictItem extends BaseEntity { /** - * ID + * */ @TableId(type = IdType.ASSIGN_ID) private String id; - /**平台对象id**/ - private String platformInfoId; - /**识别内容**/ - private String codeName; - /**识别类型**/ - private String codeType; + + /** + * 字段名称 + */ + private String itemValue; + + /** + * 关联id + */ + private String dictId; + + /** + * 描述 + */ + private String itemText; + + } diff --git a/dk-modules/business/src/main/java/org/dromara/business/dubbo/RemoteBusinessAlertServiceImpl.java b/dk-modules/business/src/main/java/org/dromara/business/dubbo/RemoteBusinessAlertServiceImpl.java index fe330f4..58c7a30 100644 --- a/dk-modules/business/src/main/java/org/dromara/business/dubbo/RemoteBusinessAlertServiceImpl.java +++ b/dk-modules/business/src/main/java/org/dromara/business/dubbo/RemoteBusinessAlertServiceImpl.java @@ -3,7 +3,7 @@ package org.dromara.business.dubbo; import lombok.RequiredArgsConstructor; import org.apache.dubbo.config.annotation.DubboService; import org.dromara.business.api.RemoteBusinessAlertService; -import org.dromara.business.service.BusinessAlertService; +import org.dromara.business.service.IBusinessAlertService; import org.springframework.stereotype.Service; /** @@ -14,7 +14,7 @@ import org.springframework.stereotype.Service; @DubboService public class RemoteBusinessAlertServiceImpl implements RemoteBusinessAlertService { - private final BusinessAlertService businessAlertService; + private final IBusinessAlertService businessAlertService; /** diff --git a/dk-modules/business/src/main/java/org/dromara/business/mapper/BusinessPatrolAreasPlatformMapper.java b/dk-modules/business/src/main/java/org/dromara/business/mapper/BusinessPatrolAreasPlatformMapper.java deleted file mode 100644 index 79354f5..0000000 --- a/dk-modules/business/src/main/java/org/dromara/business/mapper/BusinessPatrolAreasPlatformMapper.java +++ /dev/null @@ -1,10 +0,0 @@ -package org.dromara.business.mapper; - - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import org.dromara.business.domain.BusinessPatrolAreasPlatform; - - -public interface BusinessPatrolAreasPlatformMapper extends BaseMapper { - -} diff --git a/dk-modules/business/src/main/java/org/dromara/business/mapper/BusinessPatrolAreasPointsMapper.java b/dk-modules/business/src/main/java/org/dromara/business/mapper/BusinessPatrolAreasPointsMapper.java deleted file mode 100644 index dead5dd..0000000 --- a/dk-modules/business/src/main/java/org/dromara/business/mapper/BusinessPatrolAreasPointsMapper.java +++ /dev/null @@ -1,16 +0,0 @@ -package org.dromara.business.mapper; - - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import org.apache.ibatis.annotations.Param; -import org.dromara.business.domain.BusinessPatrolAreasPoints; - -import java.util.List; - -/** - * @Description: 巡查区域坐标 - */ -public interface BusinessPatrolAreasPointsMapper extends BaseMapper { - - List listPatrolAreasPointByAreaId(@Param("areaId") String areaId); -} diff --git a/dk-modules/business/src/main/java/org/dromara/business/mapper/BusinessPatrolAreasUserMapper.java b/dk-modules/business/src/main/java/org/dromara/business/mapper/BusinessPatrolAreasUserMapper.java deleted file mode 100644 index 79a7206..0000000 --- a/dk-modules/business/src/main/java/org/dromara/business/mapper/BusinessPatrolAreasUserMapper.java +++ /dev/null @@ -1,16 +0,0 @@ -package org.dromara.business.mapper; - - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import org.apache.ibatis.annotations.Param; -import org.dromara.business.domain.BusinessPatrolAreasUser; - -import java.util.List; - -/** - * @Description: 巡查区域人员信息 - */ -public interface BusinessPatrolAreasUserMapper extends BaseMapper { - - List listPatrolAreasUserByAreaId(@Param("areaId") String areaId); -} diff --git a/dk-modules/business/src/main/java/org/dromara/business/mapper/BusinessPlatformInfoCodeMapper.java b/dk-modules/business/src/main/java/org/dromara/business/mapper/BusinessPlatformInfoCodeMapper.java deleted file mode 100644 index 03e409d..0000000 --- a/dk-modules/business/src/main/java/org/dromara/business/mapper/BusinessPlatformInfoCodeMapper.java +++ /dev/null @@ -1,17 +0,0 @@ -package org.dromara.business.mapper; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import org.apache.ibatis.annotations.Param; -import org.dromara.business.domain.BusinessPlatformInfoCode; - -import java.util.List; - -/** - * - * @author sean.zhou - * @date 2021/11/10 - * @version 0.1 - */ -public interface BusinessPlatformInfoCodeMapper extends BaseMapper { - List listPlatformInfoCodeByPlatformInfoId(@Param("platformInfoId") String platformInfoId); -} diff --git a/dk-modules/business/src/main/java/org/dromara/business/mapper/BusinessPlatformInfoMapper.java b/dk-modules/business/src/main/java/org/dromara/business/mapper/BusinessPlatformInfoMapper.java deleted file mode 100644 index 9c32b8a..0000000 --- a/dk-modules/business/src/main/java/org/dromara/business/mapper/BusinessPlatformInfoMapper.java +++ /dev/null @@ -1,23 +0,0 @@ -package org.dromara.business.mapper; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.baomidou.mybatisplus.core.metadata.IPage; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import org.apache.ibatis.annotations.Param; -import org.dromara.business.domain.BusinessPlatformInfo; -import org.dromara.business.domain.bo.BusinessPlatformInfoBo; - -import java.util.List; - -/** - * - * @author sean.zhou - * @date 2021/11/10 - * @version 0.1 - */ -public interface BusinessPlatformInfoMapper extends BaseMapper { - IPage listPlatformInfo(Page page, @Param("condition") BusinessPlatformInfoBo platformInfoBo); - - List listPlatformInfo(@Param("condition")BusinessPlatformInfoBo platformInfoBo); - -} diff --git a/dk-modules/business/src/main/java/org/dromara/business/mapper/BusinessVectorDictItemMapper.java b/dk-modules/business/src/main/java/org/dromara/business/mapper/BusinessVectorDictItemMapper.java new file mode 100644 index 0000000..7831c13 --- /dev/null +++ b/dk-modules/business/src/main/java/org/dromara/business/mapper/BusinessVectorDictItemMapper.java @@ -0,0 +1,8 @@ +package org.dromara.business.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.dromara.business.domain.BusinessVectorDictItem; + +public interface BusinessVectorDictItemMapper extends BaseMapper { + +} diff --git a/dk-modules/business/src/main/java/org/dromara/business/mapper/BusinessVectorDictMapper.java b/dk-modules/business/src/main/java/org/dromara/business/mapper/BusinessVectorDictMapper.java new file mode 100644 index 0000000..403886e --- /dev/null +++ b/dk-modules/business/src/main/java/org/dromara/business/mapper/BusinessVectorDictMapper.java @@ -0,0 +1,10 @@ +package org.dromara.business.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.dromara.business.domain.BusinessVectorDict; + +import java.util.List; + +public interface BusinessVectorDictMapper extends BaseMapper { + List listVectorField(); +} diff --git a/dk-modules/business/src/main/java/org/dromara/business/service/BusinessAlertService.java b/dk-modules/business/src/main/java/org/dromara/business/service/IBusinessAlertService.java similarity index 94% rename from dk-modules/business/src/main/java/org/dromara/business/service/BusinessAlertService.java rename to dk-modules/business/src/main/java/org/dromara/business/service/IBusinessAlertService.java index 1395238..314d53d 100644 --- a/dk-modules/business/src/main/java/org/dromara/business/service/BusinessAlertService.java +++ b/dk-modules/business/src/main/java/org/dromara/business/service/IBusinessAlertService.java @@ -1,7 +1,6 @@ package org.dromara.business.service; import org.dromara.business.domain.BusinessAlert; -import org.dromara.business.domain.vo.BusinessAlertVo; import org.dromara.business.domain.bo.BusinessAlertBo; import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.common.mybatis.core.page.PageQuery; @@ -14,7 +13,7 @@ import java.util.List; * @author LionLi * @date 2025-02-27 */ -public interface BusinessAlertService { +public interface IBusinessAlertService { TableDataInfo pageBusinessAlertTodo(BusinessAlertBo bo, PageQuery pageQuery); diff --git a/dk-modules/business/src/main/java/org/dromara/business/service/IBusinessPatrolAreasPointsService.java b/dk-modules/business/src/main/java/org/dromara/business/service/IBusinessPatrolAreasPointsService.java deleted file mode 100644 index 8025a69..0000000 --- a/dk-modules/business/src/main/java/org/dromara/business/service/IBusinessPatrolAreasPointsService.java +++ /dev/null @@ -1,13 +0,0 @@ -package org.dromara.business.service; - -import com.baomidou.mybatisplus.extension.service.IService; -import org.dromara.business.domain.BusinessPatrolAreasPoints; - -import java.util.List; - -/** - * @Description: 巡查区域坐标 - */ -public interface IBusinessPatrolAreasPointsService extends IService { - List listPatrolAreasPointByAreaId(String areaId); -} diff --git a/dk-modules/business/src/main/java/org/dromara/business/service/IBusinessPatrolAreasService.java b/dk-modules/business/src/main/java/org/dromara/business/service/IBusinessPatrolAreasService.java index dfd1dc7..1d7aec4 100644 --- a/dk-modules/business/src/main/java/org/dromara/business/service/IBusinessPatrolAreasService.java +++ b/dk-modules/business/src/main/java/org/dromara/business/service/IBusinessPatrolAreasService.java @@ -6,6 +6,9 @@ import com.baomidou.mybatisplus.extension.service.IService; import org.apache.ibatis.annotations.Param; import org.dromara.business.domain.BusinessPatrolAreas; import org.dromara.business.domain.bo.BusinessPatrolAreasBo; +import org.dromara.common.mybatis.core.page.PageQuery; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.springframework.web.multipart.MultipartFile; import java.util.List; @@ -13,13 +16,14 @@ import java.util.List; * @Description: 巡查区域 */ public interface IBusinessPatrolAreasService extends IService { - IPage pagePatrolAreas(Page page, @Param("condition") BusinessPatrolAreasBo patrolAreasBo); + TableDataInfo pagePatrolAreas(PageQuery pageQuery, BusinessPatrolAreasBo patrolAreasBo); - List listPatrolAreas(@Param("condition") BusinessPatrolAreasBo patrolAreasBo); + List listPatrolAreas(BusinessPatrolAreasBo patrolAreasBo); - boolean addPatrolAreas(BusinessPatrolAreas patrolAreas); + void addPatrolAreas(MultipartFile file); boolean updatePatrolAreas(BusinessPatrolAreas patrolAreas); List exportXls(BusinessPatrolAreas patrolAreas); + } diff --git a/dk-modules/business/src/main/java/org/dromara/business/service/IBusinessPatrolAreasUserService.java b/dk-modules/business/src/main/java/org/dromara/business/service/IBusinessPatrolAreasUserService.java deleted file mode 100644 index 25fe654..0000000 --- a/dk-modules/business/src/main/java/org/dromara/business/service/IBusinessPatrolAreasUserService.java +++ /dev/null @@ -1,13 +0,0 @@ -package org.dromara.business.service; - -import com.baomidou.mybatisplus.extension.service.IService; -import org.dromara.business.domain.BusinessPatrolAreasUser; - -import java.util.List; - -/** - * @Description: 巡查区域人员信息 - */ -public interface IBusinessPatrolAreasUserService extends IService { - List listPatrolAreasUserByAreaId(String areaId); -} diff --git a/dk-modules/business/src/main/java/org/dromara/business/service/IBusinessPlatformInfoService.java b/dk-modules/business/src/main/java/org/dromara/business/service/IBusinessPlatformInfoService.java deleted file mode 100644 index fba41d6..0000000 --- a/dk-modules/business/src/main/java/org/dromara/business/service/IBusinessPlatformInfoService.java +++ /dev/null @@ -1,9 +0,0 @@ -package org.dromara.business.service; - -import com.baomidou.mybatisplus.extension.service.IService; -import org.dromara.business.domain.BusinessPlatformInfo; - -public interface IBusinessPlatformInfoService extends IService { - - -} diff --git a/dk-modules/business/src/main/java/org/dromara/business/service/IBusinessVectorDictItemService.java b/dk-modules/business/src/main/java/org/dromara/business/service/IBusinessVectorDictItemService.java new file mode 100644 index 0000000..03f4553 --- /dev/null +++ b/dk-modules/business/src/main/java/org/dromara/business/service/IBusinessVectorDictItemService.java @@ -0,0 +1,12 @@ +package org.dromara.business.service; + + +import org.dromara.business.domain.BusinessVectorDictItem; + +import java.util.List; + +public interface IBusinessVectorDictItemService { + + List findDictItemByDictId(String dictId); + +} diff --git a/dk-modules/business/src/main/java/org/dromara/business/service/IBusinessVectorDictService.java b/dk-modules/business/src/main/java/org/dromara/business/service/IBusinessVectorDictService.java new file mode 100644 index 0000000..620416f --- /dev/null +++ b/dk-modules/business/src/main/java/org/dromara/business/service/IBusinessVectorDictService.java @@ -0,0 +1,17 @@ +package org.dromara.business.service; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import org.dromara.business.domain.BusinessVectorDict; + +import java.util.List; + +public interface IBusinessVectorDictService { + + List listVectorField(); + + BusinessVectorDict findVectorDictById(String dictId); + + +} diff --git a/dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessAlertServiceImpl.java b/dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessAlertServiceImpl.java index 3f3d707..02d325c 100644 --- a/dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessAlertServiceImpl.java +++ b/dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessAlertServiceImpl.java @@ -2,18 +2,15 @@ package org.dromara.business.service.impl; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.ObjectUtil; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; -import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import lombok.RequiredArgsConstructor; import org.apache.dubbo.config.annotation.DubboReference; import org.dromara.business.domain.BusinessAlert; import org.dromara.business.domain.bo.BusinessAlertBo; -import org.dromara.business.domain.vo.BusinessAlertVo; import org.dromara.business.mapper.BusinessAlertMapper; -import org.dromara.business.service.BusinessAlertService; +import org.dromara.business.service.IBusinessAlertService; import org.dromara.common.core.enums.BusinessStatusEnum; import org.dromara.common.core.exception.ServiceException; import org.dromara.common.core.utils.MapstructUtils; @@ -37,7 +34,7 @@ import java.util.Map; */ @RequiredArgsConstructor @Service -public class BusinessAlertServiceImpl implements BusinessAlertService { +public class BusinessAlertServiceImpl implements IBusinessAlertService { private final BusinessAlertMapper baseMapper; diff --git a/dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessPatrolAreasPointsServiceImpl.java b/dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessPatrolAreasPointsServiceImpl.java deleted file mode 100644 index 09f617e..0000000 --- a/dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessPatrolAreasPointsServiceImpl.java +++ /dev/null @@ -1,23 +0,0 @@ -package org.dromara.business.service.impl; - -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import lombok.RequiredArgsConstructor; -import org.dromara.business.domain.BusinessPatrolAreasPoints; -import org.dromara.business.mapper.BusinessPatrolAreasPointsMapper; -import org.dromara.business.service.IBusinessPatrolAreasPointsService; -import org.springframework.stereotype.Service; - -import java.util.List; - -/** - * @Description: 巡查区域坐标 - */ -@RequiredArgsConstructor -@Service -public class BusinessPatrolAreasPointsServiceImpl extends ServiceImpl implements IBusinessPatrolAreasPointsService { - - @Override - public List listPatrolAreasPointByAreaId(String areaId) { - return baseMapper.listPatrolAreasPointByAreaId(areaId); - } -} diff --git a/dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessPatrolAreasServiceImpl.java b/dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessPatrolAreasServiceImpl.java index 34ed1e8..670e32d 100644 --- a/dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessPatrolAreasServiceImpl.java +++ b/dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessPatrolAreasServiceImpl.java @@ -13,12 +13,11 @@ import org.apache.dubbo.config.annotation.DubboReference; import org.dromara.business.domain.*; import org.dromara.business.domain.bo.BusinessPatrolAreasBo; import org.dromara.business.mapper.BusinessPatrolAreasMapper; -import org.dromara.business.mapper.BusinessPatrolAreasPlatformMapper; -import org.dromara.business.service.IBusinessPatrolAreasPointsService; -import org.dromara.business.service.IBusinessPatrolAreasService; -import org.dromara.business.service.IBusinessPatrolAreasUserService; -import org.dromara.business.service.IBusinessPlatformInfoService; +import org.dromara.business.service.*; +import org.dromara.business.utils.ShpAnalysisUtil; import org.dromara.common.core.exception.ServiceException; +import org.dromara.common.mybatis.core.page.PageQuery; +import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.common.satoken.utils.LoginHelper; import org.dromara.system.api.RemoteDeptService; import org.dromara.system.api.RemoteUserService; @@ -26,10 +25,11 @@ import org.dromara.system.api.domain.vo.RemoteDeptVo; import org.dromara.system.api.model.LoginUser; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.multipart.MultipartFile; -import java.util.ArrayList; -import java.util.List; -import java.util.Set; +import java.io.InputStream; +import java.lang.reflect.Method; +import java.util.*; import java.util.stream.Collectors; /** @@ -39,14 +39,7 @@ import java.util.stream.Collectors; @Service public class BusinessPatrolAreasServiceImpl extends ServiceImpl implements IBusinessPatrolAreasService { - - private final IBusinessPatrolAreasPointsService patrolAreasPointsService; - - private final IBusinessPatrolAreasUserService patrolAreasUserService; - - private final IBusinessPlatformInfoService platformInfoService; - - private final BusinessPatrolAreasPlatformMapper patrolAreasPlatformInfoMapper; + private final IBusinessVectorDictService vectorDictService; @DubboReference private RemoteUserService remoteUserService; @@ -54,7 +47,7 @@ public class BusinessPatrolAreasServiceImpl extends ServiceImpl pagePatrolAreas(Page page, BusinessPatrolAreasBo patrolAreasBo) { + public TableDataInfo pagePatrolAreas(PageQuery pageQuery, BusinessPatrolAreasBo patrolAreasBo) { LoginUser user = LoginHelper.getLoginUser(); List deptIds = new ArrayList<>(); String departIds = null; @@ -67,26 +60,10 @@ public class BusinessPatrolAreasServiceImpl extends ServiceImpl iPage = this.baseMapper.listPatrolAreas(page, patrolAreasBo, deptIds); - List records = page.getRecords(); - if(!records.isEmpty()){ - records.forEach(p->{ - QueryWrapper queryWrapper = new QueryWrapper(); - queryWrapper.eq("patrol_areas_id",p.getId()); - List collect = patrolAreasPlatformInfoMapper.selectList(queryWrapper).stream().map(BusinessPatrolAreasPlatform::getPlatformType).collect(Collectors.toList()); - p.setPatrolAreasIdList(collect); - }); - } - page.setRecords(records); - return iPage; + + return TableDataInfo.build(this.baseMapper.listPatrolAreas(pageQuery.build(), patrolAreasBo, deptIds)); } @Override @@ -96,108 +73,125 @@ public class BusinessPatrolAreasServiceImpl extends ServiceImpl patrolAreasUsers = patrolAreas.getPatrolAreasUsers(); - patrolAreasUsers.stream().forEach(item->{ - item.setAreaId(patrolAreas.getId()); - item.setRealname(remoteUserService.selectUserNameById(Long.valueOf(patrolAreas.getUserId()))); - }); - List patrolAreasIdList = patrolAreas.getPatrolAreasIdList(); - if(!patrolAreasIdList.isEmpty()){ - patrolAreasIdList.forEach(item->{ - BusinessPlatformInfo platformInfo = platformInfoService.lambdaQuery().eq(BusinessPlatformInfo::getPlatformType,item).one(); - BusinessPatrolAreasPlatform patrolAreasPlatformInfo =new BusinessPatrolAreasPlatform(); - patrolAreasPlatformInfo.setPatrolAreasId(patrolAreas.getId()); - patrolAreasPlatformInfo.setPlatformName(platformInfo.getPlatformName()); - patrolAreasPlatformInfo.setPlatformType(platformInfo.getPlatformType()); - patrolAreasPlatformInfo.setSort(platformInfo.getSort()); - patrolAreasPlatformInfo.setImageUrl(platformInfo.getImageUrl()); - patrolAreasPlatformInfoMapper.insert(patrolAreasPlatformInfo); - }); - } + return this.updateById(patrolAreas); + } - if(CollectionUtils.isNotEmpty(patrolAreasUsers)){ - flag = patrolAreasUserService.saveBatch(patrolAreasUsers,500); - } - List patrolAreasPoints = patrolAreas.getPatrolAreasPoints(); - patrolAreasPoints.stream().forEach(item->{ - item.setAreaId(patrolAreas.getId()); - }); - if(CollectionUtils.isNotEmpty(patrolAreasPoints)) { - flag = patrolAreasPointsService.saveBatch(patrolAreasPoints, 500); - } - return flag; + @Override + public List exportXls(BusinessPatrolAreas patrolAreas) { + LambdaQueryWrapper wrapper = buildWrapper(patrolAreas); + + return this.list(wrapper); } @Override - @Transactional(rollbackFor = Exception.class) - public boolean updatePatrolAreas(BusinessPatrolAreas patrolAreas) { - patrolAreas.setUserName(remoteUserService.selectUserNameById(Long.valueOf(patrolAreas.getUserId()))); - boolean flag = this.updateById(patrolAreas); - List patrolAreasUsersDels = patrolAreasUserService.listPatrolAreasUserByAreaId(patrolAreas.getId()); - List patrolAreasPointsDels = patrolAreasPointsService.listPatrolAreasPointByAreaId(patrolAreas.getId()); - patrolAreasUserService.removeByIds(patrolAreasUsersDels); - patrolAreasPointsService.removeByIds(patrolAreasPointsDels); - //先删除后添加 - QueryWrapper queryWrapper = new QueryWrapper(); - queryWrapper.eq("patrol_areas_id",patrolAreas.getId()); - Set stringSet = patrolAreasPlatformInfoMapper.selectList(queryWrapper).stream().map(BusinessPatrolAreasPlatform::getId).collect(Collectors.toSet()); - if(!stringSet.isEmpty()){ - patrolAreasPlatformInfoMapper.deleteBatchIds(stringSet); - } - List patrolAreasIdList = patrolAreas.getPatrolAreasIdList(); - - if(!patrolAreasIdList.isEmpty()){ - patrolAreasIdList.forEach(item->{ - BusinessPlatformInfo platformInfo = platformInfoService.lambdaQuery().eq(BusinessPlatformInfo::getPlatformType,item).one(); - BusinessPatrolAreasPlatform patrolAreasPlatformInfo =new BusinessPatrolAreasPlatform(); - patrolAreasPlatformInfo.setPatrolAreasId(patrolAreas.getId()); - patrolAreasPlatformInfo.setPlatformName(platformInfo.getPlatformName()); - patrolAreasPlatformInfo.setPlatformType(platformInfo.getPlatformType()); - patrolAreasPlatformInfo.setSort(platformInfo.getSort()); - patrolAreasPlatformInfo.setImageUrl(platformInfo.getImageUrl()); - patrolAreasPlatformInfoMapper.insert(patrolAreasPlatformInfo); - }); - } + public void addPatrolAreas(MultipartFile file) { + List geospatialVectorsList = new ArrayList<>(); + try { + //1、首先调用解析工具拿到解析的字段集合 + InputStream inputStream = file.getInputStream(); + List> mapList = ShpAnalysisUtil.analysisShpFile(inputStream); + + // 3. 构建字典map + List fieldsInfoList = vectorDictService.listVectorField(); + + Map> dictMap = fieldsInfoList + .stream() + .collect(Collectors.toMap( + BusinessVectorDict::getDictCode, + v -> v.getFieldMappingsList().stream() + .map(mapping -> mapping.getItemValue().toLowerCase()) // 转小写 + .collect(Collectors.toList()) + )); + + // 4. 遍历 mapList,替换映射关系并只保留有效条目 + List> resultList = mapList.stream() + .map(originalMap -> originalMap.entrySet().stream() + .filter(entry -> { + String keyLower = entry.getKey().toLowerCase(); // 将 mapList 中的 key 转换为小写 + // 遍历 dictMap 的所有 List,检查其中是否包含该 key + return dictMap.values().stream() + .anyMatch(list -> list.contains(keyLower)); // 判断 dictMap 中的 List 是否包含该 key + }) + .collect(Collectors.toMap( + entry -> { + // 根据匹配的 key 查找 dictMap 中对应的 key + return dictMap.entrySet().stream() + .filter(mapEntry -> mapEntry.getValue().contains(entry.getKey().toLowerCase())) + .map(Map.Entry::getKey) + .findFirst() + .orElse(""); // 如果没有匹配到,则返回空字符串 + }, + Map.Entry::getValue + )) + ) + .filter(transformedMap -> !transformedMap.isEmpty()) // 过滤空的 Map + .collect(Collectors.toList()); + + + // 5. 通过反射设置 GeospatialVectors 对象的属性 + for (Map transformedMap : resultList) { + BusinessGeospatialVectors geoVector = new BusinessGeospatialVectors(); + + transformedMap.forEach((key, value) -> { + try { + // 尝试通过反射找到相应的Setter方法,并调用 + Method setterMethod = BusinessGeospatialVectors.class.getMethod("set" + capitalizeFirstLetter(key), String.class); + + setterMethod.invoke(geoVector, value); + } catch (Exception e) { + e.printStackTrace(); + } + }); + + geoVector.setCreateTime(new Date()); + geospatialVectorsList.add(geoVector); + } + //6、生成新的对象集合存储数据表中 + //todo 处理这个集合geospatialVectorsList + List areasList = buildBusinessPatrolAreas(geospatialVectorsList); - List patrolAreasUsers = patrolAreas.getPatrolAreasUsers(); - patrolAreasUsers.stream().forEach(item->{ - item.setAreaId(patrolAreas.getId()); - }); - if(CollectionUtils.isNotEmpty(patrolAreasUsers)){ - flag = patrolAreasUserService.saveBatch(patrolAreasUsers,500); - } - List patrolAreasPoints = patrolAreas.getPatrolAreasPoints(); - patrolAreasPoints.stream().forEach(item->{ - item.setAreaId(patrolAreas.getId()); - }); - if(CollectionUtils.isNotEmpty(patrolAreasPoints)) { - flag = patrolAreasPointsService.saveBatch(patrolAreasPoints, 500); + + } catch (Exception e) { + e.printStackTrace(); } - return flag; } - @Override - public List exportXls(BusinessPatrolAreas patrolAreas) { - LambdaQueryWrapper wrapper = buildWrapper(patrolAreas); + /** + * 根据解析shp得到的内容封装到BusinessPatrolAreas这个类里面 + * @param paramList + * @return + */ + private List buildBusinessPatrolAreas(List paramList) { + List resultList = new ArrayList<>(); - return this.list(wrapper); + return resultList; + } + + private static String capitalizeFirstLetter(String str) { + if (str == null || str.isEmpty()) { + return str; + } + return str.substring(0, 1).toUpperCase() + str.substring(1); } private LambdaQueryWrapper buildWrapper(BusinessPatrolAreas patrolAreas) { LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); if (ObjectUtil.isNotEmpty(patrolAreas.getName())){ - wrapper.eq(BusinessPatrolAreas::getName, patrolAreas.getName()); + wrapper.like(BusinessPatrolAreas::getName, patrolAreas.getName()); } if (ObjectUtil.isNotEmpty(patrolAreas.getDeptId())){ wrapper.eq(BusinessPatrolAreas::getDeptId, patrolAreas.getDeptId()); } + if (ObjectUtil.isNotEmpty(patrolAreas.getAreasIdList())){ + wrapper.in(BusinessPatrolAreas::getId, patrolAreas.getAreasIdList()); + } + return wrapper; } } diff --git a/dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessPatrolAreasUserServiceImpl.java b/dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessPatrolAreasUserServiceImpl.java deleted file mode 100644 index 36e6b88..0000000 --- a/dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessPatrolAreasUserServiceImpl.java +++ /dev/null @@ -1,23 +0,0 @@ -package org.dromara.business.service.impl; - -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import lombok.RequiredArgsConstructor; -import org.dromara.business.domain.BusinessPatrolAreasUser; -import org.dromara.business.mapper.BusinessPatrolAreasUserMapper; -import org.dromara.business.service.IBusinessPatrolAreasUserService; -import org.springframework.stereotype.Service; - -import java.util.List; - -/** - * @Description: 巡查区域人员信息 - */ -@RequiredArgsConstructor -@Service -public class BusinessPatrolAreasUserServiceImpl extends ServiceImpl implements IBusinessPatrolAreasUserService { - - @Override - public List listPatrolAreasUserByAreaId(String areaId) { - return baseMapper.listPatrolAreasUserByAreaId(areaId); - } -} diff --git a/dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessPlatformInfoServiceImpl.java b/dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessPlatformInfoServiceImpl.java deleted file mode 100644 index 5aba5e1..0000000 --- a/dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessPlatformInfoServiceImpl.java +++ /dev/null @@ -1,17 +0,0 @@ -package org.dromara.business.service.impl; - -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import org.dromara.business.domain.BusinessPlatformInfo; -import org.dromara.business.mapper.BusinessPlatformInfoMapper; -import org.dromara.business.service.IBusinessPlatformInfoService; -import org.springframework.stereotype.Service; - -/** - * - **/ -@Service -public class BusinessPlatformInfoServiceImpl extends ServiceImpl implements IBusinessPlatformInfoService { - - - -} diff --git a/dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessVectorDictItemServiceImpl.java b/dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessVectorDictItemServiceImpl.java new file mode 100644 index 0000000..cebde8c --- /dev/null +++ b/dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessVectorDictItemServiceImpl.java @@ -0,0 +1,28 @@ +package org.dromara.business.service.impl; + + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.dromara.business.domain.BusinessVectorDictItem; +import org.dromara.business.mapper.BusinessVectorDictItemMapper; +import org.dromara.business.service.IBusinessVectorDictItemService; +import org.springframework.stereotype.Service; + +import java.util.List; + + +/** + * 矢量数据字段映射关联服务类 + */ +@Service +public class BusinessVectorDictItemServiceImpl extends ServiceImpl implements IBusinessVectorDictItemService { + + + @Override + public List findDictItemByDictId(String dictId) { + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(BusinessVectorDictItem::getDictId, dictId); + + return this.baseMapper.selectList(wrapper); + } +} diff --git a/dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessVectorDictServiceImpl.java b/dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessVectorDictServiceImpl.java new file mode 100644 index 0000000..363d5b3 --- /dev/null +++ b/dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessVectorDictServiceImpl.java @@ -0,0 +1,37 @@ +package org.dromara.business.service.impl; + +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.dromara.business.domain.BusinessVectorDict; +import org.dromara.business.mapper.BusinessVectorDictMapper; +import org.dromara.business.service.IBusinessVectorDictService; +import org.springframework.stereotype.Service; + +import java.util.List; + + +/** + * 矢量数据字段映射主表服务类 + */ +@Service +public class BusinessVectorDictServiceImpl extends ServiceImpl implements IBusinessVectorDictService { + + + @Override + public List listVectorField() { + return this.baseMapper.listVectorField(); + } + + @Override + public BusinessVectorDict findVectorDictById(String dictId) { + if (ObjectUtil.isEmpty(dictId)){ + throw new RuntimeException("【dictId】为空,参数为空!"); + } + + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(BusinessVectorDict::getId, dictId); + + return this.baseMapper.selectOne(wrapper); + } +} diff --git a/dk-modules/business/src/main/java/org/dromara/business/utils/ShpAnalysisUtil.java b/dk-modules/business/src/main/java/org/dromara/business/utils/ShpAnalysisUtil.java new file mode 100644 index 0000000..58a8268 --- /dev/null +++ b/dk-modules/business/src/main/java/org/dromara/business/utils/ShpAnalysisUtil.java @@ -0,0 +1,368 @@ +package org.dromara.business.utils; + +import cn.hutool.core.util.ObjectUtil; +import org.geotools.data.FileDataStore; +import org.geotools.data.FileDataStoreFinder; +import org.geotools.data.shapefile.ShapefileDataStore; +import org.geotools.data.simple.SimpleFeatureCollection; +import org.geotools.data.simple.SimpleFeatureIterator; +import org.geotools.data.simple.SimpleFeatureSource; +import org.geotools.geometry.jts.JTS; +import org.geotools.referencing.CRS; +import org.locationtech.jts.geom.Coordinate; +import org.locationtech.jts.geom.Geometry; +import org.locationtech.jts.geom.MultiPolygon; +import org.locationtech.jts.geom.Polygon; +import org.locationtech.jts.operation.union.UnaryUnionOp; +import org.opengis.feature.Property; +import org.opengis.feature.simple.SimpleFeature; +import org.opengis.referencing.crs.CoordinateReferenceSystem; +import org.opengis.referencing.operation.MathTransform; +import org.opengis.referencing.operation.TransformException; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.io.*; +import java.nio.charset.Charset; +import java.nio.file.Files; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.zip.ZipEntry; +import java.util.zip.ZipException; +import java.util.zip.ZipInputStream; + +/** + * shp文件读取工具类 + * 支持不同类型的地理要素 + */ +public class ShpAnalysisUtil { + + private static final Logger log = LoggerFactory.getLogger(ShpAnalysisUtil.class); + + private static final String CHECK_FIELD = "O_Com"; + + /** + * 读取shp文件,返回要素集合 + * @param shpPath shp文件路径 + * @return 要素集合,包含地理位置和属性信息 + */ + public static List> analysisShpFile(String shpPath) { + List> resultList = new ArrayList<>(); + + try { + resultList=analysisShpFile(shpPath, "GBK"); + } catch (Exception e) { + log.error("无法使用支持的字符编码读取shp文件: {}", e.getMessage()); + } + + return resultList; + } + + /** + * 读取shp文件,返回要素集合 + * @param shpInputStream shp文件输入流 + * @return 要素集合,包含地理位置和属性信息 + */ + public static List> analysisShpFile(InputStream shpInputStream) { + List> resultList = new ArrayList<>(); + + try { + resultList = analysisShpFile(shpInputStream, "GBK"); + } catch (Exception e) { + log.error("无法使用支持的字符编码读取shp文件输入流: {}", e.getMessage()); + } + + return resultList; + } + + /** + * 读取shp文件的主要方法(仅支持ZIP输入流) + * + * @param shpInputStream shp文件ZIP输入流 + * @param charset 字符编码 + * @return 要素集合,包含地理位置和属性信息 + * @throws IllegalArgumentException 如果输入流不是ZIP格式 + */ + public static List> analysisShpFile(InputStream shpInputStream, String charset) { + // 存储解析出的要素集合 + List> resultList = new ArrayList<>(); + File tempDir = null; + + try { + // 创建临时目录 + tempDir = Files.createTempDirectory("plough_shp_").toFile(); + tempDir.deleteOnExit(); // 额外保障 + + // 使用指定编码的ZipInputStream处理 + Charset zipCharset = Charset.forName(charset); + try (ZipInputStream zipInputStream = new ZipInputStream(new BufferedInputStream(shpInputStream), zipCharset)) { + ZipEntry entry; + boolean shpFound = false; + while ((entry = zipInputStream.getNextEntry()) != null) { + // 处理文件名编码问题 + log.info("文件名字:{}",entry.getName()); + File outputFile = new File(tempDir, entry.getName()); + + // 创建父目录 + if (entry.isDirectory()) { + outputFile.mkdirs(); + } else { + // 确保父目录存在 + outputFile.getParentFile().mkdirs(); + + // 写入文件 + try (FileOutputStream fos = new FileOutputStream(outputFile)) { + byte[] buffer = new byte[1024]; + int len; + while ((len = zipInputStream.read(buffer)) > 0) { + fos.write(buffer, 0, len); + } + } + + // 检查是否为SHP文件 + if (entry.getName().toLowerCase().endsWith(".shp")) { + shpFound = true; + } + } + } + + // 如果没有找到SHP文件,抛出异常 + if (!shpFound) { + throw new FileNotFoundException("ZIP压缩包中未找到SHP文件"); + } + } catch (ZipException e) { + // 非ZIP输入流,抛出异常 + throw new IllegalArgumentException("输入流不是有效的ZIP格式", e); + } + + // 查找第一个.shp文件 + File shpFile = findFirstShpFile(tempDir); + if (shpFile == null) { + throw new FileNotFoundException("未找到SHP文件"); + } + + // 使用找到的SHP文件路径调用现有方法 + resultList = analysisShpFile(shpFile.getAbsolutePath(), charset); + + } catch (Exception e) { + log.error("处理SHP文件输入流失败: {}", e.getMessage(), e); + throw new RuntimeException("处理SHP文件失败", e); + } finally { + // 尝试删除临时目录及其内容 + if (tempDir != null && tempDir.exists()) { + deleteDirectory(tempDir); + } + //关闭流文件 + try { + shpInputStream.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + + return resultList; + } + + + /** + * 读取shp文件的主要方法 + * + * @param shpPath shp文件路径 + * @param charset 字符编码 + * @return 要素集合,包含地理位置和属性信息 + */ + public static List> analysisShpFile(String shpPath, String charset) { + // 存储解析出的要素集合 + List> resultList = new ArrayList<>(); + + try { + // 1、验证文件在路径中是否存在 + File shpFile = new File(shpPath); + if (!shpFile.exists()) { + log.error("shp文件不存在:{} ", shpPath); + return resultList; + } + + // 2、设置GeoTools坐标的字符编码 + System.setProperty("org.geotools.referencing.charset", charset); + System.setProperty("org.geotools.shapefile.charset", charset); + + // 3、获取数据存储实例 + FileDataStore dataStore = FileDataStoreFinder.getDataStore(shpFile); + if (ObjectUtil.isEmpty(dataStore)) { + log.error("无法打开shape文件:{} ", shpPath); + return resultList; + } + + // 4、设置shp文件的DBF文件编码 + if (dataStore instanceof ShapefileDataStore) { + ((ShapefileDataStore) dataStore).setCharset(Charset.forName(charset)); + } + + try { + // 5、获取要素源和要素集合 + SimpleFeatureSource featureSource = dataStore.getFeatureSource(); + SimpleFeatureCollection featureCollection = featureSource.getFeatures(); + String typeName = dataStore.getTypeNames()[0]; + CoordinateReferenceSystem sourceCRS = dataStore.getFeatureSource(typeName).getSchema().getCoordinateReferenceSystem(); + CoordinateReferenceSystem targetCRS = CRS.decode("EPSG:4326"); + MathTransform transform = CRS.findMathTransform(sourceCRS, targetCRS, true); + + // 遍历处理每个要素 + try (SimpleFeatureIterator iterator = featureCollection.features()) { + while (iterator.hasNext()) { + SimpleFeature feature = iterator.next(); + Map featureMap = new HashMap<>(); + + for (Property property : feature.getProperties()) { + String name = property.getName().toString(); + Object value = property.getValue(); + + // 处理几何数据 + try { + if (value instanceof Geometry) { + // 如果值本身就是Geometry类型,直接使用 + value = analysisGeometry((Geometry) value, transform); + } + } catch (Exception e) { + log.warn("Error processing geometry for property {}: {}", name, e.getMessage()); + } + + // 处理特殊字段 + if (name.startsWith(CHECK_FIELD)) { + Map parsedValues = parseOComValue(value); + featureMap.putAll(parsedValues); + } else { + featureMap.put(name, value.toString()); + } + } + + resultList.add(featureMap); + } + } + } finally { + // 确保数据存储被正确关闭 + dataStore.dispose(); + } + + } catch (Exception e) { + e.printStackTrace(); + log.error("读取shape文件失败: {}", e.getMessage()); + } + + return resultList; + } + + + /** + * 解析O_Com字段值 + * + * @param oComValue O_Com字段值 + * @return 解析后的属性Map + */ + private static Map parseOComValue(Object oComValue) { + // 初始化返回结果Map + Map attributes = new HashMap<>(); + if (ObjectUtil.isEmpty(oComValue)) return attributes; + + // 预处理字符串,去除多余空格 + String comStr = oComValue.toString().trim(); + + try { + // 按分号分割键值对 + String[] pairs = comStr.split(";"); + for (String pair : pairs) { + pair = pair.trim(); + if (pair.isEmpty()) continue; + + // 解析键值对 + String[] keyValue = pair.split(":"); + if (keyValue.length == 2) { + // 清理键值中的引号 + String key = keyValue[0].trim().replace("\"", ""); + String value = keyValue[1].trim().replace("\"", ""); + + // 直接存储字符串值,不进行类型转换 + attributes.put(key, value); + } + } + } catch (Exception e) { + log.error("解析O_Com字段值失败: {}", e.getMessage()); + } + + return attributes; + } + + + private static String analysisGeometry(Geometry geometry, MathTransform transform) throws TransformException { + String resultStr = ""; + // 对每个 Polygon 进行坐标转换 + Geometry transformedGeometry = JTS.transform(geometry, transform); + MultiPolygon multiPolygon = (MultiPolygon) transformedGeometry; + Geometry unionGeometry = UnaryUnionOp.union(multiPolygon); + if (unionGeometry instanceof Polygon) { + Polygon polygon = (Polygon) unionGeometry; + resultStr = convertPolygonToWKT(polygon); + } + + return resultStr; + } + + + + private static String convertPolygonToWKT(Polygon polygon) { + StringBuffer polygonSb = new StringBuffer("GEOMETRYCOLLECTION(POLYGON(("); + + Coordinate[] coordinates = polygon.getCoordinates(); + for (int i = 0; i < coordinates.length; i++) { + Coordinate coord = coordinates[i]; + if (i > 0) polygonSb.append(","); + polygonSb.append(coord.y + " " + coord.x); + } + if(coordinates[0].x !=coordinates[coordinates.length-1].x){ + polygonSb.append(","+coordinates[0].y + " " + coordinates[0].x); + } + polygonSb.append(")))"); + return polygonSb.toString(); + } + + + /** + * 递归删除目录 + * @param directory 要删除的目录 + */ + private static void deleteDirectory(File directory) { + File[] files = directory.listFiles(); + if (files != null) { + for (File file : files) { + if (file.isDirectory()) { + deleteDirectory(file); + } else { + boolean deleted = file.delete(); + if (!deleted) { + log.warn("删除文件 {} 失败", file.getAbsolutePath()); + } + } + } + } + + boolean dirDeleted = directory.delete(); + if (!dirDeleted) { + log.warn("删除目录 {} 失败", directory.getAbsolutePath()); + } + } + + /** + * 在指定目录中查找第一个.shp文件 + * @param directory 搜索目录 + * @return 找到的第一个.shp文件,未找到返回null + */ + private static File findFirstShpFile(File directory) { + File[] files = directory.listFiles((dir, name) -> name.toLowerCase().endsWith(".shp")); + return files != null && files.length > 0 ? files[0] : null; + } + + +} diff --git a/dk-modules/business/src/main/resources/mapper/business/BusinessPatrolAreasPointsMapper.xml b/dk-modules/business/src/main/resources/mapper/business/BusinessPatrolAreasPointsMapper.xml deleted file mode 100644 index 7c013c1..0000000 --- a/dk-modules/business/src/main/resources/mapper/business/BusinessPatrolAreasPointsMapper.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - diff --git a/dk-modules/business/src/main/resources/mapper/business/BusinessPatrolAreasUserMapper.xml b/dk-modules/business/src/main/resources/mapper/business/BusinessPatrolAreasUserMapper.xml deleted file mode 100644 index 3a14a4b..0000000 --- a/dk-modules/business/src/main/resources/mapper/business/BusinessPatrolAreasUserMapper.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - - - diff --git a/dk-modules/business/src/main/resources/mapper/business/BusinessPlatformInfoCodeMapper.xml b/dk-modules/business/src/main/resources/mapper/business/BusinessPlatformInfoCodeMapper.xml deleted file mode 100644 index de2160f..0000000 --- a/dk-modules/business/src/main/resources/mapper/business/BusinessPlatformInfoCodeMapper.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - - - diff --git a/dk-modules/business/src/main/resources/mapper/business/BusinessPlatformInfoMapper.xml b/dk-modules/business/src/main/resources/mapper/business/BusinessPlatformInfoMapper.xml deleted file mode 100644 index 0719692..0000000 --- a/dk-modules/business/src/main/resources/mapper/business/BusinessPlatformInfoMapper.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - - - - - - - - - - - - - diff --git a/dk-modules/business/src/main/resources/mapper/business/BusinessPatrolAreasPlatformMapper.xml b/dk-modules/business/src/main/resources/mapper/business/BusinessVectorDictItemMapper.xml similarity index 65% rename from dk-modules/business/src/main/resources/mapper/business/BusinessPatrolAreasPlatformMapper.xml rename to dk-modules/business/src/main/resources/mapper/business/BusinessVectorDictItemMapper.xml index a8d9948..b217399 100644 --- a/dk-modules/business/src/main/resources/mapper/business/BusinessPatrolAreasPlatformMapper.xml +++ b/dk-modules/business/src/main/resources/mapper/business/BusinessVectorDictItemMapper.xml @@ -1,5 +1,7 @@ - + + + diff --git a/dk-modules/business/src/main/resources/mapper/business/BusinessVectorDictMapper.xml b/dk-modules/business/src/main/resources/mapper/business/BusinessVectorDictMapper.xml new file mode 100644 index 0000000..88f5af6 --- /dev/null +++ b/dk-modules/business/src/main/resources/mapper/business/BusinessVectorDictMapper.xml @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + diff --git a/dk-modules/system/src/main/java/org/dromara/system/dubbo/RemoteUserServiceImpl.java b/dk-modules/system/src/main/java/org/dromara/system/dubbo/RemoteUserServiceImpl.java index 5efa36a..cb6bba9 100644 --- a/dk-modules/system/src/main/java/org/dromara/system/dubbo/RemoteUserServiceImpl.java +++ b/dk-modules/system/src/main/java/org/dromara/system/dubbo/RemoteUserServiceImpl.java @@ -386,4 +386,10 @@ public class RemoteUserServiceImpl implements RemoteUserService { return selectListByIds(new ArrayList<>(userIds)); } + @Override + public List selectUserByUserIds(List userIds) { + List sysUserVos = userService.selectUserByUserIds(userIds); + return MapstructUtils.convert(sysUserVos, RemoteUserVo.class); + } + } diff --git a/dk-modules/system/src/main/java/org/dromara/system/mapper/SysUserMapper.java b/dk-modules/system/src/main/java/org/dromara/system/mapper/SysUserMapper.java index fc7fc6e..bec69cc 100644 --- a/dk-modules/system/src/main/java/org/dromara/system/mapper/SysUserMapper.java +++ b/dk-modules/system/src/main/java/org/dromara/system/mapper/SysUserMapper.java @@ -1,6 +1,7 @@ package org.dromara.system.mapper; import com.baomidou.mybatisplus.core.conditions.Wrapper; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Constants; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import org.apache.ibatis.annotations.Param; @@ -74,6 +75,8 @@ public interface SysUserMapper extends BaseMapperPlus { }) long countUserById(Long userId); + List selectUserByUserIds(@Param(Constants.WRAPPER) Wrapper queryWrapper); + @Override @DataPermission({ @DataColumn(key = "deptName", value = "dept_id"), diff --git a/dk-modules/system/src/main/java/org/dromara/system/service/ISysUserService.java b/dk-modules/system/src/main/java/org/dromara/system/service/ISysUserService.java index a6f18c7..4887005 100644 --- a/dk-modules/system/src/main/java/org/dromara/system/service/ISysUserService.java +++ b/dk-modules/system/src/main/java/org/dromara/system/service/ISysUserService.java @@ -268,4 +268,5 @@ public interface ISysUserService { */ List selectUserIdsByRoleIds(List roleIds); + List selectUserByUserIds(List userIds); } diff --git a/dk-modules/system/src/main/java/org/dromara/system/service/impl/SysUserServiceImpl.java b/dk-modules/system/src/main/java/org/dromara/system/service/impl/SysUserServiceImpl.java index bacf9eb..111ec7e 100644 --- a/dk-modules/system/src/main/java/org/dromara/system/service/impl/SysUserServiceImpl.java +++ b/dk-modules/system/src/main/java/org/dromara/system/service/impl/SysUserServiceImpl.java @@ -185,7 +185,7 @@ public class SysUserServiceImpl implements ISysUserService { @Override public List selectUserByIds(List userIds, Long deptId) { return baseMapper.selectUserList(new LambdaQueryWrapper() - .select(SysUser::getUserId, SysUser::getUserName, SysUser::getNickName, SysUser::getEmail, SysUser::getPhonenumber) .eq(SysUser::getStatus, UserConstants.USER_NORMAL) + .select(SysUser::getUserId, SysUser::getUserName, SysUser::getNickName, SysUser::getEmail, SysUser::getPhonenumber).eq(SysUser::getStatus, UserConstants.USER_NORMAL) .eq(ObjectUtil.isNotNull(deptId), SysUser::getDeptId, deptId) .in(CollUtil.isNotEmpty(userIds), SysUser::getUserId, userIds)); } @@ -559,6 +559,13 @@ public class SysUserServiceImpl implements ISysUserService { return StreamUtils.toList(userRoles, SysUserRole::getUserId); } + @Override + public List selectUserByUserIds(List userIds) { + return baseMapper.selectUserByUserIds(new LambdaQueryWrapper() + .select(SysUser::getUserId, SysUser::getUserName, SysUser::getNickName, SysUser::getEmail, SysUser::getPhonenumber).eq(SysUser::getStatus, UserConstants.USER_NORMAL) + .in(CollUtil.isNotEmpty(userIds), SysUser::getUserId, userIds)); + } + /** * 通过用户ID查询用户账户 * diff --git a/dk-modules/system/src/main/resources/mapper/system/SysUserMapper.xml b/dk-modules/system/src/main/resources/mapper/system/SysUserMapper.xml index bb3c53d..d1750d3 100644 --- a/dk-modules/system/src/main/resources/mapper/system/SysUserMapper.xml +++ b/dk-modules/system/src/main/resources/mapper/system/SysUserMapper.xml @@ -70,4 +70,17 @@ + + diff --git a/dk-modules/workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskAssigneeServiceImpl.java b/dk-modules/workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskAssigneeServiceImpl.java index 873023a..89f5d00 100644 --- a/dk-modules/workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskAssigneeServiceImpl.java +++ b/dk-modules/workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskAssigneeServiceImpl.java @@ -160,7 +160,7 @@ public class FlwTaskAssigneeServiceImpl implements IFlwTaskAssigneeService, Hand */ private List getUsersByType(TaskAssigneeEnum type, List ids) { return switch (type) { - case USER -> remoteUserService.selectListByIds(ids); + case USER -> remoteUserService.selectUserByUserIds(ids); case ROLE -> remoteUserService.selectUsersByRoleIds(ids); case DEPT -> remoteUserService.selectUsersByDeptIds(ids); case POST -> remoteUserService.selectUsersByPostIds(ids); diff --git a/dk-modules/workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskServiceImpl.java b/dk-modules/workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskServiceImpl.java index 34daefb..251d98a 100644 --- a/dk-modules/workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskServiceImpl.java +++ b/dk-modules/workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskServiceImpl.java @@ -146,7 +146,7 @@ public class FlwTaskServiceImpl implements IFlwTaskService { dto.setTaskId(taskList.get(0).getId()); //创建任务 - executeTask(taskList.get(0).getId()); +// executeTask(taskList.get(0).getId()); return dto; } diff --git a/pom.xml b/pom.xml index f29f27b..154afe3 100644 --- a/pom.xml +++ b/pom.xml @@ -74,6 +74,7 @@ 1.6.6 + 23.2 @@ -402,7 +403,6 @@ warm-flow-plugin-ui-sb-web ${warm-flow.version} - @@ -535,6 +535,46 @@ true + + + e-iceblue + e-iceblue + https://repo.e-iceblue.cn/repository/maven-public/ + + always + true + + + always + true + + + + osgeo + OSGeo Release Repository + https://repo.osgeo.org/repository/release/ + + false + + + true + + + + osgeo-snapshot + OSGeo Snapshot Repository + https://repo.osgeo.org/repository/snapshot/ + + true + + + false + + + + jitpack.io + https://jitpack.io +