吴远 3 months ago
parent
commit
16116f6fd6
  1. 2
      dk-api/api-business/src/main/java/org/dromara/business/api/RemoteBusinessAlertService.java
  2. 22
      dk-api/api-workflow/src/main/java/org/dromara/workflow/api/RemoteWorkflowService.java
  3. 10
      dk-api/api-workflow/src/main/java/org/dromara/workflow/api/event/ProcessCreateTaskEvent.java
  4. 10
      dk-api/api-workflow/src/main/java/org/dromara/workflow/api/event/ProcessEvent.java
  5. 27
      dk-modules/business/pom.xml
  6. 88
      dk-modules/business/src/main/java/org/dromara/business/config/ZlmConfig.java
  7. 20
      dk-modules/business/src/main/java/org/dromara/business/controller/BusinessAlertStatisticsController.java
  8. 100
      dk-modules/business/src/main/java/org/dromara/business/controller/BusinessVideoController.java
  9. 45
      dk-modules/business/src/main/java/org/dromara/business/controller/WebhookController.java
  10. 12
      dk-modules/business/src/main/java/org/dromara/business/domain/BusinessAlert.java
  11. 10
      dk-modules/business/src/main/java/org/dromara/business/domain/bo/BusinessAlertBo.java
  12. 12
      dk-modules/business/src/main/java/org/dromara/business/domain/vo/BusinessAlertVo.java
  13. 4
      dk-modules/business/src/main/java/org/dromara/business/dubbo/RemoteBusinessAlertServiceImpl.java
  14. 26
      dk-modules/business/src/main/java/org/dromara/business/mapper/BusinessAlertMapper.java
  15. 30
      dk-modules/business/src/main/java/org/dromara/business/mapper/BusinessDepartBoundaryMapper.java
  16. 22
      dk-modules/business/src/main/java/org/dromara/business/mapper/BusinessPatrolAreasMapper.java
  17. 8
      dk-modules/business/src/main/java/org/dromara/business/mapper/BusinessVectorDictItemMapper.java
  18. 10
      dk-modules/business/src/main/java/org/dromara/business/mapper/BusinessVectorDictMapper.java
  19. 2
      dk-modules/business/src/main/java/org/dromara/business/service/IBusinessAlertService.java
  20. 6
      dk-modules/business/src/main/java/org/dromara/business/service/IBusinessAlertStatisticsService.java
  21. 30
      dk-modules/business/src/main/java/org/dromara/business/service/IBusinessDepartBoundaryService.java
  22. 29
      dk-modules/business/src/main/java/org/dromara/business/service/IBusinessPatrolAreasService.java
  23. 12
      dk-modules/business/src/main/java/org/dromara/business/service/IBusinessVectorDictItemService.java
  24. 17
      dk-modules/business/src/main/java/org/dromara/business/service/IBusinessVectorDictService.java
  25. 36
      dk-modules/business/src/main/java/org/dromara/business/service/IBusinessVideoService.java
  26. 19
      dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessAlertServiceImpl.java
  27. 27
      dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessAlertStatisticsServiceImpl.java
  28. 197
      dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessPatrolAreasServiceImpl.java
  29. 28
      dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessVectorDictItemServiceImpl.java
  30. 37
      dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessVectorDictServiceImpl.java
  31. 196
      dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessVideoServiceImpl.java
  32. 171
      dk-modules/business/src/main/resources/mapper/business/BusinessAlertMapper.xml
  33. 55
      dk-modules/business/src/main/resources/mapper/business/BusinessPatrolAreasMapper.xml
  34. 5
      dk-modules/resource/src/main/java/org/dromara/resource/controller/SysOssController.java
  35. 27
      dk-modules/system/pom.xml
  36. 24
      dk-modules/system/src/main/java/org/dromara/system/controller/system/SysDepartBoundaryController.java
  37. 15
      dk-modules/system/src/main/java/org/dromara/system/domain/SysDepartBoundary.java
  38. 6
      dk-modules/system/src/main/java/org/dromara/system/domain/SysGeospatialVectors.java
  39. 9
      dk-modules/system/src/main/java/org/dromara/system/domain/SysVectorDict.java
  40. 6
      dk-modules/system/src/main/java/org/dromara/system/domain/SysVectorDictItem.java
  41. 28
      dk-modules/system/src/main/java/org/dromara/system/mapper/SysDepartBoundaryMapper.java
  42. 8
      dk-modules/system/src/main/java/org/dromara/system/mapper/SysVectorDictItemMapper.java
  43. 10
      dk-modules/system/src/main/java/org/dromara/system/mapper/SysVectorDictMapper.java
  44. 30
      dk-modules/system/src/main/java/org/dromara/system/service/ISysDepartBoundaryService.java
  45. 12
      dk-modules/system/src/main/java/org/dromara/system/service/ISysVectorDictItemService.java
  46. 14
      dk-modules/system/src/main/java/org/dromara/system/service/ISysVectorDictService.java
  47. 78
      dk-modules/system/src/main/java/org/dromara/system/service/impl/SysDepartBoundaryServiceImpl.java
  48. 28
      dk-modules/system/src/main/java/org/dromara/system/service/impl/SysVectorDictItemServiceImpl.java
  49. 37
      dk-modules/system/src/main/java/org/dromara/system/service/impl/SysVectorDictServiceImpl.java
  50. 39
      dk-modules/system/src/main/java/org/dromara/system/utils/BatchProcessorUtil.java
  51. 2
      dk-modules/system/src/main/java/org/dromara/system/utils/ShpAnalysisUtil.java
  52. 26
      dk-modules/system/src/main/resources/mapper/system/SysDepartBoundaryMapper.xml
  53. 2
      dk-modules/system/src/main/resources/mapper/system/SysVectorDictItemMapper.xml
  54. 10
      dk-modules/system/src/main/resources/mapper/system/SysVectorDictMapper.xml
  55. 13
      dk-modules/workflow/src/main/java/org/dromara/workflow/dubbo/RemoteWorkflowServiceImpl.java
  56. 4
      dk-modules/workflow/src/main/java/org/dromara/workflow/handler/FlwAlertHandler.java
  57. 7
      dk-modules/workflow/src/main/java/org/dromara/workflow/service/WorkflowService.java
  58. 13
      dk-modules/workflow/src/main/java/org/dromara/workflow/service/impl/WorkflowServiceImpl.java
  59. 2
      pom.xml

2
dk-api/api-business/src/main/java/org/dromara/business/api/RemoteBusinessAlertService.java

@ -15,5 +15,5 @@ public interface RemoteBusinessAlertService {
* @param businessId 业务id(预警工单) * @param businessId 业务id(预警工单)
* @param flowStatus 流程状态 * @param flowStatus 流程状态
*/ */
void updateAlertStatus(String businessId, String flowStatus); void updateAlertStatus(String businessId, String flowStatus,Boolean isIllegal,String alertType);
} }

22
dk-api/api-workflow/src/main/java/org/dromara/workflow/api/RemoteWorkflowService.java

@ -78,13 +78,13 @@ public interface RemoteWorkflowService {
*/ */
RemoteStartProcessReturn startWorkFlow(RemoteStartProcess startProcess); RemoteStartProcessReturn startWorkFlow(RemoteStartProcess startProcess);
// /** /**
// * 办理任务 * 办理任务
// * *
// * @param completeTask 参数 * @param completeTask 参数
// * @return 结果 * @return 结果
// */ */
// boolean completeTask(RemoteCompleteTask completeTask); boolean completeTask(RemoteCompleteTask completeTask);
/** /**
* 获取当前任务的所有办理人 * 获取当前任务的所有办理人
@ -100,4 +100,12 @@ public interface RemoteWorkflowService {
*/ */
List<String> getPermissions(); List<String> getPermissions();
/**
* 作废流程
*
* @param instanceId 流程id
* @return 结果
*/
boolean processInvalid(Long instanceId);
} }

10
dk-api/api-workflow/src/main/java/org/dromara/workflow/api/event/ProcessCreateTaskEvent.java

@ -44,6 +44,16 @@ public class ProcessCreateTaskEvent extends RemoteApplicationEvent {
*/ */
private String businessId; private String businessId;
/**
* 处置预警类型
*/
private String alertType;
/**
* 是否违建
*/
private Boolean isIllegal;
public ProcessCreateTaskEvent() { public ProcessCreateTaskEvent() {
super(new Object(), SpringUtils.getApplicationName(), DEFAULT_DESTINATION_FACTORY.getDestination(null)); super(new Object(), SpringUtils.getApplicationName(), DEFAULT_DESTINATION_FACTORY.getDestination(null));
} }

10
dk-api/api-workflow/src/main/java/org/dromara/workflow/api/event/ProcessEvent.java

@ -45,6 +45,16 @@ public class ProcessEvent extends RemoteApplicationEvent {
*/ */
private Map<String, Object> params; private Map<String, Object> params;
/**
* 预警类型
*/
private String alertType;
/**
* 是否违建
*/
private Boolean isIllegal;
/** /**
* 当为true时为申请人节点办理 * 当为true时为申请人节点办理
*/ */

27
dk-modules/business/pom.xml

@ -114,33 +114,6 @@
<artifactId>api-workflow</artifactId> <artifactId>api-workflow</artifactId>
</dependency> </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> </dependencies>
<build> <build>
<finalName>${project.artifactId}</finalName> <finalName>${project.artifactId}</finalName>

88
dk-modules/business/src/main/java/org/dromara/business/config/ZlmConfig.java

@ -0,0 +1,88 @@
package org.dromara.business.config;
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.client.RestTemplate;
/**
* 视频流配置类
*/
@Data
@Configuration
@ConfigurationProperties(prefix = "zlm")
public class ZlmConfig {
/**
* 请求url
*/
private String apiUrl;
/**
*应用名
*/
private String app;
/**
* id
*/
private String stream;
/**
* 0 hls1 mp4
*/
private String type;
/**
* api 操作密钥
*/
private String secret;
/**
* 虚拟主机
*/
private String vhost;
/**
* mp4 录像切片时间大小,单位秒 0 则采用配置项
*/
private Integer maxSecond;
/**
* 截图需要的url
*/
private String rtmp;
/**
* 开始录制url
*/
private String startRecordUrl;
/**
* 停止录制url
*/
private String stopRecordUrl;
/**
* 录制状态url
*/
private String isRecordUrl;
/**
* 设置录像速度url
*/
private String recordSpeedUrl;
/**
* 获取截图url
*/
private String snapUrl;
/**
* 设置录像流播放位置
*/
private String seekRecordStampUrl;
@Bean
public RestTemplate restTemplate() {
return new RestTemplate();
}
}

20
dk-modules/business/src/main/java/org/dromara/business/controller/BusinessAlertStatisticsController.java

@ -5,7 +5,7 @@ import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.dromara.business.domain.bo.BusinessAlertBo; import org.dromara.business.domain.bo.BusinessAlertBo;
import org.dromara.business.domain.model.StatObj; import org.dromara.business.domain.model.StatObj;
import org.dromara.business.service.BusinessAlertStatisticsService; import org.dromara.business.service.IBusinessAlertStatisticsService;
import org.dromara.common.core.domain.R; import org.dromara.common.core.domain.R;
import org.dromara.common.web.core.BaseController; import org.dromara.common.web.core.BaseController;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.GetMapping;
@ -24,7 +24,7 @@ import java.util.Map;
@RequestMapping("/alert/statistics") @RequestMapping("/alert/statistics")
public class BusinessAlertStatisticsController extends BaseController { public class BusinessAlertStatisticsController extends BaseController {
private final BusinessAlertStatisticsService statisticsService; private final IBusinessAlertStatisticsService statisticsService;
@Operation(summary="panel看板数据", description="panel看板数据") @Operation(summary="panel看板数据", description="panel看板数据")
@GetMapping(value = "/panel/count") @GetMapping(value = "/panel/count")
@ -32,8 +32,6 @@ public class BusinessAlertStatisticsController extends BaseController {
return R.ok(statisticsService.countPanelAlert(businessAlertBo)); return R.ok(statisticsService.countPanelAlert(businessAlertBo));
} }
//饼图显示每个月根据部门 //饼图显示每个月根据部门
@Operation(summary="根据月份显示预警个数", description="根据月份显示预警个数") @Operation(summary="根据月份显示预警个数", description="根据月份显示预警个数")
@GetMapping(value = "/month/count") @GetMapping(value = "/month/count")
@ -65,9 +63,15 @@ public class BusinessAlertStatisticsController extends BaseController {
//预警对比统计 //预警对比统计
//1、处理状态柱状图,x轴为选中的部门 //1、处理状态柱状图,x轴为选中的部门
//2、预警类型柱状图,x轴为选中的部门 //2、预警类型柱状图,x轴为选中的部门
@Operation(summary="预警对比统计", description="预警对比统计") @Operation(summary="预警对比统计(预警状态)", description="预警对比统计(预警状态)")
@GetMapping(value = "/compare/count") @GetMapping(value = "/compare/status/count")
public R<List<Map<String, Object>>> countAlertCompare(BusinessAlertBo businessAlertBo) { public R<List<Map<String, Object>>> countAlertStatusCompare(BusinessAlertBo businessAlertBo) {
return R.ok(statisticsService.countAlertCompare(businessAlertBo)); return R.ok(statisticsService.countAlertStatusCompare(businessAlertBo));
}
@Operation(summary="预警对比统计(预警类型)", description="预警对比统计(预警类型)")
@GetMapping(value = "/compare/type/count")
public R<List<Map<String, Object>>> countAlertTypeCompare(BusinessAlertBo businessAlertBo) {
return R.ok(statisticsService.countAlertTypeCompare(businessAlertBo));
} }
} }

100
dk-modules/business/src/main/java/org/dromara/business/controller/BusinessVideoController.java

@ -0,0 +1,100 @@
package org.dromara.business.controller;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.RequiredArgsConstructor;
import org.dromara.business.service.IBusinessVideoService;
import org.dromara.common.core.domain.R;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.util.Map;
/**
* rtmp默认端口1935, rtsp默认端口554
*/
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/video")
@Tag(name = "ZLMediaKit视频流相关操作")
public class BusinessVideoController {
private final IBusinessVideoService businessVideoService;
/**
* 开始录制
*/
@Operation(summary ="开始录制",description = "开始录制")
@GetMapping("/startRecord")
public R<?> startRecording() {
return businessVideoService.startRecording()?R.ok("启动录制成功!"):R.fail("启动录制失败!");
}
/**
* 停止录制
*/
@Operation(summary ="停止录制",description = "停止录制")
@GetMapping("/stopRecord")
public R<?> stopRecording() {
return businessVideoService.stopRecording()?R.ok("停止成功!"):R.fail("停止失败!");
}
/**
* 获取录制状态
*/
@Operation(summary ="获取录制状态",description = "获取录制状态")
@GetMapping("/isRecording")
public R<?> isRecording() {
return R.ok("获取录制状态!",businessVideoService.isRecording());
}
/**
* 获取截图
*/
@Operation(summary ="获取截图",description = "获取截图",parameters = {
@Parameter(name = "timeoutSec",description = "截图失败超时时间"),
@Parameter(name = "expireSec",description = "截图的过期时间,该时间内产生的截图都会作为缓存返回")
})
@GetMapping("/getSnap")
public R<?> getSnap(@RequestParam("timeoutSec") Integer timeoutSec,@RequestParam("expireSec") Integer expireSec) {
return R.ok("截图成功!",businessVideoService.getSnap(timeoutSec,expireSec));
}
/**
* 设置录像流播放位置(官方提供的接口有问题)暂时不用
*/
@Operation(summary ="设置录像流播放位置",description = "设置录像流播放位置",parameters = {
@Parameter(name = "stamp",description = "要设置的录像播放位置")
})
@GetMapping("/seekRecordStamp")
public R<?> seekRecordStamp(@RequestParam("stamp") Integer stamp) {
return businessVideoService.seekRecordStamp(stamp)?R.ok("设置录像流播放位置成功!"):R.fail("设置录像流播放位置失败!");
}
/**
* 设置录像速度(官方提供的接口有问题)暂时不用
*/
@Operation(summary ="设置录像速度",description = "设置录像速度",parameters = {
@Parameter(name = "speed",description = "要设置的录像倍速")
})
@GetMapping("/setRecordSpeed")
public R<?> setRecordSpeed(@RequestParam("speed") Double speed) {
return businessVideoService.setRecordSpeed(speed)?R.ok("设置录像速度成功!"):R.fail("设置录像速度失败!");
}
/**
* 回调事件
* @param map
* @return
*/
@PostMapping(value = "/index/hook/on_record_mp4")
public R<?> hookOnRecordMp4(@RequestBody Map<String,Object> map) {
return R.ok(map);
}
}

45
dk-modules/business/src/main/java/org/dromara/business/controller/WebhookController.java

@ -0,0 +1,45 @@
package org.dromara.business.controller;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.dromara.common.web.core.BaseController;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* ZLMediaKit视频流事件回调
*/
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/index/hook")
@Tag(name = "ZLMediaKit视频流事件回调")
@Slf4j
public class WebhookController {
/**
* 处理播放事件
*/
@PostMapping("/on_play")
public String onPlay(@RequestBody String body) {
log.info("on_play event: {}", body);
return "{\"code\": 0}";
}
/**
* 处理录制 MP4 文件事件
*/
@PostMapping("/on_record_mp4")
public String onRecordMp4(@RequestBody String body) {
log.info("on_record_mp4 event: {}", body);
return "{\"code\": 0}";
}
}

12
dk-modules/business/src/main/java/org/dromara/business/domain/BusinessAlert.java

@ -64,10 +64,10 @@ public class BusinessAlert extends BaseEntity {
private String images; private String images;
/** /**
* 预警类型 * 识别类型
*/ */
@TableField(value = "alert_type",typeHandler = JacksonTypeHandler.class) @TableField(value = "identify_type",typeHandler = JacksonTypeHandler.class)
private List<String> alertType; private List<String> identifyType;
/** /**
* 纬度 * 纬度
@ -80,9 +80,9 @@ public class BusinessAlert extends BaseEntity {
private Long lng; private Long lng;
/** /**
* 任务类型 * 预警类型
*/ */
private String taskHandleType; private String alertType;
/** /**
@ -140,7 +140,7 @@ public class BusinessAlert extends BaseEntity {
/** /**
* 是否违建 01 * 是否违建 01
*/ */
private Long isIllegal; private Boolean isIllegal;
/** /**
* 部门id * 部门id

10
dk-modules/business/src/main/java/org/dromara/business/domain/bo/BusinessAlertBo.java

@ -47,9 +47,9 @@ public class BusinessAlertBo {
private String images; private String images;
/** /**
* 预警类型 * 识别类型
*/ */
private List<String> alertType; private List<String> identifyType;
/** /**
* 纬度 * 纬度
@ -62,9 +62,9 @@ public class BusinessAlertBo {
private Long lng; private Long lng;
/** /**
* 任务类型 * 预警类型
*/ */
private String taskHandleType; private String alertType;
/** /**
* 流程处置状态(verify:验证,cancel:已撤销,draft:草稿,waiting:待审核,finish:已完成,invalid:已作废,back:已退回,termination:已终止) * 流程处置状态(verify:验证,cancel:已撤销,draft:草稿,waiting:待审核,finish:已完成,invalid:已作废,back:已退回,termination:已终止)
@ -117,7 +117,7 @@ public class BusinessAlertBo {
/** /**
* 是否违建 01 * 是否违建 01
*/ */
private Long isIllegal; private Boolean isIllegal;
/** /**
* 部门id * 部门id

12
dk-modules/business/src/main/java/org/dromara/business/domain/vo/BusinessAlertVo.java

@ -59,9 +59,9 @@ public class BusinessAlertVo implements Serializable {
/** /**
* 预警类型 * 识别类型
*/ */
private List<String> alertType; private List<String> identifyType;
/** /**
* 纬度 * 纬度
@ -76,10 +76,10 @@ public class BusinessAlertVo implements Serializable {
private Long lng; private Long lng;
/** /**
* 任务类型 * 预警类型
*/ */
@ExcelProperty(value = "任务类型") @ExcelProperty(value = "预警类型")
private String taskHandleType; private String alertType;
/** /**
@ -139,7 +139,7 @@ public class BusinessAlertVo implements Serializable {
* 是否违建 01 * 是否违建 01
*/ */
@ExcelProperty(value = "是否违建 0:否,1:是") @ExcelProperty(value = "是否违建 0:否,1:是")
private Long isIllegal; private Boolean isIllegal;
/** /**
* 部门id * 部门id

4
dk-modules/business/src/main/java/org/dromara/business/dubbo/RemoteBusinessAlertServiceImpl.java

@ -23,7 +23,7 @@ public class RemoteBusinessAlertServiceImpl implements RemoteBusinessAlertServic
* @param flowStatus 流程状态 * @param flowStatus 流程状态
*/ */
@Override @Override
public void updateAlertStatus(String businessId, String flowStatus) { public void updateAlertStatus(String businessId, String flowStatus,Boolean isIllegal,String alertType) {
businessAlertService.updateAlertStatus(businessId,flowStatus); businessAlertService.updateAlertStatus(businessId,flowStatus,isIllegal,alertType);
} }
} }

26
dk-modules/business/src/main/java/org/dromara/business/mapper/BusinessAlertMapper.java

@ -23,22 +23,32 @@ import java.util.Map;
*/ */
public interface BusinessAlertMapper extends BaseMapperPlus<BusinessAlert, BusinessAlertVo> { public interface BusinessAlertMapper extends BaseMapperPlus<BusinessAlert, BusinessAlertVo> {
@DataPermission(
@DataColumn(key = "deptName", value = "ba.dept_id")
)
Page<BusinessAlert> pageBusinessAlert(Page<BusinessAlert> page, QueryWrapper<BusinessAlert> ew); Page<BusinessAlert> pageBusinessAlert(Page<BusinessAlert> page, QueryWrapper<BusinessAlert> ew);
@DataPermission(
@DataColumn(key = "deptName", value = "ba.dept_id")
)
Page<BusinessAlert> pageAlertFinish(Page<BusinessAlert> page, QueryWrapper<BusinessAlert> ew); Page<BusinessAlert> pageAlertFinish(Page<BusinessAlert> page, QueryWrapper<BusinessAlert> ew);
@DataPermission(
@DataColumn(key = "deptName", value = "ba.dept_id")
)
Page<BusinessAlert> pageAlertTodo(Page<BusinessAlert> page, QueryWrapper<BusinessAlert> ew); Page<BusinessAlert> pageAlertTodo(Page<BusinessAlert> page, QueryWrapper<BusinessAlert> ew);
Page<BusinessAlert> pageBusinessAlertCancel(Page<BusinessAlert> build, QueryWrapper<BusinessAlert> ew);
@DataPermission( @DataPermission(
@DataColumn(key = "deptName", value = "ba.dept_id") @DataColumn(key = "deptName", value = "ba.dept_id")
) )
List<Map<String, Object>> listMonthAlert(@Param("param") BusinessAlertBo businessAlertBo); Page<BusinessAlert> pageBusinessAlertCancel(Page<BusinessAlert> build, QueryWrapper<BusinessAlert> ew);
@DataPermission( @DataPermission(
@DataColumn(key = "deptName", value = "ba.dept_id") @DataColumn(key = "deptName", value = "ba.dept_id")
) )
List<Map<String, Object>> listMonthAlert(@Param("param") BusinessAlertBo businessAlertBo);
List<Map<String, Object>> listDepartAlert(@Param("param") BusinessAlertBo businessAlertBo); List<Map<String, Object>> listDepartAlert(@Param("param") BusinessAlertBo businessAlertBo);
@DataPermission( @DataPermission(
@ -46,9 +56,7 @@ public interface BusinessAlertMapper extends BaseMapperPlus<BusinessAlert, Busin
) )
List<Map<String, Object>> listMonthAlertStatus(@Param("param")BusinessAlertBo businessAlertBo); List<Map<String, Object>> listMonthAlertStatus(@Param("param")BusinessAlertBo businessAlertBo);
@DataPermission(
@DataColumn(key = "deptName", value = "ba.dept_id")
)
List<Map<String, Object>> listDepartAlertStatus(@Param("param") BusinessAlertBo businessAlertBo); List<Map<String, Object>> listDepartAlertStatus(@Param("param") BusinessAlertBo businessAlertBo);
@DataPermission( @DataPermission(
@ -59,6 +67,10 @@ public interface BusinessAlertMapper extends BaseMapperPlus<BusinessAlert, Busin
@DataPermission( @DataPermission(
@DataColumn(key = "deptName", value = "ba.dept_id") @DataColumn(key = "deptName", value = "ba.dept_id")
) )
List<Map<String, Object>> countPanelAlert(BusinessAlertBo businessAlertBo); List<Map<String, Object>> countPanelAlert(@Param("param")BusinessAlertBo businessAlertBo);
@DataPermission(
@DataColumn(key = "deptName", value = "ba.dept_id")
)
List<Map<String, Object>> countAlertTypeCompare(@Param("param") BusinessAlertBo businessAlertBo);
} }

30
dk-modules/business/src/main/java/org/dromara/business/mapper/BusinessDepartBoundaryMapper.java

@ -1,30 +0,0 @@
package org.dromara.business.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.apache.ibatis.annotations.Param;
import org.dromara.business.domain.BusinessDepartBoundary;
import org.dromara.common.mybatis.annotation.DataColumn;
import org.dromara.common.mybatis.annotation.DataPermission;
import java.util.List;
/**
* 部门 Mapper 接口
*/
public interface BusinessDepartBoundaryMapper extends BaseMapper<BusinessDepartBoundary> {
Page<BusinessDepartBoundary> listSysDepartBoundary(Page<BusinessDepartBoundary> page,@Param("condition") BusinessDepartBoundary sysDepartBoundary);
List<BusinessDepartBoundary> listSysDepartBoundaryGeomFromText(@Param("condition") BusinessDepartBoundary sysDepartBoundary);
/**
* 通过部门编码获取部门边界数据
* @param deptId 部门编码
* @return String
*/
List<BusinessDepartBoundary> queryByDeptId(@Param("deptId") String deptId);
void saveBatchBoundary(@Param("list") List<BusinessDepartBoundary> boundaryList);
String listJson(@Param("param") BusinessDepartBoundary departBoundary);
}

22
dk-modules/business/src/main/java/org/dromara/business/mapper/BusinessPatrolAreasMapper.java

@ -1,22 +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.BusinessPatrolAreas;
import org.dromara.business.domain.bo.BusinessPatrolAreasBo;
import java.util.List;
/**
* @Description: 巡查区域
*/
public interface BusinessPatrolAreasMapper extends BaseMapper<BusinessPatrolAreas> {
IPage<BusinessPatrolAreas> listPatrolAreas(Page<BusinessPatrolAreas> page, @Param("condition") BusinessPatrolAreasBo patrolAreasBo, @Param("deptIds") List<String> deptIds);
List<BusinessPatrolAreas> listPatrolAreas(@Param("condition") BusinessPatrolAreasBo patrolAreasBo, @Param("deptIds") List<String> deptIds);
}

8
dk-modules/business/src/main/java/org/dromara/business/mapper/BusinessVectorDictItemMapper.java

@ -1,8 +0,0 @@
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

@ -1,10 +0,0 @@
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();
}

2
dk-modules/business/src/main/java/org/dromara/business/service/IBusinessAlertService.java

@ -62,7 +62,7 @@ public interface IBusinessAlertService {
* @param businessId * @param businessId
* @param flowStatus * @param flowStatus
*/ */
void updateAlertStatus(String businessId, String flowStatus); void updateAlertStatus(String businessId, String flowStatus,Boolean isIllegal,String alertType);
TableDataInfo<BusinessAlert> getInfo(BusinessAlertBo bo, PageQuery pageQuery, String alertCode); TableDataInfo<BusinessAlert> getInfo(BusinessAlertBo bo, PageQuery pageQuery, String alertCode);
} }

6
dk-modules/business/src/main/java/org/dromara/business/service/BusinessAlertStatisticsService.java → dk-modules/business/src/main/java/org/dromara/business/service/IBusinessAlertStatisticsService.java

@ -7,7 +7,7 @@ import org.dromara.business.domain.model.StatObj;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
public interface BusinessAlertStatisticsService { public interface IBusinessAlertStatisticsService {
List<StatObj> countMonthAlert(BusinessAlertBo businessAlertBo); List<StatObj> countMonthAlert(BusinessAlertBo businessAlertBo);
List<StatObj> countDepartAlert(BusinessAlertBo businessAlertBo); List<StatObj> countDepartAlert(BusinessAlertBo businessAlertBo);
@ -16,7 +16,9 @@ public interface BusinessAlertStatisticsService {
List<StatObj> countDepartAlertStatus(BusinessAlertBo businessAlertBo); List<StatObj> countDepartAlertStatus(BusinessAlertBo businessAlertBo);
List<Map<String, Object>> countAlertCompare(BusinessAlertBo businessAlertBo); List<Map<String, Object>> countAlertStatusCompare(BusinessAlertBo businessAlertBo);
List<StatObj> countPanelAlert(BusinessAlertBo businessAlertBo); List<StatObj> countPanelAlert(BusinessAlertBo businessAlertBo);
List<Map<String, Object>> countAlertTypeCompare(BusinessAlertBo businessAlertBo);
} }

30
dk-modules/business/src/main/java/org/dromara/business/service/IBusinessDepartBoundaryService.java

@ -1,30 +0,0 @@
package org.dromara.business.service;
import com.baomidou.mybatisplus.extension.service.IService;
import org.dromara.business.domain.BusinessDepartBoundary;
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;
/**
* 部门区域 服务实现类
*/
public interface IBusinessDepartBoundaryService extends IService<BusinessDepartBoundary>{
TableDataInfo<BusinessDepartBoundary> listSysDepartBoundary(PageQuery page, BusinessDepartBoundary departBoundary);
List<BusinessDepartBoundary> listSysDepartBoundaryGeomFromText(BusinessDepartBoundary departBoundary);
List<BusinessDepartBoundary> queryByDeptId(String deptId);
boolean uploadShpFile(MultipartFile file);
boolean deleteDepartBoundary(String id);
boolean updateDepartBoundary(BusinessDepartBoundary departBoundary);
boolean addDepartBoundary(BusinessDepartBoundary departBoundary);
String listJson(BusinessDepartBoundary departBoundary);
}

29
dk-modules/business/src/main/java/org/dromara/business/service/IBusinessPatrolAreasService.java

@ -1,29 +0,0 @@
package org.dromara.business.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
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;
/**
* @Description: 巡查区域
*/
public interface IBusinessPatrolAreasService extends IService<BusinessPatrolAreas> {
TableDataInfo<BusinessPatrolAreas> pagePatrolAreas(PageQuery pageQuery, BusinessPatrolAreasBo patrolAreasBo);
List<BusinessPatrolAreas> listPatrolAreas(BusinessPatrolAreasBo patrolAreasBo);
void addPatrolAreas(MultipartFile file);
boolean updatePatrolAreas(BusinessPatrolAreas patrolAreas);
List<BusinessPatrolAreas> exportXls(BusinessPatrolAreas patrolAreas);
}

12
dk-modules/business/src/main/java/org/dromara/business/service/IBusinessVectorDictItemService.java

@ -1,12 +0,0 @@
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

@ -1,17 +0,0 @@
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);
}

36
dk-modules/business/src/main/java/org/dromara/business/service/IBusinessVideoService.java

@ -0,0 +1,36 @@
package org.dromara.business.service;
public interface IBusinessVideoService {
/**
* 开始录制
*/
Boolean startRecording();
/**
* 停止录制
*/
Boolean stopRecording();
/**
* 获取录制状态
*/
Boolean isRecording();
/**
* 获取截图
*/
String getSnap(Integer timeoutSec, Integer expireSec);
/**
* 设置录像速度(官方提供的接口有问题)暂时不用
*/
Boolean setRecordSpeed(Double speed);
/**
* 设置录像速度(官方提供的接口有问题)暂时不用
*/
Boolean seekRecordStamp(Integer stamp);
}

19
dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessAlertServiceImpl.java

@ -19,6 +19,7 @@ import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.satoken.utils.LoginHelper; import org.dromara.common.satoken.utils.LoginHelper;
import org.dromara.system.api.domain.vo.RemoteUserVo; import org.dromara.system.api.domain.vo.RemoteUserVo;
import org.dromara.system.api.model.PostDTO;
import org.dromara.workflow.api.RemoteWorkflowService; import org.dromara.workflow.api.RemoteWorkflowService;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@ -102,10 +103,15 @@ public class BusinessAlertServiceImpl implements IBusinessAlertService {
* @param flowStatus * @param flowStatus
*/ */
@Override @Override
public void updateAlertStatus(String businessId, String flowStatus) { public void updateAlertStatus(String businessId, String flowStatus,Boolean isIllegal,String alertType) {
LambdaUpdateWrapper<BusinessAlert> wrapper = new LambdaUpdateWrapper<>(); LambdaUpdateWrapper<BusinessAlert> wrapper = new LambdaUpdateWrapper<>();
wrapper.set(BusinessAlert::getHandleType, BusinessStatusEnum.getByStatus(flowStatus)); wrapper.set(BusinessAlert::getHandleType, BusinessStatusEnum.getByStatus(flowStatus).getStatus());
if (ObjectUtil.isNotEmpty(isIllegal)){
wrapper.set(BusinessAlert::getIsIllegal, isIllegal);
}
if (ObjectUtil.isNotEmpty(alertType)){
wrapper.set(BusinessAlert::getAlertType, alertType);
}
wrapper.eq(BusinessAlert::getId, businessId); wrapper.eq(BusinessAlert::getId, businessId);
this.baseMapper.update(wrapper); this.baseMapper.update(wrapper);
@ -135,7 +141,7 @@ public class BusinessAlertServiceImpl implements IBusinessAlertService {
*/ */
@Override @Override
public TableDataInfo<BusinessAlert> pageBusinessAlertCancel(BusinessAlertBo bo, PageQuery pageQuery) { public TableDataInfo<BusinessAlert> pageBusinessAlertCancel(BusinessAlertBo bo, PageQuery pageQuery) {
bo.setHandleType(BusinessStatusEnum.CANCEL.getStatus()); bo.setHandleType(BusinessStatusEnum.INVALID.getStatus());
QueryWrapper<BusinessAlert> wrapper = buildQueryWrapper(bo); QueryWrapper<BusinessAlert> wrapper = buildQueryWrapper(bo);
Page<BusinessAlert> page = this.baseMapper.pageBusinessAlertCancel(pageQuery.build(), wrapper); Page<BusinessAlert> page = this.baseMapper.pageBusinessAlertCancel(pageQuery.build(), wrapper);
@ -196,8 +202,6 @@ public class BusinessAlertServiceImpl implements IBusinessAlertService {
} }
/** /**
* 构建wrapper * 构建wrapper
* @param bo * @param bo
@ -206,6 +210,9 @@ public class BusinessAlertServiceImpl implements IBusinessAlertService {
private QueryWrapper<BusinessAlert> buildQueryWrapper(BusinessAlertBo bo) { private QueryWrapper<BusinessAlert> buildQueryWrapper(BusinessAlertBo bo) {
QueryWrapper<BusinessAlert> wrapper = new QueryWrapper<>(); QueryWrapper<BusinessAlert> wrapper = new QueryWrapper<>();
//根据当前用户职能获取识别类型
// List<PostDTO> posts = LoginHelper.getLoginUser().getPosts();
//排除状态为验证状态预警 //排除状态为验证状态预警
wrapper.ne("ba.handle_type", BusinessStatusEnum.VERIFY.getStatus()); wrapper.ne("ba.handle_type", BusinessStatusEnum.VERIFY.getStatus());

27
dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessAlertStatisticsServiceImpl.java

@ -6,12 +6,10 @@ import org.apache.dubbo.config.annotation.DubboReference;
import org.dromara.business.domain.bo.BusinessAlertBo; import org.dromara.business.domain.bo.BusinessAlertBo;
import org.dromara.business.domain.model.StatObj; import org.dromara.business.domain.model.StatObj;
import org.dromara.business.mapper.BusinessAlertMapper; import org.dromara.business.mapper.BusinessAlertMapper;
import org.dromara.business.service.BusinessAlertStatisticsService; import org.dromara.business.service.IBusinessAlertStatisticsService;
import org.dromara.common.core.exception.ServiceException;
import org.dromara.common.satoken.utils.LoginHelper; import org.dromara.common.satoken.utils.LoginHelper;
import org.dromara.system.api.RemoteDeptService; import org.dromara.system.api.RemoteDeptService;
import org.dromara.system.api.domain.vo.RemoteDeptVo; import org.dromara.system.api.domain.vo.RemoteDeptVo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.*; import java.util.*;
@ -26,7 +24,7 @@ import java.util.stream.Stream;
*/ */
@RequiredArgsConstructor @RequiredArgsConstructor
@Service @Service
public class BusinessAlertStatisticsServiceImpl implements BusinessAlertStatisticsService { public class BusinessAlertStatisticsServiceImpl implements IBusinessAlertStatisticsService {
private final BusinessAlertMapper baseMapper; private final BusinessAlertMapper baseMapper;
@ -55,13 +53,7 @@ public class BusinessAlertStatisticsServiceImpl implements BusinessAlertStatisti
@Override @Override
public List<StatObj>countDepartAlert(BusinessAlertBo businessAlertBo) { public List<StatObj>countDepartAlert(BusinessAlertBo businessAlertBo) {
if (ObjectUtil.isNotEmpty(LoginHelper.getDeptId())){ businessAlertBo.setDeptId(String.valueOf(LoginHelper.getDeptId()));
List<RemoteDeptVo> remoteDeptVoList = remoteDeptService.selectListByParentId(LoginHelper.getDeptId() + "");
businessAlertBo.setDeptIdList(remoteDeptVoList.stream().map(RemoteDeptVo::getDeptId).toList());
}else {
//TODO
}
List<Map<String, Object>> mapList = baseMapper.listDepartAlert(businessAlertBo); List<Map<String, Object>> mapList = baseMapper.listDepartAlert(businessAlertBo);
return mapList.stream().map(data -> new StatObj(data.get("deptName") + "", Long.parseLong(data.get("total") + ""),"deptId",data.get("deptId"))).collect(Collectors.toList()); return mapList.stream().map(data -> new StatObj(data.get("deptName") + "", Long.parseLong(data.get("total") + ""),"deptId",data.get("deptId"))).collect(Collectors.toList());
@ -109,12 +101,9 @@ public class BusinessAlertStatisticsServiceImpl implements BusinessAlertStatisti
* @return * @return
*/ */
@Override @Override
public List<Map<String, Object>> countAlertCompare(BusinessAlertBo businessAlertBo) { public List<Map<String, Object>> countAlertStatusCompare(BusinessAlertBo businessAlertBo) {
businessAlertBo.setDateList(buildDateList(businessAlertBo)); businessAlertBo.setDateList(buildDateList(businessAlertBo));
List<Map<String, Object>> mapList = baseMapper.countAlertCompare(businessAlertBo); return baseMapper.countAlertCompare(businessAlertBo);
return mapList;
} }
@Override @Override
@ -131,6 +120,12 @@ public class BusinessAlertStatisticsServiceImpl implements BusinessAlertStatisti
.collect(Collectors.toList()); .collect(Collectors.toList());
} }
@Override
public List<Map<String, Object>> countAlertTypeCompare(BusinessAlertBo businessAlertBo) {
businessAlertBo.setDateList(buildDateList(businessAlertBo));
return baseMapper.countAlertTypeCompare(businessAlertBo);
}
private List<String> buildDateList(BusinessAlertBo businessAlertBo) { private List<String> buildDateList(BusinessAlertBo businessAlertBo) {
List<String> resultList = new ArrayList<>(); List<String> resultList = new ArrayList<>();
String currentYear = String.valueOf(Calendar.getInstance().get(Calendar.YEAR)); String currentYear = String.valueOf(Calendar.getInstance().get(Calendar.YEAR));

197
dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessPatrolAreasServiceImpl.java

@ -1,197 +0,0 @@
package org.dromara.business.service.impl;
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.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import lombok.RequiredArgsConstructor;
import org.apache.commons.lang.StringUtils;
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.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;
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.io.InputStream;
import java.lang.reflect.Method;
import java.util.*;
import java.util.stream.Collectors;
/**
* @Description: 巡查区域
*/
@RequiredArgsConstructor
@Service
public class BusinessPatrolAreasServiceImpl extends ServiceImpl<BusinessPatrolAreasMapper, BusinessPatrolAreas> implements IBusinessPatrolAreasService {
private final IBusinessVectorDictService vectorDictService;
@DubboReference
private RemoteUserService remoteUserService;
@DubboReference
private RemoteDeptService remoteDeptService;
@Override
public TableDataInfo<BusinessPatrolAreas> pagePatrolAreas(PageQuery pageQuery, BusinessPatrolAreasBo patrolAreasBo) {
LoginUser user = LoginHelper.getLoginUser();
List<String> deptIds = new ArrayList<>();
String departIds = null;
if(StringUtils.isBlank(patrolAreasBo.getDeptId())){
RemoteDeptVo remoteDeptVo = remoteDeptService.selectDeptById(user.getDeptId());
if(ObjectUtil.isEmpty(remoteDeptVo)){
throw new ServiceException("部门不存在");
}
departIds = user.getDeptId() + "";
}else {
departIds = patrolAreasBo.getDeptId();
}
deptIds.add(departIds);
return TableDataInfo.build(this.baseMapper.listPatrolAreas(pageQuery.build(), patrolAreasBo, deptIds));
}
@Override
public List<BusinessPatrolAreas> listPatrolAreas(BusinessPatrolAreasBo patrolAreasBo) {
return this.baseMapper.listPatrolAreas(patrolAreasBo, patrolAreasBo.getDeptIds());
}
@Override
@Transactional(rollbackFor = Exception.class)
public boolean updatePatrolAreas(BusinessPatrolAreas patrolAreas) {
patrolAreas.setUserName(remoteUserService.selectUserNameById(Long.valueOf(patrolAreas.getUserId())));
return this.updateById(patrolAreas);
}
@Override
public List<BusinessPatrolAreas> exportXls(BusinessPatrolAreas patrolAreas) {
LambdaQueryWrapper<BusinessPatrolAreas> wrapper = buildWrapper(patrolAreas);
return this.list(wrapper);
}
@Override
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);
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 根据解析shp得到的内容封装到BusinessPatrolAreas这个类里面
* @param paramList
* @return
*/
private List<BusinessPatrolAreas> buildBusinessPatrolAreas(List<BusinessGeospatialVectors> paramList) {
List<BusinessPatrolAreas> resultList = new ArrayList<>();
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.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;
}
}

28
dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessVectorDictItemServiceImpl.java

@ -1,28 +0,0 @@
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

@ -1,37 +0,0 @@
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);
}
}

196
dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessVideoServiceImpl.java

@ -0,0 +1,196 @@
package org.dromara.business.service.impl;
import cn.hutool.core.util.ObjectUtil;
import com.fasterxml.jackson.databind.ObjectMapper;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.dromara.business.config.ZlmConfig;
import org.dromara.business.service.IBusinessVideoService;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Service;
import org.springframework.web.client.RestTemplate;
import java.util.Map;
@Service
@Slf4j
@RequiredArgsConstructor
public class BusinessVideoServiceImpl implements IBusinessVideoService {
private final ZlmConfig zlmConfig;
private static final ObjectMapper objectMapper = new ObjectMapper();
private final RestTemplate restTemplate;
@Override
public Boolean startRecording() {
Boolean result = false;
String url = String.format("%s%s?app=%s&stream=%s&type=%s&vhost=%s&secret=%s",
zlmConfig.getApiUrl(),
zlmConfig.getStartRecordUrl(),
zlmConfig.getApp(),
zlmConfig.getStream(),
zlmConfig.getType(),
zlmConfig.getVhost(),
zlmConfig.getSecret());
//是否需要切片视频
if (ObjectUtil.isNotEmpty(zlmConfig.getMaxSecond())){
url = url + "&max_second=" + zlmConfig.getMaxSecond();
}
try {
ResponseEntity<String> response = restTemplate.getForEntity(url, String.class);
if (response.getStatusCode().is2xxSuccessful()) {
Map<String, Object> resultMap = objectMapper.readValue(response.getBody(), Map.class);
result = (Boolean) resultMap.get("result");
log.info("录制启动成功: {}", resultMap);
}
} catch (Exception e) {
log.error("请求异常: {}", e.getMessage(), e);
return result;
}
return result;
}
@Override
public Boolean stopRecording() {
Boolean result = false;
String url = String.format("%s%s?app=%s&stream=%s&type=%s&vhost=%s&secret=%s",
zlmConfig.getApiUrl(),
zlmConfig.getStopRecordUrl(),
zlmConfig.getApp(),
zlmConfig.getStream(),
zlmConfig.getType(),
zlmConfig.getVhost(),
zlmConfig.getSecret());
try {
ResponseEntity<String> response = restTemplate.getForEntity(url, String.class);
if (response.getStatusCode().is2xxSuccessful()) {
Map<String, Object> resultMap = objectMapper.readValue(response.getBody(), Map.class);
result = (Boolean) resultMap.get("result");
log.info("录制停止成功: {}", resultMap);
}
} catch (Exception e) {
log.error("请求异常: {}", e.getMessage(), e);
return result;
}
return result;
}
@Override
public Boolean isRecording() {
Boolean result = false;
String url = String.format("%s%s?app=%s&stream=%s&type=%s&vhost=%s&secret=%s",
zlmConfig.getApiUrl(),
zlmConfig.getIsRecordUrl(),
zlmConfig.getApp(),
zlmConfig.getStream(),
zlmConfig.getType(),
zlmConfig.getVhost(),
zlmConfig.getSecret());
try {
ResponseEntity<String> response = restTemplate.getForEntity(url, String.class);
if (response.getStatusCode().is2xxSuccessful()) {
Map<String, Object> resultMap = objectMapper.readValue(response.getBody(), Map.class);
result = (Boolean) resultMap.get("status");
log.info("获取录制状态成功: {}", resultMap);
}
} catch (Exception e) {
log.error("请求异常: {}", e.getMessage(), e);
return result;
}
return result;
}
@Override
public String getSnap(Integer timeoutSec, Integer expireSec) {
String url = String.format("rtmp://%s/%s/%s",zlmConfig.getRtmp(),zlmConfig.getApp(),zlmConfig.getStream());
String apiUrl = String.format("%s%s?secret=%s&url=%s&timeout_sec=%s&expire_sec=%s",
zlmConfig.getApiUrl(),
zlmConfig.getSnapUrl(),
zlmConfig.getSecret(),
url,
timeoutSec,
expireSec);
try {
ResponseEntity<String> response = restTemplate.getForEntity(apiUrl, String.class);
if (response.getStatusCode().is2xxSuccessful()) {
log.info("获取截图成功: {}", response.getBody());
}
return response.getBody();
} catch (Exception e) {
log.error("请求异常: {}", e.getMessage(), e);
}
return "";
}
@Override
public Boolean setRecordSpeed(Double speed) {
Boolean result = false;
String url = String.format("%s%s?app=%s&stream=%s&type=%s&vhost=%s&secret=%s&speed=%s",
zlmConfig.getApiUrl(),
zlmConfig.getRecordSpeedUrl(),
zlmConfig.getApp(),
zlmConfig.getStream(),
zlmConfig.getType(),
zlmConfig.getVhost(),
zlmConfig.getSecret(),
speed);
try {
ResponseEntity<String> response = restTemplate.getForEntity(url, String.class);
if (response.getStatusCode().is2xxSuccessful()) {
Map<String, Object> resultMap = objectMapper.readValue(response.getBody(), Map.class);
result = (Boolean) resultMap.get("result");
log.info("设置录制速度成功: {}", result);
}
} catch (Exception e) {
log.error("请求异常: {}", e.getMessage(), e);
return result;
}
return result;
}
@Override
public Boolean seekRecordStamp(Integer stamp) {
Boolean result = false;
String url = String.format("%s%s?app=%s&stream=%s&vhost=%s&secret=%s&stamp=%s",
zlmConfig.getApiUrl(),
zlmConfig.getSeekRecordStampUrl(),
zlmConfig.getApp(),
zlmConfig.getStream(),
zlmConfig.getVhost(),
zlmConfig.getSecret(),
stamp);
try {
ResponseEntity<String> response = restTemplate.getForEntity(url, String.class);
if (response.getStatusCode().is2xxSuccessful()) {
Map<String, Object> resultMap = objectMapper.readValue(response.getBody(), Map.class);
result = (Boolean) resultMap.get("result");
log.info("设置录像流播放位置成功: {}", resultMap);
}
} catch (Exception e) {
log.error("请求异常: {}", e.getMessage(), e);
return result;
}
return result;
}
}

171
dk-modules/business/src/main/resources/mapper/business/BusinessAlertMapper.xml

@ -118,11 +118,51 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</select> </select>
<select id="listDepartAlert" resultType="java.util.Map"> <select id="listDepartAlert" resultType="java.util.Map">
select ba.dept_name deptName, ba.dept_id deptId,count(1) total WITH RECURSIVE districts AS (
from business_alert ba SELECT dept_id, dept_name,tenant_id FROM dk_cloud.sys_dept <where>
where 1=1 <if test="param.deptId != null and param.deptId != ''">
<include refid="searchSql"></include> parent_id = #{param.deptId}
GROUP BY ba.dept_name,ba.dept_id </if>
<if test="param.deptId == null or param.deptId == ''">
parent_id in (select dsd.dept_id from dk_cloud.sys_dept dsd where dsd.parent_id = '0')
</if>
</where>
),
sub_depts AS ( SELECT
sda.dept_id,
sda.parent_id,
sda.tenant_id
FROM
dk_cloud.sys_dept sda
WHERE
sda.parent_id IN (SELECT dd.dept_id FROM districts dd)
UNION ALL
SELECT
d.dept_id,
d.parent_id,
d.tenant_id
FROM
dk_cloud.sys_dept d
INNER JOIN sub_depts st ON d.parent_id = st.dept_id
),
warning_summary AS (
SELECT
d.parent_id AS district_id,
COUNT( ba.id ) AS total_warnings
FROM
business_alert ba
INNER JOIN sub_depts d ON ba.dept_id = d.dept_id
<include refid="searchSql"></include>
GROUP BY
d.parent_id
)
SELECT
d.dept_id deptId,
d.dept_name deptName,
COALESCE ( w.total_warnings, 0 ) AS total
FROM
districts d
LEFT JOIN warning_summary w ON d.dept_id = w.district_id
</select> </select>
<select id="listMonthAlertStatus" resultType="java.util.Map"> <select id="listMonthAlertStatus" resultType="java.util.Map">
@ -138,7 +178,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
IFNULL(COUNT(ba.id), 0) AS total, IFNULL(COUNT(ba.id), 0) AS total,
IFNULL(SUM(ba.handle_type = 'waiting'), 0) AS todoCount, IFNULL(SUM(ba.handle_type = 'waiting'), 0) AS todoCount,
IFNULL(SUM(ba.handle_type = 'finish'), 0) AS finishCount, IFNULL(SUM(ba.handle_type = 'finish'), 0) AS finishCount,
IFNULL(SUM( ba.handle_type = 'cancel' ),0) AS cancelCount IFNULL(SUM( ba.handle_type = 'invalid' ),0) AS cancelCount
FROM months m FROM months m
LEFT JOIN business_alert ba LEFT JOIN business_alert ba
ON DATE_FORMAT(ba.create_time, '%Y-%m') = DATE_FORMAT(m.dateMonth, '%Y-%m') ON DATE_FORMAT(ba.create_time, '%Y-%m') = DATE_FORMAT(m.dateMonth, '%Y-%m')
@ -148,19 +188,59 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</select> </select>
<select id="listDepartAlertStatus" resultType="java.util.Map"> <select id="listDepartAlertStatus" resultType="java.util.Map">
WITH RECURSIVE districts AS (
SELECT dept_id, dept_name,tenant_id FROM dk_cloud.sys_dept <where>
<if test="param.deptId != null and param.deptId != ''">
parent_id = #{param.deptId}
</if>
<if test="param.deptId == null or param.deptId == ''">
parent_id in (select dsd.dept_id from dk_cloud.sys_dept dsd where dsd.parent_id = '0')
</if>
</where>
),
sub_depts AS (
SELECT SELECT
ba.dept_name deptName, sda.dept_id,
ba.dept_id deptId, sda.parent_id,
count( 1 ) total, sda.tenant_id
IFNULL(SUM( handle_type = 'waiting' ),0) AS todoCount,
IFNULL(SUM( handle_type = 'finish' ),0) AS finishCount,
IFNULL(SUM( ba.handle_type = 'cancel' ),0) AS cancelCount
FROM FROM
business_alert ba dk_cloud.sys_dept sda
where 1=1 WHERE
sda.parent_id IN (SELECT dd.dept_id FROM districts dd)
UNION ALL
SELECT
d.dept_id,
d.parent_id,
d.tenant_id
FROM
dk_cloud.sys_dept d
INNER JOIN sub_depts st ON d.parent_id = st.dept_id
),
warning_summary AS (
SELECT
d.parent_id AS district_id,
COUNT(ba.id) AS total_warnings,
IFNULL(SUM(handle_type = 'waiting'), 0) AS todoCount,
IFNULL(SUM(handle_type = 'finish'), 0) AS finishCount,
IFNULL(SUM(ba.handle_type = 'invalid'), 0) AS cancelCount
FROM
business_alert ba
INNER JOIN sub_depts d ON ba.dept_id = d.dept_id
AND ba.handle_type != 'verify'
<include refid="searchSql"></include> <include refid="searchSql"></include>
GROUP BY GROUP BY
ba.dept_name,ba.dept_id d.parent_id
)
SELECT
d.dept_id deptId,
d.dept_name deptName,
IFNULL(w.total_warnings, 0) AS total,
IFNULL(w.todoCount, 0) AS todoCount,
IFNULL(w.finishCount, 0) AS finishCount,
IFNULL(w.cancelCount, 0) AS cancelCount
FROM
districts d
LEFT JOIN warning_summary w ON d.dept_id = w.district_id
</select> </select>
<select id="countAlertCompare" resultType="java.util.Map"> <select id="countAlertCompare" resultType="java.util.Map">
@ -209,7 +289,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
COUNT(DISTINCT ba.id) AS total, COUNT(DISTINCT ba.id) AS total,
IFNULL(SUM( ba.handle_type = 'waiting' ),0) AS todoCount, IFNULL(SUM( ba.handle_type = 'waiting' ),0) AS todoCount,
IFNULL(SUM( ba.handle_type = 'finish' ),0) AS finishCount, IFNULL(SUM( ba.handle_type = 'finish' ),0) AS finishCount,
IFNULL(SUM( ba.handle_type = 'cancel' ),0) AS cancelCount IFNULL(SUM( ba.handle_type = 'invalid' ),0) AS cancelCount
FROM month_department md FROM month_department md
LEFT JOIN business_alert ba LEFT JOIN business_alert ba
ON md.dept_id = ba.dept_id ON md.dept_id = ba.dept_id
@ -223,10 +303,67 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
select COUNT(DISTINCT ba.id) AS total, select COUNT(DISTINCT ba.id) AS total,
IFNULL(SUM( ba.handle_type = 'waiting' ),0) AS todoCount, IFNULL(SUM( ba.handle_type = 'waiting' ),0) AS todoCount,
IFNULL(SUM( ba.handle_type = 'finish' ),0) AS finishCount, IFNULL(SUM( ba.handle_type = 'finish' ),0) AS finishCount,
IFNULL(SUM( ba.handle_type = 'cancel' ),0) AS cancelCount IFNULL(SUM( ba.handle_type = 'invalid' ),0) AS cancelCount
from business_alert ba from business_alert ba
where 1=1 where 1=1
<include refid="searchSql"></include> <include refid="searchSql"></include>
</select> </select>
<select id="countAlertTypeCompare" resultType="java.util.Map">
WITH RECURSIVE months AS (
SELECT LAST_DAY(
IFNULL(
MAKEDATE(#{param.year}, 1),
DATE_SUB(NOW(), INTERVAL 11 MONTH)
)
) AS dateMonth
UNION ALL
SELECT LAST_DAY(DATE_ADD(dateMonth, INTERVAL 1 MONTH))
FROM months
WHERE <![CDATA[ dateMonth < LAST_DAY(
IFNULL(
MAKEDATE(#{param.year}, 1) + INTERVAL 11 MONTH,
NOW()
)
)]]>
),
param_departments AS (
SELECT dept_id, dept_name,tenant_id
FROM business_alert
WHERE dept_id IN
<foreach collection="param.deptIdList" open="(" close=")" separator="," item="item">
#{item}
</foreach>
),
month_department AS (
SELECT d.dept_id, m.dateMonth, d.dept_name,d.tenant_id
FROM param_departments d
CROSS JOIN months m
<where>
<if test="param.dateList != null and param.dateList.size > 0">
DATE_FORMAT(m.dateMonth, '%Y-%m') IN
<foreach collection="param.dateList" open="(" close=")" separator="," item="item">
#{item}
</foreach>
</if>
</where>
)
SELECT
md.dept_id deptId,
md.dept_name deptName,
DATE_FORMAT(md.dateMonth, '%Y-%m') AS date,
COUNT(DISTINCT ba.id) AS total,
IFNULL(SUM( ba.alert_type = 'illegal_land' ),0) AS landCount,
IFNULL(SUM( ba.alert_type = 'illegal_construction' ),0) AS constructionCount,
IFNULL(SUM( ba.alert_type = 'other' ),0) AS otherCount
FROM month_department md
LEFT JOIN business_alert ba
ON md.dept_id = ba.dept_id
AND DATE_FORMAT(ba.create_time, '%Y-%m') = DATE_FORMAT(md.dateMonth, '%Y-%m')
AND ba.handle_type != 'verify'
AND ba.alert_type in ('illegal_land','illegal_construction','other')
GROUP BY md.dept_id, md.dateMonth, md.dept_name
ORDER BY md.dept_id, md.dateMonth
</select>
</mapper> </mapper>

55
dk-modules/business/src/main/resources/mapper/business/BusinessPatrolAreasMapper.xml

@ -1,55 +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.BusinessPatrolAreasMapper">
<resultMap id="listPatrolAreasMap" type="org.dromara.business.domain.BusinessPatrolAreas">
<result column="id" property="id" jdbcType="VARCHAR"/>
<result column="name" property="name" jdbcType="VARCHAR"/>
<result column="number" property="number" jdbcType="VARCHAR"/>
<result column="dept_id" property="deptId" jdbcType="VARCHAR"/>
<result column="dept_ids" property="deptIds" jdbcType="VARCHAR"/>
<result column="platform_type" property="platformType" jdbcType="VARCHAR"/>
<result column="dept_name" property="deptName" jdbcType="VARCHAR"/>
<result column="leader_dept_id" property="leaderDeptId" jdbcType="VARCHAR"/>
<result column="user_id" property="userId" jdbcType="VARCHAR"/>
<result column="user_name" property="userName" jdbcType="VARCHAR"/>
<result column="create_by" property="createBy" jdbcType="VARCHAR"/>
<result column="create_time" property="createTime" jdbcType="TIMESTAMP"/>
<collection column="{areaId=id}"
property="patrolAreasUsers" ofType="org.dromara.business.domain.BusinessPatrolAreasUser"
javaType="java.util.ArrayList"
select="org.dromara.business.mapper.BusinessPatrolAreasUserMapper.listPatrolAreasUserByAreaId"/>
<collection column="{areaId=id}"
property="patrolAreasPoints" ofType="org.dromara.business.domain.BusinessPatrolAreasPoints"
javaType="java.util.ArrayList"
select="org.dromara.business.mapper.BusinessPatrolAreasPointsMapper.listPatrolAreasPointByAreaId"/>
</resultMap>
<select id="listPatrolAreas" resultMap="listPatrolAreasMap">
select pa.*,sd.dept_name as dept_name from business_patrol_areas pa
LEFT JOIN dk_cloud.sys_dept sd ON pa.dept_id = sd.dept_id
where
pa.del_flag = 0
<if test="deptIds.size > 0">
and pa.dept_id in
<foreach item="id" collection="deptIds" open="(" separator="," close=")">
#{id}
</foreach>
</if>
<if test="condition.name != null and condition.name != ''">
and pa.name LIKE concat(concat('%',#{condition.name}),'%')
</if>
<if test="condition.platformType != null and condition.platformType != ''">
AND pa.id IN (
SELECT api.patrol_areas_id
FROM business_patrol_areas_platform_info api
WHERE api.platform_type = 'plough'
)
</if>
<if test="condition.name != null and condition.name != ''">
and pa.name LIKE concat(concat('%',#{condition.name}),'%')
</if>
<if test="condition.isDisable != null and condition.isDisable != ''">
and pa.is_disable =#{condition.isDisable}
</if>
</select>
</mapper>

5
dk-modules/resource/src/main/java/org/dromara/resource/controller/SysOssController.java

@ -45,7 +45,6 @@ public class SysOssController extends BaseController {
/** /**
* 查询OSS对象存储列表 * 查询OSS对象存储列表
*/ */
@SaCheckPermission("system:oss:list")
@GetMapping("/list") @GetMapping("/list")
@Operation(summary = "查询OSS对象存储列表",description = "查询OSS对象存储列表") @Operation(summary = "查询OSS对象存储列表",description = "查询OSS对象存储列表")
public TableDataInfo<SysOssVo> list(@Validated(QueryGroup.class) SysOssBo bo, PageQuery pageQuery) { public TableDataInfo<SysOssVo> list(@Validated(QueryGroup.class) SysOssBo bo, PageQuery pageQuery) {
@ -57,7 +56,6 @@ public class SysOssController extends BaseController {
* *
* @param ossIds OSS对象ID串 * @param ossIds OSS对象ID串
*/ */
@SaCheckPermission("system:oss:list")
@GetMapping("/listByIds/{ossIds}") @GetMapping("/listByIds/{ossIds}")
@Operation(summary = "查询OSS对象基于id串",description = "查询OSS对象基于id串") @Operation(summary = "查询OSS对象基于id串",description = "查询OSS对象基于id串")
public R<List<SysOssVo>> listByIds(@NotEmpty(message = "主键不能为空") @PathVariable Long[] ossIds) { public R<List<SysOssVo>> listByIds(@NotEmpty(message = "主键不能为空") @PathVariable Long[] ossIds) {
@ -70,7 +68,6 @@ public class SysOssController extends BaseController {
* *
* @param file 文件 * @param file 文件
*/ */
@SaCheckPermission("system:oss:upload")
@Log(title = "OSS对象存储", businessType = BusinessType.INSERT) @Log(title = "OSS对象存储", businessType = BusinessType.INSERT)
@PostMapping(value = "/upload", consumes = MediaType.MULTIPART_FORM_DATA_VALUE) @PostMapping(value = "/upload", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
@Operation(summary = "上传OSS对象存储",description = "上传OSS对象存储") @Operation(summary = "上传OSS对象存储",description = "上传OSS对象存储")
@ -91,7 +88,6 @@ public class SysOssController extends BaseController {
* *
* @param ossId OSS对象ID * @param ossId OSS对象ID
*/ */
@SaCheckPermission("system:oss:download")
@GetMapping("/download/{ossId}") @GetMapping("/download/{ossId}")
@Operation(summary = "下载OSS对象存储",description = "下载OSS对象存储") @Operation(summary = "下载OSS对象存储",description = "下载OSS对象存储")
public void download(@PathVariable Long ossId, HttpServletResponse response) throws IOException { public void download(@PathVariable Long ossId, HttpServletResponse response) throws IOException {
@ -103,7 +99,6 @@ public class SysOssController extends BaseController {
* *
* @param ossIds OSS对象ID串 * @param ossIds OSS对象ID串
*/ */
@SaCheckPermission("system:oss:remove")
@Log(title = "OSS对象存储", businessType = BusinessType.DELETE) @Log(title = "OSS对象存储", businessType = BusinessType.DELETE)
@DeleteMapping("/{ossIds}") @DeleteMapping("/{ossIds}")
@Operation(summary = "删除OSS对象存储",description = "删除OSS对象存储") @Operation(summary = "删除OSS对象存储",description = "删除OSS对象存储")

27
dk-modules/system/pom.xml

@ -104,6 +104,33 @@
<artifactId>api-resource</artifactId> <artifactId>api-resource</artifactId>
</dependency> </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> </dependencies>
<build> <build>

24
dk-modules/business/src/main/java/org/dromara/business/controller/BusinessDepartBoundaryController.java → dk-modules/system/src/main/java/org/dromara/system/controller/system/SysDepartBoundaryController.java

@ -1,16 +1,16 @@
package org.dromara.business.controller; package org.dromara.system.controller.system;
import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag; import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.dromara.business.domain.BusinessDepartBoundary; import org.dromara.system.domain.SysDepartBoundary ;
import org.dromara.business.service.IBusinessDepartBoundaryService;
import org.dromara.common.core.domain.R; import org.dromara.common.core.domain.R;
import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.web.core.BaseController; import org.dromara.common.web.core.BaseController;
import org.dromara.system.service.ISysDepartBoundaryService;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
@ -22,9 +22,9 @@ import org.springframework.web.multipart.MultipartFile;
@RequestMapping("/depart/boundary") @RequestMapping("/depart/boundary")
@Slf4j @Slf4j
@RequiredArgsConstructor @RequiredArgsConstructor
public class BusinessDepartBoundaryController extends BaseController { public class SysDepartBoundaryController extends BaseController {
private final IBusinessDepartBoundaryService departBoundaryService; private final ISysDepartBoundaryService departBoundaryService;
/** /**
@ -34,7 +34,7 @@ public class BusinessDepartBoundaryController extends BaseController {
*/ */
@Operation(summary ="查询部门的地理位置",description = "查询部门的地理位置") @Operation(summary ="查询部门的地理位置",description = "查询部门的地理位置")
@GetMapping(value = "/listJson") @GetMapping(value = "/listJson")
public R<String> listJson(BusinessDepartBoundary departBoundary) { public R<String> listJson(SysDepartBoundary departBoundary) {
String listJson = departBoundaryService.listJson(departBoundary); String listJson = departBoundaryService.listJson(departBoundary);
return R.ok("查询成功!",listJson); return R.ok("查询成功!",listJson);
} }
@ -46,7 +46,7 @@ public class BusinessDepartBoundaryController extends BaseController {
*/ */
@Operation(summary ="查询部门区域列表",description = "查询部门区域列表") @Operation(summary ="查询部门区域列表",description = "查询部门区域列表")
@RequestMapping(value = "/page", method = RequestMethod.GET) @RequestMapping(value = "/page", method = RequestMethod.GET)
public TableDataInfo<BusinessDepartBoundary> queryPageList(BusinessDepartBoundary departBoundary, PageQuery pageQuery) { public TableDataInfo<SysDepartBoundary> queryPageList(SysDepartBoundary departBoundary, PageQuery pageQuery) {
return departBoundaryService.listSysDepartBoundary(pageQuery, departBoundary); return departBoundaryService.listSysDepartBoundary(pageQuery, departBoundary);
} }
@ -57,8 +57,8 @@ public class BusinessDepartBoundaryController extends BaseController {
*/ */
@Operation(summary ="批量新增部门区域",description = "批量新增部门区域") @Operation(summary ="批量新增部门区域",description = "批量新增部门区域")
@RequestMapping(value = "/upload", method = RequestMethod.POST) @RequestMapping(value = "/upload", method = RequestMethod.POST)
public R<Void> uploadShpFile(@RequestParam("file") MultipartFile file) { public R<Void> uploadShpFile(@RequestParam("file") MultipartFile file,@RequestParam("areaType") Integer areaType) {
return toAjax(departBoundaryService.uploadShpFile(file)); return toAjax(departBoundaryService.uploadShpFile(file,areaType));
} }
/** /**
@ -69,7 +69,7 @@ public class BusinessDepartBoundaryController extends BaseController {
*/ */
@Operation(summary ="编辑部门区域",description = "编辑部门区域") @Operation(summary ="编辑部门区域",description = "编辑部门区域")
@RequestMapping(value = "/update", method = RequestMethod.POST) @RequestMapping(value = "/update", method = RequestMethod.POST)
public R<Void> updateDepartBoundary(@RequestBody BusinessDepartBoundary departBoundary) { public R<Void> updateDepartBoundary(@RequestBody SysDepartBoundary departBoundary) {
return toAjax(departBoundaryService.updateDepartBoundary(departBoundary)); return toAjax(departBoundaryService.updateDepartBoundary(departBoundary));
} }
@ -85,4 +85,8 @@ public class BusinessDepartBoundaryController extends BaseController {
public R<Void> deleteDepartBoundary(@RequestParam(name = "id") String id) { public R<Void> deleteDepartBoundary(@RequestParam(name = "id") String id) {
return toAjax(departBoundaryService.deleteDepartBoundary(id)); return toAjax(departBoundaryService.deleteDepartBoundary(id));
} }
} }

15
dk-modules/business/src/main/java/org/dromara/business/domain/BusinessDepartBoundary.java → dk-modules/system/src/main/java/org/dromara/system/domain/SysDepartBoundary.java

@ -1,4 +1,4 @@
package org.dromara.business.domain; package org.dromara.system.domain;
import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
@ -6,7 +6,6 @@ import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import org.dromara.common.mybatis.core.domain.BaseEntity; import org.dromara.common.mybatis.core.domain.BaseEntity;
import org.jeecgframework.poi.excel.annotation.Excel;
import java.io.Serial; import java.io.Serial;
@ -15,8 +14,8 @@ import java.io.Serial;
*/ */
@Data @Data
@EqualsAndHashCode(callSuper = true) @EqualsAndHashCode(callSuper = true)
@TableName("business_depart_boundary") @TableName("sys_depart_boundary")
public class BusinessDepartBoundary extends BaseEntity { public class SysDepartBoundary extends BaseEntity {
@Serial @Serial
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
@ -33,14 +32,14 @@ public class BusinessDepartBoundary extends BaseEntity {
/**机构ID*/ /**机构ID*/
private String deptId; private String deptId;
/**机构/部门名称*/ /**机构/部门名称*/
@Excel(name="机构/部门名称",width=15)
private String deptName; private String deptName;
/**是否显示0显示,1不显示*/ /**是否显示0显示,1不显示*/
private Integer type; private Integer type;
/**边界*/
/**边界*/
private String communityName; private String communityName;
/**边界*/ /**边界*/
private String boundary; private String boundary;
@ -65,9 +64,9 @@ public class BusinessDepartBoundary extends BaseEntity {
private String shpNo; private String shpNo;
/** /**
* 0不为村级别1为村级 * 区域类
*/ */
private Integer villageType; private Integer areaType;
/**删除状态(0,正常,1已删除)*/ /**删除状态(0,正常,1已删除)*/
private String delFlag; private String delFlag;

6
dk-modules/business/src/main/java/org/dromara/business/domain/BusinessGeospatialVectors.java → dk-modules/system/src/main/java/org/dromara/system/domain/SysGeospatialVectors.java

@ -1,4 +1,4 @@
package org.dromara.business.domain; package org.dromara.system.domain;
import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.IdType;
@ -14,10 +14,10 @@ import java.util.Date;
*存储解析的shp的矢量数据 *存储解析的shp的矢量数据
*/ */
@Data @Data
@TableName("business_geospatial_vectors") @TableName("sys_geospatial_vectors")
@EqualsAndHashCode(callSuper = false) @EqualsAndHashCode(callSuper = false)
@Accessors(chain = true) @Accessors(chain = true)
public class BusinessGeospatialVectors { public class SysGeospatialVectors {
/** /**
* ID * ID

9
dk-modules/business/src/main/java/org/dromara/business/domain/BusinessVectorDict.java → dk-modules/system/src/main/java/org/dromara/system/domain/SysVectorDict.java

@ -1,4 +1,4 @@
package org.dromara.business.domain; package org.dromara.system.domain;
import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableField;
@ -7,6 +7,7 @@ import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors; import lombok.experimental.Accessors;
import org.dromara.common.mybatis.core.domain.BaseEntity; import org.dromara.common.mybatis.core.domain.BaseEntity;
import java.util.List; import java.util.List;
@ -15,10 +16,10 @@ import java.util.List;
* 矢量数据字段映射主表 * 矢量数据字段映射主表
*/ */
@Data @Data
@TableName("Business_vector_dict") @TableName("sys_vector_dict")
@EqualsAndHashCode(callSuper = false) @EqualsAndHashCode(callSuper = false)
@Accessors(chain = true) @Accessors(chain = true)
public class BusinessVectorDict extends BaseEntity { public class SysVectorDict extends BaseEntity {
/** /**
* *
@ -42,6 +43,6 @@ public class BusinessVectorDict extends BaseEntity {
private String dictName; private String dictName;
@TableField(exist = false) @TableField(exist = false)
private List<BusinessVectorDictItem> fieldMappingsList; private List<SysVectorDictItem> fieldMappingsList;
} }

6
dk-modules/business/src/main/java/org/dromara/business/domain/BusinessVectorDictItem.java → dk-modules/system/src/main/java/org/dromara/system/domain/SysVectorDictItem.java

@ -1,4 +1,4 @@
package org.dromara.business.domain; package org.dromara.system.domain;
import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
@ -12,10 +12,10 @@ import org.dromara.common.mybatis.core.domain.BaseEntity;
* 矢量数据字段映射关联表 * 矢量数据字段映射关联表
*/ */
@Data @Data
@TableName("Business_vector_dict_item") @TableName("sys_vector_dict_item")
@EqualsAndHashCode(callSuper = false) @EqualsAndHashCode(callSuper = false)
@Accessors(chain = true) @Accessors(chain = true)
public class BusinessVectorDictItem extends BaseEntity { public class SysVectorDictItem extends BaseEntity {
/** /**
* *

28
dk-modules/system/src/main/java/org/dromara/system/mapper/SysDepartBoundaryMapper.java

@ -0,0 +1,28 @@
package org.dromara.system.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.apache.ibatis.annotations.Param;
import org.dromara.system.domain.SysDepartBoundary;
import java.util.List;
/**
* 部门 Mapper 接口
*/
public interface SysDepartBoundaryMapper extends BaseMapper<SysDepartBoundary> {
Page<SysDepartBoundary> listSysDepartBoundary(Page<SysDepartBoundary> page,@Param("condition") SysDepartBoundary sysDepartBoundary);
List<SysDepartBoundary> listSysDepartBoundaryGeomFromText(@Param("condition") SysDepartBoundary sysDepartBoundary);
/**
* 通过部门编码获取部门边界数据
* @param deptId 部门编码
* @return String
*/
List<SysDepartBoundary> queryByDeptId(@Param("deptId") String deptId);
void saveBatchBoundary(@Param("list") List<SysDepartBoundary> boundaryList);
String listJson(@Param("param") SysDepartBoundary departBoundary);
}

8
dk-modules/system/src/main/java/org/dromara/system/mapper/SysVectorDictItemMapper.java

@ -0,0 +1,8 @@
package org.dromara.system.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.dromara.system.domain.SysVectorDictItem;
public interface SysVectorDictItemMapper extends BaseMapper<SysVectorDictItem> {
}

10
dk-modules/system/src/main/java/org/dromara/system/mapper/SysVectorDictMapper.java

@ -0,0 +1,10 @@
package org.dromara.system.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.dromara.system.domain.SysVectorDict;
import java.util.List;
public interface SysVectorDictMapper extends BaseMapper<SysVectorDict> {
List<SysVectorDict> listVectorField();
}

30
dk-modules/system/src/main/java/org/dromara/system/service/ISysDepartBoundaryService.java

@ -0,0 +1,30 @@
package org.dromara.system.service;
import com.baomidou.mybatisplus.extension.service.IService;
import org.dromara.system.domain.SysDepartBoundary;
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;
/**
* 部门区域 服务实现类
*/
public interface ISysDepartBoundaryService extends IService<SysDepartBoundary>{
TableDataInfo<SysDepartBoundary> listSysDepartBoundary(PageQuery page, SysDepartBoundary departBoundary);
List<SysDepartBoundary> listSysDepartBoundaryGeomFromText(SysDepartBoundary departBoundary);
List<SysDepartBoundary> queryByDeptId(String deptId);
boolean uploadShpFile(MultipartFile file,Integer areaType);
boolean deleteDepartBoundary(String id);
boolean updateDepartBoundary(SysDepartBoundary departBoundary);
boolean addDepartBoundary(SysDepartBoundary departBoundary);
String listJson(SysDepartBoundary departBoundary);
}

12
dk-modules/system/src/main/java/org/dromara/system/service/ISysVectorDictItemService.java

@ -0,0 +1,12 @@
package org.dromara.system.service;
import org.dromara.system.domain.SysVectorDictItem;
import java.util.List;
public interface ISysVectorDictItemService {
List<SysVectorDictItem> findDictItemByDictId(String dictId);
}

14
dk-modules/system/src/main/java/org/dromara/system/service/ISysVectorDictService.java

@ -0,0 +1,14 @@
package org.dromara.system.service;
import org.dromara.system.domain.SysVectorDict;
import java.util.List;
public interface ISysVectorDictService {
List<SysVectorDict> listVectorField();
SysVectorDict findVectorDictById(String dictId);
}

78
dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessDepartBoundaryServiceImpl.java → dk-modules/system/src/main/java/org/dromara/system/service/impl/SysDepartBoundaryServiceImpl.java

@ -1,41 +1,29 @@
package org.dromara.business.service.impl; package org.dromara.system.service.impl;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.toolkit.StringUtils; import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.apache.dubbo.config.annotation.DubboReference; import org.apache.dubbo.config.annotation.DubboReference;
import org.dromara.business.domain.BusinessDepartBoundary; import org.dromara.system.domain.SysDepartBoundary;
import org.dromara.business.domain.BusinessGeospatialVectors; import org.dromara.system.domain.SysGeospatialVectors;
import org.dromara.business.domain.BusinessPatrolAreas; import org.dromara.system.domain.SysVectorDict;
import org.dromara.business.domain.BusinessVectorDict; import org.dromara.system.mapper.SysDepartBoundaryMapper;
import org.dromara.business.mapper.BusinessDepartBoundaryMapper; import org.dromara.system.service.ISysDepartBoundaryService;
import org.dromara.business.service.IBusinessDepartBoundaryService; import org.dromara.system.service.ISysVectorDictService;
import org.dromara.business.service.IBusinessVectorDictService; import org.dromara.system.utils.BatchProcessorUtil;
import org.dromara.business.utils.BatchProcessorUtil; import org.dromara.system.utils.ShpAnalysisUtil;
import org.dromara.business.utils.ShpAnalysisUtil;
import org.dromara.common.core.exception.ServiceException; import org.dromara.common.core.exception.ServiceException;
import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.mybatis.core.page.TableDataInfo; 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.RemoteDeptService;
import org.dromara.system.api.model.LoginUser;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.datasource.DataSourceUtils;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
import javax.sql.DataSource;
import java.io.IOException;
import java.io.InputStream; import java.io.InputStream;
import java.lang.reflect.Method; import java.lang.reflect.Method;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
@ -47,42 +35,40 @@ import java.util.stream.Collectors;
*/ */
@Service @Service
@RequiredArgsConstructor @RequiredArgsConstructor
public class BusinessDepartBoundaryServiceImpl extends ServiceImpl<BusinessDepartBoundaryMapper, BusinessDepartBoundary> implements IBusinessDepartBoundaryService { public class SysDepartBoundaryServiceImpl extends ServiceImpl<SysDepartBoundaryMapper, SysDepartBoundary> implements ISysDepartBoundaryService {
private final IBusinessVectorDictService vectorDictService; private final ISysVectorDictService vectorDictService;
@DubboReference @DubboReference
RemoteDeptService remoteDeptService; RemoteDeptService remoteDeptService;
private final DataSource dataSource;
@Override @Override
public TableDataInfo<BusinessDepartBoundary> listSysDepartBoundary(PageQuery pageQuery, BusinessDepartBoundary departBoundary) { public TableDataInfo<SysDepartBoundary> listSysDepartBoundary(PageQuery pageQuery, SysDepartBoundary departBoundary) {
Page<BusinessDepartBoundary> page = baseMapper.listSysDepartBoundary(pageQuery.build(),departBoundary); Page<SysDepartBoundary> page = baseMapper.listSysDepartBoundary(pageQuery.build(),departBoundary);
return TableDataInfo.build(page); return TableDataInfo.build(page);
} }
@Override @Override
public List<BusinessDepartBoundary> listSysDepartBoundaryGeomFromText(BusinessDepartBoundary departBoundary) { public List<SysDepartBoundary> listSysDepartBoundaryGeomFromText(SysDepartBoundary departBoundary) {
return baseMapper.listSysDepartBoundaryGeomFromText(departBoundary); return baseMapper.listSysDepartBoundaryGeomFromText(departBoundary);
} }
@Override @Override
public List<BusinessDepartBoundary> queryByDeptId(String deptId) { public List<SysDepartBoundary> queryByDeptId(String deptId) {
return baseMapper.queryByDeptId(deptId); return baseMapper.queryByDeptId(deptId);
} }
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public boolean uploadShpFile(MultipartFile file) { public boolean uploadShpFile(MultipartFile file,Integer areaType) {
try { try {
List<BusinessGeospatialVectors> geospatialVectorsList = buildGeospatialVector(file); List<SysGeospatialVectors> geospatialVectorsList = buildGeospatialVector(file);
//6、生成新的对象集合存储数据表中 //6、生成新的对象集合存储数据表中
List<BusinessDepartBoundary> boundaryList = buildBusinessDepartBoundary(geospatialVectorsList); List<SysDepartBoundary> boundaryList = buildBusinessDepartBoundary(geospatialVectorsList,areaType);
// 分批处理 // 分批处理
int startIndex = 0; // 从第 0 条开始 int startIndex = 0; // 从第 0 条开始
@ -103,20 +89,20 @@ public class BusinessDepartBoundaryServiceImpl extends ServiceImpl<BusinessDepar
} }
} }
private List<BusinessGeospatialVectors> buildGeospatialVector(MultipartFile file){ private List<SysGeospatialVectors> buildGeospatialVector(MultipartFile file){
List<BusinessGeospatialVectors> geospatialVectorsList = new ArrayList<>(); List<SysGeospatialVectors> geospatialVectorsList = new ArrayList<>();
try { try {
//1、首先调用解析工具拿到解析的字段集合 //1、首先调用解析工具拿到解析的字段集合
InputStream inputStream = file.getInputStream(); InputStream inputStream = file.getInputStream();
List<Map<String, String>> mapList = ShpAnalysisUtil.analysisShpFile(inputStream); List<Map<String, String>> mapList = ShpAnalysisUtil.analysisShpFile(inputStream);
// 3. 构建字典map // 3. 构建字典map
List<BusinessVectorDict> fieldsInfoList = vectorDictService.listVectorField(); List<SysVectorDict> fieldsInfoList = vectorDictService.listVectorField();
Map<String, List<String>> dictMap = fieldsInfoList Map<String, List<String>> dictMap = fieldsInfoList
.stream() .stream()
.collect(Collectors.toMap( .collect(Collectors.toMap(
BusinessVectorDict::getDictCode, SysVectorDict::getDictCode,
v -> v.getFieldMappingsList().stream() v -> v.getFieldMappingsList().stream()
.map(mapping -> mapping.getItemValue().toLowerCase()) // 转小写 .map(mapping -> mapping.getItemValue().toLowerCase()) // 转小写
.collect(Collectors.toList()) .collect(Collectors.toList())
@ -149,12 +135,12 @@ public class BusinessDepartBoundaryServiceImpl extends ServiceImpl<BusinessDepar
// 5. 通过反射设置 GeospatialVectors 对象的属性 // 5. 通过反射设置 GeospatialVectors 对象的属性
for (Map<String, String> transformedMap : resultList) { for (Map<String, String> transformedMap : resultList) {
BusinessGeospatialVectors geoVector = new BusinessGeospatialVectors(); SysGeospatialVectors geoVector = new SysGeospatialVectors();
transformedMap.forEach((key, value) -> { transformedMap.forEach((key, value) -> {
try { try {
// 尝试通过反射找到相应的Setter方法,并调用 // 尝试通过反射找到相应的Setter方法,并调用
Method setterMethod = BusinessGeospatialVectors.class.getMethod("set" + capitalizeFirstLetter(key), String.class); Method setterMethod = SysGeospatialVectors.class.getMethod("set" + capitalizeFirstLetter(key), String.class);
setterMethod.invoke(geoVector, value); setterMethod.invoke(geoVector, value);
} catch (Exception e) { } catch (Exception e) {
@ -173,7 +159,7 @@ public class BusinessDepartBoundaryServiceImpl extends ServiceImpl<BusinessDepar
} }
@Override @Override
public boolean updateDepartBoundary(BusinessDepartBoundary departBoundary) { public boolean updateDepartBoundary(SysDepartBoundary departBoundary) {
if (ObjectUtil.isEmpty(departBoundary.getId())) { if (ObjectUtil.isEmpty(departBoundary.getId())) {
throw new ServiceException("【id】参数为空"); throw new ServiceException("【id】参数为空");
} }
@ -182,12 +168,12 @@ public class BusinessDepartBoundaryServiceImpl extends ServiceImpl<BusinessDepar
} }
@Override @Override
public boolean addDepartBoundary(BusinessDepartBoundary departBoundary) { public boolean addDepartBoundary(SysDepartBoundary departBoundary) {
return this.saveOrUpdate(departBoundary); return this.saveOrUpdate(departBoundary);
} }
@Override @Override
public String listJson(BusinessDepartBoundary departBoundary) { public String listJson(SysDepartBoundary departBoundary) {
if(StringUtils.isBlank(departBoundary.getDeptId())){ if(StringUtils.isBlank(departBoundary.getDeptId())){
throw new ServiceException("部门【id】不存在"); throw new ServiceException("部门【id】不存在");
} }
@ -197,7 +183,7 @@ public class BusinessDepartBoundaryServiceImpl extends ServiceImpl<BusinessDepar
@Override @Override
public boolean deleteDepartBoundary(String id) { public boolean deleteDepartBoundary(String id) {
BusinessDepartBoundary departBoundary = this.baseMapper.selectById(id); SysDepartBoundary departBoundary = this.baseMapper.selectById(id);
if (ObjectUtil.isEmpty(departBoundary)) { if (ObjectUtil.isEmpty(departBoundary)) {
throw new ServiceException("实体不存在!"); throw new ServiceException("实体不存在!");
@ -212,8 +198,8 @@ public class BusinessDepartBoundaryServiceImpl extends ServiceImpl<BusinessDepar
* @param geospatialVectorsList * @param geospatialVectorsList
* @return * @return
*/ */
private List<BusinessDepartBoundary> buildBusinessDepartBoundary(List<BusinessGeospatialVectors> geospatialVectorsList) { private List<SysDepartBoundary> buildBusinessDepartBoundary(List<SysGeospatialVectors> geospatialVectorsList, Integer areaType) {
List<BusinessDepartBoundary> resultList = new ArrayList<>(); List<SysDepartBoundary> resultList = new ArrayList<>();
List<Map<String,Object>> namePathList = remoteDeptService.getNamePathList(); List<Map<String,Object>> namePathList = remoteDeptService.getNamePathList();
@ -221,7 +207,7 @@ public class BusinessDepartBoundaryServiceImpl extends ServiceImpl<BusinessDepar
.collect(Collectors.groupingBy(item -> item.get("deptName").toString())); .collect(Collectors.groupingBy(item -> item.get("deptName").toString()));
geospatialVectorsList.forEach(param->{ geospatialVectorsList.forEach(param->{
BusinessDepartBoundary businessDepartBoundary = new BusinessDepartBoundary(); SysDepartBoundary businessDepartBoundary = new SysDepartBoundary();
//获取区划名称 //获取区划名称
String divisionName = param.getAdminDivisionName(); String divisionName = param.getAdminDivisionName();
@ -232,7 +218,7 @@ public class BusinessDepartBoundaryServiceImpl extends ServiceImpl<BusinessDepar
businessDepartBoundary.setDeptName(objectMap.get("deptName") + ""); businessDepartBoundary.setDeptName(objectMap.get("deptName") + "");
businessDepartBoundary.setDeptId(objectMap.get("deptId") + ""); businessDepartBoundary.setDeptId(objectMap.get("deptId") + "");
businessDepartBoundary.setCommunityName(objectMap.get("namePath") + ""); businessDepartBoundary.setCommunityName(objectMap.get("namePath") + "");
businessDepartBoundary.setAreaType(areaType);
resultList.add(businessDepartBoundary); resultList.add(businessDepartBoundary);
} }
}); });

28
dk-modules/system/src/main/java/org/dromara/system/service/impl/SysVectorDictItemServiceImpl.java

@ -0,0 +1,28 @@
package org.dromara.system.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.dromara.system.domain.SysVectorDictItem;
import org.dromara.system.mapper.SysVectorDictItemMapper;
import org.dromara.system.service.ISysVectorDictItemService;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* 矢量数据字段映射关联服务类
*/
@Service
public class SysVectorDictItemServiceImpl extends ServiceImpl<SysVectorDictItemMapper, SysVectorDictItem> implements ISysVectorDictItemService {
@Override
public List<SysVectorDictItem> findDictItemByDictId(String dictId) {
LambdaQueryWrapper<SysVectorDictItem> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(SysVectorDictItem::getDictId, dictId);
return this.baseMapper.selectList(wrapper);
}
}

37
dk-modules/system/src/main/java/org/dromara/system/service/impl/SysVectorDictServiceImpl.java

@ -0,0 +1,37 @@
package org.dromara.system.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.system.domain.SysVectorDict;
import org.dromara.system.mapper.SysVectorDictMapper;
import org.dromara.system.service.ISysVectorDictService;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* 矢量数据字段映射主表服务类
*/
@Service
public class SysVectorDictServiceImpl extends ServiceImpl<SysVectorDictMapper, SysVectorDict> implements ISysVectorDictService {
@Override
public List<SysVectorDict> listVectorField() {
return this.baseMapper.listVectorField();
}
@Override
public SysVectorDict findVectorDictById(String dictId) {
if (ObjectUtil.isEmpty(dictId)){
throw new RuntimeException("【dictId】为空,参数为空!");
}
LambdaQueryWrapper<SysVectorDict> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(SysVectorDict::getId, dictId);
return this.baseMapper.selectOne(wrapper);
}
}

39
dk-modules/system/src/main/java/org/dromara/system/utils/BatchProcessorUtil.java

@ -0,0 +1,39 @@
package org.dromara.system.utils;
import java.util.List;
import java.util.function.Consumer;
/**
* 分批处理工具类
*/
public class BatchProcessorUtil {
/**
* 分批处理数据
*
* @param dataList 数据集合
* @param batchSize 每批处理的数据量
* @param startIndex 起始位置
* @param batchHandler 每批数据的处理逻辑
* @return 下一次的起始位置
*/
public static <T> boolean processBatches(List<T> dataList, int batchSize, int startIndex, Consumer<List<T>> batchHandler) {
if (dataList == null || dataList.isEmpty()) {
return true; // 数据为空,直接返回当前起始位置
}
int totalSize = dataList.size();
while (startIndex < totalSize) {
int endIndex = Math.min(startIndex + batchSize, totalSize);
List<T> batch = dataList.subList(startIndex, endIndex);
// 处理当前批次的数据
batchHandler.accept(batch);
// 更新起始位置
startIndex = endIndex;
}
return startIndex >= totalSize; // 返回下一次的起始位置
}
}

2
dk-modules/business/src/main/java/org/dromara/business/utils/ShpAnalysisUtil.java → dk-modules/system/src/main/java/org/dromara/system/utils/ShpAnalysisUtil.java

@ -1,4 +1,4 @@
package org.dromara.business.utils; package org.dromara.system.utils;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
import org.geotools.data.FileDataStore; import org.geotools.data.FileDataStore;

26
dk-modules/business/src/main/resources/mapper/business/BusinessDepartBoundaryMapper.xml → dk-modules/system/src/main/resources/mapper/system/SysDepartBoundaryMapper.xml

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?> <?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"> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.dromara.business.mapper.BusinessDepartBoundaryMapper"> <mapper namespace="org.dromara.system.mapper.SysDepartBoundaryMapper">
<select id="listSysDepartBoundary" resultType="org.dromara.business.domain.BusinessDepartBoundary"> <select id="listSysDepartBoundary" resultType="org.dromara.system.domain.SysDepartBoundary">
SELECT SELECT
db.id, db.id,
db.dept_id, db.dept_id,
@ -14,8 +14,8 @@
db.create_by, db.create_by,
db.create_time db.create_time
FROM FROM
business_depart_boundary db sys_depart_boundary db
LEft JOIN dk_cloud.sys_dept d on db.dept_id = d.dept_id LEft JOIN sys_dept d on db.dept_id = d.dept_id
<where> <where>
<if test="condition.deptId != null and condition.deptId != ''"> <if test="condition.deptId != null and condition.deptId != ''">
and (db.dept_id = #{condition.deptId} or d.parent_id = #{condition.deptId}) and (db.dept_id = #{condition.deptId} or d.parent_id = #{condition.deptId})
@ -28,7 +28,7 @@
</select> </select>
<select id="listSysDepartBoundaryGeomFromText" resultType="org.dromara.business.domain.BusinessDepartBoundary"> <select id="listSysDepartBoundaryGeomFromText" resultType="org.dromara.system.domain.SysDepartBoundary">
SELECT SELECT
db.id, db.id,
db.dept_id, db.dept_id,
@ -41,8 +41,8 @@
db.create_by, db.create_by,
db.create_time db.create_time
FROM FROM
business_depart_boundary db sys_depart_boundary db
LEft JOIN dk_cloud.sys_dept d on db.dept_id = d.dept_id LEft JOIN sys_dept d on db.dept_id = d.dept_id
<where> <where>
<if test="condition.deptId != null and condition.deptId != ''"> <if test="condition.deptId != null and condition.deptId != ''">
and (db.dept_id = #{condition.deptId} or d.parent_id = #{condition.deptId}) and (db.dept_id = #{condition.deptId} or d.parent_id = #{condition.deptId})
@ -57,7 +57,7 @@
</select> </select>
<select id="queryByDeptId" resultType="org.dromara.business.domain.BusinessDepartBoundary"> <select id="queryByDeptId" resultType="org.dromara.system.domain.SysDepartBoundary">
SELECT SELECT
db.id, db.id,
db.dept_id, db.dept_id,
@ -70,13 +70,13 @@
db.create_by, db.create_by,
db.create_time db.create_time
FROM FROM
business_depart_boundary db sys_depart_boundary db
LEft JOIN dk_cloud.sys_dept d on db.dept_id = d.dept_id LEft JOIN sys_dept d on db.dept_id = d.dept_id
WHERE d.id = #{deptId} WHERE d.id = #{deptId}
</select> </select>
<insert id="saveBatchBoundary"> <insert id="saveBatchBoundary">
INSERT INTO business_depart_boundary ( INSERT INTO sys_depart_boundary (
dept_id, dept_id,
dept_name, dept_name,
community_name, community_name,
@ -138,8 +138,8 @@
) )
) AS landCategoriesJson ) AS landCategoriesJson
FROM FROM
business_depart_boundary l sys_depart_boundary l
LEFT JOIN dk_cloud.sys_dept d ON l.dept_id = d.dept_id LEFT JOIN sys_dept d ON l.dept_id = d.dept_id
WHERE WHERE
d.dept_id = #{param.deptId} d.dept_id = #{param.deptId}
</select> </select>

2
dk-modules/business/src/main/resources/mapper/business/BusinessVectorDictItemMapper.xml → dk-modules/system/src/main/resources/mapper/system/SysVectorDictItemMapper.xml

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

10
dk-modules/business/src/main/resources/mapper/business/BusinessVectorDictMapper.xml → dk-modules/system/src/main/resources/mapper/system/SysVectorDictMapper.xml

@ -1,11 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?> <?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"> <!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"> <mapper namespace="org.dromara.system.mapper.SysVectorDictMapper">
<resultMap id="fieldResultMap" type="org.dromara.business.domain.BusinessVectorDict"> <resultMap id="fieldResultMap" type="org.dromara.system.domain.SysVectorDict">
<id property="id" column="id"/> <id property="id" column="id"/>
<result property="dictCode" column="dictCode"/> <result property="dictCode" column="dictCode"/>
<collection property="fieldMappingsList" ofType="org.dromara.business.domain.BusinessVectorDictItem"> <collection property="fieldMappingsList" ofType="org.dromara.system.domain.SysVectorDictItem">
<result property="id" column="dictItemId"/> <result property="id" column="dictItemId"/>
<result property="itemValue" column="mappingValue"/> <result property="itemValue" column="mappingValue"/>
<result property="dictId" column="dictId"/> <result property="dictId" column="dictId"/>
@ -20,9 +20,9 @@
m.id AS dictItemId, m.id AS dictItemId,
m.item_value AS mappingValue m.item_value AS mappingValue
FROM FROM
business_vector_dict f sys_vector_dict f
LEFT JOIN LEFT JOIN
business_vector_dict_item m ON f.id = m.dict_id sys_vector_dict_item m ON f.id = m.dict_id
</select> </select>
</mapper> </mapper>

13
dk-modules/workflow/src/main/java/org/dromara/workflow/dubbo/RemoteWorkflowServiceImpl.java

@ -79,9 +79,14 @@ public class RemoteWorkflowServiceImpl implements RemoteWorkflowService {
return flwTaskService.getPermissions(); return flwTaskService.getPermissions();
} }
// @Override @Override
// public boolean completeTask(RemoteCompleteTask completeTask) { public boolean processInvalid(Long instanceId) {
// return workflowService.completeTask(completeTask); return workflowService.processInvalid(instanceId);
// } }
@Override
public boolean completeTask(RemoteCompleteTask completeTask) {
return workflowService.completeTask(completeTask);
}
} }

4
dk-modules/workflow/src/main/java/org/dromara/workflow/handler/FlwAlertHandler.java

@ -31,7 +31,7 @@ public class FlwAlertHandler implements FlwCommonHandler {
@EventListener(condition = "#processEvent.flowCode.startsWith('alert')") @EventListener(condition = "#processEvent.flowCode.startsWith('alert')")
@Override @Override
public void processHandler(ProcessEvent processEvent) { public void processHandler(ProcessEvent processEvent) {
alertService.updateAlertStatus(processEvent.getBusinessId(),processEvent.getStatus()); alertService.updateAlertStatus(processEvent.getBusinessId(),processEvent.getStatus(),processEvent.getIsIllegal(),processEvent.getAlertType());
} }
/** /**
@ -43,7 +43,7 @@ public class FlwAlertHandler implements FlwCommonHandler {
@EventListener(condition = "#processCreateTaskEvent.flowCode.startsWith('alert')") @EventListener(condition = "#processCreateTaskEvent.flowCode.startsWith('alert')")
@Override @Override
public void processCreateTaskHandler(ProcessCreateTaskEvent processCreateTaskEvent) { public void processCreateTaskHandler(ProcessCreateTaskEvent processCreateTaskEvent) {
alertService.updateAlertStatus(processCreateTaskEvent.getBusinessId(), BusinessStatusEnum.WAITING.getStatus()); alertService.updateAlertStatus(processCreateTaskEvent.getBusinessId(), BusinessStatusEnum.WAITING.getStatus(),processCreateTaskEvent.getIsIllegal(),processCreateTaskEvent.getAlertType());
} }
/** /**

7
dk-modules/workflow/src/main/java/org/dromara/workflow/service/WorkflowService.java

@ -83,4 +83,11 @@ public interface WorkflowService {
* @return 结果 * @return 结果
*/ */
boolean completeTask(RemoteCompleteTask completeTask); boolean completeTask(RemoteCompleteTask completeTask);
/**
* 作废流程
* @param instanceId
* @return
*/
boolean processInvalid(Long instanceId);
} }

13
dk-modules/workflow/src/main/java/org/dromara/workflow/service/impl/WorkflowServiceImpl.java

@ -10,6 +10,7 @@ import org.dromara.workflow.api.domain.RemoteStartProcess;
import org.dromara.workflow.api.domain.RemoteStartProcessReturn; import org.dromara.workflow.api.domain.RemoteStartProcessReturn;
import org.dromara.workflow.common.ConditionalOnEnable; import org.dromara.workflow.common.ConditionalOnEnable;
import org.dromara.workflow.domain.bo.CompleteTaskBo; import org.dromara.workflow.domain.bo.CompleteTaskBo;
import org.dromara.workflow.domain.bo.FlowInvalidBo;
import org.dromara.workflow.domain.bo.StartProcessBo; import org.dromara.workflow.domain.bo.StartProcessBo;
import org.dromara.workflow.service.IFlwDefinitionService; import org.dromara.workflow.service.IFlwDefinitionService;
import org.dromara.workflow.service.IFlwInstanceService; import org.dromara.workflow.service.IFlwInstanceService;
@ -129,4 +130,16 @@ public class WorkflowServiceImpl implements WorkflowService {
public boolean completeTask(RemoteCompleteTask completeTask) { public boolean completeTask(RemoteCompleteTask completeTask) {
return flwTaskService.completeTask(BeanUtil.toBean(completeTask, CompleteTaskBo.class)); return flwTaskService.completeTask(BeanUtil.toBean(completeTask, CompleteTaskBo.class));
} }
/**
* 作废流程
* @param instanceId
* @return
*/
@Override
public boolean processInvalid(Long instanceId) {
FlowInvalidBo flowInvalidBo = new FlowInvalidBo();
flowInvalidBo.setId(instanceId);
return flwInstanceService.processInvalid(flowInvalidBo);
}
} }

2
pom.xml

@ -86,7 +86,7 @@
<properties> <properties>
<!-- 环境标识,需要与配置文件的名称相对应 --> <!-- 环境标识,需要与配置文件的名称相对应 -->
<profiles.active>dev</profiles.active> <profiles.active>dev</profiles.active>
<nacos.server>127.0.0.1:8848</nacos.server> <nacos.server>114.235.183.147:8848</nacos.server>
<nacos.discovery.group>DEFAULT_GROUP</nacos.discovery.group> <nacos.discovery.group>DEFAULT_GROUP</nacos.discovery.group>
<nacos.config.group>DEFAULT_GROUP</nacos.config.group> <nacos.config.group>DEFAULT_GROUP</nacos.config.group>
<nacos.username>nacos</nacos.username> <nacos.username>nacos</nacos.username>

Loading…
Cancel
Save