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">
-
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());