Browse Source

[feat]

1、修改巡查区域相关代码逻辑,以及对数据表的修改。
2、修复流程多节点的时候,无法指派处理人的情况。
pull/1/head
杨威 4 months ago
parent
commit
587ae348c9
  1. 2
      dk-api/api-system/src/main/java/org/dromara/system/api/RemoteUserService.java
  2. 19
      dk-api/api-workflow/src/main/java/org/dromara/workflow/api/domain/enums/WorkflowCodeEnum.java
  3. 31
      dk-modules/business/pom.xml
  4. 17
      dk-modules/business/src/main/java/org/dromara/business/controller/BusinessAlertController.java
  5. 69
      dk-modules/business/src/main/java/org/dromara/business/controller/BusinessPatrolAreasController.java
  6. 146
      dk-modules/business/src/main/java/org/dromara/business/domain/BusinessGeospatialVectors.java
  7. 12
      dk-modules/business/src/main/java/org/dromara/business/domain/BusinessPatrolAreas.java
  8. 54
      dk-modules/business/src/main/java/org/dromara/business/domain/BusinessPatrolAreasPlatform.java
  9. 42
      dk-modules/business/src/main/java/org/dromara/business/domain/BusinessPatrolAreasPoints.java
  10. 54
      dk-modules/business/src/main/java/org/dromara/business/domain/BusinessPlatformInfo.java
  11. 33
      dk-modules/business/src/main/java/org/dromara/business/domain/BusinessVectorDict.java
  12. 32
      dk-modules/business/src/main/java/org/dromara/business/domain/BusinessVectorDictItem.java
  13. 4
      dk-modules/business/src/main/java/org/dromara/business/dubbo/RemoteBusinessAlertServiceImpl.java
  14. 10
      dk-modules/business/src/main/java/org/dromara/business/mapper/BusinessPatrolAreasPlatformMapper.java
  15. 16
      dk-modules/business/src/main/java/org/dromara/business/mapper/BusinessPatrolAreasPointsMapper.java
  16. 16
      dk-modules/business/src/main/java/org/dromara/business/mapper/BusinessPatrolAreasUserMapper.java
  17. 17
      dk-modules/business/src/main/java/org/dromara/business/mapper/BusinessPlatformInfoCodeMapper.java
  18. 23
      dk-modules/business/src/main/java/org/dromara/business/mapper/BusinessPlatformInfoMapper.java
  19. 8
      dk-modules/business/src/main/java/org/dromara/business/mapper/BusinessVectorDictItemMapper.java
  20. 10
      dk-modules/business/src/main/java/org/dromara/business/mapper/BusinessVectorDictMapper.java
  21. 3
      dk-modules/business/src/main/java/org/dromara/business/service/IBusinessAlertService.java
  22. 13
      dk-modules/business/src/main/java/org/dromara/business/service/IBusinessPatrolAreasPointsService.java
  23. 10
      dk-modules/business/src/main/java/org/dromara/business/service/IBusinessPatrolAreasService.java
  24. 13
      dk-modules/business/src/main/java/org/dromara/business/service/IBusinessPatrolAreasUserService.java
  25. 9
      dk-modules/business/src/main/java/org/dromara/business/service/IBusinessPlatformInfoService.java
  26. 12
      dk-modules/business/src/main/java/org/dromara/business/service/IBusinessVectorDictItemService.java
  27. 17
      dk-modules/business/src/main/java/org/dromara/business/service/IBusinessVectorDictService.java
  28. 7
      dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessAlertServiceImpl.java
  29. 23
      dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessPatrolAreasPointsServiceImpl.java
  30. 218
      dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessPatrolAreasServiceImpl.java
  31. 23
      dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessPatrolAreasUserServiceImpl.java
  32. 17
      dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessPlatformInfoServiceImpl.java
  33. 28
      dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessVectorDictItemServiceImpl.java
  34. 37
      dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessVectorDictServiceImpl.java
  35. 368
      dk-modules/business/src/main/java/org/dromara/business/utils/ShpAnalysisUtil.java
  36. 11
      dk-modules/business/src/main/resources/mapper/business/BusinessPatrolAreasPointsMapper.xml
  37. 9
      dk-modules/business/src/main/resources/mapper/business/BusinessPatrolAreasUserMapper.xml
  38. 10
      dk-modules/business/src/main/resources/mapper/business/BusinessPlatformInfoCodeMapper.xml
  39. 31
      dk-modules/business/src/main/resources/mapper/business/BusinessPlatformInfoMapper.xml
  40. 4
      dk-modules/business/src/main/resources/mapper/business/BusinessVectorDictItemMapper.xml
  41. 28
      dk-modules/business/src/main/resources/mapper/business/BusinessVectorDictMapper.xml
  42. 6
      dk-modules/system/src/main/java/org/dromara/system/dubbo/RemoteUserServiceImpl.java
  43. 3
      dk-modules/system/src/main/java/org/dromara/system/mapper/SysUserMapper.java
  44. 1
      dk-modules/system/src/main/java/org/dromara/system/service/ISysUserService.java
  45. 7
      dk-modules/system/src/main/java/org/dromara/system/service/impl/SysUserServiceImpl.java
  46. 13
      dk-modules/system/src/main/resources/mapper/system/SysUserMapper.xml
  47. 2
      dk-modules/workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskAssigneeServiceImpl.java
  48. 2
      dk-modules/workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskServiceImpl.java
  49. 42
      pom.xml

2
dk-api/api-system/src/main/java/org/dromara/system/api/RemoteUserService.java

@ -155,4 +155,6 @@ public interface RemoteUserService {
* @return 用户
*/
List<RemoteUserVo> selectUsersByPostIds(List<Long> postIds);
List<RemoteUserVo> selectUserByUserIds(List<Long> userIds);
}

19
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;
}

31
dk-modules/business/pom.xml

@ -108,11 +108,39 @@
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.dromara</groupId>
<artifactId>api-workflow</artifactId>
</dependency>
<!-- 矢量依赖-->
<dependency>
<groupId>org.geotools</groupId>
<artifactId>gt-geojson</artifactId>
<version>${geotools.version}</version>
</dependency>
<dependency>
<groupId>org.geotools</groupId>
<artifactId>gt-geometry</artifactId>
<version>${geotools.version}</version>
</dependency>
<dependency>
<groupId>org.geotools</groupId>
<artifactId>gt-epsg-hsql</artifactId>
<version>${geotools.version}</version>
</dependency>
<dependency>
<groupId>org.geotools</groupId>
<artifactId>gt-jts-wrapper</artifactId>
<version>${geotools.version}</version>
</dependency>
<dependency>
<groupId>org.geotools</groupId>
<artifactId>gt-shapefile</artifactId>
<version>29.5</version>
</dependency>
</dependencies>
<build>
<finalName>${project.artifactId}</finalName>
@ -131,6 +159,7 @@
</plugin>
</plugins>
</build>
<repositories>
</repositories>
</project>

17
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;
/**
* 查询全部预警

69
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<IPage<BusinessPatrolAreas>> queryPageList(BusinessPatrolAreasBo patrolAreasBo,
@RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
@RequestParam(name="pageSize", defaultValue="10") Integer pageSize) {
Page<BusinessPatrolAreas> page = new Page<BusinessPatrolAreas>(pageNo, pageSize);
IPage<BusinessPatrolAreas> pageList = patrolAreasService.pagePatrolAreas(page, patrolAreasBo);
return R.ok(pageList);
@GetMapping(value = "/page")
public TableDataInfo<BusinessPatrolAreas> 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<BusinessPatrolAreasUser> patrolAreasUsersDels = patrolAreasUserService.listPatrolAreasUserByAreaId(id);
List<BusinessPatrolAreasPoints> 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<String> areasIdList = Arrays.asList(selections.split(","));
patrolAreas.setAreasIdList(areasIdList);
}
List<BusinessPatrolAreas> 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;

146
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; //创建时间
}

12
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<BusinessPatrolAreasUser> patrolAreasUsers = new ArrayList<>();
/**巡查区域平台类型集合**/
@TableField(exist = false)
private List<String> patrolAreasIdList = new ArrayList<>();
/**巡查区域坐标集合**/
@TableField(exist = false)
private List<BusinessPatrolAreasPoints> patrolAreasPoints = new ArrayList<>();
private List<String> areasIdList = new ArrayList<>();
}

54
dk-modules/business/src/main/java/org/dromara/business/domain/BusinessPatrolAreasPlatform.java

@ -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: <br/>
* date: 2024/8/12$ 17:17$<br/>
*
* @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;
}

42
dk-modules/business/src/main/java/org/dromara/business/domain/BusinessPatrolAreasPoints.java

@ -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;
}

54
dk-modules/business/src/main/java/org/dromara/business/domain/BusinessPlatformInfo.java

@ -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<BusinessPlatformInfoCode> platformInfoCodes = new ArrayList<>();
@TableField(exist = false)
private Map<String,Object> total = new HashMap<>();
}

33
dk-modules/business/src/main/java/org/dromara/business/domain/BusinessPatrolAreasUser.java → 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<BusinessVectorDictItem> fieldMappingsList;
}

32
dk-modules/business/src/main/java/org/dromara/business/domain/BusinessPlatformInfoCode.java → 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;
}

4
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;
/**

10
dk-modules/business/src/main/java/org/dromara/business/mapper/BusinessPatrolAreasPlatformMapper.java

@ -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<BusinessPatrolAreasPlatform> {
}

16
dk-modules/business/src/main/java/org/dromara/business/mapper/BusinessPatrolAreasPointsMapper.java

@ -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<BusinessPatrolAreasPoints> {
List<BusinessPatrolAreasPoints> listPatrolAreasPointByAreaId(@Param("areaId") String areaId);
}

16
dk-modules/business/src/main/java/org/dromara/business/mapper/BusinessPatrolAreasUserMapper.java

@ -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<BusinessPatrolAreasUser> {
List<BusinessPatrolAreasUser> listPatrolAreasUserByAreaId(@Param("areaId") String areaId);
}

17
dk-modules/business/src/main/java/org/dromara/business/mapper/BusinessPlatformInfoCodeMapper.java

@ -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<BusinessPlatformInfoCode> {
List<BusinessPlatformInfoCode> listPlatformInfoCodeByPlatformInfoId(@Param("platformInfoId") String platformInfoId);
}

23
dk-modules/business/src/main/java/org/dromara/business/mapper/BusinessPlatformInfoMapper.java

@ -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<BusinessPlatformInfo> {
IPage<BusinessPlatformInfo> listPlatformInfo(Page page, @Param("condition") BusinessPlatformInfoBo platformInfoBo);
List<BusinessPlatformInfo> listPlatformInfo(@Param("condition")BusinessPlatformInfoBo platformInfoBo);
}

8
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<BusinessVectorDictItem> {
}

10
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<BusinessVectorDict> {
List<BusinessVectorDict> listVectorField();
}

3
dk-modules/business/src/main/java/org/dromara/business/service/BusinessAlertService.java → 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<BusinessAlert> pageBusinessAlertTodo(BusinessAlertBo bo, PageQuery pageQuery);

13
dk-modules/business/src/main/java/org/dromara/business/service/IBusinessPatrolAreasPointsService.java

@ -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<BusinessPatrolAreasPoints> {
List<BusinessPatrolAreasPoints> listPatrolAreasPointByAreaId(String areaId);
}

10
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<BusinessPatrolAreas> {
IPage<BusinessPatrolAreas> pagePatrolAreas(Page page, @Param("condition") BusinessPatrolAreasBo patrolAreasBo);
TableDataInfo<BusinessPatrolAreas> pagePatrolAreas(PageQuery pageQuery, BusinessPatrolAreasBo patrolAreasBo);
List<BusinessPatrolAreas> listPatrolAreas(@Param("condition") BusinessPatrolAreasBo patrolAreasBo);
List<BusinessPatrolAreas> listPatrolAreas(BusinessPatrolAreasBo patrolAreasBo);
boolean addPatrolAreas(BusinessPatrolAreas patrolAreas);
void addPatrolAreas(MultipartFile file);
boolean updatePatrolAreas(BusinessPatrolAreas patrolAreas);
List<BusinessPatrolAreas> exportXls(BusinessPatrolAreas patrolAreas);
}

13
dk-modules/business/src/main/java/org/dromara/business/service/IBusinessPatrolAreasUserService.java

@ -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<BusinessPatrolAreasUser> {
List<BusinessPatrolAreasUser> listPatrolAreasUserByAreaId(String areaId);
}

9
dk-modules/business/src/main/java/org/dromara/business/service/IBusinessPlatformInfoService.java

@ -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<BusinessPlatformInfo> {
}

12
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<BusinessVectorDictItem> findDictItemByDictId(String dictId);
}

17
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<BusinessVectorDict> listVectorField();
BusinessVectorDict findVectorDictById(String dictId);
}

7
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;

23
dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessPatrolAreasPointsServiceImpl.java

@ -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<BusinessPatrolAreasPointsMapper, BusinessPatrolAreasPoints> implements IBusinessPatrolAreasPointsService {
@Override
public List<BusinessPatrolAreasPoints> listPatrolAreasPointByAreaId(String areaId) {
return baseMapper.listPatrolAreasPointByAreaId(areaId);
}
}

218
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<BusinessPatrolAreasMapper, BusinessPatrolAreas> 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<BusinessPatrolAr
private RemoteDeptService remoteDeptService;
@Override
public IPage<BusinessPatrolAreas> pagePatrolAreas(Page page, BusinessPatrolAreasBo patrolAreasBo) {
public TableDataInfo<BusinessPatrolAreas> pagePatrolAreas(PageQuery pageQuery, BusinessPatrolAreasBo patrolAreasBo) {
LoginUser user = LoginHelper.getLoginUser();
List<String> deptIds = new ArrayList<>();
String departIds = null;
@ -67,26 +60,10 @@ public class BusinessPatrolAreasServiceImpl extends ServiceImpl<BusinessPatrolAr
}else {
departIds = patrolAreasBo.getDeptId();
}
// if(oConvertUtils.isNotEmpty(user.getUserIdentity()) && user.getUserIdentity().equals( CommonConstant.USER_IDENTITY_2 )){
// if(StringUtils.isNotBlank(departIds)){
// deptIds.addAll(commonAPI.getMySubDepIdsStatusByDepId(departIds));
// }
// }else {
// deptIds.add(departIds);
// }
deptIds.add(departIds);
IPage<BusinessPatrolAreas> iPage = this.baseMapper.listPatrolAreas(page, patrolAreasBo, deptIds);
List<BusinessPatrolAreas> records = page.getRecords();
if(!records.isEmpty()){
records.forEach(p->{
QueryWrapper<BusinessPatrolAreasPlatform> queryWrapper = new QueryWrapper<BusinessPatrolAreasPlatform>();
queryWrapper.eq("patrol_areas_id",p.getId());
List<String> 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<BusinessPatrolAr
@Override
@Transactional(rollbackFor = Exception.class)
public boolean addPatrolAreas(BusinessPatrolAreas patrolAreas) {
public boolean updatePatrolAreas(BusinessPatrolAreas patrolAreas) {
patrolAreas.setUserName(remoteUserService.selectUserNameById(Long.valueOf(patrolAreas.getUserId())));
boolean flag = this.save(patrolAreas);
List<BusinessPatrolAreasUser> patrolAreasUsers = patrolAreas.getPatrolAreasUsers();
patrolAreasUsers.stream().forEach(item->{
item.setAreaId(patrolAreas.getId());
item.setRealname(remoteUserService.selectUserNameById(Long.valueOf(patrolAreas.getUserId())));
});
List<String> 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<BusinessPatrolAreasPoints> 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<BusinessPatrolAreas> exportXls(BusinessPatrolAreas patrolAreas) {
LambdaQueryWrapper<BusinessPatrolAreas> 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<BusinessPatrolAreasUser> patrolAreasUsersDels = patrolAreasUserService.listPatrolAreasUserByAreaId(patrolAreas.getId());
List<BusinessPatrolAreasPoints> patrolAreasPointsDels = patrolAreasPointsService.listPatrolAreasPointByAreaId(patrolAreas.getId());
patrolAreasUserService.removeByIds(patrolAreasUsersDels);
patrolAreasPointsService.removeByIds(patrolAreasPointsDels);
//先删除后添加
QueryWrapper<BusinessPatrolAreasPlatform> queryWrapper = new QueryWrapper<BusinessPatrolAreasPlatform>();
queryWrapper.eq("patrol_areas_id",patrolAreas.getId());
Set<String> stringSet = patrolAreasPlatformInfoMapper.selectList(queryWrapper).stream().map(BusinessPatrolAreasPlatform::getId).collect(Collectors.toSet());
if(!stringSet.isEmpty()){
patrolAreasPlatformInfoMapper.deleteBatchIds(stringSet);
}
List<String> 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<BusinessGeospatialVectors> geospatialVectorsList = new ArrayList<>();
try {
//1、首先调用解析工具拿到解析的字段集合
InputStream inputStream = file.getInputStream();
List<Map<String, String>> mapList = ShpAnalysisUtil.analysisShpFile(inputStream);
// 3. 构建字典map
List<BusinessVectorDict> fieldsInfoList = vectorDictService.listVectorField();
Map<String, List<String>> dictMap = fieldsInfoList
.stream()
.collect(Collectors.toMap(
BusinessVectorDict::getDictCode,
v -> v.getFieldMappingsList().stream()
.map(mapping -> mapping.getItemValue().toLowerCase()) // 转小写
.collect(Collectors.toList())
));
// 4. 遍历 mapList,替换映射关系并只保留有效条目
List<Map<String, String>> resultList = mapList.stream()
.map(originalMap -> originalMap.entrySet().stream()
.filter(entry -> {
String keyLower = entry.getKey().toLowerCase(); // 将 mapList 中的 key 转换为小写
// 遍历 dictMap 的所有 List<String>,检查其中是否包含该 key
return dictMap.values().stream()
.anyMatch(list -> list.contains(keyLower)); // 判断 dictMap 中的 List<String> 是否包含该 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<String, String> 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<BusinessPatrolAreas> areasList = buildBusinessPatrolAreas(geospatialVectorsList);
List<BusinessPatrolAreasUser> patrolAreasUsers = patrolAreas.getPatrolAreasUsers();
patrolAreasUsers.stream().forEach(item->{
item.setAreaId(patrolAreas.getId());
});
if(CollectionUtils.isNotEmpty(patrolAreasUsers)){
flag = patrolAreasUserService.saveBatch(patrolAreasUsers,500);
}
List<BusinessPatrolAreasPoints> 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<BusinessPatrolAreas> exportXls(BusinessPatrolAreas patrolAreas) {
LambdaQueryWrapper<BusinessPatrolAreas> wrapper = buildWrapper(patrolAreas);
/**
* 根据解析shp得到的内容封装到BusinessPatrolAreas这个类里面
* @param paramList
* @return
*/
private List<BusinessPatrolAreas> buildBusinessPatrolAreas(List<BusinessGeospatialVectors> paramList) {
List<BusinessPatrolAreas> 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<BusinessPatrolAreas> buildWrapper(BusinessPatrolAreas patrolAreas) {
LambdaQueryWrapper<BusinessPatrolAreas> 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;
}
}

23
dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessPatrolAreasUserServiceImpl.java

@ -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<BusinessPatrolAreasUserMapper, BusinessPatrolAreasUser> implements IBusinessPatrolAreasUserService {
@Override
public List<BusinessPatrolAreasUser> listPatrolAreasUserByAreaId(String areaId) {
return baseMapper.listPatrolAreasUserByAreaId(areaId);
}
}

17
dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessPlatformInfoServiceImpl.java

@ -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<BusinessPlatformInfoMapper, BusinessPlatformInfo> implements IBusinessPlatformInfoService {
}

28
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<BusinessVectorDictItemMapper, BusinessVectorDictItem> implements IBusinessVectorDictItemService {
@Override
public List<BusinessVectorDictItem> findDictItemByDictId(String dictId) {
LambdaQueryWrapper<BusinessVectorDictItem> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(BusinessVectorDictItem::getDictId, dictId);
return this.baseMapper.selectList(wrapper);
}
}

37
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<BusinessVectorDictMapper, BusinessVectorDict> implements IBusinessVectorDictService {
@Override
public List<BusinessVectorDict> listVectorField() {
return this.baseMapper.listVectorField();
}
@Override
public BusinessVectorDict findVectorDictById(String dictId) {
if (ObjectUtil.isEmpty(dictId)){
throw new RuntimeException("【dictId】为空,参数为空!");
}
LambdaQueryWrapper<BusinessVectorDict> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(BusinessVectorDict::getId, dictId);
return this.baseMapper.selectOne(wrapper);
}
}

368
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<Map<String, String>> analysisShpFile(String shpPath) {
List<Map<String, String>> 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<Map<String, String>> analysisShpFile(InputStream shpInputStream) {
List<Map<String, String>> 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<Map<String, String>> analysisShpFile(InputStream shpInputStream, String charset) {
// 存储解析出的要素集合
List<Map<String, String>> 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<Map<String, String>> analysisShpFile(String shpPath, String charset) {
// 存储解析出的要素集合
List<Map<String, String>> 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<String, String> 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<String, String> 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<String, String> parseOComValue(Object oComValue) {
// 初始化返回结果Map
Map<String, String> 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;
}
}

11
dk-modules/business/src/main/resources/mapper/business/BusinessPatrolAreasPointsMapper.xml

@ -1,11 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.dromara.business.mapper.BusinessPatrolAreasPointsMapper">
<select id="listPatrolAreasPointByAreaId" resultType="org.dromara.business.domain.BusinessPatrolAreasPoints">
select * from business_patrol_area_points po
where
po.del_flag = 0
and po.area_id = #{areaId}
order by po.sort_number asc
</select>
</mapper>

9
dk-modules/business/src/main/resources/mapper/business/BusinessPatrolAreasUserMapper.xml

@ -1,9 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.dromara.business.mapper.BusinessPatrolAreasUserMapper">
<select id="listPatrolAreasUserByAreaId" resultType="org.dromara.business.domain.BusinessPatrolAreasUser">
select * from business_patrol_area_users au
where au.del_flag = 0
and au.area_id = #{areaId}
</select>
</mapper>

10
dk-modules/business/src/main/resources/mapper/business/BusinessPlatformInfoCodeMapper.xml

@ -1,10 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.dromara.business.mapper.BusinessPlatformInfoCodeMapper">
<select id="listPlatformInfoCodeByPlatformInfoId" resultType="org.dromara.business.domain.BusinessPlatformInfoCode">
select * from business_platform_info_code
where
del_flag = 0
and platform_info_id = #{platformInfoId}
</select>
</mapper>

31
dk-modules/business/src/main/resources/mapper/business/BusinessPlatformInfoMapper.xml

@ -1,31 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.dromara.business.mapper.BusinessPlatformInfoMapper">
<resultMap id="listPlatformInfoMap" type="org.dromara.business.domain.BusinessPlatformInfo">
<result column="id" property="id" jdbcType="VARCHAR"/>
<result column="platform_name" property="platformName" jdbcType="VARCHAR"/>
<result column="platform_type" property="platformType" jdbcType="VARCHAR"/>
<result column="image_url" property="imageUrl" jdbcType="VARCHAR"/>
<result column="image_app_url" property="imageAppUrl" jdbcType="VARCHAR"/>
<result column="sort" property="sort"/>
<result column="create_by" property="createBy" jdbcType="VARCHAR"/>
<result column="create_time" property="createTime" jdbcType="TIMESTAMP"/>
<collection column="{platformInfoId=id}"
property="platformInfoCodes" ofType="org.dromara.business.domain.BusinessPlatformInfoCode"
javaType="java.util.ArrayList"
select="org.dromara.business.mapper.BusinessPlatformInfoCodeMapper.listPlatformInfoCodeByPlatformInfoId"/>
</resultMap>
<select id="listPlatformInfo" resultMap="listPlatformInfoMap">
select * from business_platform_info
where
del_flag = 0
<if test="condition.search != null and condition.search != ''">
and (platform_name like concat(concat('%',#{condition.search}),'%')
or platform_type like concat(concat('%',#{condition.search}),'%')
)
</if>
order by sort asc
</select>
</mapper>

4
dk-modules/business/src/main/resources/mapper/business/BusinessPatrolAreasPlatformMapper.xml → dk-modules/business/src/main/resources/mapper/business/BusinessVectorDictItemMapper.xml

@ -1,5 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.dromara.business.mapper.BusinessPatrolAreasPlatformMapper">
<mapper namespace="org.dromara.business.mapper.BusinessVectorDictItemMapper">
</mapper>

28
dk-modules/business/src/main/resources/mapper/business/BusinessVectorDictMapper.xml

@ -0,0 +1,28 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.dromara.business.mapper.BusinessVectorDictMapper">
<resultMap id="fieldResultMap" type="org.dromara.business.domain.BusinessVectorDict">
<id property="id" column="id"/>
<result property="dictCode" column="dictCode"/>
<collection property="fieldMappingsList" ofType="org.dromara.business.domain.BusinessVectorDictItem">
<result property="id" column="dictItemId"/>
<result property="itemValue" column="mappingValue"/>
<result property="dictId" column="dictId"/>
</collection>
</resultMap>
<select id="listVectorField" resultMap="fieldResultMap">
SELECT
f.id AS id,
f.dict_code AS dictCode,
m.dict_id AS dictId,
m.id AS dictItemId,
m.item_value AS mappingValue
FROM
vector_field_dict f
LEFT JOIN
vector_field_dict_item m ON f.id = m.dict_id
</select>
</mapper>

6
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<RemoteUserVo> selectUserByUserIds(List<Long> userIds) {
List<SysUserVo> sysUserVos = userService.selectUserByUserIds(userIds);
return MapstructUtils.convert(sysUserVos, RemoteUserVo.class);
}
}

3
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<SysUser, SysUserVo> {
})
long countUserById(Long userId);
List<SysUserVo> selectUserByUserIds(@Param(Constants.WRAPPER) Wrapper<SysUser> queryWrapper);
@Override
@DataPermission({
@DataColumn(key = "deptName", value = "dept_id"),

1
dk-modules/system/src/main/java/org/dromara/system/service/ISysUserService.java

@ -268,4 +268,5 @@ public interface ISysUserService {
*/
List<Long> selectUserIdsByRoleIds(List<Long> roleIds);
List<SysUserVo> selectUserByUserIds(List<Long> userIds);
}

7
dk-modules/system/src/main/java/org/dromara/system/service/impl/SysUserServiceImpl.java

@ -559,6 +559,13 @@ public class SysUserServiceImpl implements ISysUserService {
return StreamUtils.toList(userRoles, SysUserRole::getUserId);
}
@Override
public List<SysUserVo> selectUserByUserIds(List<Long> userIds) {
return baseMapper.selectUserByUserIds(new LambdaQueryWrapper<SysUser>()
.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查询用户账户
*

13
dk-modules/system/src/main/resources/mapper/system/SysUserMapper.xml

@ -70,4 +70,17 @@
</select>
<select id="selectUserByUserIds" resultMap="SysUserResult">
select
<if test="ew.getSqlSelect != null">
${ew.getSqlSelect}
</if>
<if test="ew.getSqlSelect == null">
u.user_id, u.dept_id, u.nick_name, u.user_name, u.email, u.avatar, u.phonenumber, u.sex,
u.status, u.del_flag, u.login_ip, u.login_date, u.create_by, u.create_time, u.remark
</if>
from sys_user u
${ew.getCustomSqlSegment}
</select>
</mapper>

2
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<RemoteUserVo> getUsersByType(TaskAssigneeEnum type, List<Long> 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);

2
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;
}

42
pom.xml

@ -74,6 +74,7 @@
<!--工作流配置-->
<warm-flow.version>1.6.6</warm-flow.version>
<geotools.version>23.2</geotools.version>
</properties>
<profiles>
@ -402,7 +403,6 @@
<artifactId>warm-flow-plugin-ui-sb-web</artifactId>
<version>${warm-flow.version}</version>
</dependency>
</dependencies>
</dependencyManagement>
@ -535,6 +535,46 @@
<enabled>true</enabled>
</releases>
</repository>
<repository>
<id>e-iceblue</id>
<name>e-iceblue</name>
<url>https://repo.e-iceblue.cn/repository/maven-public/</url>
<releases>
<updatePolicy>always</updatePolicy>
<enabled>true</enabled>
</releases>
<snapshots>
<updatePolicy>always</updatePolicy>
<enabled>true</enabled>
</snapshots>
</repository>
<repository>
<id>osgeo</id>
<name>OSGeo Release Repository</name>
<url>https://repo.osgeo.org/repository/release/</url>
<snapshots>
<enabled>false</enabled>
</snapshots>
<releases>
<enabled>true</enabled>
</releases>
</repository>
<repository>
<id>osgeo-snapshot</id>
<name>OSGeo Snapshot Repository</name>
<url>https://repo.osgeo.org/repository/snapshot/</url>
<snapshots>
<enabled>true</enabled>
</snapshots>
<releases>
<enabled>false</enabled>
</releases>
</repository>
<repository>
<id>jitpack.io</id>
<url>https://jitpack.io</url>
</repository>
</repositories>
<pluginRepositories>

Loading…
Cancel
Save