Browse Source

[feat]

1、联调预警相关功能
2、开发流程部门关系设置功能
pull/1/head
杨威 3 months ago
parent
commit
c09b01ea7b
  1. 2
      dk-api/api-system/src/main/java/org/dromara/system/api/domain/vo/RemoteAiLabelPostVo.java
  2. 10
      dk-api/api-workflow/src/main/java/org/dromara/workflow/api/RemoteWorkflowService.java
  3. 12
      dk-api/api-workflow/src/main/java/org/dromara/workflow/api/domain/RemoteFlowNode.java
  4. 32
      dk-modules/business/src/main/java/org/dromara/business/controller/BusinessHookController.java
  5. 29
      dk-modules/business/src/main/java/org/dromara/business/domain/BusinessAlert.java
  6. 20
      dk-modules/business/src/main/java/org/dromara/business/domain/bo/BusinessAlertBo.java
  7. 57
      dk-modules/business/src/main/java/org/dromara/business/domain/bo/BusinessHookBo.java
  8. 16
      dk-modules/business/src/main/java/org/dromara/business/domain/vo/BusinessAlertVo.java
  9. 16
      dk-modules/business/src/main/java/org/dromara/business/mapper/BusinessAlertMapper.java
  10. 42
      dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessAlertServiceImpl.java
  11. 14
      dk-modules/business/src/main/resources/mapper/business/BusinessAlertMapper.xml
  12. 1
      dk-modules/workflow/src/main/java/org/dromara/workflow/controller/FlwDefinitionController.java
  13. 46
      dk-modules/workflow/src/main/java/org/dromara/workflow/controller/FlwDepartController.java
  14. 30
      dk-modules/workflow/src/main/java/org/dromara/workflow/controller/FlwTaskController.java
  15. 48
      dk-modules/workflow/src/main/java/org/dromara/workflow/domain/FlowDepart.java
  16. 11
      dk-modules/workflow/src/main/java/org/dromara/workflow/domain/bo/BackProcessBo.java
  17. 15
      dk-modules/workflow/src/main/java/org/dromara/workflow/domain/bo/CompleteTaskBo.java
  18. 15
      dk-modules/workflow/src/main/java/org/dromara/workflow/domain/bo/TaskOperationBo.java
  19. 5
      dk-modules/workflow/src/main/java/org/dromara/workflow/dubbo/RemoteWorkflowServiceImpl.java
  20. 51
      dk-modules/workflow/src/main/java/org/dromara/workflow/handler/ListTypeHandler.java
  21. 7
      dk-modules/workflow/src/main/java/org/dromara/workflow/mapper/FlwDepartMapper.java
  22. 3
      dk-modules/workflow/src/main/java/org/dromara/workflow/mapper/FlwTaskMapper.java
  23. 9
      dk-modules/workflow/src/main/java/org/dromara/workflow/service/FlwDepartService.java
  24. 2
      dk-modules/workflow/src/main/java/org/dromara/workflow/service/IFlwTaskService.java
  25. 3
      dk-modules/workflow/src/main/java/org/dromara/workflow/service/WorkflowService.java
  26. 37
      dk-modules/workflow/src/main/java/org/dromara/workflow/service/impl/FlwDepartServiceImpl.java
  27. 21
      dk-modules/workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskServiceImpl.java
  28. 6
      dk-modules/workflow/src/main/java/org/dromara/workflow/service/impl/WorkflowServiceImpl.java
  29. 126
      dk-modules/workflow/src/main/java/org/dromara/workflow/utils/JsonUtil.java
  30. 8
      dk-modules/workflow/src/main/resources/mapper/workflow/FlwDepartMapper.xml
  31. 4
      pom.xml

2
dk-api/api-system/src/main/java/org/dromara/system/api/domain/vo/RemoteAiLabelPostVo.java

@ -4,7 +4,7 @@ import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty; import com.alibaba.excel.annotation.ExcelProperty;
import io.github.linpeilie.annotations.AutoMapper; import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data; import lombok.Data;
import org.dromara.system.domain.AiLabel; //import org.dromara.system.domain.AiLabel;
import java.io.Serial; import java.io.Serial;
import java.io.Serializable; import java.io.Serializable;

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

@ -5,6 +5,7 @@ import org.dromara.workflow.api.domain.RemoteCompleteTask;
import org.dromara.workflow.api.domain.RemoteStartProcess; import org.dromara.workflow.api.domain.RemoteStartProcess;
import org.dromara.workflow.api.domain.RemoteStartProcessReturn; import org.dromara.workflow.api.domain.RemoteStartProcessReturn;
import java.util.LinkedList;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
@ -108,4 +109,13 @@ public interface RemoteWorkflowService {
* @return 结果 * @return 结果
*/ */
boolean processInvalid(Long instanceId); boolean processInvalid(Long instanceId);
/**
* 获取当前任务的所有办理人
*
* @param taskId 任务id
* @return 结果
*/
List<RemoteUserVo> currentTaskAllUser(Long taskId);
} }

12
dk-api/api-workflow/src/main/java/org/dromara/workflow/api/domain/RemoteFlowNode.java

@ -0,0 +1,12 @@
package org.dromara.workflow.api.domain;
import lombok.Data;
@Data
public class RemoteFlowNode {
private Long definitionId;
private String permission_flag;
}

32
dk-modules/business/src/main/java/org/dromara/business/controller/WebhookController.java → dk-modules/business/src/main/java/org/dromara/business/controller/BusinessHookController.java

@ -4,7 +4,7 @@ package org.dromara.business.controller;
import io.swagger.v3.oas.annotations.tags.Tag; import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.dromara.common.web.core.BaseController; import org.dromara.business.domain.bo.BusinessHookBo;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestBody;
@ -20,15 +20,15 @@ import org.springframework.web.bind.annotation.RestController;
@RequestMapping("/index/hook") @RequestMapping("/index/hook")
@Tag(name = "ZLMediaKit视频流事件回调") @Tag(name = "ZLMediaKit视频流事件回调")
@Slf4j @Slf4j
public class WebhookController { public class BusinessHookController {
/** /**
* 处理播放事件 * 处理播放事件
*/ */
@PostMapping("/on_play") @PostMapping("/on_play")
public String onPlay(@RequestBody String body) { public String onPlay(@RequestBody BusinessHookBo hookPlayBo) {
log.info("on_play event: {}", body); log.info("on_play event: {}", hookPlayBo);
return "{\"code\": 0}"; return "{\"code\": 0}";
} }
@ -37,8 +37,28 @@ public class WebhookController {
* 处理录制 MP4 文件事件 * 处理录制 MP4 文件事件
*/ */
@PostMapping("/on_record_mp4") @PostMapping("/on_record_mp4")
public String onRecordMp4(@RequestBody String body) { public String onRecordMp4(@RequestBody BusinessHookBo businessRecordBo) {
log.info("on_record_mp4 event: {}", body); log.info("on_record_mp4 event: {}", businessRecordBo);
return "{\"code\": 0}";
}
/**
* rtsp/rtmp/rtp 推流事件
*/
@PostMapping("/on_publish")
public String onPublish(@RequestBody BusinessHookBo hookPublishBo) {
log.info("on_publish event: {}", hookPublishBo);
return "{\"code\": 0}";
}
/**
* rtsp/rtmp 流注册或注销时触发此事件
*/
@PostMapping("/on_stream_changed")
public String onStreamChanged(@RequestBody String body) {
log.info("on_stream_changed event: {}", body);
return "{\"code\": 0}"; return "{\"code\": 0}";
} }

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

@ -20,7 +20,7 @@ import java.util.List;
*/ */
@Data @Data
@EqualsAndHashCode(callSuper = true) @EqualsAndHashCode(callSuper = true)
@TableName("business_alert") @TableName(value = "business_alert",autoResultMap = true)
public class BusinessAlert extends BaseEntity { public class BusinessAlert extends BaseEntity {
@Serial @Serial
@ -63,11 +63,7 @@ public class BusinessAlert extends BaseEntity {
*/ */
private String images; private String images;
/**
* 识别类型
*/
@TableField(value = "identify_type",typeHandler = JacksonTypeHandler.class)
private List<String> identifyType;
/** /**
* 纬度 * 纬度
@ -79,6 +75,18 @@ public class BusinessAlert extends BaseEntity {
*/ */
private Long lng; private Long lng;
/**
* 标签名-
*/
private String labelEn;
/**
* 标签名-
*/
private String labelCn;
/** /**
* 预警类型 * 预警类型
*/ */
@ -229,4 +237,13 @@ public class BusinessAlert extends BaseEntity {
@TableField(exist = false) @TableField(exist = false)
private Long flowTaskId; private Long flowTaskId;
@TableField(exist = false)
private Long instanceId;
@TableField(exist = false)
private Boolean button;
@TableField(exist = false)
private String permissions;
} }

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

@ -1,5 +1,6 @@
package org.dromara.business.domain.bo; package org.dromara.business.domain.bo;
import com.alibaba.excel.annotation.ExcelProperty;
import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableField;
import org.dromara.business.domain.BusinessAlert; import org.dromara.business.domain.BusinessAlert;
import org.dromara.common.mybatis.core.domain.BaseEntity; import org.dromara.common.mybatis.core.domain.BaseEntity;
@ -46,10 +47,6 @@ public class BusinessAlertBo {
*/ */
private String images; private String images;
/**
* 识别类型
*/
private List<String> identifyType;
/** /**
* 纬度 * 纬度
@ -194,9 +191,15 @@ public class BusinessAlertBo {
List<Long> deptIdList; List<Long> deptIdList;
/** /**
* 识别类型集合 * 标签名-
*/ */
List<String> alertTypeList; private String labelEn;
/**
* 标签名-
*/
private String labelCn;
/** /**
* *
@ -216,5 +219,10 @@ public class BusinessAlertBo {
private String createTime; private String createTime;
/**
* 岗位编码
*/
private String postCode;
} }

57
dk-modules/business/src/main/java/org/dromara/business/domain/bo/BusinessHookBo.java

@ -0,0 +1,57 @@
package org.dromara.business.domain.bo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
@Data
@Schema(name = "流回调对象")
public class BusinessHookBo {
@Schema(name = "流应用名")
private String app;
@Schema(name = "TCP链接唯一ID")
private String id;
@Schema(name = "播放器ip/推流器ip")
private String ip;
@Schema(name = "播放url参数/推流url参数")
private String params;
@Schema(name = "播放器端口号/推流器端口号")
private String port;
@Schema(name = "播放的协议,可能是rtsp、rtmp、http")
private String schema;
@Schema(name = "流ID")
private String stream;
@Schema(name = "流虚拟主机")
private String vhost;
@Schema(name = "服务器 id,通过配置文件设置")
private String mediaServerId;
@Schema(name = "文件名")
private String file_name;
@Schema(name = "文件绝对路径")
private String file_path;
@Schema(name = "文件大小,单位字节")
private String file_size;
@Schema(name = "文件所在目录路径")
private String folder;
@Schema(name = "开始录制时间戳")
private Integer start_time;
@Schema(name = "录制时长,单位秒")
private Float time_len;
@Schema(name = "http/rtsp/rtmp点播相对url路径")
private String url;
}

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

@ -58,10 +58,6 @@ public class BusinessAlertVo implements Serializable {
private String images; private String images;
/**
* 识别类型
*/
private List<String> identifyType;
/** /**
* 纬度 * 纬度
@ -75,6 +71,18 @@ public class BusinessAlertVo implements Serializable {
@ExcelProperty(value = "精度") @ExcelProperty(value = "精度")
private Long lng; private Long lng;
/**
* 标签名-
*/
private String labelEn;
/**
* 标签名-
*/
@ExcelProperty(value = "标签名-中")
private String labelCn;
/** /**
* 预警类型 * 预警类型
*/ */

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

@ -23,24 +23,16 @@ import java.util.Map;
*/ */
public interface BusinessAlertMapper extends BaseMapperPlus<BusinessAlert, BusinessAlertVo> { public interface BusinessAlertMapper extends BaseMapperPlus<BusinessAlert, BusinessAlertVo> {
@DataPermission(
@DataColumn(key = "deptName", value = "ba.dept_id")
)
Page<BusinessAlert> pageBusinessAlert(Page<BusinessAlert> page, QueryWrapper<BusinessAlert> ew); Page<BusinessAlert> pageBusinessAlert(Page<BusinessAlert> page, QueryWrapper<BusinessAlert> ew);
@DataPermission(
@DataColumn(key = "deptName", value = "ba.dept_id")
)
Page<BusinessAlert> pageAlertFinish(Page<BusinessAlert> page, QueryWrapper<BusinessAlert> ew); Page<BusinessAlert> pageAlertFinish(Page<BusinessAlert> page, QueryWrapper<BusinessAlert> ew);
@DataPermission(
@DataColumn(key = "deptName", value = "ba.dept_id")
)
Page<BusinessAlert> pageAlertTodo(Page<BusinessAlert> page, QueryWrapper<BusinessAlert> ew); Page<BusinessAlert> pageAlertTodo(Page<BusinessAlert> page, QueryWrapper<BusinessAlert> ew);
@DataPermission(
@DataColumn(key = "deptName", value = "ba.dept_id")
)
Page<BusinessAlert> pageBusinessAlertCancel(Page<BusinessAlert> build, QueryWrapper<BusinessAlert> ew); Page<BusinessAlert> pageBusinessAlertCancel(Page<BusinessAlert> build, QueryWrapper<BusinessAlert> ew);
@DataPermission( @DataPermission(

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

@ -18,6 +18,8 @@ import org.dromara.common.core.utils.StreamUtils;
import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.satoken.utils.LoginHelper; import org.dromara.common.satoken.utils.LoginHelper;
import org.dromara.system.api.RemoteLablePostService;
import org.dromara.system.api.domain.vo.RemoteAiLabelPostVo;
import org.dromara.system.api.domain.vo.RemoteUserVo; import org.dromara.system.api.domain.vo.RemoteUserVo;
import org.dromara.system.api.model.PostDTO; import org.dromara.system.api.model.PostDTO;
import org.dromara.workflow.api.RemoteWorkflowService; import org.dromara.workflow.api.RemoteWorkflowService;
@ -28,6 +30,7 @@ import java.util.Collections;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.stream.Collectors;
/** /**
* 预警任务Service业务层处理 * 预警任务Service业务层处理
@ -44,6 +47,9 @@ public class BusinessAlertServiceImpl implements IBusinessAlertService {
@DubboReference @DubboReference
RemoteWorkflowService remoteWorkflowService; RemoteWorkflowService remoteWorkflowService;
@DubboReference
RemoteLablePostService remoteLablePostService;
/** /**
* 新增预警任务 * 新增预警任务
* *
@ -128,6 +134,10 @@ public class BusinessAlertServiceImpl implements IBusinessAlertService {
public TableDataInfo<BusinessAlert> pageBusinessAlertAll(BusinessAlertBo bo, PageQuery pageQuery) { public TableDataInfo<BusinessAlert> pageBusinessAlertAll(BusinessAlertBo bo, PageQuery pageQuery) {
QueryWrapper<BusinessAlert> wrapper = buildQueryWrapper(bo); QueryWrapper<BusinessAlert> wrapper = buildQueryWrapper(bo);
// if (ObjectUtil.isEmpty(wrapper)){
// return new TableDataInfo<>();
// }
Page<BusinessAlert> page = this.baseMapper.pageBusinessAlert(pageQuery.build(), wrapper); Page<BusinessAlert> page = this.baseMapper.pageBusinessAlert(pageQuery.build(), wrapper);
return TableDataInfo.build(page); return TableDataInfo.build(page);
@ -144,6 +154,12 @@ public class BusinessAlertServiceImpl implements IBusinessAlertService {
bo.setHandleType(BusinessStatusEnum.INVALID.getStatus()); bo.setHandleType(BusinessStatusEnum.INVALID.getStatus());
QueryWrapper<BusinessAlert> wrapper = buildQueryWrapper(bo); QueryWrapper<BusinessAlert> wrapper = buildQueryWrapper(bo);
// if (ObjectUtil.isEmpty(wrapper)){
// return new TableDataInfo<>();
// }
wrapper.in("b.flow_status", BusinessStatusEnum.INVALID.getStatus());
Page<BusinessAlert> page = this.baseMapper.pageBusinessAlertCancel(pageQuery.build(), wrapper); Page<BusinessAlert> page = this.baseMapper.pageBusinessAlertCancel(pageQuery.build(), wrapper);
return TableDataInfo.build(page); return TableDataInfo.build(page);
@ -159,9 +175,15 @@ public class BusinessAlertServiceImpl implements IBusinessAlertService {
@Override @Override
public TableDataInfo<BusinessAlert> pageBusinessAlertFinish(BusinessAlertBo bo, PageQuery pageQuery) { public TableDataInfo<BusinessAlert> pageBusinessAlertFinish(BusinessAlertBo bo, PageQuery pageQuery) {
QueryWrapper<BusinessAlert> wrapper = buildQueryWrapper(bo); QueryWrapper<BusinessAlert> wrapper = buildQueryWrapper(bo);
// if (ObjectUtil.isEmpty(wrapper)){
// return new TableDataInfo<>();
// }
buildCommonQueryWrapper(wrapper); buildCommonQueryWrapper(wrapper);
wrapper.in("a.approver", LoginHelper.getUserId()); wrapper.in("a.approver", LoginHelper.getUserId());
wrapper.in("b.flow_status", BusinessStatusEnum.FINISH.getStatus());
Page<BusinessAlert> page = this.baseMapper.pageAlertFinish(pageQuery.build(), wrapper); Page<BusinessAlert> page = this.baseMapper.pageAlertFinish(pageQuery.build(), wrapper);
return TableDataInfo.build(page); return TableDataInfo.build(page);
@ -177,15 +199,21 @@ public class BusinessAlertServiceImpl implements IBusinessAlertService {
@Override @Override
public TableDataInfo<BusinessAlert> pageBusinessAlertTodo(BusinessAlertBo bo, PageQuery pageQuery) { public TableDataInfo<BusinessAlert> pageBusinessAlertTodo(BusinessAlertBo bo, PageQuery pageQuery) {
QueryWrapper<BusinessAlert> wrapper = buildQueryWrapper(bo); QueryWrapper<BusinessAlert> wrapper = buildQueryWrapper(bo);
// if (ObjectUtil.isEmpty(wrapper)){
// return new TableDataInfo<>();
// }
buildCommonQueryWrapper(wrapper); buildCommonQueryWrapper(wrapper);
wrapper.eq("uu.del_flag", 0); wrapper.eq("uu.del_flag", 0);
wrapper.in("uu.type", 1,2,3); wrapper.in("uu.type", 1,2,3);
wrapper.in("uu.processed_by", remoteWorkflowService.getPermissions()); wrapper.in("uu.processed_by", remoteWorkflowService.getPermissions());
wrapper.in("b.flow_status", BusinessStatusEnum.WAITING.getStatus()); wrapper.eq("b.flow_status", BusinessStatusEnum.WAITING.getStatus());
Page<BusinessAlert> page = this.baseMapper.pageAlertTodo(pageQuery.build(), wrapper); Page<BusinessAlert> page = this.baseMapper.pageAlertTodo(pageQuery.build(), wrapper);
List<BusinessAlert> records = page.getRecords(); List<BusinessAlert> records = page.getRecords();
if (CollUtil.isNotEmpty(records)) { if (CollUtil.isNotEmpty(records)) {
List<Long> taskIds = StreamUtils.toList(records, BusinessAlert::getFlowTaskId); List<Long> taskIds = StreamUtils.toList(records, BusinessAlert::getFlowTaskId);
@ -211,14 +239,18 @@ public class BusinessAlertServiceImpl implements IBusinessAlertService {
QueryWrapper<BusinessAlert> wrapper = new QueryWrapper<>(); QueryWrapper<BusinessAlert> wrapper = new QueryWrapper<>();
//根据当前用户职能获取识别类型 //根据当前用户职能获取识别类型
// List<PostDTO> posts = LoginHelper.getLoginUser().getPosts(); // List<RemoteAiLabelPostVo> postVoList = remoteLablePostService.selectLableByList(bo.getPostCode(), LoginHelper.getDeptId());
// if (ObjectUtil.isEmpty(postVoList)) {
// return null;
// }
//
//
// wrapper.in("ba.label_en",StreamUtils.toList(postVoList, RemoteAiLabelPostVo::getLabelEn));
//排除状态为验证状态预警 //排除状态为验证状态预警
wrapper.ne("ba.handle_type", BusinessStatusEnum.VERIFY.getStatus()); wrapper.ne("ba.handle_type", BusinessStatusEnum.VERIFY.getStatus());
if (ObjectUtil.isNotEmpty(bo.getAlertTypeList())){
wrapper.in("ba.alert_type", bo.getAlertTypeList());
}
if (ObjectUtil.isNotEmpty(bo.getHandleType())){ if (ObjectUtil.isNotEmpty(bo.getHandleType())){
wrapper.eq("ba.handle_type", bo.getHandleType()); wrapper.eq("ba.handle_type", bo.getHandleType());

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

@ -21,7 +21,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
select select
ba.*, ba.*,
b.flow_status flowStatus, b.flow_status flowStatus,
b.business_id businessId b.business_id businessId,
b.id instanceId
from dk_business.business_alert ba from dk_business.business_alert ba
left join dk_workflow.flow_instance b on ba.id = b.business_id left join dk_workflow.flow_instance b on ba.id = b.business_id
${ew.getCustomSqlSegment} ${ew.getCustomSqlSegment}
@ -31,7 +32,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
select select
ba.*, ba.*,
b.flow_status flowStatus, b.flow_status flowStatus,
b.business_id businessId b.business_id businessId,
b.id instanceId
from dk_business.business_alert ba from dk_business.business_alert ba
left join dk_workflow.flow_instance b on ba.id = b.business_id left join dk_workflow.flow_instance b on ba.id = b.business_id
${ew.getCustomSqlSegment} ${ew.getCustomSqlSegment}
@ -43,7 +45,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
b.flow_status flowStatus, b.flow_status flowStatus,
b.business_id businessId, b.business_id businessId,
a.approver, a.approver,
a.id flowTaskId a.id flowTaskId,
b.id instanceId
from dk_business.business_alert ba from dk_business.business_alert ba
left join dk_workflow.flow_instance b on ba.id = b.business_id left join dk_workflow.flow_instance b on ba.id = b.business_id
left join dk_workflow.flow_his_task a on a.instance_id = b.id left join dk_workflow.flow_his_task a on a.instance_id = b.id
@ -58,12 +61,15 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
b.flow_status, b.flow_status,
b.business_id, b.business_id,
uu.processed_by approver, uu.processed_by approver,
a.id flowTaskId a.id flowTaskId,
b.id instanceId,
fn.permissions
from dk_business.business_alert ba from dk_business.business_alert ba
left join dk_workflow.flow_instance b on ba.id = b.business_id left join dk_workflow.flow_instance b on ba.id = b.business_id
left join dk_workflow.flow_task a on a.instance_id = b.id left join dk_workflow.flow_task a on a.instance_id = b.id
left join dk_workflow.flow_user uu on uu.associated = a.id left join dk_workflow.flow_user uu on uu.associated = a.id
left join dk_workflow.flow_definition c on a.definition_id = c.id left join dk_workflow.flow_definition c on a.definition_id = c.id
left join dk_workflow.flow_node fn on fn.node_code = b.node_code
${ew.getCustomSqlSegment} ${ew.getCustomSqlSegment}
</select> </select>

1
dk-modules/workflow/src/main/java/org/dromara/workflow/controller/FlwDefinitionController.java

@ -198,5 +198,4 @@ public class FlwDefinitionController extends BaseController {
public R<Boolean> active(@PathVariable Long id, @RequestParam boolean active) { public R<Boolean> active(@PathVariable Long id, @RequestParam boolean active) {
return R.ok(active ? defService.active(id) : defService.unActive(id)); return R.ok(active ? defService.active(id) : defService.unActive(id));
} }
} }

46
dk-modules/workflow/src/main/java/org/dromara/workflow/controller/FlwDepartController.java

@ -0,0 +1,46 @@
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.core.validate.AddGroup;
import org.dromara.workflow.common.ConditionalOnEnable;
import org.dromara.workflow.domain.FlowDepart;
import org.dromara.workflow.service.FlwDepartService;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
@Tag(name = "流程部门管理")
@ConditionalOnEnable
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/depart")
public class FlwDepartController {
private final FlwDepartService flwDepartService;
/**
* 查询流程部门关系
* flowCode
*/
@Operation(summary = "查询流程部门关系",description = "查询流程部门关系")
@GetMapping("/{flowCode}/getInfo")
public R<FlowDepart> getInfo(@PathVariable String flowCode) {
return R.ok(flwDepartService.getInfo(flowCode));
}
/**
* 绑定流程部门关系
* flowCode
*/
@Operation(summary = "绑定流程部门关系",description = "绑定流程部门关系")
@PostMapping("/bind/depart")
public R<FlowDepart> bindDepart(@Validated({AddGroup.class}) @RequestBody FlowDepart flowDepart) {
return R.ok(flwDepartService.bindDepart(flowDepart));
}
}

30
dk-modules/workflow/src/main/java/org/dromara/workflow/controller/FlwTaskController.java

@ -65,6 +65,21 @@ public class FlwTaskController extends BaseController {
return toAjax(flwTaskService.completeTask(completeTaskBo)); return toAjax(flwTaskService.completeTask(completeTaskBo));
} }
/**
* 任务操作
*
* @param bo 参数
* @param taskOperation 操作类型委派 delegateTask转办 transferTask加签 addSignature减签 reductionSignature
*/
@Operation(summary = "任务操作",description = "任务操作",parameters = {
@Parameter(name = "taskOperation", description = "操作类型,委派 delegateTask、转办 transferTask、加签 addSignature、减签 reductionSignature")
})
@RepeatSubmit
@PostMapping("/taskOperation/{taskOperation}")
public R<Void> taskOperation(@Validated @RequestBody TaskOperationBo bo, @PathVariable String taskOperation) {
return toAjax(flwTaskService.taskOperation(bo, taskOperation));
}
/** /**
* 查询当前用户的待办任务 * 查询当前用户的待办任务
* *
@ -148,21 +163,6 @@ public class FlwTaskController extends BaseController {
return R.ok(flwTaskService.terminationTask(bo)); return R.ok(flwTaskService.terminationTask(bo));
} }
/**
* 任务操作
*
* @param bo 参数
* @param taskOperation 操作类型委派 delegateTask转办 transferTask加签 addSignature减签 reductionSignature
*/
@Operation(summary = "任务操作",description = "任务操作",parameters = {
@Parameter(name = "taskOperation", description = "操作类型,委派 delegateTask、转办 transferTask、加签 addSignature、减签 reductionSignature")
})
@RepeatSubmit
@PostMapping("/taskOperation/{taskOperation}")
public R<Void> taskOperation(@Validated @RequestBody TaskOperationBo bo, @PathVariable String taskOperation) {
return toAjax(flwTaskService.taskOperation(bo, taskOperation));
}
/** /**
* 修改任务办理人 * 修改任务办理人
* *

48
dk-modules/workflow/src/main/java/org/dromara/workflow/domain/FlowDepart.java

@ -0,0 +1,48 @@
package org.dromara.workflow.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 jakarta.validation.constraints.NotNull;
import lombok.Data;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.workflow.handler.ListTypeHandler;
import java.util.List;
/**
* 部门流程关系表
*/
@Data
@TableName(value = "flow_depart",autoResultMap = true)
public class FlowDepart {
@TableId(type = IdType.ASSIGN_ID)
private Long id;
/**
* 流程类型
*/
@NotNull(message = "流程类型不能为空", groups = AddGroup.class)
private String flowType;
/**
* 流程编码
*/
@NotNull(message = "流程编码不能为空", groups = AddGroup.class)
private String flowCode;
/**
* 租户编号
*/
private String tenantId;
/**
* 部门id集合
*/
@NotNull(message = "部门id不能为空", groups = AddGroup.class)
@TableField(value = "dept_ids",typeHandler = ListTypeHandler.class)
List<Long> departIds;
}

11
dk-modules/workflow/src/main/java/org/dromara/workflow/domain/bo/BackProcessBo.java

@ -56,11 +56,22 @@ public class BackProcessBo implements Serializable {
*/ */
private String notice; private String notice;
/** /**
* 流程变量 * 流程变量
*/ */
private Map<String, Object> variables; private Map<String, Object> variables;
/**
* 预警类型
*/
private String alertType;
/**
* 是否违建
*/
private Boolean isIllegal;
public Map<String, Object> getVariables() { public Map<String, Object> getVariables() {
if (variables == null) { if (variables == null) {
return new HashMap<>(16); return new HashMap<>(16);

15
dk-modules/workflow/src/main/java/org/dromara/workflow/domain/bo/CompleteTaskBo.java

@ -64,6 +64,21 @@ public class CompleteTaskBo implements Serializable {
*/ */
private String ext; private String ext;
/**
* 预警类型
*/
private String alertType;
/**
* 是否违建
*/
private Boolean isIllegal;
/**
* 选择其他的时候内容
*/
private String alertTypeContent;
public Map<String, Object> getVariables() { public Map<String, Object> getVariables() {
if (variables == null) { if (variables == null) {
return new HashMap<>(16); return new HashMap<>(16);

15
dk-modules/workflow/src/main/java/org/dromara/workflow/domain/bo/TaskOperationBo.java

@ -45,4 +45,19 @@ public class TaskOperationBo implements Serializable {
*/ */
private String message; private String message;
/**
* 预警类型
*/
private String alertType;
/**
* 是否违建
*/
private Boolean isIllegal;
/**
* 选择其他的时候内容
*/
private String alertTypeContent;
} }

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

@ -84,6 +84,11 @@ public class RemoteWorkflowServiceImpl implements RemoteWorkflowService {
return workflowService.processInvalid(instanceId); return workflowService.processInvalid(instanceId);
} }
@Override
public List<RemoteUserVo> currentTaskAllUser(Long taskId) {
return workflowService.currentTaskAllUser(taskId);
}
@Override @Override
public boolean completeTask(RemoteCompleteTask completeTask) { public boolean completeTask(RemoteCompleteTask completeTask) {
return workflowService.completeTask(completeTask); return workflowService.completeTask(completeTask);

51
dk-modules/workflow/src/main/java/org/dromara/workflow/handler/ListTypeHandler.java

@ -0,0 +1,51 @@
package org.dromara.workflow.handler;
import org.apache.commons.lang3.StringUtils;
import org.apache.ibatis.type.JdbcType;
import org.apache.ibatis.type.MappedJdbcTypes;
import org.apache.ibatis.type.MappedTypes;
import org.apache.ibatis.type.TypeHandler;
import org.dromara.workflow.utils.JsonUtil;
import java.sql.CallableStatement;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
@MappedJdbcTypes(JdbcType.VARCHAR)
@MappedTypes({List.class})
public class ListTypeHandler implements TypeHandler<List<Long>> {
@Override
public void setParameter(PreparedStatement ps, int i, List<Long> list, JdbcType jdbcType) throws SQLException {
ps.setString(i, JsonUtil.toJson(list));
}
@Override
public List<Long> getResult(ResultSet rs, String columnName) throws SQLException {
if (StringUtils.isBlank(rs.getString(columnName))) {
return new ArrayList<>();
}
return JsonUtil.jsonToList(rs.getString(columnName), Long.class);
}
@Override
public List<Long> getResult(ResultSet rs, int columnIndex) throws SQLException {
if (StringUtils.isBlank(rs.getString(columnIndex))) {
return new ArrayList<>();
}
return JsonUtil.jsonToList(rs.getString(columnIndex), Long.class);
}
@Override
public List<Long> getResult(CallableStatement cs, int columnIndex) throws SQLException {
String value = cs.getString(columnIndex);
if (StringUtils.isBlank(value)) {
return new ArrayList<>();
}
return JsonUtil.jsonToList(value, Long.class);
}
}

7
dk-modules/workflow/src/main/java/org/dromara/workflow/mapper/FlwDepartMapper.java

@ -0,0 +1,7 @@
package org.dromara.workflow.mapper;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
import org.dromara.workflow.domain.FlowDepart;
public interface FlwDepartMapper extends BaseMapperPlus<FlowDepart, FlowDepart> {
}

3
dk-modules/workflow/src/main/java/org/dromara/workflow/mapper/FlwTaskMapper.java

@ -5,10 +5,12 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Constants; import com.baomidou.mybatisplus.core.toolkit.Constants;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import org.dromara.warm.flow.orm.entity.FlowNode;
import org.dromara.workflow.domain.bo.FlowTaskBo; import org.dromara.workflow.domain.bo.FlowTaskBo;
import org.dromara.workflow.domain.vo.FlowHisTaskVo; import org.dromara.workflow.domain.vo.FlowHisTaskVo;
import org.dromara.workflow.domain.vo.FlowTaskVo; import org.dromara.workflow.domain.vo.FlowTaskVo;
import java.util.LinkedList;
import java.util.List; import java.util.List;
@ -54,4 +56,5 @@ public interface FlwTaskMapper {
* @return 结果 * @return 结果
*/ */
Page<FlowTaskVo> getTaskCopyByPage(@Param("page") Page<FlowTaskVo> page, @Param(Constants.WRAPPER) QueryWrapper<FlowTaskBo> queryWrapper); Page<FlowTaskVo> getTaskCopyByPage(@Param("page") Page<FlowTaskVo> page, @Param(Constants.WRAPPER) QueryWrapper<FlowTaskBo> queryWrapper);
} }

9
dk-modules/workflow/src/main/java/org/dromara/workflow/service/FlwDepartService.java

@ -0,0 +1,9 @@
package org.dromara.workflow.service;
import org.dromara.workflow.domain.FlowDepart;
public interface FlwDepartService {
FlowDepart getInfo(String flowCode);
FlowDepart bindDepart(FlowDepart flowDepart);
}

2
dk-modules/workflow/src/main/java/org/dromara/workflow/service/IFlwTaskService.java

@ -8,6 +8,7 @@ import org.dromara.warm.flow.core.entity.Node;
import org.dromara.warm.flow.core.entity.Task; import org.dromara.warm.flow.core.entity.Task;
import org.dromara.warm.flow.core.service.impl.TaskServiceImpl; import org.dromara.warm.flow.core.service.impl.TaskServiceImpl;
import org.dromara.warm.flow.orm.entity.FlowHisTask; import org.dromara.warm.flow.orm.entity.FlowHisTask;
import org.dromara.warm.flow.orm.entity.FlowNode;
import org.dromara.warm.flow.orm.entity.FlowTask; import org.dromara.warm.flow.orm.entity.FlowTask;
import org.dromara.workflow.api.domain.RemoteStartProcessReturn; import org.dromara.workflow.api.domain.RemoteStartProcessReturn;
import org.dromara.workflow.domain.bo.*; import org.dromara.workflow.domain.bo.*;
@ -200,4 +201,5 @@ public interface IFlwTaskService {
* 返回当前用户权限集合 * 返回当前用户权限集合
*/ */
List<String> getPermissions(); List<String> getPermissions();
} }

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

@ -1,5 +1,6 @@
package org.dromara.workflow.service; package org.dromara.workflow.service;
import org.dromara.system.api.domain.vo.RemoteUserVo;
import org.dromara.workflow.api.domain.RemoteCompleteTask; import org.dromara.workflow.api.domain.RemoteCompleteTask;
import org.dromara.workflow.api.domain.RemoteStartProcess; import org.dromara.workflow.api.domain.RemoteStartProcess;
import org.dromara.workflow.api.domain.RemoteStartProcessReturn; import org.dromara.workflow.api.domain.RemoteStartProcessReturn;
@ -90,4 +91,6 @@ public interface WorkflowService {
* @return * @return
*/ */
boolean processInvalid(Long instanceId); boolean processInvalid(Long instanceId);
List<RemoteUserVo> currentTaskAllUser(Long taskId);
} }

37
dk-modules/workflow/src/main/java/org/dromara/workflow/service/impl/FlwDepartServiceImpl.java

@ -0,0 +1,37 @@
package org.dromara.workflow.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import lombok.RequiredArgsConstructor;
import org.dromara.workflow.domain.FlowDepart;
import org.dromara.workflow.mapper.FlwDepartMapper;
import org.dromara.workflow.service.FlwDepartService;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@Service
@RequiredArgsConstructor
public class FlwDepartServiceImpl extends ServiceImpl<FlwDepartMapper, FlowDepart> implements FlwDepartService {
@Override
public FlowDepart getInfo(String flowCode) {
LambdaQueryWrapper<FlowDepart> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(FlowDepart::getFlowCode, flowCode);
return this.baseMapper.selectOne(wrapper);
}
@Transactional(rollbackFor = Exception.class)
@Override
public FlowDepart bindDepart(FlowDepart flowDepart) {
//首先清楚原来的
LambdaQueryWrapper<FlowDepart> updateWrapper = new LambdaQueryWrapper<>();
updateWrapper.eq(FlowDepart::getFlowCode, flowDepart.getFlowCode());
this.baseMapper.delete(updateWrapper);
this.baseMapper.insert(flowDepart);
return flowDepart;
}
}

21
dk-modules/workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskServiceImpl.java

@ -4,6 +4,7 @@ import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.convert.Convert; import cn.hutool.core.convert.Convert;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.incrementer.IdentifierGenerator; import com.baomidou.mybatisplus.core.incrementer.IdentifierGenerator;
@ -92,9 +93,6 @@ public class FlwTaskServiceImpl implements IFlwTaskService {
@DubboReference @DubboReference
private RemoteUserService remoteUserService; private RemoteUserService remoteUserService;
@DubboReference(stub = "true")
private final RemoteMessageService remoteMessageService;
@Autowired @Autowired
private ApplicationContext applicationContext; private ApplicationContext applicationContext;
@ -183,6 +181,14 @@ public class FlwTaskServiceImpl implements IFlwTaskService {
flowParams.message(completeTaskBo.getMessage()); flowParams.message(completeTaskBo.getMessage());
flowParams.flowStatus(BusinessStatusEnum.WAITING.getStatus()).hisStatus(TaskStatusEnum.PASS.getStatus()); flowParams.flowStatus(BusinessStatusEnum.WAITING.getStatus()).hisStatus(TaskStatusEnum.PASS.getStatus());
// 构建 JSON 对象
JSONObject extJson = new JSONObject();
extJson.put("isIllegal", ObjectUtil.isNotEmpty(completeTaskBo.getIsIllegal())?completeTaskBo.getIsIllegal():false);
extJson.put("alertType", completeTaskBo.getAlertType());
extJson.put("alertTypeContent", completeTaskBo.getAlertTypeContent());
flowParams.ext(extJson.toJSONString());
flowParams.hisTaskExt(completeTaskBo.getFileId()); flowParams.hisTaskExt(completeTaskBo.getFileId());
// 执行任务跳转,并根据返回的处理人设置下一步处理人 // 执行任务跳转,并根据返回的处理人设置下一步处理人
Instance instance = taskService.skip(taskId, flowParams); Instance instance = taskService.skip(taskId, flowParams);
@ -587,6 +593,15 @@ public class FlwTaskServiceImpl implements IFlwTaskService {
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public boolean taskOperation(TaskOperationBo bo, String taskOperation) { public boolean taskOperation(TaskOperationBo bo, String taskOperation) {
FlowParams flowParams = new FlowParams(); FlowParams flowParams = new FlowParams();
// 构建 JSON 对象
JSONObject extJson = new JSONObject();
extJson.put("isIllegal", ObjectUtil.isNotEmpty(bo.getIsIllegal())?bo.getIsIllegal():false);
extJson.put("alertType", bo.getAlertType());
extJson.put("alertTypeContent", bo.getAlertTypeContent());
flowParams.ext(extJson.toJSONString());
flowParams.message(bo.getMessage()); flowParams.message(bo.getMessage());
if (LoginHelper.isSuperAdmin() || LoginHelper.isTenantAdmin()) { if (LoginHelper.isSuperAdmin() || LoginHelper.isTenantAdmin()) {
flowParams.ignore(true); flowParams.ignore(true);

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

@ -4,6 +4,7 @@ import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.dromara.common.core.utils.StringUtils; import org.dromara.common.core.utils.StringUtils;
import org.dromara.system.api.domain.vo.RemoteUserVo;
import org.dromara.warm.flow.orm.entity.FlowInstance; import org.dromara.warm.flow.orm.entity.FlowInstance;
import org.dromara.workflow.api.domain.RemoteCompleteTask; import org.dromara.workflow.api.domain.RemoteCompleteTask;
import org.dromara.workflow.api.domain.RemoteStartProcess; import org.dromara.workflow.api.domain.RemoteStartProcess;
@ -142,4 +143,9 @@ public class WorkflowServiceImpl implements WorkflowService {
flowInvalidBo.setId(instanceId); flowInvalidBo.setId(instanceId);
return flwInstanceService.processInvalid(flowInvalidBo); return flwInstanceService.processInvalid(flowInvalidBo);
} }
@Override
public List<RemoteUserVo> currentTaskAllUser(Long taskId) {
return flwTaskService.currentTaskAllUser(taskId);
}
} }

126
dk-modules/workflow/src/main/java/org/dromara/workflow/utils/JsonUtil.java

@ -0,0 +1,126 @@
package org.dromara.workflow.utils;
import cn.hutool.core.util.ObjectUtil;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.JavaType;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.apache.commons.lang3.StringUtils;
import java.lang.reflect.Field;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
/**
* 定义响应结构
*/
public class JsonUtil {
private static ObjectMapper MAPPER;
static{
MAPPER=new ObjectMapper();
}
/**
* 将对象转换成json字符串
* @param data
* @return
*/
public static String toJson(Object data){
String string = null;
try {
string = MAPPER.writeValueAsString(data);
if(StringUtils.isEmpty(string)){
return null;
}
return string;
} catch (JsonProcessingException e) {
e.printStackTrace();
return null;
}
}
/**
* 将json结果集转化为对象
*
* @param jsonData json数据
* @return
*/
public static <T> T jsonToPojo(String jsonData, Class<T> beanType) {
try {
T t = MAPPER.readValue(jsonData, beanType);
return t;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
/**
* 将json数据转换成pojo对象list
* <p>Title: jsonToList</p>
* <p>Description: </p>
* @param jsonData
* @param beanType
* @return
*/
public static <T>List<T> jsonToList(String jsonData, Class<T> beanType) {
JavaType javaType = MAPPER.getTypeFactory().constructParametricType(List.class, beanType);
try {
List<T> list = MAPPER.readValue(jsonData, javaType);
return list;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
/**
* 将Object对象里面的属性和值转化成Map对象
*
* @param obj
* @return
* @throws IllegalAccessException
*/
public static Map<String, Object> objectToMap(Object obj){
try {
Map<String, Object> map = new HashMap<String,Object>();
Class<?> clazz = obj.getClass();
for (Field field : clazz.getDeclaredFields()) {
field.setAccessible(true);
String fieldName = field.getName();
if(ObjectUtil.isNotEmpty(field.get(obj))){
Object value = field.get(obj);
map.put(fieldName, value);
}else{
map.put(fieldName, "");
}
}
return map;
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
public static Map<String, Object> jsonToMap(String json){
try {
return MAPPER.readValue(json, new TypeReference<Map<String, Object>>(){});
} catch (JsonProcessingException e) {
e.printStackTrace();
return null;
}
}
public static LinkedHashMap<String, String> jsonToStrMap(String json){
try {
return MAPPER.readValue(json, new TypeReference<LinkedHashMap<String, String>>(){});
} catch (JsonProcessingException e) {
e.printStackTrace();
return null;
}
}
}

8
dk-modules/workflow/src/main/resources/mapper/workflow/FlwDepartMapper.xml

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

4
pom.xml

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

Loading…
Cancel
Save