From bb0b68b44afb7ac9a4d65dafd919a0f69cb82788 Mon Sep 17 00:00:00 2001 From: zuoqinbo Date: Thu, 16 Nov 2023 17:04:51 +0800 Subject: [PATCH] =?UTF-8?q?feat:1.=E8=8E=B7=E5=8F=96=E6=B5=81=E7=A8=8B?= =?UTF-8?q?=E6=A8=A1=E5=9E=8B=E5=9F=BA=E6=9C=AC=E4=BF=A1=E6=81=AF=E5=88=97?= =?UTF-8?q?=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sql/init.sql | 22 ++- .../client/feign/manage/ProcessManageApi.java | 39 +++++ .../feign/manage/ProcessOwnBusinessApi.java | 77 ---------- .../bpmn/basic/ProcessBasicInfoQuery.java | 37 +++++ .../bpmn/basic/ProcessBasicInfoResp.java | 75 ++++++++++ .../business/ProcessOwnBusinessQuery.java | 47 ------ .../business/ProcessOwnBusinessRequest.java | 38 ----- .../bpmn/business/ProcessOwnBusinessResp.java | 44 ------ .../core/repository/ProcModelExtDao.java | 18 +++ .../core/repository/entity/ProcModelExt.java | 40 +++++ .../repository/entity/ProcessOwnBusiness.java | 63 -------- .../repository/mapper/ProcModelExtMapper.java | 17 +++ .../mapper/ProcessOwnBusinessMapper.java | 16 -- .../service/ProcessOwnBusinessService.java | 26 ---- .../business/ProcessBasicInfoService.java | 109 ++++++++++++++ .../service/impl/ProcessOwnBusinessImpl.java | 137 ------------------ .../business/ProcessBasicInfoController.java | 46 ++++++ .../web/business/ProcessConfigController.java | 7 +- .../ProcessOwnBusinessController.java | 67 --------- 19 files changed, 397 insertions(+), 528 deletions(-) create mode 100644 workflow-engine-api/src/main/java/cn/axzo/workflow/client/feign/manage/ProcessManageApi.java delete mode 100644 workflow-engine-api/src/main/java/cn/axzo/workflow/client/feign/manage/ProcessOwnBusinessApi.java create mode 100644 workflow-engine-common/src/main/java/cn/axzo/workflow/common/model/request/bpmn/basic/ProcessBasicInfoQuery.java create mode 100644 workflow-engine-common/src/main/java/cn/axzo/workflow/common/model/request/bpmn/basic/ProcessBasicInfoResp.java delete mode 100644 workflow-engine-common/src/main/java/cn/axzo/workflow/common/model/request/bpmn/business/ProcessOwnBusinessQuery.java delete mode 100644 workflow-engine-common/src/main/java/cn/axzo/workflow/common/model/request/bpmn/business/ProcessOwnBusinessRequest.java delete mode 100644 workflow-engine-common/src/main/java/cn/axzo/workflow/common/model/request/bpmn/business/ProcessOwnBusinessResp.java create mode 100644 workflow-engine-core/src/main/java/cn/axzo/workflow/core/repository/ProcModelExtDao.java create mode 100644 workflow-engine-core/src/main/java/cn/axzo/workflow/core/repository/entity/ProcModelExt.java delete mode 100644 workflow-engine-core/src/main/java/cn/axzo/workflow/core/repository/entity/ProcessOwnBusiness.java create mode 100644 workflow-engine-core/src/main/java/cn/axzo/workflow/core/repository/mapper/ProcModelExtMapper.java delete mode 100644 workflow-engine-core/src/main/java/cn/axzo/workflow/core/repository/mapper/ProcessOwnBusinessMapper.java delete mode 100644 workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/ProcessOwnBusinessService.java create mode 100644 workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/business/ProcessBasicInfoService.java delete mode 100644 workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/impl/ProcessOwnBusinessImpl.java create mode 100644 workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/web/business/ProcessBasicInfoController.java delete mode 100644 workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/web/business/ProcessOwnBusinessController.java diff --git a/sql/init.sql b/sql/init.sql index f57f79084..86a2388d3 100644 --- a/sql/init.sql +++ b/sql/init.sql @@ -1,15 +1,13 @@ -CREATE TABLE IF NOT EXISTS axzo_process_own_business +CREATE TABLE IF NOT EXISTS workflow_proc_model_ext ( - id bigint auto_increment comment '主键', - business_id varchar(32) not null comment '流程所属业务ID', - business_name varchar(50) not null comment '流程所属业务名称', - workbench varchar(20) not null comment '工作台名称', - creator varchar(20) not null comment '创建人ID', - is_delete tinyint default 0 not null comment '未删除0,删除1', - create_at datetime default CURRENT_TIMESTAMP not null comment '创建时间', - update_at datetime default CURRENT_TIMESTAMP not null comment '更新时间', + id bigint auto_increment comment '主键', + proc_model_id varchar(100) not null comment '流程模型ID', + status tinyint(1) not null comment '状态:1、启用、0、停用', + is_delete tinyint default 0 not null comment '删除状态:未删除0,删除1', + create_at datetime default CURRENT_TIMESTAMP not null comment '创建时间', + update_at datetime default CURRENT_TIMESTAMP not null comment '更新时间', PRIMARY KEY (`id`) ) ENGINE = InnoDB - DEFAULT CHARSET = utf8 comment '流程所属业务表'; -create index idx_axzo_process_own_business - on axzo_process_own_business (business_id); + DEFAULT CHARSET = utf8 comment '流程模型信息扩展表'; +create index idx_proc_model_id + on workflow_proc_model_ext (proc_model_id); diff --git a/workflow-engine-api/src/main/java/cn/axzo/workflow/client/feign/manage/ProcessManageApi.java b/workflow-engine-api/src/main/java/cn/axzo/workflow/client/feign/manage/ProcessManageApi.java new file mode 100644 index 000000000..b1aac6894 --- /dev/null +++ b/workflow-engine-api/src/main/java/cn/axzo/workflow/client/feign/manage/ProcessManageApi.java @@ -0,0 +1,39 @@ +package cn.axzo.workflow.client.feign.manage; + +import cn.axzo.framework.domain.web.result.ApiPageResult; +import cn.axzo.framework.domain.web.result.ApiResult; +import cn.axzo.workflow.common.model.request.bpmn.basic.ProcessBasicInfoQuery; +import cn.axzo.workflow.common.model.request.bpmn.basic.ProcessBasicInfoResp; +import cn.axzo.workflow.common.model.response.BpmPageResult; +import cn.axzo.workflow.common.model.response.config.BpmnButtonResp; +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestParam; + +import java.util.List; + + +/** + * OMS流程业务管理API + * + * @author zuoqinbo + * @version V1.0 + * @date 2023/11/6 16:01 + */ + +@FeignClient(name = "workflow-engine", url = "${axzo.service.workflow-engine:http://workflow-engine:8080}") +public interface ProcessManageApi { + + /** + * 获取流程基本信息列表 + * + * @param basicInfoQuery 查询流程基本信息条件 + * @return 流程基本信息列表 + */ + @GetMapping("/api/process/basic/list") + ApiPageResult getProcessBasicInfos(@Validated @RequestBody ProcessBasicInfoQuery basicInfoQuery); + + +} diff --git a/workflow-engine-api/src/main/java/cn/axzo/workflow/client/feign/manage/ProcessOwnBusinessApi.java b/workflow-engine-api/src/main/java/cn/axzo/workflow/client/feign/manage/ProcessOwnBusinessApi.java deleted file mode 100644 index 3e31bdac4..000000000 --- a/workflow-engine-api/src/main/java/cn/axzo/workflow/client/feign/manage/ProcessOwnBusinessApi.java +++ /dev/null @@ -1,77 +0,0 @@ -package cn.axzo.workflow.client.feign.manage; - -import cn.axzo.framework.domain.web.result.ApiPageResult; -import cn.axzo.framework.domain.web.result.ApiResult; -import cn.axzo.workflow.common.model.request.bpmn.business.ProcessOwnBusinessQuery; -import cn.axzo.workflow.common.model.request.bpmn.business.ProcessOwnBusinessRequest; -import cn.axzo.workflow.common.model.request.bpmn.business.ProcessOwnBusinessResp; -import org.springframework.cloud.openfeign.FeignClient; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; - -import javax.validation.constraints.NotBlank; - - -/** - * OMS流程业务管理API - * - * @author zuoqinbo - * @version V1.0 - * @date 2023/11/6 16:01 - */ - -@FeignClient(name = "workflow-engine", url = "${axzo.service.workflow-engine:http://workflow-engine:8080}") -public interface ProcessOwnBusinessApi { - - /** - * 创建流程所属业务 - * - * @param processOwnBusinessRequest 新增流程所属业务信息 - * @return 流程所属业务成功创建信息 - */ - @PostMapping("/api/process/own/business/create") - ApiResult createProcessOwnBusiness(@RequestBody @Validated ProcessOwnBusinessRequest processOwnBusinessRequest); - - /** - * 更新流程所属业务 - * - * @param processOwnBusinessRequest 更新流程所属业务信息参数 - * @return 流程所属业务成功更新信息 - */ - @PostMapping("api/process/own/business/update") - ApiResult updateProcessOwnBusiness(@RequestBody @Validated ProcessOwnBusinessRequest processOwnBusinessRequest); - - - /** - * 删除流程所属业务信息 - * 校验 流程模版是否有关联该业务 - * 该业务下已绑定流程模版,不可删除! - * @param businessId 业务流程Id - * @return 流程所属业务信息 - */ - @DeleteMapping("api/process/own/business/{businessId}") - ApiResult deleteProcessOwnBusiness(@NotBlank(message = "businessId不能为空") @PathVariable("businessId") String businessId); - - - /** - * 查询流程所属业务信息 - * - * @param businessId 业务流程Id - * @return 流程所属业务信息 - */ - @GetMapping("api/process/own/business/{businessId}") - ApiResult queryProcessOwnBusiness(@NotBlank(message = "businessId不能为空") @PathVariable("businessId") String businessId); - - - /** - * 查询流程所属业务列表 - * 支持分页 - * - * @param processOwnBusinessQuery 流程所属业务查询条件 - * @return 流程所属业务列表信息 - */ - @PostMapping("api/process/own/business/page") - ApiPageResult queryProcessOwnBusinessList(@RequestBody ProcessOwnBusinessQuery processOwnBusinessQuery); - - -} diff --git a/workflow-engine-common/src/main/java/cn/axzo/workflow/common/model/request/bpmn/basic/ProcessBasicInfoQuery.java b/workflow-engine-common/src/main/java/cn/axzo/workflow/common/model/request/bpmn/basic/ProcessBasicInfoQuery.java new file mode 100644 index 000000000..fe727b4cf --- /dev/null +++ b/workflow-engine-common/src/main/java/cn/axzo/workflow/common/model/request/bpmn/basic/ProcessBasicInfoQuery.java @@ -0,0 +1,37 @@ +package cn.axzo.workflow.common.model.request.bpmn.basic; + +import cn.axzo.workflow.common.model.request.BpmPageParam; +import lombok.Data; + +import java.util.List; + +/** + * yoke + * + * @author zuoqinbo + * @version V1.0 + * @date 2023/11/15 17:20 + */ +@Data +public class ProcessBasicInfoQuery extends BpmPageParam { + /** + * 流程名称 + * 模糊查询 + */ + private String processName; + + + /** + * 流程所属业务ID列表 + */ + private List businessIdList; + + + /** + * 流程状态 1、开启 0、关闭 + * + */ + private Integer status; + + +} diff --git a/workflow-engine-common/src/main/java/cn/axzo/workflow/common/model/request/bpmn/basic/ProcessBasicInfoResp.java b/workflow-engine-common/src/main/java/cn/axzo/workflow/common/model/request/bpmn/basic/ProcessBasicInfoResp.java new file mode 100644 index 000000000..7ef7e57f1 --- /dev/null +++ b/workflow-engine-common/src/main/java/cn/axzo/workflow/common/model/request/bpmn/basic/ProcessBasicInfoResp.java @@ -0,0 +1,75 @@ +package cn.axzo.workflow.common.model.request.bpmn.basic; + +import lombok.Data; + +import java.util.Date; + +/** + * yoke + * + * @author zuoqinbo + * @version V1.0 + * @date 2023/11/15 17:20 + */ +@Data +public class ProcessBasicInfoResp { + + /** + * 流程ID + * 模糊查询 + */ + private String processModelId; + + /** + * 流程名称 + * 模糊查询 + */ + private String processName; + + + /** + * 流程所属业务 + * 模糊查询 + */ + private String ownBusiness; + + + + /** + * 流程所属业务ID列表 + */ + private String ownBusinessId; + + + + /** + * 流程工作台ID + */ + private String workBenchId; + + + /** + * 流程工作台名称 + */ + private String workBenchName; + + /** + * 流程状态 1、开启 0、关闭 + * + */ + private Integer status; + + + /** + * 当前版本号 + */ + private String version; + + + /** + * 最后更新时间 + */ + private Date updateTime; + + +} diff --git a/workflow-engine-common/src/main/java/cn/axzo/workflow/common/model/request/bpmn/business/ProcessOwnBusinessQuery.java b/workflow-engine-common/src/main/java/cn/axzo/workflow/common/model/request/bpmn/business/ProcessOwnBusinessQuery.java deleted file mode 100644 index a244808ae..000000000 --- a/workflow-engine-common/src/main/java/cn/axzo/workflow/common/model/request/bpmn/business/ProcessOwnBusinessQuery.java +++ /dev/null @@ -1,47 +0,0 @@ -package cn.axzo.workflow.common.model.request.bpmn.business; - -import cn.axzo.framework.domain.page.PageRequest; -import io.swagger.annotations.ApiModel; -import lombok.Data; - -import javax.validation.constraints.NotEmpty; - -/** - * 流程所属业务列表查询 - * - * @author zuoqinbo - * @version V1.0 - * @date 2023/11/6 16:01 - */ -@ApiModel("流程所属业务列表查询") -@Data -public class ProcessOwnBusinessQuery { - - /** - * 流程定义的 id - */ - @NotEmpty(message = "分页参数Page不能为空") - private Integer pageNo = 1; - - /** - * 分页参数PageSize - */ - @NotEmpty(message = "分页参数PageSize不能为空") - private Integer pageSize = 10; - - /** - * 流程所属业务Id - */ - private String businessId; - - /** - * 流程所属业务名称 - */ - private String businessName; - - /** - * 所属工作台 - */ - private String workbench; - -} diff --git a/workflow-engine-common/src/main/java/cn/axzo/workflow/common/model/request/bpmn/business/ProcessOwnBusinessRequest.java b/workflow-engine-common/src/main/java/cn/axzo/workflow/common/model/request/bpmn/business/ProcessOwnBusinessRequest.java deleted file mode 100644 index 726298230..000000000 --- a/workflow-engine-common/src/main/java/cn/axzo/workflow/common/model/request/bpmn/business/ProcessOwnBusinessRequest.java +++ /dev/null @@ -1,38 +0,0 @@ -package cn.axzo.workflow.common.model.request.bpmn.business; - -import io.swagger.annotations.ApiModel; -import lombok.Data; -import org.hibernate.validator.constraints.Length; - -import javax.validation.constraints.NotEmpty; - -/** - * 流程所属业务请求 - * - * @author zuoqinbo - * @version V1.0 - * @date 2023/11/6 16:01 - */ -@ApiModel("流程所属业务请求") -@Data -public class ProcessOwnBusinessRequest { - - /** - * 流程所属业务ID - */ - private String businessId; - - /** - * 流程所属业务名称 - */ - @NotEmpty(message = "业务名称不能为空") - @Length(max = 20, message = "业务名称最长为20个字符") - private String businessName; - - /** - * 流程所属业务工作台 - */ - @NotEmpty(message = "所属工作台") - private String workbench; - -} diff --git a/workflow-engine-common/src/main/java/cn/axzo/workflow/common/model/request/bpmn/business/ProcessOwnBusinessResp.java b/workflow-engine-common/src/main/java/cn/axzo/workflow/common/model/request/bpmn/business/ProcessOwnBusinessResp.java deleted file mode 100644 index 258337f18..000000000 --- a/workflow-engine-common/src/main/java/cn/axzo/workflow/common/model/request/bpmn/business/ProcessOwnBusinessResp.java +++ /dev/null @@ -1,44 +0,0 @@ -package cn.axzo.workflow.common.model.request.bpmn.business; - -import io.swagger.annotations.ApiModel; -import lombok.Data; - -import javax.validation.constraints.NotEmpty; -import java.util.Date; - -/** - * 流程所属业务响应 - * - * @author zuoqinbo - * @version V1.0 - * @date 2023/11/6 16:01 - */ -@ApiModel("流程所属业务响应") -@Data -public class ProcessOwnBusinessResp { - - /** - * 流程定义的 id - */ - private String businessId; - /** - * 流程定义的标识 - */ - private String businessName; - - /** - * 所属工作台 - */ - private String workbench; - - /** - * 最后更新人 - */ - private String creator; - - /** - * 最后更新时间 - */ - private Date updateAt; - -} diff --git a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/repository/ProcModelExtDao.java b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/repository/ProcModelExtDao.java new file mode 100644 index 000000000..3b4f3f0b7 --- /dev/null +++ b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/repository/ProcModelExtDao.java @@ -0,0 +1,18 @@ +package cn.axzo.workflow.core.repository; + +import cn.axzo.workflow.core.repository.entity.ProcModelExt; +import cn.axzo.workflow.core.repository.mapper.ProcModelExtMapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Repository; + +/** + * ProcModelExtDao + * + * @author zuoqinbo + * @version V1.0 + * @date 2023/10/10 10:06 + */ +@Repository("procModelExtDao") +public class ProcModelExtDao extends ServiceImpl { + +} diff --git a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/repository/entity/ProcModelExt.java b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/repository/entity/ProcModelExt.java new file mode 100644 index 000000000..37f0a8627 --- /dev/null +++ b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/repository/entity/ProcModelExt.java @@ -0,0 +1,40 @@ +package cn.axzo.workflow.core.repository.entity; + +import cn.axzo.framework.data.mybatisplus.model.BaseEntity; +import cn.axzo.framework.data.mybatisplus.model.BaseOwnEntity; +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.ToString; + + +/** + * 流程模型扩展表 + * + * @author zuoqinbo + * @version V1.0 + * @date 2023/10/9 16:01 + */ +@EqualsAndHashCode(callSuper = true) +@TableName(value = "workflow_proc_model_ext", autoResultMap = true) +@Data +@ToString(callSuper = true) +public class ProcModelExt extends BaseEntity { + + private static final long serialVersionUID = 1L; + + /** + * 流程模型ID + */ + @TableField("proc_model_id") + private String procModelId; + + /** + * 模型状态(0正常 1停用) + */ + @TableField("status") + private Integer status; + +} diff --git a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/repository/entity/ProcessOwnBusiness.java b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/repository/entity/ProcessOwnBusiness.java deleted file mode 100644 index eac0993ee..000000000 --- a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/repository/entity/ProcessOwnBusiness.java +++ /dev/null @@ -1,63 +0,0 @@ -package cn.axzo.workflow.core.repository.entity; - -import cn.axzo.framework.data.mybatisplus.model.BaseEntity; -import cn.axzo.framework.data.mybatisplus.model.BaseOwnEntity; -import com.baomidou.mybatisplus.annotation.FieldFill; -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler; -import lombok.Data; -import lombok.EqualsAndHashCode; -import lombok.ToString; -import org.apache.ibatis.type.DateTypeHandler; -import org.springframework.format.annotation.DateTimeFormat; - -import java.io.Serializable; -import java.time.LocalDateTime; -import java.util.Date; -import java.util.List; - - -/** - * ProcessOwnBusiness - * - * @author zuoqinbo - * @version V1.0 - * @date 2023/11/6 17:18 - */ -@EqualsAndHashCode(callSuper = true) -@TableName(value = "axzo_process_own_business", autoResultMap = true) -@Data -@ToString(callSuper = true) -public class ProcessOwnBusiness extends BaseEntity implements Serializable { - - private static final long serialVersionUID = 1L; - /** - * 流程所属业务ID - */ - @TableField("business_id") - private String businessId; - - /** - * 流程所属业务名称 - */ - @TableField("business_name") - private String businessName; - - - /** - * 流程所属业务工作台 - */ - @TableField("workbench") - private String workbench; - - - /** - * creator - */ - @TableField("creator") - private String creator; - - -} diff --git a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/repository/mapper/ProcModelExtMapper.java b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/repository/mapper/ProcModelExtMapper.java new file mode 100644 index 000000000..ff8b1f7c3 --- /dev/null +++ b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/repository/mapper/ProcModelExtMapper.java @@ -0,0 +1,17 @@ +package cn.axzo.workflow.core.repository.mapper; + +import cn.axzo.workflow.core.repository.entity.ProcModelExt; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + + +/** + * ProcModelExtMapper + * + * @author zuoqinbo + * @version V1.0 + * @date 2023/10/10 10:06 + */ +public interface ProcModelExtMapper extends BaseMapper { + +} + diff --git a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/repository/mapper/ProcessOwnBusinessMapper.java b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/repository/mapper/ProcessOwnBusinessMapper.java deleted file mode 100644 index 72718c00d..000000000 --- a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/repository/mapper/ProcessOwnBusinessMapper.java +++ /dev/null @@ -1,16 +0,0 @@ -package cn.axzo.workflow.core.repository.mapper; - -import cn.axzo.workflow.core.repository.entity.ProcessOwnBusiness; -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import org.apache.ibatis.annotations.Mapper; - -/** - * workflow-engine - * - * @author zuoqinbo - * @version V1.0 - * @date 2023/11/6 17:18 - */ -@Mapper -public interface ProcessOwnBusinessMapper extends BaseMapper { -} diff --git a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/ProcessOwnBusinessService.java b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/ProcessOwnBusinessService.java deleted file mode 100644 index 4dc711722..000000000 --- a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/ProcessOwnBusinessService.java +++ /dev/null @@ -1,26 +0,0 @@ -package cn.axzo.workflow.core.service; - -import cn.axzo.framework.domain.page.PageResp; -import cn.axzo.workflow.common.model.request.bpmn.business.ProcessOwnBusinessQuery; -import cn.axzo.workflow.common.model.request.bpmn.business.ProcessOwnBusinessRequest; -import cn.axzo.workflow.common.model.request.bpmn.business.ProcessOwnBusinessResp; - -/** - * workflow-engine - * - * @author zuoqinbo - * @version V1.0 - * @date 2023/11/6 16:55 - */ -public interface ProcessOwnBusinessService { - - PageResp queryProcessOwnBusinessList(ProcessOwnBusinessQuery processOwnBusinessQuery); - - ProcessOwnBusinessResp queryProcessOwnBusiness(String businessId); - - void deleteProcessOwnBusiness(String businessId); - - ProcessOwnBusinessResp updateProcessOwnBusiness(ProcessOwnBusinessRequest processOwnBusinessRequest); - - ProcessOwnBusinessResp createProcessOwnBusiness(ProcessOwnBusinessRequest processOwnBusinessRequest); -} diff --git a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/business/ProcessBasicInfoService.java b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/business/ProcessBasicInfoService.java new file mode 100644 index 000000000..a301e16f7 --- /dev/null +++ b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/business/ProcessBasicInfoService.java @@ -0,0 +1,109 @@ +package cn.axzo.workflow.core.service.business; + +import cn.axzo.workflow.common.model.request.bpmn.basic.ProcessBasicInfoQuery; +import cn.axzo.workflow.common.model.request.bpmn.basic.ProcessBasicInfoResp; +import cn.axzo.workflow.common.model.response.BpmPageResult; +import cn.axzo.workflow.core.repository.ProcModelExtDao; +import cn.axzo.workflow.core.repository.entity.ProcModelExt; +import com.google.common.collect.Lists; +import org.flowable.engine.ManagementService; +import org.flowable.engine.RepositoryService; +import org.flowable.engine.history.NativeHistoricProcessInstanceQuery; +import org.flowable.engine.impl.persistence.entity.ModelEntity; +import org.flowable.engine.repository.Model; +import org.flowable.engine.repository.NativeModelQuery; +import org.springframework.context.annotation.Lazy; +import org.springframework.stereotype.Service; +import org.springframework.util.CollectionUtils; +import org.springframework.util.StringUtils; + +import javax.annotation.Resource; +import java.util.List; + +import static cn.axzo.workflow.core.common.utils.BpmnNativeQueryUtil.countSql; +import static cn.axzo.workflow.core.common.utils.BpmnNativeQueryUtil.sqlConnectors; + +/** + * workflow-engine + * + * @author zuoqinbo + * @version V1.0 + * @date 2023/11/16 10:06 + */ +@Service +public class ProcessBasicInfoService { + + @Resource + private RepositoryService repositoryService; + + @Resource + private ManagementService managementService; + + @Resource + private ProcModelExtDao procModelExtDao; + + public BpmPageResult getProcessBasicInfos(ProcessBasicInfoQuery basicInfoQuery) { + NativeModelQuery query = repositoryService.createNativeModelQuery(); + //act_re_model ModelEntity.class + String tableName = managementService.getTableName(ModelEntity.class); + StringBuilder baseHeader = new StringBuilder("SELECT a.* FROM ").append(tableName).append(" a "); + StringBuilder countHeader = new StringBuilder("SELECT count(1) FROM ").append(tableName).append(" a "); + + StringBuilder baseQuerySql = new StringBuilder(); + if (basicInfoQuery.getStatus() != null) { + baseQuerySql.append(" LEFT JOIN workflow_proc_model_ext b ON a.ID_ = b.proc_model_id ") + .append(sqlConnectors(baseQuerySql)) + .append(" b.status = #{status}"); + query.parameter("status", basicInfoQuery.getStatus()); + } + if (!CollectionUtils.isEmpty(basicInfoQuery.getBusinessIdList())) { + baseQuerySql.append(sqlConnectors(baseQuerySql)) + .append(" a.CATEGORY_ in ("); + for (int i = 0; i < basicInfoQuery.getBusinessIdList().size(); i++) { + baseQuerySql.append("#{CATEGORY_").append(i).append("}"); + if (i < basicInfoQuery.getBusinessIdList().size() - 1) { + baseQuerySql.append(","); + } + query.parameter("CATEGORY_" + i, basicInfoQuery.getBusinessIdList().get(i)); + } + baseQuerySql.append(")"); + } + if (StringUtils.hasLength(basicInfoQuery.getProcessName())) { + baseQuerySql.append(sqlConnectors(baseQuerySql)) + .append(" a.NAME_ like #{processName}"); + query.parameter("processName", "%" + basicInfoQuery.getProcessName() + "%"); + } + baseQuerySql.append(" order by a.LAST_UPDATE_TIME_ desc"); + + NativeModelQuery countSqlQuery = query.sql(countHeader.append(baseQuerySql).toString()); + if (countSqlQuery.count() > 0L) { + NativeModelQuery dataSqlQuery = query.sql(baseHeader.append(baseQuerySql).toString()); + List instances = dataSqlQuery + .listPage((basicInfoQuery.getPageNo() - 1) * basicInfoQuery.getPageSize(), basicInfoQuery.getPageSize()); + List processBasicInfos = Lists.newArrayList(); + instances.forEach(model -> { + ProcessBasicInfoResp basicInfoResp = new ProcessBasicInfoResp(); + basicInfoResp.setUpdateTime(model.getLastUpdateTime()); + basicInfoResp.setWorkBenchId(model.getTenantId()); + basicInfoResp.setProcessModelId(model.getId()); + basicInfoResp.setProcessName(model.getName()); + basicInfoResp.setVersion("mock-v1.0.1"); + if (basicInfoQuery.getStatus() != null) { + basicInfoResp.setStatus(basicInfoQuery.getStatus()); + } else { + //通过processModelId查询状态 + ProcModelExt procModelExt = procModelExtDao.lambdaQuery().eq(ProcModelExt::getProcModelId, model.getId()).one(); + if (procModelExt != null) { + basicInfoResp.setStatus(procModelExt.getStatus()); + } + } + basicInfoResp.setOwnBusinessId(model.getCategory()); + processBasicInfos.add(basicInfoResp); + }); + return new BpmPageResult<>(processBasicInfos, countSqlQuery.count()); + + } + return BpmPageResult.empty(); + } + +} diff --git a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/impl/ProcessOwnBusinessImpl.java b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/impl/ProcessOwnBusinessImpl.java deleted file mode 100644 index ad256778f..000000000 --- a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/impl/ProcessOwnBusinessImpl.java +++ /dev/null @@ -1,137 +0,0 @@ -package cn.axzo.workflow.core.service.impl; - -import cn.axzo.basics.common.BeanMapper; -import cn.axzo.basics.common.exception.ServiceException; -import cn.axzo.framework.domain.page.PageResp; -import cn.axzo.workflow.common.model.request.bpmn.business.ProcessOwnBusinessQuery; -import cn.axzo.workflow.common.model.request.bpmn.business.ProcessOwnBusinessRequest; -import cn.axzo.workflow.common.model.request.bpmn.business.ProcessOwnBusinessResp; -import cn.axzo.workflow.core.repository.entity.ExtAxDictDO; -import cn.axzo.workflow.core.repository.entity.ProcessOwnBusiness; -import cn.axzo.workflow.core.repository.mapper.ProcessOwnBusinessMapper; -import cn.axzo.workflow.core.service.ProcessOwnBusinessService; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.toolkit.Wrappers; -import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import lombok.RequiredArgsConstructor; -import lombok.extern.slf4j.Slf4j; -import org.apache.commons.lang3.StringUtils; -import org.springframework.stereotype.Service; - -import javax.annotation.Resource; -import java.util.Date; -import java.util.List; -import java.util.UUID; - -/** - * workflow-engine - * - * @author zuoqinbo - * @version V1.0 - * @date 2023/11/6 17:00 - */ -@Service -@RequiredArgsConstructor -@Slf4j -public class ProcessOwnBusinessImpl extends ServiceImpl - implements ProcessOwnBusinessService { - - @Resource - private ProcessOwnBusinessMapper processOwnBusinessMapper; - - @Override - public PageResp queryProcessOwnBusinessList(ProcessOwnBusinessQuery processOwnBusinessQuery) { - - LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery(ProcessOwnBusiness.class) - .eq(ProcessOwnBusiness::getIsDelete, 0) - .like(StringUtils.isNotBlank(processOwnBusinessQuery.getBusinessName()), - ProcessOwnBusiness::getBusinessName, - processOwnBusinessQuery.getBusinessName()) - .eq(processOwnBusinessQuery.getBusinessId() != null, - ProcessOwnBusiness::getBusinessId, - processOwnBusinessQuery.getBusinessId()) - .eq(processOwnBusinessQuery.getWorkbench() != null, - ProcessOwnBusiness::getWorkbench, - processOwnBusinessQuery.getWorkbench()) - .orderByDesc(ProcessOwnBusiness::getCreateAt); - - Page pageOfResult = processOwnBusinessMapper.selectPage(new Page<>(processOwnBusinessQuery.getPageNo(), - processOwnBusinessQuery.getPageSize()), - queryWrapper); - - List list = BeanMapper.copyList(pageOfResult.getRecords(), ProcessOwnBusinessResp.class); - return PageResp.list(pageOfResult.getCurrent(), pageOfResult.getSize(), - pageOfResult.getTotal(), list); - } - - @Override - public ProcessOwnBusinessResp queryProcessOwnBusiness(String businessId) { - ProcessOwnBusiness processOwnBusiness = this.lambdaQuery().eq(ProcessOwnBusiness::getIsDelete, 0) - .eq(ProcessOwnBusiness::getBusinessId, businessId).one(); - if (processOwnBusiness == null) { - throw new ServiceException("流程所属业务ID=[" + businessId + "]没有有效数据!无法进行更新"); - } - return BeanMapper.copyBean(processOwnBusiness, ProcessOwnBusinessResp.class); - } - - @Override - public void deleteProcessOwnBusiness(String businessId) { - ProcessOwnBusiness processOwnBusiness = this.lambdaQuery().eq(ProcessOwnBusiness::getIsDelete, 0) - .eq(ProcessOwnBusiness::getBusinessId, businessId).one(); - if (processOwnBusiness == null) { - throw new ServiceException("流程所属业务ID=[" + businessId + "]没有有效数据!无法进行更新"); - } - //校验 模板关联关系 - } - - @Override - public ProcessOwnBusinessResp updateProcessOwnBusiness(ProcessOwnBusinessRequest processOwnBusinessRequest) { - String bizId = processOwnBusinessRequest.getBusinessId(); - if (StringUtils.isEmpty(bizId)) { - throw new ServiceException("流程所属业务ID为空!无法进行更新"); - } - ProcessOwnBusiness processOwnBusiness = this.lambdaQuery().eq(ProcessOwnBusiness::getIsDelete, 0) - .eq(ProcessOwnBusiness::getBusinessId, bizId).one(); - if (processOwnBusiness == null) { - throw new ServiceException("流程所属业务ID=[" + bizId + "]没有有效数据!无法进行更新"); - } - verifyProcessOwnBusiness(processOwnBusinessRequest.getBusinessName(), bizId); - if (StringUtils.isNotEmpty(processOwnBusinessRequest.getBusinessName())) { - processOwnBusiness.setBusinessName(processOwnBusinessRequest.getBusinessName()); - } - processOwnBusiness.setUpdateAt(new Date()); - if (this.saveOrUpdate(processOwnBusiness)) { - ProcessOwnBusinessResp processOwnBusinessResp; - processOwnBusinessResp = BeanMapper.copyBean(processOwnBusiness, ProcessOwnBusinessResp.class); - return processOwnBusinessResp; - } - return null; - } - - private void verifyProcessOwnBusiness(String businessName, String bizId) { - ProcessOwnBusiness processOwnBusiness = this.lambdaQuery().eq(ProcessOwnBusiness::getIsDelete, 0) - .eq(ProcessOwnBusiness::getBusinessName, businessName).one(); - if (processOwnBusiness != null && !processOwnBusiness.getBusinessId().equals(bizId)) { - throw new ServiceException("流程所属业务名称=[" + businessName + "]重复!无法进行保存"); - } - } - - @Override - public ProcessOwnBusinessResp createProcessOwnBusiness(ProcessOwnBusinessRequest processOwnBusinessRequest) { - if (processOwnBusinessRequest == null) { - return null; - } - ProcessOwnBusiness processOwnBusiness = BeanMapper.copyBean(processOwnBusinessRequest, ProcessOwnBusiness.class); - String bizId = UUID.randomUUID().toString().replace("-", ""); - verifyProcessOwnBusiness(processOwnBusinessRequest.getBusinessName(), bizId); - processOwnBusiness.setBusinessId(bizId); - processOwnBusiness.setCreateAt(new Date()); - processOwnBusiness.setUpdateAt(new Date()); - if (!this.saveOrUpdate(processOwnBusiness)) { - return null; - } - return BeanMapper.copyBean(processOwnBusiness, ProcessOwnBusinessResp.class); - } -} diff --git a/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/web/business/ProcessBasicInfoController.java b/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/web/business/ProcessBasicInfoController.java new file mode 100644 index 000000000..fa232a8be --- /dev/null +++ b/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/web/business/ProcessBasicInfoController.java @@ -0,0 +1,46 @@ +package cn.axzo.workflow.server.controller.web.business; + +import cn.axzo.framework.domain.web.result.ApiPageResult; +import cn.axzo.framework.domain.web.result.ApiResult; +import cn.axzo.workflow.client.feign.manage.ProcessConfigApi; +import cn.axzo.workflow.client.feign.manage.ProcessManageApi; +import cn.axzo.workflow.common.enums.BpmnButtonEnum; +import cn.axzo.workflow.common.model.request.bpmn.basic.ProcessBasicInfoQuery; +import cn.axzo.workflow.common.model.request.bpmn.basic.ProcessBasicInfoResp; +import cn.axzo.workflow.common.model.response.BpmPageResult; +import cn.axzo.workflow.common.model.response.config.BpmnButtonResp; +import cn.axzo.workflow.core.service.business.ProcessBasicInfoService; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.RestController; + +import javax.annotation.Resource; +import java.util.Arrays; +import java.util.List; +import java.util.stream.Collectors; + + +/** + * ProcessConfigController + * + * @author zuoqinbo + * @version V1.0 + * @date 2023/11/9 14:01 + */ +@Slf4j +@Validated +@RestController +@RequiredArgsConstructor +public class ProcessBasicInfoController implements ProcessManageApi { + @Resource + private ProcessBasicInfoService basicInfoService; + + @Override + public ApiPageResult getProcessBasicInfos(ProcessBasicInfoQuery basicInfoQuery) { + BpmPageResult basicInfoList = basicInfoService.getProcessBasicInfos(basicInfoQuery); + return ApiPageResult.ok(basicInfoList.getList(), basicInfoList.getTotal(), + basicInfoQuery.getPageNo(), basicInfoQuery.getPageSize()); + } +} diff --git a/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/web/business/ProcessConfigController.java b/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/web/business/ProcessConfigController.java index a212d2115..03db90201 100644 --- a/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/web/business/ProcessConfigController.java +++ b/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/web/business/ProcessConfigController.java @@ -6,6 +6,7 @@ import cn.axzo.workflow.common.enums.BpmnButtonEnum; import cn.axzo.workflow.common.model.response.config.BpmnButtonResp; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.RestController; @@ -31,14 +32,18 @@ public class ProcessConfigController implements ProcessConfigApi { @Override public ApiResult> getProcessButtonList(String webContextPath) { + if(StringUtils.isEmpty(webContextPath)){ + webContextPath = "/api/process"; + } List bpmnButtonEnumList = Arrays.asList(BpmnButtonEnum.values()); + String finalWebContextPath = webContextPath; List buttonRespList = bpmnButtonEnumList .stream().map(bpmnButtonEnum -> { BpmnButtonResp bpmnButtonResp = new BpmnButtonResp(); bpmnButtonResp.setOrder(bpmnButtonEnum.getOrder()); bpmnButtonResp.setBtnKey(bpmnButtonEnum.getBtnKey()); bpmnButtonResp.setBtnName(bpmnButtonEnum.getBtnName()); - bpmnButtonResp.setBtnAction(webContextPath + bpmnButtonEnum.getBtnAction()); + bpmnButtonResp.setBtnAction(finalWebContextPath + bpmnButtonEnum.getBtnAction()); return bpmnButtonResp; }).collect(Collectors.toList()); return ApiResult.ok(buttonRespList); diff --git a/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/web/business/ProcessOwnBusinessController.java b/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/web/business/ProcessOwnBusinessController.java deleted file mode 100644 index b8e308e5b..000000000 --- a/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/web/business/ProcessOwnBusinessController.java +++ /dev/null @@ -1,67 +0,0 @@ -package cn.axzo.workflow.server.controller.web.business; - -import cn.axzo.framework.domain.page.PageResp; -import cn.axzo.framework.domain.web.result.ApiPageResult; -import cn.axzo.framework.domain.web.result.ApiResult; -import cn.axzo.workflow.client.feign.manage.ProcessOwnBusinessApi; -import cn.axzo.workflow.common.model.request.bpmn.business.ProcessOwnBusinessQuery; -import cn.axzo.workflow.common.model.request.bpmn.business.ProcessOwnBusinessRequest; -import cn.axzo.workflow.common.model.request.bpmn.business.ProcessOwnBusinessResp; -import cn.axzo.workflow.core.service.ProcessOwnBusinessService; -import lombok.RequiredArgsConstructor; -import lombok.extern.slf4j.Slf4j; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; - -import javax.annotation.Resource; -import javax.validation.constraints.NotBlank; - -import static cn.azxo.framework.common.model.CommonResponse.success; - -/** - * ProcessOwnBusinessController - * - * @author zuoqinbo - * @version V1.0 - * @date 2023/11/9 14:01 - */ -@Slf4j -@Validated -@RestController -@RequiredArgsConstructor -public class ProcessOwnBusinessController implements ProcessOwnBusinessApi { - - - @Resource - private ProcessOwnBusinessService processOwnBusiness; - - @Override - public ApiResult createProcessOwnBusiness(ProcessOwnBusinessRequest processOwnBusinessRequest) { - ProcessOwnBusinessResp processOwnBusinessResp = processOwnBusiness.createProcessOwnBusiness(processOwnBusinessRequest); - return ApiResult.ok(processOwnBusinessResp); - } - - @Override - public ApiResult updateProcessOwnBusiness(ProcessOwnBusinessRequest processOwnBusinessRequest) { - ProcessOwnBusinessResp processOwnBusinessResp = processOwnBusiness.updateProcessOwnBusiness(processOwnBusinessRequest); - return ApiResult.ok(processOwnBusinessResp); - } - - @Override - public ApiResult deleteProcessOwnBusiness(@NotBlank(message = "businessId不能为空") String businessId) { - processOwnBusiness.deleteProcessOwnBusiness(businessId); - return ApiResult.ok("删除成功"); - } - - @Override - public ApiResult queryProcessOwnBusiness(@NotBlank(message = "businessId不能为空") String businessId) { - ProcessOwnBusinessResp processOwnBusinessResp = processOwnBusiness.queryProcessOwnBusiness(businessId); - return ApiResult.ok(processOwnBusinessResp); - } - - @Override - public ApiPageResult queryProcessOwnBusinessList(ProcessOwnBusinessQuery processOwnBusinessQuery) { - PageResp processOwnBusinessPage = processOwnBusiness.queryProcessOwnBusinessList(processOwnBusinessQuery); - return ApiPageResult.ok(processOwnBusinessPage); - } -}