From da022d57db787f86f44bfe387f2a118563bed70e Mon Sep 17 00:00:00 2001 From: yangwei <867012372@qq.com> Date: Fri, 28 Feb 2025 17:25:10 +0800 Subject: [PATCH 01/11] =?UTF-8?q?[feat]=E4=BF=AE=E5=A4=8D=E5=B7=A5?= =?UTF-8?q?=E4=BD=9C=E6=B5=81=E7=9B=B8=E5=85=B3=E9=80=BB=E8=BE=91&?= =?UTF-8?q?=E5=BC=80=E5=8F=91=E5=B7=A1=E6=9F=A5=E5=8C=BA=E5=9F=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dromara/system/api/RemoteDeptService.java | 2 + dk-modules/business/pom.xml | 13 ++ ...ller.java => BusinessAlertController.java} | 51 ++--- .../BusinessPatrolAreasController.java | 157 ++++++++++++++ .../{WaylineAlert.java => BusinessAlert.java} | 12 +- .../business/domain/BusinessPatrolAreas.java | 74 +++++++ .../domain/BusinessPatrolAreasPlatform.java | 54 +++++ .../domain/BusinessPatrolAreasPoints.java | 42 ++++ .../domain/BusinessPatrolAreasUser.java | 37 ++++ .../business/domain/BusinessPlatformInfo.java | 54 +++++ .../domain/BusinessPlatformInfoCode.java | 32 +++ ...ylineAlertBo.java => BusinessAlertBo.java} | 6 +- .../domain/bo/BusinessPatrolAreasBo.java | 44 ++++ .../domain/bo/BusinessPlatformInfoBo.java | 11 + ...ylineAlertVo.java => BusinessAlertVo.java} | 6 +- ...rtMapper.java => BusinessAlertMapper.java} | 8 +- .../mapper/BusinessPatrolAreasMapper.java | 22 ++ .../BusinessPatrolAreasPlatformMapper.java | 10 + .../BusinessPatrolAreasPointsMapper.java | 16 ++ .../mapper/BusinessPatrolAreasUserMapper.java | 16 ++ .../BusinessPlatformInfoCodeMapper.java | 17 ++ .../mapper/BusinessPlatformInfoMapper.java | 23 ++ ...Service.java => BusinessAlertService.java} | 23 +- .../IBusinessPatrolAreasPointsService.java | 13 ++ .../service/IBusinessPatrolAreasService.java | 25 +++ .../IBusinessPatrolAreasUserService.java | 13 ++ .../service/IBusinessPlatformInfoService.java | 9 + ...mpl.java => BusinessAlertServiceImpl.java} | 52 ++--- .../BusinessPatrolAreasPointsServiceImpl.java | 23 ++ .../impl/BusinessPatrolAreasServiceImpl.java | 203 ++++++++++++++++++ .../BusinessPatrolAreasUserServiceImpl.java | 23 ++ .../impl/BusinessPlatformInfoServiceImpl.java | 17 ++ ...lertMapper.xml => BusinessAlertMapper.xml} | 9 +- .../business/BusinessPatrolAreasMapper.xml | 55 +++++ .../BusinessPatrolAreasPlatformMapper.xml | 5 + .../BusinessPatrolAreasPointsMapper.xml | 11 + .../BusinessPatrolAreasUserMapper.xml | 9 + .../BusinessPlatformInfoCodeMapper.xml | 10 + .../business/BusinessPlatformInfoMapper.xml | 31 +++ .../system/dubbo/RemoteDeptServiceImpl.java | 8 + dk-modules/workflow/pom.xml | 5 + .../service/impl/FlwTaskServiceImpl.java | 54 ++++- 42 files changed, 1222 insertions(+), 83 deletions(-) rename dk-modules/business/src/main/java/org/dromara/business/controller/{WaylineAlertController.java => BusinessAlertController.java} (53%) create mode 100644 dk-modules/business/src/main/java/org/dromara/business/controller/BusinessPatrolAreasController.java rename dk-modules/business/src/main/java/org/dromara/business/domain/{WaylineAlert.java => BusinessAlert.java} (93%) create mode 100644 dk-modules/business/src/main/java/org/dromara/business/domain/BusinessPatrolAreas.java create mode 100644 dk-modules/business/src/main/java/org/dromara/business/domain/BusinessPatrolAreasPlatform.java create mode 100644 dk-modules/business/src/main/java/org/dromara/business/domain/BusinessPatrolAreasPoints.java create mode 100644 dk-modules/business/src/main/java/org/dromara/business/domain/BusinessPatrolAreasUser.java create mode 100644 dk-modules/business/src/main/java/org/dromara/business/domain/BusinessPlatformInfo.java create mode 100644 dk-modules/business/src/main/java/org/dromara/business/domain/BusinessPlatformInfoCode.java rename dk-modules/business/src/main/java/org/dromara/business/domain/bo/{WaylineAlertBo.java => BusinessAlertBo.java} (97%) create mode 100644 dk-modules/business/src/main/java/org/dromara/business/domain/bo/BusinessPatrolAreasBo.java create mode 100644 dk-modules/business/src/main/java/org/dromara/business/domain/bo/BusinessPlatformInfoBo.java rename dk-modules/business/src/main/java/org/dromara/business/domain/vo/{WaylineAlertVo.java => BusinessAlertVo.java} (96%) rename dk-modules/business/src/main/java/org/dromara/business/mapper/{WaylineAlertMapper.java => BusinessAlertMapper.java} (51%) create mode 100644 dk-modules/business/src/main/java/org/dromara/business/mapper/BusinessPatrolAreasMapper.java create mode 100644 dk-modules/business/src/main/java/org/dromara/business/mapper/BusinessPatrolAreasPlatformMapper.java create mode 100644 dk-modules/business/src/main/java/org/dromara/business/mapper/BusinessPatrolAreasPointsMapper.java create mode 100644 dk-modules/business/src/main/java/org/dromara/business/mapper/BusinessPatrolAreasUserMapper.java create mode 100644 dk-modules/business/src/main/java/org/dromara/business/mapper/BusinessPlatformInfoCodeMapper.java create mode 100644 dk-modules/business/src/main/java/org/dromara/business/mapper/BusinessPlatformInfoMapper.java rename dk-modules/business/src/main/java/org/dromara/business/service/{IWaylineAlertService.java => BusinessAlertService.java} (65%) create mode 100644 dk-modules/business/src/main/java/org/dromara/business/service/IBusinessPatrolAreasPointsService.java create mode 100644 dk-modules/business/src/main/java/org/dromara/business/service/IBusinessPatrolAreasService.java create mode 100644 dk-modules/business/src/main/java/org/dromara/business/service/IBusinessPatrolAreasUserService.java create mode 100644 dk-modules/business/src/main/java/org/dromara/business/service/IBusinessPlatformInfoService.java rename dk-modules/business/src/main/java/org/dromara/business/service/impl/{WaylineAlertServiceImpl.java => BusinessAlertServiceImpl.java} (57%) create mode 100644 dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessPatrolAreasPointsServiceImpl.java create mode 100644 dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessPatrolAreasServiceImpl.java create mode 100644 dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessPatrolAreasUserServiceImpl.java create mode 100644 dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessPlatformInfoServiceImpl.java rename dk-modules/business/src/main/resources/mapper/business/{WaylineAlertMapper.xml => BusinessAlertMapper.xml} (87%) create mode 100644 dk-modules/business/src/main/resources/mapper/business/BusinessPatrolAreasMapper.xml create mode 100644 dk-modules/business/src/main/resources/mapper/business/BusinessPatrolAreasPlatformMapper.xml create mode 100644 dk-modules/business/src/main/resources/mapper/business/BusinessPatrolAreasPointsMapper.xml create mode 100644 dk-modules/business/src/main/resources/mapper/business/BusinessPatrolAreasUserMapper.xml create mode 100644 dk-modules/business/src/main/resources/mapper/business/BusinessPlatformInfoCodeMapper.xml create mode 100644 dk-modules/business/src/main/resources/mapper/business/BusinessPlatformInfoMapper.xml diff --git a/dk-api/api-system/src/main/java/org/dromara/system/api/RemoteDeptService.java b/dk-api/api-system/src/main/java/org/dromara/system/api/RemoteDeptService.java index 7b5e5e6..cc90817 100644 --- a/dk-api/api-system/src/main/java/org/dromara/system/api/RemoteDeptService.java +++ b/dk-api/api-system/src/main/java/org/dromara/system/api/RemoteDeptService.java @@ -20,4 +20,6 @@ public interface RemoteDeptService { String selectDeptNameByIds(String deptIds); List selectDeptsByList(); + + RemoteDeptVo selectDeptById(Long deptId); } diff --git a/dk-modules/business/pom.xml b/dk-modules/business/pom.xml index 3d16372..e09834a 100644 --- a/dk-modules/business/pom.xml +++ b/dk-modules/business/pom.xml @@ -91,6 +91,19 @@ common-encrypt + + + org.jeecgframework + autopoi-web + 1.4.4 + + + commons-codec + commons-codec + + + + ${project.artifactId} diff --git a/dk-modules/business/src/main/java/org/dromara/business/controller/WaylineAlertController.java b/dk-modules/business/src/main/java/org/dromara/business/controller/BusinessAlertController.java similarity index 53% rename from dk-modules/business/src/main/java/org/dromara/business/controller/WaylineAlertController.java rename to dk-modules/business/src/main/java/org/dromara/business/controller/BusinessAlertController.java index 0dc2d35..accfecd 100644 --- a/dk-modules/business/src/main/java/org/dromara/business/controller/WaylineAlertController.java +++ b/dk-modules/business/src/main/java/org/dromara/business/controller/BusinessAlertController.java @@ -4,9 +4,9 @@ import jakarta.servlet.http.HttpServletResponse; import jakarta.validation.constraints.NotEmpty; import jakarta.validation.constraints.NotNull; import lombok.RequiredArgsConstructor; -import org.dromara.business.domain.bo.WaylineAlertBo; -import org.dromara.business.domain.vo.WaylineAlertVo; -import org.dromara.business.service.IWaylineAlertService; +import org.dromara.business.domain.bo.BusinessAlertBo; +import org.dromara.business.domain.vo.BusinessAlertVo; +import org.dromara.business.service.BusinessAlertService; import org.dromara.common.core.domain.R; import org.dromara.common.core.validate.AddGroup; import org.dromara.common.core.validate.EditGroup; @@ -31,17 +31,18 @@ import java.util.List; @Validated @RequiredArgsConstructor @RestController -@RequestMapping("/alert/task") -public class WaylineAlertController extends BaseController { +@RequestMapping +public class BusinessAlertController extends BaseController { - private final IWaylineAlertService waylineAlertService; + + private final BusinessAlertService businessAlertService; /** * 查询预警任务列表 */ - @GetMapping("/page") - public TableDataInfo pageWaylineAlert(WaylineAlertBo bo, PageQuery pageQuery) { - return waylineAlertService.pageWaylineAlert(bo, pageQuery); + @GetMapping("/alert/page") + public TableDataInfo pageBusinessAlert(BusinessAlertBo bo, PageQuery pageQuery) { + return businessAlertService.pageBusinessAlert(bo, pageQuery); } /** @@ -49,10 +50,10 @@ public class WaylineAlertController extends BaseController { * * @param alertId 主键 */ - @GetMapping("/{alertId}") - public R getWaylineAlert(@NotNull(message = "主键不能为空") + @GetMapping("/alert/{alertId}") + public R getBusinessAlert(@NotNull(message = "主键不能为空") @PathVariable String alertId) { - return R.ok(waylineAlertService.getWaylineAlert(alertId)); + return R.ok(businessAlertService.getBusinessAlert(alertId)); } /** @@ -60,9 +61,9 @@ public class WaylineAlertController extends BaseController { */ @Log(title = "预警任务", businessType = BusinessType.INSERT) @RepeatSubmit() - @PostMapping("/add") - public R addWaylineAlert(@Validated(AddGroup.class) @RequestBody WaylineAlertBo param) { - return toAjax(waylineAlertService.addWaylineAlert(param)); + @PostMapping("/alert/add") + public R addBusinessAlert(@Validated(AddGroup.class) @RequestBody BusinessAlertBo param) { + return toAjax(businessAlertService.addBusinessAlert(param)); } /** @@ -70,9 +71,9 @@ public class WaylineAlertController extends BaseController { */ @Log(title = "预警任务", businessType = BusinessType.UPDATE) @RepeatSubmit() - @PostMapping("/update") - public R updateWaylineAlert(@Validated(EditGroup.class) @RequestBody WaylineAlertBo bo) { - return toAjax(waylineAlertService.updateWaylineAlert(bo)); + @PostMapping("/alert/edit") + public R editBusinessAlert(@Validated(EditGroup.class) @RequestBody BusinessAlertBo bo) { + return toAjax(businessAlertService.editBusinessAlert(bo)); } /** @@ -81,19 +82,19 @@ public class WaylineAlertController extends BaseController { * @param alertIdList 主键串 */ @Log(title = "预警任务", businessType = BusinessType.DELETE) - @DeleteMapping("/delete") - public R deleteWaylineAlert(@NotEmpty(message = "主键不能为空") + @DeleteMapping("/alert/delete") + public R deleteBusinessAlert(@NotEmpty(message = "主键不能为空") @RequestParam List alertIdList) { - return toAjax(waylineAlertService.deleteWaylineAlert(alertIdList, true)); + return toAjax(businessAlertService.deleteBusinessAlert(alertIdList, true)); } /** * 导出预警任务列表 */ @Log(title = "预警任务", businessType = BusinessType.EXPORT) - @PostMapping("/export") - public void exportWaylineAlert(WaylineAlertBo bo, HttpServletResponse response) { - List list = waylineAlertService.listWaylineAlert(bo); - ExcelUtil.exportExcel(list, "预警任务", WaylineAlertVo.class, response); + @PostMapping("/alert/export") + public void exportBusinessAlert(BusinessAlertBo bo, HttpServletResponse response) { + List list = businessAlertService.listBusinessAlert(bo); + ExcelUtil.exportExcel(list, "预警任务", BusinessAlertVo.class, response); } } diff --git a/dk-modules/business/src/main/java/org/dromara/business/controller/BusinessPatrolAreasController.java b/dk-modules/business/src/main/java/org/dromara/business/controller/BusinessPatrolAreasController.java new file mode 100644 index 0000000..9ecbdce --- /dev/null +++ b/dk-modules/business/src/main/java/org/dromara/business/controller/BusinessPatrolAreasController.java @@ -0,0 +1,157 @@ +package org.dromara.business.controller; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import jakarta.servlet.http.HttpServletRequest; +import lombok.RequiredArgsConstructor; +import org.dromara.business.domain.BusinessAlert; +import org.dromara.business.domain.BusinessPatrolAreas; +import org.dromara.business.domain.BusinessPatrolAreasPoints; +import org.dromara.business.domain.BusinessPatrolAreasUser; +import org.dromara.business.domain.bo.BusinessPatrolAreasBo; +import org.dromara.business.service.IBusinessPatrolAreasPointsService; +import org.dromara.business.service.IBusinessPatrolAreasService; +import org.dromara.business.service.IBusinessPatrolAreasUserService; +import org.dromara.common.core.domain.R; +import org.dromara.common.core.utils.MapstructUtils; +import org.dromara.common.satoken.utils.LoginHelper; +import org.dromara.common.web.core.BaseController; +import org.dromara.system.api.model.LoginUser; +import org.jeecgframework.poi.excel.def.NormalExcelConstants; +import org.jeecgframework.poi.excel.entity.ExportParams; +import org.jeecgframework.poi.excel.view.JeecgEntityExcelView; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.servlet.ModelAndView; + +import java.util.List; + +/** + * @Description: 巡查区域 + */ +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/patrol/patrolAreas") +public class BusinessPatrolAreasController extends BaseController { + + private final IBusinessPatrolAreasService patrolAreasService; + + private final IBusinessPatrolAreasPointsService patrolAreasPointsService; + + private final IBusinessPatrolAreasUserService patrolAreasUserService; + +// @Value("${jeecg.path.upload}") + private String upLoadPath; + + /** + * 巡查区域-分页列表查询 + * + * @param patrolAreasBo + * @param pageNo + * @param pageSize + * @return + */ + @GetMapping(value = "/list") + public R> queryPageList(BusinessPatrolAreasBo patrolAreasBo, + @RequestParam(name="pageNo", defaultValue="1") Integer pageNo, + @RequestParam(name="pageSize", defaultValue="10") Integer pageSize) { + Page page = new Page(pageNo, pageSize); + IPage pageList = patrolAreasService.pagePatrolAreas(page, patrolAreasBo); + return R.ok(pageList); + } + + /** + * 巡查区域-添加 + * + * @param patrolAreas + * @return + */ + @PostMapping(value = "/add") + public R add(@RequestBody BusinessPatrolAreas patrolAreas) { + boolean flag = patrolAreasService.addPatrolAreas(patrolAreas); + if(flag){ + return R.ok("添加成功!"); + } + return R.fail("新增失败"); + } + + /** + * 巡查区域-编辑 + * + * @param patrolAreas + * @return + */ + @RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST}) + public R edit(@RequestBody BusinessPatrolAreas patrolAreas) { + boolean flag = patrolAreasService.updatePatrolAreas(patrolAreas); + if(flag){ + return R.ok("添加成功!"); + } + return R.fail("新增失败"); + } + /** + * 巡查区域-禁用/启用 + * + * @param patrolAreas + * @return + */ + @RequestMapping(value = "/isDisable", method = {RequestMethod.PUT,RequestMethod.POST}) + public R isDisable(@RequestBody BusinessPatrolAreas patrolAreas) { + boolean flag = patrolAreasService.updateById(patrolAreas); + if(flag){ + return R.ok("修改成功!"); + } + return R.fail("操作失败"); + } + /** + * 巡查区域-删除 + * + * @param id + * @return + */ + @DeleteMapping(value = "/delete") + public R delete(String id) { + boolean flag = patrolAreasService.removeById(id); + if(flag){ + List patrolAreasUsersDels = patrolAreasUserService.listPatrolAreasUserByAreaId(id); + List patrolAreasPointsDels = patrolAreasPointsService.listPatrolAreasPointByAreaId(id); + patrolAreasUserService.removeByIds(patrolAreasUsersDels); + patrolAreasPointsService.removeByIds(patrolAreasPointsDels); + } + if(flag){ + return R.ok("删除成功!"); + } + return R.fail("删除失败!"); + } + /** + * 导出excel + * + * @param request + * @param patrolAreas + */ + @RequestMapping(value = "/exportXls") + public ModelAndView exportXls(BusinessPatrolAreas patrolAreas, HttpServletRequest request) { + //Step.2 AutoPoi 导出Excel + ModelAndView mv = new ModelAndView(new JeecgEntityExcelView()); + //update-begin--Author:kangxiaolin Date:20180825 for:[03]用户导出,如果选择数据则只导出相关数据-------------------- +// String selections = request.getParameter("selections"); +// if(!oConvertUtils.isEmpty(selections)){ +// queryWrapper.in("id",selections.split(",")); +// } + //update-end--Author:kangxiaolin Date:20180825 for:[03]用户导出,如果选择数据则只导出相关数据---------------------- + List pageList = patrolAreasService.exportXls(patrolAreas); + + //导出文件名称 + mv.addObject(NormalExcelConstants.FILE_NAME, "用户列表"); + mv.addObject(NormalExcelConstants.CLASS, BusinessPatrolAreas.class); + LoginUser user = LoginHelper.getLoginUser(); + ExportParams exportParams = new ExportParams("用户列表数据", "导出人:"+user.getNickname(), "导出信息"); + exportParams.setImageBasePath(upLoadPath); + mv.addObject(NormalExcelConstants.PARAMS, exportParams); + mv.addObject(NormalExcelConstants.DATA_LIST, pageList); + return mv; + } +} diff --git a/dk-modules/business/src/main/java/org/dromara/business/domain/WaylineAlert.java b/dk-modules/business/src/main/java/org/dromara/business/domain/BusinessAlert.java similarity index 93% rename from dk-modules/business/src/main/java/org/dromara/business/domain/WaylineAlert.java rename to dk-modules/business/src/main/java/org/dromara/business/domain/BusinessAlert.java index bd1e375..56e3962 100644 --- a/dk-modules/business/src/main/java/org/dromara/business/domain/WaylineAlert.java +++ b/dk-modules/business/src/main/java/org/dromara/business/domain/BusinessAlert.java @@ -5,20 +5,19 @@ import com.baomidou.mybatisplus.annotation.*; import lombok.Data; import lombok.EqualsAndHashCode; import java.util.Date; -import com.fasterxml.jackson.annotation.JsonFormat; import java.io.Serial; /** - * 预警任务对象 wayline_alert + * 预警任务对象 business_alert * * @author LionLi * @date 2025-02-27 */ @Data @EqualsAndHashCode(callSuper = true) -@TableName("wayline_alert") -public class WaylineAlert extends BaseEntity { +@TableName("business_alert") +public class BusinessAlert extends BaseEntity { @Serial private static final long serialVersionUID = 1L; @@ -29,6 +28,11 @@ public class WaylineAlert extends BaseEntity { @TableId(value = "id") private String id; + /** + * 流程实例Id + */ + private Long instanceId; + /** * 任务轮id */ diff --git a/dk-modules/business/src/main/java/org/dromara/business/domain/BusinessPatrolAreas.java b/dk-modules/business/src/main/java/org/dromara/business/domain/BusinessPatrolAreas.java new file mode 100644 index 0000000..08d583d --- /dev/null +++ b/dk-modules/business/src/main/java/org/dromara/business/domain/BusinessPatrolAreas.java @@ -0,0 +1,74 @@ +package org.dromara.business.domain; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; +import org.dromara.common.mybatis.core.domain.BaseEntity; +import org.jeecgframework.poi.excel.annotation.Excel; + +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 巡查区域 + */ +@Data +@TableName("business_patrol_areas") +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +public class BusinessPatrolAreas extends BaseEntity { + + /** + * ID + */ + @TableId(type = IdType.ASSIGN_ID) + private String id; + + /**区域名称*/ + @Excel(name = "区域名称", width = 15) + private String name; + /**区域编号*/ + @Excel(name = "区域编号", width = 15) + private String number; + /**所属乡镇id*/ + @Excel(name = "所属乡镇id", width = 15) + private String deptId; + + /**所属乡镇id*/ + @Excel(name = "所属乡镇名称", width = 15) + @TableField(exist = false) + private String deptName; + + @Excel(name = "所属乡镇ids", width = 15) + private String deptIds; + + @Excel(name = "平台类型", width = 15) + private String platformType; + + /**分管领导所属乡镇id**/ + private String leaderDeptId; + + /**用户id**/ + private String userId; + + /**用户姓名**/ + private String userName; + + /**是否禁用:0:禁用 1:启用**/ + private Integer isDisable; + + /**巡查区域人员信息集合**/ + @TableField(exist = false) + private List patrolAreasUsers = new ArrayList<>(); + /**巡查区域平台类型集合**/ + @TableField(exist = false) + private List patrolAreasIdList = new ArrayList<>(); + /**巡查区域坐标集合**/ + @TableField(exist = false) + private List patrolAreasPoints = new ArrayList<>(); + +} diff --git a/dk-modules/business/src/main/java/org/dromara/business/domain/BusinessPatrolAreasPlatform.java b/dk-modules/business/src/main/java/org/dromara/business/domain/BusinessPatrolAreasPlatform.java new file mode 100644 index 0000000..e1fd339 --- /dev/null +++ b/dk-modules/business/src/main/java/org/dromara/business/domain/BusinessPatrolAreasPlatform.java @@ -0,0 +1,54 @@ +package org.dromara.business.domain; + +import com.alibaba.excel.annotation.ExcelProperty; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; +import org.dromara.common.mybatis.core.domain.BaseEntity; + +/** + * Description:
+ * date: 2024/8/12$ 17:17$
+ * + * @author: yq + */ + +@Data +@TableName("business_patrol_areas_platform_info") +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +public class BusinessPatrolAreasPlatform extends BaseEntity { + + /** + * ID + */ + @TableId(type = IdType.ASSIGN_ID) + private String id; + + @ExcelProperty(value = "patrol_areas_id") + private String patrolAreasId; + /**区域名称*/ + @ExcelProperty(value = "平台名称") + private String platformName; + + @ExcelProperty(value = "平台类型") + private String platformType; + + /**区域编号*/ + @ExcelProperty(value = "平台图片") + private String imageUrl; + + /** + * 排序 + */ + @ExcelProperty(value = "排序") + private Integer sort; + + + + + +} diff --git a/dk-modules/business/src/main/java/org/dromara/business/domain/BusinessPatrolAreasPoints.java b/dk-modules/business/src/main/java/org/dromara/business/domain/BusinessPatrolAreasPoints.java new file mode 100644 index 0000000..e4d0d52 --- /dev/null +++ b/dk-modules/business/src/main/java/org/dromara/business/domain/BusinessPatrolAreasPoints.java @@ -0,0 +1,42 @@ +package org.dromara.business.domain; + +import com.alibaba.excel.annotation.ExcelProperty; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; +import org.dromara.common.mybatis.core.domain.BaseEntity; + +import java.math.BigDecimal; + +/** + * @Description: 巡查区域坐标 + */ +@Data +@TableName("business_patrol_area_points") +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +public class BusinessPatrolAreasPoints extends BaseEntity { + + /** + * ID + */ + @TableId(type = IdType.ASSIGN_ID) + private String id; + + /**areaId*/ + @ExcelProperty(value = "areaId") + private String areaId; + /**纬度*/ + @ExcelProperty(value = "纬度") + private BigDecimal lat; + /**经度*/ + @ExcelProperty(value = "经度") + private BigDecimal lng; + /**序号*/ + @ExcelProperty(value = "序号") + private Integer sortNumber; + +} diff --git a/dk-modules/business/src/main/java/org/dromara/business/domain/BusinessPatrolAreasUser.java b/dk-modules/business/src/main/java/org/dromara/business/domain/BusinessPatrolAreasUser.java new file mode 100644 index 0000000..28b8f3c --- /dev/null +++ b/dk-modules/business/src/main/java/org/dromara/business/domain/BusinessPatrolAreasUser.java @@ -0,0 +1,37 @@ +package org.dromara.business.domain; + +import com.alibaba.excel.annotation.ExcelProperty; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; +import org.dromara.common.mybatis.core.domain.BaseEntity; + +/** + * @Description: 巡查区域人员信息 + */ +@Data +@TableName("business_patrol_area_users") +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +public class BusinessPatrolAreasUser extends BaseEntity { + + /** + * ID + */ + @TableId(type = IdType.ASSIGN_ID) + private String id; + + /**巡查区域id*/ + @ExcelProperty(value = "巡查区域id") + private String areaId; + /**巡查人员id*/ + @ExcelProperty(value = "巡查人员id") + private String userId; + /**巡查人员姓名*/ + @ExcelProperty(value = "巡查人员姓名") + private String realname; + +} diff --git a/dk-modules/business/src/main/java/org/dromara/business/domain/BusinessPlatformInfo.java b/dk-modules/business/src/main/java/org/dromara/business/domain/BusinessPlatformInfo.java new file mode 100644 index 0000000..68fe097 --- /dev/null +++ b/dk-modules/business/src/main/java/org/dromara/business/domain/BusinessPlatformInfo.java @@ -0,0 +1,54 @@ + +package org.dromara.business.domain; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; +import org.dromara.common.mybatis.core.domain.BaseEntity; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * @Description: 平台信息 + */ +@Data +@TableName("business_platform_info") +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +public class BusinessPlatformInfo extends BaseEntity { + + /** + * ID + */ + @TableId(type = IdType.ASSIGN_ID) + private String id; + + /**设备昵称**/ + private String platformName; + + /**设备类型**/ + private String platformType; + + /**平台图片**/ + private String imageUrl; + + /**app图片**/ + private String imageAppUrl; + + /**排序**/ + private Integer sort; + /**路由**/ + private String routes; + /**平台识别类型集合**/ + @TableField(exist = false) + private List platformInfoCodes = new ArrayList<>(); + @TableField(exist = false) + private Map total = new HashMap<>(); +} diff --git a/dk-modules/business/src/main/java/org/dromara/business/domain/BusinessPlatformInfoCode.java b/dk-modules/business/src/main/java/org/dromara/business/domain/BusinessPlatformInfoCode.java new file mode 100644 index 0000000..aeec561 --- /dev/null +++ b/dk-modules/business/src/main/java/org/dromara/business/domain/BusinessPlatformInfoCode.java @@ -0,0 +1,32 @@ + +package org.dromara.business.domain; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; +import org.dromara.common.mybatis.core.domain.BaseEntity; + +/** + * @Description: 平台信息 + */ +@Data +@TableName("business_platform_info_code") +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +public class BusinessPlatformInfoCode extends BaseEntity { + + /** + * ID + */ + @TableId(type = IdType.ASSIGN_ID) + private String id; + /**平台对象id**/ + private String platformInfoId; + /**识别内容**/ + private String codeName; + /**识别类型**/ + private String codeType; +} diff --git a/dk-modules/business/src/main/java/org/dromara/business/domain/bo/WaylineAlertBo.java b/dk-modules/business/src/main/java/org/dromara/business/domain/bo/BusinessAlertBo.java similarity index 97% rename from dk-modules/business/src/main/java/org/dromara/business/domain/bo/WaylineAlertBo.java rename to dk-modules/business/src/main/java/org/dromara/business/domain/bo/BusinessAlertBo.java index f8203d5..f377e3b 100644 --- a/dk-modules/business/src/main/java/org/dromara/business/domain/bo/WaylineAlertBo.java +++ b/dk-modules/business/src/main/java/org/dromara/business/domain/bo/BusinessAlertBo.java @@ -1,6 +1,6 @@ package org.dromara.business.domain.bo; -import org.dromara.business.domain.WaylineAlert; +import org.dromara.business.domain.BusinessAlert; import org.dromara.common.mybatis.core.domain.BaseEntity; import org.dromara.common.core.validate.AddGroup; import org.dromara.common.core.validate.EditGroup; @@ -18,8 +18,8 @@ import java.util.Date; */ @Data @EqualsAndHashCode(callSuper = true) -@AutoMapper(target = WaylineAlert.class, reverseConvertGenerate = false) -public class WaylineAlertBo extends BaseEntity { +@AutoMapper(target = BusinessAlert.class, reverseConvertGenerate = false) +public class BusinessAlertBo extends BaseEntity { /** * diff --git a/dk-modules/business/src/main/java/org/dromara/business/domain/bo/BusinessPatrolAreasBo.java b/dk-modules/business/src/main/java/org/dromara/business/domain/bo/BusinessPatrolAreasBo.java new file mode 100644 index 0000000..a07b4d7 --- /dev/null +++ b/dk-modules/business/src/main/java/org/dromara/business/domain/bo/BusinessPatrolAreasBo.java @@ -0,0 +1,44 @@ +package org.dromara.business.domain.bo; + + +import io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.dromara.business.domain.BusinessAlert; +import org.dromara.common.mybatis.core.domain.BaseEntity; + +import java.util.ArrayList; +import java.util.List; + +@Data +@EqualsAndHashCode(callSuper = true) +@AutoMapper(target = BusinessAlert.class, reverseConvertGenerate = false) +public class BusinessPatrolAreasBo extends BaseEntity { + + /** + * 所属乡镇id + */ + private String deptId; + + /** + * 所属乡镇名称 + */ + private String deptName; + + /** + * 预警类型 + */ + private String platformType; + + /** + * 是否禁用:0:禁用 1:启用 + */ + private Integer isDisable; + + /** + * 下级所有部门id + */ + private List deptIds = new ArrayList<>(); + + private String name; +} diff --git a/dk-modules/business/src/main/java/org/dromara/business/domain/bo/BusinessPlatformInfoBo.java b/dk-modules/business/src/main/java/org/dromara/business/domain/bo/BusinessPlatformInfoBo.java new file mode 100644 index 0000000..c88887b --- /dev/null +++ b/dk-modules/business/src/main/java/org/dromara/business/domain/bo/BusinessPlatformInfoBo.java @@ -0,0 +1,11 @@ +package org.dromara.business.domain.bo; + +import lombok.Data; + +@Data +public class BusinessPlatformInfoBo { + + /**查询条件**/ + private String search; + +} diff --git a/dk-modules/business/src/main/java/org/dromara/business/domain/vo/WaylineAlertVo.java b/dk-modules/business/src/main/java/org/dromara/business/domain/vo/BusinessAlertVo.java similarity index 96% rename from dk-modules/business/src/main/java/org/dromara/business/domain/vo/WaylineAlertVo.java rename to dk-modules/business/src/main/java/org/dromara/business/domain/vo/BusinessAlertVo.java index 632319b..56e624d 100644 --- a/dk-modules/business/src/main/java/org/dromara/business/domain/vo/WaylineAlertVo.java +++ b/dk-modules/business/src/main/java/org/dromara/business/domain/vo/BusinessAlertVo.java @@ -4,7 +4,7 @@ import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; import com.alibaba.excel.annotation.ExcelProperty; import io.github.linpeilie.annotations.AutoMapper; import lombok.Data; -import org.dromara.business.domain.WaylineAlert; +import org.dromara.business.domain.BusinessAlert; import java.io.Serial; import java.io.Serializable; @@ -20,8 +20,8 @@ import java.util.Date; */ @Data @ExcelIgnoreUnannotated -@AutoMapper(target = WaylineAlert.class) -public class WaylineAlertVo implements Serializable { +@AutoMapper(target = BusinessAlert.class) +public class BusinessAlertVo implements Serializable { @Serial private static final long serialVersionUID = 1L; diff --git a/dk-modules/business/src/main/java/org/dromara/business/mapper/WaylineAlertMapper.java b/dk-modules/business/src/main/java/org/dromara/business/mapper/BusinessAlertMapper.java similarity index 51% rename from dk-modules/business/src/main/java/org/dromara/business/mapper/WaylineAlertMapper.java rename to dk-modules/business/src/main/java/org/dromara/business/mapper/BusinessAlertMapper.java index 1502119..af7a92a 100644 --- a/dk-modules/business/src/main/java/org/dromara/business/mapper/WaylineAlertMapper.java +++ b/dk-modules/business/src/main/java/org/dromara/business/mapper/BusinessAlertMapper.java @@ -2,8 +2,8 @@ package org.dromara.business.mapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import org.dromara.business.domain.WaylineAlert; -import org.dromara.business.domain.vo.WaylineAlertVo; +import org.dromara.business.domain.BusinessAlert; +import org.dromara.business.domain.vo.BusinessAlertVo; import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; /** @@ -12,7 +12,7 @@ import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; * @author LionLi * @date 2025-02-27 */ -public interface WaylineAlertMapper extends BaseMapperPlus { +public interface BusinessAlertMapper extends BaseMapperPlus { - Page pageAlert(Page page, LambdaQueryWrapper lqw); + Page pageAlert(Page page, LambdaQueryWrapper lqw); } diff --git a/dk-modules/business/src/main/java/org/dromara/business/mapper/BusinessPatrolAreasMapper.java b/dk-modules/business/src/main/java/org/dromara/business/mapper/BusinessPatrolAreasMapper.java new file mode 100644 index 0000000..252eb43 --- /dev/null +++ b/dk-modules/business/src/main/java/org/dromara/business/mapper/BusinessPatrolAreasMapper.java @@ -0,0 +1,22 @@ +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 { + + IPage listPatrolAreas(Page page, @Param("condition") BusinessPatrolAreasBo patrolAreasBo, @Param("deptIds") List deptIds); + + List listPatrolAreas(@Param("condition") BusinessPatrolAreasBo patrolAreasBo, @Param("deptIds") List deptIds); +} diff --git a/dk-modules/business/src/main/java/org/dromara/business/mapper/BusinessPatrolAreasPlatformMapper.java b/dk-modules/business/src/main/java/org/dromara/business/mapper/BusinessPatrolAreasPlatformMapper.java new file mode 100644 index 0000000..79354f5 --- /dev/null +++ b/dk-modules/business/src/main/java/org/dromara/business/mapper/BusinessPatrolAreasPlatformMapper.java @@ -0,0 +1,10 @@ +package org.dromara.business.mapper; + + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.dromara.business.domain.BusinessPatrolAreasPlatform; + + +public interface BusinessPatrolAreasPlatformMapper extends BaseMapper { + +} diff --git a/dk-modules/business/src/main/java/org/dromara/business/mapper/BusinessPatrolAreasPointsMapper.java b/dk-modules/business/src/main/java/org/dromara/business/mapper/BusinessPatrolAreasPointsMapper.java new file mode 100644 index 0000000..dead5dd --- /dev/null +++ b/dk-modules/business/src/main/java/org/dromara/business/mapper/BusinessPatrolAreasPointsMapper.java @@ -0,0 +1,16 @@ +package org.dromara.business.mapper; + + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; +import org.dromara.business.domain.BusinessPatrolAreasPoints; + +import java.util.List; + +/** + * @Description: 巡查区域坐标 + */ +public interface BusinessPatrolAreasPointsMapper extends BaseMapper { + + List listPatrolAreasPointByAreaId(@Param("areaId") String areaId); +} diff --git a/dk-modules/business/src/main/java/org/dromara/business/mapper/BusinessPatrolAreasUserMapper.java b/dk-modules/business/src/main/java/org/dromara/business/mapper/BusinessPatrolAreasUserMapper.java new file mode 100644 index 0000000..79a7206 --- /dev/null +++ b/dk-modules/business/src/main/java/org/dromara/business/mapper/BusinessPatrolAreasUserMapper.java @@ -0,0 +1,16 @@ +package org.dromara.business.mapper; + + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; +import org.dromara.business.domain.BusinessPatrolAreasUser; + +import java.util.List; + +/** + * @Description: 巡查区域人员信息 + */ +public interface BusinessPatrolAreasUserMapper extends BaseMapper { + + List listPatrolAreasUserByAreaId(@Param("areaId") String areaId); +} diff --git a/dk-modules/business/src/main/java/org/dromara/business/mapper/BusinessPlatformInfoCodeMapper.java b/dk-modules/business/src/main/java/org/dromara/business/mapper/BusinessPlatformInfoCodeMapper.java new file mode 100644 index 0000000..03e409d --- /dev/null +++ b/dk-modules/business/src/main/java/org/dromara/business/mapper/BusinessPlatformInfoCodeMapper.java @@ -0,0 +1,17 @@ +package org.dromara.business.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; +import org.dromara.business.domain.BusinessPlatformInfoCode; + +import java.util.List; + +/** + * + * @author sean.zhou + * @date 2021/11/10 + * @version 0.1 + */ +public interface BusinessPlatformInfoCodeMapper extends BaseMapper { + List listPlatformInfoCodeByPlatformInfoId(@Param("platformInfoId") String platformInfoId); +} diff --git a/dk-modules/business/src/main/java/org/dromara/business/mapper/BusinessPlatformInfoMapper.java b/dk-modules/business/src/main/java/org/dromara/business/mapper/BusinessPlatformInfoMapper.java new file mode 100644 index 0000000..9c32b8a --- /dev/null +++ b/dk-modules/business/src/main/java/org/dromara/business/mapper/BusinessPlatformInfoMapper.java @@ -0,0 +1,23 @@ +package org.dromara.business.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import org.apache.ibatis.annotations.Param; +import org.dromara.business.domain.BusinessPlatformInfo; +import org.dromara.business.domain.bo.BusinessPlatformInfoBo; + +import java.util.List; + +/** + * + * @author sean.zhou + * @date 2021/11/10 + * @version 0.1 + */ +public interface BusinessPlatformInfoMapper extends BaseMapper { + IPage listPlatformInfo(Page page, @Param("condition") BusinessPlatformInfoBo platformInfoBo); + + List listPlatformInfo(@Param("condition")BusinessPlatformInfoBo platformInfoBo); + +} diff --git a/dk-modules/business/src/main/java/org/dromara/business/service/IWaylineAlertService.java b/dk-modules/business/src/main/java/org/dromara/business/service/BusinessAlertService.java similarity index 65% rename from dk-modules/business/src/main/java/org/dromara/business/service/IWaylineAlertService.java rename to dk-modules/business/src/main/java/org/dromara/business/service/BusinessAlertService.java index 1dedc19..7f8c99a 100644 --- a/dk-modules/business/src/main/java/org/dromara/business/service/IWaylineAlertService.java +++ b/dk-modules/business/src/main/java/org/dromara/business/service/BusinessAlertService.java @@ -1,12 +1,11 @@ package org.dromara.business.service; -import org.dromara.business.domain.WaylineAlert; -import org.dromara.business.domain.vo.WaylineAlertVo; -import org.dromara.business.domain.bo.WaylineAlertBo; +import org.dromara.business.domain.BusinessAlert; +import org.dromara.business.domain.vo.BusinessAlertVo; +import org.dromara.business.domain.bo.BusinessAlertBo; import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.common.mybatis.core.page.PageQuery; -import java.util.Collection; import java.util.List; /** @@ -15,7 +14,7 @@ import java.util.List; * @author LionLi * @date 2025-02-27 */ -public interface IWaylineAlertService { +public interface BusinessAlertService { /** * 查询预警任务 @@ -23,7 +22,7 @@ public interface IWaylineAlertService { * @param id 主键 * @return 预警任务 */ - WaylineAlertVo getWaylineAlert(String id); + BusinessAlertVo getBusinessAlert(String id); /** * 分页查询预警任务列表 @@ -32,7 +31,7 @@ public interface IWaylineAlertService { * @param pageQuery 分页参数 * @return 预警任务分页列表 */ - TableDataInfo pageWaylineAlert(WaylineAlertBo bo, PageQuery pageQuery); + TableDataInfo pageBusinessAlert(BusinessAlertBo bo, PageQuery pageQuery); /** * 查询符合条件的预警任务列表 @@ -40,7 +39,7 @@ public interface IWaylineAlertService { * @param param 查询条件 * @return 预警任务列表 */ - List listWaylineAlert(WaylineAlertBo param); + List listBusinessAlert(BusinessAlertBo param); /** * 新增预警任务 @@ -48,7 +47,7 @@ public interface IWaylineAlertService { * @param param 预警任务 * @return 是否新增成功 */ - Boolean addWaylineAlert(WaylineAlertBo param); + Boolean addBusinessAlert(BusinessAlertBo param); /** @@ -57,7 +56,7 @@ public interface IWaylineAlertService { * @param alertList 预警任务 * @return 是否新增成功 */ - Boolean saveBatchAlert(List alertList); + Boolean batchAddBusinessAlert(List alertList); /** * 修改预警任务 @@ -65,7 +64,7 @@ public interface IWaylineAlertService { * @param param 预警任务 * @return 是否修改成功 */ - Boolean updateWaylineAlert(WaylineAlertBo param); + Boolean editBusinessAlert(BusinessAlertBo param); /** * 校验并批量删除预警任务信息 @@ -74,5 +73,5 @@ public interface IWaylineAlertService { * @param isValid 是否进行有效性校验 * @return 是否删除成功 */ - Boolean deleteWaylineAlert(List alertIdList, Boolean isValid); + Boolean deleteBusinessAlert(List alertIdList, Boolean isValid); } diff --git a/dk-modules/business/src/main/java/org/dromara/business/service/IBusinessPatrolAreasPointsService.java b/dk-modules/business/src/main/java/org/dromara/business/service/IBusinessPatrolAreasPointsService.java new file mode 100644 index 0000000..8025a69 --- /dev/null +++ b/dk-modules/business/src/main/java/org/dromara/business/service/IBusinessPatrolAreasPointsService.java @@ -0,0 +1,13 @@ +package org.dromara.business.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import org.dromara.business.domain.BusinessPatrolAreasPoints; + +import java.util.List; + +/** + * @Description: 巡查区域坐标 + */ +public interface IBusinessPatrolAreasPointsService extends IService { + List listPatrolAreasPointByAreaId(String areaId); +} diff --git a/dk-modules/business/src/main/java/org/dromara/business/service/IBusinessPatrolAreasService.java b/dk-modules/business/src/main/java/org/dromara/business/service/IBusinessPatrolAreasService.java new file mode 100644 index 0000000..dfd1dc7 --- /dev/null +++ b/dk-modules/business/src/main/java/org/dromara/business/service/IBusinessPatrolAreasService.java @@ -0,0 +1,25 @@ +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 java.util.List; + +/** + * @Description: 巡查区域 + */ +public interface IBusinessPatrolAreasService extends IService { + IPage pagePatrolAreas(Page page, @Param("condition") BusinessPatrolAreasBo patrolAreasBo); + + List listPatrolAreas(@Param("condition") BusinessPatrolAreasBo patrolAreasBo); + + boolean addPatrolAreas(BusinessPatrolAreas patrolAreas); + + boolean updatePatrolAreas(BusinessPatrolAreas patrolAreas); + + List exportXls(BusinessPatrolAreas patrolAreas); +} diff --git a/dk-modules/business/src/main/java/org/dromara/business/service/IBusinessPatrolAreasUserService.java b/dk-modules/business/src/main/java/org/dromara/business/service/IBusinessPatrolAreasUserService.java new file mode 100644 index 0000000..25fe654 --- /dev/null +++ b/dk-modules/business/src/main/java/org/dromara/business/service/IBusinessPatrolAreasUserService.java @@ -0,0 +1,13 @@ +package org.dromara.business.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import org.dromara.business.domain.BusinessPatrolAreasUser; + +import java.util.List; + +/** + * @Description: 巡查区域人员信息 + */ +public interface IBusinessPatrolAreasUserService extends IService { + List listPatrolAreasUserByAreaId(String areaId); +} diff --git a/dk-modules/business/src/main/java/org/dromara/business/service/IBusinessPlatformInfoService.java b/dk-modules/business/src/main/java/org/dromara/business/service/IBusinessPlatformInfoService.java new file mode 100644 index 0000000..fba41d6 --- /dev/null +++ b/dk-modules/business/src/main/java/org/dromara/business/service/IBusinessPlatformInfoService.java @@ -0,0 +1,9 @@ +package org.dromara.business.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import org.dromara.business.domain.BusinessPlatformInfo; + +public interface IBusinessPlatformInfoService extends IService { + + +} diff --git a/dk-modules/business/src/main/java/org/dromara/business/service/impl/WaylineAlertServiceImpl.java b/dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessAlertServiceImpl.java similarity index 57% rename from dk-modules/business/src/main/java/org/dromara/business/service/impl/WaylineAlertServiceImpl.java rename to dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessAlertServiceImpl.java index 9c1c574..c87f808 100644 --- a/dk-modules/business/src/main/java/org/dromara/business/service/impl/WaylineAlertServiceImpl.java +++ b/dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessAlertServiceImpl.java @@ -5,11 +5,11 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import lombok.RequiredArgsConstructor; -import org.dromara.business.domain.WaylineAlert; -import org.dromara.business.domain.bo.WaylineAlertBo; -import org.dromara.business.domain.vo.WaylineAlertVo; -import org.dromara.business.mapper.WaylineAlertMapper; -import org.dromara.business.service.IWaylineAlertService; +import org.dromara.business.domain.BusinessAlert; +import org.dromara.business.domain.bo.BusinessAlertBo; +import org.dromara.business.domain.vo.BusinessAlertVo; +import org.dromara.business.mapper.BusinessAlertMapper; +import org.dromara.business.service.BusinessAlertService; import org.dromara.common.core.exception.ServiceException; import org.dromara.common.core.utils.MapstructUtils; import org.dromara.common.mybatis.core.page.PageQuery; @@ -26,9 +26,9 @@ import java.util.List; */ @RequiredArgsConstructor @Service -public class WaylineAlertServiceImpl implements IWaylineAlertService { +public class BusinessAlertServiceImpl implements BusinessAlertService { - private final WaylineAlertMapper baseMapper; + private final BusinessAlertMapper baseMapper; /** * 查询预警任务 @@ -37,7 +37,7 @@ public class WaylineAlertServiceImpl implements IWaylineAlertService { * @return 预警任务 */ @Override - public WaylineAlertVo getWaylineAlert(String id){ + public BusinessAlertVo getBusinessAlert(String id){ return baseMapper.selectVoById(id); } @@ -49,9 +49,9 @@ public class WaylineAlertServiceImpl implements IWaylineAlertService { * @return 预警任务分页列表 */ @Override - public TableDataInfo pageWaylineAlert(WaylineAlertBo param, PageQuery pageQuery) { - LambdaQueryWrapper lqw = buildQueryWrapper(param); - Page result = baseMapper.pageAlert(pageQuery.build(), lqw); + public TableDataInfo pageBusinessAlert(BusinessAlertBo param, PageQuery pageQuery) { + LambdaQueryWrapper lqw = buildQueryWrapper(param); + Page result = baseMapper.pageAlert(pageQuery.build(), lqw); return TableDataInfo.build(result); } @@ -63,8 +63,8 @@ public class WaylineAlertServiceImpl implements IWaylineAlertService { * @return 预警任务列表 */ @Override - public List listWaylineAlert(WaylineAlertBo param) { - LambdaQueryWrapper lqw = buildQueryWrapper(param); + public List listBusinessAlert(BusinessAlertBo param) { + LambdaQueryWrapper lqw = buildQueryWrapper(param); return baseMapper.selectVoList(lqw); } @@ -76,8 +76,8 @@ public class WaylineAlertServiceImpl implements IWaylineAlertService { * @return 是否新增成功 */ @Override - public Boolean addWaylineAlert(WaylineAlertBo param) { - WaylineAlert alert = MapstructUtils.convert(param, WaylineAlert.class); + public Boolean addBusinessAlert(BusinessAlertBo param) { + BusinessAlert alert = MapstructUtils.convert(param, BusinessAlert.class); validEntityBeforeSave(alert,false); return this.baseMapper.insert(alert) > 0; } @@ -88,7 +88,7 @@ public class WaylineAlertServiceImpl implements IWaylineAlertService { * @return */ @Override - public Boolean saveBatchAlert(List alertList) { + public Boolean batchAddBusinessAlert(List alertList) { return this.baseMapper.insertBatch(alertList); } @@ -99,16 +99,16 @@ public class WaylineAlertServiceImpl implements IWaylineAlertService { * @return 是否修改成功 */ @Override - public Boolean updateWaylineAlert(WaylineAlertBo param) { - WaylineAlert alert = MapstructUtils.convert(param, WaylineAlert.class); - validEntityBeforeSave(alert,true); - return baseMapper.updateById(alert) > 0; + public Boolean editBusinessAlert(BusinessAlertBo param) { + BusinessAlert businessAlert = MapstructUtils.convert(param, BusinessAlert.class); + validEntityBeforeSave(businessAlert,true); + return baseMapper.updateById(businessAlert) > 0; } /** * 保存前的数据校验 */ - private void validEntityBeforeSave(WaylineAlert alert,Boolean validId){ + private void validEntityBeforeSave(BusinessAlert alert, Boolean validId){ if (ObjectUtil.isEmpty(alert.getId())){ throw new ServiceException("预警【Id】为空!"); } @@ -122,20 +122,20 @@ public class WaylineAlertServiceImpl implements IWaylineAlertService { * @return 是否删除成功 */ @Override - public Boolean deleteWaylineAlert(List alertIdList, Boolean isValid) { + public Boolean deleteBusinessAlert(List alertIdList, Boolean isValid) { if(isValid){ if (ObjectUtil.isEmpty(alertIdList)){ - throw new ServiceException("预警Id为空!"); + throw new ServiceException("预警【Id】为空!"); } } return baseMapper.deleteByIds(alertIdList) > 0; } - private LambdaQueryWrapper buildQueryWrapper(WaylineAlertBo bo) { - LambdaQueryWrapper wrapper = Wrappers.lambdaQuery(); + private LambdaQueryWrapper buildQueryWrapper(BusinessAlertBo bo) { + LambdaQueryWrapper wrapper = Wrappers.lambdaQuery(); - wrapper.orderByAsc(WaylineAlert::getCreateTime); + wrapper.orderByAsc(BusinessAlert::getCreateTime); return wrapper; } } diff --git a/dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessPatrolAreasPointsServiceImpl.java b/dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessPatrolAreasPointsServiceImpl.java new file mode 100644 index 0000000..09f617e --- /dev/null +++ b/dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessPatrolAreasPointsServiceImpl.java @@ -0,0 +1,23 @@ +package org.dromara.business.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.RequiredArgsConstructor; +import org.dromara.business.domain.BusinessPatrolAreasPoints; +import org.dromara.business.mapper.BusinessPatrolAreasPointsMapper; +import org.dromara.business.service.IBusinessPatrolAreasPointsService; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * @Description: 巡查区域坐标 + */ +@RequiredArgsConstructor +@Service +public class BusinessPatrolAreasPointsServiceImpl extends ServiceImpl implements IBusinessPatrolAreasPointsService { + + @Override + public List listPatrolAreasPointByAreaId(String areaId) { + return baseMapper.listPatrolAreasPointByAreaId(areaId); + } +} diff --git a/dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessPatrolAreasServiceImpl.java b/dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessPatrolAreasServiceImpl.java new file mode 100644 index 0000000..34ed1e8 --- /dev/null +++ b/dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessPatrolAreasServiceImpl.java @@ -0,0 +1,203 @@ +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.mapper.BusinessPatrolAreasPlatformMapper; +import org.dromara.business.service.IBusinessPatrolAreasPointsService; +import org.dromara.business.service.IBusinessPatrolAreasService; +import org.dromara.business.service.IBusinessPatrolAreasUserService; +import org.dromara.business.service.IBusinessPlatformInfoService; +import org.dromara.common.core.exception.ServiceException; +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 java.util.ArrayList; +import java.util.List; +import java.util.Set; +import java.util.stream.Collectors; + +/** + * @Description: 巡查区域 + */ +@RequiredArgsConstructor +@Service +public class BusinessPatrolAreasServiceImpl extends ServiceImpl implements IBusinessPatrolAreasService { + + + private final IBusinessPatrolAreasPointsService patrolAreasPointsService; + + private final IBusinessPatrolAreasUserService patrolAreasUserService; + + private final IBusinessPlatformInfoService platformInfoService; + + private final BusinessPatrolAreasPlatformMapper patrolAreasPlatformInfoMapper; + + @DubboReference + private RemoteUserService remoteUserService; + @DubboReference + private RemoteDeptService remoteDeptService; + + @Override + public IPage pagePatrolAreas(Page page, BusinessPatrolAreasBo patrolAreasBo) { + LoginUser user = LoginHelper.getLoginUser(); + List 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(); + } +// if(oConvertUtils.isNotEmpty(user.getUserIdentity()) && user.getUserIdentity().equals( CommonConstant.USER_IDENTITY_2 )){ +// if(StringUtils.isNotBlank(departIds)){ +// deptIds.addAll(commonAPI.getMySubDepIdsStatusByDepId(departIds)); +// } +// }else { +// deptIds.add(departIds); +// } + deptIds.add(departIds); + IPage iPage = this.baseMapper.listPatrolAreas(page, patrolAreasBo, deptIds); + List records = page.getRecords(); + if(!records.isEmpty()){ + records.forEach(p->{ + QueryWrapper queryWrapper = new QueryWrapper(); + queryWrapper.eq("patrol_areas_id",p.getId()); + List collect = patrolAreasPlatformInfoMapper.selectList(queryWrapper).stream().map(BusinessPatrolAreasPlatform::getPlatformType).collect(Collectors.toList()); + p.setPatrolAreasIdList(collect); + }); + } + page.setRecords(records); + return iPage; + } + + @Override + public List listPatrolAreas(BusinessPatrolAreasBo patrolAreasBo) { + return this.baseMapper.listPatrolAreas(patrolAreasBo, patrolAreasBo.getDeptIds()); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public boolean addPatrolAreas(BusinessPatrolAreas patrolAreas) { + patrolAreas.setUserName(remoteUserService.selectUserNameById(Long.valueOf(patrolAreas.getUserId()))); + boolean flag = this.save(patrolAreas); + List patrolAreasUsers = patrolAreas.getPatrolAreasUsers(); + patrolAreasUsers.stream().forEach(item->{ + item.setAreaId(patrolAreas.getId()); + item.setRealname(remoteUserService.selectUserNameById(Long.valueOf(patrolAreas.getUserId()))); + }); + List patrolAreasIdList = patrolAreas.getPatrolAreasIdList(); + if(!patrolAreasIdList.isEmpty()){ + patrolAreasIdList.forEach(item->{ + BusinessPlatformInfo platformInfo = platformInfoService.lambdaQuery().eq(BusinessPlatformInfo::getPlatformType,item).one(); + BusinessPatrolAreasPlatform patrolAreasPlatformInfo =new BusinessPatrolAreasPlatform(); + patrolAreasPlatformInfo.setPatrolAreasId(patrolAreas.getId()); + patrolAreasPlatformInfo.setPlatformName(platformInfo.getPlatformName()); + patrolAreasPlatformInfo.setPlatformType(platformInfo.getPlatformType()); + patrolAreasPlatformInfo.setSort(platformInfo.getSort()); + patrolAreasPlatformInfo.setImageUrl(platformInfo.getImageUrl()); + patrolAreasPlatformInfoMapper.insert(patrolAreasPlatformInfo); + }); + } + + if(CollectionUtils.isNotEmpty(patrolAreasUsers)){ + flag = patrolAreasUserService.saveBatch(patrolAreasUsers,500); + } + List patrolAreasPoints = patrolAreas.getPatrolAreasPoints(); + patrolAreasPoints.stream().forEach(item->{ + item.setAreaId(patrolAreas.getId()); + }); + if(CollectionUtils.isNotEmpty(patrolAreasPoints)) { + flag = patrolAreasPointsService.saveBatch(patrolAreasPoints, 500); + } + return flag; + } + + @Override + @Transactional(rollbackFor = Exception.class) + public boolean updatePatrolAreas(BusinessPatrolAreas patrolAreas) { + patrolAreas.setUserName(remoteUserService.selectUserNameById(Long.valueOf(patrolAreas.getUserId()))); + boolean flag = this.updateById(patrolAreas); + List patrolAreasUsersDels = patrolAreasUserService.listPatrolAreasUserByAreaId(patrolAreas.getId()); + List patrolAreasPointsDels = patrolAreasPointsService.listPatrolAreasPointByAreaId(patrolAreas.getId()); + patrolAreasUserService.removeByIds(patrolAreasUsersDels); + patrolAreasPointsService.removeByIds(patrolAreasPointsDels); + //先删除后添加 + QueryWrapper queryWrapper = new QueryWrapper(); + queryWrapper.eq("patrol_areas_id",patrolAreas.getId()); + Set stringSet = patrolAreasPlatformInfoMapper.selectList(queryWrapper).stream().map(BusinessPatrolAreasPlatform::getId).collect(Collectors.toSet()); + if(!stringSet.isEmpty()){ + patrolAreasPlatformInfoMapper.deleteBatchIds(stringSet); + } + List patrolAreasIdList = patrolAreas.getPatrolAreasIdList(); + + if(!patrolAreasIdList.isEmpty()){ + patrolAreasIdList.forEach(item->{ + BusinessPlatformInfo platformInfo = platformInfoService.lambdaQuery().eq(BusinessPlatformInfo::getPlatformType,item).one(); + BusinessPatrolAreasPlatform patrolAreasPlatformInfo =new BusinessPatrolAreasPlatform(); + patrolAreasPlatformInfo.setPatrolAreasId(patrolAreas.getId()); + patrolAreasPlatformInfo.setPlatformName(platformInfo.getPlatformName()); + patrolAreasPlatformInfo.setPlatformType(platformInfo.getPlatformType()); + patrolAreasPlatformInfo.setSort(platformInfo.getSort()); + patrolAreasPlatformInfo.setImageUrl(platformInfo.getImageUrl()); + patrolAreasPlatformInfoMapper.insert(patrolAreasPlatformInfo); + }); + } + + + List patrolAreasUsers = patrolAreas.getPatrolAreasUsers(); + patrolAreasUsers.stream().forEach(item->{ + item.setAreaId(patrolAreas.getId()); + }); + if(CollectionUtils.isNotEmpty(patrolAreasUsers)){ + flag = patrolAreasUserService.saveBatch(patrolAreasUsers,500); + } + List patrolAreasPoints = patrolAreas.getPatrolAreasPoints(); + patrolAreasPoints.stream().forEach(item->{ + item.setAreaId(patrolAreas.getId()); + }); + if(CollectionUtils.isNotEmpty(patrolAreasPoints)) { + flag = patrolAreasPointsService.saveBatch(patrolAreasPoints, 500); + } + return flag; + } + + @Override + public List exportXls(BusinessPatrolAreas patrolAreas) { + LambdaQueryWrapper wrapper = buildWrapper(patrolAreas); + + return this.list(wrapper); + } + + private LambdaQueryWrapper buildWrapper(BusinessPatrolAreas patrolAreas) { + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + + if (ObjectUtil.isNotEmpty(patrolAreas.getName())){ + wrapper.eq(BusinessPatrolAreas::getName, patrolAreas.getName()); + } + + if (ObjectUtil.isNotEmpty(patrolAreas.getDeptId())){ + wrapper.eq(BusinessPatrolAreas::getDeptId, patrolAreas.getDeptId()); + } + + return wrapper; + } +} diff --git a/dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessPatrolAreasUserServiceImpl.java b/dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessPatrolAreasUserServiceImpl.java new file mode 100644 index 0000000..36e6b88 --- /dev/null +++ b/dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessPatrolAreasUserServiceImpl.java @@ -0,0 +1,23 @@ +package org.dromara.business.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.RequiredArgsConstructor; +import org.dromara.business.domain.BusinessPatrolAreasUser; +import org.dromara.business.mapper.BusinessPatrolAreasUserMapper; +import org.dromara.business.service.IBusinessPatrolAreasUserService; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * @Description: 巡查区域人员信息 + */ +@RequiredArgsConstructor +@Service +public class BusinessPatrolAreasUserServiceImpl extends ServiceImpl implements IBusinessPatrolAreasUserService { + + @Override + public List listPatrolAreasUserByAreaId(String areaId) { + return baseMapper.listPatrolAreasUserByAreaId(areaId); + } +} diff --git a/dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessPlatformInfoServiceImpl.java b/dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessPlatformInfoServiceImpl.java new file mode 100644 index 0000000..5aba5e1 --- /dev/null +++ b/dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessPlatformInfoServiceImpl.java @@ -0,0 +1,17 @@ +package org.dromara.business.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.dromara.business.domain.BusinessPlatformInfo; +import org.dromara.business.mapper.BusinessPlatformInfoMapper; +import org.dromara.business.service.IBusinessPlatformInfoService; +import org.springframework.stereotype.Service; + +/** + * + **/ +@Service +public class BusinessPlatformInfoServiceImpl extends ServiceImpl implements IBusinessPlatformInfoService { + + + +} diff --git a/dk-modules/business/src/main/resources/mapper/business/WaylineAlertMapper.xml b/dk-modules/business/src/main/resources/mapper/business/BusinessAlertMapper.xml similarity index 87% rename from dk-modules/business/src/main/resources/mapper/business/WaylineAlertMapper.xml rename to dk-modules/business/src/main/resources/mapper/business/BusinessAlertMapper.xml index eeef8da..36badec 100644 --- a/dk-modules/business/src/main/resources/mapper/business/WaylineAlertMapper.xml +++ b/dk-modules/business/src/main/resources/mapper/business/BusinessAlertMapper.xml @@ -2,11 +2,12 @@ - + - select id, + instance_id, wheel_id, task_id, task_image_id, @@ -43,8 +44,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" handle_source, create_by, create_time - from wayline_alert - ${ew.customSqlSegment} + from business_alert + ${ew.customSqlSegment} diff --git a/dk-modules/business/src/main/resources/mapper/business/BusinessPatrolAreasMapper.xml b/dk-modules/business/src/main/resources/mapper/business/BusinessPatrolAreasMapper.xml new file mode 100644 index 0000000..51d376f --- /dev/null +++ b/dk-modules/business/src/main/resources/mapper/business/BusinessPatrolAreasMapper.xml @@ -0,0 +1,55 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/dk-modules/business/src/main/resources/mapper/business/BusinessPatrolAreasPlatformMapper.xml b/dk-modules/business/src/main/resources/mapper/business/BusinessPatrolAreasPlatformMapper.xml new file mode 100644 index 0000000..a8d9948 --- /dev/null +++ b/dk-modules/business/src/main/resources/mapper/business/BusinessPatrolAreasPlatformMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/dk-modules/business/src/main/resources/mapper/business/BusinessPatrolAreasPointsMapper.xml b/dk-modules/business/src/main/resources/mapper/business/BusinessPatrolAreasPointsMapper.xml new file mode 100644 index 0000000..7c013c1 --- /dev/null +++ b/dk-modules/business/src/main/resources/mapper/business/BusinessPatrolAreasPointsMapper.xml @@ -0,0 +1,11 @@ + + + + + diff --git a/dk-modules/business/src/main/resources/mapper/business/BusinessPatrolAreasUserMapper.xml b/dk-modules/business/src/main/resources/mapper/business/BusinessPatrolAreasUserMapper.xml new file mode 100644 index 0000000..3a14a4b --- /dev/null +++ b/dk-modules/business/src/main/resources/mapper/business/BusinessPatrolAreasUserMapper.xml @@ -0,0 +1,9 @@ + + + + + diff --git a/dk-modules/business/src/main/resources/mapper/business/BusinessPlatformInfoCodeMapper.xml b/dk-modules/business/src/main/resources/mapper/business/BusinessPlatformInfoCodeMapper.xml new file mode 100644 index 0000000..de2160f --- /dev/null +++ b/dk-modules/business/src/main/resources/mapper/business/BusinessPlatformInfoCodeMapper.xml @@ -0,0 +1,10 @@ + + + + + diff --git a/dk-modules/business/src/main/resources/mapper/business/BusinessPlatformInfoMapper.xml b/dk-modules/business/src/main/resources/mapper/business/BusinessPlatformInfoMapper.xml new file mode 100644 index 0000000..0719692 --- /dev/null +++ b/dk-modules/business/src/main/resources/mapper/business/BusinessPlatformInfoMapper.xml @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + + diff --git a/dk-modules/system/src/main/java/org/dromara/system/dubbo/RemoteDeptServiceImpl.java b/dk-modules/system/src/main/java/org/dromara/system/dubbo/RemoteDeptServiceImpl.java index be10745..588735d 100644 --- a/dk-modules/system/src/main/java/org/dromara/system/dubbo/RemoteDeptServiceImpl.java +++ b/dk-modules/system/src/main/java/org/dromara/system/dubbo/RemoteDeptServiceImpl.java @@ -38,5 +38,13 @@ public class RemoteDeptServiceImpl implements RemoteDeptService { public List selectDeptsByList() { List list = sysDeptService.selectDeptsSimple(); return BeanUtil.copyToList(list, RemoteDeptVo.class); + + + } + + @Override + public RemoteDeptVo selectDeptById(Long deptId) { + SysDeptVo sysDeptVo = sysDeptService.selectDeptById(deptId); + return BeanUtil.copyProperties(sysDeptVo, RemoteDeptVo.class); } } diff --git a/dk-modules/workflow/pom.xml b/dk-modules/workflow/pom.xml index 5f13aa5..2e7733a 100644 --- a/dk-modules/workflow/pom.xml +++ b/dk-modules/workflow/pom.xml @@ -97,6 +97,11 @@ org.dromara api-workflow + + + org.dromara + api-resource + diff --git a/dk-modules/workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskServiceImpl.java b/dk-modules/workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskServiceImpl.java index c7f2d1e..db32b33 100644 --- a/dk-modules/workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskServiceImpl.java +++ b/dk-modules/workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskServiceImpl.java @@ -20,9 +20,13 @@ import org.dromara.common.core.utils.StringUtils; import org.dromara.common.core.utils.ValidatorUtils; import org.dromara.common.core.validate.AddGroup; import org.dromara.common.core.validate.EditGroup; +import org.dromara.common.mail.utils.MailUtils; import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.common.satoken.utils.LoginHelper; +import org.dromara.common.sse.dto.SseMessageDto; +import org.dromara.common.sse.utils.SseMessageUtils; +import org.dromara.resource.api.RemoteMessageService; import org.dromara.system.api.RemoteUserService; import org.dromara.system.api.domain.vo.RemoteUserVo; import org.dromara.warm.flow.core.dto.FlowParams; @@ -36,6 +40,7 @@ import org.dromara.warm.flow.orm.mapper.FlowInstanceMapper; import org.dromara.warm.flow.orm.mapper.FlowTaskMapper; import org.dromara.workflow.api.domain.RemoteStartProcessReturn; import org.dromara.workflow.common.ConditionalOnEnable; +import org.dromara.workflow.common.enums.MessageTypeEnum; import org.dromara.workflow.common.enums.TaskAssigneeType; import org.dromara.workflow.common.enums.TaskStatusEnum; import org.dromara.workflow.domain.bo.*; @@ -52,6 +57,8 @@ import org.springframework.transaction.annotation.Transactional; import java.math.BigDecimal; import java.util.*; +import java.util.concurrent.ScheduledExecutorService; +import java.util.concurrent.TimeUnit; import java.util.stream.Collectors; import static org.dromara.workflow.common.constant.FlowConstant.*; @@ -83,6 +90,9 @@ public class FlwTaskServiceImpl implements IFlwTaskService { @DubboReference private RemoteUserService remoteUserService; + @DubboReference(stub = "true") + private final RemoteMessageService remoteMessageService; + /** * 启动任务 * @@ -170,7 +180,7 @@ public class FlwTaskServiceImpl implements IFlwTaskService { Instance instance = taskService.skip(taskId, flowParams); this.setHandler(instance, flowTask, flowCopyList); // 消息通知 -// WorkflowUtils.sendMessage(definition.getFlowName(), ins.getId(), messageType, notice); + sendMessage(definition.getFlowName(), ins.getId(), messageType, notice); return true; } catch (Exception e) { log.error(e.getMessage(), e); @@ -178,6 +188,46 @@ public class FlwTaskServiceImpl implements IFlwTaskService { } } + private void sendMessage(String flowName, Long instId, List messageType, String message) { + List userList = new ArrayList<>(); + List list = this.selectByInstId(instId); + + if (StringUtils.isBlank(message)) { + message = "有新的【" + flowName + "】单据已经提交至您,请您及时处理。"; + } + for (Task task : list) { + List users = this.currentTaskAllUser(task.getId()); + if (CollUtil.isNotEmpty(users)) { + userList.addAll(users); + } + } + if (CollUtil.isNotEmpty(userList)) { + for (String code : messageType) { + MessageTypeEnum messageTypeEnum = MessageTypeEnum.getByCode(code); + if (ObjectUtil.isNotEmpty(messageTypeEnum)) { + switch (messageTypeEnum) { + case SYSTEM_MESSAGE: + SseMessageDto dto = new SseMessageDto(); + dto.setUserIds(StreamUtils.toList(userList, RemoteUserVo::getUserId).stream().distinct().collect(Collectors.toList())); + dto.setMessage(message); + dto.getUserIds().forEach(userId -> { + remoteMessageService.publishMessage(userId,dto.getMessage()); + }); + break; + case EMAIL_MESSAGE: + MailUtils.sendText(StreamUtils.join(userList, RemoteUserVo::getEmail), "单据审批提醒", message); + break; + case SMS_MESSAGE: + //todo 短信发送 + break; + default: + throw new IllegalStateException("Unexpected value: " + messageTypeEnum); + } + } + } + } + } + /** * 设置办理人 * @@ -397,7 +447,7 @@ public class FlwTaskServiceImpl implements IFlwTaskService { Instance instance = insService.getById(inst.getId()); this.setHandler(instance, task, null); // 消息通知 -// WorkflowUtils.sendMessage(definition.getFlowName(), instance.getId(), messageType, notice); + sendMessage(definition.getFlowName(), instance.getId(), messageType, notice); return true; } catch (Exception e) { log.error(e.getMessage(), e); From bd992f2b18befc0440cfd28921d080eeb564d4c0 Mon Sep 17 00:00:00 2001 From: yangwei <867012372@qq.com> Date: Sat, 1 Mar 2025 17:03:42 +0800 Subject: [PATCH 02/11] =?UTF-8?q?[feat]=201=E3=80=81=E5=BC=80=E6=94=BE?= =?UTF-8?q?=E5=90=AF=E7=94=A8=E5=B7=A5=E4=BD=9C=E6=B5=81=E6=96=B9=E6=B3=95?= =?UTF-8?q?,=E6=8F=90=E4=BE=9B=E9=A2=84=E8=AD=A6=E5=88=9B=E5=BB=BA?= =?UTF-8?q?=E6=97=B6=E8=B0=83=E7=94=A8=E6=96=B9=E6=B3=95=E5=90=AF=E5=8A=A8?= =?UTF-8?q?=202=E3=80=81=E5=A2=9E=E5=8A=A0=E5=B7=A5=E4=BD=9C=E6=B5=81?= =?UTF-8?q?=E5=A4=84=E7=BD=AE=E5=A4=84=E7=90=86=E6=89=A9=E5=B1=95=E7=B1=BB?= =?UTF-8?q?,=E7=81=B5=E6=B4=BB=E5=A4=84=E7=BD=AE,=E9=92=88=E5=AF=B9?= =?UTF-8?q?=E4=B8=8D=E5=90=8C=E7=B1=BB=E5=9E=8B=E5=8F=AF=E4=BB=A5=E5=AF=B9?= =?UTF-8?q?=E7=9B=B8=E5=BA=94=E7=9A=84=E9=A2=84=E8=AD=A6=E8=BF=9B=E8=A1=8C?= =?UTF-8?q?=E5=8D=95=E7=8B=AC=E4=B8=9A=E5=8A=A1=E5=A4=84=E7=90=86.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- dk-api/api-bom/pom.xml | 6 + dk-api/api-business/pom.xml | 26 +++ .../api/RemoteBusinessAlertService.java | 19 ++ dk-api/api-workflow/pom.xml | 5 + .../workflow/api/RemoteWorkflowService.java | 21 ++- dk-api/pom.xml | 1 + .../common/core/enums/BusinessStatusEnum.java | 18 ++ dk-modules/business/pom.xml | 9 + .../controller/BusinessAlertController.java | 62 ++----- .../business/domain/BusinessAlert.java | 30 ++- .../business/domain/bo/BusinessAlertBo.java | 45 +---- .../business/domain/vo/BusinessAlertVo.java | 15 +- .../dubbo/RemoteBusinessAlertServiceImpl.java | 29 +++ .../business/mapper/BusinessAlertMapper.java | 9 +- .../service/BusinessAlertService.java | 34 ++-- .../impl/BusinessAlertServiceImpl.java | 172 +++++++++++++----- .../mapper/business/BusinessAlertMapper.xml | 79 ++++---- dk-modules/workflow/pom.xml | 6 + .../common/handler/FlwCommonHandler.java | 34 ++++ .../workflow/domain/bo/FlowTaskBo.java | 5 + .../workflow/domain/bo/StartProcessBo.java | 4 +- .../dubbo/RemoteWorkflowServiceImpl.java | 18 +- .../workflow/handler/FlwAlertHandler.java | 60 ++++++ .../workflow/service/IFlwTaskService.java | 12 ++ .../service/impl/FlwTaskServiceImpl.java | 125 ++++++++----- .../service/impl/TestLeaveServiceImpl.java | 6 +- 26 files changed, 580 insertions(+), 270 deletions(-) create mode 100644 dk-api/api-business/pom.xml create mode 100644 dk-api/api-business/src/main/java/org/dromara/business/api/RemoteBusinessAlertService.java create mode 100644 dk-modules/business/src/main/java/org/dromara/business/dubbo/RemoteBusinessAlertServiceImpl.java create mode 100644 dk-modules/workflow/src/main/java/org/dromara/workflow/common/handler/FlwCommonHandler.java create mode 100644 dk-modules/workflow/src/main/java/org/dromara/workflow/handler/FlwAlertHandler.java diff --git a/dk-api/api-bom/pom.xml b/dk-api/api-bom/pom.xml index e989a65..3e6a7b4 100644 --- a/dk-api/api-bom/pom.xml +++ b/dk-api/api-bom/pom.xml @@ -41,6 +41,12 @@ ${revision} + + org.dromara + api-business + ${revision} + + diff --git a/dk-api/api-business/pom.xml b/dk-api/api-business/pom.xml new file mode 100644 index 0000000..ea00ddb --- /dev/null +++ b/dk-api/api-business/pom.xml @@ -0,0 +1,26 @@ + + + + org.dromara + dk-api + ${revision} + + 4.0.0 + + api-business + + api-business业务接口模块 + + + + + + + org.dromara + common-core + + + + diff --git a/dk-api/api-business/src/main/java/org/dromara/business/api/RemoteBusinessAlertService.java b/dk-api/api-business/src/main/java/org/dromara/business/api/RemoteBusinessAlertService.java new file mode 100644 index 0000000..d475630 --- /dev/null +++ b/dk-api/api-business/src/main/java/org/dromara/business/api/RemoteBusinessAlertService.java @@ -0,0 +1,19 @@ +package org.dromara.business.api; + + + +/** + * 预警服务 + * + * @author Lion Li + */ +public interface RemoteBusinessAlertService { + + + /** + * 更新此条预警审批时候的状态 + * @param businessId 业务id(预警、工单) + * @param flowStatus 流程状态 + */ + void updateAlertStatus(String businessId, String flowStatus); +} diff --git a/dk-api/api-workflow/pom.xml b/dk-api/api-workflow/pom.xml index 9a22a63..7275463 100644 --- a/dk-api/api-workflow/pom.xml +++ b/dk-api/api-workflow/pom.xml @@ -27,6 +27,11 @@ common-bus + + org.dromara + api-system + + diff --git a/dk-api/api-workflow/src/main/java/org/dromara/workflow/api/RemoteWorkflowService.java b/dk-api/api-workflow/src/main/java/org/dromara/workflow/api/RemoteWorkflowService.java index f533381..0bc8945 100644 --- a/dk-api/api-workflow/src/main/java/org/dromara/workflow/api/RemoteWorkflowService.java +++ b/dk-api/api-workflow/src/main/java/org/dromara/workflow/api/RemoteWorkflowService.java @@ -1,5 +1,6 @@ package org.dromara.workflow.api; +import org.dromara.system.api.domain.vo.RemoteUserVo; import org.dromara.workflow.api.domain.RemoteCompleteTask; import org.dromara.workflow.api.domain.RemoteStartProcess; import org.dromara.workflow.api.domain.RemoteStartProcessReturn; @@ -77,12 +78,26 @@ public interface RemoteWorkflowService { */ RemoteStartProcessReturn startWorkFlow(RemoteStartProcess startProcess); +// /** +// * 办理任务 +// * +// * @param completeTask 参数 +// * @return 结果 +// */ +// boolean completeTask(RemoteCompleteTask completeTask); + /** - * 办理任务 + * 获取当前任务的所有办理人 * - * @param completeTask 参数 + * @param taskId 任务id * @return 结果 */ - boolean completeTask(RemoteCompleteTask completeTask); + Map> currentTaskAllUser(List taskId); + + /** + * 审批前获取当前办理人,办理时会校验的该权限集合 + * 返回当前用户权限集合 + */ + List getPermissions(); } diff --git a/dk-api/pom.xml b/dk-api/pom.xml index 98a3afc..273f93e 100644 --- a/dk-api/pom.xml +++ b/dk-api/pom.xml @@ -13,6 +13,7 @@ api-system api-resource api-workflow + api-business dk-api diff --git a/dk-common/common-core/src/main/java/org/dromara/common/core/enums/BusinessStatusEnum.java b/dk-common/common-core/src/main/java/org/dromara/common/core/enums/BusinessStatusEnum.java index 96f13d9..d2c38dd 100644 --- a/dk-common/common-core/src/main/java/org/dromara/common/core/enums/BusinessStatusEnum.java +++ b/dk-common/common-core/src/main/java/org/dromara/common/core/enums/BusinessStatusEnum.java @@ -8,6 +8,7 @@ import org.dromara.common.core.utils.StringUtils; import java.util.Arrays; import java.util.List; +import java.util.Optional; /** * 业务状态枚举 @@ -17,6 +18,12 @@ import java.util.List; @Getter @AllArgsConstructor public enum BusinessStatusEnum { + + /** + * 验证 + */ + VERIFY("verify", "验证"), + /** * 已撤销 */ @@ -72,6 +79,17 @@ public enum BusinessStatusEnum { .orElse(StrUtil.EMPTY); } + + /** + * 根据status获取枚举 + * @param status + * @return + */ + public static BusinessStatusEnum getByStatus(String status){ + Optional optional = Arrays.stream(values()).filter(p -> StrUtil.equals(p.getStatus(),status)).findFirst(); + return optional.orElse(null); + } + /** * 启动流程校验 * diff --git a/dk-modules/business/pom.xml b/dk-modules/business/pom.xml index e09834a..25e6f4c 100644 --- a/dk-modules/business/pom.xml +++ b/dk-modules/business/pom.xml @@ -91,6 +91,11 @@ common-encrypt + + org.dromara + api-business + + org.jeecgframework @@ -103,6 +108,10 @@ + + org.dromara + api-workflow + diff --git a/dk-modules/business/src/main/java/org/dromara/business/controller/BusinessAlertController.java b/dk-modules/business/src/main/java/org/dromara/business/controller/BusinessAlertController.java index accfecd..fa97d24 100644 --- a/dk-modules/business/src/main/java/org/dromara/business/controller/BusinessAlertController.java +++ b/dk-modules/business/src/main/java/org/dromara/business/controller/BusinessAlertController.java @@ -4,6 +4,7 @@ import jakarta.servlet.http.HttpServletResponse; import jakarta.validation.constraints.NotEmpty; import jakarta.validation.constraints.NotNull; import lombok.RequiredArgsConstructor; +import org.dromara.business.domain.BusinessAlert; import org.dromara.business.domain.bo.BusinessAlertBo; import org.dromara.business.domain.vo.BusinessAlertVo; import org.dromara.business.service.BusinessAlertService; @@ -38,63 +39,30 @@ public class BusinessAlertController extends BaseController { private final BusinessAlertService businessAlertService; /** - * 查询预警任务列表 + * 查询全部预警 */ - @GetMapping("/alert/page") - public TableDataInfo pageBusinessAlert(BusinessAlertBo bo, PageQuery pageQuery) { + @GetMapping("/alert/page/all") + public TableDataInfo pageBusinessAlert(BusinessAlertBo bo, PageQuery pageQuery) { return businessAlertService.pageBusinessAlert(bo, pageQuery); } /** - * 获取预警任务详细信息 - * - * @param alertId 主键 + * 查询审批的预警 */ - @GetMapping("/alert/{alertId}") - public R getBusinessAlert(@NotNull(message = "主键不能为空") - @PathVariable String alertId) { - return R.ok(businessAlertService.getBusinessAlert(alertId)); + @GetMapping("/alert/page/todo") + public TableDataInfo pageBusinessAlertTodo(BusinessAlertBo bo, PageQuery pageQuery) { + return businessAlertService.pageBusinessAlertTodo(bo, pageQuery); } /** - * 新增预警任务 + * 查询审批完成的预警 + * @param bo + * @param pageQuery + * @return */ - @Log(title = "预警任务", businessType = BusinessType.INSERT) - @RepeatSubmit() - @PostMapping("/alert/add") - public R addBusinessAlert(@Validated(AddGroup.class) @RequestBody BusinessAlertBo param) { - return toAjax(businessAlertService.addBusinessAlert(param)); + @GetMapping("/alert/page/finish") + public TableDataInfo pageBusinessAlertFinish(BusinessAlertBo bo, PageQuery pageQuery) { + return businessAlertService.pageBusinessAlertFinish(bo, pageQuery); } - /** - * 修改预警任务 - */ - @Log(title = "预警任务", businessType = BusinessType.UPDATE) - @RepeatSubmit() - @PostMapping("/alert/edit") - public R editBusinessAlert(@Validated(EditGroup.class) @RequestBody BusinessAlertBo bo) { - return toAjax(businessAlertService.editBusinessAlert(bo)); - } - - /** - * 删除预警任务 - * - * @param alertIdList 主键串 - */ - @Log(title = "预警任务", businessType = BusinessType.DELETE) - @DeleteMapping("/alert/delete") - public R deleteBusinessAlert(@NotEmpty(message = "主键不能为空") - @RequestParam List alertIdList) { - return toAjax(businessAlertService.deleteBusinessAlert(alertIdList, true)); - } - - /** - * 导出预警任务列表 - */ - @Log(title = "预警任务", businessType = BusinessType.EXPORT) - @PostMapping("/alert/export") - public void exportBusinessAlert(BusinessAlertBo bo, HttpServletResponse response) { - List list = businessAlertService.listBusinessAlert(bo); - ExcelUtil.exportExcel(list, "预警任务", BusinessAlertVo.class, response); - } } diff --git a/dk-modules/business/src/main/java/org/dromara/business/domain/BusinessAlert.java b/dk-modules/business/src/main/java/org/dromara/business/domain/BusinessAlert.java index 56e3962..64e5346 100644 --- a/dk-modules/business/src/main/java/org/dromara/business/domain/BusinessAlert.java +++ b/dk-modules/business/src/main/java/org/dromara/business/domain/BusinessAlert.java @@ -1,9 +1,13 @@ package org.dromara.business.domain; +import org.dromara.common.core.enums.BusinessStatusEnum; import org.dromara.common.mybatis.core.domain.BaseEntity; import com.baomidou.mybatisplus.annotation.*; import lombok.Data; import lombok.EqualsAndHashCode; +import org.dromara.common.translation.annotation.Translation; +import org.dromara.common.translation.constant.TransConstant; + import java.util.Date; import java.io.Serial; @@ -25,13 +29,14 @@ public class BusinessAlert extends BaseEntity { /** * */ - @TableId(value = "id") + @TableId(type = IdType.ASSIGN_ID) private String id; + /** - * 流程实例Id + * 租户编号 */ - private Long instanceId; + private String tenantId; /** * 任务轮id @@ -122,9 +127,9 @@ public class BusinessAlert extends BaseEntity { private Long areaW; /** - * 0:验证 + * 流程处置状态(verify:验证,cancel:已撤销,draft:草稿,waiting:待审核,finish:已完成,invalid:已作废,back:已退回,termination:已终止) */ - private Long handleInType; + private BusinessStatusEnum handleType; /** * 是否违建 0:否,1:是 @@ -202,5 +207,20 @@ public class BusinessAlert extends BaseEntity { */ private Long handleSource; + /** + * 审批者 + */ + @TableField(exist = false) + private String approver; + + /** + * 审批者 + */ + @Translation(type = TransConstant.USER_ID_TO_NICKNAME, mapper = "approver") + @TableField(exist = false) + private String approveName; + + @TableField(exist = false) + private Long flowTaskId; } diff --git a/dk-modules/business/src/main/java/org/dromara/business/domain/bo/BusinessAlertBo.java b/dk-modules/business/src/main/java/org/dromara/business/domain/bo/BusinessAlertBo.java index f377e3b..090f616 100644 --- a/dk-modules/business/src/main/java/org/dromara/business/domain/bo/BusinessAlertBo.java +++ b/dk-modules/business/src/main/java/org/dromara/business/domain/bo/BusinessAlertBo.java @@ -11,7 +11,7 @@ import jakarta.validation.constraints.*; import java.util.Date; /** - * 预警任务业务对象 wayline_alert + * 预警任务业务对象 business_alert * * @author LionLi * @date 2025-02-27 @@ -20,206 +20,163 @@ import java.util.Date; @EqualsAndHashCode(callSuper = true) @AutoMapper(target = BusinessAlert.class, reverseConvertGenerate = false) public class BusinessAlertBo extends BaseEntity { - - /** - * - */ - @NotBlank(message = "不能为空", groups = { EditGroup.class }) - private String id; - /** * 任务轮id */ - @NotBlank(message = "任务轮id不能为空", groups = { AddGroup.class, EditGroup.class }) private String wheelId; /** * 媒体id */ - @NotBlank(message = "媒体id不能为空", groups = { AddGroup.class, EditGroup.class }) private String taskId; /** * 图片id */ - @NotBlank(message = "图片id不能为空", groups = { AddGroup.class, EditGroup.class }) private String taskImageId; /** * 处理原因 */ - @NotBlank(message = "处理原因不能为空", groups = { AddGroup.class, EditGroup.class }) private String reason; /** * 图片文件 */ - @NotBlank(message = "图片文件不能为空", groups = { AddGroup.class, EditGroup.class }) private String images; /** * 纬度 */ - @NotNull(message = "纬度不能为空", groups = { AddGroup.class, EditGroup.class }) private Long lat; /** * 精度 */ - @NotNull(message = "精度不能为空", groups = { AddGroup.class, EditGroup.class }) private Long lng; /** * 任务类型 */ - @NotBlank(message = "任务类型不能为空", groups = { AddGroup.class, EditGroup.class }) private String taskHandleType; /** * 任务内容 */ - @NotBlank(message = "任务内容不能为空", groups = { AddGroup.class, EditGroup.class }) private String taskContent; /** * 完成时间 */ - @NotNull(message = "完成时间不能为空", groups = { AddGroup.class, EditGroup.class }) private Date completeDate; /** * 模板图片 */ - @NotBlank(message = "模板图片不能为空", groups = { AddGroup.class, EditGroup.class }) private String mateSourceImgUrl; /** * 放大模板违建区域图片 */ - @NotBlank(message = "放大模板违建区域图片不能为空", groups = { AddGroup.class, EditGroup.class }) private String maxMateSourceImgUrl; /** * 放大违建区域图片 */ - @NotBlank(message = "放大违建区域图片不能为空", groups = { AddGroup.class, EditGroup.class }) private String maxImages; /** * 面积 */ - @NotNull(message = "面积不能为空", groups = { AddGroup.class, EditGroup.class }) private Long area; /** * 面积:长 */ - @NotNull(message = "面积:长不能为空", groups = { AddGroup.class, EditGroup.class }) private Long areaL; /** * 面积:宽 */ - @NotNull(message = "面积:宽不能为空", groups = { AddGroup.class, EditGroup.class }) private Long areaW; - /** - * 0:验证 - */ - @NotNull(message = "0:验证", groups = { AddGroup.class, EditGroup.class }) - private Long handleInType; /** * 是否违建 0:否,1:是 */ - @NotNull(message = "是否违建 0:否,1:是不能为空", groups = { AddGroup.class, EditGroup.class }) private Long isIllegal; /** * 部门id */ - @NotBlank(message = "部门id不能为空", groups = { AddGroup.class, EditGroup.class }) private String deptId; /** * 部门名称 */ - @NotBlank(message = "部门名称不能为空", groups = { AddGroup.class, EditGroup.class }) private String deptName; /** * 预警名称 */ - @NotBlank(message = "预警名称不能为空", groups = { AddGroup.class, EditGroup.class }) private String jobName; /** * 处理时间 */ - @NotNull(message = "处理时间不能为空", groups = { AddGroup.class, EditGroup.class }) private Date handleTime; /** * 其他:内容 */ - @NotBlank(message = "其他:内容不能为空", groups = { AddGroup.class, EditGroup.class }) private String taskHandle; /** * 平台类型 */ - @NotBlank(message = "平台类型不能为空", groups = { AddGroup.class, EditGroup.class }) private String platformType; /** * 像素坐标 */ - @NotBlank(message = "像素坐标不能为空", groups = { AddGroup.class, EditGroup.class }) private String pixelCoordinate; /** * 当前位置预警数量 */ - @NotNull(message = "当前位置预警数量不能为空", groups = { AddGroup.class, EditGroup.class }) private Long handleNum; /** * 国土所备注 */ - @NotBlank(message = "国土所备注不能为空", groups = { AddGroup.class, EditGroup.class }) private String territoryRemark; /** * 地类信息数据 */ - @NotBlank(message = "地类信息数据不能为空", groups = { AddGroup.class, EditGroup.class }) private String landCategories; /** * 相关文件 */ - @NotBlank(message = "相关文件不能为空", groups = { AddGroup.class, EditGroup.class }) private String territoryUrl; /** * 图片 */ - @NotBlank(message = "图片不能为空", groups = { AddGroup.class, EditGroup.class }) private String territoryPath; /** * 忽略原因 */ - @NotBlank(message = "忽略原因不能为空", groups = { AddGroup.class, EditGroup.class }) private String ignoringCause; /** * 来源:0:平台 1:小程序 */ - @NotNull(message = "来源:0:平台 1:小程序不能为空", groups = { AddGroup.class, EditGroup.class }) private Long handleSource; diff --git a/dk-modules/business/src/main/java/org/dromara/business/domain/vo/BusinessAlertVo.java b/dk-modules/business/src/main/java/org/dromara/business/domain/vo/BusinessAlertVo.java index 56e624d..5224245 100644 --- a/dk-modules/business/src/main/java/org/dromara/business/domain/vo/BusinessAlertVo.java +++ b/dk-modules/business/src/main/java/org/dromara/business/domain/vo/BusinessAlertVo.java @@ -5,6 +5,9 @@ import com.alibaba.excel.annotation.ExcelProperty; import io.github.linpeilie.annotations.AutoMapper; import lombok.Data; import org.dromara.business.domain.BusinessAlert; +import org.dromara.common.core.enums.BusinessStatusEnum; +import org.dromara.common.translation.annotation.Translation; +import org.dromara.common.translation.constant.TransConstant; import java.io.Serial; import java.io.Serializable; @@ -26,12 +29,6 @@ public class BusinessAlertVo implements Serializable { @Serial private static final long serialVersionUID = 1L; - /** - * - */ - @ExcelProperty(value = "") - private String id; - /** * 任务轮id */ @@ -130,10 +127,9 @@ public class BusinessAlertVo implements Serializable { private Long areaW; /** - * 0:验证 + * 流程处置状态(verify:验证,cancel:已撤销,draft:草稿,waiting:待审核,finish:已完成,invalid:已作废,back:已退回,termination:已终止) */ - @ExcelProperty(value = "0:验证") - private Long handleInType; + private BusinessStatusEnum handleType; /** * 是否违建 0:否,1:是 @@ -225,5 +221,4 @@ public class BusinessAlertVo implements Serializable { @ExcelProperty(value = "来源:0:平台 1:小程序") private Long handleSource; - } diff --git a/dk-modules/business/src/main/java/org/dromara/business/dubbo/RemoteBusinessAlertServiceImpl.java b/dk-modules/business/src/main/java/org/dromara/business/dubbo/RemoteBusinessAlertServiceImpl.java new file mode 100644 index 0000000..fe330f4 --- /dev/null +++ b/dk-modules/business/src/main/java/org/dromara/business/dubbo/RemoteBusinessAlertServiceImpl.java @@ -0,0 +1,29 @@ +package org.dromara.business.dubbo; + +import lombok.RequiredArgsConstructor; +import org.apache.dubbo.config.annotation.DubboService; +import org.dromara.business.api.RemoteBusinessAlertService; +import org.dromara.business.service.BusinessAlertService; +import org.springframework.stereotype.Service; + +/** + * 预警相关服务开放 + */ +@RequiredArgsConstructor +@Service +@DubboService +public class RemoteBusinessAlertServiceImpl implements RemoteBusinessAlertService { + + private final BusinessAlertService businessAlertService; + + + /** + * 更新此条预警审批时候的状态 + * @param businessId 业务id(预警、工单) + * @param flowStatus 流程状态 + */ + @Override + public void updateAlertStatus(String businessId, String flowStatus) { + businessAlertService.updateAlertStatus(businessId,flowStatus); + } +} diff --git a/dk-modules/business/src/main/java/org/dromara/business/mapper/BusinessAlertMapper.java b/dk-modules/business/src/main/java/org/dromara/business/mapper/BusinessAlertMapper.java index af7a92a..3481dd5 100644 --- a/dk-modules/business/src/main/java/org/dromara/business/mapper/BusinessAlertMapper.java +++ b/dk-modules/business/src/main/java/org/dromara/business/mapper/BusinessAlertMapper.java @@ -1,10 +1,12 @@ package org.dromara.business.mapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import org.dromara.business.domain.BusinessAlert; import org.dromara.business.domain.vo.BusinessAlertVo; import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; +import org.dromara.common.mybatis.core.page.TableDataInfo; /** * 预警任务Mapper接口 @@ -14,5 +16,10 @@ import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; */ public interface BusinessAlertMapper extends BaseMapperPlus { - Page pageAlert(Page page, LambdaQueryWrapper lqw); + Page pageBusinessAlert(Page build, QueryWrapper wrapper); + + Page pageAlertFinish(Page page, QueryWrapper wrapper); + + Page pageAlertTodo(Page build, QueryWrapper wrapper); + } diff --git a/dk-modules/business/src/main/java/org/dromara/business/service/BusinessAlertService.java b/dk-modules/business/src/main/java/org/dromara/business/service/BusinessAlertService.java index 7f8c99a..1395238 100644 --- a/dk-modules/business/src/main/java/org/dromara/business/service/BusinessAlertService.java +++ b/dk-modules/business/src/main/java/org/dromara/business/service/BusinessAlertService.java @@ -16,30 +16,12 @@ import java.util.List; */ public interface BusinessAlertService { - /** - * 查询预警任务 - * - * @param id 主键 - * @return 预警任务 - */ - BusinessAlertVo getBusinessAlert(String id); - /** - * 分页查询预警任务列表 - * - * @param bo 查询条件 - * @param pageQuery 分页参数 - * @return 预警任务分页列表 - */ - TableDataInfo pageBusinessAlert(BusinessAlertBo bo, PageQuery pageQuery); + TableDataInfo pageBusinessAlertTodo(BusinessAlertBo bo, PageQuery pageQuery); - /** - * 查询符合条件的预警任务列表 - * - * @param param 查询条件 - * @return 预警任务列表 - */ - List listBusinessAlert(BusinessAlertBo param); + TableDataInfo pageBusinessAlertFinish(BusinessAlertBo bo, PageQuery pageQuery); + + TableDataInfo pageBusinessAlert(BusinessAlertBo bo, PageQuery pageQuery); /** * 新增预警任务 @@ -74,4 +56,12 @@ public interface BusinessAlertService { * @return 是否删除成功 */ Boolean deleteBusinessAlert(List alertIdList, Boolean isValid); + + /** + * 修改预警中处置状态 + * @param businessId + * @param flowStatus + */ + void updateAlertStatus(String businessId, String flowStatus); + } diff --git a/dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessAlertServiceImpl.java b/dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessAlertServiceImpl.java index c87f808..3f3d707 100644 --- a/dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessAlertServiceImpl.java +++ b/dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessAlertServiceImpl.java @@ -1,22 +1,33 @@ package org.dromara.business.service.impl; +import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import lombok.RequiredArgsConstructor; +import org.apache.dubbo.config.annotation.DubboReference; import org.dromara.business.domain.BusinessAlert; import org.dromara.business.domain.bo.BusinessAlertBo; import org.dromara.business.domain.vo.BusinessAlertVo; import org.dromara.business.mapper.BusinessAlertMapper; import org.dromara.business.service.BusinessAlertService; +import org.dromara.common.core.enums.BusinessStatusEnum; import org.dromara.common.core.exception.ServiceException; import org.dromara.common.core.utils.MapstructUtils; +import org.dromara.common.core.utils.StreamUtils; 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.domain.vo.RemoteUserVo; +import org.dromara.workflow.api.RemoteWorkflowService; import org.springframework.stereotype.Service; +import java.util.Collections; import java.util.List; +import java.util.Map; /** * 预警任务Service业务层处理 @@ -30,43 +41,8 @@ public class BusinessAlertServiceImpl implements BusinessAlertService { private final BusinessAlertMapper baseMapper; - /** - * 查询预警任务 - * - * @param id 主键 - * @return 预警任务 - */ - @Override - public BusinessAlertVo getBusinessAlert(String id){ - return baseMapper.selectVoById(id); - } - - /** - * 分页查询预警任务列表 - * - * @param param 查询条件 - * @param pageQuery 分页参数 - * @return 预警任务分页列表 - */ - @Override - public TableDataInfo pageBusinessAlert(BusinessAlertBo param, PageQuery pageQuery) { - LambdaQueryWrapper lqw = buildQueryWrapper(param); - Page result = baseMapper.pageAlert(pageQuery.build(), lqw); - return TableDataInfo.build(result); - } - - - /** - * 查询符合条件的预警任务列表 - * - * @param param 查询条件 - * @return 预警任务列表 - */ - @Override - public List listBusinessAlert(BusinessAlertBo param) { - LambdaQueryWrapper lqw = buildQueryWrapper(param); - return baseMapper.selectVoList(lqw); - } + @DubboReference + RemoteWorkflowService remoteWorkflowService; /** @@ -105,14 +81,6 @@ public class BusinessAlertServiceImpl implements BusinessAlertService { return baseMapper.updateById(businessAlert) > 0; } - /** - * 保存前的数据校验 - */ - private void validEntityBeforeSave(BusinessAlert alert, Boolean validId){ - if (ObjectUtil.isEmpty(alert.getId())){ - throw new ServiceException("预警【Id】为空!"); - } - } /** * 校验并批量删除预警任务信息 @@ -131,11 +99,119 @@ public class BusinessAlertServiceImpl implements BusinessAlertService { return baseMapper.deleteByIds(alertIdList) > 0; } - private LambdaQueryWrapper buildQueryWrapper(BusinessAlertBo bo) { - LambdaQueryWrapper wrapper = Wrappers.lambdaQuery(); + /** + * 修改预警中处置状态 + * @param businessId + * @param flowStatus + */ + @Override + public void updateAlertStatus(String businessId, String flowStatus) { + LambdaUpdateWrapper wrapper = new LambdaUpdateWrapper<>(); + wrapper.set(BusinessAlert::getHandleType, BusinessStatusEnum.getByStatus(flowStatus)); + wrapper.eq(BusinessAlert::getId, businessId); + + this.baseMapper.update(wrapper); + + } + + + /** + * 查询全部预警 + * @param bo + * @param pageQuery + * @return + */ + @Override + public TableDataInfo pageBusinessAlert(BusinessAlertBo bo, PageQuery pageQuery) { + QueryWrapper wrapper = buildQueryWrapper(bo); - wrapper.orderByAsc(BusinessAlert::getCreateTime); + Page page = this.baseMapper.pageBusinessAlert(pageQuery.build(), wrapper); + + return TableDataInfo.build(page); + } + + /** + * 查询当前用户已完成预警 + * @param bo + * @param pageQuery + * @return + */ + @Override + public TableDataInfo pageBusinessAlertFinish(BusinessAlertBo bo, PageQuery pageQuery) { + QueryWrapper wrapper = buildQueryWrapper(bo); + buildCommonQueryWrapper(wrapper); + + wrapper.in("a.approver", LoginHelper.getUserId()); + Page page = this.baseMapper.pageAlertFinish(pageQuery.build(), wrapper); + + return TableDataInfo.build(page); + } + + + /** + * 查询当前用户待办预警 + * @param bo + * @param pageQuery + * @return + */ + @Override + public TableDataInfo pageBusinessAlertTodo(BusinessAlertBo bo, PageQuery pageQuery) { + QueryWrapper wrapper = buildQueryWrapper(bo); + buildCommonQueryWrapper(wrapper); + + wrapper.eq("uu.del_flag", 0); + wrapper.in("uu.type", 1,2,3); + + wrapper.in("a.processed_by", remoteWorkflowService.getPermissions()); + wrapper.in("a.flow_status", BusinessStatusEnum.WAITING.getStatus()); + + Page page = this.baseMapper.pageAlertTodo(pageQuery.build(), wrapper); + List records = page.getRecords(); + if (CollUtil.isNotEmpty(records)) { + List taskIds = StreamUtils.toList(records, BusinessAlert::getFlowTaskId); + Map> listMap = remoteWorkflowService.currentTaskAllUser(taskIds); + records.forEach(t -> { + List userList = listMap.getOrDefault(t.getId(), Collections.emptyList()); + if (CollUtil.isNotEmpty(userList)) { + t.setApprover(StreamUtils.join(userList, e -> String.valueOf(e.getUserId()))); + t.setApproveName(StreamUtils.join(userList, RemoteUserVo::getNickName)); + } + }); + } + return TableDataInfo.build(page); + } + + + /** + * 构建wrapper + * @param bo + * @return + */ + private QueryWrapper buildQueryWrapper(BusinessAlertBo bo) { + QueryWrapper wrapper = new QueryWrapper<>(); + + wrapper.orderByAsc("ba.create_time"); return wrapper; } + + /** + * 构建通用流程wrapper + * @param wrapper + */ + private void buildCommonQueryWrapper(QueryWrapper wrapper) { + wrapper.eq("a.del_flag",0); + wrapper.eq("b.del_flag",0); + wrapper.eq("c.del_flag",0); + wrapper.in("a.node_type",1,3,4); + } + + /** + * 保存前的数据校验 + */ + private void validEntityBeforeSave(BusinessAlert alert, Boolean validId){ + if (ObjectUtil.isEmpty(alert.getId())){ + throw new ServiceException("预警【Id】为空!"); + } + } } diff --git a/dk-modules/business/src/main/resources/mapper/business/BusinessAlertMapper.xml b/dk-modules/business/src/main/resources/mapper/business/BusinessAlertMapper.xml index 36badec..95b94f0 100644 --- a/dk-modules/business/src/main/resources/mapper/business/BusinessAlertMapper.xml +++ b/dk-modules/business/src/main/resources/mapper/business/BusinessAlertMapper.xml @@ -4,49 +4,44 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> - + select + ba.*, + b.flow_status flowStatus, + b.business_id businessId, + from dk_business.business_alert ba + left join dk_workflow.flow_instance b on ba.id = b.business_id + ${ew.getCustomSqlSegment} + + + + diff --git a/dk-modules/workflow/pom.xml b/dk-modules/workflow/pom.xml index 2e7733a..3a1529e 100644 --- a/dk-modules/workflow/pom.xml +++ b/dk-modules/workflow/pom.xml @@ -102,6 +102,12 @@ org.dromara api-resource + + + org.dromara + api-business + + diff --git a/dk-modules/workflow/src/main/java/org/dromara/workflow/common/handler/FlwCommonHandler.java b/dk-modules/workflow/src/main/java/org/dromara/workflow/common/handler/FlwCommonHandler.java new file mode 100644 index 0000000..69920a8 --- /dev/null +++ b/dk-modules/workflow/src/main/java/org/dromara/workflow/common/handler/FlwCommonHandler.java @@ -0,0 +1,34 @@ +package org.dromara.workflow.common.handler; + +import org.dromara.workflow.api.event.ProcessCreateTaskEvent; +import org.dromara.workflow.api.event.ProcessDeleteEvent; +import org.dromara.workflow.api.event.ProcessEvent; + +public interface FlwCommonHandler { + + /** + * 总体流程监听(例如: 草稿,撤销,退回,作废,终止,已完成,单任务完成等) + * + * @param processEvent 参数 + */ + public void processHandler(ProcessEvent processEvent); + + /** + * 执行任务创建监听 + * 在方法中判断流程节点key + * if ("xxx".equals(processCreateTaskEvent.getNodeCode())) { + * //执行业务逻辑 + * } + * + * @param processCreateTaskEvent 参数 + */ + public void processCreateTaskHandler(ProcessCreateTaskEvent processCreateTaskEvent); + + /** + * 监听删除流程事件 + * 正常使用只需#processDeleteEvent.flowCode=='leave1' + * + * @param processDeleteEvent 参数 + */ + public void processDeleteHandler(ProcessDeleteEvent processDeleteEvent); +} diff --git a/dk-modules/workflow/src/main/java/org/dromara/workflow/domain/bo/FlowTaskBo.java b/dk-modules/workflow/src/main/java/org/dromara/workflow/domain/bo/FlowTaskBo.java index 64dd082..dfcafae 100644 --- a/dk-modules/workflow/src/main/java/org/dromara/workflow/domain/bo/FlowTaskBo.java +++ b/dk-modules/workflow/src/main/java/org/dromara/workflow/domain/bo/FlowTaskBo.java @@ -52,4 +52,9 @@ public class FlowTaskBo implements Serializable { */ private List createByIds; + /** + * 业务Id + */ + private String businessId; + } diff --git a/dk-modules/workflow/src/main/java/org/dromara/workflow/domain/bo/StartProcessBo.java b/dk-modules/workflow/src/main/java/org/dromara/workflow/domain/bo/StartProcessBo.java index ea21a81..a0893fa 100644 --- a/dk-modules/workflow/src/main/java/org/dromara/workflow/domain/bo/StartProcessBo.java +++ b/dk-modules/workflow/src/main/java/org/dromara/workflow/domain/bo/StartProcessBo.java @@ -23,13 +23,13 @@ public class StartProcessBo implements Serializable { private static final long serialVersionUID = 1L; /** - * 业务唯一值id + * 业务唯一值id,根据具体业务来例如预警可以为预警Id */ @NotBlank(message = "业务ID不能为空", groups = {AddGroup.class}) private String businessId; /** - * 流程定义编码 + * 流程定义编码,不同的审批流程,例如预警可以为alert */ @NotBlank(message = "流程定义编码不能为空", groups = {AddGroup.class}) private String flowCode; diff --git a/dk-modules/workflow/src/main/java/org/dromara/workflow/dubbo/RemoteWorkflowServiceImpl.java b/dk-modules/workflow/src/main/java/org/dromara/workflow/dubbo/RemoteWorkflowServiceImpl.java index d9a83ed..2f0b230 100644 --- a/dk-modules/workflow/src/main/java/org/dromara/workflow/dubbo/RemoteWorkflowServiceImpl.java +++ b/dk-modules/workflow/src/main/java/org/dromara/workflow/dubbo/RemoteWorkflowServiceImpl.java @@ -2,10 +2,12 @@ package org.dromara.workflow.dubbo; import lombok.RequiredArgsConstructor; import org.apache.dubbo.config.annotation.DubboService; +import org.dromara.system.api.domain.vo.RemoteUserVo; import org.dromara.workflow.api.RemoteWorkflowService; import org.dromara.workflow.api.domain.RemoteCompleteTask; import org.dromara.workflow.api.domain.RemoteStartProcess; import org.dromara.workflow.api.domain.RemoteStartProcessReturn; +import org.dromara.workflow.service.IFlwTaskService; import org.dromara.workflow.service.WorkflowService; import org.springframework.stereotype.Service; @@ -25,6 +27,8 @@ public class RemoteWorkflowServiceImpl implements RemoteWorkflowService { private final WorkflowService workflowService; + private final IFlwTaskService flwTaskService; + @Override public boolean deleteInstance(List businessIds) { return workflowService.deleteInstance(businessIds); @@ -66,8 +70,18 @@ public class RemoteWorkflowServiceImpl implements RemoteWorkflowService { } @Override - public boolean completeTask(RemoteCompleteTask completeTask) { - return workflowService.completeTask(completeTask); + public Map> currentTaskAllUser(List taskIds) { + return flwTaskService.currentTaskAllUser(taskIds); } + @Override + public List getPermissions() { + return flwTaskService.getPermissions(); + } + +// @Override +// public boolean completeTask(RemoteCompleteTask completeTask) { +// return workflowService.completeTask(completeTask); +// } + } diff --git a/dk-modules/workflow/src/main/java/org/dromara/workflow/handler/FlwAlertHandler.java b/dk-modules/workflow/src/main/java/org/dromara/workflow/handler/FlwAlertHandler.java new file mode 100644 index 0000000..2fb3921 --- /dev/null +++ b/dk-modules/workflow/src/main/java/org/dromara/workflow/handler/FlwAlertHandler.java @@ -0,0 +1,60 @@ +package org.dromara.workflow.handler; + +import lombok.extern.slf4j.Slf4j; +import org.apache.dubbo.config.annotation.DubboReference; +import org.dromara.business.api.RemoteBusinessAlertService; +import org.dromara.common.core.enums.BusinessStatusEnum; +import org.dromara.workflow.api.event.ProcessCreateTaskEvent; +import org.dromara.workflow.api.event.ProcessDeleteEvent; +import org.dromara.workflow.api.event.ProcessEvent; +import org.dromara.workflow.common.ConditionalOnEnable; +import org.dromara.workflow.common.handler.FlwCommonHandler; +import org.springframework.context.event.EventListener; +import org.springframework.stereotype.Component; + +/** + * 流程预警扩展业务 + */ +@ConditionalOnEnable +@Slf4j +@Component +public class FlwAlertHandler implements FlwCommonHandler { + + @DubboReference + RemoteBusinessAlertService alertService; + + /** + * 总体流程监听(例如: 草稿,撤销,退回,作废,终止,已完成,单任务完成等) + * + * @param processEvent 参数 + */ + @EventListener(condition = "#processEvent.flowCode.startsWith('leave')") + @Override + public void processHandler(ProcessEvent processEvent) { + alertService.updateAlertStatus(processEvent.getBusinessId(),processEvent.getStatus()); + } + + /** + * 流程创建的时候,将预警表中的状态进行修改 + * 执行任务创建监听 + * + * @param processCreateTaskEvent 参数 + */ + @EventListener(condition = "#processCreateTaskEvent.flowCode.startsWith('leave')") + @Override + public void processCreateTaskHandler(ProcessCreateTaskEvent processCreateTaskEvent) { + alertService.updateAlertStatus(processCreateTaskEvent.getBusinessId(), BusinessStatusEnum.WAITING.getStatus()); + } + + /** + * 监听删除流程事件 + * 正常使用只需#processDeleteEvent.flowCode=='leave1' + * + * @param processDeleteEvent 参数 + */ + @EventListener(condition = "#processDeleteEvent.flowCode.startsWith('leave')") + @Override + public void processDeleteHandler(ProcessDeleteEvent processDeleteEvent) { + + } +} diff --git a/dk-modules/workflow/src/main/java/org/dromara/workflow/service/IFlwTaskService.java b/dk-modules/workflow/src/main/java/org/dromara/workflow/service/IFlwTaskService.java index 65f990e..4dda912 100644 --- a/dk-modules/workflow/src/main/java/org/dromara/workflow/service/IFlwTaskService.java +++ b/dk-modules/workflow/src/main/java/org/dromara/workflow/service/IFlwTaskService.java @@ -3,7 +3,10 @@ package org.dromara.workflow.service; import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.system.api.domain.vo.RemoteUserVo; +import org.dromara.warm.flow.core.dto.FlowParams; import org.dromara.warm.flow.core.entity.Node; +import org.dromara.warm.flow.core.entity.Task; +import org.dromara.warm.flow.core.service.impl.TaskServiceImpl; import org.dromara.warm.flow.orm.entity.FlowHisTask; import org.dromara.warm.flow.orm.entity.FlowTask; import org.dromara.workflow.api.domain.RemoteStartProcessReturn; @@ -46,6 +49,7 @@ public interface IFlwTaskService { */ TableDataInfo pageByTaskWait(FlowTaskBo flowTaskBo, PageQuery pageQuery); + /** * 查询当前租户所有待办任务 * @@ -55,6 +59,8 @@ public interface IFlwTaskService { */ TableDataInfo pageByTaskFinish(FlowTaskBo flowTaskBo, PageQuery pageQuery); + + /** * 查询待办任务 * @@ -188,4 +194,10 @@ public interface IFlwTaskService { * @return 结果 */ List currentTaskAllUser(Long taskId); + + /** + * 审批前获取当前办理人,办理时会校验的该权限集合 + * 返回当前用户权限集合 + */ + List getPermissions(); } diff --git a/dk-modules/workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskServiceImpl.java b/dk-modules/workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskServiceImpl.java index db32b33..34daefb 100644 --- a/dk-modules/workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskServiceImpl.java +++ b/dk-modules/workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskServiceImpl.java @@ -52,6 +52,8 @@ import org.dromara.workflow.mapper.FlwCategoryMapper; import org.dromara.workflow.mapper.FlwTaskMapper; import org.dromara.workflow.service.IFlwTaskService; import org.dromara.workflow.utils.WorkflowUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.ApplicationContext; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -93,6 +95,9 @@ public class FlwTaskServiceImpl implements IFlwTaskService { @DubboReference(stub = "true") private final RemoteMessageService remoteMessageService; + @Autowired + private ApplicationContext applicationContext; + /** * 启动任务 * @@ -139,6 +144,9 @@ public class FlwTaskServiceImpl implements IFlwTaskService { RemoteStartProcessReturn dto = new RemoteStartProcessReturn(); dto.setProcessInstanceId(instance.getId()); dto.setTaskId(taskList.get(0).getId()); + + //创建任务 + executeTask(taskList.get(0).getId()); return dto; } @@ -188,46 +196,6 @@ public class FlwTaskServiceImpl implements IFlwTaskService { } } - private void sendMessage(String flowName, Long instId, List messageType, String message) { - List userList = new ArrayList<>(); - List list = this.selectByInstId(instId); - - if (StringUtils.isBlank(message)) { - message = "有新的【" + flowName + "】单据已经提交至您,请您及时处理。"; - } - for (Task task : list) { - List users = this.currentTaskAllUser(task.getId()); - if (CollUtil.isNotEmpty(users)) { - userList.addAll(users); - } - } - if (CollUtil.isNotEmpty(userList)) { - for (String code : messageType) { - MessageTypeEnum messageTypeEnum = MessageTypeEnum.getByCode(code); - if (ObjectUtil.isNotEmpty(messageTypeEnum)) { - switch (messageTypeEnum) { - case SYSTEM_MESSAGE: - SseMessageDto dto = new SseMessageDto(); - dto.setUserIds(StreamUtils.toList(userList, RemoteUserVo::getUserId).stream().distinct().collect(Collectors.toList())); - dto.setMessage(message); - dto.getUserIds().forEach(userId -> { - remoteMessageService.publishMessage(userId,dto.getMessage()); - }); - break; - case EMAIL_MESSAGE: - MailUtils.sendText(StreamUtils.join(userList, RemoteUserVo::getEmail), "单据审批提醒", message); - break; - case SMS_MESSAGE: - //todo 短信发送 - break; - default: - throw new IllegalStateException("Unexpected value: " + messageTypeEnum); - } - } - } - } - } - /** * 设置办理人 * @@ -319,12 +287,23 @@ public class FlwTaskServiceImpl implements IFlwTaskService { public TableDataInfo pageByTaskWait(FlowTaskBo flowTaskBo, PageQuery pageQuery) { QueryWrapper queryWrapper = buildQueryWrapper(flowTaskBo); queryWrapper.eq("t.node_type", NodeType.BETWEEN.getKey()); - queryWrapper.in("t.processed_by", SpringUtils.getBean(WorkflowPermissionHandler.class).permissions()); + queryWrapper.in("t.processed_by", this.getPermissions()); queryWrapper.in("t.flow_status", BusinessStatusEnum.WAITING.getStatus()); Page page = this.getFlowTaskVoPage(pageQuery, queryWrapper); + + return TableDataInfo.build(page); } + /** + * 审批前获取当前办理人,办理时会校验的该权限集合 + * 返回当前用户权限集合 + */ + @Override + public List getPermissions() { + return SpringUtils.getBean(WorkflowPermissionHandler.class).permissions(); + } + /** * 查询当前用户的已办任务 * @@ -341,6 +320,7 @@ public class FlwTaskServiceImpl implements IFlwTaskService { return TableDataInfo.build(page); } + /** * 查询待办任务 * @@ -405,6 +385,9 @@ public class FlwTaskServiceImpl implements IFlwTaskService { wrapper.like(StringUtils.isNotBlank(flowTaskBo.getFlowName()), "t.flow_name", flowTaskBo.getFlowName()); wrapper.like(StringUtils.isNotBlank(flowTaskBo.getFlowCode()), "t.flow_code", flowTaskBo.getFlowCode()); wrapper.in(CollUtil.isNotEmpty(flowTaskBo.getCreateByIds()), "t.create_by", flowTaskBo.getCreateByIds()); + if (ObjectUtil.isNotEmpty(flowTaskBo.getBusinessId())){ + wrapper.eq("i.business_id", flowTaskBo.getBusinessId()); + } if (StringUtils.isNotBlank(flowTaskBo.getCategory())) { List categoryIds = flwCategoryMapper.selectCategoryIdsByParentId(Convert.toLong(flowTaskBo.getCategory())); wrapper.in("t.category", StreamUtils.toList(categoryIds, Convert::toStr)); @@ -737,4 +720,64 @@ public class FlwTaskServiceImpl implements IFlwTaskService { } return remoteUserService.selectListByIds(StreamUtils.toList(userList, e -> Long.valueOf(e.getProcessedBy()))); } + + /** + * 初始化流程任务 + * @param taskId + */ + public void executeTask(Long taskId) { + CompleteTaskBo completeTaskBo = new CompleteTaskBo(); + completeTaskBo.setTaskId(taskId); + completeTaskBo.setMessageType(List.of(MessageTypeEnum.SYSTEM_MESSAGE.getCode())); + IFlwTaskService service = applicationContext.getBean(IFlwTaskService.class); + service.completeTask(completeTaskBo); + } + + /** + * 发送消息 + * @param flowName + * @param instId + * @param messageType + * @param message + */ + private void sendMessage(String flowName, Long instId, List messageType, String message) { + List userList = new ArrayList<>(); + List list = this.selectByInstId(instId); + + if (StringUtils.isBlank(message)) { + message = "有新的【" + flowName + "】单据已经提交至您,请您及时处理。"; + } + for (Task task : list) { + List users = this.currentTaskAllUser(task.getId()); + if (CollUtil.isNotEmpty(users)) { + userList.addAll(users); + } + } + if (CollUtil.isNotEmpty(userList)) { + for (String code : messageType) { + MessageTypeEnum messageTypeEnum = MessageTypeEnum.getByCode(code); + if (ObjectUtil.isNotEmpty(messageTypeEnum)) { + switch (messageTypeEnum) { + case SYSTEM_MESSAGE: + SseMessageDto dto = new SseMessageDto(); + dto.setUserIds(StreamUtils.toList(userList, RemoteUserVo::getUserId).stream().distinct().collect(Collectors.toList())); + dto.setMessage(message); + dto.getUserIds().forEach(userId -> { + remoteMessageService.publishMessage(userId,dto.getMessage()); + }); + break; + case EMAIL_MESSAGE: + MailUtils.sendText(StreamUtils.join(userList, RemoteUserVo::getEmail), "单据审批提醒", message); + break; + case SMS_MESSAGE: + //todo 短信发送 + break; + default: + throw new IllegalStateException("Unexpected value: " + messageTypeEnum); + } + } + } + } + } + } diff --git a/dk-modules/workflow/src/main/java/org/dromara/workflow/service/impl/TestLeaveServiceImpl.java b/dk-modules/workflow/src/main/java/org/dromara/workflow/service/impl/TestLeaveServiceImpl.java index 858f7c2..03b21c3 100644 --- a/dk-modules/workflow/src/main/java/org/dromara/workflow/service/impl/TestLeaveServiceImpl.java +++ b/dk-modules/workflow/src/main/java/org/dromara/workflow/service/impl/TestLeaveServiceImpl.java @@ -130,7 +130,7 @@ public class TestLeaveServiceImpl implements ITestLeaveService { * * @param processEvent 参数 */ - @EventListener(condition = "#processEvent.flowCode.startsWith('leave')") +// @EventListener(condition = "#processEvent.flowCode.startsWith('leave')") public void processHandler(ProcessEvent processEvent) { TenantHelper.dynamic(processEvent.getTenantId(), () -> { log.info("当前任务执行了{}", processEvent.toString()); @@ -163,7 +163,7 @@ public class TestLeaveServiceImpl implements ITestLeaveService { * * @param processCreateTaskEvent 参数 */ - @EventListener(condition = "#processCreateTaskEvent.flowCode.startsWith('leave')") +// @EventListener(condition = "#processCreateTaskEvent.flowCode.startsWith('leave')") public void processCreateTaskHandler(ProcessCreateTaskEvent processCreateTaskEvent) { TenantHelper.dynamic(processCreateTaskEvent.getTenantId(), () -> { log.info("当前任务创建了{}", processCreateTaskEvent.toString()); @@ -180,7 +180,7 @@ public class TestLeaveServiceImpl implements ITestLeaveService { * * @param processDeleteEvent 参数 */ - @EventListener(condition = "#processDeleteEvent.flowCode.startsWith('leave')") +// @EventListener(condition = "#processDeleteEvent.flowCode.startsWith('leave')") public void processDeleteHandler(ProcessDeleteEvent processDeleteEvent) { TenantHelper.dynamic(processDeleteEvent.getTenantId(), () -> { log.info("监听删除流程事件,当前任务执行了{}", processDeleteEvent.toString()); From ba652ffedfc63a6d0d3c48b02d67ca2235b41d92 Mon Sep 17 00:00:00 2001 From: yangwei <867012372@qq.com> Date: Sat, 1 Mar 2025 17:28:10 +0800 Subject: [PATCH 03/11] =?UTF-8?q?[feat]=201=E3=80=81=E4=BF=AE=E5=A4=8D?= =?UTF-8?q?=E5=B7=A5=E4=BD=9C=E6=B5=81=E6=97=A0=E6=B3=95=E6=8E=A8=E9=80=81?= =?UTF-8?q?=E6=B6=88=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../org/dromara/common/sse/listener/SseTopicListener.java | 2 ++ .../java/org/dromara/workflow/handler/FlwAlertHandler.java | 6 +++--- .../dromara/workflow/service/impl/TestLeaveServiceImpl.java | 6 +++--- 3 files changed, 8 insertions(+), 6 deletions(-) diff --git a/dk-common/common-sse/src/main/java/org/dromara/common/sse/listener/SseTopicListener.java b/dk-common/common-sse/src/main/java/org/dromara/common/sse/listener/SseTopicListener.java index 7a4dff1..9adf1a1 100644 --- a/dk-common/common-sse/src/main/java/org/dromara/common/sse/listener/SseTopicListener.java +++ b/dk-common/common-sse/src/main/java/org/dromara/common/sse/listener/SseTopicListener.java @@ -7,6 +7,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.ApplicationArguments; import org.springframework.boot.ApplicationRunner; import org.springframework.core.Ordered; +import org.springframework.stereotype.Component; /** * SSE 主题订阅监听器 @@ -14,6 +15,7 @@ import org.springframework.core.Ordered; * @author Lion Li */ @Slf4j +@Component public class SseTopicListener implements ApplicationRunner, Ordered { @Autowired diff --git a/dk-modules/workflow/src/main/java/org/dromara/workflow/handler/FlwAlertHandler.java b/dk-modules/workflow/src/main/java/org/dromara/workflow/handler/FlwAlertHandler.java index 2fb3921..0e4dfbc 100644 --- a/dk-modules/workflow/src/main/java/org/dromara/workflow/handler/FlwAlertHandler.java +++ b/dk-modules/workflow/src/main/java/org/dromara/workflow/handler/FlwAlertHandler.java @@ -28,7 +28,7 @@ public class FlwAlertHandler implements FlwCommonHandler { * * @param processEvent 参数 */ - @EventListener(condition = "#processEvent.flowCode.startsWith('leave')") + @EventListener(condition = "#processEvent.flowCode.startsWith('alert')") @Override public void processHandler(ProcessEvent processEvent) { alertService.updateAlertStatus(processEvent.getBusinessId(),processEvent.getStatus()); @@ -40,7 +40,7 @@ public class FlwAlertHandler implements FlwCommonHandler { * * @param processCreateTaskEvent 参数 */ - @EventListener(condition = "#processCreateTaskEvent.flowCode.startsWith('leave')") + @EventListener(condition = "#processCreateTaskEvent.flowCode.startsWith('alert')") @Override public void processCreateTaskHandler(ProcessCreateTaskEvent processCreateTaskEvent) { alertService.updateAlertStatus(processCreateTaskEvent.getBusinessId(), BusinessStatusEnum.WAITING.getStatus()); @@ -52,7 +52,7 @@ public class FlwAlertHandler implements FlwCommonHandler { * * @param processDeleteEvent 参数 */ - @EventListener(condition = "#processDeleteEvent.flowCode.startsWith('leave')") + @EventListener(condition = "#processDeleteEvent.flowCode.startsWith('alert')") @Override public void processDeleteHandler(ProcessDeleteEvent processDeleteEvent) { diff --git a/dk-modules/workflow/src/main/java/org/dromara/workflow/service/impl/TestLeaveServiceImpl.java b/dk-modules/workflow/src/main/java/org/dromara/workflow/service/impl/TestLeaveServiceImpl.java index 03b21c3..858f7c2 100644 --- a/dk-modules/workflow/src/main/java/org/dromara/workflow/service/impl/TestLeaveServiceImpl.java +++ b/dk-modules/workflow/src/main/java/org/dromara/workflow/service/impl/TestLeaveServiceImpl.java @@ -130,7 +130,7 @@ public class TestLeaveServiceImpl implements ITestLeaveService { * * @param processEvent 参数 */ -// @EventListener(condition = "#processEvent.flowCode.startsWith('leave')") + @EventListener(condition = "#processEvent.flowCode.startsWith('leave')") public void processHandler(ProcessEvent processEvent) { TenantHelper.dynamic(processEvent.getTenantId(), () -> { log.info("当前任务执行了{}", processEvent.toString()); @@ -163,7 +163,7 @@ public class TestLeaveServiceImpl implements ITestLeaveService { * * @param processCreateTaskEvent 参数 */ -// @EventListener(condition = "#processCreateTaskEvent.flowCode.startsWith('leave')") + @EventListener(condition = "#processCreateTaskEvent.flowCode.startsWith('leave')") public void processCreateTaskHandler(ProcessCreateTaskEvent processCreateTaskEvent) { TenantHelper.dynamic(processCreateTaskEvent.getTenantId(), () -> { log.info("当前任务创建了{}", processCreateTaskEvent.toString()); @@ -180,7 +180,7 @@ public class TestLeaveServiceImpl implements ITestLeaveService { * * @param processDeleteEvent 参数 */ -// @EventListener(condition = "#processDeleteEvent.flowCode.startsWith('leave')") + @EventListener(condition = "#processDeleteEvent.flowCode.startsWith('leave')") public void processDeleteHandler(ProcessDeleteEvent processDeleteEvent) { TenantHelper.dynamic(processDeleteEvent.getTenantId(), () -> { log.info("监听删除流程事件,当前任务执行了{}", processDeleteEvent.toString()); From 587ae348c9eeab5e296ae3784f3e5aa01354a2fb Mon Sep 17 00:00:00 2001 From: yangwei <867012372@qq.com> Date: Mon, 3 Mar 2025 16:22:00 +0800 Subject: [PATCH 04/11] =?UTF-8?q?[feat]=201=E3=80=81=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=E5=B7=A1=E6=9F=A5=E5=8C=BA=E5=9F=9F=E7=9B=B8=E5=85=B3=E4=BB=A3?= =?UTF-8?q?=E7=A0=81=E9=80=BB=E8=BE=91=EF=BC=8C=E4=BB=A5=E5=8F=8A=E5=AF=B9?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E8=A1=A8=E7=9A=84=E4=BF=AE=E6=94=B9=E3=80=82?= =?UTF-8?q?=202=E3=80=81=E4=BF=AE=E5=A4=8D=E6=B5=81=E7=A8=8B=E5=A4=9A?= =?UTF-8?q?=E8=8A=82=E7=82=B9=E7=9A=84=E6=97=B6=E5=80=99=EF=BC=8C=E6=97=A0?= =?UTF-8?q?=E6=B3=95=E6=8C=87=E6=B4=BE=E5=A4=84=E7=90=86=E4=BA=BA=E7=9A=84?= =?UTF-8?q?=E6=83=85=E5=86=B5=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dromara/system/api/RemoteUserService.java | 2 + .../api/domain/enums/WorkflowCodeEnum.java | 19 + dk-modules/business/pom.xml | 31 +- .../controller/BusinessAlertController.java | 17 +- .../BusinessPatrolAreasController.java | 69 ++-- .../domain/BusinessGeospatialVectors.java | 146 +++++++ .../business/domain/BusinessPatrolAreas.java | 12 +- .../domain/BusinessPatrolAreasPlatform.java | 54 --- .../domain/BusinessPatrolAreasPoints.java | 42 -- .../business/domain/BusinessPlatformInfo.java | 54 --- ...AreasUser.java => BusinessVectorDict.java} | 33 +- ...oCode.java => BusinessVectorDictItem.java} | 32 +- .../dubbo/RemoteBusinessAlertServiceImpl.java | 4 +- .../BusinessPatrolAreasPlatformMapper.java | 10 - .../BusinessPatrolAreasPointsMapper.java | 16 - .../mapper/BusinessPatrolAreasUserMapper.java | 16 - .../BusinessPlatformInfoCodeMapper.java | 17 - .../mapper/BusinessPlatformInfoMapper.java | 23 -- .../mapper/BusinessVectorDictItemMapper.java | 8 + .../mapper/BusinessVectorDictMapper.java | 10 + ...ervice.java => IBusinessAlertService.java} | 3 +- .../IBusinessPatrolAreasPointsService.java | 13 - .../service/IBusinessPatrolAreasService.java | 10 +- .../IBusinessPatrolAreasUserService.java | 13 - .../service/IBusinessPlatformInfoService.java | 9 - .../IBusinessVectorDictItemService.java | 12 + .../service/IBusinessVectorDictService.java | 17 + .../impl/BusinessAlertServiceImpl.java | 7 +- .../BusinessPatrolAreasPointsServiceImpl.java | 23 -- .../impl/BusinessPatrolAreasServiceImpl.java | 224 ++++++----- .../BusinessPatrolAreasUserServiceImpl.java | 23 -- .../impl/BusinessPlatformInfoServiceImpl.java | 17 - .../BusinessVectorDictItemServiceImpl.java | 28 ++ .../impl/BusinessVectorDictServiceImpl.java | 37 ++ .../business/utils/ShpAnalysisUtil.java | 368 ++++++++++++++++++ .../BusinessPatrolAreasPointsMapper.xml | 11 - .../BusinessPatrolAreasUserMapper.xml | 9 - .../BusinessPlatformInfoCodeMapper.xml | 10 - .../business/BusinessPlatformInfoMapper.xml | 31 -- ...r.xml => BusinessVectorDictItemMapper.xml} | 4 +- .../business/BusinessVectorDictMapper.xml | 28 ++ .../system/dubbo/RemoteUserServiceImpl.java | 6 + .../dromara/system/mapper/SysUserMapper.java | 3 + .../system/service/ISysUserService.java | 1 + .../service/impl/SysUserServiceImpl.java | 9 +- .../resources/mapper/system/SysUserMapper.xml | 13 + .../impl/FlwTaskAssigneeServiceImpl.java | 2 +- .../service/impl/FlwTaskServiceImpl.java | 2 +- pom.xml | 42 +- 49 files changed, 978 insertions(+), 612 deletions(-) create mode 100644 dk-api/api-workflow/src/main/java/org/dromara/workflow/api/domain/enums/WorkflowCodeEnum.java create mode 100644 dk-modules/business/src/main/java/org/dromara/business/domain/BusinessGeospatialVectors.java delete mode 100644 dk-modules/business/src/main/java/org/dromara/business/domain/BusinessPatrolAreasPlatform.java delete mode 100644 dk-modules/business/src/main/java/org/dromara/business/domain/BusinessPatrolAreasPoints.java delete mode 100644 dk-modules/business/src/main/java/org/dromara/business/domain/BusinessPlatformInfo.java rename dk-modules/business/src/main/java/org/dromara/business/domain/{BusinessPatrolAreasUser.java => BusinessVectorDict.java} (51%) rename dk-modules/business/src/main/java/org/dromara/business/domain/{BusinessPlatformInfoCode.java => BusinessVectorDictItem.java} (60%) delete mode 100644 dk-modules/business/src/main/java/org/dromara/business/mapper/BusinessPatrolAreasPlatformMapper.java delete mode 100644 dk-modules/business/src/main/java/org/dromara/business/mapper/BusinessPatrolAreasPointsMapper.java delete mode 100644 dk-modules/business/src/main/java/org/dromara/business/mapper/BusinessPatrolAreasUserMapper.java delete mode 100644 dk-modules/business/src/main/java/org/dromara/business/mapper/BusinessPlatformInfoCodeMapper.java delete mode 100644 dk-modules/business/src/main/java/org/dromara/business/mapper/BusinessPlatformInfoMapper.java create mode 100644 dk-modules/business/src/main/java/org/dromara/business/mapper/BusinessVectorDictItemMapper.java create mode 100644 dk-modules/business/src/main/java/org/dromara/business/mapper/BusinessVectorDictMapper.java rename dk-modules/business/src/main/java/org/dromara/business/service/{BusinessAlertService.java => IBusinessAlertService.java} (94%) delete mode 100644 dk-modules/business/src/main/java/org/dromara/business/service/IBusinessPatrolAreasPointsService.java delete mode 100644 dk-modules/business/src/main/java/org/dromara/business/service/IBusinessPatrolAreasUserService.java delete mode 100644 dk-modules/business/src/main/java/org/dromara/business/service/IBusinessPlatformInfoService.java create mode 100644 dk-modules/business/src/main/java/org/dromara/business/service/IBusinessVectorDictItemService.java create mode 100644 dk-modules/business/src/main/java/org/dromara/business/service/IBusinessVectorDictService.java delete mode 100644 dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessPatrolAreasPointsServiceImpl.java delete mode 100644 dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessPatrolAreasUserServiceImpl.java delete mode 100644 dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessPlatformInfoServiceImpl.java create mode 100644 dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessVectorDictItemServiceImpl.java create mode 100644 dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessVectorDictServiceImpl.java create mode 100644 dk-modules/business/src/main/java/org/dromara/business/utils/ShpAnalysisUtil.java delete mode 100644 dk-modules/business/src/main/resources/mapper/business/BusinessPatrolAreasPointsMapper.xml delete mode 100644 dk-modules/business/src/main/resources/mapper/business/BusinessPatrolAreasUserMapper.xml delete mode 100644 dk-modules/business/src/main/resources/mapper/business/BusinessPlatformInfoCodeMapper.xml delete mode 100644 dk-modules/business/src/main/resources/mapper/business/BusinessPlatformInfoMapper.xml rename dk-modules/business/src/main/resources/mapper/business/{BusinessPatrolAreasPlatformMapper.xml => BusinessVectorDictItemMapper.xml} (65%) create mode 100644 dk-modules/business/src/main/resources/mapper/business/BusinessVectorDictMapper.xml diff --git a/dk-api/api-system/src/main/java/org/dromara/system/api/RemoteUserService.java b/dk-api/api-system/src/main/java/org/dromara/system/api/RemoteUserService.java index 1269d8b..6fc0210 100644 --- a/dk-api/api-system/src/main/java/org/dromara/system/api/RemoteUserService.java +++ b/dk-api/api-system/src/main/java/org/dromara/system/api/RemoteUserService.java @@ -155,4 +155,6 @@ public interface RemoteUserService { * @return 用户 */ List selectUsersByPostIds(List postIds); + + List selectUserByUserIds(List userIds); } diff --git a/dk-api/api-workflow/src/main/java/org/dromara/workflow/api/domain/enums/WorkflowCodeEnum.java b/dk-api/api-workflow/src/main/java/org/dromara/workflow/api/domain/enums/WorkflowCodeEnum.java new file mode 100644 index 0000000..89a74b0 --- /dev/null +++ b/dk-api/api-workflow/src/main/java/org/dromara/workflow/api/domain/enums/WorkflowCodeEnum.java @@ -0,0 +1,19 @@ +package org.dromara.workflow.api.domain.enums; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +/** + * 流程类型,后续有的话可以根据具体业务加,要保证流程定义里面的标识key和这边code保持一致 + */ +@Getter +@AllArgsConstructor +public enum WorkflowCodeEnum { + + ALERT("alert","预警流程"); + + final String code; + + final String description; + +} diff --git a/dk-modules/business/pom.xml b/dk-modules/business/pom.xml index 25e6f4c..6b6ef01 100644 --- a/dk-modules/business/pom.xml +++ b/dk-modules/business/pom.xml @@ -108,11 +108,39 @@ + org.dromara api-workflow + + + org.geotools + gt-geojson + ${geotools.version} + + + org.geotools + gt-geometry + ${geotools.version} + + + org.geotools + gt-epsg-hsql + ${geotools.version} + + + org.geotools + gt-jts-wrapper + ${geotools.version} + + + org.geotools + gt-shapefile + 29.5 + + ${project.artifactId} @@ -131,6 +159,7 @@ - + + diff --git a/dk-modules/business/src/main/java/org/dromara/business/controller/BusinessAlertController.java b/dk-modules/business/src/main/java/org/dromara/business/controller/BusinessAlertController.java index fa97d24..d02691f 100644 --- a/dk-modules/business/src/main/java/org/dromara/business/controller/BusinessAlertController.java +++ b/dk-modules/business/src/main/java/org/dromara/business/controller/BusinessAlertController.java @@ -1,28 +1,15 @@ package org.dromara.business.controller; -import jakarta.servlet.http.HttpServletResponse; -import jakarta.validation.constraints.NotEmpty; -import jakarta.validation.constraints.NotNull; import lombok.RequiredArgsConstructor; import org.dromara.business.domain.BusinessAlert; import org.dromara.business.domain.bo.BusinessAlertBo; -import org.dromara.business.domain.vo.BusinessAlertVo; -import org.dromara.business.service.BusinessAlertService; -import org.dromara.common.core.domain.R; -import org.dromara.common.core.validate.AddGroup; -import org.dromara.common.core.validate.EditGroup; -import org.dromara.common.excel.utils.ExcelUtil; -import org.dromara.common.idempotent.annotation.RepeatSubmit; -import org.dromara.common.log.annotation.Log; -import org.dromara.common.log.enums.BusinessType; +import org.dromara.business.service.IBusinessAlertService; import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.common.web.core.BaseController; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; -import java.util.List; - /** * 预警任务 * @@ -36,7 +23,7 @@ import java.util.List; public class BusinessAlertController extends BaseController { - private final BusinessAlertService businessAlertService; + private final IBusinessAlertService businessAlertService; /** * 查询全部预警 diff --git a/dk-modules/business/src/main/java/org/dromara/business/controller/BusinessPatrolAreasController.java b/dk-modules/business/src/main/java/org/dromara/business/controller/BusinessPatrolAreasController.java index 9ecbdce..20f6991 100644 --- a/dk-modules/business/src/main/java/org/dromara/business/controller/BusinessPatrolAreasController.java +++ b/dk-modules/business/src/main/java/org/dromara/business/controller/BusinessPatrolAreasController.java @@ -1,31 +1,28 @@ package org.dromara.business.controller; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import jakarta.servlet.http.HttpServletRequest; import lombok.RequiredArgsConstructor; -import org.dromara.business.domain.BusinessAlert; import org.dromara.business.domain.BusinessPatrolAreas; -import org.dromara.business.domain.BusinessPatrolAreasPoints; -import org.dromara.business.domain.BusinessPatrolAreasUser; import org.dromara.business.domain.bo.BusinessPatrolAreasBo; -import org.dromara.business.service.IBusinessPatrolAreasPointsService; import org.dromara.business.service.IBusinessPatrolAreasService; -import org.dromara.business.service.IBusinessPatrolAreasUserService; import org.dromara.common.core.domain.R; -import org.dromara.common.core.utils.MapstructUtils; +import org.dromara.common.mybatis.core.page.PageQuery; +import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.common.satoken.utils.LoginHelper; import org.dromara.common.web.core.BaseController; import org.dromara.system.api.model.LoginUser; import org.jeecgframework.poi.excel.def.NormalExcelConstants; import org.jeecgframework.poi.excel.entity.ExportParams; import org.jeecgframework.poi.excel.view.JeecgEntityExcelView; -import org.springframework.beans.factory.annotation.Value; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; import org.springframework.web.servlet.ModelAndView; +import javax.servlet.http.HttpServletRequest; +import java.util.Arrays; import java.util.List; /** @@ -39,43 +36,35 @@ public class BusinessPatrolAreasController extends BaseController { private final IBusinessPatrolAreasService patrolAreasService; - private final IBusinessPatrolAreasPointsService patrolAreasPointsService; - private final IBusinessPatrolAreasUserService patrolAreasUserService; - -// @Value("${jeecg.path.upload}") - private String upLoadPath; /** * 巡查区域-分页列表查询 * * @param patrolAreasBo - * @param pageNo - * @param pageSize + * @param pageQuery * @return */ - @GetMapping(value = "/list") - public R> queryPageList(BusinessPatrolAreasBo patrolAreasBo, - @RequestParam(name="pageNo", defaultValue="1") Integer pageNo, - @RequestParam(name="pageSize", defaultValue="10") Integer pageSize) { - Page page = new Page(pageNo, pageSize); - IPage pageList = patrolAreasService.pagePatrolAreas(page, patrolAreasBo); - return R.ok(pageList); + @GetMapping(value = "/page") + public TableDataInfo pagePatrolAreas(BusinessPatrolAreasBo patrolAreasBo, + PageQuery pageQuery) { + return patrolAreasService.pagePatrolAreas(pageQuery, patrolAreasBo); } /** * 巡查区域-添加 * - * @param patrolAreas + * @param file * @return */ - @PostMapping(value = "/add") - public R add(@RequestBody BusinessPatrolAreas patrolAreas) { - boolean flag = patrolAreasService.addPatrolAreas(patrolAreas); - if(flag){ - return R.ok("添加成功!"); + @PostMapping("/upload") + public R upload(@RequestParam("file") MultipartFile file) { + try { + patrolAreasService.addPatrolAreas(file); + return R.ok("上传成功!"); + } catch (Exception e) { + return R.fail("上传失败!"); } - return R.fail("新增失败"); } /** @@ -115,12 +104,6 @@ public class BusinessPatrolAreasController extends BaseController { @DeleteMapping(value = "/delete") public R delete(String id) { boolean flag = patrolAreasService.removeById(id); - if(flag){ - List patrolAreasUsersDels = patrolAreasUserService.listPatrolAreasUserByAreaId(id); - List patrolAreasPointsDels = patrolAreasPointsService.listPatrolAreasPointByAreaId(id); - patrolAreasUserService.removeByIds(patrolAreasUsersDels); - patrolAreasPointsService.removeByIds(patrolAreasPointsDels); - } if(flag){ return R.ok("删除成功!"); } @@ -136,12 +119,13 @@ public class BusinessPatrolAreasController extends BaseController { public ModelAndView exportXls(BusinessPatrolAreas patrolAreas, HttpServletRequest request) { //Step.2 AutoPoi 导出Excel ModelAndView mv = new ModelAndView(new JeecgEntityExcelView()); - //update-begin--Author:kangxiaolin Date:20180825 for:[03]用户导出,如果选择数据则只导出相关数据-------------------- -// String selections = request.getParameter("selections"); -// if(!oConvertUtils.isEmpty(selections)){ -// queryWrapper.in("id",selections.split(",")); -// } - //update-end--Author:kangxiaolin Date:20180825 for:[03]用户导出,如果选择数据则只导出相关数据---------------------- + + String selections = request.getParameter("selections"); + if (ObjectUtil.isNotEmpty(selections)) { + List areasIdList = Arrays.asList(selections.split(",")); + patrolAreas.setAreasIdList(areasIdList); + } + List pageList = patrolAreasService.exportXls(patrolAreas); //导出文件名称 @@ -149,7 +133,6 @@ public class BusinessPatrolAreasController extends BaseController { mv.addObject(NormalExcelConstants.CLASS, BusinessPatrolAreas.class); LoginUser user = LoginHelper.getLoginUser(); ExportParams exportParams = new ExportParams("用户列表数据", "导出人:"+user.getNickname(), "导出信息"); - exportParams.setImageBasePath(upLoadPath); mv.addObject(NormalExcelConstants.PARAMS, exportParams); mv.addObject(NormalExcelConstants.DATA_LIST, pageList); return mv; diff --git a/dk-modules/business/src/main/java/org/dromara/business/domain/BusinessGeospatialVectors.java b/dk-modules/business/src/main/java/org/dromara/business/domain/BusinessGeospatialVectors.java new file mode 100644 index 0000000..605fc27 --- /dev/null +++ b/dk-modules/business/src/main/java/org/dromara/business/domain/BusinessGeospatialVectors.java @@ -0,0 +1,146 @@ +package org.dromara.business.domain; + + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.util.Date; + +/** + *存储解析的shp的矢量数据 + */ +@Data +@TableName("business_geospatial_vectors") +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +public class BusinessGeospatialVectors { + + /** + * ID + */ + @TableId(type = IdType.AUTO) + private String id; + + // 1. 图形基础属性 + private String landCategories; // 几何信息 + + private String lineColor; // 线颜色 + + private String areaColor; // 面颜色 + + private String lineTransparency; // 线透明度 + + private String lineWidth; // 线宽度 + + private String areaTransparency; // 面透明度 + + private String shapeLength; // 形状长度 + + private String shapeArea; // 形状面积 + + // 2. 图斑标识信息 + private String featureCode; // 标识码 + + private String featureTypeCode; // 要素代码 + + private String temporaryFeatureId; // 图斑预编号 + + private String featureId; // 图斑编号 + + private String featureType; // 图斑类型 + + private String objectId; // 对象ID + + // 3. 地类信息 + private String landTypeCode; // 地类编码 + + private String landTypeName; // 地类名称 + + private String landUseType; // 土地利用类型 + + private String landActualUse; // 土地用途 + + // 4. 权属与行政区划信息 + private String ownershipNature; // 权属性质 + + private String ownershipUnitCode; // 权属单位代码 + + private String ownershipUnitName; // 权属单位名称 + + private String landUnitCode; // 坐落单位代码 + + private String landUnitName; // 坐落单位名称 + + private String adminDivisionCode; // 行政区代码 + + private String adminDivisionName; // 行政区名称 + + // 5. 面积信息 + private String featureArea; // 图斑面积 + + private String deductionArea; // 扣除面积 + + private String featureLandArea; // 图斑地类面积 + + private String linearFeatureWidth; // 线状地物宽度 + + // 6. 农用地相关信息 + private String arableLandQuality; // 耕地等别 + + private String arableLandQualityCode; // 耕地等别代码 + + private String basicFarmlandType; // 基本农田类型 + + // 7. 规划信息 + private String planningPurpose; // 规划用途 + + private String planningPurposeCode; // 规划用途代码 + + private String planningPeriod; // 规划期限 + + // 8. 变更与历史信息 + private String originalFeatureCode; // 原始代码 + + private String originalLandTypeCode; // 原地类编码 + + private String changeRecordId; // 变更编号 + + private String changeDate; // 变更日期 + + // 9. 时间信息 + private String updateDate; // 更新日期 + + private String completionDate; // 建设日期 + + private String dataYear; // 数据年份 + + // 10. 其他属性 + private String notes; // 备注 + + private String approvalNumber; // 批准文号 + + private String urbanVillageCode; // 城镇村属性码 + + private String extendedInfo; // 扩展信息 + + private String belongingArea; // 所属区域 + + private String geographicLocation; // 地理位置 + + // 11. 拆转查相关信息 + private String demolitionType; // 拆查类型 + + private String demolitionArea; // 拆查面积 + + private String demolitionName; // 拆查名称 + + private Integer batchNo; //批次号 + + private Date createTime; //创建时间 + + +} diff --git a/dk-modules/business/src/main/java/org/dromara/business/domain/BusinessPatrolAreas.java b/dk-modules/business/src/main/java/org/dromara/business/domain/BusinessPatrolAreas.java index 08d583d..fbddfda 100644 --- a/dk-modules/business/src/main/java/org/dromara/business/domain/BusinessPatrolAreas.java +++ b/dk-modules/business/src/main/java/org/dromara/business/domain/BusinessPatrolAreas.java @@ -31,13 +31,18 @@ public class BusinessPatrolAreas extends BaseEntity { /**区域名称*/ @Excel(name = "区域名称", width = 15) private String name; + /**区域编号*/ @Excel(name = "区域编号", width = 15) private String number; + /**所属乡镇id*/ @Excel(name = "所属乡镇id", width = 15) private String deptId; + /**地理数据*/ + private String landCategories; + /**所属乡镇id*/ @Excel(name = "所属乡镇名称", width = 15) @TableField(exist = false) @@ -61,14 +66,11 @@ public class BusinessPatrolAreas extends BaseEntity { /**是否禁用:0:禁用 1:启用**/ private Integer isDisable; - /**巡查区域人员信息集合**/ - @TableField(exist = false) - private List patrolAreasUsers = new ArrayList<>(); /**巡查区域平台类型集合**/ @TableField(exist = false) private List patrolAreasIdList = new ArrayList<>(); - /**巡查区域坐标集合**/ + @TableField(exist = false) - private List patrolAreasPoints = new ArrayList<>(); + private List areasIdList = new ArrayList<>(); } diff --git a/dk-modules/business/src/main/java/org/dromara/business/domain/BusinessPatrolAreasPlatform.java b/dk-modules/business/src/main/java/org/dromara/business/domain/BusinessPatrolAreasPlatform.java deleted file mode 100644 index e1fd339..0000000 --- a/dk-modules/business/src/main/java/org/dromara/business/domain/BusinessPatrolAreasPlatform.java +++ /dev/null @@ -1,54 +0,0 @@ -package org.dromara.business.domain; - -import com.alibaba.excel.annotation.ExcelProperty; -import com.baomidou.mybatisplus.annotation.IdType; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import lombok.Data; -import lombok.EqualsAndHashCode; -import lombok.experimental.Accessors; -import org.dromara.common.mybatis.core.domain.BaseEntity; - -/** - * Description:
- * date: 2024/8/12$ 17:17$
- * - * @author: yq - */ - -@Data -@TableName("business_patrol_areas_platform_info") -@EqualsAndHashCode(callSuper = false) -@Accessors(chain = true) -public class BusinessPatrolAreasPlatform extends BaseEntity { - - /** - * ID - */ - @TableId(type = IdType.ASSIGN_ID) - private String id; - - @ExcelProperty(value = "patrol_areas_id") - private String patrolAreasId; - /**区域名称*/ - @ExcelProperty(value = "平台名称") - private String platformName; - - @ExcelProperty(value = "平台类型") - private String platformType; - - /**区域编号*/ - @ExcelProperty(value = "平台图片") - private String imageUrl; - - /** - * 排序 - */ - @ExcelProperty(value = "排序") - private Integer sort; - - - - - -} diff --git a/dk-modules/business/src/main/java/org/dromara/business/domain/BusinessPatrolAreasPoints.java b/dk-modules/business/src/main/java/org/dromara/business/domain/BusinessPatrolAreasPoints.java deleted file mode 100644 index e4d0d52..0000000 --- a/dk-modules/business/src/main/java/org/dromara/business/domain/BusinessPatrolAreasPoints.java +++ /dev/null @@ -1,42 +0,0 @@ -package org.dromara.business.domain; - -import com.alibaba.excel.annotation.ExcelProperty; -import com.baomidou.mybatisplus.annotation.IdType; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import lombok.Data; -import lombok.EqualsAndHashCode; -import lombok.experimental.Accessors; -import org.dromara.common.mybatis.core.domain.BaseEntity; - -import java.math.BigDecimal; - -/** - * @Description: 巡查区域坐标 - */ -@Data -@TableName("business_patrol_area_points") -@EqualsAndHashCode(callSuper = false) -@Accessors(chain = true) -public class BusinessPatrolAreasPoints extends BaseEntity { - - /** - * ID - */ - @TableId(type = IdType.ASSIGN_ID) - private String id; - - /**areaId*/ - @ExcelProperty(value = "areaId") - private String areaId; - /**纬度*/ - @ExcelProperty(value = "纬度") - private BigDecimal lat; - /**经度*/ - @ExcelProperty(value = "经度") - private BigDecimal lng; - /**序号*/ - @ExcelProperty(value = "序号") - private Integer sortNumber; - -} diff --git a/dk-modules/business/src/main/java/org/dromara/business/domain/BusinessPlatformInfo.java b/dk-modules/business/src/main/java/org/dromara/business/domain/BusinessPlatformInfo.java deleted file mode 100644 index 68fe097..0000000 --- a/dk-modules/business/src/main/java/org/dromara/business/domain/BusinessPlatformInfo.java +++ /dev/null @@ -1,54 +0,0 @@ - -package org.dromara.business.domain; - -import com.baomidou.mybatisplus.annotation.IdType; -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import lombok.Data; -import lombok.EqualsAndHashCode; -import lombok.experimental.Accessors; -import org.dromara.common.mybatis.core.domain.BaseEntity; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -/** - * @Description: 平台信息 - */ -@Data -@TableName("business_platform_info") -@EqualsAndHashCode(callSuper = false) -@Accessors(chain = true) -public class BusinessPlatformInfo extends BaseEntity { - - /** - * ID - */ - @TableId(type = IdType.ASSIGN_ID) - private String id; - - /**设备昵称**/ - private String platformName; - - /**设备类型**/ - private String platformType; - - /**平台图片**/ - private String imageUrl; - - /**app图片**/ - private String imageAppUrl; - - /**排序**/ - private Integer sort; - /**路由**/ - private String routes; - /**平台识别类型集合**/ - @TableField(exist = false) - private List platformInfoCodes = new ArrayList<>(); - @TableField(exist = false) - private Map total = new HashMap<>(); -} diff --git a/dk-modules/business/src/main/java/org/dromara/business/domain/BusinessPatrolAreasUser.java b/dk-modules/business/src/main/java/org/dromara/business/domain/BusinessVectorDict.java similarity index 51% rename from dk-modules/business/src/main/java/org/dromara/business/domain/BusinessPatrolAreasUser.java rename to dk-modules/business/src/main/java/org/dromara/business/domain/BusinessVectorDict.java index 28b8f3c..f75edde 100644 --- a/dk-modules/business/src/main/java/org/dromara/business/domain/BusinessPatrolAreasUser.java +++ b/dk-modules/business/src/main/java/org/dromara/business/domain/BusinessVectorDict.java @@ -1,7 +1,7 @@ package org.dromara.business.domain; -import com.alibaba.excel.annotation.ExcelProperty; import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data; @@ -9,29 +9,34 @@ import lombok.EqualsAndHashCode; import lombok.experimental.Accessors; import org.dromara.common.mybatis.core.domain.BaseEntity; +import java.util.List; + /** - * @Description: 巡查区域人员信息 + * 矢量数据字段映射主表 */ @Data -@TableName("business_patrol_area_users") +@TableName("Business_vector_dict") @EqualsAndHashCode(callSuper = false) @Accessors(chain = true) -public class BusinessPatrolAreasUser extends BaseEntity { +public class BusinessVectorDict extends BaseEntity { /** - * ID + * */ @TableId(type = IdType.ASSIGN_ID) private String id; - /**巡查区域id*/ - @ExcelProperty(value = "巡查区域id") - private String areaId; - /**巡查人员id*/ - @ExcelProperty(value = "巡查人员id") - private String userId; - /**巡查人员姓名*/ - @ExcelProperty(value = "巡查人员姓名") - private String realname; + /** + * 字段名称 + */ + private String dictCode; + + /** + * 描述 + */ + private String dictName; + + @TableField(exist = false) + private List fieldMappingsList; } diff --git a/dk-modules/business/src/main/java/org/dromara/business/domain/BusinessPlatformInfoCode.java b/dk-modules/business/src/main/java/org/dromara/business/domain/BusinessVectorDictItem.java similarity index 60% rename from dk-modules/business/src/main/java/org/dromara/business/domain/BusinessPlatformInfoCode.java rename to dk-modules/business/src/main/java/org/dromara/business/domain/BusinessVectorDictItem.java index aeec561..1fcad8b 100644 --- a/dk-modules/business/src/main/java/org/dromara/business/domain/BusinessPlatformInfoCode.java +++ b/dk-modules/business/src/main/java/org/dromara/business/domain/BusinessVectorDictItem.java @@ -1,4 +1,3 @@ - package org.dromara.business.domain; import com.baomidou.mybatisplus.annotation.IdType; @@ -10,23 +9,34 @@ import lombok.experimental.Accessors; import org.dromara.common.mybatis.core.domain.BaseEntity; /** - * @Description: 平台信息 + * 矢量数据字段映射关联表 */ @Data -@TableName("business_platform_info_code") +@TableName("Business_vector_dict_item") @EqualsAndHashCode(callSuper = false) @Accessors(chain = true) -public class BusinessPlatformInfoCode extends BaseEntity { +public class BusinessVectorDictItem extends BaseEntity { /** - * ID + * */ @TableId(type = IdType.ASSIGN_ID) private String id; - /**平台对象id**/ - private String platformInfoId; - /**识别内容**/ - private String codeName; - /**识别类型**/ - private String codeType; + + /** + * 字段名称 + */ + private String itemValue; + + /** + * 关联id + */ + private String dictId; + + /** + * 描述 + */ + private String itemText; + + } diff --git a/dk-modules/business/src/main/java/org/dromara/business/dubbo/RemoteBusinessAlertServiceImpl.java b/dk-modules/business/src/main/java/org/dromara/business/dubbo/RemoteBusinessAlertServiceImpl.java index fe330f4..58c7a30 100644 --- a/dk-modules/business/src/main/java/org/dromara/business/dubbo/RemoteBusinessAlertServiceImpl.java +++ b/dk-modules/business/src/main/java/org/dromara/business/dubbo/RemoteBusinessAlertServiceImpl.java @@ -3,7 +3,7 @@ package org.dromara.business.dubbo; import lombok.RequiredArgsConstructor; import org.apache.dubbo.config.annotation.DubboService; import org.dromara.business.api.RemoteBusinessAlertService; -import org.dromara.business.service.BusinessAlertService; +import org.dromara.business.service.IBusinessAlertService; import org.springframework.stereotype.Service; /** @@ -14,7 +14,7 @@ import org.springframework.stereotype.Service; @DubboService public class RemoteBusinessAlertServiceImpl implements RemoteBusinessAlertService { - private final BusinessAlertService businessAlertService; + private final IBusinessAlertService businessAlertService; /** diff --git a/dk-modules/business/src/main/java/org/dromara/business/mapper/BusinessPatrolAreasPlatformMapper.java b/dk-modules/business/src/main/java/org/dromara/business/mapper/BusinessPatrolAreasPlatformMapper.java deleted file mode 100644 index 79354f5..0000000 --- a/dk-modules/business/src/main/java/org/dromara/business/mapper/BusinessPatrolAreasPlatformMapper.java +++ /dev/null @@ -1,10 +0,0 @@ -package org.dromara.business.mapper; - - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import org.dromara.business.domain.BusinessPatrolAreasPlatform; - - -public interface BusinessPatrolAreasPlatformMapper extends BaseMapper { - -} diff --git a/dk-modules/business/src/main/java/org/dromara/business/mapper/BusinessPatrolAreasPointsMapper.java b/dk-modules/business/src/main/java/org/dromara/business/mapper/BusinessPatrolAreasPointsMapper.java deleted file mode 100644 index dead5dd..0000000 --- a/dk-modules/business/src/main/java/org/dromara/business/mapper/BusinessPatrolAreasPointsMapper.java +++ /dev/null @@ -1,16 +0,0 @@ -package org.dromara.business.mapper; - - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import org.apache.ibatis.annotations.Param; -import org.dromara.business.domain.BusinessPatrolAreasPoints; - -import java.util.List; - -/** - * @Description: 巡查区域坐标 - */ -public interface BusinessPatrolAreasPointsMapper extends BaseMapper { - - List listPatrolAreasPointByAreaId(@Param("areaId") String areaId); -} diff --git a/dk-modules/business/src/main/java/org/dromara/business/mapper/BusinessPatrolAreasUserMapper.java b/dk-modules/business/src/main/java/org/dromara/business/mapper/BusinessPatrolAreasUserMapper.java deleted file mode 100644 index 79a7206..0000000 --- a/dk-modules/business/src/main/java/org/dromara/business/mapper/BusinessPatrolAreasUserMapper.java +++ /dev/null @@ -1,16 +0,0 @@ -package org.dromara.business.mapper; - - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import org.apache.ibatis.annotations.Param; -import org.dromara.business.domain.BusinessPatrolAreasUser; - -import java.util.List; - -/** - * @Description: 巡查区域人员信息 - */ -public interface BusinessPatrolAreasUserMapper extends BaseMapper { - - List listPatrolAreasUserByAreaId(@Param("areaId") String areaId); -} diff --git a/dk-modules/business/src/main/java/org/dromara/business/mapper/BusinessPlatformInfoCodeMapper.java b/dk-modules/business/src/main/java/org/dromara/business/mapper/BusinessPlatformInfoCodeMapper.java deleted file mode 100644 index 03e409d..0000000 --- a/dk-modules/business/src/main/java/org/dromara/business/mapper/BusinessPlatformInfoCodeMapper.java +++ /dev/null @@ -1,17 +0,0 @@ -package org.dromara.business.mapper; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import org.apache.ibatis.annotations.Param; -import org.dromara.business.domain.BusinessPlatformInfoCode; - -import java.util.List; - -/** - * - * @author sean.zhou - * @date 2021/11/10 - * @version 0.1 - */ -public interface BusinessPlatformInfoCodeMapper extends BaseMapper { - List listPlatformInfoCodeByPlatformInfoId(@Param("platformInfoId") String platformInfoId); -} diff --git a/dk-modules/business/src/main/java/org/dromara/business/mapper/BusinessPlatformInfoMapper.java b/dk-modules/business/src/main/java/org/dromara/business/mapper/BusinessPlatformInfoMapper.java deleted file mode 100644 index 9c32b8a..0000000 --- a/dk-modules/business/src/main/java/org/dromara/business/mapper/BusinessPlatformInfoMapper.java +++ /dev/null @@ -1,23 +0,0 @@ -package org.dromara.business.mapper; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.baomidou.mybatisplus.core.metadata.IPage; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import org.apache.ibatis.annotations.Param; -import org.dromara.business.domain.BusinessPlatformInfo; -import org.dromara.business.domain.bo.BusinessPlatformInfoBo; - -import java.util.List; - -/** - * - * @author sean.zhou - * @date 2021/11/10 - * @version 0.1 - */ -public interface BusinessPlatformInfoMapper extends BaseMapper { - IPage listPlatformInfo(Page page, @Param("condition") BusinessPlatformInfoBo platformInfoBo); - - List listPlatformInfo(@Param("condition")BusinessPlatformInfoBo platformInfoBo); - -} diff --git a/dk-modules/business/src/main/java/org/dromara/business/mapper/BusinessVectorDictItemMapper.java b/dk-modules/business/src/main/java/org/dromara/business/mapper/BusinessVectorDictItemMapper.java new file mode 100644 index 0000000..7831c13 --- /dev/null +++ b/dk-modules/business/src/main/java/org/dromara/business/mapper/BusinessVectorDictItemMapper.java @@ -0,0 +1,8 @@ +package org.dromara.business.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.dromara.business.domain.BusinessVectorDictItem; + +public interface BusinessVectorDictItemMapper extends BaseMapper { + +} diff --git a/dk-modules/business/src/main/java/org/dromara/business/mapper/BusinessVectorDictMapper.java b/dk-modules/business/src/main/java/org/dromara/business/mapper/BusinessVectorDictMapper.java new file mode 100644 index 0000000..403886e --- /dev/null +++ b/dk-modules/business/src/main/java/org/dromara/business/mapper/BusinessVectorDictMapper.java @@ -0,0 +1,10 @@ +package org.dromara.business.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.dromara.business.domain.BusinessVectorDict; + +import java.util.List; + +public interface BusinessVectorDictMapper extends BaseMapper { + List listVectorField(); +} diff --git a/dk-modules/business/src/main/java/org/dromara/business/service/BusinessAlertService.java b/dk-modules/business/src/main/java/org/dromara/business/service/IBusinessAlertService.java similarity index 94% rename from dk-modules/business/src/main/java/org/dromara/business/service/BusinessAlertService.java rename to dk-modules/business/src/main/java/org/dromara/business/service/IBusinessAlertService.java index 1395238..314d53d 100644 --- a/dk-modules/business/src/main/java/org/dromara/business/service/BusinessAlertService.java +++ b/dk-modules/business/src/main/java/org/dromara/business/service/IBusinessAlertService.java @@ -1,7 +1,6 @@ package org.dromara.business.service; import org.dromara.business.domain.BusinessAlert; -import org.dromara.business.domain.vo.BusinessAlertVo; import org.dromara.business.domain.bo.BusinessAlertBo; import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.common.mybatis.core.page.PageQuery; @@ -14,7 +13,7 @@ import java.util.List; * @author LionLi * @date 2025-02-27 */ -public interface BusinessAlertService { +public interface IBusinessAlertService { TableDataInfo pageBusinessAlertTodo(BusinessAlertBo bo, PageQuery pageQuery); diff --git a/dk-modules/business/src/main/java/org/dromara/business/service/IBusinessPatrolAreasPointsService.java b/dk-modules/business/src/main/java/org/dromara/business/service/IBusinessPatrolAreasPointsService.java deleted file mode 100644 index 8025a69..0000000 --- a/dk-modules/business/src/main/java/org/dromara/business/service/IBusinessPatrolAreasPointsService.java +++ /dev/null @@ -1,13 +0,0 @@ -package org.dromara.business.service; - -import com.baomidou.mybatisplus.extension.service.IService; -import org.dromara.business.domain.BusinessPatrolAreasPoints; - -import java.util.List; - -/** - * @Description: 巡查区域坐标 - */ -public interface IBusinessPatrolAreasPointsService extends IService { - List listPatrolAreasPointByAreaId(String areaId); -} diff --git a/dk-modules/business/src/main/java/org/dromara/business/service/IBusinessPatrolAreasService.java b/dk-modules/business/src/main/java/org/dromara/business/service/IBusinessPatrolAreasService.java index dfd1dc7..1d7aec4 100644 --- a/dk-modules/business/src/main/java/org/dromara/business/service/IBusinessPatrolAreasService.java +++ b/dk-modules/business/src/main/java/org/dromara/business/service/IBusinessPatrolAreasService.java @@ -6,6 +6,9 @@ import com.baomidou.mybatisplus.extension.service.IService; import org.apache.ibatis.annotations.Param; import org.dromara.business.domain.BusinessPatrolAreas; import org.dromara.business.domain.bo.BusinessPatrolAreasBo; +import org.dromara.common.mybatis.core.page.PageQuery; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.springframework.web.multipart.MultipartFile; import java.util.List; @@ -13,13 +16,14 @@ import java.util.List; * @Description: 巡查区域 */ public interface IBusinessPatrolAreasService extends IService { - IPage pagePatrolAreas(Page page, @Param("condition") BusinessPatrolAreasBo patrolAreasBo); + TableDataInfo pagePatrolAreas(PageQuery pageQuery, BusinessPatrolAreasBo patrolAreasBo); - List listPatrolAreas(@Param("condition") BusinessPatrolAreasBo patrolAreasBo); + List listPatrolAreas(BusinessPatrolAreasBo patrolAreasBo); - boolean addPatrolAreas(BusinessPatrolAreas patrolAreas); + void addPatrolAreas(MultipartFile file); boolean updatePatrolAreas(BusinessPatrolAreas patrolAreas); List exportXls(BusinessPatrolAreas patrolAreas); + } diff --git a/dk-modules/business/src/main/java/org/dromara/business/service/IBusinessPatrolAreasUserService.java b/dk-modules/business/src/main/java/org/dromara/business/service/IBusinessPatrolAreasUserService.java deleted file mode 100644 index 25fe654..0000000 --- a/dk-modules/business/src/main/java/org/dromara/business/service/IBusinessPatrolAreasUserService.java +++ /dev/null @@ -1,13 +0,0 @@ -package org.dromara.business.service; - -import com.baomidou.mybatisplus.extension.service.IService; -import org.dromara.business.domain.BusinessPatrolAreasUser; - -import java.util.List; - -/** - * @Description: 巡查区域人员信息 - */ -public interface IBusinessPatrolAreasUserService extends IService { - List listPatrolAreasUserByAreaId(String areaId); -} diff --git a/dk-modules/business/src/main/java/org/dromara/business/service/IBusinessPlatformInfoService.java b/dk-modules/business/src/main/java/org/dromara/business/service/IBusinessPlatformInfoService.java deleted file mode 100644 index fba41d6..0000000 --- a/dk-modules/business/src/main/java/org/dromara/business/service/IBusinessPlatformInfoService.java +++ /dev/null @@ -1,9 +0,0 @@ -package org.dromara.business.service; - -import com.baomidou.mybatisplus.extension.service.IService; -import org.dromara.business.domain.BusinessPlatformInfo; - -public interface IBusinessPlatformInfoService extends IService { - - -} diff --git a/dk-modules/business/src/main/java/org/dromara/business/service/IBusinessVectorDictItemService.java b/dk-modules/business/src/main/java/org/dromara/business/service/IBusinessVectorDictItemService.java new file mode 100644 index 0000000..03f4553 --- /dev/null +++ b/dk-modules/business/src/main/java/org/dromara/business/service/IBusinessVectorDictItemService.java @@ -0,0 +1,12 @@ +package org.dromara.business.service; + + +import org.dromara.business.domain.BusinessVectorDictItem; + +import java.util.List; + +public interface IBusinessVectorDictItemService { + + List findDictItemByDictId(String dictId); + +} diff --git a/dk-modules/business/src/main/java/org/dromara/business/service/IBusinessVectorDictService.java b/dk-modules/business/src/main/java/org/dromara/business/service/IBusinessVectorDictService.java new file mode 100644 index 0000000..620416f --- /dev/null +++ b/dk-modules/business/src/main/java/org/dromara/business/service/IBusinessVectorDictService.java @@ -0,0 +1,17 @@ +package org.dromara.business.service; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import org.dromara.business.domain.BusinessVectorDict; + +import java.util.List; + +public interface IBusinessVectorDictService { + + List listVectorField(); + + BusinessVectorDict findVectorDictById(String dictId); + + +} diff --git a/dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessAlertServiceImpl.java b/dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessAlertServiceImpl.java index 3f3d707..02d325c 100644 --- a/dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessAlertServiceImpl.java +++ b/dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessAlertServiceImpl.java @@ -2,18 +2,15 @@ package org.dromara.business.service.impl; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.ObjectUtil; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; -import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import lombok.RequiredArgsConstructor; import org.apache.dubbo.config.annotation.DubboReference; import org.dromara.business.domain.BusinessAlert; import org.dromara.business.domain.bo.BusinessAlertBo; -import org.dromara.business.domain.vo.BusinessAlertVo; import org.dromara.business.mapper.BusinessAlertMapper; -import org.dromara.business.service.BusinessAlertService; +import org.dromara.business.service.IBusinessAlertService; import org.dromara.common.core.enums.BusinessStatusEnum; import org.dromara.common.core.exception.ServiceException; import org.dromara.common.core.utils.MapstructUtils; @@ -37,7 +34,7 @@ import java.util.Map; */ @RequiredArgsConstructor @Service -public class BusinessAlertServiceImpl implements BusinessAlertService { +public class BusinessAlertServiceImpl implements IBusinessAlertService { private final BusinessAlertMapper baseMapper; diff --git a/dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessPatrolAreasPointsServiceImpl.java b/dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessPatrolAreasPointsServiceImpl.java deleted file mode 100644 index 09f617e..0000000 --- a/dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessPatrolAreasPointsServiceImpl.java +++ /dev/null @@ -1,23 +0,0 @@ -package org.dromara.business.service.impl; - -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import lombok.RequiredArgsConstructor; -import org.dromara.business.domain.BusinessPatrolAreasPoints; -import org.dromara.business.mapper.BusinessPatrolAreasPointsMapper; -import org.dromara.business.service.IBusinessPatrolAreasPointsService; -import org.springframework.stereotype.Service; - -import java.util.List; - -/** - * @Description: 巡查区域坐标 - */ -@RequiredArgsConstructor -@Service -public class BusinessPatrolAreasPointsServiceImpl extends ServiceImpl implements IBusinessPatrolAreasPointsService { - - @Override - public List listPatrolAreasPointByAreaId(String areaId) { - return baseMapper.listPatrolAreasPointByAreaId(areaId); - } -} diff --git a/dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessPatrolAreasServiceImpl.java b/dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessPatrolAreasServiceImpl.java index 34ed1e8..670e32d 100644 --- a/dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessPatrolAreasServiceImpl.java +++ b/dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessPatrolAreasServiceImpl.java @@ -13,12 +13,11 @@ import org.apache.dubbo.config.annotation.DubboReference; import org.dromara.business.domain.*; import org.dromara.business.domain.bo.BusinessPatrolAreasBo; import org.dromara.business.mapper.BusinessPatrolAreasMapper; -import org.dromara.business.mapper.BusinessPatrolAreasPlatformMapper; -import org.dromara.business.service.IBusinessPatrolAreasPointsService; -import org.dromara.business.service.IBusinessPatrolAreasService; -import org.dromara.business.service.IBusinessPatrolAreasUserService; -import org.dromara.business.service.IBusinessPlatformInfoService; +import org.dromara.business.service.*; +import org.dromara.business.utils.ShpAnalysisUtil; import org.dromara.common.core.exception.ServiceException; +import org.dromara.common.mybatis.core.page.PageQuery; +import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.common.satoken.utils.LoginHelper; import org.dromara.system.api.RemoteDeptService; import org.dromara.system.api.RemoteUserService; @@ -26,10 +25,11 @@ import org.dromara.system.api.domain.vo.RemoteDeptVo; import org.dromara.system.api.model.LoginUser; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.multipart.MultipartFile; -import java.util.ArrayList; -import java.util.List; -import java.util.Set; +import java.io.InputStream; +import java.lang.reflect.Method; +import java.util.*; import java.util.stream.Collectors; /** @@ -39,14 +39,7 @@ import java.util.stream.Collectors; @Service public class BusinessPatrolAreasServiceImpl extends ServiceImpl implements IBusinessPatrolAreasService { - - private final IBusinessPatrolAreasPointsService patrolAreasPointsService; - - private final IBusinessPatrolAreasUserService patrolAreasUserService; - - private final IBusinessPlatformInfoService platformInfoService; - - private final BusinessPatrolAreasPlatformMapper patrolAreasPlatformInfoMapper; + private final IBusinessVectorDictService vectorDictService; @DubboReference private RemoteUserService remoteUserService; @@ -54,7 +47,7 @@ public class BusinessPatrolAreasServiceImpl extends ServiceImpl pagePatrolAreas(Page page, BusinessPatrolAreasBo patrolAreasBo) { + public TableDataInfo pagePatrolAreas(PageQuery pageQuery, BusinessPatrolAreasBo patrolAreasBo) { LoginUser user = LoginHelper.getLoginUser(); List deptIds = new ArrayList<>(); String departIds = null; @@ -67,26 +60,10 @@ public class BusinessPatrolAreasServiceImpl extends ServiceImpl iPage = this.baseMapper.listPatrolAreas(page, patrolAreasBo, deptIds); - List records = page.getRecords(); - if(!records.isEmpty()){ - records.forEach(p->{ - QueryWrapper queryWrapper = new QueryWrapper(); - queryWrapper.eq("patrol_areas_id",p.getId()); - List collect = patrolAreasPlatformInfoMapper.selectList(queryWrapper).stream().map(BusinessPatrolAreasPlatform::getPlatformType).collect(Collectors.toList()); - p.setPatrolAreasIdList(collect); - }); - } - page.setRecords(records); - return iPage; + + return TableDataInfo.build(this.baseMapper.listPatrolAreas(pageQuery.build(), patrolAreasBo, deptIds)); } @Override @@ -96,108 +73,125 @@ public class BusinessPatrolAreasServiceImpl extends ServiceImpl patrolAreasUsers = patrolAreas.getPatrolAreasUsers(); - patrolAreasUsers.stream().forEach(item->{ - item.setAreaId(patrolAreas.getId()); - item.setRealname(remoteUserService.selectUserNameById(Long.valueOf(patrolAreas.getUserId()))); - }); - List patrolAreasIdList = patrolAreas.getPatrolAreasIdList(); - if(!patrolAreasIdList.isEmpty()){ - patrolAreasIdList.forEach(item->{ - BusinessPlatformInfo platformInfo = platformInfoService.lambdaQuery().eq(BusinessPlatformInfo::getPlatformType,item).one(); - BusinessPatrolAreasPlatform patrolAreasPlatformInfo =new BusinessPatrolAreasPlatform(); - patrolAreasPlatformInfo.setPatrolAreasId(patrolAreas.getId()); - patrolAreasPlatformInfo.setPlatformName(platformInfo.getPlatformName()); - patrolAreasPlatformInfo.setPlatformType(platformInfo.getPlatformType()); - patrolAreasPlatformInfo.setSort(platformInfo.getSort()); - patrolAreasPlatformInfo.setImageUrl(platformInfo.getImageUrl()); - patrolAreasPlatformInfoMapper.insert(patrolAreasPlatformInfo); - }); - } + return this.updateById(patrolAreas); + } - if(CollectionUtils.isNotEmpty(patrolAreasUsers)){ - flag = patrolAreasUserService.saveBatch(patrolAreasUsers,500); - } - List patrolAreasPoints = patrolAreas.getPatrolAreasPoints(); - patrolAreasPoints.stream().forEach(item->{ - item.setAreaId(patrolAreas.getId()); - }); - if(CollectionUtils.isNotEmpty(patrolAreasPoints)) { - flag = patrolAreasPointsService.saveBatch(patrolAreasPoints, 500); - } - return flag; + @Override + public List exportXls(BusinessPatrolAreas patrolAreas) { + LambdaQueryWrapper wrapper = buildWrapper(patrolAreas); + + return this.list(wrapper); } @Override - @Transactional(rollbackFor = Exception.class) - public boolean updatePatrolAreas(BusinessPatrolAreas patrolAreas) { - patrolAreas.setUserName(remoteUserService.selectUserNameById(Long.valueOf(patrolAreas.getUserId()))); - boolean flag = this.updateById(patrolAreas); - List patrolAreasUsersDels = patrolAreasUserService.listPatrolAreasUserByAreaId(patrolAreas.getId()); - List patrolAreasPointsDels = patrolAreasPointsService.listPatrolAreasPointByAreaId(patrolAreas.getId()); - patrolAreasUserService.removeByIds(patrolAreasUsersDels); - patrolAreasPointsService.removeByIds(patrolAreasPointsDels); - //先删除后添加 - QueryWrapper queryWrapper = new QueryWrapper(); - queryWrapper.eq("patrol_areas_id",patrolAreas.getId()); - Set stringSet = patrolAreasPlatformInfoMapper.selectList(queryWrapper).stream().map(BusinessPatrolAreasPlatform::getId).collect(Collectors.toSet()); - if(!stringSet.isEmpty()){ - patrolAreasPlatformInfoMapper.deleteBatchIds(stringSet); - } - List patrolAreasIdList = patrolAreas.getPatrolAreasIdList(); - - if(!patrolAreasIdList.isEmpty()){ - patrolAreasIdList.forEach(item->{ - BusinessPlatformInfo platformInfo = platformInfoService.lambdaQuery().eq(BusinessPlatformInfo::getPlatformType,item).one(); - BusinessPatrolAreasPlatform patrolAreasPlatformInfo =new BusinessPatrolAreasPlatform(); - patrolAreasPlatformInfo.setPatrolAreasId(patrolAreas.getId()); - patrolAreasPlatformInfo.setPlatformName(platformInfo.getPlatformName()); - patrolAreasPlatformInfo.setPlatformType(platformInfo.getPlatformType()); - patrolAreasPlatformInfo.setSort(platformInfo.getSort()); - patrolAreasPlatformInfo.setImageUrl(platformInfo.getImageUrl()); - patrolAreasPlatformInfoMapper.insert(patrolAreasPlatformInfo); - }); - } + public void addPatrolAreas(MultipartFile file) { + List geospatialVectorsList = new ArrayList<>(); + try { + //1、首先调用解析工具拿到解析的字段集合 + InputStream inputStream = file.getInputStream(); + List> mapList = ShpAnalysisUtil.analysisShpFile(inputStream); + + // 3. 构建字典map + List fieldsInfoList = vectorDictService.listVectorField(); + + Map> dictMap = fieldsInfoList + .stream() + .collect(Collectors.toMap( + BusinessVectorDict::getDictCode, + v -> v.getFieldMappingsList().stream() + .map(mapping -> mapping.getItemValue().toLowerCase()) // 转小写 + .collect(Collectors.toList()) + )); + + // 4. 遍历 mapList,替换映射关系并只保留有效条目 + List> resultList = mapList.stream() + .map(originalMap -> originalMap.entrySet().stream() + .filter(entry -> { + String keyLower = entry.getKey().toLowerCase(); // 将 mapList 中的 key 转换为小写 + // 遍历 dictMap 的所有 List,检查其中是否包含该 key + return dictMap.values().stream() + .anyMatch(list -> list.contains(keyLower)); // 判断 dictMap 中的 List 是否包含该 key + }) + .collect(Collectors.toMap( + entry -> { + // 根据匹配的 key 查找 dictMap 中对应的 key + return dictMap.entrySet().stream() + .filter(mapEntry -> mapEntry.getValue().contains(entry.getKey().toLowerCase())) + .map(Map.Entry::getKey) + .findFirst() + .orElse(""); // 如果没有匹配到,则返回空字符串 + }, + Map.Entry::getValue + )) + ) + .filter(transformedMap -> !transformedMap.isEmpty()) // 过滤空的 Map + .collect(Collectors.toList()); + + + // 5. 通过反射设置 GeospatialVectors 对象的属性 + for (Map transformedMap : resultList) { + BusinessGeospatialVectors geoVector = new BusinessGeospatialVectors(); + + transformedMap.forEach((key, value) -> { + try { + // 尝试通过反射找到相应的Setter方法,并调用 + Method setterMethod = BusinessGeospatialVectors.class.getMethod("set" + capitalizeFirstLetter(key), String.class); + + setterMethod.invoke(geoVector, value); + } catch (Exception e) { + e.printStackTrace(); + } + }); + + geoVector.setCreateTime(new Date()); + geospatialVectorsList.add(geoVector); + } + //6、生成新的对象集合存储数据表中 + //todo 处理这个集合geospatialVectorsList + List areasList = buildBusinessPatrolAreas(geospatialVectorsList); - List patrolAreasUsers = patrolAreas.getPatrolAreasUsers(); - patrolAreasUsers.stream().forEach(item->{ - item.setAreaId(patrolAreas.getId()); - }); - if(CollectionUtils.isNotEmpty(patrolAreasUsers)){ - flag = patrolAreasUserService.saveBatch(patrolAreasUsers,500); - } - List patrolAreasPoints = patrolAreas.getPatrolAreasPoints(); - patrolAreasPoints.stream().forEach(item->{ - item.setAreaId(patrolAreas.getId()); - }); - if(CollectionUtils.isNotEmpty(patrolAreasPoints)) { - flag = patrolAreasPointsService.saveBatch(patrolAreasPoints, 500); + + } catch (Exception e) { + e.printStackTrace(); } - return flag; } - @Override - public List exportXls(BusinessPatrolAreas patrolAreas) { - LambdaQueryWrapper wrapper = buildWrapper(patrolAreas); + /** + * 根据解析shp得到的内容封装到BusinessPatrolAreas这个类里面 + * @param paramList + * @return + */ + private List buildBusinessPatrolAreas(List paramList) { + List resultList = new ArrayList<>(); - return this.list(wrapper); + return resultList; + } + + private static String capitalizeFirstLetter(String str) { + if (str == null || str.isEmpty()) { + return str; + } + return str.substring(0, 1).toUpperCase() + str.substring(1); } private LambdaQueryWrapper buildWrapper(BusinessPatrolAreas patrolAreas) { LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); if (ObjectUtil.isNotEmpty(patrolAreas.getName())){ - wrapper.eq(BusinessPatrolAreas::getName, patrolAreas.getName()); + wrapper.like(BusinessPatrolAreas::getName, patrolAreas.getName()); } if (ObjectUtil.isNotEmpty(patrolAreas.getDeptId())){ wrapper.eq(BusinessPatrolAreas::getDeptId, patrolAreas.getDeptId()); } + if (ObjectUtil.isNotEmpty(patrolAreas.getAreasIdList())){ + wrapper.in(BusinessPatrolAreas::getId, patrolAreas.getAreasIdList()); + } + return wrapper; } } diff --git a/dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessPatrolAreasUserServiceImpl.java b/dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessPatrolAreasUserServiceImpl.java deleted file mode 100644 index 36e6b88..0000000 --- a/dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessPatrolAreasUserServiceImpl.java +++ /dev/null @@ -1,23 +0,0 @@ -package org.dromara.business.service.impl; - -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import lombok.RequiredArgsConstructor; -import org.dromara.business.domain.BusinessPatrolAreasUser; -import org.dromara.business.mapper.BusinessPatrolAreasUserMapper; -import org.dromara.business.service.IBusinessPatrolAreasUserService; -import org.springframework.stereotype.Service; - -import java.util.List; - -/** - * @Description: 巡查区域人员信息 - */ -@RequiredArgsConstructor -@Service -public class BusinessPatrolAreasUserServiceImpl extends ServiceImpl implements IBusinessPatrolAreasUserService { - - @Override - public List listPatrolAreasUserByAreaId(String areaId) { - return baseMapper.listPatrolAreasUserByAreaId(areaId); - } -} diff --git a/dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessPlatformInfoServiceImpl.java b/dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessPlatformInfoServiceImpl.java deleted file mode 100644 index 5aba5e1..0000000 --- a/dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessPlatformInfoServiceImpl.java +++ /dev/null @@ -1,17 +0,0 @@ -package org.dromara.business.service.impl; - -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import org.dromara.business.domain.BusinessPlatformInfo; -import org.dromara.business.mapper.BusinessPlatformInfoMapper; -import org.dromara.business.service.IBusinessPlatformInfoService; -import org.springframework.stereotype.Service; - -/** - * - **/ -@Service -public class BusinessPlatformInfoServiceImpl extends ServiceImpl implements IBusinessPlatformInfoService { - - - -} diff --git a/dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessVectorDictItemServiceImpl.java b/dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessVectorDictItemServiceImpl.java new file mode 100644 index 0000000..cebde8c --- /dev/null +++ b/dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessVectorDictItemServiceImpl.java @@ -0,0 +1,28 @@ +package org.dromara.business.service.impl; + + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.dromara.business.domain.BusinessVectorDictItem; +import org.dromara.business.mapper.BusinessVectorDictItemMapper; +import org.dromara.business.service.IBusinessVectorDictItemService; +import org.springframework.stereotype.Service; + +import java.util.List; + + +/** + * 矢量数据字段映射关联服务类 + */ +@Service +public class BusinessVectorDictItemServiceImpl extends ServiceImpl implements IBusinessVectorDictItemService { + + + @Override + public List findDictItemByDictId(String dictId) { + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(BusinessVectorDictItem::getDictId, dictId); + + return this.baseMapper.selectList(wrapper); + } +} diff --git a/dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessVectorDictServiceImpl.java b/dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessVectorDictServiceImpl.java new file mode 100644 index 0000000..363d5b3 --- /dev/null +++ b/dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessVectorDictServiceImpl.java @@ -0,0 +1,37 @@ +package org.dromara.business.service.impl; + +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.dromara.business.domain.BusinessVectorDict; +import org.dromara.business.mapper.BusinessVectorDictMapper; +import org.dromara.business.service.IBusinessVectorDictService; +import org.springframework.stereotype.Service; + +import java.util.List; + + +/** + * 矢量数据字段映射主表服务类 + */ +@Service +public class BusinessVectorDictServiceImpl extends ServiceImpl implements IBusinessVectorDictService { + + + @Override + public List listVectorField() { + return this.baseMapper.listVectorField(); + } + + @Override + public BusinessVectorDict findVectorDictById(String dictId) { + if (ObjectUtil.isEmpty(dictId)){ + throw new RuntimeException("【dictId】为空,参数为空!"); + } + + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(BusinessVectorDict::getId, dictId); + + return this.baseMapper.selectOne(wrapper); + } +} diff --git a/dk-modules/business/src/main/java/org/dromara/business/utils/ShpAnalysisUtil.java b/dk-modules/business/src/main/java/org/dromara/business/utils/ShpAnalysisUtil.java new file mode 100644 index 0000000..58a8268 --- /dev/null +++ b/dk-modules/business/src/main/java/org/dromara/business/utils/ShpAnalysisUtil.java @@ -0,0 +1,368 @@ +package org.dromara.business.utils; + +import cn.hutool.core.util.ObjectUtil; +import org.geotools.data.FileDataStore; +import org.geotools.data.FileDataStoreFinder; +import org.geotools.data.shapefile.ShapefileDataStore; +import org.geotools.data.simple.SimpleFeatureCollection; +import org.geotools.data.simple.SimpleFeatureIterator; +import org.geotools.data.simple.SimpleFeatureSource; +import org.geotools.geometry.jts.JTS; +import org.geotools.referencing.CRS; +import org.locationtech.jts.geom.Coordinate; +import org.locationtech.jts.geom.Geometry; +import org.locationtech.jts.geom.MultiPolygon; +import org.locationtech.jts.geom.Polygon; +import org.locationtech.jts.operation.union.UnaryUnionOp; +import org.opengis.feature.Property; +import org.opengis.feature.simple.SimpleFeature; +import org.opengis.referencing.crs.CoordinateReferenceSystem; +import org.opengis.referencing.operation.MathTransform; +import org.opengis.referencing.operation.TransformException; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.io.*; +import java.nio.charset.Charset; +import java.nio.file.Files; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.zip.ZipEntry; +import java.util.zip.ZipException; +import java.util.zip.ZipInputStream; + +/** + * shp文件读取工具类 + * 支持不同类型的地理要素 + */ +public class ShpAnalysisUtil { + + private static final Logger log = LoggerFactory.getLogger(ShpAnalysisUtil.class); + + private static final String CHECK_FIELD = "O_Com"; + + /** + * 读取shp文件,返回要素集合 + * @param shpPath shp文件路径 + * @return 要素集合,包含地理位置和属性信息 + */ + public static List> analysisShpFile(String shpPath) { + List> resultList = new ArrayList<>(); + + try { + resultList=analysisShpFile(shpPath, "GBK"); + } catch (Exception e) { + log.error("无法使用支持的字符编码读取shp文件: {}", e.getMessage()); + } + + return resultList; + } + + /** + * 读取shp文件,返回要素集合 + * @param shpInputStream shp文件输入流 + * @return 要素集合,包含地理位置和属性信息 + */ + public static List> analysisShpFile(InputStream shpInputStream) { + List> resultList = new ArrayList<>(); + + try { + resultList = analysisShpFile(shpInputStream, "GBK"); + } catch (Exception e) { + log.error("无法使用支持的字符编码读取shp文件输入流: {}", e.getMessage()); + } + + return resultList; + } + + /** + * 读取shp文件的主要方法(仅支持ZIP输入流) + * + * @param shpInputStream shp文件ZIP输入流 + * @param charset 字符编码 + * @return 要素集合,包含地理位置和属性信息 + * @throws IllegalArgumentException 如果输入流不是ZIP格式 + */ + public static List> analysisShpFile(InputStream shpInputStream, String charset) { + // 存储解析出的要素集合 + List> resultList = new ArrayList<>(); + File tempDir = null; + + try { + // 创建临时目录 + tempDir = Files.createTempDirectory("plough_shp_").toFile(); + tempDir.deleteOnExit(); // 额外保障 + + // 使用指定编码的ZipInputStream处理 + Charset zipCharset = Charset.forName(charset); + try (ZipInputStream zipInputStream = new ZipInputStream(new BufferedInputStream(shpInputStream), zipCharset)) { + ZipEntry entry; + boolean shpFound = false; + while ((entry = zipInputStream.getNextEntry()) != null) { + // 处理文件名编码问题 + log.info("文件名字:{}",entry.getName()); + File outputFile = new File(tempDir, entry.getName()); + + // 创建父目录 + if (entry.isDirectory()) { + outputFile.mkdirs(); + } else { + // 确保父目录存在 + outputFile.getParentFile().mkdirs(); + + // 写入文件 + try (FileOutputStream fos = new FileOutputStream(outputFile)) { + byte[] buffer = new byte[1024]; + int len; + while ((len = zipInputStream.read(buffer)) > 0) { + fos.write(buffer, 0, len); + } + } + + // 检查是否为SHP文件 + if (entry.getName().toLowerCase().endsWith(".shp")) { + shpFound = true; + } + } + } + + // 如果没有找到SHP文件,抛出异常 + if (!shpFound) { + throw new FileNotFoundException("ZIP压缩包中未找到SHP文件"); + } + } catch (ZipException e) { + // 非ZIP输入流,抛出异常 + throw new IllegalArgumentException("输入流不是有效的ZIP格式", e); + } + + // 查找第一个.shp文件 + File shpFile = findFirstShpFile(tempDir); + if (shpFile == null) { + throw new FileNotFoundException("未找到SHP文件"); + } + + // 使用找到的SHP文件路径调用现有方法 + resultList = analysisShpFile(shpFile.getAbsolutePath(), charset); + + } catch (Exception e) { + log.error("处理SHP文件输入流失败: {}", e.getMessage(), e); + throw new RuntimeException("处理SHP文件失败", e); + } finally { + // 尝试删除临时目录及其内容 + if (tempDir != null && tempDir.exists()) { + deleteDirectory(tempDir); + } + //关闭流文件 + try { + shpInputStream.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + + return resultList; + } + + + /** + * 读取shp文件的主要方法 + * + * @param shpPath shp文件路径 + * @param charset 字符编码 + * @return 要素集合,包含地理位置和属性信息 + */ + public static List> analysisShpFile(String shpPath, String charset) { + // 存储解析出的要素集合 + List> resultList = new ArrayList<>(); + + try { + // 1、验证文件在路径中是否存在 + File shpFile = new File(shpPath); + if (!shpFile.exists()) { + log.error("shp文件不存在:{} ", shpPath); + return resultList; + } + + // 2、设置GeoTools坐标的字符编码 + System.setProperty("org.geotools.referencing.charset", charset); + System.setProperty("org.geotools.shapefile.charset", charset); + + // 3、获取数据存储实例 + FileDataStore dataStore = FileDataStoreFinder.getDataStore(shpFile); + if (ObjectUtil.isEmpty(dataStore)) { + log.error("无法打开shape文件:{} ", shpPath); + return resultList; + } + + // 4、设置shp文件的DBF文件编码 + if (dataStore instanceof ShapefileDataStore) { + ((ShapefileDataStore) dataStore).setCharset(Charset.forName(charset)); + } + + try { + // 5、获取要素源和要素集合 + SimpleFeatureSource featureSource = dataStore.getFeatureSource(); + SimpleFeatureCollection featureCollection = featureSource.getFeatures(); + String typeName = dataStore.getTypeNames()[0]; + CoordinateReferenceSystem sourceCRS = dataStore.getFeatureSource(typeName).getSchema().getCoordinateReferenceSystem(); + CoordinateReferenceSystem targetCRS = CRS.decode("EPSG:4326"); + MathTransform transform = CRS.findMathTransform(sourceCRS, targetCRS, true); + + // 遍历处理每个要素 + try (SimpleFeatureIterator iterator = featureCollection.features()) { + while (iterator.hasNext()) { + SimpleFeature feature = iterator.next(); + Map featureMap = new HashMap<>(); + + for (Property property : feature.getProperties()) { + String name = property.getName().toString(); + Object value = property.getValue(); + + // 处理几何数据 + try { + if (value instanceof Geometry) { + // 如果值本身就是Geometry类型,直接使用 + value = analysisGeometry((Geometry) value, transform); + } + } catch (Exception e) { + log.warn("Error processing geometry for property {}: {}", name, e.getMessage()); + } + + // 处理特殊字段 + if (name.startsWith(CHECK_FIELD)) { + Map parsedValues = parseOComValue(value); + featureMap.putAll(parsedValues); + } else { + featureMap.put(name, value.toString()); + } + } + + resultList.add(featureMap); + } + } + } finally { + // 确保数据存储被正确关闭 + dataStore.dispose(); + } + + } catch (Exception e) { + e.printStackTrace(); + log.error("读取shape文件失败: {}", e.getMessage()); + } + + return resultList; + } + + + /** + * 解析O_Com字段值 + * + * @param oComValue O_Com字段值 + * @return 解析后的属性Map + */ + private static Map parseOComValue(Object oComValue) { + // 初始化返回结果Map + Map attributes = new HashMap<>(); + if (ObjectUtil.isEmpty(oComValue)) return attributes; + + // 预处理字符串,去除多余空格 + String comStr = oComValue.toString().trim(); + + try { + // 按分号分割键值对 + String[] pairs = comStr.split(";"); + for (String pair : pairs) { + pair = pair.trim(); + if (pair.isEmpty()) continue; + + // 解析键值对 + String[] keyValue = pair.split(":"); + if (keyValue.length == 2) { + // 清理键值中的引号 + String key = keyValue[0].trim().replace("\"", ""); + String value = keyValue[1].trim().replace("\"", ""); + + // 直接存储字符串值,不进行类型转换 + attributes.put(key, value); + } + } + } catch (Exception e) { + log.error("解析O_Com字段值失败: {}", e.getMessage()); + } + + return attributes; + } + + + private static String analysisGeometry(Geometry geometry, MathTransform transform) throws TransformException { + String resultStr = ""; + // 对每个 Polygon 进行坐标转换 + Geometry transformedGeometry = JTS.transform(geometry, transform); + MultiPolygon multiPolygon = (MultiPolygon) transformedGeometry; + Geometry unionGeometry = UnaryUnionOp.union(multiPolygon); + if (unionGeometry instanceof Polygon) { + Polygon polygon = (Polygon) unionGeometry; + resultStr = convertPolygonToWKT(polygon); + } + + return resultStr; + } + + + + private static String convertPolygonToWKT(Polygon polygon) { + StringBuffer polygonSb = new StringBuffer("GEOMETRYCOLLECTION(POLYGON(("); + + Coordinate[] coordinates = polygon.getCoordinates(); + for (int i = 0; i < coordinates.length; i++) { + Coordinate coord = coordinates[i]; + if (i > 0) polygonSb.append(","); + polygonSb.append(coord.y + " " + coord.x); + } + if(coordinates[0].x !=coordinates[coordinates.length-1].x){ + polygonSb.append(","+coordinates[0].y + " " + coordinates[0].x); + } + polygonSb.append(")))"); + return polygonSb.toString(); + } + + + /** + * 递归删除目录 + * @param directory 要删除的目录 + */ + private static void deleteDirectory(File directory) { + File[] files = directory.listFiles(); + if (files != null) { + for (File file : files) { + if (file.isDirectory()) { + deleteDirectory(file); + } else { + boolean deleted = file.delete(); + if (!deleted) { + log.warn("删除文件 {} 失败", file.getAbsolutePath()); + } + } + } + } + + boolean dirDeleted = directory.delete(); + if (!dirDeleted) { + log.warn("删除目录 {} 失败", directory.getAbsolutePath()); + } + } + + /** + * 在指定目录中查找第一个.shp文件 + * @param directory 搜索目录 + * @return 找到的第一个.shp文件,未找到返回null + */ + private static File findFirstShpFile(File directory) { + File[] files = directory.listFiles((dir, name) -> name.toLowerCase().endsWith(".shp")); + return files != null && files.length > 0 ? files[0] : null; + } + + +} diff --git a/dk-modules/business/src/main/resources/mapper/business/BusinessPatrolAreasPointsMapper.xml b/dk-modules/business/src/main/resources/mapper/business/BusinessPatrolAreasPointsMapper.xml deleted file mode 100644 index 7c013c1..0000000 --- a/dk-modules/business/src/main/resources/mapper/business/BusinessPatrolAreasPointsMapper.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - diff --git a/dk-modules/business/src/main/resources/mapper/business/BusinessPatrolAreasUserMapper.xml b/dk-modules/business/src/main/resources/mapper/business/BusinessPatrolAreasUserMapper.xml deleted file mode 100644 index 3a14a4b..0000000 --- a/dk-modules/business/src/main/resources/mapper/business/BusinessPatrolAreasUserMapper.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - - - diff --git a/dk-modules/business/src/main/resources/mapper/business/BusinessPlatformInfoCodeMapper.xml b/dk-modules/business/src/main/resources/mapper/business/BusinessPlatformInfoCodeMapper.xml deleted file mode 100644 index de2160f..0000000 --- a/dk-modules/business/src/main/resources/mapper/business/BusinessPlatformInfoCodeMapper.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - - - diff --git a/dk-modules/business/src/main/resources/mapper/business/BusinessPlatformInfoMapper.xml b/dk-modules/business/src/main/resources/mapper/business/BusinessPlatformInfoMapper.xml deleted file mode 100644 index 0719692..0000000 --- a/dk-modules/business/src/main/resources/mapper/business/BusinessPlatformInfoMapper.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - - - - - - - - - - - - - diff --git a/dk-modules/business/src/main/resources/mapper/business/BusinessPatrolAreasPlatformMapper.xml b/dk-modules/business/src/main/resources/mapper/business/BusinessVectorDictItemMapper.xml similarity index 65% rename from dk-modules/business/src/main/resources/mapper/business/BusinessPatrolAreasPlatformMapper.xml rename to dk-modules/business/src/main/resources/mapper/business/BusinessVectorDictItemMapper.xml index a8d9948..b217399 100644 --- a/dk-modules/business/src/main/resources/mapper/business/BusinessPatrolAreasPlatformMapper.xml +++ b/dk-modules/business/src/main/resources/mapper/business/BusinessVectorDictItemMapper.xml @@ -1,5 +1,7 @@ - + + + diff --git a/dk-modules/business/src/main/resources/mapper/business/BusinessVectorDictMapper.xml b/dk-modules/business/src/main/resources/mapper/business/BusinessVectorDictMapper.xml new file mode 100644 index 0000000..88f5af6 --- /dev/null +++ b/dk-modules/business/src/main/resources/mapper/business/BusinessVectorDictMapper.xml @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + diff --git a/dk-modules/system/src/main/java/org/dromara/system/dubbo/RemoteUserServiceImpl.java b/dk-modules/system/src/main/java/org/dromara/system/dubbo/RemoteUserServiceImpl.java index 5efa36a..cb6bba9 100644 --- a/dk-modules/system/src/main/java/org/dromara/system/dubbo/RemoteUserServiceImpl.java +++ b/dk-modules/system/src/main/java/org/dromara/system/dubbo/RemoteUserServiceImpl.java @@ -386,4 +386,10 @@ public class RemoteUserServiceImpl implements RemoteUserService { return selectListByIds(new ArrayList<>(userIds)); } + @Override + public List selectUserByUserIds(List userIds) { + List sysUserVos = userService.selectUserByUserIds(userIds); + return MapstructUtils.convert(sysUserVos, RemoteUserVo.class); + } + } diff --git a/dk-modules/system/src/main/java/org/dromara/system/mapper/SysUserMapper.java b/dk-modules/system/src/main/java/org/dromara/system/mapper/SysUserMapper.java index fc7fc6e..bec69cc 100644 --- a/dk-modules/system/src/main/java/org/dromara/system/mapper/SysUserMapper.java +++ b/dk-modules/system/src/main/java/org/dromara/system/mapper/SysUserMapper.java @@ -1,6 +1,7 @@ package org.dromara.system.mapper; import com.baomidou.mybatisplus.core.conditions.Wrapper; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Constants; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import org.apache.ibatis.annotations.Param; @@ -74,6 +75,8 @@ public interface SysUserMapper extends BaseMapperPlus { }) long countUserById(Long userId); + List selectUserByUserIds(@Param(Constants.WRAPPER) Wrapper queryWrapper); + @Override @DataPermission({ @DataColumn(key = "deptName", value = "dept_id"), diff --git a/dk-modules/system/src/main/java/org/dromara/system/service/ISysUserService.java b/dk-modules/system/src/main/java/org/dromara/system/service/ISysUserService.java index a6f18c7..4887005 100644 --- a/dk-modules/system/src/main/java/org/dromara/system/service/ISysUserService.java +++ b/dk-modules/system/src/main/java/org/dromara/system/service/ISysUserService.java @@ -268,4 +268,5 @@ public interface ISysUserService { */ List selectUserIdsByRoleIds(List roleIds); + List selectUserByUserIds(List userIds); } diff --git a/dk-modules/system/src/main/java/org/dromara/system/service/impl/SysUserServiceImpl.java b/dk-modules/system/src/main/java/org/dromara/system/service/impl/SysUserServiceImpl.java index bacf9eb..111ec7e 100644 --- a/dk-modules/system/src/main/java/org/dromara/system/service/impl/SysUserServiceImpl.java +++ b/dk-modules/system/src/main/java/org/dromara/system/service/impl/SysUserServiceImpl.java @@ -185,7 +185,7 @@ public class SysUserServiceImpl implements ISysUserService { @Override public List selectUserByIds(List userIds, Long deptId) { return baseMapper.selectUserList(new LambdaQueryWrapper() - .select(SysUser::getUserId, SysUser::getUserName, SysUser::getNickName, SysUser::getEmail, SysUser::getPhonenumber) .eq(SysUser::getStatus, UserConstants.USER_NORMAL) + .select(SysUser::getUserId, SysUser::getUserName, SysUser::getNickName, SysUser::getEmail, SysUser::getPhonenumber).eq(SysUser::getStatus, UserConstants.USER_NORMAL) .eq(ObjectUtil.isNotNull(deptId), SysUser::getDeptId, deptId) .in(CollUtil.isNotEmpty(userIds), SysUser::getUserId, userIds)); } @@ -559,6 +559,13 @@ public class SysUserServiceImpl implements ISysUserService { return StreamUtils.toList(userRoles, SysUserRole::getUserId); } + @Override + public List selectUserByUserIds(List userIds) { + return baseMapper.selectUserByUserIds(new LambdaQueryWrapper() + .select(SysUser::getUserId, SysUser::getUserName, SysUser::getNickName, SysUser::getEmail, SysUser::getPhonenumber).eq(SysUser::getStatus, UserConstants.USER_NORMAL) + .in(CollUtil.isNotEmpty(userIds), SysUser::getUserId, userIds)); + } + /** * 通过用户ID查询用户账户 * diff --git a/dk-modules/system/src/main/resources/mapper/system/SysUserMapper.xml b/dk-modules/system/src/main/resources/mapper/system/SysUserMapper.xml index bb3c53d..d1750d3 100644 --- a/dk-modules/system/src/main/resources/mapper/system/SysUserMapper.xml +++ b/dk-modules/system/src/main/resources/mapper/system/SysUserMapper.xml @@ -70,4 +70,17 @@ + + diff --git a/dk-modules/workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskAssigneeServiceImpl.java b/dk-modules/workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskAssigneeServiceImpl.java index 873023a..89f5d00 100644 --- a/dk-modules/workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskAssigneeServiceImpl.java +++ b/dk-modules/workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskAssigneeServiceImpl.java @@ -160,7 +160,7 @@ public class FlwTaskAssigneeServiceImpl implements IFlwTaskAssigneeService, Hand */ private List getUsersByType(TaskAssigneeEnum type, List ids) { return switch (type) { - case USER -> remoteUserService.selectListByIds(ids); + case USER -> remoteUserService.selectUserByUserIds(ids); case ROLE -> remoteUserService.selectUsersByRoleIds(ids); case DEPT -> remoteUserService.selectUsersByDeptIds(ids); case POST -> remoteUserService.selectUsersByPostIds(ids); diff --git a/dk-modules/workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskServiceImpl.java b/dk-modules/workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskServiceImpl.java index 34daefb..251d98a 100644 --- a/dk-modules/workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskServiceImpl.java +++ b/dk-modules/workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskServiceImpl.java @@ -146,7 +146,7 @@ public class FlwTaskServiceImpl implements IFlwTaskService { dto.setTaskId(taskList.get(0).getId()); //创建任务 - executeTask(taskList.get(0).getId()); +// executeTask(taskList.get(0).getId()); return dto; } diff --git a/pom.xml b/pom.xml index f29f27b..154afe3 100644 --- a/pom.xml +++ b/pom.xml @@ -74,6 +74,7 @@ 1.6.6 + 23.2 @@ -402,7 +403,6 @@ warm-flow-plugin-ui-sb-web ${warm-flow.version} - @@ -535,6 +535,46 @@ true + + + e-iceblue + e-iceblue + https://repo.e-iceblue.cn/repository/maven-public/ + + always + true + + + always + true + + + + osgeo + OSGeo Release Repository + https://repo.osgeo.org/repository/release/ + + false + + + true + + + + osgeo-snapshot + OSGeo Snapshot Repository + https://repo.osgeo.org/repository/snapshot/ + + true + + + false + + + + jitpack.io + https://jitpack.io + From 068a09241fa4e30e6032080727bb99f639dbe0b6 Mon Sep 17 00:00:00 2001 From: yangwei <867012372@qq.com> Date: Tue, 4 Mar 2025 10:23:53 +0800 Subject: [PATCH 05/11] =?UTF-8?q?[feat]=201=E3=80=81=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=E5=B7=A5=E4=BD=9C=E6=B5=81=E6=B6=88=E6=81=AF=E6=8E=A8=E9=80=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sse/config/SseAutoConfiguration.java | 2 +- .../common/sse/controller/SseController.java | 10 ++-- .../common/sse/listener/SseTopicListener.java | 1 - .../BusinessPatrolAreasController.java | 20 ++----- .../service/impl/FlwTaskServiceImpl.java | 53 ++----------------- 5 files changed, 12 insertions(+), 74 deletions(-) diff --git a/dk-common/common-sse/src/main/java/org/dromara/common/sse/config/SseAutoConfiguration.java b/dk-common/common-sse/src/main/java/org/dromara/common/sse/config/SseAutoConfiguration.java index 0cf8054..81cdda2 100644 --- a/dk-common/common-sse/src/main/java/org/dromara/common/sse/config/SseAutoConfiguration.java +++ b/dk-common/common-sse/src/main/java/org/dromara/common/sse/config/SseAutoConfiguration.java @@ -14,7 +14,7 @@ import org.springframework.context.annotation.Bean; * @author Lion Li */ @AutoConfiguration -@ConditionalOnProperty(value = "sse.enabled", havingValue = "true") +//@ConditionalOnProperty(value = "sse.enabled", havingValue = "true") @EnableConfigurationProperties(SseProperties.class) public class SseAutoConfiguration { diff --git a/dk-common/common-sse/src/main/java/org/dromara/common/sse/controller/SseController.java b/dk-common/common-sse/src/main/java/org/dromara/common/sse/controller/SseController.java index 41832fc..7f99f6f 100644 --- a/dk-common/common-sse/src/main/java/org/dromara/common/sse/controller/SseController.java +++ b/dk-common/common-sse/src/main/java/org/dromara/common/sse/controller/SseController.java @@ -21,7 +21,7 @@ import java.util.List; * @author Lion Li */ @RestController -@ConditionalOnProperty(value = "sse.enabled", havingValue = "true") +//@ConditionalOnProperty(value = "sse.enabled", havingValue = "true") @RequiredArgsConstructor public class SseController implements DisposableBean { @@ -30,7 +30,7 @@ public class SseController implements DisposableBean { /** * 建立 SSE 连接 */ - @GetMapping(value = "${sse.path}", produces = MediaType.TEXT_EVENT_STREAM_VALUE) + @GetMapping(value = "/sse", produces = MediaType.TEXT_EVENT_STREAM_VALUE) public SseEmitter connect() { String tokenValue = StpUtil.getTokenValue(); Long userId = LoginHelper.getUserId(); @@ -40,7 +40,7 @@ public class SseController implements DisposableBean { /** * 关闭 SSE 连接 */ - @GetMapping(value = "${sse.path}/close") + @GetMapping(value = "/sse/close") public R close() { String tokenValue = StpUtil.getTokenValue(); Long userId = LoginHelper.getUserId(); @@ -54,7 +54,7 @@ public class SseController implements DisposableBean { * @param userId 目标用户的 ID * @param msg 要发送的消息内容 */ - @GetMapping(value = "${sse.path}/send") + @GetMapping(value = "/sse/send") public R send(Long userId, String msg) { SseMessageDto dto = new SseMessageDto(); dto.setUserIds(List.of(userId)); @@ -68,7 +68,7 @@ public class SseController implements DisposableBean { * * @param msg 要发送的消息内容 */ - @GetMapping(value = "${sse.path}/sendAll") + @GetMapping(value = "/sse/sendAll") public R send(String msg) { sseEmitterManager.publishAll(msg); return R.ok(); diff --git a/dk-common/common-sse/src/main/java/org/dromara/common/sse/listener/SseTopicListener.java b/dk-common/common-sse/src/main/java/org/dromara/common/sse/listener/SseTopicListener.java index 9adf1a1..ed4eeb1 100644 --- a/dk-common/common-sse/src/main/java/org/dromara/common/sse/listener/SseTopicListener.java +++ b/dk-common/common-sse/src/main/java/org/dromara/common/sse/listener/SseTopicListener.java @@ -15,7 +15,6 @@ import org.springframework.stereotype.Component; * @author Lion Li */ @Slf4j -@Component public class SseTopicListener implements ApplicationRunner, Ordered { @Autowired diff --git a/dk-modules/business/src/main/java/org/dromara/business/controller/BusinessPatrolAreasController.java b/dk-modules/business/src/main/java/org/dromara/business/controller/BusinessPatrolAreasController.java index 20f6991..1e7107b 100644 --- a/dk-modules/business/src/main/java/org/dromara/business/controller/BusinessPatrolAreasController.java +++ b/dk-modules/business/src/main/java/org/dromara/business/controller/BusinessPatrolAreasController.java @@ -1,8 +1,6 @@ package org.dromara.business.controller; import cn.hutool.core.util.ObjectUtil; -import com.baomidou.mybatisplus.core.metadata.IPage; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import lombok.RequiredArgsConstructor; import org.dromara.business.domain.BusinessPatrolAreas; import org.dromara.business.domain.bo.BusinessPatrolAreasBo; @@ -75,11 +73,7 @@ public class BusinessPatrolAreasController extends BaseController { */ @RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST}) public R edit(@RequestBody BusinessPatrolAreas patrolAreas) { - boolean flag = patrolAreasService.updatePatrolAreas(patrolAreas); - if(flag){ - return R.ok("添加成功!"); - } - return R.fail("新增失败"); + return patrolAreasService.updatePatrolAreas(patrolAreas)?R.ok("添加成功!"):R.fail("添加失败"); } /** * 巡查区域-禁用/启用 @@ -89,11 +83,7 @@ public class BusinessPatrolAreasController extends BaseController { */ @RequestMapping(value = "/isDisable", method = {RequestMethod.PUT,RequestMethod.POST}) public R isDisable(@RequestBody BusinessPatrolAreas patrolAreas) { - boolean flag = patrolAreasService.updateById(patrolAreas); - if(flag){ - return R.ok("修改成功!"); - } - return R.fail("操作失败"); + return patrolAreasService.updateById(patrolAreas)?R.ok("修改成功!"):R.fail("修改失败"); } /** * 巡查区域-删除 @@ -103,11 +93,7 @@ public class BusinessPatrolAreasController extends BaseController { */ @DeleteMapping(value = "/delete") public R delete(String id) { - boolean flag = patrolAreasService.removeById(id); - if(flag){ - return R.ok("删除成功!"); - } - return R.fail("删除失败!"); + return patrolAreasService.removeById(id)?R.ok("删除成功!"):R.fail("删除失败!"); } /** * 导出excel diff --git a/dk-modules/workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskServiceImpl.java b/dk-modules/workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskServiceImpl.java index 251d98a..40414e5 100644 --- a/dk-modules/workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskServiceImpl.java +++ b/dk-modules/workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskServiceImpl.java @@ -187,8 +187,8 @@ public class FlwTaskServiceImpl implements IFlwTaskService { // 执行任务跳转,并根据返回的处理人设置下一步处理人 Instance instance = taskService.skip(taskId, flowParams); this.setHandler(instance, flowTask, flowCopyList); - // 消息通知 - sendMessage(definition.getFlowName(), ins.getId(), messageType, notice); + // 待办消息通知 + WorkflowUtils.sendMessage(definition.getFlowName(), ins.getId(), messageType, notice); return true; } catch (Exception e) { log.error(e.getMessage(), e); @@ -430,7 +430,7 @@ public class FlwTaskServiceImpl implements IFlwTaskService { Instance instance = insService.getById(inst.getId()); this.setHandler(instance, task, null); // 消息通知 - sendMessage(definition.getFlowName(), instance.getId(), messageType, notice); + WorkflowUtils.sendMessage(definition.getFlowName(), instance.getId(), messageType, notice); return true; } catch (Exception e) { log.error(e.getMessage(), e); @@ -733,51 +733,4 @@ public class FlwTaskServiceImpl implements IFlwTaskService { service.completeTask(completeTaskBo); } - /** - * 发送消息 - * @param flowName - * @param instId - * @param messageType - * @param message - */ - private void sendMessage(String flowName, Long instId, List messageType, String message) { - List userList = new ArrayList<>(); - List list = this.selectByInstId(instId); - - if (StringUtils.isBlank(message)) { - message = "有新的【" + flowName + "】单据已经提交至您,请您及时处理。"; - } - for (Task task : list) { - List users = this.currentTaskAllUser(task.getId()); - if (CollUtil.isNotEmpty(users)) { - userList.addAll(users); - } - } - if (CollUtil.isNotEmpty(userList)) { - for (String code : messageType) { - MessageTypeEnum messageTypeEnum = MessageTypeEnum.getByCode(code); - if (ObjectUtil.isNotEmpty(messageTypeEnum)) { - switch (messageTypeEnum) { - case SYSTEM_MESSAGE: - SseMessageDto dto = new SseMessageDto(); - dto.setUserIds(StreamUtils.toList(userList, RemoteUserVo::getUserId).stream().distinct().collect(Collectors.toList())); - dto.setMessage(message); - dto.getUserIds().forEach(userId -> { - remoteMessageService.publishMessage(userId,dto.getMessage()); - }); - break; - case EMAIL_MESSAGE: - MailUtils.sendText(StreamUtils.join(userList, RemoteUserVo::getEmail), "单据审批提醒", message); - break; - case SMS_MESSAGE: - //todo 短信发送 - break; - default: - throw new IllegalStateException("Unexpected value: " + messageTypeEnum); - } - } - } - } - } - } From 78f4cd98e0096725f97250f0855afe95a5c8c518 Mon Sep 17 00:00:00 2001 From: yangwei <867012372@qq.com> Date: Tue, 4 Mar 2025 17:00:05 +0800 Subject: [PATCH 06/11] =?UTF-8?q?[feat]=201=E3=80=81=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E9=83=A8=E9=97=A8=E8=A1=A8=E8=BE=B9=E7=95=8C=E7=BC=96=E7=A0=81?= =?UTF-8?q?=E5=AD=97=E6=AE=B5=E3=80=82=202=E3=80=81=E5=BC=80=E5=8F=91?= =?UTF-8?q?=E9=83=A8=E9=97=A8=E5=8C=BA=E5=9F=9F=E7=9B=B8=E5=85=B3=E5=8A=9F?= =?UTF-8?q?=E8=83=BD=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dromara/system/api/RemoteDeptService.java | 4 + .../BusinessDepartBoundaryController.java | 71 +++++++ .../domain/BusinessDepartBoundary.java | 66 ++++++ .../mapper/BusinessDepartBoundaryMapper.java | 24 +++ .../IBusinessDepartBoundaryService.java | 31 +++ .../BusinessDepartBoundaryServiceImpl.java | 198 ++++++++++++++++++ .../business/BusinessDepartBoundaryMapper.xml | 78 +++++++ .../org/dromara/system/domain/SysDept.java | 6 + .../dromara/system/domain/bo/SysDeptBo.java | 5 + .../dromara/system/domain/vo/SysDeptVo.java | 5 + .../system/dubbo/RemoteDeptServiceImpl.java | 6 + .../dromara/system/mapper/SysDeptMapper.java | 3 + .../system/service/ISysDeptService.java | 8 + .../service/impl/SysDeptServiceImpl.java | 7 + .../resources/mapper/system/SysDeptMapper.xml | 34 +++ .../service/impl/FlwTaskServiceImpl.java | 4 +- 16 files changed, 548 insertions(+), 2 deletions(-) create mode 100644 dk-modules/business/src/main/java/org/dromara/business/controller/BusinessDepartBoundaryController.java create mode 100644 dk-modules/business/src/main/java/org/dromara/business/domain/BusinessDepartBoundary.java create mode 100644 dk-modules/business/src/main/java/org/dromara/business/mapper/BusinessDepartBoundaryMapper.java create mode 100644 dk-modules/business/src/main/java/org/dromara/business/service/IBusinessDepartBoundaryService.java create mode 100644 dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessDepartBoundaryServiceImpl.java create mode 100644 dk-modules/business/src/main/resources/mapper/business/BusinessDepartBoundaryMapper.xml diff --git a/dk-api/api-system/src/main/java/org/dromara/system/api/RemoteDeptService.java b/dk-api/api-system/src/main/java/org/dromara/system/api/RemoteDeptService.java index cc90817..01098ac 100644 --- a/dk-api/api-system/src/main/java/org/dromara/system/api/RemoteDeptService.java +++ b/dk-api/api-system/src/main/java/org/dromara/system/api/RemoteDeptService.java @@ -3,6 +3,7 @@ package org.dromara.system.api; import org.dromara.system.api.domain.vo.RemoteDeptVo; import java.util.List; +import java.util.Map; /** * 部门服务 @@ -22,4 +23,7 @@ public interface RemoteDeptService { List selectDeptsByList(); RemoteDeptVo selectDeptById(Long deptId); + + List> getNamePathList(); + } diff --git a/dk-modules/business/src/main/java/org/dromara/business/controller/BusinessDepartBoundaryController.java b/dk-modules/business/src/main/java/org/dromara/business/controller/BusinessDepartBoundaryController.java new file mode 100644 index 0000000..fb07fe0 --- /dev/null +++ b/dk-modules/business/src/main/java/org/dromara/business/controller/BusinessDepartBoundaryController.java @@ -0,0 +1,71 @@ +package org.dromara.business.controller; + + +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.dromara.business.domain.BusinessDepartBoundary; +import org.dromara.business.service.IBusinessDepartBoundaryService; +import org.dromara.common.core.domain.R; +import org.dromara.common.mybatis.core.page.PageQuery; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +/** + * 部门区域 + */ +@RestController +@RequestMapping("/depart/boundary") +@Slf4j +@RequiredArgsConstructor +public class BusinessDepartBoundaryController { + + private final IBusinessDepartBoundaryService departBoundaryService; + + /** + * @return + */ + @RequestMapping(value = "/page", method = RequestMethod.GET) + public TableDataInfo queryPageList(BusinessDepartBoundary departBoundary, PageQuery pageQuery) { + return departBoundaryService.listSysDepartBoundary(pageQuery, departBoundary); + } + + + /** + * 解析shp文件 + * @return + */ + @RequestMapping(value = "/upload", method = RequestMethod.POST) + public void uploadShpFile(@RequestParam("file") MultipartFile file) { + try { + departBoundaryService.uploadShpFile(file); + R.ok("操作成功!"); + } catch (Exception e) { + log.error(e.getMessage(), e); + R.fail("操作失败"); + } + } + + /** + * 编辑 + * + * @param + * @return + */ + @RequestMapping(value = "/update", method = RequestMethod.POST) + public R updateDepartBoundary(@RequestBody BusinessDepartBoundary departBoundary) { + return departBoundaryService.updateDepartBoundary(departBoundary)?R.ok("编辑成功!"):R.fail("编辑失败!"); + } + + + /** + * 通过id删除 + * + * @param id + * @return + */ + @RequestMapping(value = "/delete", method = RequestMethod.DELETE) + public R delete(@RequestParam(name = "id") String id) { + return departBoundaryService.deleteDepartBoundary(id)?R.ok("删除成功!"):R.fail("删除失败!"); + } +} diff --git a/dk-modules/business/src/main/java/org/dromara/business/domain/BusinessDepartBoundary.java b/dk-modules/business/src/main/java/org/dromara/business/domain/BusinessDepartBoundary.java new file mode 100644 index 0000000..6bff413 --- /dev/null +++ b/dk-modules/business/src/main/java/org/dromara/business/domain/BusinessDepartBoundary.java @@ -0,0 +1,66 @@ +package org.dromara.business.domain; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.dromara.common.mybatis.core.domain.BaseEntity; +import org.jeecgframework.poi.excel.annotation.Excel; + +/** + * 部门区域边界表 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("business_depart_boundary") +public class BusinessDepartBoundary extends BaseEntity { + + private static final long serialVersionUID = 1L; + + /**ID*/ + @TableId(type = IdType.AUTO) + private String id; + /**机构ID*/ + private String deptId; + /**机构/部门名称*/ + @Excel(name="机构/部门名称",width=15) + private String deptName; + + /**是否显示0显示,1不显示*/ + private Integer type; + /**边界*/ + + private String communityName; + /**边界*/ + private String boundary; + + /** + * 周长 + */ + private Double perimeter; + + /** + * 面积平方公里 + */ + private Double area; + + /** + * 面积亩 + */ + private Double areaMu; + + /** + * 编号 + */ + private String shpNo; + + /** + * 0不为村级别,1为村级别 + */ + private Integer villageType; + + /**删除状态(0,正常,1已删除)*/ + private String delFlag; + +} diff --git a/dk-modules/business/src/main/java/org/dromara/business/mapper/BusinessDepartBoundaryMapper.java b/dk-modules/business/src/main/java/org/dromara/business/mapper/BusinessDepartBoundaryMapper.java new file mode 100644 index 0000000..f2e3c55 --- /dev/null +++ b/dk-modules/business/src/main/java/org/dromara/business/mapper/BusinessDepartBoundaryMapper.java @@ -0,0 +1,24 @@ +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 java.util.List; + +/** + * 部门 Mapper 接口 + */ +public interface BusinessDepartBoundaryMapper extends BaseMapper { + Page listSysDepartBoundary(Page page,@Param("condition") BusinessDepartBoundary sysDepartBoundary); + + List listSysDepartBoundaryGeomFromText(@Param("condition") BusinessDepartBoundary sysDepartBoundary); + /** + * 通过部门编码获取部门边界数据 + * @param deptId 部门编码 + * @return String + */ + List queryByDeptId(@Param("deptId") String deptId); + +} diff --git a/dk-modules/business/src/main/java/org/dromara/business/service/IBusinessDepartBoundaryService.java b/dk-modules/business/src/main/java/org/dromara/business/service/IBusinessDepartBoundaryService.java new file mode 100644 index 0000000..cc2e20c --- /dev/null +++ b/dk-modules/business/src/main/java/org/dromara/business/service/IBusinessDepartBoundaryService.java @@ -0,0 +1,31 @@ +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; + +/** + *

+ * 部门表 服务实现类 + *

+ * + * @Author:Steve + * @Since: 2019-01-22 + */ +public interface IBusinessDepartBoundaryService extends IService{ + TableDataInfo listSysDepartBoundary(PageQuery page, BusinessDepartBoundary departBoundary); + + List listSysDepartBoundaryGeomFromText(BusinessDepartBoundary departBoundary); + + List queryByDeptId(String deptId); + + void uploadShpFile(MultipartFile file); + + boolean deleteDepartBoundary(String id); + + boolean updateDepartBoundary(BusinessDepartBoundary departBoundary); +} diff --git a/dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessDepartBoundaryServiceImpl.java b/dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessDepartBoundaryServiceImpl.java new file mode 100644 index 0000000..d47c88c --- /dev/null +++ b/dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessDepartBoundaryServiceImpl.java @@ -0,0 +1,198 @@ +package org.dromara.business.service.impl; + +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.RequiredArgsConstructor; +import org.apache.dubbo.config.annotation.DubboReference; +import org.dromara.business.domain.BusinessDepartBoundary; +import org.dromara.business.domain.BusinessGeospatialVectors; +import org.dromara.business.domain.BusinessPatrolAreas; +import org.dromara.business.domain.BusinessVectorDict; +import org.dromara.business.mapper.BusinessDepartBoundaryMapper; +import org.dromara.business.service.IBusinessDepartBoundaryService; +import org.dromara.business.service.IBusinessVectorDictService; +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.system.api.RemoteDeptService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.jdbc.datasource.DataSourceUtils; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.multipart.MultipartFile; + +import javax.sql.DataSource; +import java.io.InputStream; +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.Date; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +/** + * 部门区域 + */ +@Service +@RequiredArgsConstructor +public class BusinessDepartBoundaryServiceImpl extends ServiceImpl implements IBusinessDepartBoundaryService { + + + private final IBusinessVectorDictService vectorDictService; + + @DubboReference + RemoteDeptService remoteDeptService; + + @Override + public TableDataInfo listSysDepartBoundary(PageQuery pageQuery, BusinessDepartBoundary departBoundary) { + Page page = baseMapper.listSysDepartBoundary(pageQuery.build(),departBoundary); + + return TableDataInfo.build(page); + + } + + @Override + public List listSysDepartBoundaryGeomFromText(BusinessDepartBoundary sysDepartBoundary) { + return baseMapper.listSysDepartBoundaryGeomFromText(sysDepartBoundary); + } + + @Override + public List queryByDeptId(String deptId) { + return baseMapper.queryByDeptId(deptId); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void uploadShpFile(MultipartFile file) { + List geospatialVectorsList = new ArrayList<>(); + try { + //1、首先调用解析工具拿到解析的字段集合 + InputStream inputStream = file.getInputStream(); + List> mapList = ShpAnalysisUtil.analysisShpFile(inputStream); + + // 3. 构建字典map + List fieldsInfoList = vectorDictService.listVectorField(); + + Map> dictMap = fieldsInfoList + .stream() + .collect(Collectors.toMap( + BusinessVectorDict::getDictCode, + v -> v.getFieldMappingsList().stream() + .map(mapping -> mapping.getItemValue().toLowerCase()) // 转小写 + .collect(Collectors.toList()) + )); + + // 4. 遍历 mapList,替换映射关系并只保留有效条目 + List> resultList = mapList.stream() + .map(originalMap -> originalMap.entrySet().stream() + .filter(entry -> { + String keyLower = entry.getKey().toLowerCase(); // 将 mapList 中的 key 转换为小写 + // 遍历 dictMap 的所有 List,检查其中是否包含该 key + return dictMap.values().stream() + .anyMatch(list -> list.contains(keyLower)); // 判断 dictMap 中的 List 是否包含该 key + }) + .collect(Collectors.toMap( + entry -> { + // 根据匹配的 key 查找 dictMap 中对应的 key + return dictMap.entrySet().stream() + .filter(mapEntry -> mapEntry.getValue().contains(entry.getKey().toLowerCase())) + .map(Map.Entry::getKey) + .findFirst() + .orElse(""); // 如果没有匹配到,则返回空字符串 + }, + Map.Entry::getValue + )) + ) + .filter(transformedMap -> !transformedMap.isEmpty()) // 过滤空的 Map + .collect(Collectors.toList()); + + + // 5. 通过反射设置 GeospatialVectors 对象的属性 + for (Map transformedMap : resultList) { + BusinessGeospatialVectors geoVector = new BusinessGeospatialVectors(); + + transformedMap.forEach((key, value) -> { + try { + // 尝试通过反射找到相应的Setter方法,并调用 + Method setterMethod = BusinessGeospatialVectors.class.getMethod("set" + capitalizeFirstLetter(key), String.class); + + setterMethod.invoke(geoVector, value); + } catch (Exception e) { + e.printStackTrace(); + } + }); + + geoVector.setCreateTime(new Date()); + geospatialVectorsList.add(geoVector); + } + + //6、生成新的对象集合存储数据表中 + List boundaryList = buildBusinessDepartBoundary(geospatialVectorsList); + + //批量新增部门区域数据 + this.saveBatch(boundaryList); + } catch (Exception e) { + e.printStackTrace(); + } + } + + @Override + public boolean updateDepartBoundary(BusinessDepartBoundary departBoundary) { + if (ObjectUtil.isEmpty(departBoundary.getId())) { + throw new ServiceException("【id】参数为空"); + } + + return this.updateById(departBoundary); + } + + @Override + public boolean deleteDepartBoundary(String id) { + BusinessDepartBoundary departBoundary = this.baseMapper.selectById(id); + + if (ObjectUtil.isEmpty(departBoundary)) { + throw new ServiceException("实体不存在!"); + } + + return this.baseMapper.deleteById(departBoundary.getId())>0; + } + + + /** + * 根据解析的shp文件数据,构建部门区域 + * @param geospatialVectorsList + * @return + */ + private List buildBusinessDepartBoundary(List geospatialVectorsList) { + List resultList = new ArrayList<>(); + + List> namePathList = remoteDeptService.getNamePathList(); + Map>> namePathMap = namePathList.stream().collect(Collectors.groupingBy(item -> item.get("shpNo"))); + + geospatialVectorsList.forEach(param->{ + BusinessDepartBoundary businessDepartBoundary = new BusinessDepartBoundary(); + businessDepartBoundary.setBoundary(param.getLandCategories()); + businessDepartBoundary.setDeptName(param.getLandUnitName()); + if (ObjectUtil.isNotEmpty(namePathMap.get(param.getLandUnitCode()))){ + businessDepartBoundary.setDeptId(namePathMap.get(param.getLandUnitCode()).get(0).get("deptId")); + businessDepartBoundary.setCommunityName(namePathMap.get(param.getLandUnitCode()).get(0).get("namePath")); + + resultList.add(businessDepartBoundary); + } + }); + return resultList; + } + + + private static String capitalizeFirstLetter(String str) { + if (str == null || str.isEmpty()) { + return str; + } + return str.substring(0, 1).toUpperCase() + str.substring(1); + } +} diff --git a/dk-modules/business/src/main/resources/mapper/business/BusinessDepartBoundaryMapper.xml b/dk-modules/business/src/main/resources/mapper/business/BusinessDepartBoundaryMapper.xml new file mode 100644 index 0000000..9284a14 --- /dev/null +++ b/dk-modules/business/src/main/resources/mapper/business/BusinessDepartBoundaryMapper.xml @@ -0,0 +1,78 @@ + + + + + + + + + + + + diff --git a/dk-modules/system/src/main/java/org/dromara/system/domain/SysDept.java b/dk-modules/system/src/main/java/org/dromara/system/domain/SysDept.java index b54dd33..50d5e7b 100644 --- a/dk-modules/system/src/main/java/org/dromara/system/domain/SysDept.java +++ b/dk-modules/system/src/main/java/org/dromara/system/domain/SysDept.java @@ -1,5 +1,6 @@ package org.dromara.system.domain; +import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableLogic; import com.baomidou.mybatisplus.annotation.TableName; @@ -81,4 +82,9 @@ public class SysDept extends TenantEntity { */ private String ancestors; + /** + * 边界编码 + */ + private String shpNo; + } diff --git a/dk-modules/system/src/main/java/org/dromara/system/domain/bo/SysDeptBo.java b/dk-modules/system/src/main/java/org/dromara/system/domain/bo/SysDeptBo.java index 5f64d6f..7ec0687 100644 --- a/dk-modules/system/src/main/java/org/dromara/system/domain/bo/SysDeptBo.java +++ b/dk-modules/system/src/main/java/org/dromara/system/domain/bo/SysDeptBo.java @@ -73,4 +73,9 @@ public class SysDeptBo extends BaseEntity { */ private String status; + /** + * 边界编码 + */ + private String shpNo; + } diff --git a/dk-modules/system/src/main/java/org/dromara/system/domain/vo/SysDeptVo.java b/dk-modules/system/src/main/java/org/dromara/system/domain/vo/SysDeptVo.java index 098b865..722290f 100644 --- a/dk-modules/system/src/main/java/org/dromara/system/domain/vo/SysDeptVo.java +++ b/dk-modules/system/src/main/java/org/dromara/system/domain/vo/SysDeptVo.java @@ -36,6 +36,11 @@ public class SysDeptVo implements Serializable { */ private Long parentId; + /** + * 边界编码 + */ + private String shpNo; + /** * 父部门名称 */ diff --git a/dk-modules/system/src/main/java/org/dromara/system/dubbo/RemoteDeptServiceImpl.java b/dk-modules/system/src/main/java/org/dromara/system/dubbo/RemoteDeptServiceImpl.java index 588735d..9bae932 100644 --- a/dk-modules/system/src/main/java/org/dromara/system/dubbo/RemoteDeptServiceImpl.java +++ b/dk-modules/system/src/main/java/org/dromara/system/dubbo/RemoteDeptServiceImpl.java @@ -10,6 +10,7 @@ import org.apache.dubbo.config.annotation.DubboService; import org.springframework.stereotype.Service; import java.util.List; +import java.util.Map; /** * 部门服务 @@ -47,4 +48,9 @@ public class RemoteDeptServiceImpl implements RemoteDeptService { SysDeptVo sysDeptVo = sysDeptService.selectDeptById(deptId); return BeanUtil.copyProperties(sysDeptVo, RemoteDeptVo.class); } + + @Override + public List> getNamePathList() { + return sysDeptService.getNamePathList(); + } } diff --git a/dk-modules/system/src/main/java/org/dromara/system/mapper/SysDeptMapper.java b/dk-modules/system/src/main/java/org/dromara/system/mapper/SysDeptMapper.java index 90982d3..0ab593c 100644 --- a/dk-modules/system/src/main/java/org/dromara/system/mapper/SysDeptMapper.java +++ b/dk-modules/system/src/main/java/org/dromara/system/mapper/SysDeptMapper.java @@ -13,6 +13,7 @@ import org.dromara.system.domain.vo.SysDeptVo; import org.apache.ibatis.annotations.Param; import java.util.List; +import java.util.Map; /** * 部门管理 数据层 @@ -69,4 +70,6 @@ public interface SysDeptMapper extends BaseMapperPlus { }) Page selectPageDeptList(@Param("page") Page page, @Param(Constants.WRAPPER) Wrapper queryWrapper); + List> getNamePathList(); + } diff --git a/dk-modules/system/src/main/java/org/dromara/system/service/ISysDeptService.java b/dk-modules/system/src/main/java/org/dromara/system/service/ISysDeptService.java index b3a2afe..c3df4b8 100644 --- a/dk-modules/system/src/main/java/org/dromara/system/service/ISysDeptService.java +++ b/dk-modules/system/src/main/java/org/dromara/system/service/ISysDeptService.java @@ -5,6 +5,7 @@ import org.dromara.system.domain.bo.SysDeptBo; import org.dromara.system.domain.vo.SysDeptVo; import java.util.List; +import java.util.Map; /** * 部门管理 服务层 @@ -138,4 +139,11 @@ public interface ISysDeptService { * @return 部门列表 */ List selectDeptsSimple(); + + /** + * 查询每个部门的所属的部门全路径 + * @return + */ + List> getNamePathList(); + } diff --git a/dk-modules/system/src/main/java/org/dromara/system/service/impl/SysDeptServiceImpl.java b/dk-modules/system/src/main/java/org/dromara/system/service/impl/SysDeptServiceImpl.java index 262dfd5..1042309 100644 --- a/dk-modules/system/src/main/java/org/dromara/system/service/impl/SysDeptServiceImpl.java +++ b/dk-modules/system/src/main/java/org/dromara/system/service/impl/SysDeptServiceImpl.java @@ -35,6 +35,7 @@ import org.springframework.stereotype.Service; import java.util.ArrayList; import java.util.Arrays; import java.util.List; +import java.util.Map; /** * 部门管理 服务实现 @@ -354,4 +355,10 @@ public class SysDeptServiceImpl implements ISysDeptService { .eq(SysDept::getStatus, SystemConstants.NORMAL)); } + + @Override + public List> getNamePathList() { + return baseMapper.getNamePathList(); + } + } diff --git a/dk-modules/system/src/main/resources/mapper/system/SysDeptMapper.xml b/dk-modules/system/src/main/resources/mapper/system/SysDeptMapper.xml index e400192..9e2a94e 100644 --- a/dk-modules/system/src/main/resources/mapper/system/SysDeptMapper.xml +++ b/dk-modules/system/src/main/resources/mapper/system/SysDeptMapper.xml @@ -44,4 +44,38 @@ from sys_dept ${ew.getCustomSqlSegment} + + diff --git a/dk-modules/workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskServiceImpl.java b/dk-modules/workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskServiceImpl.java index 40414e5..22f3cbc 100644 --- a/dk-modules/workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskServiceImpl.java +++ b/dk-modules/workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskServiceImpl.java @@ -725,12 +725,12 @@ public class FlwTaskServiceImpl implements IFlwTaskService { * 初始化流程任务 * @param taskId */ - public void executeTask(Long taskId) { + public boolean executeTask(Long taskId) { CompleteTaskBo completeTaskBo = new CompleteTaskBo(); completeTaskBo.setTaskId(taskId); completeTaskBo.setMessageType(List.of(MessageTypeEnum.SYSTEM_MESSAGE.getCode())); IFlwTaskService service = applicationContext.getBean(IFlwTaskService.class); - service.completeTask(completeTaskBo); + return service.completeTask(completeTaskBo); } } From 7a939e2c8bcb9fb6612dd4ebf5620168762d7429 Mon Sep 17 00:00:00 2001 From: yangwei <867012372@qq.com> Date: Wed, 5 Mar 2025 16:31:50 +0800 Subject: [PATCH 07/11] =?UTF-8?q?[feat]=201=E3=80=81=E5=BC=80=E5=8F=91?= =?UTF-8?q?=E9=83=A8=E9=97=A8=E5=8C=BA=E5=9F=9F=E7=9B=B8=E5=85=B3=E5=8A=9F?= =?UTF-8?q?=E8=83=BD=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dromara/system/api/RemoteDeptService.java | 2 +- .../BusinessAlertStatisticsController.java | 21 +++++++++ .../BusinessDepartBoundaryController.java | 43 +++++++++++++------ .../business/domain/BusinessAlert.java | 6 +++ .../domain/BusinessDepartBoundary.java | 9 ++++ .../domain/BusinessGeospatialVectors.java | 5 +++ .../business/domain/BusinessVectorDict.java | 5 +++ .../domain/BusinessVectorDictItem.java | 5 +++ .../business/domain/bo/BusinessAlertBo.java | 5 +++ .../business/domain/enums/AlertTypeEnum.java | 31 +++++++++++++ .../business/domain/vo/BusinessAlertVo.java | 7 +++ .../mapper/BusinessDepartBoundaryMapper.java | 2 + .../BusinessAlertStatisticsService.java | 5 +++ .../IBusinessDepartBoundaryService.java | 11 ++--- .../BusinessAlertStatisticsServiceImpl.java | 20 +++++++++ .../BusinessDepartBoundaryServiceImpl.java | 43 ++++++++++++++----- .../business/utils/BatchProcessorUtil.java | 39 +++++++++++++++++ .../business/BusinessDepartBoundaryMapper.xml | 36 ++++++++++++++++ .../business/BusinessVectorDictMapper.xml | 4 +- .../system/dubbo/RemoteDeptServiceImpl.java | 2 +- .../dromara/system/mapper/SysDeptMapper.java | 2 +- .../system/service/ISysDeptService.java | 2 +- .../service/impl/SysDeptServiceImpl.java | 2 +- .../resources/mapper/system/SysDeptMapper.xml | 20 ++++++--- .../service/impl/FlwTaskServiceImpl.java | 2 +- 25 files changed, 284 insertions(+), 45 deletions(-) create mode 100644 dk-modules/business/src/main/java/org/dromara/business/controller/BusinessAlertStatisticsController.java create mode 100644 dk-modules/business/src/main/java/org/dromara/business/domain/enums/AlertTypeEnum.java create mode 100644 dk-modules/business/src/main/java/org/dromara/business/service/BusinessAlertStatisticsService.java create mode 100644 dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessAlertStatisticsServiceImpl.java create mode 100644 dk-modules/business/src/main/java/org/dromara/business/utils/BatchProcessorUtil.java diff --git a/dk-api/api-system/src/main/java/org/dromara/system/api/RemoteDeptService.java b/dk-api/api-system/src/main/java/org/dromara/system/api/RemoteDeptService.java index 01098ac..0f40d6e 100644 --- a/dk-api/api-system/src/main/java/org/dromara/system/api/RemoteDeptService.java +++ b/dk-api/api-system/src/main/java/org/dromara/system/api/RemoteDeptService.java @@ -24,6 +24,6 @@ public interface RemoteDeptService { RemoteDeptVo selectDeptById(Long deptId); - List> getNamePathList(); + List> getNamePathList(); } diff --git a/dk-modules/business/src/main/java/org/dromara/business/controller/BusinessAlertStatisticsController.java b/dk-modules/business/src/main/java/org/dromara/business/controller/BusinessAlertStatisticsController.java new file mode 100644 index 0000000..e1fd0d0 --- /dev/null +++ b/dk-modules/business/src/main/java/org/dromara/business/controller/BusinessAlertStatisticsController.java @@ -0,0 +1,21 @@ +package org.dromara.business.controller; + +import lombok.RequiredArgsConstructor; +import org.dromara.business.service.BusinessAlertStatisticsService; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + * 预警统计相关服务 + */ +@RequiredArgsConstructor +@RestController +@RequestMapping("/alert/statistics") +public class BusinessAlertStatisticsController { + + private final BusinessAlertStatisticsService statisticsService; + + + + +} diff --git a/dk-modules/business/src/main/java/org/dromara/business/controller/BusinessDepartBoundaryController.java b/dk-modules/business/src/main/java/org/dromara/business/controller/BusinessDepartBoundaryController.java index fb07fe0..5151095 100644 --- a/dk-modules/business/src/main/java/org/dromara/business/controller/BusinessDepartBoundaryController.java +++ b/dk-modules/business/src/main/java/org/dromara/business/controller/BusinessDepartBoundaryController.java @@ -8,9 +8,26 @@ import org.dromara.business.service.IBusinessDepartBoundaryService; import org.dromara.common.core.domain.R; import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.common.web.core.BaseController; +import org.geotools.geometry.jts.JTS; +import org.locationtech.jts.geom.Polygon; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; +import java.io.File; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import org.geotools.data.DataStore; +import org.geotools.data.DataStoreFinder; +import org.geotools.data.simple.SimpleFeatureCollection; +import org.geotools.data.simple.SimpleFeatureIterator; +import org.locationtech.jts.geom.Geometry; +import org.locationtech.jts.geom.GeometryFactory; +import org.locationtech.jts.geom.MultiPolygon; + /** * 部门区域 */ @@ -18,11 +35,12 @@ import org.springframework.web.multipart.MultipartFile; @RequestMapping("/depart/boundary") @Slf4j @RequiredArgsConstructor -public class BusinessDepartBoundaryController { +public class BusinessDepartBoundaryController extends BaseController { private final IBusinessDepartBoundaryService departBoundaryService; /** + * 分页查询部门区域列表 * @return */ @RequestMapping(value = "/page", method = RequestMethod.GET) @@ -31,19 +49,18 @@ public class BusinessDepartBoundaryController { } + @RequestMapping(value = "/add", method = RequestMethod.POST) + public R addDepartBoundary(@RequestBody BusinessDepartBoundary departBoundary) { + return toAjax(departBoundaryService.addDepartBoundary(departBoundary)); + } + /** * 解析shp文件 * @return */ @RequestMapping(value = "/upload", method = RequestMethod.POST) - public void uploadShpFile(@RequestParam("file") MultipartFile file) { - try { - departBoundaryService.uploadShpFile(file); - R.ok("操作成功!"); - } catch (Exception e) { - log.error(e.getMessage(), e); - R.fail("操作失败"); - } + public R uploadShpFile(@RequestParam("file") MultipartFile file) { + return toAjax(departBoundaryService.uploadShpFile(file)); } /** @@ -53,8 +70,8 @@ public class BusinessDepartBoundaryController { * @return */ @RequestMapping(value = "/update", method = RequestMethod.POST) - public R updateDepartBoundary(@RequestBody BusinessDepartBoundary departBoundary) { - return departBoundaryService.updateDepartBoundary(departBoundary)?R.ok("编辑成功!"):R.fail("编辑失败!"); + public R updateDepartBoundary(@RequestBody BusinessDepartBoundary departBoundary) { + return toAjax(departBoundaryService.updateDepartBoundary(departBoundary)); } @@ -65,7 +82,7 @@ public class BusinessDepartBoundaryController { * @return */ @RequestMapping(value = "/delete", method = RequestMethod.DELETE) - public R delete(@RequestParam(name = "id") String id) { - return departBoundaryService.deleteDepartBoundary(id)?R.ok("删除成功!"):R.fail("删除失败!"); + public R deleteDepartBoundary(@RequestParam(name = "id") String id) { + return toAjax(departBoundaryService.deleteDepartBoundary(id)); } } diff --git a/dk-modules/business/src/main/java/org/dromara/business/domain/BusinessAlert.java b/dk-modules/business/src/main/java/org/dromara/business/domain/BusinessAlert.java index 64e5346..609babb 100644 --- a/dk-modules/business/src/main/java/org/dromara/business/domain/BusinessAlert.java +++ b/dk-modules/business/src/main/java/org/dromara/business/domain/BusinessAlert.java @@ -1,5 +1,6 @@ package org.dromara.business.domain; +import org.dromara.business.domain.enums.AlertTypeEnum; import org.dromara.common.core.enums.BusinessStatusEnum; import org.dromara.common.mybatis.core.domain.BaseEntity; import com.baomidou.mybatisplus.annotation.*; @@ -63,6 +64,11 @@ public class BusinessAlert extends BaseEntity { */ private String images; + /** + * 预警类型 + */ + private AlertTypeEnum alertType; + /** * 纬度 */ diff --git a/dk-modules/business/src/main/java/org/dromara/business/domain/BusinessDepartBoundary.java b/dk-modules/business/src/main/java/org/dromara/business/domain/BusinessDepartBoundary.java index 6bff413..4f3408f 100644 --- a/dk-modules/business/src/main/java/org/dromara/business/domain/BusinessDepartBoundary.java +++ b/dk-modules/business/src/main/java/org/dromara/business/domain/BusinessDepartBoundary.java @@ -8,6 +8,8 @@ import lombok.EqualsAndHashCode; import org.dromara.common.mybatis.core.domain.BaseEntity; import org.jeecgframework.poi.excel.annotation.Excel; +import java.io.Serial; + /** * 部门区域边界表 */ @@ -16,11 +18,18 @@ import org.jeecgframework.poi.excel.annotation.Excel; @TableName("business_depart_boundary") public class BusinessDepartBoundary extends BaseEntity { + @Serial private static final long serialVersionUID = 1L; /**ID*/ @TableId(type = IdType.AUTO) private String id; + + /** + * 租户Id + */ + private String tenantId; + /**机构ID*/ private String deptId; /**机构/部门名称*/ diff --git a/dk-modules/business/src/main/java/org/dromara/business/domain/BusinessGeospatialVectors.java b/dk-modules/business/src/main/java/org/dromara/business/domain/BusinessGeospatialVectors.java index 605fc27..4ab224c 100644 --- a/dk-modules/business/src/main/java/org/dromara/business/domain/BusinessGeospatialVectors.java +++ b/dk-modules/business/src/main/java/org/dromara/business/domain/BusinessGeospatialVectors.java @@ -25,6 +25,11 @@ public class BusinessGeospatialVectors { @TableId(type = IdType.AUTO) private String id; + /** + * 租户Id + */ + private String tenantId; + // 1. 图形基础属性 private String landCategories; // 几何信息 diff --git a/dk-modules/business/src/main/java/org/dromara/business/domain/BusinessVectorDict.java b/dk-modules/business/src/main/java/org/dromara/business/domain/BusinessVectorDict.java index f75edde..dbb7ba1 100644 --- a/dk-modules/business/src/main/java/org/dromara/business/domain/BusinessVectorDict.java +++ b/dk-modules/business/src/main/java/org/dromara/business/domain/BusinessVectorDict.java @@ -26,6 +26,11 @@ public class BusinessVectorDict extends BaseEntity { @TableId(type = IdType.ASSIGN_ID) private String id; + /** + * 租户Id + */ + private String tenantId; + /** * 字段名称 */ diff --git a/dk-modules/business/src/main/java/org/dromara/business/domain/BusinessVectorDictItem.java b/dk-modules/business/src/main/java/org/dromara/business/domain/BusinessVectorDictItem.java index 1fcad8b..1e0f829 100644 --- a/dk-modules/business/src/main/java/org/dromara/business/domain/BusinessVectorDictItem.java +++ b/dk-modules/business/src/main/java/org/dromara/business/domain/BusinessVectorDictItem.java @@ -23,6 +23,11 @@ public class BusinessVectorDictItem extends BaseEntity { @TableId(type = IdType.ASSIGN_ID) private String id; + /** + * 租户Id + */ + private String tenantId; + /** * 字段名称 */ diff --git a/dk-modules/business/src/main/java/org/dromara/business/domain/bo/BusinessAlertBo.java b/dk-modules/business/src/main/java/org/dromara/business/domain/bo/BusinessAlertBo.java index 090f616..1331be7 100644 --- a/dk-modules/business/src/main/java/org/dromara/business/domain/bo/BusinessAlertBo.java +++ b/dk-modules/business/src/main/java/org/dromara/business/domain/bo/BusinessAlertBo.java @@ -45,6 +45,11 @@ public class BusinessAlertBo extends BaseEntity { */ private String images; + /** + * 预警类型 + */ + private String alertType; + /** * 纬度 */ diff --git a/dk-modules/business/src/main/java/org/dromara/business/domain/enums/AlertTypeEnum.java b/dk-modules/business/src/main/java/org/dromara/business/domain/enums/AlertTypeEnum.java new file mode 100644 index 0000000..0260bdd --- /dev/null +++ b/dk-modules/business/src/main/java/org/dromara/business/domain/enums/AlertTypeEnum.java @@ -0,0 +1,31 @@ +package org.dromara.business.domain.enums; + +import cn.hutool.core.util.StrUtil; +import lombok.Getter; + +import java.util.Arrays; + +/** + * 预警类型枚举类 + */ +@Getter +public enum AlertTypeEnum { + + + + + ; + + + private String code; + + private String description; + + + public static AlertTypeEnum getTypeByCode(String code){ + if(StrUtil.isNotEmpty(code)){ + return Arrays.stream(values()).filter(p -> StrUtil.equals(p.name(),code.toUpperCase())).findAny().orElse(null); + } + return null; + } +} diff --git a/dk-modules/business/src/main/java/org/dromara/business/domain/vo/BusinessAlertVo.java b/dk-modules/business/src/main/java/org/dromara/business/domain/vo/BusinessAlertVo.java index 5224245..b83e3fb 100644 --- a/dk-modules/business/src/main/java/org/dromara/business/domain/vo/BusinessAlertVo.java +++ b/dk-modules/business/src/main/java/org/dromara/business/domain/vo/BusinessAlertVo.java @@ -5,6 +5,7 @@ import com.alibaba.excel.annotation.ExcelProperty; import io.github.linpeilie.annotations.AutoMapper; import lombok.Data; import org.dromara.business.domain.BusinessAlert; +import org.dromara.business.domain.enums.AlertTypeEnum; import org.dromara.common.core.enums.BusinessStatusEnum; import org.dromara.common.translation.annotation.Translation; import org.dromara.common.translation.constant.TransConstant; @@ -59,6 +60,12 @@ public class BusinessAlertVo implements Serializable { @ExcelProperty(value = "图片文件") private String images; + + /** + * 预警类型 + */ + private String alertType; + /** * 纬度 */ diff --git a/dk-modules/business/src/main/java/org/dromara/business/mapper/BusinessDepartBoundaryMapper.java b/dk-modules/business/src/main/java/org/dromara/business/mapper/BusinessDepartBoundaryMapper.java index f2e3c55..f8f4a72 100644 --- a/dk-modules/business/src/main/java/org/dromara/business/mapper/BusinessDepartBoundaryMapper.java +++ b/dk-modules/business/src/main/java/org/dromara/business/mapper/BusinessDepartBoundaryMapper.java @@ -21,4 +21,6 @@ public interface BusinessDepartBoundaryMapper extends BaseMapper queryByDeptId(@Param("deptId") String deptId); + void saveBatchBoundary(@Param("list") List boundaryList); + } diff --git a/dk-modules/business/src/main/java/org/dromara/business/service/BusinessAlertStatisticsService.java b/dk-modules/business/src/main/java/org/dromara/business/service/BusinessAlertStatisticsService.java new file mode 100644 index 0000000..446a2d5 --- /dev/null +++ b/dk-modules/business/src/main/java/org/dromara/business/service/BusinessAlertStatisticsService.java @@ -0,0 +1,5 @@ +package org.dromara.business.service; + + +public interface BusinessAlertStatisticsService { +} diff --git a/dk-modules/business/src/main/java/org/dromara/business/service/IBusinessDepartBoundaryService.java b/dk-modules/business/src/main/java/org/dromara/business/service/IBusinessDepartBoundaryService.java index cc2e20c..3d5079a 100644 --- a/dk-modules/business/src/main/java/org/dromara/business/service/IBusinessDepartBoundaryService.java +++ b/dk-modules/business/src/main/java/org/dromara/business/service/IBusinessDepartBoundaryService.java @@ -9,12 +9,7 @@ import org.springframework.web.multipart.MultipartFile; import java.util.List; /** - *

- * 部门表 服务实现类 - *

- * - * @Author:Steve - * @Since: 2019-01-22 + * 部门区域 服务实现类 */ public interface IBusinessDepartBoundaryService extends IService{ TableDataInfo listSysDepartBoundary(PageQuery page, BusinessDepartBoundary departBoundary); @@ -23,9 +18,11 @@ public interface IBusinessDepartBoundaryService extends IService queryByDeptId(String deptId); - void uploadShpFile(MultipartFile file); + boolean uploadShpFile(MultipartFile file); boolean deleteDepartBoundary(String id); boolean updateDepartBoundary(BusinessDepartBoundary departBoundary); + + boolean addDepartBoundary(BusinessDepartBoundary departBoundary); } diff --git a/dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessAlertStatisticsServiceImpl.java b/dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessAlertStatisticsServiceImpl.java new file mode 100644 index 0000000..32657ef --- /dev/null +++ b/dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessAlertStatisticsServiceImpl.java @@ -0,0 +1,20 @@ +package org.dromara.business.service.impl; + +import lombok.RequiredArgsConstructor; +import org.dromara.business.service.BusinessAlertStatisticsService; +import org.springframework.stereotype.Service; + +/** + * + *预警统计Service业务层处理 + */ +@RequiredArgsConstructor +@Service +public class BusinessAlertStatisticsServiceImpl implements BusinessAlertStatisticsService { + + + + + + +} diff --git a/dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessDepartBoundaryServiceImpl.java b/dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessDepartBoundaryServiceImpl.java index d47c88c..dc6f17e 100644 --- a/dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessDepartBoundaryServiceImpl.java +++ b/dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessDepartBoundaryServiceImpl.java @@ -1,6 +1,7 @@ package org.dromara.business.service.impl; import cn.hutool.core.util.ObjectUtil; +import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import lombok.RequiredArgsConstructor; @@ -12,6 +13,7 @@ import org.dromara.business.domain.BusinessVectorDict; import org.dromara.business.mapper.BusinessDepartBoundaryMapper; import org.dromara.business.service.IBusinessDepartBoundaryService; import org.dromara.business.service.IBusinessVectorDictService; +import org.dromara.business.utils.BatchProcessorUtil; import org.dromara.business.utils.ShpAnalysisUtil; import org.dromara.common.core.exception.ServiceException; import org.dromara.common.mybatis.core.page.PageQuery; @@ -58,8 +60,8 @@ public class BusinessDepartBoundaryServiceImpl extends ServiceImpl listSysDepartBoundaryGeomFromText(BusinessDepartBoundary sysDepartBoundary) { - return baseMapper.listSysDepartBoundaryGeomFromText(sysDepartBoundary); + public List listSysDepartBoundaryGeomFromText(BusinessDepartBoundary departBoundary) { + return baseMapper.listSysDepartBoundaryGeomFromText(departBoundary); } @Override @@ -69,7 +71,7 @@ public class BusinessDepartBoundaryServiceImpl extends ServiceImpl geospatialVectorsList = new ArrayList<>(); try { //1、首先调用解析工具拿到解析的字段集合 @@ -135,10 +137,22 @@ public class BusinessDepartBoundaryServiceImpl extends ServiceImpl boundaryList = buildBusinessDepartBoundary(geospatialVectorsList); - //批量新增部门区域数据 - this.saveBatch(boundaryList); + // 分批处理 + int startIndex = 0; // 从第 0 条开始 + int batchSize = 2000; // 每批处理 2000 条 + boolean flag = BatchProcessorUtil.processBatches(boundaryList, batchSize, startIndex, batch -> { + //批量新增部门区域数据 + this.baseMapper.saveBatchBoundary(batch); + }); + + if (flag) { + System.out.println("所有数据处理完成!"); + } + + return true; } catch (Exception e) { e.printStackTrace(); + return false; } } @@ -151,6 +165,11 @@ public class BusinessDepartBoundaryServiceImpl extends ServiceImpl buildBusinessDepartBoundary(List geospatialVectorsList) { List resultList = new ArrayList<>(); - List> namePathList = remoteDeptService.getNamePathList(); - Map>> namePathMap = namePathList.stream().collect(Collectors.groupingBy(item -> item.get("shpNo"))); + List> namePathList = remoteDeptService.getNamePathList(); + + Map>> namePathMap = namePathList.stream() + .filter(item -> item.containsKey("shpNo")) + .collect(Collectors.groupingBy(item -> item.get("shpNo").toString())); geospatialVectorsList.forEach(param->{ BusinessDepartBoundary businessDepartBoundary = new BusinessDepartBoundary(); businessDepartBoundary.setBoundary(param.getLandCategories()); - businessDepartBoundary.setDeptName(param.getLandUnitName()); + businessDepartBoundary.setShpNo(param.getLandUnitCode()); if (ObjectUtil.isNotEmpty(namePathMap.get(param.getLandUnitCode()))){ - businessDepartBoundary.setDeptId(namePathMap.get(param.getLandUnitCode()).get(0).get("deptId")); - businessDepartBoundary.setCommunityName(namePathMap.get(param.getLandUnitCode()).get(0).get("namePath")); + businessDepartBoundary.setDeptName(namePathMap.get(param.getLandUnitCode()).get(0).get("deptName") + ""); + businessDepartBoundary.setDeptId(namePathMap.get(param.getLandUnitCode()).get(0).get("deptId") + ""); + businessDepartBoundary.setCommunityName(namePathMap.get(param.getLandUnitCode()).get(0).get("namePath") + ""); resultList.add(businessDepartBoundary); } diff --git a/dk-modules/business/src/main/java/org/dromara/business/utils/BatchProcessorUtil.java b/dk-modules/business/src/main/java/org/dromara/business/utils/BatchProcessorUtil.java new file mode 100644 index 0000000..e16155c --- /dev/null +++ b/dk-modules/business/src/main/java/org/dromara/business/utils/BatchProcessorUtil.java @@ -0,0 +1,39 @@ +package org.dromara.business.utils; + +import java.util.List; +import java.util.function.Consumer; + +/** + * 分批处理工具类 + */ +public class BatchProcessorUtil { + + /** + * 分批处理数据 + * + * @param dataList 数据集合 + * @param batchSize 每批处理的数据量 + * @param startIndex 起始位置 + * @param batchHandler 每批数据的处理逻辑 + * @return 下一次的起始位置 + */ + public static boolean processBatches(List dataList, int batchSize, int startIndex, Consumer> batchHandler) { + if (dataList == null || dataList.isEmpty()) { + return true; // 数据为空,直接返回当前起始位置 + } + + int totalSize = dataList.size(); + while (startIndex < totalSize) { + int endIndex = Math.min(startIndex + batchSize, totalSize); + List batch = dataList.subList(startIndex, endIndex); + + // 处理当前批次的数据 + batchHandler.accept(batch); + + // 更新起始位置 + startIndex = endIndex; + } + + return startIndex >= totalSize; // 返回下一次的起始位置 + } +} diff --git a/dk-modules/business/src/main/resources/mapper/business/BusinessDepartBoundaryMapper.xml b/dk-modules/business/src/main/resources/mapper/business/BusinessDepartBoundaryMapper.xml index 9284a14..1d2d374 100644 --- a/dk-modules/business/src/main/resources/mapper/business/BusinessDepartBoundaryMapper.xml +++ b/dk-modules/business/src/main/resources/mapper/business/BusinessDepartBoundaryMapper.xml @@ -75,4 +75,40 @@ WHERE d.id = #{deptId} + + INSERT INTO business_depart_boundary ( + dept_id, + dept_name, + community_name, + boundary, + perimeter, + area, + area_mu, + shp_no, + village_type, + create_by, + create_time, + update_by, + update_time, + create_dept + ) + VALUES + + (#{item.deptId}, + #{item.deptName}, + #{item.communityName}, + ST_GeomFromText(#{item.boundary}), + #{item.perimeter}, + #{item.area}, + #{item.areaMu}, + #{item.shpNo}, + #{item.villageType}, + #{item.createBy}, + #{item.createTime}, + #{item.updateBy}, + #{item.updateTime}, + #{item.createDept}) + + + diff --git a/dk-modules/business/src/main/resources/mapper/business/BusinessVectorDictMapper.xml b/dk-modules/business/src/main/resources/mapper/business/BusinessVectorDictMapper.xml index 88f5af6..215e4aa 100644 --- a/dk-modules/business/src/main/resources/mapper/business/BusinessVectorDictMapper.xml +++ b/dk-modules/business/src/main/resources/mapper/business/BusinessVectorDictMapper.xml @@ -20,9 +20,9 @@ m.id AS dictItemId, m.item_value AS mappingValue FROM - vector_field_dict f + business_vector_dict f LEFT JOIN - vector_field_dict_item m ON f.id = m.dict_id + business_vector_dict_item m ON f.id = m.dict_id diff --git a/dk-modules/system/src/main/java/org/dromara/system/dubbo/RemoteDeptServiceImpl.java b/dk-modules/system/src/main/java/org/dromara/system/dubbo/RemoteDeptServiceImpl.java index 9bae932..3655c0a 100644 --- a/dk-modules/system/src/main/java/org/dromara/system/dubbo/RemoteDeptServiceImpl.java +++ b/dk-modules/system/src/main/java/org/dromara/system/dubbo/RemoteDeptServiceImpl.java @@ -50,7 +50,7 @@ public class RemoteDeptServiceImpl implements RemoteDeptService { } @Override - public List> getNamePathList() { + public List> getNamePathList() { return sysDeptService.getNamePathList(); } } diff --git a/dk-modules/system/src/main/java/org/dromara/system/mapper/SysDeptMapper.java b/dk-modules/system/src/main/java/org/dromara/system/mapper/SysDeptMapper.java index 0ab593c..7d942c4 100644 --- a/dk-modules/system/src/main/java/org/dromara/system/mapper/SysDeptMapper.java +++ b/dk-modules/system/src/main/java/org/dromara/system/mapper/SysDeptMapper.java @@ -70,6 +70,6 @@ public interface SysDeptMapper extends BaseMapperPlus { }) Page selectPageDeptList(@Param("page") Page page, @Param(Constants.WRAPPER) Wrapper queryWrapper); - List> getNamePathList(); + List> getNamePathList(); } diff --git a/dk-modules/system/src/main/java/org/dromara/system/service/ISysDeptService.java b/dk-modules/system/src/main/java/org/dromara/system/service/ISysDeptService.java index c3df4b8..f99cffc 100644 --- a/dk-modules/system/src/main/java/org/dromara/system/service/ISysDeptService.java +++ b/dk-modules/system/src/main/java/org/dromara/system/service/ISysDeptService.java @@ -144,6 +144,6 @@ public interface ISysDeptService { * 查询每个部门的所属的部门全路径 * @return */ - List> getNamePathList(); + List> getNamePathList(); } diff --git a/dk-modules/system/src/main/java/org/dromara/system/service/impl/SysDeptServiceImpl.java b/dk-modules/system/src/main/java/org/dromara/system/service/impl/SysDeptServiceImpl.java index 1042309..1119432 100644 --- a/dk-modules/system/src/main/java/org/dromara/system/service/impl/SysDeptServiceImpl.java +++ b/dk-modules/system/src/main/java/org/dromara/system/service/impl/SysDeptServiceImpl.java @@ -357,7 +357,7 @@ public class SysDeptServiceImpl implements ISysDeptService { @Override - public List> getNamePathList() { + public List> getNamePathList() { return baseMapper.getNamePathList(); } diff --git a/dk-modules/system/src/main/resources/mapper/system/SysDeptMapper.xml b/dk-modules/system/src/main/resources/mapper/system/SysDeptMapper.xml index 9e2a94e..e75d498 100644 --- a/dk-modules/system/src/main/resources/mapper/system/SysDeptMapper.xml +++ b/dk-modules/system/src/main/resources/mapper/system/SysDeptMapper.xml @@ -48,21 +48,25 @@ WITH RECURSIVE DeptPath AS ( -- 基础查询:选择根部门(没有父部门的部门) SELECT - dept_id deptId, - CAST(dept_name AS CHAR(500)) AS namePath, - shp_no shpNo + sd.dept_id deptId, + sd.dept_name deptName, + CAST(sd.dept_name AS CHAR(500)) AS namePath, + sd.shp_no shpNo, + sd.tenant_id FROM - sys_dept + sys_dept sd WHERE - parent_id = 0 + sd.parent_id = 0 UNION ALL -- 递归查询:选择子部门并构建路径 SELECT d.dept_id deptId, + d.dept_name deptName, CONCAT(dp.namePath, '', d.dept_name) AS namePath, - shp_no shpNo + d.shp_no shpNo, + d.tenant_id FROM sys_dept d INNER JOIN @@ -71,7 +75,9 @@ SELECT deptId, namePath, - shpNo + shpNo, + deptName, + tenant_id FROM DeptPath ORDER BY diff --git a/dk-modules/workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskServiceImpl.java b/dk-modules/workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskServiceImpl.java index 22f3cbc..f047148 100644 --- a/dk-modules/workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskServiceImpl.java +++ b/dk-modules/workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskServiceImpl.java @@ -146,7 +146,7 @@ public class FlwTaskServiceImpl implements IFlwTaskService { dto.setTaskId(taskList.get(0).getId()); //创建任务 -// executeTask(taskList.get(0).getId()); + executeTask(taskList.get(0).getId()); return dto; } From 31dedc826e62ed60cd04ba23d74fd3415b5d15b9 Mon Sep 17 00:00:00 2001 From: yangwei <867012372@qq.com> Date: Wed, 5 Mar 2025 17:10:25 +0800 Subject: [PATCH 08/11] =?UTF-8?q?[feat]=201=E3=80=81=E8=8F=9C=E5=8D=95?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E8=8F=9C=E5=8D=95=E7=B1=BB=E5=9E=8B=E5=8C=BA?= =?UTF-8?q?=E5=88=86=E5=89=8D=E7=AB=AF=E3=80=81=E5=90=8E=E5=8F=B0=E3=80=81?= =?UTF-8?q?h5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dromara/system/controller/system/SysMenuController.java | 6 +++--- .../src/main/java/org/dromara/system/domain/SysMenu.java | 5 +++++ .../main/java/org/dromara/system/domain/bo/SysMenuBo.java | 6 ++++++ .../main/java/org/dromara/system/domain/vo/SysMenuVo.java | 5 +++++ .../main/java/org/dromara/system/mapper/SysMenuMapper.java | 5 +++-- .../java/org/dromara/system/service/ISysMenuService.java | 2 +- .../org/dromara/system/service/impl/SysMenuServiceImpl.java | 6 +++--- .../src/main/resources/mapper/system/SysMenuMapper.xml | 6 +++++- 8 files changed, 31 insertions(+), 10 deletions(-) diff --git a/dk-modules/system/src/main/java/org/dromara/system/controller/system/SysMenuController.java b/dk-modules/system/src/main/java/org/dromara/system/controller/system/SysMenuController.java index 5edb6f6..bfb4b82 100644 --- a/dk-modules/system/src/main/java/org/dromara/system/controller/system/SysMenuController.java +++ b/dk-modules/system/src/main/java/org/dromara/system/controller/system/SysMenuController.java @@ -42,9 +42,9 @@ public class SysMenuController extends BaseController { * * @return 路由信息 */ - @GetMapping("/getRouters") - public R> getRouters() { - List menus = menuService.selectMenuTreeByUserId(LoginHelper.getUserId()); + @GetMapping("/{platformType}/getRouters") + public R> getRouters(@PathVariable String platformType) { + List menus = menuService.selectMenuTreeByUserId(LoginHelper.getUserId(),platformType); return R.ok(menuService.buildMenus(menus)); } diff --git a/dk-modules/system/src/main/java/org/dromara/system/domain/SysMenu.java b/dk-modules/system/src/main/java/org/dromara/system/domain/SysMenu.java index 0cdb508..8bcf6cb 100644 --- a/dk-modules/system/src/main/java/org/dromara/system/domain/SysMenu.java +++ b/dk-modules/system/src/main/java/org/dromara/system/domain/SysMenu.java @@ -45,6 +45,11 @@ public class SysMenu extends BaseEntity { */ private Integer orderNum; + /** + * 菜单类型 (backend、pc、h5) + */ + private String platformType; + /** * 路由地址 */ diff --git a/dk-modules/system/src/main/java/org/dromara/system/domain/bo/SysMenuBo.java b/dk-modules/system/src/main/java/org/dromara/system/domain/bo/SysMenuBo.java index 7a610e7..89906b4 100644 --- a/dk-modules/system/src/main/java/org/dromara/system/domain/bo/SysMenuBo.java +++ b/dk-modules/system/src/main/java/org/dromara/system/domain/bo/SysMenuBo.java @@ -46,6 +46,12 @@ public class SysMenuBo extends BaseEntity { @NotNull(message = "显示顺序不能为空") private Integer orderNum; + /** + * 菜单类型 (backend、pc、h5) + */ + @NotNull(message = "菜单类型不能为空") + private String platformType; + /** * 路由地址 */ diff --git a/dk-modules/system/src/main/java/org/dromara/system/domain/vo/SysMenuVo.java b/dk-modules/system/src/main/java/org/dromara/system/domain/vo/SysMenuVo.java index a51564a..70e5700 100644 --- a/dk-modules/system/src/main/java/org/dromara/system/domain/vo/SysMenuVo.java +++ b/dk-modules/system/src/main/java/org/dromara/system/domain/vo/SysMenuVo.java @@ -43,6 +43,11 @@ public class SysMenuVo implements Serializable { */ private Integer orderNum; + /** + * 菜单类型 (backend、pc、h5) + */ + private String platformType; + /** * 路由地址 */ diff --git a/dk-modules/system/src/main/java/org/dromara/system/mapper/SysMenuMapper.java b/dk-modules/system/src/main/java/org/dromara/system/mapper/SysMenuMapper.java index ac646c0..4949cc7 100644 --- a/dk-modules/system/src/main/java/org/dromara/system/mapper/SysMenuMapper.java +++ b/dk-modules/system/src/main/java/org/dromara/system/mapper/SysMenuMapper.java @@ -47,10 +47,11 @@ public interface SysMenuMapper extends BaseMapperPlus { * * @return 菜单列表 */ - default List selectMenuTreeAll() { + default List selectMenuTreeAll(String platformType) { LambdaQueryWrapper lqw = new LambdaQueryWrapper() .in(SysMenu::getMenuType, UserConstants.TYPE_DIR, UserConstants.TYPE_MENU) .eq(SysMenu::getStatus, UserConstants.MENU_NORMAL) + .eq(SysMenu::getPlatformType, platformType) .orderByAsc(SysMenu::getParentId) .orderByAsc(SysMenu::getOrderNum); return this.selectList(lqw); @@ -62,7 +63,7 @@ public interface SysMenuMapper extends BaseMapperPlus { * @param userId 用户ID * @return 菜单列表 */ - List selectMenuTreeByUserId(Long userId); + List selectMenuTreeByUserId(Long userId,String platformType); /** * 根据角色ID查询菜单树信息 diff --git a/dk-modules/system/src/main/java/org/dromara/system/service/ISysMenuService.java b/dk-modules/system/src/main/java/org/dromara/system/service/ISysMenuService.java index 72d705e..d8aeb7e 100644 --- a/dk-modules/system/src/main/java/org/dromara/system/service/ISysMenuService.java +++ b/dk-modules/system/src/main/java/org/dromara/system/service/ISysMenuService.java @@ -55,7 +55,7 @@ public interface ISysMenuService { * @param userId 用户ID * @return 菜单列表 */ - List selectMenuTreeByUserId(Long userId); + List selectMenuTreeByUserId(Long userId,String platformType); /** * 根据角色ID查询菜单树信息 diff --git a/dk-modules/system/src/main/java/org/dromara/system/service/impl/SysMenuServiceImpl.java b/dk-modules/system/src/main/java/org/dromara/system/service/impl/SysMenuServiceImpl.java index 1b6a9aa..2a320e6 100644 --- a/dk-modules/system/src/main/java/org/dromara/system/service/impl/SysMenuServiceImpl.java +++ b/dk-modules/system/src/main/java/org/dromara/system/service/impl/SysMenuServiceImpl.java @@ -130,12 +130,12 @@ public class SysMenuServiceImpl implements ISysMenuService { * @return 菜单列表 */ @Override - public List selectMenuTreeByUserId(Long userId) { + public List selectMenuTreeByUserId(Long userId,String platformType) { List menus; if (LoginHelper.isSuperAdmin(userId)) { - menus = baseMapper.selectMenuTreeAll(); + menus = baseMapper.selectMenuTreeAll(platformType); } else { - menus = baseMapper.selectMenuTreeByUserId(userId); + menus = baseMapper.selectMenuTreeByUserId(userId,platformType); } return getChildPerms(menus, 0); } diff --git a/dk-modules/system/src/main/resources/mapper/system/SysMenuMapper.xml b/dk-modules/system/src/main/resources/mapper/system/SysMenuMapper.xml index b9eced8..3a23587 100644 --- a/dk-modules/system/src/main/resources/mapper/system/SysMenuMapper.xml +++ b/dk-modules/system/src/main/resources/mapper/system/SysMenuMapper.xml @@ -9,7 +9,7 @@ From f45c0919de47ecdca3aa37dfb9843e58635649b3 Mon Sep 17 00:00:00 2001 From: rainbow <1814307395@qq.com> Date: Thu, 6 Mar 2025 13:41:46 +0800 Subject: [PATCH 09/11] =?UTF-8?q?[feat]=20PostgreSQL=20=E9=83=A8=E7=BD=B2?= =?UTF-8?q?=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docker/docker-compose.yml | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/docker/docker-compose.yml b/docker/docker-compose.yml index 727921c..3835e95 100644 --- a/docker/docker-compose.yml +++ b/docker/docker-compose.yml @@ -521,3 +521,16 @@ services: environment: - JVM_OPTS="-Djava.awt.headless=true" network_mode: "host" + + postgres: + image: postgres:15 # 使用 PostgreSQL 15 镜像 + container_name: postgres # 容器名称 + environment: + POSTGRES_USER: "root" # 设置用户名为 'root' + POSTGRES_PASSWORD: 123456 # 设置密码为 '123456' + POSTGRES_DB: dk-cloud # 设置数据库名为 'dk-cloud' + ports: + - "5432:5432" # 将容器的 5432 端口映射到主机的 5432 端口 + volumes: + - /docker/postgresql/data:/var/lib/postgresql/data # 数据映射到主机指定路径 + network_mode: "host" From 2828802b7a7e33e14ba9ca1384c4476de820b1f8 Mon Sep 17 00:00:00 2001 From: rainbow <1814307395@qq.com> Date: Thu, 6 Mar 2025 14:38:30 +0800 Subject: [PATCH 10/11] [fix] add pom --- pom.xml | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/pom.xml b/pom.xml index 154afe3..0b95595 100644 --- a/pom.xml +++ b/pom.xml @@ -75,6 +75,8 @@ 1.6.6 23.2 + + 42.6.2 @@ -403,6 +405,12 @@ warm-flow-plugin-ui-sb-web ${warm-flow.version} + + + org.postgresql + postgresql + ${postgresql.version} + From a3017752ef6cae297c0efa25685d587e6ade315c Mon Sep 17 00:00:00 2001 From: yangwei <867012372@qq.com> Date: Thu, 6 Mar 2025 17:43:27 +0800 Subject: [PATCH 11/11] =?UTF-8?q?[feat]=201=E3=80=81=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E5=89=8D=E7=AB=AF=E8=AE=BF=E9=97=AE=E9=A1=B5=E9=9D=A2=E6=9F=A5?= =?UTF-8?q?=E8=AF=A2=E5=9C=B0=E7=90=86=E6=95=B0=E6=8D=AE=E6=8E=A5=E5=8F=A3?= =?UTF-8?q?=202=E3=80=81=E7=BB=99=E6=9C=8D=E5=8A=A1=E5=A2=9E=E5=8A=A0doc?= =?UTF-8?q?=E6=B3=A8=E9=87=8A=E3=80=82=203=E3=80=81=E5=BC=80=E5=8F=91?= =?UTF-8?q?=E9=A2=84=E8=AD=A6=E7=BB=9F=E8=AE=A1=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dromara/system/api/RemoteDeptService.java | 1 + .../auth/controller/CaptchaController.java | 4 + .../auth/controller/TokenController.java | 10 ++ .../controller/BusinessAlertController.java | 8 +- .../BusinessAlertStatisticsController.java | 44 ++++- .../BusinessDepartBoundaryController.java | 47 +++--- .../BusinessPatrolAreasController.java | 126 -------------- .../business/domain/bo/BusinessAlertBo.java | 5 + .../business/domain/model/StatObj.java | 86 ++++++++++ .../business/mapper/BusinessAlertMapper.java | 32 +++- .../mapper/BusinessDepartBoundaryMapper.java | 4 + .../BusinessAlertStatisticsService.java | 12 ++ .../IBusinessDepartBoundaryService.java | 4 +- .../BusinessAlertStatisticsServiceImpl.java | 78 +++++++++ .../BusinessDepartBoundaryServiceImpl.java | 22 ++- .../mapper/business/BusinessAlertMapper.xml | 158 ++++++++++++++++++ .../business/BusinessDepartBoundaryMapper.xml | 33 ++++ .../controller/SysEmailController.java | 4 + .../controller/SysOssConfigController.java | 9 + .../resource/controller/SysOssController.java | 8 + .../resource/controller/SysSmsController.java | 4 + .../controller/monitor/CacheController.java | 4 + .../monitor/SysLogininforController.java | 8 + .../monitor/SysOperlogController.java | 7 + .../monitor/SysUserOnlineController.java | 11 +- .../system/dubbo/RemoteDeptServiceImpl.java | 7 + .../system/service/ISysDeptService.java | 6 + .../service/impl/SysDeptServiceImpl.java | 9 + .../controller/FlwCategoryController.java | 20 +-- .../controller/FlwDefinitionController.java | 24 ++- .../controller/FlwInstanceController.java | 15 +- .../controller/FlwTaskController.java | 27 ++- 32 files changed, 650 insertions(+), 187 deletions(-) delete mode 100644 dk-modules/business/src/main/java/org/dromara/business/controller/BusinessPatrolAreasController.java create mode 100644 dk-modules/business/src/main/java/org/dromara/business/domain/model/StatObj.java diff --git a/dk-api/api-system/src/main/java/org/dromara/system/api/RemoteDeptService.java b/dk-api/api-system/src/main/java/org/dromara/system/api/RemoteDeptService.java index 0f40d6e..bc2f96a 100644 --- a/dk-api/api-system/src/main/java/org/dromara/system/api/RemoteDeptService.java +++ b/dk-api/api-system/src/main/java/org/dromara/system/api/RemoteDeptService.java @@ -26,4 +26,5 @@ public interface RemoteDeptService { List> getNamePathList(); + List selectListByParentId(String deptId); } diff --git a/dk-auth/src/main/java/org/dromara/auth/controller/CaptchaController.java b/dk-auth/src/main/java/org/dromara/auth/controller/CaptchaController.java index 8293127..255d5d2 100644 --- a/dk-auth/src/main/java/org/dromara/auth/controller/CaptchaController.java +++ b/dk-auth/src/main/java/org/dromara/auth/controller/CaptchaController.java @@ -3,6 +3,8 @@ package org.dromara.auth.controller; import cn.hutool.captcha.AbstractCaptcha; import cn.hutool.captcha.generator.CodeGenerator; import cn.hutool.core.util.IdUtil; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.dromara.auth.domain.vo.CaptchaVo; @@ -31,6 +33,7 @@ import java.time.Duration; * * @author Lion Li */ +@Tag(name = "验证码相关操作") @Slf4j @Validated @RequiredArgsConstructor @@ -42,6 +45,7 @@ public class CaptchaController { /** * 生成验证码 */ + @Operation(summary = "生成验证码",description = "生成验证码") @RateLimiter(time = 60, count = 10, limitType = LimitType.IP) @GetMapping("/code") public R getCode() { diff --git a/dk-auth/src/main/java/org/dromara/auth/controller/TokenController.java b/dk-auth/src/main/java/org/dromara/auth/controller/TokenController.java index 5ce3c0d..d82fdc1 100644 --- a/dk-auth/src/main/java/org/dromara/auth/controller/TokenController.java +++ b/dk-auth/src/main/java/org/dromara/auth/controller/TokenController.java @@ -4,6 +4,8 @@ import cn.dev33.satoken.exception.NotLoginException; import cn.hutool.core.codec.Base64; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.ObjectUtil; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; import jakarta.servlet.http.HttpServletRequest; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -52,6 +54,7 @@ import java.util.concurrent.TimeUnit; * * @author Lion Li */ +@Tag(name = "token相关服务") @Slf4j @RequiredArgsConstructor @RestController @@ -78,6 +81,7 @@ public class TokenController { * @param body 登录信息 * @return 结果 */ + @Operation(summary = "登录",description = "登录") @ApiEncrypt @PostMapping("/login") public R login(@RequestBody String body) { @@ -113,6 +117,7 @@ public class TokenController { * @param source 登录来源 * @return 结果 */ + @Operation(summary = "第三方登录请求",description = "第三方登录请求") @GetMapping("/binding/{source}") public R authBinding(@PathVariable("source") String source, @RequestParam String tenantId, @RequestParam String domain) { @@ -135,6 +140,7 @@ public class TokenController { * @param loginBody 请求体 * @return 结果 */ + @Operation(summary = "第三方登录回调业务处理",description = "第三方登录回调业务处理") @PostMapping("/social/callback") public R socialCallback(@RequestBody SocialLoginBody loginBody) { // 获取第三方登录信息 @@ -156,6 +162,7 @@ public class TokenController { * * @param socialId socialId */ + @Operation(summary = "取消授权",description = "取消授权") @DeleteMapping(value = "/unlock/{socialId}") public R unlockSocial(@PathVariable Long socialId) { Boolean rows = remoteSocialService.deleteWithValidById(socialId); @@ -165,6 +172,7 @@ public class TokenController { /** * 登出方法 */ + @Operation(summary = "登出方法",description = "登出方法") @PostMapping("logout") public R logout() { sysLoginService.logout(); @@ -174,6 +182,7 @@ public class TokenController { /** * 用户注册 */ + @Operation(summary = "用户注册",description = "用户注册") @ApiEncrypt @PostMapping("register") public R register(@RequestBody RegisterBody registerBody) { @@ -190,6 +199,7 @@ public class TokenController { * * @return 租户列表 */ + @Operation(summary = "登录页面租户下拉框",description = "登录页面租户下拉框") @GetMapping("/tenant/list") public R tenantList(HttpServletRequest request) throws Exception { // 返回对象 diff --git a/dk-modules/business/src/main/java/org/dromara/business/controller/BusinessAlertController.java b/dk-modules/business/src/main/java/org/dromara/business/controller/BusinessAlertController.java index d02691f..dbe7159 100644 --- a/dk-modules/business/src/main/java/org/dromara/business/controller/BusinessAlertController.java +++ b/dk-modules/business/src/main/java/org/dromara/business/controller/BusinessAlertController.java @@ -1,5 +1,7 @@ package org.dromara.business.controller; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; import lombok.RequiredArgsConstructor; import org.dromara.business.domain.BusinessAlert; import org.dromara.business.domain.bo.BusinessAlertBo; @@ -11,7 +13,7 @@ import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; /** - * 预警任务 + * 预警服务 * * @author LionLi * @date 2025-02-27 @@ -20,6 +22,7 @@ import org.springframework.web.bind.annotation.*; @RequiredArgsConstructor @RestController @RequestMapping +@Tag(name = "预警服务") public class BusinessAlertController extends BaseController { @@ -28,6 +31,7 @@ public class BusinessAlertController extends BaseController { /** * 查询全部预警 */ + @Operation(summary ="查询全部预警",description = "查询全部预警") @GetMapping("/alert/page/all") public TableDataInfo pageBusinessAlert(BusinessAlertBo bo, PageQuery pageQuery) { return businessAlertService.pageBusinessAlert(bo, pageQuery); @@ -36,6 +40,7 @@ public class BusinessAlertController extends BaseController { /** * 查询审批的预警 */ + @Operation(summary ="查询待办的预警",description = "查询待办的预警") @GetMapping("/alert/page/todo") public TableDataInfo pageBusinessAlertTodo(BusinessAlertBo bo, PageQuery pageQuery) { return businessAlertService.pageBusinessAlertTodo(bo, pageQuery); @@ -47,6 +52,7 @@ public class BusinessAlertController extends BaseController { * @param pageQuery * @return */ + @Operation(summary ="查询审批完成的预警",description = "查询审批完成的预警") @GetMapping("/alert/page/finish") public TableDataInfo pageBusinessAlertFinish(BusinessAlertBo bo, PageQuery pageQuery) { return businessAlertService.pageBusinessAlertFinish(bo, pageQuery); diff --git a/dk-modules/business/src/main/java/org/dromara/business/controller/BusinessAlertStatisticsController.java b/dk-modules/business/src/main/java/org/dromara/business/controller/BusinessAlertStatisticsController.java index e1fd0d0..cc29d2e 100644 --- a/dk-modules/business/src/main/java/org/dromara/business/controller/BusinessAlertStatisticsController.java +++ b/dk-modules/business/src/main/java/org/dromara/business/controller/BusinessAlertStatisticsController.java @@ -1,21 +1,63 @@ package org.dromara.business.controller; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; import lombok.RequiredArgsConstructor; +import org.dromara.business.domain.bo.BusinessAlertBo; +import org.dromara.business.domain.model.StatObj; import org.dromara.business.service.BusinessAlertStatisticsService; +import org.dromara.common.core.domain.R; +import org.dromara.common.web.core.BaseController; +import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; +import java.util.List; + /** * 预警统计相关服务 */ +@Tag(name = "预警统计相关服务") @RequiredArgsConstructor @RestController @RequestMapping("/alert/statistics") -public class BusinessAlertStatisticsController { +public class BusinessAlertStatisticsController extends BaseController { private final BusinessAlertStatisticsService statisticsService; + //饼图显示每个月根据部门 + @Operation(summary="根据月份显示预警个数", description="根据月份显示预警个数") + @GetMapping(value = "/month/count") + public R> countMonthAlert(BusinessAlertBo businessAlertBo) { + return R.ok(statisticsService.countMonthAlert(businessAlertBo)); + } + + //饼图部门分类预警个数占比 + @Operation(summary="根据部门显示预警个数", description="根据部门显示预警个数") + @GetMapping(value = "/depart/count") + public R> countDepartAlert(BusinessAlertBo businessAlertBo) { + return R.ok(statisticsService.countDepartAlert(businessAlertBo)); + } + + //折线图处理状态各个月展示个数部门 + @Operation(summary="根据月份,状态统计显示预警个数", description="根据月份,状态统计显示预警个数") + @GetMapping(value = "/month/status/count") + public R> countMonthAlertStatus(BusinessAlertBo businessAlertBo) { + return R.ok(statisticsService.countMonthAlertStatus(businessAlertBo)); + } + + //折线图处理状态预警个数分布部门 + @Operation(summary="根据部门,状态统计显示预警个数", description="根据部门,状态统计显示预警个数") + @GetMapping(value = "/depart/status/count") + public R> countDepartAlertStatus(BusinessAlertBo businessAlertBo) { + return R.ok(statisticsService.countDepartAlertStatus(businessAlertBo)); + } + + //预警对比统计 + //1、处理状态柱状图,x轴为选中的部门 + //2、预警类型柱状图,x轴为选中的部门 + } diff --git a/dk-modules/business/src/main/java/org/dromara/business/controller/BusinessDepartBoundaryController.java b/dk-modules/business/src/main/java/org/dromara/business/controller/BusinessDepartBoundaryController.java index 5151095..4c65faa 100644 --- a/dk-modules/business/src/main/java/org/dromara/business/controller/BusinessDepartBoundaryController.java +++ b/dk-modules/business/src/main/java/org/dromara/business/controller/BusinessDepartBoundaryController.java @@ -1,6 +1,8 @@ package org.dromara.business.controller; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.dromara.business.domain.BusinessDepartBoundary; @@ -9,28 +11,13 @@ import org.dromara.common.core.domain.R; import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.common.web.core.BaseController; -import org.geotools.geometry.jts.JTS; -import org.locationtech.jts.geom.Polygon; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; -import java.io.File; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import org.geotools.data.DataStore; -import org.geotools.data.DataStoreFinder; -import org.geotools.data.simple.SimpleFeatureCollection; -import org.geotools.data.simple.SimpleFeatureIterator; -import org.locationtech.jts.geom.Geometry; -import org.locationtech.jts.geom.GeometryFactory; -import org.locationtech.jts.geom.MultiPolygon; - /** * 部门区域 */ +@Tag(name = "部门区域") @RestController @RequestMapping("/depart/boundary") @Slf4j @@ -39,28 +26,40 @@ public class BusinessDepartBoundaryController extends BaseController { private final IBusinessDepartBoundaryService departBoundaryService; + + /** + * 查询部门的地理位置 + * @param departBoundary + * @return + */ + @Operation(summary ="查询部门的地理位置",description = "查询部门的地理位置") + @GetMapping(value = "/listJson") + public R listJson(BusinessDepartBoundary departBoundary) { + String listJson = departBoundaryService.listJson(departBoundary); + return R.ok("查询成功!",listJson); +} + + /** * 分页查询部门区域列表 * @return */ + @Operation(summary ="查询部门区域列表",description = "查询部门区域列表") @RequestMapping(value = "/page", method = RequestMethod.GET) public TableDataInfo queryPageList(BusinessDepartBoundary departBoundary, PageQuery pageQuery) { return departBoundaryService.listSysDepartBoundary(pageQuery, departBoundary); } - @RequestMapping(value = "/add", method = RequestMethod.POST) - public R addDepartBoundary(@RequestBody BusinessDepartBoundary departBoundary) { - return toAjax(departBoundaryService.addDepartBoundary(departBoundary)); - } - /** * 解析shp文件 * @return */ + @Operation(summary ="批量新增部门区域",description = "批量新增部门区域") @RequestMapping(value = "/upload", method = RequestMethod.POST) - public R uploadShpFile(@RequestParam("file") MultipartFile file) { - return toAjax(departBoundaryService.uploadShpFile(file)); + public R uploadShpFile(@RequestParam("file") MultipartFile file, + @RequestParam(value = "deptId" ,required = false)String deptId) { + return toAjax(departBoundaryService.uploadShpFile(file,deptId)); } /** @@ -69,6 +68,7 @@ public class BusinessDepartBoundaryController extends BaseController { * @param * @return */ + @Operation(summary ="编辑部门区域",description = "编辑部门区域") @RequestMapping(value = "/update", method = RequestMethod.POST) public R updateDepartBoundary(@RequestBody BusinessDepartBoundary departBoundary) { return toAjax(departBoundaryService.updateDepartBoundary(departBoundary)); @@ -81,6 +81,7 @@ public class BusinessDepartBoundaryController extends BaseController { * @param id * @return */ + @Operation(summary ="删除部门区域",description = "删除部门区域") @RequestMapping(value = "/delete", method = RequestMethod.DELETE) public R deleteDepartBoundary(@RequestParam(name = "id") String id) { return toAjax(departBoundaryService.deleteDepartBoundary(id)); diff --git a/dk-modules/business/src/main/java/org/dromara/business/controller/BusinessPatrolAreasController.java b/dk-modules/business/src/main/java/org/dromara/business/controller/BusinessPatrolAreasController.java deleted file mode 100644 index 1e7107b..0000000 --- a/dk-modules/business/src/main/java/org/dromara/business/controller/BusinessPatrolAreasController.java +++ /dev/null @@ -1,126 +0,0 @@ -package org.dromara.business.controller; - -import cn.hutool.core.util.ObjectUtil; -import lombok.RequiredArgsConstructor; -import org.dromara.business.domain.BusinessPatrolAreas; -import org.dromara.business.domain.bo.BusinessPatrolAreasBo; -import org.dromara.business.service.IBusinessPatrolAreasService; -import org.dromara.common.core.domain.R; -import org.dromara.common.mybatis.core.page.PageQuery; -import org.dromara.common.mybatis.core.page.TableDataInfo; -import org.dromara.common.satoken.utils.LoginHelper; -import org.dromara.common.web.core.BaseController; -import org.dromara.system.api.model.LoginUser; -import org.jeecgframework.poi.excel.def.NormalExcelConstants; -import org.jeecgframework.poi.excel.entity.ExportParams; -import org.jeecgframework.poi.excel.view.JeecgEntityExcelView; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; -import org.springframework.web.multipart.MultipartFile; -import org.springframework.web.servlet.ModelAndView; - -import javax.servlet.http.HttpServletRequest; -import java.util.Arrays; -import java.util.List; - -/** - * @Description: 巡查区域 - */ -@Validated -@RequiredArgsConstructor -@RestController -@RequestMapping("/patrol/patrolAreas") -public class BusinessPatrolAreasController extends BaseController { - - private final IBusinessPatrolAreasService patrolAreasService; - - - - /** - * 巡查区域-分页列表查询 - * - * @param patrolAreasBo - * @param pageQuery - * @return - */ - @GetMapping(value = "/page") - public TableDataInfo pagePatrolAreas(BusinessPatrolAreasBo patrolAreasBo, - PageQuery pageQuery) { - return patrolAreasService.pagePatrolAreas(pageQuery, patrolAreasBo); - } - - /** - * 巡查区域-添加 - * - * @param file - * @return - */ - @PostMapping("/upload") - public R upload(@RequestParam("file") MultipartFile file) { - try { - patrolAreasService.addPatrolAreas(file); - return R.ok("上传成功!"); - } catch (Exception e) { - return R.fail("上传失败!"); - } - } - - /** - * 巡查区域-编辑 - * - * @param patrolAreas - * @return - */ - @RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST}) - public R edit(@RequestBody BusinessPatrolAreas patrolAreas) { - return patrolAreasService.updatePatrolAreas(patrolAreas)?R.ok("添加成功!"):R.fail("添加失败"); - } - /** - * 巡查区域-禁用/启用 - * - * @param patrolAreas - * @return - */ - @RequestMapping(value = "/isDisable", method = {RequestMethod.PUT,RequestMethod.POST}) - public R isDisable(@RequestBody BusinessPatrolAreas patrolAreas) { - return patrolAreasService.updateById(patrolAreas)?R.ok("修改成功!"):R.fail("修改失败"); - } - /** - * 巡查区域-删除 - * - * @param id - * @return - */ - @DeleteMapping(value = "/delete") - public R delete(String id) { - return patrolAreasService.removeById(id)?R.ok("删除成功!"):R.fail("删除失败!"); - } - /** - * 导出excel - * - * @param request - * @param patrolAreas - */ - @RequestMapping(value = "/exportXls") - public ModelAndView exportXls(BusinessPatrolAreas patrolAreas, HttpServletRequest request) { - //Step.2 AutoPoi 导出Excel - ModelAndView mv = new ModelAndView(new JeecgEntityExcelView()); - - String selections = request.getParameter("selections"); - if (ObjectUtil.isNotEmpty(selections)) { - List areasIdList = Arrays.asList(selections.split(",")); - patrolAreas.setAreasIdList(areasIdList); - } - - List pageList = patrolAreasService.exportXls(patrolAreas); - - //导出文件名称 - mv.addObject(NormalExcelConstants.FILE_NAME, "用户列表"); - mv.addObject(NormalExcelConstants.CLASS, BusinessPatrolAreas.class); - LoginUser user = LoginHelper.getLoginUser(); - ExportParams exportParams = new ExportParams("用户列表数据", "导出人:"+user.getNickname(), "导出信息"); - mv.addObject(NormalExcelConstants.PARAMS, exportParams); - mv.addObject(NormalExcelConstants.DATA_LIST, pageList); - return mv; - } -} diff --git a/dk-modules/business/src/main/java/org/dromara/business/domain/bo/BusinessAlertBo.java b/dk-modules/business/src/main/java/org/dromara/business/domain/bo/BusinessAlertBo.java index 1331be7..417d3b6 100644 --- a/dk-modules/business/src/main/java/org/dromara/business/domain/bo/BusinessAlertBo.java +++ b/dk-modules/business/src/main/java/org/dromara/business/domain/bo/BusinessAlertBo.java @@ -1,5 +1,6 @@ package org.dromara.business.domain.bo; +import com.baomidou.mybatisplus.annotation.TableField; import org.dromara.business.domain.BusinessAlert; import org.dromara.common.mybatis.core.domain.BaseEntity; import org.dromara.common.core.validate.AddGroup; @@ -9,6 +10,7 @@ import lombok.Data; import lombok.EqualsAndHashCode; import jakarta.validation.constraints.*; import java.util.Date; +import java.util.List; /** * 预警任务业务对象 business_alert @@ -185,4 +187,7 @@ public class BusinessAlertBo extends BaseEntity { private Long handleSource; + List deptIdList; + + } diff --git a/dk-modules/business/src/main/java/org/dromara/business/domain/model/StatObj.java b/dk-modules/business/src/main/java/org/dromara/business/domain/model/StatObj.java new file mode 100644 index 0000000..b2aacc1 --- /dev/null +++ b/dk-modules/business/src/main/java/org/dromara/business/domain/model/StatObj.java @@ -0,0 +1,86 @@ +package org.dromara.business.domain.model; + +import cn.hutool.json.JSONObject; +import lombok.Data; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.List; + +/** + * 统计信息返回类 + */ +@Data +public class StatObj implements Serializable { + + /** + * 统计字段 + */ + private String statKey; + /** + * 统计值 + */ + private Object statVal; + + private List statValues; + /** + * 子集信息 + */ + List nextStatList; + + /** + * 补充字段 + */ + private JSONObject extra; + + /** + * 跳转链接 + */ + private String url; + + + public StatObj(){ + + } + + public StatObj(String statKey, Object statVal){ + this.statKey = statKey; + this.statVal = statVal; + } + + public StatObj(String statKey, Long statVal, String extraKey, Object extraValue){ + this.statKey = statKey; + this.statVal = statVal; + this.extra = new JSONObject().put(extraKey,extraValue); + } + + public StatObj(String statKey, BigDecimal percentage){ + this.statKey = statKey; + this.statVal = percentage; + } + + public StatObj(String statKey, Long statVal, String url){ + this.statKey = statKey; + this.statVal = statVal; + this.url = url; + } + + public StatObj(String statKey, List nextStatList){ + this.statKey = statKey; + this.nextStatList = nextStatList; + } + + public StatObj(String statKey, List nextStatList,String extraKey, Object extraValue){ + this.statKey = statKey; + this.nextStatList = nextStatList; + this.extra = new JSONObject().put(extraKey,extraValue); + } + + public void addExtra(String key,Object value){ + if(this.extra == null){ + this.extra = new JSONObject(); + } + this.extra.set(key,value); + } + +} diff --git a/dk-modules/business/src/main/java/org/dromara/business/mapper/BusinessAlertMapper.java b/dk-modules/business/src/main/java/org/dromara/business/mapper/BusinessAlertMapper.java index 3481dd5..326a43a 100644 --- a/dk-modules/business/src/main/java/org/dromara/business/mapper/BusinessAlertMapper.java +++ b/dk-modules/business/src/main/java/org/dromara/business/mapper/BusinessAlertMapper.java @@ -3,11 +3,18 @@ package org.dromara.business.mapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import org.apache.ibatis.annotations.Param; import org.dromara.business.domain.BusinessAlert; +import org.dromara.business.domain.bo.BusinessAlertBo; import org.dromara.business.domain.vo.BusinessAlertVo; +import org.dromara.common.mybatis.annotation.DataColumn; +import org.dromara.common.mybatis.annotation.DataPermission; import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; import org.dromara.common.mybatis.core.page.TableDataInfo; +import java.util.List; +import java.util.Map; + /** * 预警任务Mapper接口 * @@ -16,10 +23,29 @@ import org.dromara.common.mybatis.core.page.TableDataInfo; */ public interface BusinessAlertMapper extends BaseMapperPlus { - Page pageBusinessAlert(Page build, QueryWrapper wrapper); + Page pageBusinessAlert(Page page, QueryWrapper ew); + + Page pageAlertFinish(Page page, QueryWrapper ew); + + Page pageAlertTodo(Page page, QueryWrapper ew); + + @DataPermission( + @DataColumn(key = "deptName", value = "ba.dept_id") + ) + List> listMonthAlert(@Param("param") BusinessAlertBo businessAlertBo); - Page pageAlertFinish(Page page, QueryWrapper wrapper); + @DataPermission( + @DataColumn(key = "deptName", value = "ba.dept_id") + ) + List> listDepartAlert(@Param("param") BusinessAlertBo businessAlertBo); - Page pageAlertTodo(Page build, QueryWrapper wrapper); + @DataPermission( + @DataColumn(key = "deptName", value = "ba.dept_id") + ) + List> listMonthAlertStatus(@Param("param")BusinessAlertBo businessAlertBo); + @DataPermission( + @DataColumn(key = "deptName", value = "ba.dept_id") + ) + List> listDepartAlertStatus(@Param("param") BusinessAlertBo businessAlertBo); } diff --git a/dk-modules/business/src/main/java/org/dromara/business/mapper/BusinessDepartBoundaryMapper.java b/dk-modules/business/src/main/java/org/dromara/business/mapper/BusinessDepartBoundaryMapper.java index f8f4a72..75926dd 100644 --- a/dk-modules/business/src/main/java/org/dromara/business/mapper/BusinessDepartBoundaryMapper.java +++ b/dk-modules/business/src/main/java/org/dromara/business/mapper/BusinessDepartBoundaryMapper.java @@ -4,6 +4,8 @@ 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; @@ -23,4 +25,6 @@ public interface BusinessDepartBoundaryMapper extends BaseMapper boundaryList); + String listJson(@Param("param") BusinessDepartBoundary departBoundary); + } diff --git a/dk-modules/business/src/main/java/org/dromara/business/service/BusinessAlertStatisticsService.java b/dk-modules/business/src/main/java/org/dromara/business/service/BusinessAlertStatisticsService.java index 446a2d5..9f9d07e 100644 --- a/dk-modules/business/src/main/java/org/dromara/business/service/BusinessAlertStatisticsService.java +++ b/dk-modules/business/src/main/java/org/dromara/business/service/BusinessAlertStatisticsService.java @@ -1,5 +1,17 @@ package org.dromara.business.service; +import org.dromara.business.domain.bo.BusinessAlertBo; +import org.dromara.business.domain.model.StatObj; + +import java.util.List; + public interface BusinessAlertStatisticsService { + List countMonthAlert(BusinessAlertBo businessAlertBo); + + List countDepartAlert(BusinessAlertBo businessAlertBo); + + List countMonthAlertStatus(BusinessAlertBo businessAlertBo); + + List countDepartAlertStatus(BusinessAlertBo businessAlertBo); } diff --git a/dk-modules/business/src/main/java/org/dromara/business/service/IBusinessDepartBoundaryService.java b/dk-modules/business/src/main/java/org/dromara/business/service/IBusinessDepartBoundaryService.java index 3d5079a..22c2679 100644 --- a/dk-modules/business/src/main/java/org/dromara/business/service/IBusinessDepartBoundaryService.java +++ b/dk-modules/business/src/main/java/org/dromara/business/service/IBusinessDepartBoundaryService.java @@ -18,11 +18,13 @@ public interface IBusinessDepartBoundaryService extends IService queryByDeptId(String deptId); - boolean uploadShpFile(MultipartFile file); + boolean uploadShpFile(MultipartFile file,String deptId); boolean deleteDepartBoundary(String id); boolean updateDepartBoundary(BusinessDepartBoundary departBoundary); boolean addDepartBoundary(BusinessDepartBoundary departBoundary); + + String listJson(BusinessDepartBoundary departBoundary); } diff --git a/dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessAlertStatisticsServiceImpl.java b/dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessAlertStatisticsServiceImpl.java index 32657ef..186dca2 100644 --- a/dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessAlertStatisticsServiceImpl.java +++ b/dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessAlertStatisticsServiceImpl.java @@ -1,9 +1,24 @@ package org.dromara.business.service.impl; +import cn.hutool.core.util.ObjectUtil; import lombok.RequiredArgsConstructor; +import org.apache.dubbo.config.annotation.DubboReference; +import org.dromara.business.domain.bo.BusinessAlertBo; +import org.dromara.business.domain.model.StatObj; +import org.dromara.business.mapper.BusinessAlertMapper; import org.dromara.business.service.BusinessAlertStatisticsService; +import org.dromara.common.core.exception.ServiceException; +import org.dromara.system.api.RemoteDeptService; +import org.dromara.system.api.domain.vo.RemoteDeptVo; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.Objects; +import java.util.stream.Collectors; + /** * *预警统计Service业务层处理 @@ -12,9 +27,72 @@ import org.springframework.stereotype.Service; @Service public class BusinessAlertStatisticsServiceImpl implements BusinessAlertStatisticsService { + private final BusinessAlertMapper baseMapper; + + @DubboReference + RemoteDeptService remoteDeptService; + + /** + * 按照月份分类预警数量(包含权限) + * @param businessAlertBo + * @return + */ + @Override + public List countMonthAlert(BusinessAlertBo businessAlertBo) { + if (ObjectUtil.isEmpty(businessAlertBo.getDeptId())){ + throw new ServiceException("部门【id】为空"); + } + + List remoteDeptVoList = remoteDeptService.selectListByParentId(businessAlertBo.getDeptId()); + List departIdList = remoteDeptVoList.stream().map(RemoteDeptVo::getDeptId).toList(); + businessAlertBo.setDeptIdList(departIdList); + + List> mapList = baseMapper.listMonthAlert(businessAlertBo); + + return mapList.stream().map(data -> new StatObj(data.get("dateMonth") + "", data.get("total"))).collect(Collectors.toList()); + + } + + + @Override + public ListcountDepartAlert(BusinessAlertBo businessAlertBo) { + List> 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()); + } + + @Override + public List countMonthAlertStatus(BusinessAlertBo businessAlertBo) { + List> mapList = baseMapper.listMonthAlertStatus(businessAlertBo); + + return mapList.stream() + .map(map -> new StatObj( + Objects.toString(map.get("dateMonth")), + List.of( + new StatObj("total", map.get("total")), + new StatObj("todoCount", map.get("todoCount")), + new StatObj("finishCount", map.get("finishCount")) + ) + )) + .collect(Collectors.toList()); + } + @Override + public List countDepartAlertStatus(BusinessAlertBo businessAlertBo) { + List> mapList = baseMapper.listDepartAlertStatus(businessAlertBo); + return mapList.stream() + .map(map -> new StatObj( + Objects.toString(map.get("deptName")), + List.of( + new StatObj("total", map.get("total")), + new StatObj("todoCount", map.get("todoCount")), + new StatObj("finishCount", map.get("finishCount")) + ),"deptId",map.get("deptId") + )) + .collect(Collectors.toList()); + } } diff --git a/dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessDepartBoundaryServiceImpl.java b/dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessDepartBoundaryServiceImpl.java index dc6f17e..34a9542 100644 --- a/dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessDepartBoundaryServiceImpl.java +++ b/dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessDepartBoundaryServiceImpl.java @@ -2,6 +2,7 @@ package org.dromara.business.service.impl; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.core.toolkit.StringUtils; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import lombok.RequiredArgsConstructor; @@ -18,7 +19,9 @@ 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.model.LoginUser; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.jdbc.datasource.DataSourceUtils; import org.springframework.stereotype.Service; @@ -51,6 +54,8 @@ public class BusinessDepartBoundaryServiceImpl extends ServiceImpl listSysDepartBoundary(PageQuery pageQuery, BusinessDepartBoundary departBoundary) { Page page = baseMapper.listSysDepartBoundary(pageQuery.build(),departBoundary); @@ -71,7 +76,7 @@ public class BusinessDepartBoundaryServiceImpl extends ServiceImpl geospatialVectorsList = new ArrayList<>(); try { //1、首先调用解析工具拿到解析的字段集合 @@ -135,14 +140,14 @@ public class BusinessDepartBoundaryServiceImpl extends ServiceImpl boundaryList = buildBusinessDepartBoundary(geospatialVectorsList); + List boundaryList = buildBusinessDepartBoundary(geospatialVectorsList,deptId); // 分批处理 int startIndex = 0; // 从第 0 条开始 int batchSize = 2000; // 每批处理 2000 条 boolean flag = BatchProcessorUtil.processBatches(boundaryList, batchSize, startIndex, batch -> { //批量新增部门区域数据 - this.baseMapper.saveBatchBoundary(batch); +// this.baseMapper.saveBatchBoundary(batch); }); if (flag) { @@ -170,6 +175,15 @@ public class BusinessDepartBoundaryServiceImpl extends ServiceImpl buildBusinessDepartBoundary(List geospatialVectorsList) { + private List buildBusinessDepartBoundary(List geospatialVectorsList,String deptId) { List resultList = new ArrayList<>(); List> namePathList = remoteDeptService.getNamePathList(); diff --git a/dk-modules/business/src/main/resources/mapper/business/BusinessAlertMapper.xml b/dk-modules/business/src/main/resources/mapper/business/BusinessAlertMapper.xml index 95b94f0..1d99790 100644 --- a/dk-modules/business/src/main/resources/mapper/business/BusinessAlertMapper.xml +++ b/dk-modules/business/src/main/resources/mapper/business/BusinessAlertMapper.xml @@ -44,4 +44,162 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" ${ew.getCustomSqlSegment} + + + + + + + + diff --git a/dk-modules/business/src/main/resources/mapper/business/BusinessDepartBoundaryMapper.xml b/dk-modules/business/src/main/resources/mapper/business/BusinessDepartBoundaryMapper.xml index 1d2d374..4a17ca7 100644 --- a/dk-modules/business/src/main/resources/mapper/business/BusinessDepartBoundaryMapper.xml +++ b/dk-modules/business/src/main/resources/mapper/business/BusinessDepartBoundaryMapper.xml @@ -111,4 +111,37 @@ + + diff --git a/dk-modules/resource/src/main/java/org/dromara/resource/controller/SysEmailController.java b/dk-modules/resource/src/main/java/org/dromara/resource/controller/SysEmailController.java index 19da5ba..d5ae8b2 100644 --- a/dk-modules/resource/src/main/java/org/dromara/resource/controller/SysEmailController.java +++ b/dk-modules/resource/src/main/java/org/dromara/resource/controller/SysEmailController.java @@ -2,6 +2,8 @@ package org.dromara.resource.controller; import cn.hutool.core.util.RandomUtil; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.dromara.common.core.constant.Constants; @@ -30,6 +32,7 @@ import java.time.Duration; @RequiredArgsConstructor @RestController @RequestMapping("/email") +@Tag(name = "邮件功能") public class SysEmailController extends BaseController { private final MailProperties mailProperties; @@ -39,6 +42,7 @@ public class SysEmailController extends BaseController { * * @param email 邮箱 */ + @Operation(summary = "邮箱验证码",description = "邮箱验证码") @RateLimiter(key = "#email", time = 60, count = 1) @GetMapping("/code") public R emailCode(@NotBlank(message = "{user.email.not.blank}") String email) { diff --git a/dk-modules/resource/src/main/java/org/dromara/resource/controller/SysOssConfigController.java b/dk-modules/resource/src/main/java/org/dromara/resource/controller/SysOssConfigController.java index 506cdb7..d8803a4 100644 --- a/dk-modules/resource/src/main/java/org/dromara/resource/controller/SysOssConfigController.java +++ b/dk-modules/resource/src/main/java/org/dromara/resource/controller/SysOssConfigController.java @@ -1,6 +1,8 @@ package org.dromara.resource.controller; import cn.dev33.satoken.annotation.SaCheckPermission; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; import org.dromara.common.core.domain.R; import org.dromara.common.core.validate.AddGroup; import org.dromara.common.core.validate.EditGroup; @@ -28,6 +30,7 @@ import java.util.Arrays; * @author 孤舟烟雨 * @date 2021-08-13 */ +@Tag(name = "对象存储配置") @Validated @RequiredArgsConstructor @RestController @@ -41,6 +44,7 @@ public class SysOssConfigController extends BaseController { */ @SaCheckPermission("system:ossConfig:list") @GetMapping("/list") + @Operation(summary = "查询对象存储配置列表",description = "查询对象存储配置列表") public TableDataInfo list(@Validated(QueryGroup.class) SysOssConfigBo bo, PageQuery pageQuery) { return iSysOssConfigService.queryPageList(bo, pageQuery); } @@ -52,6 +56,7 @@ public class SysOssConfigController extends BaseController { */ @SaCheckPermission("system:ossConfig:list") @GetMapping("/{ossConfigId}") + @Operation(summary = "获取对象存储配置详细信息",description = "获取对象存储配置详细信息") public R getInfo(@NotNull(message = "主键不能为空") @PathVariable("ossConfigId") Long ossConfigId) { return R.ok(iSysOssConfigService.queryById(ossConfigId)); } @@ -62,6 +67,7 @@ public class SysOssConfigController extends BaseController { @SaCheckPermission("system:ossConfig:add") @Log(title = "对象存储配置", businessType = BusinessType.INSERT) @PostMapping() + @Operation(summary = "新增对象存储配置",description = "新增对象存储配置") public R add(@Validated(AddGroup.class) @RequestBody SysOssConfigBo bo) { return toAjax(iSysOssConfigService.insertByBo(bo)); } @@ -72,6 +78,7 @@ public class SysOssConfigController extends BaseController { @SaCheckPermission("system:ossConfig:edit") @Log(title = "对象存储配置", businessType = BusinessType.UPDATE) @PutMapping() + @Operation(summary = "对象存储配置",description = "对象存储配置") public R edit(@Validated(EditGroup.class) @RequestBody SysOssConfigBo bo) { return toAjax(iSysOssConfigService.updateByBo(bo)); } @@ -84,6 +91,7 @@ public class SysOssConfigController extends BaseController { @SaCheckPermission("system:ossConfig:remove") @Log(title = "对象存储配置", businessType = BusinessType.DELETE) @DeleteMapping("/{ossConfigIds}") + @Operation(summary = "删除对象存储配置",description = "删除对象存储配置") public R remove(@NotEmpty(message = "主键不能为空") @PathVariable Long[] ossConfigIds) { return toAjax(iSysOssConfigService.deleteWithValidByIds(Arrays.asList(ossConfigIds), true)); } @@ -94,6 +102,7 @@ public class SysOssConfigController extends BaseController { @SaCheckPermission("system:ossConfig:edit") @Log(title = "对象存储状态修改", businessType = BusinessType.UPDATE) @PutMapping("/changeStatus") + @Operation(summary = "对象存储状态修改",description = "对象存储状态修改") public R changeStatus(@RequestBody SysOssConfigBo bo) { return toAjax(iSysOssConfigService.updateOssConfigStatus(bo)); } diff --git a/dk-modules/resource/src/main/java/org/dromara/resource/controller/SysOssController.java b/dk-modules/resource/src/main/java/org/dromara/resource/controller/SysOssController.java index 4efe0ab..f0291ab 100644 --- a/dk-modules/resource/src/main/java/org/dromara/resource/controller/SysOssController.java +++ b/dk-modules/resource/src/main/java/org/dromara/resource/controller/SysOssController.java @@ -3,6 +3,8 @@ package org.dromara.resource.controller; import cn.dev33.satoken.annotation.SaCheckPermission; import cn.hutool.core.util.ObjectUtil; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; import lombok.RequiredArgsConstructor; import org.dromara.common.core.domain.R; import org.dromara.common.core.validate.QueryGroup; @@ -35,6 +37,7 @@ import java.util.List; @RequiredArgsConstructor @RestController @RequestMapping("/oss") +@Tag(name = "文件上传") public class SysOssController extends BaseController { private final ISysOssService iSysOssService; @@ -44,6 +47,7 @@ public class SysOssController extends BaseController { */ @SaCheckPermission("system:oss:list") @GetMapping("/list") + @Operation(summary = "查询OSS对象存储列表",description = "查询OSS对象存储列表") public TableDataInfo list(@Validated(QueryGroup.class) SysOssBo bo, PageQuery pageQuery) { return iSysOssService.queryPageList(bo, pageQuery); } @@ -55,6 +59,7 @@ public class SysOssController extends BaseController { */ @SaCheckPermission("system:oss:list") @GetMapping("/listByIds/{ossIds}") + @Operation(summary = "查询OSS对象基于id串",description = "查询OSS对象基于id串") public R> listByIds(@NotEmpty(message = "主键不能为空") @PathVariable Long[] ossIds) { List list = iSysOssService.listByIds(Arrays.asList(ossIds)); return R.ok(list); @@ -68,6 +73,7 @@ public class SysOssController extends BaseController { @SaCheckPermission("system:oss:upload") @Log(title = "OSS对象存储", businessType = BusinessType.INSERT) @PostMapping(value = "/upload", consumes = MediaType.MULTIPART_FORM_DATA_VALUE) + @Operation(summary = "上传OSS对象存储",description = "上传OSS对象存储") public R upload(@RequestPart("file") MultipartFile file) { if (ObjectUtil.isNull(file)) { return R.fail("上传文件不能为空"); @@ -87,6 +93,7 @@ public class SysOssController extends BaseController { */ @SaCheckPermission("system:oss:download") @GetMapping("/download/{ossId}") + @Operation(summary = "下载OSS对象存储",description = "下载OSS对象存储") public void download(@PathVariable Long ossId, HttpServletResponse response) throws IOException { iSysOssService.download(ossId, response); } @@ -99,6 +106,7 @@ public class SysOssController extends BaseController { @SaCheckPermission("system:oss:remove") @Log(title = "OSS对象存储", businessType = BusinessType.DELETE) @DeleteMapping("/{ossIds}") + @Operation(summary = "删除OSS对象存储",description = "删除OSS对象存储") public R remove(@NotEmpty(message = "主键不能为空") @PathVariable Long[] ossIds) { return toAjax(iSysOssService.deleteWithValidByIds(Arrays.asList(ossIds), true)); } diff --git a/dk-modules/resource/src/main/java/org/dromara/resource/controller/SysSmsController.java b/dk-modules/resource/src/main/java/org/dromara/resource/controller/SysSmsController.java index f5ae8f4..6d8f490 100644 --- a/dk-modules/resource/src/main/java/org/dromara/resource/controller/SysSmsController.java +++ b/dk-modules/resource/src/main/java/org/dromara/resource/controller/SysSmsController.java @@ -2,6 +2,8 @@ package org.dromara.resource.controller; import cn.hutool.core.util.RandomUtil; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; import jakarta.validation.constraints.NotBlank; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -32,6 +34,7 @@ import java.util.LinkedHashMap; @RequiredArgsConstructor @RestController @RequestMapping("/sms") +@Tag(name = "短信功能") public class SysSmsController extends BaseController { /** @@ -41,6 +44,7 @@ public class SysSmsController extends BaseController { */ @RateLimiter(key = "#phonenumber", time = 60, count = 1) @GetMapping("/code") + @Operation(summary = "短信验证码",description = "短信验证码") public R smsCaptcha(@NotBlank(message = "{user.phonenumber.not.blank}") String phonenumber) { String key = GlobalConstants.CAPTCHA_CODE_KEY + phonenumber; String code = RandomUtil.randomNumbers(4); diff --git a/dk-modules/system/src/main/java/org/dromara/system/controller/monitor/CacheController.java b/dk-modules/system/src/main/java/org/dromara/system/controller/monitor/CacheController.java index 51ca79d..354fe84 100644 --- a/dk-modules/system/src/main/java/org/dromara/system/controller/monitor/CacheController.java +++ b/dk-modules/system/src/main/java/org/dromara/system/controller/monitor/CacheController.java @@ -1,6 +1,8 @@ package org.dromara.system.controller.monitor; import cn.dev33.satoken.annotation.SaCheckPermission; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; import lombok.RequiredArgsConstructor; import org.dromara.common.core.domain.R; import org.dromara.common.core.utils.StringUtils; @@ -21,6 +23,7 @@ import java.util.*; @RequiredArgsConstructor @RestController @RequestMapping("/cache") +@Tag(name = "缓存监控") public class CacheController { private final RedissonConnectionFactory connectionFactory; @@ -30,6 +33,7 @@ public class CacheController { */ @SaCheckPermission("monitor:cache:list") @GetMapping() + @Operation(summary = "获取缓存监控列表",description = "获取缓存监控列表") public R getInfo() throws Exception { RedisConnection connection = connectionFactory.getConnection(); Properties commandStats = connection.commands().info("commandstats"); diff --git a/dk-modules/system/src/main/java/org/dromara/system/controller/monitor/SysLogininforController.java b/dk-modules/system/src/main/java/org/dromara/system/controller/monitor/SysLogininforController.java index 2e88bb7..3d3754c 100644 --- a/dk-modules/system/src/main/java/org/dromara/system/controller/monitor/SysLogininforController.java +++ b/dk-modules/system/src/main/java/org/dromara/system/controller/monitor/SysLogininforController.java @@ -1,6 +1,8 @@ package org.dromara.system.controller.monitor; import cn.dev33.satoken.annotation.SaCheckPermission; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; import jakarta.servlet.http.HttpServletResponse; import lombok.RequiredArgsConstructor; import org.dromara.common.core.constant.CacheConstants; @@ -25,6 +27,7 @@ import java.util.List; * * @author Lion Li */ +@Tag(name = "系统访问记录") @Validated @RequiredArgsConstructor @RestController @@ -36,6 +39,7 @@ public class SysLogininforController extends BaseController { /** * 获取系统访问记录列表 */ + @Operation(summary = "获取系统访问记录列表",description = "获取系统访问记录列表") @SaCheckPermission("monitor:logininfor:list") @GetMapping("/list") public TableDataInfo list(SysLogininforBo logininfor, PageQuery pageQuery) { @@ -45,6 +49,7 @@ public class SysLogininforController extends BaseController { /** * 导出系统访问记录列表 */ + @Operation(summary = "登录日志",description = "登录日志") @Log(title = "登录日志", businessType = BusinessType.EXPORT) @SaCheckPermission("monitor:logininfor:export") @PostMapping("/export") @@ -57,6 +62,7 @@ public class SysLogininforController extends BaseController { * 批量删除登录日志 * @param infoIds 日志ids */ + @Operation(summary = "登录日志",description = "登录日志") @SaCheckPermission("monitor:logininfor:remove") @Log(title = "登录日志", businessType = BusinessType.DELETE) @DeleteMapping("/{infoIds}") @@ -67,6 +73,7 @@ public class SysLogininforController extends BaseController { /** * 清理系统访问记录 */ + @Operation(summary = "清理系统访问记录",description = "清理系统访问记录") @SaCheckPermission("monitor:logininfor:remove") @Log(title = "登录日志", businessType = BusinessType.CLEAN) @DeleteMapping("/clean") @@ -75,6 +82,7 @@ public class SysLogininforController extends BaseController { return R.ok(); } + @Operation(summary = "账户解锁",description = "账户解锁") @SaCheckPermission("monitor:logininfor:unlock") @Log(title = "账户解锁", businessType = BusinessType.OTHER) @GetMapping("/unlock/{userName}") diff --git a/dk-modules/system/src/main/java/org/dromara/system/controller/monitor/SysOperlogController.java b/dk-modules/system/src/main/java/org/dromara/system/controller/monitor/SysOperlogController.java index 5af1a01..25d1963 100644 --- a/dk-modules/system/src/main/java/org/dromara/system/controller/monitor/SysOperlogController.java +++ b/dk-modules/system/src/main/java/org/dromara/system/controller/monitor/SysOperlogController.java @@ -1,6 +1,8 @@ package org.dromara.system.controller.monitor; import cn.dev33.satoken.annotation.SaCheckPermission; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; import lombok.RequiredArgsConstructor; import org.dromara.common.core.domain.R; import org.dromara.common.web.core.BaseController; @@ -23,6 +25,7 @@ import java.util.List; * * @author Lion Li */ +@Tag(name = "操作日志记录") @Validated @RequiredArgsConstructor @RestController @@ -34,6 +37,7 @@ public class SysOperlogController extends BaseController { /** * 获取操作日志记录列表 */ + @Operation(summary = "获取操作日志记录列表",description = "获取操作日志记录列表") @SaCheckPermission("monitor:operlog:list") @GetMapping("/list") public TableDataInfo list(SysOperLogBo operLog, PageQuery pageQuery) { @@ -43,6 +47,7 @@ public class SysOperlogController extends BaseController { /** * 导出操作日志记录列表 */ + @Operation(summary = "导出操作日志记录列表",description = "导出操作日志记录列表") @Log(title = "操作日志", businessType = BusinessType.EXPORT) @SaCheckPermission("monitor:operlog:export") @PostMapping("/export") @@ -55,6 +60,7 @@ public class SysOperlogController extends BaseController { * 批量删除操作日志记录 * @param operIds 日志ids */ + @Operation(summary = "批量删除操作日志记录",description = "批量删除操作日志记录") @Log(title = "操作日志", businessType = BusinessType.DELETE) @SaCheckPermission("monitor:operlog:remove") @DeleteMapping("/{operIds}") @@ -65,6 +71,7 @@ public class SysOperlogController extends BaseController { /** * 清理操作日志记录 */ + @Operation(summary = "清理操作日志记录",description = "清理操作日志记录") @SaCheckPermission("monitor:operlog:remove") @Log(title = "操作日志", businessType = BusinessType.CLEAN) @DeleteMapping("/clean") diff --git a/dk-modules/system/src/main/java/org/dromara/system/controller/monitor/SysUserOnlineController.java b/dk-modules/system/src/main/java/org/dromara/system/controller/monitor/SysUserOnlineController.java index dfef1f5..f3362cb 100644 --- a/dk-modules/system/src/main/java/org/dromara/system/controller/monitor/SysUserOnlineController.java +++ b/dk-modules/system/src/main/java/org/dromara/system/controller/monitor/SysUserOnlineController.java @@ -4,6 +4,8 @@ import cn.dev33.satoken.annotation.SaCheckPermission; import cn.dev33.satoken.exception.NotLoginException; import cn.dev33.satoken.stp.StpUtil; import cn.hutool.core.bean.BeanUtil; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; import lombok.RequiredArgsConstructor; import org.dromara.common.core.constant.CacheConstants; import org.dromara.common.core.domain.R; @@ -27,6 +29,7 @@ import java.util.stream.Collectors; * * @author Lion Li */ +@Tag(name = "在线用户监控") @RequiredArgsConstructor @RestController @RequestMapping("/online") @@ -38,6 +41,7 @@ public class SysUserOnlineController extends BaseController { * @param ipaddr IP地址 * @param userName 用户名 */ + @Operation(summary = "获取在线用户监控列表",description = "获取在线用户监控列表") @SaCheckPermission("monitor:online:list") @GetMapping("/list") public TableDataInfo list(String ipaddr, String userName) { @@ -77,8 +81,9 @@ public class SysUserOnlineController extends BaseController { * * @param tokenId token值 */ + @Operation(summary = "强退用户",description = "强退用户") @SaCheckPermission("monitor:online:forceLogout") - @Log(title = "在线用户", businessType = BusinessType.FORCE) + @Log(title = "强退用户", businessType = BusinessType.FORCE) @DeleteMapping("/{tokenId}") public R forceLogout(@PathVariable String tokenId) { try { @@ -91,6 +96,7 @@ public class SysUserOnlineController extends BaseController { /** * 获取当前用户登录在线设备 */ + @Operation(summary = "获取当前用户登录在线设备",description = "获取当前用户登录在线设备") @GetMapping() public TableDataInfo getInfo() { // 获取指定账号 id 的 token 集合 @@ -111,7 +117,8 @@ public class SysUserOnlineController extends BaseController { * * @param tokenId token值 */ - @Log(title = "在线设备", businessType = BusinessType.FORCE) + @Operation(summary = "强退当前在线设备",description = "强退当前在线设备") + @Log(title = "强退当前在线设备", businessType = BusinessType.FORCE) @PostMapping("/{tokenId}") public R remove(@PathVariable("tokenId") String tokenId) { try { diff --git a/dk-modules/system/src/main/java/org/dromara/system/dubbo/RemoteDeptServiceImpl.java b/dk-modules/system/src/main/java/org/dromara/system/dubbo/RemoteDeptServiceImpl.java index 3655c0a..02794ba 100644 --- a/dk-modules/system/src/main/java/org/dromara/system/dubbo/RemoteDeptServiceImpl.java +++ b/dk-modules/system/src/main/java/org/dromara/system/dubbo/RemoteDeptServiceImpl.java @@ -53,4 +53,11 @@ public class RemoteDeptServiceImpl implements RemoteDeptService { public List> getNamePathList() { return sysDeptService.getNamePathList(); } + + @Override + public List selectListByParentId(String deptId) { + List deptVoList = sysDeptService.selectListByParentId(deptId); + + return BeanUtil.copyToList(deptVoList, RemoteDeptVo.class); + } } diff --git a/dk-modules/system/src/main/java/org/dromara/system/service/ISysDeptService.java b/dk-modules/system/src/main/java/org/dromara/system/service/ISysDeptService.java index f99cffc..cd5b88d 100644 --- a/dk-modules/system/src/main/java/org/dromara/system/service/ISysDeptService.java +++ b/dk-modules/system/src/main/java/org/dromara/system/service/ISysDeptService.java @@ -146,4 +146,10 @@ public interface ISysDeptService { */ List> getNamePathList(); + /** + * 根据父级找子级 + * @param deptId + * @return + */ + List selectListByParentId(String deptId); } diff --git a/dk-modules/system/src/main/java/org/dromara/system/service/impl/SysDeptServiceImpl.java b/dk-modules/system/src/main/java/org/dromara/system/service/impl/SysDeptServiceImpl.java index 1119432..74815e0 100644 --- a/dk-modules/system/src/main/java/org/dromara/system/service/impl/SysDeptServiceImpl.java +++ b/dk-modules/system/src/main/java/org/dromara/system/service/impl/SysDeptServiceImpl.java @@ -1,5 +1,6 @@ package org.dromara.system.service.impl; +import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.convert.Convert; import cn.hutool.core.lang.tree.Tree; @@ -19,6 +20,7 @@ import org.dromara.common.core.utils.TreeBuildUtils; import org.dromara.common.mybatis.helper.DataBaseHelper; import org.dromara.common.redis.utils.CacheUtils; import org.dromara.common.satoken.utils.LoginHelper; +import org.dromara.system.api.domain.vo.RemoteDeptVo; import org.dromara.system.domain.SysDept; import org.dromara.system.domain.SysRole; import org.dromara.system.domain.SysUser; @@ -361,4 +363,11 @@ public class SysDeptServiceImpl implements ISysDeptService { return baseMapper.getNamePathList(); } + @Override + public List selectListByParentId(String deptId) { + List resultList = baseMapper.selectListByParentId(Long.parseLong(deptId)); + + return BeanUtil.copyToList(resultList, SysDeptVo.class); + } + } diff --git a/dk-modules/workflow/src/main/java/org/dromara/workflow/controller/FlwCategoryController.java b/dk-modules/workflow/src/main/java/org/dromara/workflow/controller/FlwCategoryController.java index 8332f3b..cae0e5b 100644 --- a/dk-modules/workflow/src/main/java/org/dromara/workflow/controller/FlwCategoryController.java +++ b/dk-modules/workflow/src/main/java/org/dromara/workflow/controller/FlwCategoryController.java @@ -2,6 +2,8 @@ package org.dromara.workflow.controller; import cn.dev33.satoken.annotation.SaCheckPermission; import cn.hutool.core.lang.tree.Tree; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; import jakarta.servlet.http.HttpServletResponse; import jakarta.validation.constraints.NotNull; import lombok.RequiredArgsConstructor; @@ -27,6 +29,7 @@ import java.util.List; * * @author may */ +@Tag(name = "流程分类") @ConditionalOnEnable @Validated @RequiredArgsConstructor @@ -39,7 +42,7 @@ public class FlwCategoryController extends BaseController { /** * 查询流程分类列表 */ - @SaCheckPermission("workflow:category:list") + @Operation(summary = "查询流程分类列表",description ="查询流程分类列表") @GetMapping("/list") public R> list(FlowCategoryBo bo) { List list = flwCategoryService.queryList(bo); @@ -49,8 +52,7 @@ public class FlwCategoryController extends BaseController { /** * 导出流程分类列表 */ - @SaCheckPermission("workflow:category:export") - @Log(title = "流程分类", businessType = BusinessType.EXPORT) + @Operation(summary = "导出流程分类列表",description ="导出流程分类列表") @PostMapping("/export") public void export(FlowCategoryBo bo, HttpServletResponse response) { List list = flwCategoryService.queryList(bo); @@ -62,7 +64,7 @@ public class FlwCategoryController extends BaseController { * * @param categoryId 主键 */ - @SaCheckPermission("workflow:category:query") + @Operation(summary = "获取流程分类详细信息",description ="获取流程分类详细信息") @GetMapping("/{categoryId}") public R getInfo(@NotNull(message = "主键不能为空") @PathVariable Long categoryId) { flwCategoryService.checkCategoryDataScope(categoryId); @@ -72,8 +74,7 @@ public class FlwCategoryController extends BaseController { /** * 新增流程分类 */ - @SaCheckPermission("workflow:category:add") - @Log(title = "流程分类", businessType = BusinessType.INSERT) + @Operation(summary = "新增流程分类",description ="新增流程分类") @RepeatSubmit() @PostMapping() public R add(@Validated(AddGroup.class) @RequestBody FlowCategoryBo category) { @@ -86,8 +87,7 @@ public class FlwCategoryController extends BaseController { /** * 修改流程分类 */ - @SaCheckPermission("workflow:category:edit") - @Log(title = "流程分类", businessType = BusinessType.UPDATE) + @Operation(summary = "修改流程分类",description ="修改流程分类") @RepeatSubmit() @PutMapping() public R edit(@Validated(EditGroup.class) @RequestBody FlowCategoryBo category) { @@ -106,8 +106,7 @@ public class FlwCategoryController extends BaseController { * * @param categoryId 主键 */ - @SaCheckPermission("workflow:category:remove") - @Log(title = "流程分类", businessType = BusinessType.DELETE) + @Operation(summary = "删除流程分类",description ="删除流程分类") @DeleteMapping("/{categoryId}") public R remove(@PathVariable Long categoryId) { if (flwCategoryService.hasChildByCategoryId(categoryId)) { @@ -124,6 +123,7 @@ public class FlwCategoryController extends BaseController { * * @param categoryBo 流程分类 */ + @Operation(summary = "获取流程分类树列表",description ="获取流程分类树列表") @GetMapping("/categoryTree") public R>> categoryTree(FlowCategoryBo categoryBo) { return R.ok(flwCategoryService.selectCategoryTreeList(categoryBo)); diff --git a/dk-modules/workflow/src/main/java/org/dromara/workflow/controller/FlwDefinitionController.java b/dk-modules/workflow/src/main/java/org/dromara/workflow/controller/FlwDefinitionController.java index ad848bd..3db2857 100644 --- a/dk-modules/workflow/src/main/java/org/dromara/workflow/controller/FlwDefinitionController.java +++ b/dk-modules/workflow/src/main/java/org/dromara/workflow/controller/FlwDefinitionController.java @@ -1,5 +1,7 @@ package org.dromara.workflow.controller; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; import jakarta.servlet.http.HttpServletResponse; import lombok.RequiredArgsConstructor; import org.dromara.common.core.domain.R; @@ -28,6 +30,7 @@ import java.util.List; * * @author may */ +@Tag(name = "流程定义管理") @ConditionalOnEnable @Validated @RequiredArgsConstructor @@ -44,6 +47,7 @@ public class FlwDefinitionController extends BaseController { * @param flowDefinition 参数 * @param pageQuery 分页 */ + @Operation(summary = "查询流程定义列表",description = "查询流程定义列表") @GetMapping("/list") public TableDataInfo list(FlowDefinition flowDefinition, PageQuery pageQuery) { return flwDefinitionService.queryList(flowDefinition, pageQuery); @@ -55,6 +59,7 @@ public class FlwDefinitionController extends BaseController { * @param flowDefinition 参数 * @param pageQuery 分页 */ + @Operation(summary = "查询未发布的流程定义列表",description = "查询未发布的流程定义列表") @GetMapping("/unPublishList") public TableDataInfo unPublishList(FlowDefinition flowDefinition, PageQuery pageQuery) { return flwDefinitionService.unPublishList(flowDefinition, pageQuery); @@ -65,6 +70,7 @@ public class FlwDefinitionController extends BaseController { * * @param id 流程定义id */ + @Operation(summary = "获取流程定义详细信息",description = "获取流程定义详细信息") @GetMapping(value = "/{id}") public R getInfo(@PathVariable Long id) { return R.ok(defService.getById(id)); @@ -75,7 +81,7 @@ public class FlwDefinitionController extends BaseController { * * @param flowDefinition 参数 */ - @Log(title = "流程定义", businessType = BusinessType.INSERT) + @Operation(summary = "新增流程定义",description = "新增流程定义") @PostMapping @RepeatSubmit() @Transactional(rollbackFor = Exception.class) @@ -88,7 +94,7 @@ public class FlwDefinitionController extends BaseController { * * @param flowDefinition 参数 */ - @Log(title = "流程定义", businessType = BusinessType.UPDATE) + @Operation(summary = "修改流程定义",description = "修改流程定义") @PutMapping @RepeatSubmit() @Transactional(rollbackFor = Exception.class) @@ -101,7 +107,7 @@ public class FlwDefinitionController extends BaseController { * * @param id 流程定义id */ - @Log(title = "流程定义", businessType = BusinessType.INSERT) + @Operation(summary = "发布流程定义",description = "发布流程定义") @PutMapping("/publish/{id}") @RepeatSubmit() public R publish(@PathVariable Long id) { @@ -113,7 +119,7 @@ public class FlwDefinitionController extends BaseController { * * @param id 流程定义id */ - @Log(title = "流程定义", businessType = BusinessType.INSERT) + @Operation(summary = "取消发布流程定义",description = "取消发布流程定义") @PutMapping("/unPublish/{id}") @RepeatSubmit() @Transactional(rollbackFor = Exception.class) @@ -124,7 +130,7 @@ public class FlwDefinitionController extends BaseController { /** * 删除流程定义 */ - @Log(title = "流程定义", businessType = BusinessType.DELETE) + @Operation(summary = "删除流程定义",description = "删除流程定义") @DeleteMapping("/{ids}") public R remove(@PathVariable List ids) { return toAjax(flwDefinitionService.removeDef(ids)); @@ -135,7 +141,7 @@ public class FlwDefinitionController extends BaseController { * * @param id 流程定义id */ - @Log(title = "流程定义", businessType = BusinessType.INSERT) + @Operation(summary = "复制流程定义",description = "复制流程定义") @PostMapping("/copy/{id}") @RepeatSubmit() @Transactional(rollbackFor = Exception.class) @@ -149,7 +155,7 @@ public class FlwDefinitionController extends BaseController { * @param file 文件 * @param category 分类 */ - @Log(title = "流程定义", businessType = BusinessType.IMPORT) + @Operation(summary = "导入流程定义",description = "导入流程定义") @PostMapping("/importDef") public R importDef(MultipartFile file, String category) { return R.ok(flwDefinitionService.importJson(file, category)); @@ -162,7 +168,7 @@ public class FlwDefinitionController extends BaseController { * @param response 响应 * @throws IOException 异常 */ - @Log(title = "流程定义", businessType = BusinessType.EXPORT) + @Operation(summary = "导出流程定义",description = "导出流程定义") @PostMapping("/exportDef/{id}") public void exportDef(@PathVariable Long id, HttpServletResponse response) throws IOException { flwDefinitionService.exportDef(id, response); @@ -173,6 +179,7 @@ public class FlwDefinitionController extends BaseController { * * @param id 流程定义id */ + @Operation(summary = "获取流程定义JSON字符串",description = "获取流程定义JSON字符串") @GetMapping("/xmlString/{id}") public R xmlString(@PathVariable Long id) { return R.ok("操作成功", defService.exportJson(id)); @@ -184,6 +191,7 @@ public class FlwDefinitionController extends BaseController { * @param id 流程定义id * @param active 激活/挂起 */ + @Operation(summary = "激活/挂起流程定义",description = "激活/挂起流程定义") @RepeatSubmit() @PutMapping("/active/{id}") @Transactional(rollbackFor = Exception.class) diff --git a/dk-modules/workflow/src/main/java/org/dromara/workflow/controller/FlwInstanceController.java b/dk-modules/workflow/src/main/java/org/dromara/workflow/controller/FlwInstanceController.java index 4b52bda..1bffc80 100644 --- a/dk-modules/workflow/src/main/java/org/dromara/workflow/controller/FlwInstanceController.java +++ b/dk-modules/workflow/src/main/java/org/dromara/workflow/controller/FlwInstanceController.java @@ -1,5 +1,7 @@ package org.dromara.workflow.controller; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; import lombok.RequiredArgsConstructor; import org.dromara.common.core.domain.R; import org.dromara.common.idempotent.annotation.RepeatSubmit; @@ -26,6 +28,7 @@ import java.util.Map; * * @author may */ +@Tag(name = "流程实例管理") @ConditionalOnEnable @Validated @RequiredArgsConstructor @@ -42,6 +45,7 @@ public class FlwInstanceController extends BaseController { * @param flowInstanceBo 流程实例 * @param pageQuery 分页 */ + @Operation(summary = "查询正在运行的流程实例列表",description = "查询正在运行的流程实例列表") @GetMapping("/pageByRunning") public TableDataInfo selectRunningInstanceList(FlowInstanceBo flowInstanceBo, PageQuery pageQuery) { return flwInstanceService.selectRunningInstanceList(flowInstanceBo, pageQuery); @@ -53,6 +57,7 @@ public class FlwInstanceController extends BaseController { * @param flowInstanceBo 流程实例 * @param pageQuery 分页 */ + @Operation(summary = "查询已结束的流程实例列表",description = "查询已结束的流程实例列表") @GetMapping("/pageByFinish") public TableDataInfo selectFinishInstanceList(FlowInstanceBo flowInstanceBo, PageQuery pageQuery) { return flwInstanceService.selectFinishInstanceList(flowInstanceBo, pageQuery); @@ -63,6 +68,7 @@ public class FlwInstanceController extends BaseController { * * @param businessId 业务id */ + @Operation(summary = "根据业务id查询流程实例详细信息",description = "根据业务id查询流程实例详细信息") @GetMapping("/getInfo/{businessId}") public R getInfo(@PathVariable Long businessId) { return R.ok(flwInstanceService.queryByBusinessId(businessId)); @@ -73,6 +79,7 @@ public class FlwInstanceController extends BaseController { * * @param businessIds 业务id */ + @Operation(summary = "按照业务id删除流程实例",description = "按照业务id删除流程实例") @DeleteMapping("/deleteByBusinessIds/{businessIds}") public R deleteByBusinessIds(@PathVariable List businessIds) { return toAjax(flwInstanceService.deleteByBusinessIds(businessIds)); @@ -83,6 +90,7 @@ public class FlwInstanceController extends BaseController { * * @param instanceIds 实例id */ + @Operation(summary = "按照实例id删除流程实例",description = "按照实例id删除流程实例") @DeleteMapping("/deleteByInstanceIds/{instanceIds}") public R deleteByInstanceIds(@PathVariable List instanceIds) { return toAjax(flwInstanceService.deleteByInstanceIds(instanceIds)); @@ -93,6 +101,7 @@ public class FlwInstanceController extends BaseController { * * @param bo 参数 */ + @Operation(summary = "撤销流程",description = "撤销流程") @RepeatSubmit() @PutMapping("/cancelProcessApply") public R cancelProcessApply(@RequestBody FlowCancelBo bo) { @@ -105,6 +114,7 @@ public class FlwInstanceController extends BaseController { * @param id 流程实例id * @param active 激活/挂起 */ + @Operation(summary = "激活/挂起流程实例",description = "激活/挂起流程实例") @RepeatSubmit() @PutMapping("/active/{id}") public R active(@PathVariable Long id, @RequestParam boolean active) { @@ -117,6 +127,7 @@ public class FlwInstanceController extends BaseController { * @param flowInstanceBo 参数 * @param pageQuery 分页 */ + @Operation(summary = "获取当前登陆人发起的流程实例",description = "获取当前登陆人发起的流程实例") @GetMapping("/pageByCurrent") public TableDataInfo selectCurrentInstanceList(FlowInstanceBo flowInstanceBo, PageQuery pageQuery) { return flwInstanceService.selectCurrentInstanceList(flowInstanceBo, pageQuery); @@ -127,6 +138,7 @@ public class FlwInstanceController extends BaseController { * * @param businessId 业务id */ + @Operation(summary = "获取流程图,流程记录",description = "获取流程图,流程记录") @GetMapping("/flowImage/{businessId}") public R> flowImage(@PathVariable String businessId) { return R.ok(flwInstanceService.flowImage(businessId)); @@ -137,6 +149,7 @@ public class FlwInstanceController extends BaseController { * * @param instanceId 流程实例id */ + @Operation(summary = "获取流程变量",description = "获取流程变量") @GetMapping("/instanceVariable/{instanceId}") public R> instanceVariable(@PathVariable Long instanceId) { return R.ok(flwInstanceService.instanceVariable(instanceId)); @@ -147,7 +160,7 @@ public class FlwInstanceController extends BaseController { * * @param bo 参数 */ - @Log(title = "流程实例管理", businessType = BusinessType.INSERT) + @Operation(summary = "作废流程",description = "作废流程") @RepeatSubmit() @PostMapping("/invalid") public R invalid(@Validated @RequestBody FlowInvalidBo bo) { diff --git a/dk-modules/workflow/src/main/java/org/dromara/workflow/controller/FlwTaskController.java b/dk-modules/workflow/src/main/java/org/dromara/workflow/controller/FlwTaskController.java index ffaff0b..2618ade 100644 --- a/dk-modules/workflow/src/main/java/org/dromara/workflow/controller/FlwTaskController.java +++ b/dk-modules/workflow/src/main/java/org/dromara/workflow/controller/FlwTaskController.java @@ -1,5 +1,8 @@ package org.dromara.workflow.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.common.core.domain.R; import org.dromara.common.core.validate.AddGroup; @@ -27,6 +30,7 @@ import java.util.List; * * @author may */ +@Tag(name = "任务管理") @ConditionalOnEnable @Validated @RequiredArgsConstructor @@ -41,7 +45,7 @@ public class FlwTaskController extends BaseController { * * @param startProcessBo 启动流程参数 */ - @Log(title = "任务管理", businessType = BusinessType.INSERT) + @Operation(summary = "启动任务",description = "启动任务") @RepeatSubmit() @PostMapping("/startWorkFlow") public R startWorkFlow(@Validated(AddGroup.class) @RequestBody StartProcessBo startProcessBo) { @@ -54,7 +58,7 @@ public class FlwTaskController extends BaseController { * * @param completeTaskBo 办理任务参数 */ - @Log(title = "任务管理", businessType = BusinessType.INSERT) + @Operation(summary = "办理任务",description = "办理任务") @RepeatSubmit() @PostMapping("/completeTask") public R completeTask(@Validated(AddGroup.class) @RequestBody CompleteTaskBo completeTaskBo) { @@ -67,6 +71,7 @@ public class FlwTaskController extends BaseController { * @param flowTaskBo 参数 * @param pageQuery 分页 */ + @Operation(summary = "查询当前用户的待办任务",description = "查询当前用户的待办任务") @GetMapping("/pageByTaskWait") public TableDataInfo pageByTaskWait(FlowTaskBo flowTaskBo, PageQuery pageQuery) { return flwTaskService.pageByTaskWait(flowTaskBo, pageQuery); @@ -78,7 +83,7 @@ public class FlwTaskController extends BaseController { * @param flowTaskBo 参数 * @param pageQuery 分页 */ - + @Operation(summary = "查询当前用户的已办任务",description = "查询当前用户的已办任务") @GetMapping("/pageByTaskFinish") public TableDataInfo pageByTaskFinish(FlowTaskBo flowTaskBo, PageQuery pageQuery) { return flwTaskService.pageByTaskFinish(flowTaskBo, pageQuery); @@ -90,6 +95,7 @@ public class FlwTaskController extends BaseController { * @param flowTaskBo 参数 * @param pageQuery 分页 */ + @Operation(summary = "查询待办任务",description = "查询待办任务") @GetMapping("/pageByAllTaskWait") public TableDataInfo pageByAllTaskWait(FlowTaskBo flowTaskBo, PageQuery pageQuery) { return flwTaskService.pageByAllTaskWait(flowTaskBo, pageQuery); @@ -101,6 +107,7 @@ public class FlwTaskController extends BaseController { * @param flowTaskBo 参数 * @param pageQuery 分页 */ + @Operation(summary = "查询已办任务",description = "查询已办任务") @GetMapping("/pageByAllTaskFinish") public TableDataInfo pageByAllTaskFinish(FlowTaskBo flowTaskBo, PageQuery pageQuery) { return flwTaskService.pageByAllTaskFinish(flowTaskBo, pageQuery); @@ -112,6 +119,7 @@ public class FlwTaskController extends BaseController { * @param flowTaskBo 参数 * @param pageQuery 分页 */ + @Operation(summary = "查询当前用户的抄送",description = "查询当前用户的抄送") @GetMapping("/pageByTaskCopy") public TableDataInfo pageByTaskCopy(FlowTaskBo flowTaskBo, PageQuery pageQuery) { return flwTaskService.pageByTaskCopy(flowTaskBo, pageQuery); @@ -122,6 +130,7 @@ public class FlwTaskController extends BaseController { * * @param taskId 任务id */ + @Operation(summary = "根据taskId查询任务",description = "根据taskId查询任务") @GetMapping("/getTask/{taskId}") public R getTask(@PathVariable Long taskId) { return R.ok(flwTaskService.selectById(taskId)); @@ -132,7 +141,7 @@ public class FlwTaskController extends BaseController { * * @param bo 参数 */ - @Log(title = "任务管理", businessType = BusinessType.INSERT) + @Operation(summary = "终止任务",description = "终止任务") @RepeatSubmit() @PostMapping("/terminationTask") public R terminationTask(@RequestBody FlowTerminationBo bo) { @@ -145,7 +154,9 @@ public class FlwTaskController extends BaseController { * @param bo 参数 * @param taskOperation 操作类型,委派 delegateTask、转办 transferTask、加签 addSignature、减签 reductionSignature */ - @Log(title = "任务管理", businessType = BusinessType.UPDATE) + @Operation(summary = "任务操作",description = "任务操作",parameters = { + @Parameter(name = "taskOperation", description = "操作类型,委派 delegateTask、转办 transferTask、加签 addSignature、减签 reductionSignature") + }) @RepeatSubmit @PostMapping("/taskOperation/{taskOperation}") public R taskOperation(@Validated @RequestBody TaskOperationBo bo, @PathVariable String taskOperation) { @@ -158,7 +169,7 @@ public class FlwTaskController extends BaseController { * @param taskIdList 任务id * @param userId 办理人id */ - @Log(title = "任务管理", businessType = BusinessType.UPDATE) + @Operation(summary = "修改任务办理人",description = "修改任务办理人") @RepeatSubmit() @PutMapping("/updateAssignee/{userId}") public R updateAssignee(@RequestBody List taskIdList, @PathVariable String userId) { @@ -170,7 +181,7 @@ public class FlwTaskController extends BaseController { * * @param bo 参数 */ - @Log(title = "任务管理", businessType = BusinessType.INSERT) + @Operation(summary = "驳回审批",description = "驳回审批") @RepeatSubmit() @PostMapping("/backProcess") public R backProcess(@Validated({AddGroup.class}) @RequestBody BackProcessBo bo) { @@ -183,6 +194,7 @@ public class FlwTaskController extends BaseController { * @param definitionId 流程定义id * @param nowNodeCode 当前节点 */ + @Operation(summary = "获取可驳回的前置节点",description = "获取可驳回的前置节点") @GetMapping("/getBackTaskNode/{definitionId}/{nowNodeCode}") public R> getBackTaskNode(@PathVariable Long definitionId, @PathVariable String nowNodeCode) { return R.ok(flwTaskService.getBackTaskNode(definitionId, nowNodeCode)); @@ -193,6 +205,7 @@ public class FlwTaskController extends BaseController { * * @param taskId 任务id */ + @Operation(summary = "获取当前任务的所有办理人",description = "获取当前任务的所有办理人") @GetMapping("/currentTaskAllUser/{taskId}") public R> currentTaskAllUser(@PathVariable Long taskId) { return R.ok(flwTaskService.currentTaskAllUser(taskId));