流程实例过滤配置功能

This commit is contained in:
Echo 2024-11-15 18:08:40 +08:00
parent 17bbcc644e
commit 2ec266aaa5
8 changed files with 323 additions and 0 deletions

View File

@ -0,0 +1,68 @@
package cn.iocoder.yudao.module.bpm.controller.admin.definition;
import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.filter.BpmInstallFilterRespVO;
import cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.filter.BpmInstanceFilterPageReqVO;
import cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.group.BpmUserGroupCreateReqVO;
import cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.group.BpmUserGroupPageReqVO;
import cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.group.BpmUserGroupRespVO;
import cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.group.BpmUserGroupUpdateReqVO;
import cn.iocoder.yudao.module.bpm.convert.definition.BpmInstallFilterConvert;
import cn.iocoder.yudao.module.bpm.convert.definition.BpmUserGroupConvert;
import cn.iocoder.yudao.module.bpm.dal.dataobject.definition.BpmInstanceFilterDO;
import cn.iocoder.yudao.module.bpm.dal.dataobject.definition.BpmUserGroupDO;
import cn.iocoder.yudao.module.bpm.service.definition.BpmInstanceFilterService;
import cn.iocoder.yudao.module.bpm.service.definition.BpmUserGroupService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import javax.validation.Valid;
import java.util.List;
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
@Tag(name = "管理后台 - 流程实例过滤")
@RestController
@RequestMapping("/bpm/instance-filter")
@Validated
public class BpmInstanceFilterController {
@Resource
private BpmInstanceFilterService instanceFilterService;
@PostMapping("/create")
@Operation(summary = "添加需要过滤的流程实例")
public CommonResult<Long> createInstanceFilter(@RequestParam("processInstanceId")String processInstanceId) {
return success(instanceFilterService.createInstanceFilter(processInstanceId));
}
@PutMapping("/update")
@Operation(summary = "更新流程实例是否需要过滤")
public CommonResult<Boolean> updateInstanceFilterStatus(@RequestParam("id")Long id, @RequestParam("status") Integer status) {
instanceFilterService.updateInstanceFilterStatus(id, status);
return success(true);
}
@DeleteMapping("/delete")
@Operation(summary = "删除过滤")
@Parameter(name = "id", description = "编号", required = true)
public CommonResult<Boolean> deleteUserGroup(@RequestParam("id") Long id) {
instanceFilterService.deleteInstanceFilter(id);
return success(true);
}
@GetMapping("/page")
@Operation(summary = "获得流程实例过滤分页")
public CommonResult<PageResult<BpmInstanceFilterDO>> getInstanceFilterPage(@Valid @ModelAttribute BpmInstanceFilterPageReqVO pageVO) {
PageResult<BpmInstanceFilterDO> pageResult = instanceFilterService.getInstanceFilterPage(pageVO);
return success(pageResult);
}
}

View File

@ -0,0 +1,22 @@
package cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.filter;
import cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.group.BpmUserGroupBaseVO;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.ToString;
import java.time.LocalDateTime;
@Schema(description = "管理后台 - 流程实例过滤 Response VO")
@Data
@ToString(callSuper = true)
public class BpmInstallFilterRespVO {
@Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
private Long id;
@Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
private LocalDateTime createTime;
}

View File

@ -0,0 +1,29 @@
package cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.filter;
import cn.iocoder.yudao.framework.common.pojo.PageParam;
import cn.iocoder.yudao.framework.common.util.date.DateUtils;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.ToString;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
@Schema(description = "管理后台 - 流程实例过滤分页 Request VO")
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
public class BpmInstanceFilterPageReqVO extends PageParam {
@Schema(description = "流程实例ID", example = "xxxxxxx")
private String processInstanceId;
@Schema(description = "状态", example = "1")
private Integer status;
@DateTimeFormat(pattern = DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
@Schema(description = "创建时间")
private LocalDateTime[] createTime;
}

View File

@ -0,0 +1,29 @@
package cn.iocoder.yudao.module.bpm.convert.definition;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.filter.BpmInstallFilterRespVO;
import cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.group.BpmUserGroupCreateReqVO;
import cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.group.BpmUserGroupRespVO;
import cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.group.BpmUserGroupUpdateReqVO;
import cn.iocoder.yudao.module.bpm.dal.dataobject.definition.BpmInstanceFilterDO;
import cn.iocoder.yudao.module.bpm.dal.dataobject.definition.BpmUserGroupDO;
import org.mapstruct.Mapper;
import org.mapstruct.Named;
import org.mapstruct.factory.Mappers;
import java.util.List;
/**
* 用户组 Convert
*
*/
@Mapper
public interface BpmInstallFilterConvert {
BpmInstallFilterConvert INSTANCE = Mappers.getMapper(BpmInstallFilterConvert.class);
PageResult<BpmInstallFilterRespVO> convertPage(PageResult<BpmInstanceFilterDO> page);
}

View File

@ -0,0 +1,46 @@
package cn.iocoder.yudao.module.bpm.dal.dataobject.definition;
import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
import cn.iocoder.yudao.framework.mybatis.core.type.JsonLongSetTypeHandler;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.*;
import java.util.Set;
/**
* Bpm 流程实例过滤
*
*/
@TableName(value = "bpm_instance_filter", autoResultMap = true)
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class BpmInstanceFilterDO extends BaseDO {
/**
* 编号自增
*/
@TableId
private Long id;
/**
* 流程实例ID
*/
private String processInstanceId;
/**
* 状态
*
* 枚举 {@link CommonStatusEnum}
*/
private Integer status;
}

View File

@ -0,0 +1,30 @@
package cn.iocoder.yudao.module.bpm.dal.mysql.definition;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
import cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.filter.BpmInstanceFilterPageReqVO;
import cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.group.BpmUserGroupPageReqVO;
import cn.iocoder.yudao.module.bpm.dal.dataobject.definition.BpmInstanceFilterDO;
import cn.iocoder.yudao.module.bpm.dal.dataobject.definition.BpmUserGroupDO;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
/**
* 流程实例过滤 Mapper
*
*/
@Mapper
public interface BpmInstanceFilterMapper extends BaseMapperX<BpmInstanceFilterDO> {
default PageResult<BpmInstanceFilterDO> selectPage(BpmInstanceFilterPageReqVO reqVO) {
return selectPage(reqVO, new LambdaQueryWrapperX<BpmInstanceFilterDO>()
.eqIfPresent(BpmInstanceFilterDO::getProcessInstanceId, reqVO.getProcessInstanceId())
.eqIfPresent(BpmInstanceFilterDO::getStatus, reqVO.getStatus())
.betweenIfPresent(BpmInstanceFilterDO::getCreateTime, reqVO.getCreateTime())
.orderByDesc(BpmInstanceFilterDO::getId));
}
}

View File

@ -0,0 +1,46 @@
package cn.iocoder.yudao.module.bpm.service.definition;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.filter.BpmInstanceFilterPageReqVO;
import cn.iocoder.yudao.module.bpm.dal.dataobject.definition.BpmInstanceFilterDO;
/**
* 流程实例过滤 Service 接口
*
*/
public interface BpmInstanceFilterService {
/**
* 新增需要过滤的流程实例ID
*
* @param processInstanceId 流程实例ID
* @return 编号
*/
Long createInstanceFilter(String processInstanceId);
/**
* 流程实例显示开关
*
* @param id 主键ID
* @param status 开关状态
*/
void updateInstanceFilterStatus(Long id, Integer status);
/**
* 删除用户组
*
* @param id 编号
*/
void deleteInstanceFilter(Long id);
/**
* 获得用户组分页
*
* @param pageReqVO 分页查询
* @return 用户组分页
*/
PageResult<BpmInstanceFilterDO> getInstanceFilterPage(BpmInstanceFilterPageReqVO pageReqVO);
}

View File

@ -0,0 +1,53 @@
package cn.iocoder.yudao.module.bpm.service.definition;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.filter.BpmInstanceFilterPageReqVO;
import cn.iocoder.yudao.module.bpm.dal.dataobject.definition.BpmInstanceFilterDO;
import cn.iocoder.yudao.module.bpm.dal.mysql.definition.BpmInstanceFilterMapper;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.validation.annotation.Validated;
import javax.annotation.Resource;
/**
* 流程实例过滤 Service 接口
*
*/
@Service
@Validated
@Slf4j
public class BpmInstanceFilterServiceImpl implements BpmInstanceFilterService{
@Resource
private BpmInstanceFilterMapper instanceFilterMapper;
@Override
public Long createInstanceFilter(String processInstanceId) {
// 插入
BpmInstanceFilterDO instanceFilter = new BpmInstanceFilterDO() ;
instanceFilter.setProcessInstanceId(processInstanceId) ;
instanceFilter.setStatus(1) ;
instanceFilterMapper.insert(instanceFilter);
// 返回
return instanceFilter.getId();
}
@Override
public void updateInstanceFilterStatus(Long id, Integer status) {
BpmInstanceFilterDO result = instanceFilterMapper.selectById(id);
result.setStatus(status) ;
instanceFilterMapper.updateById(result) ;
}
@Override
public void deleteInstanceFilter(Long id) {
instanceFilterMapper.deleteById(id) ;
}
@Override
public PageResult<BpmInstanceFilterDO> getInstanceFilterPage(BpmInstanceFilterPageReqVO pageReqVO) {
return instanceFilterMapper.selectPage(pageReqVO);
}
}