commit:同步2.0版本(添加指定审批人功能)

This commit is contained in:
Jerry
2021-10-22 09:50:54 +08:00
parent 3be97f79c0
commit 45de390cc2
321 changed files with 19171 additions and 40 deletions

View File

@@ -0,0 +1,156 @@
package com.orange.demo.upmsapi.client;
import com.orange.demo.common.core.base.client.BaseFallbackFactory;
import com.orange.demo.common.core.config.FeignConfig;
import com.orange.demo.common.core.base.client.BaseClient;
import com.orange.demo.common.core.object.*;
import com.orange.demo.upmsapi.dto.SysDeptDto;
import com.orange.demo.upmsapi.vo.SysDeptVo;
import lombok.extern.slf4j.Slf4j;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.*;
import java.util.*;
/**
* 部门管理服务远程数据操作访问接口。
*
* @author Jerry
* @date 2020-08-08
*/
@FeignClient(
name = "upms",
configuration = FeignConfig.class,
fallbackFactory = SysDeptClient.SysDeptClientFallbackFactory.class)
public interface SysDeptClient extends BaseClient<SysDeptDto, SysDeptVo, Long> {
/**
* 基于主键的(In-list)条件获取远程数据接口。
*
* @param deptIds 主键Id集合。
* @param withDict 是否包含字典关联。
* @return 应答结果对象,包含主对象的数据集合。
*/
@Override
@PostMapping("/sysDept/listByIds")
ResponseResult<List<SysDeptVo>> listByIds(
@RequestParam("deptIds") Set<Long> deptIds,
@RequestParam("withDict") Boolean withDict);
/**
* 基于主键Id获取远程对象。
*
* @param deptId 主键Id。
* @param withDict 是否包含字典关联。
* @return 应答结果对象,包含主对象数据。
*/
@Override
@PostMapping("/sysDept/getById")
ResponseResult<SysDeptVo> getById(
@RequestParam("deptId") Long deptId,
@RequestParam("withDict") Boolean withDict);
/**
* 判断参数列表中指定的主键Id是否都存在。
*
* @param deptIds 主键Id集合。
* @return 应答结果对象包含true全部存在否则false。
*/
@Override
@PostMapping("/sysDept/existIds")
ResponseResult<Boolean> existIds(@RequestParam("deptIds") Set<Long> deptIds);
/**
* 判断主键Id是否存在。
*
* @param deptId 参数主键Id。
* @return 应答结果对象包含true表示存在否则false。
*/
@Override
@PostMapping("/sysDept/existId")
ResponseResult<Boolean> existId(@RequestParam("deptId") Long deptId);
/**
* 删除主键Id关联的对象。
*
* @param deptId 主键Id。
* @return 应答结果对象。
*/
@Override
@PostMapping("/sysDept/deleteById")
ResponseResult<Integer> deleteById(@RequestParam("deptId") Long deptId);
/**
* 删除符合过滤条件的数据。
*
* @param filter 过滤对象。
* @return 应答结果对象,包含删除数量。
*/
@Override
@PostMapping("/sysDept/deleteBy")
ResponseResult<Integer> deleteBy(@RequestBody SysDeptDto filter);
/**
* 获取远程主对象中符合查询条件的数据列表。
*
* @param queryParam 查询参数。
* @return 应答结果对象,包含实体对象集合。
*/
@Override
@PostMapping("/sysDept/listBy")
ResponseResult<MyPageData<SysDeptVo>> listBy(@RequestBody MyQueryParam queryParam);
/**
* 获取远程主对象中符合查询条件的单条数据对象。
*
* @param queryParam 查询参数。
* @return 应答结果对象,包含实体对象。
*/
@Override
@PostMapping("/sysDept/getBy")
ResponseResult<SysDeptVo> getBy(@RequestBody MyQueryParam queryParam);
/**
* 获取远程主对象中符合查询条件的数据列表。
* 和listBy接口相比以Map列表的方式返回的主要目的是降低服务之间的耦合度。
*
* @param queryParam 查询参数。
* @return 应答结果对象,包含主对象集合。
*/
@Override
@PostMapping("/sysDept/listMapBy")
ResponseResult<MyPageData<Map<String, Object>>> listMapBy(@RequestBody MyQueryParam queryParam);
/**
* 获取远程主对象中符合查询条件的数据数量。
*
* @param queryParam 查询参数。
* @return 应答结果对象,包含结果数量。
*/
@Override
@PostMapping("/sysDept/countBy")
ResponseResult<Integer> countBy(@RequestBody MyQueryParam queryParam);
/**
* 获取远程对象中符合查询条件的分组聚合计算Map列表。
*
* @param aggregationParam 聚合参数。
* @return 应该结果对象包含聚合计算后的分组Map列表。
*/
@Override
@PostMapping("/sysDept/aggregateBy")
ResponseResult<List<Map<String, Object>>> aggregateBy(@RequestBody MyAggregationParam aggregationParam);
@Component("UpmsSysDeptClientFallbackFactory")
@Slf4j
class SysDeptClientFallbackFactory
extends BaseFallbackFactory<SysDeptDto, SysDeptVo, Long, SysDeptClient> implements SysDeptClient {
@Override
public SysDeptClient create(Throwable throwable) {
log.error("Exception For Feign Remote Call.", throwable);
return new SysDeptClientFallbackFactory();
}
}
}

View File

@@ -0,0 +1,28 @@
package com.orange.demo.upmsapi.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* 数据权限与部门关联Dto。
*
* @author Jerry
* @date 2020-08-08
*/
@ApiModel("数据权限与部门关联Dto")
@Data
public class SysDataPermDeptDto {
/**
* 数据权限Id。
*/
@ApiModelProperty(value = "数据权限Id", required = true)
private Long dataPermId;
/**
* 关联部门Id。
*/
@ApiModelProperty(value = "关联部门Id", required = true)
private Long deptId;
}

View File

@@ -0,0 +1,56 @@
package com.orange.demo.upmsapi.dto;
import com.orange.demo.common.core.validator.UpdateGroup;
import com.orange.demo.common.core.validator.ConstDictRef;
import com.orange.demo.common.datafilter.constant.DataPermRuleType;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.*;
/**
* 数据权限Dto。
*
* @author Jerry
* @date 2020-08-08
*/
@ApiModel("数据权限Dto")
@Data
public class SysDataPermDto {
/**
* 数据权限Id。
*/
@ApiModelProperty(value = "数据权限Id", required = true)
@NotNull(message = "数据权限Id不能为空", groups = {UpdateGroup.class})
private Long dataPermId;
/**
* 显示名称。
*/
@ApiModelProperty(value = "显示名称", required = true)
@NotBlank(message = "数据权限名称不能为空!")
private String dataPermName;
/**
* 数据权限规则类型(0: 全部可见 1: 只看自己 2: 只看本部门 3: 本部门及子部门 4: 多部门及子部门 5: 自定义部门列表)。
*/
@ApiModelProperty(value = "数据权限规则类型", required = true)
@NotNull(message = "数据权限规则类型不能为空!")
@ConstDictRef(constDictClass = DataPermRuleType.class)
private Integer ruleType;
/**
* 部门Id列表(逗号分隔)。
*/
@ApiModelProperty(hidden = true)
private String deptIdListString;
/**
* 搜索字符串。
*/
@ApiModelProperty(value = "LIKE 模糊搜索字符串")
private String searchString;
}

View File

@@ -0,0 +1,47 @@
package com.orange.demo.upmsapi.dto;
import com.orange.demo.common.core.validator.UpdateGroup;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.*;
/**
* SysDeptDto对象。
*
* @author Jerry
* @date 2020-08-08
*/
@ApiModel("SysDeptDto对象")
@Data
public class SysDeptDto {
/**
* 部门Id。
*/
@ApiModelProperty(value = "部门Id", required = true)
@NotNull(message = "数据验证失败部门Id不能为空", groups = {UpdateGroup.class})
private Long deptId;
/**
* 部门名称。
*/
@ApiModelProperty(value = "部门名称", required = true)
@NotBlank(message = "数据验证失败,部门名称不能为空!")
private String deptName;
/**
* 显示顺序。
*/
@ApiModelProperty(value = "显示顺序", required = true)
@NotNull(message = "数据验证失败,显示顺序不能为空!")
private Integer showOrder;
/**
* 父部门Id。
*/
@ApiModelProperty(value = "父部门Id")
private Long parentId;
}

View File

@@ -0,0 +1,78 @@
package com.orange.demo.upmsapi.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* 操作日志记录表
*
* @author Jerry
* @date 2020-08-08
*/
@ApiModel("操作日志Dto")
@Data
public class SysOperationLogDto {
/**
* 主键Id。
*/
@ApiModelProperty(value = "主键Id")
private Long logId;
/**
* 操作类型。
* 常量值定义可参考SysOperationLogType对象。
*/
@ApiModelProperty(value = "操作类型")
private Integer operationType;
/**
* 每次请求的Id。
* 对于微服务之间的调用,在同一个请求的调用链中,该值是相同的。
*/
@ApiModelProperty(value = "每次请求的Id")
private String traceId;
/**
* HTTP 请求地址。
*/
@ApiModelProperty(value = "HTTP 请求地址")
private String requestUrl;
/**
* 应答状态。
*/
@ApiModelProperty(value = "应答状态")
private Boolean success;
/**
* 操作员名称。
*/
@ApiModelProperty(value = "操作员名称")
private String operatorName;
/**
* 调用时长最小值。
*/
@ApiModelProperty(value = "调用时长最小值")
private Long elapseMin;
/**
* 调用时长最大值。
*/
@ApiModelProperty(value = "调用时长最大值")
private Long elapseMax;
/**
* 操作开始时间。
*/
@ApiModelProperty(value = "操作开始时间")
private String operationTimeStart;
/**
* 操作开始时间。
*/
@ApiModelProperty(value = "操作开始时间")
private String operationTimeEnd;
}

View File

@@ -0,0 +1,28 @@
package com.orange.demo.upmsapi.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* 数据权限与部门关联VO。
*
* @author Jerry
* @date 2020-08-08
*/
@ApiModel("数据权限与部门关联VO")
@Data
public class SysDataPermDeptVo {
/**
* 数据权限Id。
*/
@ApiModelProperty(value = "数据权限Id")
private Long dataPermId;
/**
* 关联部门Id。
*/
@ApiModelProperty(value = "关联部门Id")
private Long deptId;
}

View File

@@ -0,0 +1,72 @@
package com.orange.demo.upmsapi.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.*;
/**
* 数据权限VO。
*
* @author Jerry
* @date 2020-08-08
*/
@ApiModel("数据权限VO")
@Data
public class SysDataPermVo {
/**
* 数据权限Id。
*/
@ApiModelProperty(value = "数据权限Id")
private Long dataPermId;
/**
* 显示名称。
*/
@ApiModelProperty(value = "显示名称")
private String dataPermName;
/**
* 数据权限规则类型(0: 全部可见 1: 只看自己 2: 只看本部门 3: 本部门及子部门 4: 多部门及子部门 5: 自定义部门列表)。
*/
@ApiModelProperty(value = "数据权限规则类型")
private Integer ruleType;
/**
* 部门Id列表(逗号分隔)。
*/
@ApiModelProperty(value = "部门Id列表")
private String deptIdListString;
/**
* 创建者Id。
*/
@ApiModelProperty(value = "创建者Id")
private Long createUserId;
/**
* 创建时间。
*/
@ApiModelProperty(value = "创建时间")
private Date createTime;
/**
* 更新者Id。
*/
@ApiModelProperty(value = "更新者Id")
private Long updateUserId;
/**
* 更新时间。
*/
@ApiModelProperty(value = "更新时间")
private Date updateTime;
/**
* 数据权限与部门关联对象列表。
*/
@ApiModelProperty(value = "数据权限与部门关联对象列表")
private List<Map<String, Object>> dataPermDeptList;
}

View File

@@ -0,0 +1,66 @@
package com.orange.demo.upmsapi.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
/**
* SysDeptVO视图对象。
*
* @author Jerry
* @date 2020-08-08
*/
@ApiModel("SysDeptVO视图对象")
@Data
public class SysDeptVo {
/**
* 部门Id。
*/
@ApiModelProperty(value = "部门Id")
private Long deptId;
/**
* 部门名称。
*/
@ApiModelProperty(value = "部门名称")
private String deptName;
/**
* 显示顺序。
*/
@ApiModelProperty(value = "显示顺序")
private Integer showOrder;
/**
* 父部门Id。
*/
@ApiModelProperty(value = "父部门Id")
private Long parentId;
/**
* 创建者Id。
*/
@ApiModelProperty(value = "创建者Id")
private Long createUserId;
/**
* 更新者Id。
*/
@ApiModelProperty(value = "更新者Id")
private Long updateUserId;
/**
* 创建时间。
*/
@ApiModelProperty(value = "创建时间")
private Date createTime;
/**
* 更新时间。
*/
@ApiModelProperty(value = "更新时间")
private Date updateTime;
}

View File

@@ -0,0 +1,145 @@
package com.orange.demo.upmsapi.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
/**
* 操作日志记录表
*
* @author Jerry
* @date 2020-08-08
*/
@ApiModel("操作日志VO")
@Data
public class SysOperationLogVo {
/**
* 操作日志主键Id。
*/
@ApiModelProperty(value = "操作日志主键Id")
private Long logId;
/**
* 日志描述。
*/
@ApiModelProperty(value = "日志描述")
private String description;
/**
* 操作类型。
* 常量值定义可参考SysOperationLogType对象。
*/
@ApiModelProperty(value = "操作类型")
private Integer operationType;
/**
* 接口所在服务名称。
* 通常为spring.application.name配置项的值。
*/
@ApiModelProperty(value = "接口所在服务名称")
private String serviceName;
/**
* 调用的controller全类名。
* 之所以为独立字段,是为了便于查询和统计接口的调用频度。
*/
@ApiModelProperty(value = "调用的controller全类名")
private String apiClass;
/**
* 调用的controller中的方法。
* 格式为:接口类名 + "." + 方法名。
*/
@ApiModelProperty(value = "调用的controller中的方法")
private String apiMethod;
/**
* 用户会话sessionId。
* 主要是为了便于统计,以及跟踪查询定位问题。
*/
@ApiModelProperty(value = "用户会话sessionId")
private String sessionId;
/**
* 每次请求的Id。
* 对于微服务之间的调用,在同一个请求的调用链中,该值是相同的。
*/
@ApiModelProperty(value = "每次请求的Id")
private String traceId;
/**
* 调用时长。
*/
@ApiModelProperty(value = "调用时长")
private Long elapse;
/**
* HTTP 请求方法如GET。
*/
@ApiModelProperty(value = "HTTP 请求方法")
private String requestMethod;
/**
* HTTP 请求地址。
*/
@ApiModelProperty(value = "HTTP 请求地址")
private String requestUrl;
/**
* controller接口参数。
*/
@ApiModelProperty(value = "controller接口参数")
private String requestArguments;
/**
* controller应答结果。
*/
@ApiModelProperty(value = "controller应答结果")
private String responseResult;
/**
* 请求IP。
*/
@ApiModelProperty(value = "请求IP")
private String requestIp;
/**
* 应答状态。
*/
@ApiModelProperty(value = "应答状态")
private Boolean success;
/**
* 错误信息。
*/
@ApiModelProperty(value = "错误信息")
private String errorMsg;
/**
* 租户Id。
* 仅用于多租户系统,是便于进行对租户的操作查询和统计分析。
*/
@ApiModelProperty(value = "租户Id")
private Long tenantId;
/**
* 操作员Id。
*/
@ApiModelProperty(value = "操作员Id")
private Long operatorId;
/**
* 操作员名称。
*/
@ApiModelProperty(value = "操作员名称")
private String operatorName;
/**
* 操作时间。
*/
@ApiModelProperty(value = "操作时间")
private Date operationTime;
}