Commit efeba8b5 by henry

添加资产数据

1 parent 2f61b4af
Showing with 10122 additions and 227 deletions
......@@ -175,6 +175,10 @@
<artifactId>tika-parser-pdf-module</artifactId>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.nasdanika.core</groupId>
<artifactId>mxgraph</artifactId>
</dependency>
</dependencies>
</project>
\ No newline at end of file
package org.arch.config;
import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.databind.JsonSerializer;
import com.fasterxml.jackson.databind.SerializerProvider;
import org.apache.commons.collections4.CollectionUtils;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
public class LongListFormatSerializer extends JsonSerializer<List<Long>> {
@Override
public void serialize(List<Long> value, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException {
// String text = "";
List<String> strList_v = new ArrayList<>();
//是否为空
if (!CollectionUtils.isEmpty(value)) {
try {
List<String> strList = new ArrayList<>(value.size());
for (Long aLong : value) {
strList.add(String.valueOf(aLong));
}
//格式化是否为空
if (!CollectionUtils.isEmpty(strList)) {
jsonGenerator.writeObject(strList);
return;
}
} catch (Exception ignored) {
}
}
// jsonGenerator.writeString(text);
jsonGenerator.writeObject(strList_v);
}
}
package org.arch.enums;
import lombok.AllArgsConstructor;
import lombok.Getter;
/**
* 总体架构资产维护-企业中台服务清单枚举类
*/
@Getter
@AllArgsConstructor
public enum ArchiAbilityInventoryEnum {
//====================================总体架构资产维护-企业中台服务清单-中台服务清单枚举====================================
SERVICE_INV_FREQ(1, "服务调用频率", ""),
SERVICE_INV_NUM(2, "服务调用方数量", ""),
OPR_ENTITY_NUM(3, "操作实体数量", ""),
SUPPORT_TEC_MODNUM(4, "支撑技术组件数量", ""),
SUPPPORT_BUS_ACTNUM(5, "支撑的业务活动数量", ""),
REL_MID_SERVICE_NUM(6, "关联的中台服务数量", ""),
//====================================总体架构资产维护-企业中台服务清单-业务信息枚举类====================================
REL_BUS_NUM(7, "关联的业务对象数量", ""),
REL_APP_NUM(8, "关联的应用服务数量", "");
private final Integer code;
private final String name;
private final String type;
}
package org.arch.enums;
import lombok.AllArgsConstructor;
import lombok.Getter;
/**
* 架构资产类型枚举
*
* @author admin
* @date 2024/01/12
*/
@Getter
@AllArgsConstructor
public enum ArchiAssetEnum {
BUSI("archi_asset_busi", 1, "业务架构"),
APP("archi_asset_app", 2, "应用架构"),
DATA("archi_asset_data", 3, "数据架构"),
TECH("archi_asset_tech", 4, "技术架构"),
SAFE("archi_asset_safe", 5, "安全架构");
private final String code;
private final Integer id;
private final String name;
/**
* 根据id获取架构资产类型
*/
public static ArchiAssetEnum getEnumById(Integer id) {
for (ArchiAssetEnum value : ArchiAssetEnum.values()) {
if (value.getId().equals(id)) {
return value;
}
}
return null;
}
}
package org.arch.enums;
/**
* 架构资产类型(3.新增、2.完善、1.遵从)
*
* @author xh13k
* @date 2024/05/07
*/
public enum ArchiAssetType {
/**
* 新增
*/
ADD(3, "新增"),
/**
* 完善
*/
IMPROVE(2, "完善"),
/**
* 遵从
*/
FOLLOW(1, "遵从");
private final int code;
private final String desc;
ArchiAssetType(int code, String desc) {
this.code = code;
this.desc = desc;
}
public int getCode() {
return code;
}
public String getDesc() {
return desc;
}
public static ArchiAssetType getByCode(int code) {
for (ArchiAssetType value : values()) {
if (value.code == code) {
return value;
}
}
return null;
}
}
package org.arch.enums;
import lombok.Getter;
/**
* 3.新增、2.完善、1.遵从
*
* @author xh13k
* @date 2024/04/28
*/
@Getter
public enum ArchiAssetTypeEnum {
/**
* 新增
*/
ADD(3, "新增"),
/**
* 完善
*/
IMPROVE(2, "完善"),
/**
* 遵从
*/
COMPLY(1, "遵从");
private final Integer code;
private final String desc;
ArchiAssetTypeEnum(Integer code, String desc) {
this.code = code;
this.desc = desc;
}
}
package org.arch.enums;
import lombok.AllArgsConstructor;
import lombok.Getter;
/**
* 架构大类枚举
*
* <p>
* 1:总体架构;2:系统架构 3:概设架构 4:其他架构
* </>
*
* @author admin
* @date 2024/01/12
*/
@Getter
@AllArgsConstructor
public enum ArchiBigClassEnum {
TOTAL(1, "总体架构"),
SYSTEM(2, "系统架构"),
CONCEPT(3, "概设架构"),
OTHER(4, "其他架构");
private final Integer id;
private final String name;
}
package org.arch.enums;
import lombok.AllArgsConstructor;
import lombok.Getter;
/**
* 系统架构管用要求评审意见枚举
* <p>
* 致性评审
* 架构遵从
* 关键技术深度评审
* 功能深度评审
* 数据深度评审
* <p>
* 安全架构遵从
* 部署架构审查
* 技术架构遵从
* 应用架构遵从
* 物理数据架构遵从
* <p>
* 运安符合性审查
* 功能满足审查
* 运行可靠性审查
* 系统实用性审查
* 系统安全性审查
* 资源复用性审查
*/
@Getter
@AllArgsConstructor
public enum ArchiPrjReviewEnum {
//====================================评审情况(概要设计)====================================
CONFORMANCE_REVIEW("conformance_review", "一致性评审", ""),
ARCHITECTURE_CONFORMANCE("architecture_conformance", "架构遵从", ""),
KEY_TECHNOLOGY_REVIEW("key_technology_review", "关键技术深度评审", ""),
FUNCTIONAL_DEPTH_REVIEW("functional_depth_review", "功能深度评审", ""),
DATA_DEPTH_REVIEW("data_depth_review", "数据深度评审", ""),
//====================================获取批注所需要的====================================
FEASIBILITY_STUDY_REPORT("feasibility_study_report", "可行性研究报告", "可行性研究报告"),
REQUIREMENT_SPECIFICATION("requirement_specification", "需求规格说明书", "需求规格说明书"),
ARCHI_DESIGN_SPECIFICATION("archi_design_specification", "概要设计说明书", "概要设计说明书"),
TECHNICAL_SPECIFICATION_BOOK("technical_specification_book", "技术规范书", "技术规范书"),
SAFETY_PROTECTION_SCHEME("safety_protection_scheme", "安全防护方案", "安全防护方案"),
//====================================概设架构遵从检查====================================
SECURITY_ARCHITECTURE_CONFORMANCE("security_architecture_conformance", "安全架构遵从", "安全防护方案"),
DEPLOYMENT_ARCHITECTURE_REVIEW("deployment_architecture_review", "部署架构审查", ""),
TECHNICAL_ARCHITECTURE_CONFORMANCE("technical_architecture_conformance", "技术架构遵从", "技术架构设计方案"),
APPLICATION_ARCHITECTURE_CONFORMANCE("application_architecture_conformance", "应用架构遵从", "应用架构遵从"),
PHYSICAL_DATA_ARCHITECTURE_CONFORMANCE("physical_data_architecture_conformance", "物理数据架构遵从", ""),
//====================================概设架构政策审查====================================
OPERATIONAL_SAFETY_COMPLIANCE_REVIEW("operational_safety_compliance_review", "运安符合性审查", "概要设计说明书"),
FUNCTIONAL_SATISFACTION_REVIEW("functional_satisfaction_review", "功能满足审查", "概要设计说明书"),
OPERATIONAL_RELIABILITY_REVIEW("operational_reliability_review", "运行可靠性审查", "概要设计说明书"),
SYSTEM_PRACTICALITY_REVIEW("system_practicality_review", "系统实用性审查", "概要设计说明书"),
SYSTEM_SECURITY_REVIEW("system_security_review", "系统安全性审查", "概要设计说明书"),
RESOURCE_REUSABILITY_REVIEW("resource_reusability_review", "资源复用性审查", "概要设计说明书"),
//====================================概设材料审查====================================
REPORT_NORM("report_norm", "报告规范性", "概要设计说明书"),
FRAMEWORK_OBEY("framework_obey", "架构遵从", "概要设计说明书"),
TECH_ROUTE("tech_route", "技术路线", "概要设计说明书"),
FUNCTION_UNLIKE("function_unlike", "功能偏差", "概要设计说明书"),
APP_DEP("app_dep", "系统部署", "概要设计说明书"),
APP_INT("app_int", "系统集成", "概要设计说明书"),
APP_SAFE("app_safe", "系统安全", "概要设计说明书"),
FUNCTION_S_RISK("function_s_risk", "功能重复风险", "概要设计说明书"),
DATA_S_INSERT_RISK("data_s_insert_risk", "数据重复录入风险", "概要设计说明书"),
//====================================概设材料解析====================================
TECH_ROUTE_CONTENT("tech_route_content", "技术路线状态内容", "技术路线状态内容"),
ARCHI_COMP_CONTENT("archi_comp_content", "架构遵从内容", "架构遵从内容"),
FUNCTION_LIST_CONTENT("function_list_content", "功能清单内容", "功能清单内容"),
DATA_ENTITY_LIST_CONTENT("data_entity_list_content", "数据实体清单内容", "数据实体清单内容"),
INTEGRATE_SYS_LIST_CONTENT("integrate_sys_list_content", "集成系统清单内容", "集成系统清单内容");
private final String code;
private final String name;
private final String type;
}
package org.arch.enums;
/**
* 状态 0:已停用 1:已发布 2:暂存
*
* @author xh13k
* @date 2024/05/11
*/
public enum ArchiStateEnum {
/**
* 已停用
*/
DISABLED(0, "已停用"),
/**
* 已发布
*/
PUBLISHED(1, "已发布"),
/**
* 暂存
*/
TEMPORARY(2, "暂存");
private final int code;
private final String desc;
ArchiStateEnum(int code, String desc) {
this.code = code;
this.desc = desc;
}
public int getCode() {
return code;
}
public String getDesc() {
return desc;
}
}
package org.arch.enums;
import lombok.AllArgsConstructor;
import lombok.Getter;
/**
* Business 类型枚举
*
* @author admin
* @date 2024/01/12
*/
@Getter
@AllArgsConstructor
public enum BusinessTypeEnum {
APP(",aa-", "应用架构"),
BUSI("ab-", "业务架构"),
DATA("ad-", "数据架构"),
SAFE("as-", "安全架构"),
TECH("at-", "技术架构");
private final String code;
private final String name;
}
package org.arch.enums;
import lombok.AllArgsConstructor;
import lombok.Getter;
@Getter
@AllArgsConstructor
public enum DelFlagEnum {
SHOW(0,"显示"),
HIDE(1,"隐藏");
private Integer code;
private String name;
}
package org.arch.enums;
import lombok.AllArgsConstructor;
import lombok.Getter;
@Getter
@AllArgsConstructor
public enum DirectoryTypeEnum {
VARTICAL_TABLE("vartical_table", "纵向表格"),
HORIZONTAL_TABLE("horizontal_table", "横向表格"),
RICH_TEXT("rich_text", "富文本框");
private String type;
private String mean;
}
package org.arch.enums;
import lombok.AllArgsConstructor;
import lombok.Getter;
/**
* 是否可用枚举类
*/
@Getter
@AllArgsConstructor
public enum EnableEnum {
ENABLE(1,"启用"),
UN_ENABLE(0,"禁用"),
;
/**
* 错误码
*/
private int code;
/**
* 错误信息
*/
private String msg;
}
package org.arch.enums;
import lombok.AllArgsConstructor;
import lombok.Getter;
/**
* 是否可用枚举类
*/
@Getter
@AllArgsConstructor
public enum IsDeleteEnum {
DELETE(1,"已删除"),
NOT_DELETE(0,"未删除"),
;
/**
* 错误码
*/
private int code;
/**
* 错误信息
*/
private String msg;
}
package org.arch.enums;
import lombok.AllArgsConstructor;
import lombok.Getter;
/**
*@Description:描述审批状态枚举类
*@Author:liu
*@Date:2021/7/22 15:31
*@Version 1.0
*/
@Getter
@AllArgsConstructor
public enum IsExaApproveEnum {
EXA_APPROVE("1","已审批"),
NOT_EXA_APPROVE("0","未审批"),
;
/**
* 状态码
*/
private String code;
/**
* 状态信息
*/
private String msg;
}
package org.arch.enums;
import lombok.AllArgsConstructor;
import lombok.Getter;
/**
* 菜单类型
*/
@Getter
@AllArgsConstructor
public enum MenuTypeEnum {
CATALOG(0,"目录"),
MENU(1,"菜单"),
BUTTON(2,"按钮"),
;
/**
* 编码
*/
private int code;
/**
* 名称
*/
private String name;
}
package org.arch.enums;
import lombok.AllArgsConstructor;
import lombok.Getter;
/**
* 1.可研
* 2.计划
* 3.采购
* 4.合同
* 5.实施
* 6.验收
* 7.决算
* 8.转资
*
* @author xh13k
* @date 2023/05/04
*/
@Getter
@AllArgsConstructor
public enum PrjLinkEnum {
PRJ_PRE("1", "可研"),
PRJ_BUILD("2", "计划"),
PRJ_BUY("3", "采购"),
PRJ_CONTRACT("4", "合同"),
PRJ_WORK("5", "实施"),
PRJ_CHECK("6", "验收"),
PRJ_FINAL("7", "决算"),
PRJ_TRANS("8", "转资");
private String code;
private String name;
public static String getNameByCode(String code) {
for (PrjLinkEnum prjLinkEnum : PrjLinkEnum.values()) {
if (prjLinkEnum.getCode().equals(code)) {
return prjLinkEnum.getName();
}
}
return null;
}
}
package org.arch.enums;
import lombok.AllArgsConstructor;
import lombok.Getter;
/**
* 1:项目前期
* 2:项目建设
* 3:项目验收
*
* @author xh13k
* @date 2023/05/04
*/
@Getter
@AllArgsConstructor
public enum PrjStateEnum {
PRJ_PRE("1", "项目前期"),
PRJ_BUILD("2", "项目建设"),
PRJ_CHECK("3", "项目验收");
private String code;
private String name;
public static String getNameByCode(String code) {
for (PrjStateEnum prjStateEnum : PrjStateEnum.values()) {
if (prjStateEnum.getCode().equals(code)) {
return prjStateEnum.getName();
}
}
return null;
}
}
package org.arch.enums;
import lombok.AllArgsConstructor;
import lombok.Getter;
/**
* 用户性别
*/
@Getter
@AllArgsConstructor
public enum SexEnum {
UN_KNOW(0,"未知"),
MAN(1,"男"),
WOMAN(2,"女"),
;
/**
* 错误码
*/
private int code;
/**
* 错误信息
*/
private String name;
}
package org.arch.enums;
import lombok.AllArgsConstructor;
import lombok.Getter;
/**
* 状态类型字段值的枚举类
*/
@Getter
@AllArgsConstructor
public enum StatusEnum {
//文档模板状态值
TEMPLATE_CREATED("0", "已创建"),
TEMPLATE_EDIT("1", "编制中"),
TEMPLATE_USED("2", "执行中"),
TEMPLATE_UNUSED("2", "已禁用"),
FSR_BACK("0", "驳回"),
FSR_EDIT("1", "编制"),
FSR_TRIAL("2", "初审"),
FSR_SIGN("3", "会签"),
FSR_UPDATE("4", "修正"),
FSR_PASS("5", "通过"),
FSR_TABLE_CONTENT_BEF("1", "原有"),
FSR_TABLE_CONTENT_UPD("2", "优化"),
FSR_TABLE_CONTENT_NEW("3", "新增")
;
private String status;
private String mean;
}
package org.arch.enums;
import lombok.AllArgsConstructor;
import lombok.Getter;
@Getter
@AllArgsConstructor
public enum TypeEnum {
//模板类型
TEMPLATE_FSR("可研模板", "0"),
TEMPLATE_ADS("概设模板", "1");
private String name;
private String value;
}
package org.arch.enums;
import lombok.AllArgsConstructor;
import lombok.Getter;
@Getter
@AllArgsConstructor
public enum UserTypeEnum {
TEMPORARY_STAFF(0,"临时员工"),
REGULAR_EMPLOYEE(1,"正式员工"),
;
/**
* 编码
*/
private int code;
/**
* 名称
*/
private String name;
}
package org.arch.enums;
import lombok.AllArgsConstructor;
import lombok.Getter;
/**
* 版本状态
*/
@Getter
@AllArgsConstructor
public enum VersionStatusEnum {
CURR_VERSION("1","当前版本"),
HISTORY_VERSION("2","历史版本"),
;
/**
* 错误码
*/
private String code;
/**
* 错误信息
*/
private String name;
}
package org.arch.enums;
import lombok.AllArgsConstructor;
import lombok.Getter;
@Getter
@AllArgsConstructor
public enum ViewTypeEnum {
SHOW_TYPE(1,"显示类型"),
NORMAL_TYPE(0,"常规类型");
private Integer code;
private String name;
}
package org.arch.exception;
/**
* 自定义异常
*
*/
public class BDException extends RuntimeException {
private static final long serialVersionUID = 1L;
private String msg;
private int code = 500;
public BDException(String msg) {
super(msg);
this.msg = msg;
}
public BDException(String msg, Throwable e) {
super(msg, e);
this.msg = msg;
}
public BDException(String msg, int code) {
super(msg);
this.msg = msg;
this.code = code;
}
public BDException(String msg, int code, Throwable e) {
super(msg, e);
this.msg = msg;
this.code = code;
}
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
public int getCode() {
return code;
}
public void setCode(int code) {
this.code = code;
}
}
package org.arch.exception;
import lombok.Data;
import org.arch.enums.ExceptionEnum;
/**
* 基础错误
*/
@Data
public class BaseException extends Exception{
private int code;
public int getCode() {
return code;
}
/**
* 错误实例化
* @param code 错误码
* @param msg 错误信息
*/
public BaseException(int code,String msg){
super(msg);
this.code = code;
}
/**
* 错误实例化
* @param exceptionEnum 错误枚举
*/
public BaseException(ExceptionEnum exceptionEnum){
super(exceptionEnum.getMsg());
this.code = exceptionEnum.getCode();
}
}
package org.arch.exception;
import cn.hutool.core.util.StrUtil;
import io.swagger.annotations.ApiModel;
import lombok.Getter;
import lombok.Setter;
/**
* 通用异常
*
* @date 2020/4/8 15:54
*/
@ApiModel(description = "通用异常")
@Getter
@Setter
public class CommonException extends RuntimeException {
private Integer code;
private String msg;
public CommonException() {
super("服务器异常");
this.code = 500;
this.msg = "服务器异常";
}
public CommonException(String msg, Object... arguments) {
super(StrUtil.format(msg, arguments));
this.code = 500;
this.msg = StrUtil.format(msg, arguments);
}
public CommonException(Integer code, String msg, Object... arguments) {
super(StrUtil.format(msg, arguments));
this.code = code;
this.msg = StrUtil.format(msg, arguments);
}
}
package org.arch.exception;
import org.apache.shiro.authc.AuthenticationException;
import org.arch.Result;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.http.HttpStatus;
import org.springframework.http.converter.HttpMessageNotReadableException;
import org.springframework.validation.BindException;
import org.springframework.web.bind.MethodArgumentNotValidException;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.ResponseStatus;
import org.springframework.web.bind.annotation.RestControllerAdvice;
import javax.servlet.http.HttpServletRequest;
import javax.validation.ConstraintViolation;
import javax.validation.ConstraintViolationException;
import java.util.stream.Collectors;
/**
* 全局错误处理
*/
@RestControllerAdvice
public class GlobalExceptionTranslator {
private Logger log = LoggerFactory.getLogger(GlobalExceptionTranslator.class);
@ExceptionHandler(value = BaseException.class)
@ResponseBody
public Result baseExceptionHandler(HttpServletRequest req, BaseException be) {
be.printStackTrace();
log.error(be.getMessage(), be);
return Result.error(be.getCode(), be.getMessage());
}
@ExceptionHandler(value = BDException.class)
@ResponseBody
public Result baseExceptionHandler(HttpServletRequest req, BDException be) {
be.printStackTrace();
log.error(be.getMessage(), be);
return Result.error(be.getCode(), be.getMessage());
}
@ExceptionHandler(value = IllegalArgumentException.class)
@ResponseBody
public Result baseExceptionHandler(HttpServletRequest req, IllegalArgumentException be) {
be.printStackTrace();
log.error(be.getMessage(), be);
return Result.error(be.getMessage());
}
@ExceptionHandler(value = AuthenticationException.class)
@ResponseBody
public Result baseExceptionHandler(HttpServletRequest req, AuthenticationException ae) {
ae.printStackTrace();
log.error(ae.getMessage(), ae);
return Result.error(401, "登录失效或者登录验证失败!");
}
/**
* 统一处理请求参数校验(实体对象传参)
*
* @param e HttpMessageNotReadableException异常信息
* @return 响应数据
*/
@ExceptionHandler(HttpMessageNotReadableException.class)
@ResponseStatus(HttpStatus.BAD_REQUEST)
public Result handleBindException(HttpMessageNotReadableException e) {
return Result.error("请求参数错误");
}
/**
* MethodArgumentNotValidException-Spring封装的参数验证异常处理
* <p>MethodArgumentNotValidException:作用于 @Validated @Valid 注解,接收参数加上@RequestBody注解(json格式)才会有这种异常。</p>
*
* @param e MethodArgumentNotValidException异常信息
* @return 响应数据
*/
@ExceptionHandler(value = MethodArgumentNotValidException.class)
public Result<?> methodArgumentNotValidExceptionHandler(MethodArgumentNotValidException e) {
String msg = e.getBindingResult().getFieldErrors()
.stream()
.map(n -> String.format("%s: %s", n.getField(), n.getDefaultMessage()))
.reduce((x, y) -> String.format("%s; %s", x, y))
.orElse("参数输入有误");
log.error("MethodArgumentNotValidException异常,参数校验异常:{}", msg);
return Result.error(msg);
}
/**
* BindException异常处理
* <p>BindException: 作用于@Validated @Valid 注解,仅对于表单提交有效,对于以json格式提交将会失效</p>
*
* @param e BindException异常信息
* @return 响应数据
*/
@ResponseStatus(HttpStatus.BAD_REQUEST)
@ExceptionHandler(BindException.class)
public Result<?> bindExceptionHandler(BindException e) {
String msg = e.getBindingResult().getFieldErrors()
.stream()
.map(n -> String.format("%s: %s", n.getField(), n.getDefaultMessage()))
.reduce((x, y) -> String.format("%s; %s", x, y))
.orElse("参数输入有误");
log.error("BindException异常,参数校验异常:{}", msg);
return Result.error(msg);
}
/**
* ConstraintViolationException-jsr规范中的验证异常,嵌套检验问题
* <p>ConstraintViolationException:作用于 @NotBlank @NotNull @NotEmpty 注解,校验单个String、Integer、Collection等参数异常处理。</p>
* <p>注:Controller类上必须添加@Validated注解,否则接口单个参数校验无效</p>
*
* @param e ConstraintViolationException异常信息
* @return 响应数据
*/
@ResponseStatus(HttpStatus.BAD_REQUEST)
@ExceptionHandler(value = ConstraintViolationException.class)
public Result<?> constraintViolationExceptionHandler(ConstraintViolationException e) {
String msg = e.getConstraintViolations()
.stream()
.map(ConstraintViolation::getMessage)
.collect(Collectors.joining("; "));
log.error("ConstraintViolationException,参数校验异常:{}", msg);
return Result.error(msg);
}
@ExceptionHandler(value = Exception.class)
@ResponseBody
public Result handleError(Exception e) {
log.info("系统错误:" + e.getMessage());
e.printStackTrace();
return Result.error();
}
}
package org.arch.utils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import javax.crypto.*;
import java.io.UnsupportedEncodingException;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
import java.security.SecureRandom;
/**
* AES加密解密工具类
* @author dolyw.com
* @date 2018/8/31 16:39
*/
@Component
public class AesCipherUtil {
/**
* AES密码加密私钥(Base64加密)
*/
private static String encryptAESKey;
// private static final byte[] KEY = { 1, 1, 33, 82, -32, -85, -128, -65 };
//@Value("${encryptAESKey}")
public void setEncryptAESKey(String encryptAESKey) {
AesCipherUtil.encryptAESKey = encryptAESKey;
}
/**
* logger
*/
private static final Logger logger = LoggerFactory.getLogger(AesCipherUtil.class);
/**
* 加密
* @param str
* @return java.lang.String
* @author dolyw.com
* @date 2018/8/31 16:56
*/
public static String enCrypto(String str) {
try {
// Security.addProvider(new com.sun.crypto.provider.SunJCE());
// 实例化支持AES算法的密钥生成器(算法名称命名需按规定,否则抛出异常)
// KeyGenerator 提供对称密钥生成器的功能,支持各种算法
KeyGenerator keygen = KeyGenerator.getInstance("AES");
// 将私钥encryptAESKey先Base64解密后转换为byte[]数组按128位初始化
SecureRandom secureRandom = SecureRandom.getInstance("SHA1PRNG");
secureRandom.setSeed(Base64ConvertUtil.decode(encryptAESKey).getBytes());
keygen.init(128, secureRandom);
// SecretKey 负责保存对称密钥 生成密钥
SecretKey desKey = keygen.generateKey();
// 生成Cipher对象,指定其支持的AES算法,Cipher负责完成加密或解密工作
Cipher c = Cipher.getInstance("AES");
// 根据密钥,对Cipher对象进行初始化,ENCRYPT_MODE表示加密模式
c.init(Cipher.ENCRYPT_MODE, desKey);
byte[] src = str.getBytes();
// 该字节数组负责保存加密的结果
byte[] cipherByte = c.doFinal(src);
// 先将二进制转换成16进制,再返回Base64加密后的String
return Base64ConvertUtil.encode(HexConvertUtil.parseByte2HexStr(cipherByte));
} catch (NoSuchAlgorithmException | NoSuchPaddingException e) {
logger.error("getInstance()方法异常:{}", e.getMessage());
throw new RuntimeException("getInstance()方法异常:" + e.getMessage());
} catch (UnsupportedEncodingException e) {
logger.error("Base64加密异常:{}", e.getMessage());
throw new RuntimeException("Base64加密异常:" + e.getMessage());
} catch (InvalidKeyException e) {
logger.error("初始化Cipher对象异常:{}", e.getMessage());
throw new RuntimeException("初始化Cipher对象异常:" + e.getMessage());
} catch (IllegalBlockSizeException | BadPaddingException e) {
logger.error("加密异常,密钥有误:{}", e.getMessage());
throw new RuntimeException("加密异常,密钥有误:" + e.getMessage());
}
}
/**
* 解密
* @param str
* @return java.lang.String
* @author dolyw.com
* @date 2018/8/31 16:56
*/
public static String deCrypto(String str) {
try {
// Security.addProvider(new com.sun.crypto.provider.SunJCE());
// 实例化支持AES算法的密钥生成器(算法名称命名需按规定,否则抛出异常)
// KeyGenerator 提供对称密钥生成器的功能,支持各种算法
KeyGenerator keygen = KeyGenerator.getInstance("AES");
// 将私钥encryptAESKey先Base64解密后转换为byte[]数组按128位初始化
SecureRandom secureRandom = SecureRandom.getInstance("SHA1PRNG");
secureRandom.setSeed(Base64ConvertUtil.decode(encryptAESKey).getBytes());
keygen.init(128, secureRandom);
// SecretKey 负责保存对称密钥 生成密钥
SecretKey desKey = keygen.generateKey();
// 生成Cipher对象,指定其支持的AES算法,Cipher负责完成加密或解密工作
Cipher c = Cipher.getInstance("AES");
// 根据密钥,对Cipher对象进行初始化,DECRYPT_MODE表示解密模式
c.init(Cipher.DECRYPT_MODE, desKey);
// 该字节数组负责保存解密的结果,先对str进行Base64解密,将16进制转换为二进制
byte[] cipherByte = c.doFinal(HexConvertUtil.parseHexStr2Byte(Base64ConvertUtil.decode(str)));
return new String(cipherByte);
} catch (NoSuchAlgorithmException | NoSuchPaddingException e) {
logger.error("getInstance()方法异常:{}", e.getMessage());
throw new RuntimeException("getInstance()方法异常:" + e.getMessage());
} catch (UnsupportedEncodingException e) {
logger.error("Base64解密异常:{}", e.getMessage());
throw new RuntimeException("Base64解密异常:" + e.getMessage());
} catch (InvalidKeyException e) {
logger.error("初始化Cipher对象异常:{}", e.getMessage());
throw new RuntimeException("初始化Cipher对象异常:" + e.getMessage());
} catch (IllegalBlockSizeException | BadPaddingException e) {
logger.error("解密异常,密钥有误:{}", e.getMessage());
throw new RuntimeException("解密异常,密钥有误:" + e.getMessage());
}
}
}
package org.arch.util;
package org.arch.utils;
import java.io.UnsupportedEncodingException;
import java.util.Base64;
......
package org.arch.utils;
/**
* 进制转换工具
* @author dolyw.com
* @date 2018/8/31 17:23
*/
public class HexConvertUtil {
private HexConvertUtil() {}
/**
* 1
*/
private static final Integer INTEGER_1 = 1;
/**
* 2
*/
private static final Integer INTEGER_2 = 2;
/**
* 将二进制转换成16进制
* @param bytes
* @return java.lang.String
* @author dolyw.com
* @date 2018/8/31 17:20
*/
public static String parseByte2HexStr(byte[] bytes) {
StringBuilder sb = new StringBuilder();
for (byte buff : bytes) {
String hex = Integer.toHexString(buff & 0xFF);
if (hex.length() == INTEGER_1) {
hex = '0' + hex;
}
sb.append(hex.toUpperCase());
}
return sb.toString();
}
/**
* 将16进制转换为二进制
* @param hexStr
* @return byte[]
* @author dolyw.com
* @date 2018/8/31 17:21
*/
public static byte[] parseHexStr2Byte(String hexStr) {
if (hexStr.length() < INTEGER_1) {
return null;
}
byte[] result = new byte[hexStr.length() / INTEGER_2];
for (int i = 0, len = hexStr.length() / INTEGER_2; i < len; i++) {
int high = Integer.parseInt(hexStr.substring(i * 2, i * 2 + 1), 16);
int low = Integer.parseInt(hexStr.substring(i * 2 + 1, i * 2 + 2), 16);
result[i] = (byte) (high * 16 + low);
}
return result;
}
}
package org.arch.util;
package org.arch.utils;
import com.auth0.jwt.JWT;
import com.auth0.jwt.JWTVerifier;
import com.auth0.jwt.algorithms.Algorithm;
import com.auth0.jwt.exceptions.JWTDecodeException;
import com.auth0.jwt.interfaces.DecodedJWT;
import org.arch.exception.BDException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import org.springframework.web.context.request.ServletRequestAttributes;
import javax.servlet.http.HttpServletRequest;
import java.io.UnsupportedEncodingException;
import java.util.Date;
import static org.springframework.web.context.request.RequestContextHolder.getRequestAttributes;
/**
* JAVA-JWT工具类
* @author Wang926454
......@@ -44,14 +41,7 @@ public class JwtUtil {
public void setAccessTokenExpireTime(String accessTokenExpireTime) {
JwtUtil.accessTokenExpireTime = accessTokenExpireTime;
}
public static HttpServletRequest getRequest() {
// RequestAttributes requestAttributes = getRequestAttributes();
return ((ServletRequestAttributes) getRequestAttributes()).getRequest();
}
public static String getToken() {
HttpServletRequest request = getRequest();
return request.getHeader("Authorization");
}
@Value("${encryptJWTKey}")
public void setEncryptJWTKey(String encryptJWTKey) {
JwtUtil.encryptJWTKey = encryptJWTKey;
......@@ -67,15 +57,14 @@ public class JwtUtil {
public static boolean verify(String token) {
try {
// 帐号加JWT私钥解密
String secret = getClaim(token,"account") + Base64ConvertUtil.decode(encryptJWTKey);
String secret = getClaim(token, Constant.ACCOUNT) + Base64ConvertUtil.decode(encryptJWTKey);
Algorithm algorithm = Algorithm.HMAC256(secret);
JWTVerifier verifier = JWT.require(algorithm).build();
verifier.verify(token);
return true;
} catch (Exception e) {
} catch (UnsupportedEncodingException e) {
logger.error("JWTToken认证解密出现UnsupportedEncodingException异常:{}", e.getMessage());
return false;
// throw new RuntimeException("JWTToken认证解密出现UnsupportedEncodingException异常:" + e.getMessage());
throw new RuntimeException("JWTToken认证解密出现UnsupportedEncodingException异常:" + e.getMessage());
}
}
......@@ -105,9 +94,9 @@ public class JwtUtil {
* @param currentTimeMillis
* @return
*/
public static String sign(String account, String currentTimeMillis) throws Exception {
public static String sign(String account, String currentTimeMillis) {
if(StringUtils.isBlank(account)){
throw new Exception("用户账户信息为空!");
throw new BDException("用户账户信息为空!");
}
try {
// 帐号加JWT私钥加密
......
package org.arch.utils;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* @author 29321
* @year 2020
*/
public class RequestUtils {
public static HttpServletResponse getResponse() {
ServletRequestAttributes servletRequestAttributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
HttpServletResponse response = servletRequestAttributes.getResponse();
return response;
}
public static HttpServletRequest getRequest() {
HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes())
.getRequest();
return request;
}
/**
* @Description 获得头部
* @author Viven
*/
public static String getHeader(HttpServletRequest request, String name) {
return request.getHeader(name);
}
/**
* 获得请求的头信息
*
* @return
*/
public static String getAgent(HttpServletRequest request) {
String agent = request.getHeader("User-Agent");
return agent;
}
/**
* 获取请求来的ip地址
*
* @param request
* @return
*/
public static String getRemoteIp(HttpServletRequest request) {
String ip = request.getHeader("x-forwarded-for");
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = request.getHeader("Proxy-Client-IP");
}
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = request.getHeader("WL-Proxy-Client-IP");
}
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = request.getHeader("HTTP_CLIENT_IP");
}
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = request.getHeader("HTTP_X_FORWARDED_FOR");
}
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = request.getHeader("X-Real-IP");//nginx 服务器
}
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = request.getRemoteAddr();
}
if (ip != null && ip.length() > 15) {
if (ip.indexOf(",") > 0) {
ip = ip.substring(0, ip.indexOf(","));
}
}
return ip;
}
}
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.arch</groupId>
<artifactId>arch-clouds</artifactId>
<version>1.0-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath>
</parent>
<name>公共服务模块</name>
<artifactId>common</artifactId>
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>org.arch</groupId>
<artifactId>mybatis</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
</dependencies>
</project>
\ No newline at end of file
package org.arch.common.entity;
package org.arch.common;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import java.util.Date;
......
package org.arch.common.archoverall.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.arch.enums.ArchiPrjReviewEnum;
import java.util.List;
@Data
@ApiModel(value = "goverAdsParserContentDTO对象", description = "概设解析内容")
public class AdsParserContentDTO {
/**
* 需求id
*/
@ApiModelProperty(value = "需求id")
private Integer needId;
/**
* 需求名称
*/
@ApiModelProperty(value = "需求名称")
private String needName;
/**
* 批次年度
*/
@ApiModelProperty(value = "批次年度")
private String year;
/**
* 批次年度
*/
@ApiModelProperty(value = "批次年度")
private String buildtype;
@ApiModelProperty(value = "技术路线表,架构遵从表,功能清单,数据实体清单,系统集成清单")
private ArchiPrjReviewEnum archiPrjReviewEnum;
/**
* 书签集合
*/
@ApiModelProperty(value = "标签范围")
private List<DocMarkTag> docMarkTag;
}
package org.arch.common.archoverall.dto;
import com.alibaba.fastjson.JSONObject;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;
import java.util.List;
/**
* <p>
* 系统架构管控要求
* </p>
*
* @author java
* @since 2024-02-27
*/
@EqualsAndHashCode(callSuper = true)
@Data
@ApiModel(value = "AppArchiConRequireDTO对象", description = "系统架构管控要求")
public class AppArchiConRequireDTO extends BasePageEntity {
@ApiModelProperty(value = "项目ID")
private Long prjId;
@ApiModelProperty(value = "项目编码")
private String prjCode;
@ApiModelProperty(value = "项目名称")
private String prjName;
@ApiModelProperty(value = "系统ID")
private Long appId;
@ApiModelProperty(value = "系统编码")
private String appCode;
@ApiModelProperty(value = "系统名称")
private String appName;
@ApiModelProperty(value = "项目经理")
private String projectManager;
@ApiModelProperty(value = "实际竣工时间")
@DateTimeFormat(pattern = "yyyy-MM-dd")
@JsonFormat(pattern = "yyyy-MM-dd")
private Date cmplDate;
@ApiModelProperty(value = "项目性质,1:新建、2:续建")
private Long prjPlanClass;
@ApiModelProperty(value = "建管单位")
private Long manageOrgId;
@ApiModelProperty(value = "建管部门")
private Long manageDeptId;
@ApiModelProperty(value = "建设类型")
private Byte buildType;
@ApiModelProperty(value = "承建单位")
private Byte buildOrg;
@ApiModelProperty(value = "前期项目ID")
private Long agoPrjId;
@ApiModelProperty(value = "前期项目编码")
private String agoPrjCode;
@ApiModelProperty(value = "前期项目名称")
private String agoPrjName;
@ApiModelProperty(value = "开始时间")
@DateTimeFormat(pattern = "yyyy-MM-dd")
@JsonFormat(pattern = "yyyy-MM-dd")
private Date beginTime;
@ApiModelProperty(value = "结束时间")
@DateTimeFormat(pattern = "yyyy-MM-dd")
@JsonFormat(pattern = "yyyy-MM-dd")
private Date endTime;
@ApiModelProperty(value = "JSON综合字段")
private List<JSONObject> filesValue;
}
package org.arch.common.archoverall.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.arch.enums.ArchiPrjReviewEnum;
/**
* <p>
* 系统架构管控要求
* </p>
*
* @author java
* @since 2024-02-27
*/
@Data
@ApiModel(value = "AppArchiConRequireDTO对象", description = "系统架构管控要求")
public class AppArchiConRequireReviewDTO {
@ApiModelProperty(value = "审查类型")
private ArchiPrjReviewEnum reviewEnum;
@ApiModelProperty(value = "项目Id")
private Long prjId;
@ApiModelProperty(value = "评审意见")
private String reviewSuggestion;
@ApiModelProperty(value = "评审状态")
private Integer reviewState;
}
package org.arch.common.archoverall.dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.arch.enums.ArchiPrjReviewEnum;
@Data
public class AppArchiPostilReqDTO {
@ApiModelProperty(value = "项目Id")
private Long prjId;
@ApiModelProperty(value = "业务ID类型:1项目附件,2需求附件")
private Long busiIdType;
@ApiModelProperty(value = "业务资料类型: 技术规范书\n" +
"可行性研究报告\n" +
"需求规格说明书\n" +
"概要设计说明书\n" +
"安全防护方案")
private String busiFileName;
@ApiModelProperty(value = "当前页")
private Integer current = 1;
@ApiModelProperty(value = "每页显示条数")
private Integer pageSize = 10;
@ApiModelProperty(value = "审查类型")
private ArchiPrjReviewEnum reviewEnum;
}
package org.arch.common.archoverall.dto;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;
/**
* <p>
* 系统列表信息
* </p>
*
* @author java
* @since 2024-02-27
*/
@EqualsAndHashCode(callSuper = true)
@Data
@ApiModel(value = "AppInfo对象", description = "系统信息传输对象")
public class AppInfoDTO extends BasePageEntity {
@ApiModelProperty(value = "系统应用ID")
private Long appId;
@ApiModelProperty(value = "系统编码")
private String appCode;
@ApiModelProperty(value = "系统名称")
private String appName;
@ApiModelProperty(value = "上线时间")
@DateTimeFormat(pattern = "yyyy-MM-dd")
@JsonFormat(pattern = "yyyy-MM-dd")
private Date onlineDate;
@ApiModelProperty(value = "项目名称")
private String projectName;
@ApiModelProperty(value = "建管单位")
private Long manageOrgId;
@ApiModelProperty(value = "建管部门")
private Long manageDeptId;
@ApiModelProperty(value = "建管单位名称")
private String manageOrgName;
@ApiModelProperty(value = "建管部门名称")
private String manageDeptName;
@ApiModelProperty(value = "承建类型")
private Byte buildType;
@ApiModelProperty(value = "承建单位")
private Byte buildOrg;
@ApiModelProperty(value = "承建单位名称")
private String buildOrgName;
@ApiModelProperty(value = "项目经理")
private String projectManager;
@ApiModelProperty(value = "前期项目")
private Long orignProjectId;
@ApiModelProperty(value = "关联系统")
private Long relationAppId;
}
package org.arch.common.archoverall.dto;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
@ApiModel(value = "中台服务清单请求参数", description = "中台服务清单请求参数")
public class ArchiAbilityAssetsDTO {
@ApiModelProperty(value = "服务清单ID")
// @TableId(value = "inventory_id", type = IdType.INPUT)
private Long inventoryId;
@ApiModelProperty(value = "中台服务编码")
private String abilityCode;
@ApiModelProperty(value = "中台服务名称")
private String abilityName;
@ApiModelProperty(value = "架构资产ID")
@JsonSerialize(using = ToStringSerializer.class)
private Long assetId;
@ApiModelProperty(value = "架构资产编码")
private String assetCode;
@ApiModelProperty(value = "架构资产名称")
private String assetName;
@ApiModelProperty(value = "架构类型Id")
private String archiTypeId;
@ApiModelProperty(value = "架构类型")
private String archiType;
@ApiModelProperty(value = "资产的父级节点串")
private String parentAssetIds;
@ApiModelProperty(value = "资产的父级节点名称串")
private String parentAssetNames;
}
package org.arch.common.archoverall.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
@ApiModel(value = "中台服务清单关联资产表请求参数", description = "中台服务清单关联资产表请求参数")
public class ArchiAbilityAssetsQryReqDTO extends BasePageEntity {
@ApiModelProperty(value = "服务清单ID")
private Long inventoryId;
@ApiModelProperty(value = "架构类型Id")
private String archiTypeId;
@ApiModelProperty(value = "架构类型")
private String archiType;
}
package org.arch.common.archoverall.dto;
import io.swagger.annotations.ApiModel;
import lombok.Data;
import java.util.List;
@Data
@ApiModel(value = "中台服务清单关联资产表请求参数", description = "中台服务清单关联资产表请求参数")
public class ArchiAbilityAssetsReqDTO {
List<ArchiAbilityAssetsDTO> assetsDTOS;
}
package org.arch.common.archoverall.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.arch.enums.ArchiAbilityInventoryEnum;
@Data
@ApiModel(value = "中台服务清单根据指标下钻资产列表", description = "中台服务清单根据指标下钻资产列表")
public class ArchiAbilityInveStatReqDTO extends BasePageEntity {
@ApiModelProperty(value = "资源类型 1 中台服务清单 2 业务信息 3 应用服务信息 4 数据实体信息 5 技术组件信息")
private String abilitySource;
@ApiModelProperty(value = "服务清单ID")
private Long inventoryId;
@ApiModelProperty(value = "架构类型Id")
private String archiTypeId;
@ApiModelProperty(value = "架构类型")
private String archiType;
@ApiModelProperty(value = "指标统计有关的枚举类")
private ArchiAbilityInventoryEnum inventoryEnum;
}
package org.arch.common.archoverall.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.ArrayList;
import java.util.LinkedHashMap;
@ApiModel(value = "中台服务清单根据指标下钻动态表格", description = "中台服务清单根据指标下钻动态表格")
@Data
public class ArchiAbilityInveStatResDTO {
@ApiModelProperty(value = "列表表格表头")
private ArrayList<String> titleList;
// @ApiModelProperty(value = "列表数据")
// private ArrayList<ArrayList<String>> dataList;
@ApiModelProperty(value = "列表数据")
private ArrayList<LinkedHashMap<String,Object>> dataList;
}
package org.arch.common.archoverall.dto;
import io.swagger.annotations.ApiModel;
import lombok.Data;
@Data
@ApiModel(value = "应用服务信息请求参数", description = "应用服务信息请求参数")
public class ArchiAbilityInventoryAppDTO extends BasePageEntity {
}
package org.arch.common.archoverall.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
@ApiModel(value = "业务信息请求参数", description = "业务信息请求参数")
public class ArchiAbilityInventoryBusDTO extends BasePageEntity {
@ApiModelProperty(value = "中台服务名称")
private String abilityName;
@ApiModelProperty(value = "资源类型 1 中台服务清单 2 业务信息 3 应用服务信息 4 数据实体信息 5 技术组件信息")
private String abilitySource;
@ApiModelProperty(value = "业务活动名称")
private String businessActName;
@ApiModelProperty(value = "统计时间")
private String statTime;
}
package org.arch.common.archoverall.dto;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;
/**
* <p>
* 能力清单
* </p>
*
* @author author
* @since 2024-01-11
*/
@Data
@ApiModel(value = "能力清单", description = "能力清单传输对象")
public class ArchiAbilityInventoryDTO {
@ApiModelProperty(value = "当前页")
private Integer current;
@ApiModelProperty(value = "每页显示条数")
private Integer pageSize;
@ApiModelProperty(value = "总条数")
private Integer total;
@ApiModelProperty(value = "能力清单ID")
private Long inventoryId;
@ApiModelProperty(value = "资源名称")
private String inventoryName;
@ApiModelProperty(value = "能力来源")
private String abilitySource;
@ApiModelProperty(value = "资源类型(1:业务中台服务能力,2:数据中台资源目录,3:数据中台资源服务,4:技术中台公共技术能力)")
private String abilityType;
@ApiModelProperty(value = "所属部门id")
private Integer departId;
@ApiModelProperty(value = "部门名称")
private String departName;
@ApiModelProperty(value = "单位id")
private Integer compId;
@ApiModelProperty(value = "单位名称")
private String compName;
@ApiModelProperty(value = "发布时间")
@DateTimeFormat(pattern = "yyyy-MM-dd")
@JsonFormat(pattern = "yyyy-MM-dd")
private Date publishTime;
@ApiModelProperty(value = "简介")
private String description;
@ApiModelProperty(value = "版本")
private String inventoryVersion;
@ApiModelProperty(value = "是否权威数据(0:否;1:是)")
private String isAuthority;
@ApiModelProperty(value = "是否盘点数据(0:否;1:是)")
private String isInventory;
@ApiModelProperty(value = "数据来源方式(1:接口传递;2:人工录入)")
private String sourceType;
@ApiModelProperty(value = "创建时间")
@DateTimeFormat(pattern = "yyyy-MM-dd")
@JsonFormat(pattern = "yyyy-MM-dd")
private Date createTime;
@ApiModelProperty(value = "创建人")
private Long createMan;
@ApiModelProperty(value = "最后一次修改时间")
@DateTimeFormat(pattern = "yyyy-MM-dd")
@JsonFormat(pattern = "yyyy-MM-dd")
private Date lastUpdateTime;
@ApiModelProperty(value = "最后一次修改人")
private Long lastUpdateMan;
@ApiModelProperty(value = "是否删除(0:未删除;1:已删除)")
private Byte delFlag;
@ApiModelProperty(value = "平台来源")
private String platformSource;
@ApiModelProperty(value = "服务类型")
private Integer serveType;
@ApiModelProperty(value = "服务状态")
private Integer serveState;
@ApiModelProperty(value = "服务描述")
private String serveRemark;
@ApiModelProperty(value = "模块")
private String module;
@ApiModelProperty(value = "状态 0:已停用 1:已发布 2:暂存")
private Integer state;
@ApiModelProperty(value = "中台服务编码")
// @TableField(exist = false)
private String abilityCode;
@ApiModelProperty(value = "中台服务名称")
// @TableField(exist = false)
private String abilityName;
@ApiModelProperty(value = "中台类型id")
// @TableField(exist = false)
private Integer midGroundId;
@ApiModelProperty(value = "中台类型名称")
// @TableField(exist = false)
private String midGroundName;
@ApiModelProperty(value = "中台名称id")
// @TableField(exist = false)
private Integer midPlatformId;
@ApiModelProperty(value = "中台名称")
// @TableField(exist = false)
private String midPlatformName;
}
package org.arch.common.archoverall.dto;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;
@Data
@ApiModel(value = "数据实体信息请求参数", description = "数据实体信息请求参数")
public class ArchiAbilityInventoryDataDTO extends BasePageEntity {
@ApiModelProperty(value = "中台服务名称")
private String abilityName;
@ApiModelProperty(value = "统计时间")
private String statTime;
@ApiModelProperty(value = "中台类型")
private String midGroundType;
@ApiModelProperty(value = "中台名称")
private String midGroundName;
@ApiModelProperty(value = "资产ID")
@JsonSerialize(using = ToStringSerializer.class)
private Long assetId;
@ApiModelProperty(value = "服务编码")
private String assetCode;
@ApiModelProperty(value = "资产名称")
private String assetName;
@ApiModelProperty(value = "架构类型(1 业务架构、2 应用架构、3 数据架构、4 技术架构、5 安全架构)")
private Integer archiTypeId;
@ApiModelProperty(value = "统计类型(1:服务清单关联统计;2:业务关联统计;3:应用关联统计;4:数据实体关联统计;5:技术组件关联统计)")
private Integer statType;
@ApiModelProperty(value = "分层统计(如果没有多层统计,关键字统计字段为空)")
private Integer statKey;
@ApiModelProperty(value = "开始时间")
@DateTimeFormat(pattern = "yyyy-MM-dd")
@JsonFormat(pattern = "yyyy-MM-dd")
private Date beginTime;
@ApiModelProperty(value = "结束时间")
@DateTimeFormat(pattern = "yyyy-MM-dd")
@JsonFormat(pattern = "yyyy-MM-dd")
private Date endTime;
}
package org.arch.common.archoverall.dto;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;
@Data
@ApiModel(value = "中台服务清单请求参数", description = "中台服务清单请求参数")
public class ArchiAbilityInventoryReqDTO extends BasePageEntity {
@ApiModelProperty(value = "中台服务清单id")
private Long inventoryId;
@ApiModelProperty(value = "中台服务名称")
private String abilityName;
@ApiModelProperty(value = "资源类型 1 中台服务清单 2 业务信息 3 应用服务信息 4 数据实体信息 5 技术组件信息")
private String abilitySource;
@ApiModelProperty(value = "中台类型id")
// @TableField(exist = false)
private String midGroundId;
@ApiModelProperty(value = "中台类型名称")
// @TableField(exist = false)
private String midGroundName;
@ApiModelProperty(value = "中台名称id")
// @TableField(exist = false)
private String midPlatformId;
@ApiModelProperty(value = "中台名称")
// @TableField(exist = false)
private String midPlatformName;
@ApiModelProperty(value = "统计时间")
private String statTime;
@ApiModelProperty(value = "发布时间")
@DateTimeFormat(pattern = "yyyy-MM-dd")
@JsonFormat(pattern = "yyyy-MM-dd")
private Date publishTime;
}
package org.arch.common.archoverall.dto;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;
@Data
@ApiModel(value = "能力清单", description = "能力清单传输对象")
public class ArchiAbilityInventoryResDTO {
@ApiModelProperty(value = "中台服务编码")
private String abilityCode;
@ApiModelProperty(value = "中台服务名称")
private String abilityName;
@ApiModelProperty(value = "服务类型 :1聚合服务,2规则服务,3数据服务,4原子服务")
private String serveType;
@ApiModelProperty(value = "模块")
private String module;
@ApiModelProperty(value = "中台类型")
private String midGroundType;
@ApiModelProperty(value = "中台名称")
private String midGroundName;
@ApiModelProperty(value = "服务调用频率")
private Integer serviceInvFreq;
@ApiModelProperty(value = "服务调用方数量")
private Integer serviceInvNum;
@ApiModelProperty(value = "操作实体数量")
private Integer oprEntityNum;
@ApiModelProperty(value = "支撑技术组件数量")
private Integer supportTecModNum;
@ApiModelProperty(value = "支撑的业务活动数量")
private Integer suppportBusActNum;
@ApiModelProperty(value = "关联的中台服务数量")
private Integer relMidServiceNum;
@ApiModelProperty(value = "状态 0:已停用 1:已发布 2:暂存")
private Integer state;
@ApiModelProperty(value = "发布时间")
@DateTimeFormat(pattern = "yyyy-MM-dd")
@JsonFormat(pattern = "yyyy-MM-dd")
private Date publishTime;
}
package org.arch.common.archoverall.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
@ApiModel(value = "技术组件信息请求参数", description = "技术组件信息请求参数")
public class ArchiAbilityInventoryTecDTO extends BasePageEntity {
@ApiModelProperty(value = "中台服务名称")
private String abilityName;
@ApiModelProperty(value = "资源类型 1 中台服务清单 2 业务信息 3 应用服务信息 4 数据实体信息 5 技术组件信息")
private String abilitySource;
@ApiModelProperty(value = "业务活动名称")
private String businessActName;
@ApiModelProperty(value = "统计时间")
private String statTime;
}
package org.arch.common.archoverall.dto;
import com.alibaba.fastjson.JSONObject;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;
import java.util.List;
/**
* <p>
* 资产架构
* </p>
*
* @author author
* @since 2024-01-09
*/
@EqualsAndHashCode(callSuper = true)
@Data
@ApiModel(value = "资产架构", description = "资产架构传输对象")
public class ArchiAssetCommonDTO extends BasePageEntity {
@ApiModelProperty(value = "当前页")
private Integer current;
@ApiModelProperty(value = "每页显示条数")
private Integer pageSize;
@ApiModelProperty(value = "总条数")
private Integer total;
@ApiModelProperty(value = "架构组件ID")
private Long assetId;
@ApiModelProperty(value = "架构组件名称")
private String assetName;
@ApiModelProperty(value = "资产编码,采用8位阶梯设计编码,通过编码识别层级")
private String assetCode;
@ApiModelProperty(value = "上级架构组件ID")
@JsonSerialize(using = ToStringSerializer.class)
private Long parentAssetId;
@ApiModelProperty(value = "上级架构组件名称")
private String parentAssetName;
@ApiModelProperty(value = "父级编码")
private String parentCode;
@ApiModelProperty(value = "版本ID")
private Long versionId;
@ApiModelProperty(value = "架构元素Id")
private Long archiEleId;
@ApiModelProperty(value = "架构类型")
private String archiType;
@ApiModelProperty(value = "架构归属")
private Byte archiBelongId;
@ApiModelProperty(value = "架构资产状态(字典中读取,1:现状态;2:目标态)")
private Byte archiAssetState;
@ApiModelProperty(value = "架构资产类型(架构视图、架构演进路线、业务活动资产等),必传")
private Byte archiAssetType;
@ApiModelProperty(value = "架构阶段(1:总体架构;2:系统架构),必传")
private Integer archiStage;
@ApiModelProperty(value = "架构资产类型关联的ID,目前架构视图关联archi_view表,必传")
private Long archiAssetTypeId;
@ApiModelProperty(value = "关联资产,实际用作兄弟关系连线,可支持多个target")
private List<JSONObject> targetAsset;
@ApiModelProperty(value = "创建时间")
@DateTimeFormat(pattern = "yyyy-MM-dd")
@JsonFormat(pattern = "yyyy-MM-dd")
private Date createTime;
@ApiModelProperty(value = "创建人")
private Long createMan;
@ApiModelProperty(value = "最后一次修改时间")
@DateTimeFormat(pattern = "yyyy-MM-dd")
@JsonFormat(pattern = "yyyy-MM-dd")
private Date lastUpdateTime;
@ApiModelProperty(value = "最后一次修改人")
private Long lastUpdateMan;
@ApiModelProperty(value = "JSON综合字段;将架构元素的属性和值利用Json数据存储")
private List<JSONObject> fieldsValue;
@ApiModelProperty(value = "扩展字段")
private String column01;
@ApiModelProperty(value = "扩展字段")
private String column02;
@ApiModelProperty(value = "组件类型名称")
private String eleName;
@ApiModelProperty(value = "旧版本ID")
private Long orignVersionId;
@ApiModelProperty(value = "排序")
private Integer sort;
@ApiModelProperty(value = "是否首页展示 0 展示 1 不展示")
private Byte isShow;
@ApiModelProperty(value = "原架构ID")
@JsonSerialize(using = ToStringSerializer.class)
private Long orignAssetId;
@ApiModelProperty(value = "是否删除 1:已删除 0:未删除")
private Integer delFlag;
@ApiModelProperty(value = "资产常量,必传。")
private String assetConstant;
@ApiModelProperty(value = "版本")
private String version;
@ApiModelProperty(value = "状态 0:已停用 1:已发布 2:暂存")
private Integer state;
@ApiModelProperty(value = "元素id集合")
private List<Long> eleIdList;
@ApiModelProperty(value = "架构视图 ID")
private Long archiViewId;
@ApiModelProperty(value = "承建类型:1统推,2自建")
private Integer buildType;
@ApiModelProperty(value = "是否继承:1是,2否")
private Integer isExtend;
@ApiModelProperty(value = "项目ID")
private Long prjId;
@ApiModelProperty(value = "项目编码")
private String prjCode;
@ApiModelProperty(value = "项目名称")
private String prjName;
@ApiModelProperty(value = "系统ID")
private Long appId;
@ApiModelProperty(value = "系统编码")
private String appCode;
@ApiModelProperty(value = "系统名称")
private String appName;
@ApiModelProperty(value = "资产id集合")
private List<Long> assetIdList;
@ApiModelProperty(value = "继承集合")
private List<ArchiAssetExtendDTO> extend;
}
package org.arch.common.archoverall.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.arch.enums.ArchiAssetEnum;
/**
* 资产DTO
*
* @author admin
* @date 2024/02/21
*/
@Data
@ApiModel(value = "资产")
public class ArchiAssetDTO {
@ApiModelProperty("资产ID")
private Long assetId;
@ApiModelProperty(value = "资产类型")
private ArchiAssetEnum assetEnum;
@ApiModelProperty(value = "资产名称")
private String assetName;
@ApiModelProperty("版本ID")
private Long versionId;
@ApiModelProperty("架构归属")
private String assertType;
@ApiModelProperty("架构归属ID")
private Long archiBelongId;
@ApiModelProperty(value = "架构资产状态(字典中读取,1:现状态;2:目标态)")
private Integer archiAssetState;
@ApiModelProperty("父资产ID")
private Long parentAssetId;
@ApiModelProperty("深度")
private Integer deep;
}
package org.arch.common.archoverall.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import org.arch.common.BaseEntity;
import javax.validation.constraints.NotNull;
/**
* 架构资产关系
*/
@EqualsAndHashCode(callSuper = true)
@ApiModel(description = "架构资产关系")
@Data
@AllArgsConstructor
@NoArgsConstructor
public class ArchiAssetEleRelaAddAndUpdateDTO extends BaseEntity {
/**
* 主键
*/
@ApiModelProperty(value = "主键")
private Long assetRelaId;
/**
* 资产关系名称
*/
@ApiModelProperty(value = "资产关系名称")
private String rsName;
/**
* 元素 ID
*/
@ApiModelProperty(value = "元素 ID")
@NotNull(message = "元素 ID不能为空")
private Long eleId;
/**
* 元素编码
*/
@ApiModelProperty(value = "元素编码")
private String eleCode;
/**
* 元素名称
*/
@ApiModelProperty(value = "元素名称")
private String eleName;
/**
* 关联元素 ID
*/
@ApiModelProperty(value = "关联元素 ID")
@NotNull(message = "关联元素 ID不能为空")
private Long relaEleId;
/**
* 关联元素编码
*/
@ApiModelProperty(value = "关联元素编码")
private String relaEleCode;
/**
* 关联元素名称
*/
@ApiModelProperty(value = "关联元素名称")
private String relaEleName;
/**
* 是否跨架构(1:是 0:否)
*/
@ApiModelProperty(value = "是否跨架构(1:是 0:否)")
private Byte across;
/**
* 图标ID
*/
@ApiModelProperty(value = "图标ID")
@NotNull(message = "图标ID不能为空")
private String iconId;
/**
* 遵从元素关系,元素关系 ID
*/
@ApiModelProperty(value = "遵从元素关系,元素关系 ID")
@NotNull(message = "遵从元素关系,元素关系 ID不能为空")
private Long eleRelaId;
@ApiModelProperty(value = "版本")
private String version;
@ApiModelProperty(value = "状态 0:已停用 1:已发布 2:暂存")
private Integer state;
}
\ No newline at end of file
package org.arch.common.archoverall.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
/**
* 架构资产关系
*/
@EqualsAndHashCode(callSuper = true)
@ApiModel(description = "架构资产关系")
@Data
@AllArgsConstructor
@NoArgsConstructor
public class ArchiAssetEleRelaQueryDTO extends BasePageEntity {
/**
* 主键
*/
@ApiModelProperty(value = "主键")
private Long assetRelaId;
/**
* 资产关系名称
*/
@ApiModelProperty(value = "资产关系名称")
private String rsName;
/**
* 元素 ID
*/
@ApiModelProperty(value = "元素 ID")
private Long eleId;
/**
* 元素编码
*/
@ApiModelProperty(value = "元素编码")
private String eleCode;
/**
* 元素名称
*/
@ApiModelProperty(value = "元素名称")
private String eleName;
/**
* 关联元素 ID
*/
@ApiModelProperty(value = "关联元素 ID")
private Long relaEleId;
/**
* 关联元素编码
*/
@ApiModelProperty(value = "关联元素编码")
private String relaEleCode;
/**
* 关联元素名称
*/
@ApiModelProperty(value = "关联元素名称")
private String relaEleName;
/**
* 是否跨架构(1:是 0:否)
*/
@ApiModelProperty(value = "是否跨架构(1:是 0:否)")
private Byte across;
/**
* 图标ID
*/
@ApiModelProperty(value = "图标ID")
private String iconId;
/**
* 遵从元素关系,元素关系 ID
*/
@ApiModelProperty(value = "遵从元素关系,元素关系 ID")
private Long eleRelaId;
}
\ No newline at end of file
package org.arch.common.archoverall.dto;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;
/**
* <p>
* 架构演进路线资产
* </p>
*
* @author java
* @since 2024-02-19
*/
@EqualsAndHashCode(callSuper = true)
@Data
@ApiModel(value = "ArchiAssetEvolutionRoadmap对象", description = "架构演进路线资产传输对象")
public class ArchiAssetEvolutionRoadmapDTO extends BasePageEntity {
@ApiModelProperty(value = "架构演进路线资产ID")
private Long evolutionId;
@ApiModelProperty(value = "演进编码")
private String evolutionCode;
@ApiModelProperty(value = "演进项")
private Integer evolutionItem;
@ApiModelProperty(value = "演进类型:1:演进策略 2:演进路线")
private Integer evolutionType;
@ApiModelProperty(value = "现状架构")
private String nowArchi;
@ApiModelProperty(value = "目标架构")
private String targetArchi;
@ApiModelProperty(value = "演进描述")
private String evolutionContent;
@ApiModelProperty(value = "状态: 0:已停用 1:已发布 2:暂存")
private Integer state;
@ApiModelProperty(value = "创建时间")
@DateTimeFormat(pattern = "yyyy-MM-dd")
@JsonFormat(pattern = "yyyy-MM-dd")
private Date createTime;
@ApiModelProperty(value = "创建人")
private Long createMan;
@ApiModelProperty(value = "最后一次修改时间")
@DateTimeFormat(pattern = "yyyy-MM-dd")
@JsonFormat(pattern = "yyyy-MM-dd")
private Date lastUpdateTime;
@ApiModelProperty(value = "最后一次修改人")
private Long lastUpdateMan;
@ApiModelProperty(value = "删除标记(0:未删除;1:删除)")
private Integer delFlag;
}
package org.arch.common.archoverall.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.util.List;
/**
* <p>
* 资产架构
* </p>
*
* @author author
* @since 2024-01-09
*/
@Data
@ApiModel(value = "资产架构", description = "系统资产架构继承对象")
public class ArchiAssetExtendDTO implements Serializable {
@ApiModelProperty(value = "资产id集合")
private List<Long> assetIdList;
@ApiModelProperty(value = "架构归属ID")
private String archiBelongId;
}
package org.arch.common.archoverall.dto;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;
@Data
public class ArchiAssetFrameworkDTO {
@ApiModelProperty(value = "架构组件ID")
@TableId(value = "asset_id", type = IdType.AUTO)
@JsonSerialize(using = ToStringSerializer.class)
private Long assetId;
@ApiModelProperty(value = "架构组件名称")
private String assetName;
@ApiModelProperty(value = "资产编码,采用8位阶梯设计编码,通过编码识别层级")
private String assetCode;
@ApiModelProperty(value = "上级架构组件ID")
@JsonSerialize(using = ToStringSerializer.class)
private Long parentAssetId;
@ApiModelProperty(value = "上级架构组件名称")
private String parentAssetName;
@ApiModelProperty(value = "父级编码")
private String parentCode;
@ApiModelProperty(value = "版本ID")
private Long versionId;
@ApiModelProperty(value = "架构元素Id")
private Long archiEleId;
@ApiModelProperty(value = "架构类型")
private String archiType;
@ApiModelProperty(value = "架构归属")
private Byte archiBelongId;
@ApiModelProperty(value = "架构资产状态(字典中读取,1:现状态;2:目标态)")
private Byte archiAssetState;
@ApiModelProperty(value = "架构资产类型(架构视图、架构演进路线、业务活动资产等)")
private Byte archiAssetType;
@ApiModelProperty(value = "架构资产类型关联的ID,目前架构视图关联archi_view表")
private Long archiAssetTypeId;
@ApiModelProperty(value = "创建时间")
@DateTimeFormat(pattern = "yyyy-MM-dd")
@JsonFormat(pattern = "yyyy-MM-dd")
private Date createTime;
@ApiModelProperty(value = "创建人")
private Long createMan;
@ApiModelProperty(value = "最后一次修改时间")
@DateTimeFormat(pattern = "yyyy-MM-dd")
@JsonFormat(pattern = "yyyy-MM-dd")
private Date lastUpdateTime;
@ApiModelProperty(value = "最后一次修改人")
private Long lastUpdateMan;
@ApiModelProperty(value = "JSON综合字段;将架构元素的属性和值利用Json数据存储")
private String fieldsValue;
@ApiModelProperty(value = "扩展字段")
private String column01;
@ApiModelProperty(value = "扩展字段")
private String column02;
@ApiModelProperty(value = "旧版本ID")
private Long orignVersionId;
@ApiModelProperty(value = "排序")
private Integer sort;
@ApiModelProperty(value = "是否首页展示 0 展示 1 不展示")
private Byte isShow;
@ApiModelProperty(value = "原架构ID")
@JsonSerialize(using = ToStringSerializer.class)
private Long orignAssetId;
@ApiModelProperty(value = "是否删除 1:已删除 0:未删除")
private Integer delFlag;
@ApiModelProperty(value = "资产常量,必传。")
@TableField(exist = false)
private String assetConstant;
}
package org.arch.common.archoverall.dto;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;
import java.util.List;
/**
* <p>
* 资产架构
* </p>
*
* @author author
* @since 2024-01-09
*/
@EqualsAndHashCode(callSuper = true)
@Data
@ApiModel(value = "资产架构", description = "资产架构传输对象")
public class ArchiAssetInfoDTO extends BasePageEntity {
@ApiModelProperty(value = "总条数")
private Integer total;
@ApiModelProperty(value = "架构组件ID")
@TableId(value = "asset_id", type = IdType.AUTO)
@JsonSerialize(using = ToStringSerializer.class)
private Long assetId;
@ApiModelProperty(value = "架构组件名称")
private String assetName;
@ApiModelProperty(value = "资产编码,采用8位阶梯设计编码,通过编码识别层级")
private String assetCode;
@ApiModelProperty(value = "上级架构组件ID")
@JsonSerialize(using = ToStringSerializer.class)
private Long parentAssetId;
@ApiModelProperty(value = "上级架构组件名称")
private String parentAssetName;
@ApiModelProperty(value = "父级编码")
private String parentCode;
@ApiModelProperty(value = "版本ID")
private Long versionId;
@ApiModelProperty(value = "架构元素Id")
private Long archiEleId;
@ApiModelProperty(value = "架构类型")
private String archiType;
@ApiModelProperty(value = "架构归属")
private Long archiBelongId;
@ApiModelProperty(value = "架构资产状态(字典中读取,1:现状态;2:目标态)")
private Integer archiAssetState;
@ApiModelProperty(value = "架构资产类型(架构视图、架构演进路线、业务活动资产等),必传")
private Byte archiAssetType;
@ApiModelProperty(value = "架构阶段(1:总体架构;2:系统架构),必传")
private Integer archiStage;
@ApiModelProperty(value = "架构资产类型关联的ID,目前架构视图关联archi_view表,必传")
private Long archiAssetTypeId;
@ApiModelProperty(value = "关联资产,实际用作兄弟关系连线,可支持多个target")
private List<JSONObject> targetAsset;
@ApiModelProperty(value = "创建时间")
@DateTimeFormat(pattern = "yyyy-MM-dd")
@JsonFormat(pattern = "yyyy-MM-dd")
private Date createTime;
@ApiModelProperty(value = "创建人")
private Long createMan;
@ApiModelProperty(value = "最后一次修改时间")
@DateTimeFormat(pattern = "yyyy-MM-dd")
@JsonFormat(pattern = "yyyy-MM-dd")
private Date lastUpdateTime;
@ApiModelProperty(value = "最后一次修改人")
private Long lastUpdateMan;
@ApiModelProperty(value = "JSON综合字段;将架构元素的属性和值利用Json数据存储")
private List<JSONObject> fieldsValue;
@ApiModelProperty(value = "扩展字段")
private String column01;
@ApiModelProperty(value = "扩展字段")
private String column02;
@ApiModelProperty(value = "组件类型名称")
private String eleName;
@ApiModelProperty(value = "旧版本ID")
private Long orignVersionId;
@ApiModelProperty(value = "排序")
private Integer sort;
@ApiModelProperty(value = "是否首页展示 0 展示 1 不展示")
private Byte isShow;
@ApiModelProperty(value = "原架构ID")
@JsonSerialize(using = ToStringSerializer.class)
private Long orignAssetId;
@ApiModelProperty(value = "是否删除 1:已删除 0:未删除")
private Integer delFlag;
@ApiModelProperty(value = "资产常量,必传。")
@TableField (exist = false)
private String assetConstant;
@ApiModelProperty(value = "版本")
private String version;
@ApiModelProperty(value = "状态 0:已停用 1:已发布 2:暂存")
private Integer state;
@ApiModelProperty(value = "元素id集合")
private List<Long> eleIdList;
@ApiModelProperty(value = "架构视图 ID")
@TableField (exist = false)
private Long archiViewId;
@ApiModelProperty(value = "承建类型:1统推,2自建")
@TableField("build_type")
private Integer buildType;
@ApiModelProperty(value = "来源:0系统资产,1总体资产,2概设关联业务管理同步更新")
private Integer isExtend;
@ApiModelProperty(value = "项目ID")
@TableField (exist = false)
private Long prjId;
@ApiModelProperty(value = "项目编码")
@TableField (exist = false)
private String prjCode;
@ApiModelProperty(value = "项目名称")
@TableField (exist = false)
private String prjName;
@ApiModelProperty(value = "系统ID")
@TableField (exist = false)
private Long appId;
@ApiModelProperty(value = "系统编码")
@TableField (exist = false)
private String appCode;
@ApiModelProperty(value = "系统名称")
@TableField (exist = false)
private String appName;
@ApiModelProperty(value = "资产id集合")
private List<Long> assetIdList;
@ApiModelProperty(value = "继承集合")
private List<ArchiAssetExtendDTO> extend;
@ApiModelProperty(value = "图标")
private String icon;
@ApiModelProperty(value = "图形名称")
private String iconName;
@ApiModelProperty(value = "颜色")
private String color;
@ApiModelProperty(value = "图形库ID")
private Long graphId;
@ApiModelProperty(value = "上级元素名称")
private List<String> parentElement;
@ApiModelProperty(value = "资产编号")
private String assetNumber;
@ApiModelProperty(value = "上级资产")
private List<String> parentAsset;
/**
* 限制
*/
@ApiModelProperty(value = "限制")
private Long limit;
}
package org.arch.common.archoverall.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* 资产DTO
*
* @author admin
* @date 2024/02/21
*/
@Data
@EqualsAndHashCode(callSuper = true)
@ApiModel(value = "资产")
public class ArchiAssetNowDTO extends BasePageEntity {
@ApiModelProperty("资产ID")
private Long assetId;
@ApiModelProperty(value = "资产名称")
private String assetName;
@ApiModelProperty("架构归属")
private String assertType;
@ApiModelProperty("架构归属ID")
private Long archiBelongId;
@ApiModelProperty(value = "上级架构组件ID")
private Long parentAssetId;
@ApiModelProperty(value = "上级架构组件名称")
private String parentAssetName;
@ApiModelProperty(value = "所属元素")
private String eleName;
@ApiModelProperty(value = "状态 0:已停用 1:已发布 2:暂存")
private Integer state;
@ApiModelProperty(value = "创建人")
private Long createMan;
@ApiModelProperty(value = "架构阶段(1:总体架构;2:系统架构),必传")
private Integer archiStage;
@ApiModelProperty(value = "架构资产状态(字典中读取,1:现状态;2:目标态)")
private Integer archiAssetState;
}
package org.arch.common.archoverall.dto;
import io.swagger.annotations.ApiModel;
import lombok.Data;
@Data
@ApiModel(value = "资产可视化面板请求参数")
public class ArchiAssetVisalDTO {
}
package org.arch.common.archoverall.dto;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import javax.validation.constraints.NotNull;
/**
* 设计态-架构关系
*
* @author makejava
* @since 2024-04-29 14:27:35
*/
@ApiModel(description = "设计态-架构关系")
@Data
@NoArgsConstructor
@AllArgsConstructor
@Accessors(chain = true)
public class ArchiAssetsRelationDTO {
/**
* 编号
*/
@ApiModelProperty("主键")
private Long relaId;
/**
* 架构组件ID
*/
@ApiModelProperty("资产ID")
@NotNull(message = "资产ID不能为空")
@JsonSerialize(using = ToStringSerializer.class)
private Long assetId;
/**
* 资产编码
*/
@ApiModelProperty("资产编码")
private String assetCode;
/**
* 资产名称
*/
@ApiModelProperty("资产名称")
private String assetName;
/**
* 关联资产ID
*/
@ApiModelProperty("关联资产ID")
@JsonSerialize(using = ToStringSerializer.class)
@NotNull(message = "关联资产ID不能为空")
private Long relaAssetId;
/**
* 关联资产编码
*/
@ApiModelProperty("关联资产编码")
private String relaAssetCode;
/**
* 关联资产名称
*/
@ApiModelProperty("关联资产名称")
private String relaAssetName;
/**
* 资产的父级节点串
*/
@ApiModelProperty("资产的父级节点串")
// @NotBlank(message = "资产的父级节点串不能为空")
private String parentAssetIds;
/**
* 资产的父级节点名称
*/
@ApiModelProperty("资产的父级节点名称")
// @NotBlank(message = "资产的父级节点名称不能为空")
private String parentAssetNames;
/**
* 元素关系ID
*/
@ApiModelProperty("元素关系ID")
private Long eleRelaId;
/**
* 架构元素关系ID
*/
@ApiModelProperty(value = "主键")
@NotNull(message = "架构元素关系ID不能为空")
private Long assetRelaId;
/**
* 状态 0:已停用 1:已发布 2:暂存
*/
@ApiModelProperty(value = "状态 0:已停用 1:已发布 2:暂存")
private Integer state;
/**
* 图标ID
*/
@ApiModelProperty(value = "图标ID")
@NotNull(message = "图标ID不能为空")
private String iconId;
@ApiModelProperty(value = "JSON综合字段;将架构元素的属性和值利用Json数据存储")
private String fieldsValue;
}
package org.arch.common.archoverall.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
/**
* 设计态-架构关系
*
* @author makejava
* @since 2024-04-29 14:27:35
*/
@EqualsAndHashCode(callSuper = true)
@ApiModel(description = "设计态-架构关系")
@Data
@NoArgsConstructor
@AllArgsConstructor
@Accessors(chain = true)
public class ArchiAssetsRelationQueryDTO extends BasePageEntity {
/**
* 编号
*/
@ApiModelProperty(value = "编号(主键)")
private Long relaId;
/**
* 资产名称
*/
@ApiModelProperty("资产名称")
private String assetName;
/**
* 关联资产名称
*/
@ApiModelProperty("关联资产名称")
private String relaAssetName;
/**
* 元素关系ID
*/
@ApiModelProperty("元素关系ID")
private Long eleRelaId;
/**
* 元素关系名称
*/
@ApiModelProperty("元素关系名称")
private String rcName;
/**
* 状态 0:已停用 1:已发布 2:暂存
*/
@ApiModelProperty(value = "状态 0:已停用 1:已发布 2:暂存")
private Integer state;
/**
* 元素关系 ID
*/
@ApiModelProperty(value = "元素关系 ID")
private Long assetRelaId;
}
package org.arch.common.archoverall.dto;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import lombok.Data;
@Data
public class ArchiCommonDTO {
@JsonSerialize(using = ToStringSerializer.class)
private Long assetId;
private String assetName;
private String assetCode;
@JsonSerialize(using = ToStringSerializer.class)
private Long parentAssetId;
private String parentAssetName;
private String parentCode;
/**
* JSON字段
*/
private Object fieldsValue;
}
package org.arch.modules.archoverall.dto;
package org.arch.common.archoverall.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
......
package org.arch.common.archoverall.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* 元素关系的约束条件
*/
@ApiModel(description = "元素关系的约束条件")
@Data
@AllArgsConstructor
@NoArgsConstructor
public class ArchiEleRelaConstrainDTO {
/**
* 对象1
*/
@ApiModelProperty(value = "对象1", required = true)
private Long eleGtId;
/**
* 对象2
*/
@ApiModelProperty(value = "对象2", required = true)
private Long eleLtId;
/**
* 适用范围
*/
@ApiModelProperty(value = "适用范围 1:业务架构 2:应用架构 3:数据架构 4:技术架构 5:安全架构 0:架构之间", required = true)
private Integer scope;
/**
* 对象名称1
*/
@ApiModelProperty(value = "对象名称1")
private String eleGtName;
/**
* 对象名称2
*/
@ApiModelProperty(value = "对象名称2")
private String eleLtName;
}
\ No newline at end of file
package org.arch.common.archoverall.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.util.List;
@EqualsAndHashCode(callSuper = true)
@Data
@ApiModel(value = "元素关系模块查询的传输对象", description = "元素关系模块查询的传输对象")
public class ArchiEleRelaDTO extends BasePageEntity {
@ApiModelProperty(value = "主键")
private Long eleRelaId;
@ApiModelProperty(value = "元素关系名称")
private String rsName;
@ApiModelProperty(value = "适用范围")
private String scope;
@ApiModelProperty(value = "状态 0:已停用 1:已发布 2:暂存")
private Integer state;
@ApiModelProperty(value = "是否删除 1:已删除 0:未删除")
private Integer delFlag;
@ApiModelProperty(value = "元素关系id集合")
private List<Long> eleRelaIdList;
}
package org.arch.modules.archoverall.dto;
package org.arch.common.archoverall.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
......
package org.arch.common.archoverall.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
@EqualsAndHashCode(callSuper = true)
@Data
@ApiModel(value = "元模型查询的传输对象", description = "元模型查询的传输对象")
public class ArchiMetaModelDTO extends BasePageEntity {
@ApiModelProperty(value = "总条数")
private Integer total;
@ApiModelProperty(value = "主键")
private Long metaModelId;
@ApiModelProperty(value = "版本信息")
private String version;
@ApiModelProperty(value = "版本名称")
private String verName;
@ApiModelProperty(value = "状态 0:已停用 1:已发布 2:暂存")
private Integer state;
@ApiModelProperty(value = "是否删除 1:已删除 0:未删除")
private Integer delFlag;
/**
* 元模式数据
*/
@ApiModelProperty(value = "元模型数据")
private String metaModelData;
/**
* 元模型 SVG
*/
@ApiModelProperty(value = "元模型 SVG")
private String metaModelSvg;
}
package org.arch.common.archoverall.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
import lombok.experimental.Accessors;
import javax.validation.constraints.NotNull;
/**
* <p>
* 资产关系 发布/停用
* </p>
*
* @author admin
* @date 2024/02/22
* @since 2024-02-22
*/
@Getter
@Setter
@Accessors(chain = true)
@ApiModel(value = "资产关系", description = "资产关系")
public class ArchiRelaSatePostDTO {
/**
* 主键
*/
@ApiModelProperty(value = "主键")
@NotNull(message = "主键不能为空")
private Long relaId;
@ApiModelProperty(value = "字典状态 0:已停用 1:已发布 2:暂存")
@NotNull(message = "状态不能为空")
private Byte state;
}
package org.arch.common.archoverall.dto;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.util.List;
/**
* <p>
* 应用架构
* </p>
*
* @author
* @since 2020-08-29
*/
@Data
@ApiModel("架构对象")
public class ArchiTreeDto implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 架构组件ID
*/
@ApiModelProperty("架构组件ID")
@JsonSerialize(using = ToStringSerializer.class)
private Long assetId;
/**
* 架构组件名称
*/
@ApiModelProperty("架构组件名称")
private String assetName;
@ApiModelProperty("组件编码")
private String assetCode;
// /**
// * 架构组件类型
// */
// @ApiModelProperty("架构组件类型")
// private String moduleTypeId;
/**
* 上级架构组件ID
*/
@ApiModelProperty("上级架构组件ID")
@JsonSerialize(using = ToStringSerializer.class)
private Long parentAssetId;
@ApiModelProperty("父级名称")
private String parentAssetName;
@ApiModelProperty("父级编码")
private String parentCode;
/**
* 是否有下级,大于0代表有,小于等于0代表没有
*/
@ApiModelProperty("是否有下级,大于0代表有,小于等于0代表没有")
private int haveChildren;
/**
* 子集
*/
@ApiModelProperty("子集")
private List<ArchiTreeDto> children;
}
package org.arch.common.archoverall.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import org.arch.enums.ArchiPrjReviewEnum;
/**
* <p>
* 架构视图配置
* </p>
*
* @author lizhen
* @since 2023-12-06
*/
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@ApiModel(value = "ArchiViewDTO", description = "架构视图配置DTO")
public class ArchiViewDTO {
@ApiModelProperty(value = "审查类型")
private ArchiPrjReviewEnum reviewEnum;
@ApiModelProperty(value = "架构归属 1 业务架构 2 应用架构 3 数据架构 4 技术架构 5 安全架构")
private Integer archiBelongId;
@ApiModelProperty(value = "项目ID")
private Long prjId;
@ApiModelProperty(value = "系统ID")
private Long appId;
@ApiModelProperty(value = "架构阶段(1:总体架构;2:系统架构 3:概设架构 4:其他架构)")
private Integer archiStage;
@ApiModelProperty(value = "业务资料类型")
private String busiFileName;
}
package org.arch.modules.archoverall.dto;
package org.arch.common.archoverall.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
......
package org.arch.common.archoverall.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotEmpty;
import java.io.Serializable;
import java.util.List;
/**
* 批量删除
*
* @author makejava
* @since 2023-12-14
*/
@ApiModel(description = "批量删除")
@Data
public class BatchRemoveDTO implements Serializable {
/**
* 钥匙
*/
@ApiModelProperty("主键集合")
@NotEmpty(message = "请至少选择一条记录")
private List<Long> ids;
}
package org.arch.common.archoverall.dto;
import lombok.Data;
import java.util.List;
/**
* 批量更新 DTO
*
* @author xh13k
* @date 2024/06/04
*/
@Data
public class BatchUpdateRelaDTO {
private List<Long> eleRelaId;
}
package org.arch.common.archoverall.dto;
import lombok.Data;
import java.util.List;
@Data
public class DelDTO {
List<Long> assetId;
}
package org.arch.common.archoverall.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
@Data
@NoArgsConstructor
@AllArgsConstructor
@Accessors(chain = true)
@ApiModel(value = "word文档书签", description = "word文档书签标识")
public class DocMarkTag {
@ApiModelProperty(value = "书签标题开始位置")
private String startTilteBookmark;
@ApiModelProperty(value = "书签标题结束位置")
private String endTilteBookmark;
@ApiModelProperty(value = "书签正文开始位置")
private String startContentBookmark;
@ApiModelProperty(value = "书签正文结束位置")
private String endContentBookmark;
@ApiModelProperty(value = "表格书签")
private String tableBookmark;
@ApiModelProperty(value = "图片书签")
private String picBookmark;
}
package org.arch.common.archoverall.dto;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.arch.enums.ArchiPrjReviewEnum;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;
import java.util.List;
/**
* <p>
* 需求管理信息
* </p>
*
* @author java
* @since 2024-03-05
*/
@Data
@EqualsAndHashCode(callSuper = true)
@ApiModel(value = "NeedInfo对象", description = "需求管理信息")
public class NeedInfoDTO extends BasePageEntity {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "需求ID")
@TableId(value = "need_id", type = IdType.AUTO)
private Long needId;
@ApiModelProperty(value = "需求编码")
@TableField("need_code")
private String needCode;
@ApiModelProperty(value = "需求名称")
@TableField("need_name")
private String needName;
@ApiModelProperty(value = "批次计划ID")
@TableField("bat_plan_id")
private Long batPlanId;
@ApiModelProperty(value = "批次计划编码")
@TableField("bat_plan_code")
private String batPlanCode;
@ApiModelProperty(value = "批次名称")
@TableField("bat_name")
private String batName;
@ApiModelProperty(value = "组织机构ID")
@TableField("org_id")
private Long orgId;
@ApiModelProperty(value = "组织机构编码")
@TableField("org_code")
private String orgCode;
@ApiModelProperty(value = "组织机构名称")
@TableField("org_name")
private String orgName;
@ApiModelProperty(value = "年度")
@TableField("year")
private String year;
@ApiModelProperty(value = "备注")
@TableField("remark")
private String remark;
@ApiModelProperty(value = "审批状态:1新建、2审批中、3审批通过、4驳回")
@TableField("approve_state")
private Long approveState;
@ApiModelProperty(value = "所需材料JSON附件")
@TableField("files_value")
private List<JSONObject> filesValue;
@ApiModelProperty(value = "创建人")
@TableField("create_man")
private Long createMan;
@ApiModelProperty(value = "创建时间")
@TableField("create_time")
@DateTimeFormat(pattern = "yyyy-MM-dd")
@JsonFormat(pattern = "yyyy-MM-dd")
private Date createTime;
@ApiModelProperty(value = "是否删除 1:已删除 0:未删除")
@TableField("del_flag")
private Integer delFlag;
@ApiModelProperty(value = "最后一次修改时间")
@TableField("last_update_time")
@DateTimeFormat(pattern = "yyyy-MM-dd")
@JsonFormat(pattern = "yyyy-MM-dd")
private Date lastUpdateTime;
@ApiModelProperty(value = "最后一次修改人")
@TableField("last_update_man")
private Long lastUpdateMan;
@ApiModelProperty(value = "开始时间")
@DateTimeFormat(pattern = "yyyy-MM-dd")
@JsonFormat(pattern = "yyyy-MM-dd")
private Date beginTime;
@ApiModelProperty(value = "结束时间")
@DateTimeFormat(pattern = "yyyy-MM-dd")
@JsonFormat(pattern = "yyyy-MM-dd")
private Date endTime;
@ApiModelProperty(value = "项目ID")
@TableField("prj_id")
private Long prjId;
@ApiModelProperty(value = "项目编码")
@TableField("prj_code")
private String prjCode;
@ApiModelProperty(value = "项目名称")
@TableField("prj_name")
private String prjName;
@ApiModelProperty(value = "需求类型:1需求发布、2需求确认。必传")
@TableField("need_type")
private Long needType;
@ApiModelProperty(value = "承建类型")
@TableField("build_type")
private Long buildType;
@ApiModelProperty(value = "状态 0:已停用 1:已发布 2:暂存")
private Integer state;
@ApiModelProperty(value = "审查类型")
private ArchiPrjReviewEnum reviewEnum;
@ApiModelProperty(value = "需求IDList")
private List<Long> needIdList;
@ApiModelProperty(value = "材料List")
private List<String> fileList;
}
package org.arch.common.archoverall.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
@Data
@EqualsAndHashCode(callSuper = true)
@ApiModel(value = "OnlineReviewCountQueryDTO对象", description = "概设材料统计分析查询对象")
public class OnlineReviewCountQueryDTO extends BasePageEntity {
@ApiModelProperty(value = "年度")
private String year;
@ApiModelProperty(value = "统计类型:1单位概设统计 2批次系统统计")
private Integer countType;
}
package org.arch.common.archoverall.dto;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;
/**
* <p>
* 概设材料在线意见编制
* </p>
*
* @author java
* @since 2024-03-18
*/
@Data
@EqualsAndHashCode(callSuper = true)
@ApiModel(value = "OnlineReviewWrite对象", description = "概设材料在线意见编制")
public class OnlineReviewWriteDTO extends BasePageEntity {
@ApiModelProperty(value = "主键")
@TableId(value = "idea_id", type = IdType.AUTO)
private Long ideaId;
@ApiModelProperty(value = "意见编码")
@TableField("idea_code")
private String ideaCode;
@ApiModelProperty(value = "概设材料在线意见编制sheet(1:概设材料修改,2:意见生成与流转)")
@TableField("idea_type")
private Long ideaType;
@ApiModelProperty(value = "年度")
@TableField("year")
private String year;
@ApiModelProperty(value = "批次计划")
@TableField("bat_plan_id")
private Long batPlanId;
@ApiModelProperty(value = "批次名称")
@TableField("bat_name")
private String batName;
@ApiModelProperty(value = "需求Id")
@TableField("need_id")
private Long needId;
@ApiModelProperty(value = "需求名称")
@TableField("need_name")
private String needName;
@ApiModelProperty(value = "项目Id")
@TableField("prj_id")
private Long prjId;
@ApiModelProperty(value = "项目名称")
@TableField("prj_name")
private String prjName;
@ApiModelProperty(value = "关联机构Id")
@TableField("org_id")
private Long orgId;
@ApiModelProperty(value = "关联机构名称")
@TableField("org_name")
private String orgName;
@ApiModelProperty(value = "评审材料名称")
@TableField("require_name")
private String requireName;
@ApiModelProperty(value = "附件ID")
@TableField("file_id")
private Long fileId;
@ApiModelProperty(value = "附件URL")
@TableField("file_url")
private String fileUrl;
@ApiModelProperty(value = "推送状态")
@TableField("push_state")
private Long pushState;
@ApiModelProperty(value = "发送状态")
@TableField("send_state")
private Long sendState;
@ApiModelProperty(value = "剩余时间")
@TableField("excess_time")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private String excessTime;
@ApiModelProperty(value = "评审意见")
@TableField("review_suggestion")
private String reviewSuggestion;
@ApiModelProperty(value = "在线评审状态(1:通过 0:未通过 2:待评审)")
@TableField("online_review_state")
private Integer onlineReviewState;
@ApiModelProperty(value = "创建人")
@TableField("create_man")
private Integer createMan;
@ApiModelProperty(value = "创建时间")
@TableField("create_time")
@DateTimeFormat(pattern = "yyyy-MM-dd")
@JsonFormat(pattern = "yyyy-MM-dd")
private Date createTime;
@ApiModelProperty(value = "最后更新人")
@TableField("last_update_man")
private Integer lastUpdateMan;
@ApiModelProperty(value = "最后更新时间")
@TableField("last_update_time")
@DateTimeFormat(pattern = "yyyy-MM-dd")
@JsonFormat(pattern = "yyyy-MM-dd")
private Date lastUpdateTime;
@ApiModelProperty(value = "是否删除 1:已删除 0:未删除")
@TableField("del_flag")
private Integer delFlag;
@ApiModelProperty(value = "开始时间")
@DateTimeFormat(pattern = "yyyy-MM-dd")
@JsonFormat(pattern = "yyyy-MM-dd")
private Date beginTime;
@ApiModelProperty(value = "结束时间")
@DateTimeFormat(pattern = "yyyy-MM-dd")
@JsonFormat(pattern = "yyyy-MM-dd")
private Date endTime;
}
package org.arch.common.archoverall.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.arch.enums.ArchiPrjReviewEnum;
import java.util.List;
/**
* <p>
* 获取word片段内容
* </p>
*
* @author java
* @since 2024-02-27
*/
@Data
@ApiModel(value = "WordContentDTO对象", description = "word片段内容")
public class WordContentDTO {
@ApiModelProperty(value = "项目Id")
private Long prjId;
@ApiModelProperty(value = "需求Id")
private Long needId;
@ApiModelProperty(value = "审查类型")
private ArchiPrjReviewEnum reviewEnum;
@ApiModelProperty(value = "业务资料类型")
private String busiFileName;
@ApiModelProperty(value = "备注")
private String comment;
@ApiModelProperty(value = "标题")
private String title;
@ApiModelProperty(value = "关键字")
private String keyWord;
/**
* 字典表中配置(type=check_range)
*/
@ApiModelProperty(value = "检查范围")
private String checkRange;
@ApiModelProperty(value = "检查范围")
private List<String> checkRanges;
@ApiModelProperty(value = "类型,区分导出类型")
private String type;
/**
* 书签集合
*/
@ApiModelProperty(value = "标签范围")
private List<DocMarkTag> docMarkTag;
}
package org.arch.common.archoverall.vo;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class ArchVisualVO implements Serializable {
//资产类型(
//五大架构:
//ARCHI_TECHNOLOGY:技术架构
//ARCHI_APPLICATION:应用架构
//ARCHI_BUSINESS:业务架构
//ARCHI_SAFE:安全架构
//ARCHI_DATA:数据架构
//)
private String archType;
//父类资产id
private String parentAssetId;
}
package org.arch.common.archoverall.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;
/**
* 中台服务清单关联资产(资产关联,中台架构服务,其他四大架构资产)(ArchiAbilityAssetsRelation)实体类
*
* @author makejava
* @since 2024-04-29 14:27:35
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
@Accessors(chain = true)
@ApiModel(value = "archiAbilityAssetsRelation", description = "中台服务清单关联资产")
public class ArchiAbilityAssetsRelationQueryVO {
/**
* 编号
*/
@ApiModelProperty(value = "编号(主键)")
private Long relaId;
/**
* 资产Id
*/
@ApiModelProperty(value = "服务清单Id")
@JsonSerialize(using = ToStringSerializer.class)
private Long assetId;
/**
* 资产编码
*/
@ApiModelProperty(value = "服务编码")
private String assetCode;
@ApiModelProperty(value = "服务名称")
private String assetName;
/**
* 关联资产ID
*/
@ApiModelProperty(value = "资产ID")
@JsonSerialize(using = ToStringSerializer.class)
private Long relaAssetId;
/**
* 关联资产编码
*/
@ApiModelProperty(value = "关联资产编码")
private String relaAssetCode;
/**
* 关联资产名称
*/
@ApiModelProperty(value = "关联资产名称")
private String relaAssetName;
/**
* 架构类型Id
*/
@ApiModelProperty(value = "架构类型Id")
private Integer archiTypeId;
/**
* 架构类型名称(业务架构、应用架构、数据架构、技术架构、安全架构)
*/
@ApiModelProperty(value = "架构类型名称 1业务架构、2应用架构、3数据架构、4技术架构、5安全架构")
private String archiType;
/**
* 版本ID
*/
@ApiModelProperty(value = "版本ID")
private Integer versionId;
/**
* 视图ID
*/
@ApiModelProperty(value = "视图ID")
private Long viewId;
/**
* 创建人
*/
@ApiModelProperty(value = "创建人")
private Long creator;
/**
* 创建时间
*/
@ApiModelProperty(value = "创建时间")
@DateTimeFormat(pattern = "yyyy-MM-dd")
@JsonFormat(pattern = "yyyy-MM-dd")
private Date createTime;
/**
* 更新人
*/
@ApiModelProperty(value = "更新人")
private Long updateby;
/**
* 更新时间
*/
@ApiModelProperty(value = "更新时间")
@DateTimeFormat(pattern = "yyyy-MM-dd")
@JsonFormat(pattern = "yyyy-MM-dd")
private Date updateTime;
/**
* 删除标记(0:未删除;1:已删除)
*/
@ApiModelProperty(value = "删除标记(0:未删除;1:已删除)")
private Integer delFlag;
/**
* 元素名称
*/
@ApiModelProperty(value = "元素名称")
private String eleName;
/**
* 资产的父级节点串
*/
@ApiModelProperty(value = "资产的父级节点串")
private String parentAssetIds;
/**
* 资产的父级节点名称
*/
@ApiModelProperty(value = "资产的父级节点名称串")
private String parentAssetNames;
/**
* 元素关系ID
*/
@ApiModelProperty("元素关系ID")
private Long eleRelaId;
/**
* 元素关系名称
*/
@ApiModelProperty("元素关系名称")
private String rsName;
/**
* 状态 0:已停用 1:已发布 2:暂存
*/
@ApiModelProperty(value = "状态 0:已停用 1:已发布 2:暂存")
private Integer state;
/**
* 图标ID
*/
@ApiModelProperty(value = "图标ID")
private String iconId;
}
package org.arch.common.archoverall.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import org.arch.common.BaseEntity;
/**
* 架构资产关系
*/
@EqualsAndHashCode(callSuper = true)
@ApiModel(description = "架构资产关系")
@Data
@AllArgsConstructor
@NoArgsConstructor
public class ArchiAssetEleRelaVO extends BaseEntity {
/**
* 主键
*/
@ApiModelProperty(value = "主键")
private Long assetRelaId;
/**
* 资产关系名称
*/
@ApiModelProperty(value = "资产关系名称")
private String rsName;
/**
* 元素 ID
*/
@ApiModelProperty(value = "元素 ID")
private Long eleId;
/**
* 元素编码
*/
@ApiModelProperty(value = "元素编码")
private String eleCode;
/**
* 元素名称
*/
@ApiModelProperty(value = "元素名称")
private String eleName;
/**
* 关联元素 ID
*/
@ApiModelProperty(value = "关联元素 ID")
private Long relaEleId;
/**
* 关联元素编码
*/
@ApiModelProperty(value = "关联元素编码")
private String relaEleCode;
/**
* 关联元素名称
*/
@ApiModelProperty(value = "关联元素名称")
private String relaEleName;
/**
* 是否跨架构(1:是 0:否)
*/
@ApiModelProperty(value = "是否跨架构(1:是 0:否)")
private Byte across;
/**
* 图标ID
*/
@ApiModelProperty(value = "图标ID")
private String iconId;
/**
* 遵从元素关系,元素关系 ID
*/
@ApiModelProperty(value = "遵从元素关系,元素关系 ID")
private Long eleRelaId;
/**
* 遵从元素关系,元素关系名称
*/
@ApiModelProperty(value = "遵从元素关系,元素关系名称")
private String eleRelaName;
}
\ No newline at end of file
package org.arch.common.archoverall.vo;
import cn.hutool.core.lang.tree.Tree;
import com.alibaba.fastjson2.JSONArray;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
import lombok.experimental.Accessors;
import java.util.List;
/**
* 架构资产
*
* @author makejava
* @since 2023-12-22
*/
@ApiModel(description = "架构资产VO")
@Getter
@Setter
@Accessors(chain = true)
public class ArchiAssetVO {
/**
* 架构元素ID
*/
private Long archiEleId;
/**
* 架构元素名称
*/
private String eleName;
@ApiModelProperty("资产ID")
@JsonFormat(shape = JsonFormat.Shape.STRING)
private Long assetId;
@ApiModelProperty("code")
private String assetCode;
@ApiModelProperty("资产名称")
private String assetName;
@ApiModelProperty(value = "上级架构组件ID")
@JsonFormat(shape = JsonFormat.Shape.STRING)
private Long parentAssetId;
@ApiModelProperty(value = "上级架构组件名称")
private String parentAssetName;
@ApiModelProperty("版本ID")
private Long versionId;
@ApiModelProperty(value = "图形名称")
private String iconName;
@ApiModelProperty(value = "图形颜色")
private String color;
@ApiModelProperty(value = "图形类型")
private String eleType;
@ApiModelProperty(value = "图标")
private String icon;
@ApiModelProperty(value = "架构归属")
private Integer archiBelongId;
@ApiModelProperty("架构类型")
private String archiType;
@ApiModelProperty("目标资产")
private JSONArray targetAssert;
@ApiModelProperty("子列表")
private List<ArchiAssetVO> subList;
@ApiModelProperty("目标列表")
private List<ArchiAssetVO> targetList;
@ApiModelProperty("子集")
private List<Tree<String>> children;
@ApiModelProperty("元素ID")
private Long elementId;
@ApiModelProperty("元素名称")
private String elementName;
@ApiModelProperty(value = "资产编号")
private String assetNumber;
}
package org.arch.common.archoverall.vo;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
import lombok.experimental.Accessors;
import java.util.List;
/**
* 架构资产可视化
*
* @author makejava
* @since 2023-12-22
*/
@ApiModel(description = "架构资产可视化VO")
@Getter
@Setter
@Accessors(chain = true)
public class ArchiAssetViewVO {
@ApiModelProperty("资产ID")
@JsonSerialize(using = ToStringSerializer.class)
private Long assetId;
@ApiModelProperty("code")
private String assetCode;
@ApiModelProperty("资产名称")
private String assetName;
@ApiModelProperty(value = "架构归属")
private Integer archiBelongId;
@ApiModelProperty(value = "上级架构组件ID")
@JsonSerialize(using = ToStringSerializer.class)
private Long parentAssetId;
@ApiModelProperty("子列表")
private List<ArchiAssetViewVO> subList;
}
package org.arch.common.archoverall.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
@ApiModel(value = "ArchiElement", description = "架构元素关系")
public class ArchiEleRelaNameVO {
@ApiModelProperty(value = "主键")
private Long eleRelaId;
@ApiModelProperty(value = "元素关系名称")
private String rsName;
}
package org.arch.common.archoverall.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
@ApiModel(value = "ArchiElement", description = "架构元素关系")
public class ArchiEleRelaVO {
@ApiModelProperty(value = "主键")
private Long eleRelaId;
@ApiModelProperty(value = "元素关系名称")
private String eleRelaName;
@ApiModelProperty(value = "主键")
private Long sourceElementId;
@ApiModelProperty(value = "元素名称")
private String sourceElementName;
@ApiModelProperty(value = "元素类型(1:标准图元;2:常规图元)")
private Integer sourceEleType;
@ApiModelProperty(value = "图标")
private String sourceIcon;
@ApiModelProperty(value = "图形名称")
private String sourceIconName;
@ApiModelProperty(value = "颜色")
private String sourceColor;
@ApiModelProperty(value = "主键")
private Long targetElementId;
@ApiModelProperty(value = "元素名称")
private String targetElementName;
@ApiModelProperty(value = "元素类型(1:标准图元;2:常规图元)")
private Integer targetEleType;
@ApiModelProperty(value = "图标")
private String targetIcon;
@ApiModelProperty(value = "图形名称")
private String targetIconName;
@ApiModelProperty(value = "颜色")
private String targetColor;
}
package org.arch.common.archoverall.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
/**
* <p>
* 架构资产版本
* </p>
*
* @author xh
* @since 2023-12-06
*/
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@ApiModel(value = "ArchiView", description = "架构资产版本")
public class ArchiVersionVO {
@ApiModelProperty(value = "版本名称")
private String versionName;
@ApiModelProperty(value = "版本ID")
private Long versionId;
}
package org.arch.common.archoverall.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
/**
* <p>
* 项目架构视图
* </p>
*
* @author xh
* @since 2023-12-06
*/
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@ApiModel(value = "ArchiView", description = "项目架构视图")
public class ArchiViewVO {
@ApiModelProperty(value = "视图详情 ID")
private Long viewDetailsId;
@ApiModelProperty(value = "视图详情名称")
private String viewDetailName;
@ApiModelProperty(value = "视图 ID")
private Long viewId;
@ApiModelProperty(value = "视图名称")
private String viewName;
@ApiModelProperty(value = "画布缩略图")
private String metaModelSvg;
@ApiModelProperty(value = "画布信息")
private String metaModelData;
}
package org.arch.common.archoverall.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
/**
* Mx元素Tree
*
* @author MxCell
* @date 2023/12/07
*/
@ApiModel(description = "Mx元素Tree")
@Data
public class MxCellTreeVO {
/**
* 元素ID
*/
@ApiModelProperty(value = "元素ID", position = 1)
private String id;
/**
* 元素名称
*/
@ApiModelProperty(value = "元素名称", position = 2)
private Object topic;
/**
* 方向
*/
@ApiModelProperty(value = "方向", position = 3)
private String direction;
/**
* 展开
*/
@ApiModelProperty(value = "展开", position = 3)
private Boolean expanded;
private List<MxCellTreeVO> children;
}
\ No newline at end of file
package org.arch.common.archoverall.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* Mx元素
*
* @author MxCell
* @date 2023/12/07
*/
@ApiModel(description = "Mx元素")
@Data
public class MxCellVO {
/**
* 元素ID
*/
@ApiModelProperty(value = "元素ID", position = 1)
private String sourceId;
/**
* 元素名称
*/
@ApiModelProperty(value = "元素名称", position = 2)
private Object source;
/**
* 关联元素ID
*/
@ApiModelProperty(value = "关联元素ID", position = 4)
private String targetId;
/**
* 关联元素名称
*/
@ApiModelProperty(value = "关联元素名称", position = 3)
private Object target;
/**
* 关联关系名称
*/
@ApiModelProperty(value = "关联关系名称", position = 5)
private Object linkName;
/**
* 关联关系描述
*/
@ApiModelProperty(value = "关联关系描述", position = 6)
private Object linkNameDesc;
/**
* 方向
*/
@ApiModelProperty(value = "方向", position = 7)
private String direction;
private Integer sort;
}
\ No newline at end of file
package org.arch.modules.base.dto;
package org.arch.common.archoverall.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* oss对象存储
*
* @author admin
* @date 2023/12/05
*/
@ApiModel(description = "oss对象存储DTO")
@ApiModel(description = "drawio上传VO")
@Data
@AllArgsConstructor
@NoArgsConstructor
public class UpLoadDTO {
@Builder
public class MxFileVO {
/**
* id
*/
@ApiModelProperty(hidden = true)
private Long id;
/**
* 文件 ID
* xml标题
*/
@ApiModelProperty(value = "文件ID")
private Long fileId;
@ApiModelProperty(value = "xml标题", position = 2)
private String title;
/**
* 地址
* xml内容
*/
@ApiModelProperty(value = "地址")
private String url;
@ApiModelProperty(value = "xml内容;加密或者解密具体看:https://jgraph.github.io/drawio-tools/tools/convert.html?", position = 3)
private String content;
}
package org.arch.common.archoverall.vo;
import com.baomidou.mybatisplus.annotation.TableField;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import org.springframework.format.annotation.DateTimeFormat;
import java.io.Serializable;
import java.util.Date;
/**
* <p>
* 需求管理信息
* </p>
*
* @author java
* @since 2024-03-05
*/
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@ApiModel(value = "NeedReviewVo对象", description = "需求评审信息")
public class NeedReviewVo implements Serializable {
@ApiModelProperty(value = "需求ID")
private Long needId;
@ApiModelProperty(value = "需求编码")
@TableField("need_code")
private String needCode;
@ApiModelProperty(value = "需求名称")
@TableField("need_name")
private String needName;
@ApiModelProperty(value = "批次计划ID")
@TableField("bat_plan_id")
private Long batPlanId;
@ApiModelProperty(value = "批次计划编码")
@TableField("bat_plan_code")
private String batPlanCode;
@ApiModelProperty(value = "批次名称")
@TableField("bat_name")
private String batName;
@ApiModelProperty(value = "组织机构ID")
@TableField("org_id")
private Long orgId;
@ApiModelProperty(value = "组织机构编码")
@TableField("org_code")
private String orgCode;
@ApiModelProperty(value = "组织机构名称")
@TableField("org_name")
private String orgName;
@ApiModelProperty(value = "年度")
@TableField("year")
private String year;
@ApiModelProperty(value = "备注")
@TableField("remark")
private String remark;
@ApiModelProperty(value = "评审状态:1新建、2审批中、3审批通过、4驳回")
private Long approveState;
@ApiModelProperty(value = "所需材料JSON附件")
@TableField("files_value")
private String filesValue;
@ApiModelProperty(value = "创建人")
@TableField("create_man")
private Long createMan;
@ApiModelProperty(value = "创建时间")
@TableField("create_time")
@DateTimeFormat(pattern = "yyyy-MM-dd")
@JsonFormat(pattern = "yyyy-MM-dd")
private Date createTime;
@ApiModelProperty(value = "是否删除 1:已删除 0:未删除")
@TableField("del_flag")
private Integer delFlag;
@ApiModelProperty(value = "最后一次修改时间")
@TableField("last_update_time")
@DateTimeFormat(pattern = "yyyy-MM-dd")
@JsonFormat(pattern = "yyyy-MM-dd")
private Date lastUpdateTime;
@ApiModelProperty(value = "最后一次修改人")
@TableField("last_update_man")
private Long lastUpdateMan;
@ApiModelProperty(value = "项目ID")
@TableField("prj_id")
private Long prjId;
@ApiModelProperty(value = "项目编码")
@TableField("prj_code")
private String prjCode;
@ApiModelProperty(value = "项目名称")
@TableField("prj_name")
private String prjName;
@ApiModelProperty(value = "需求类型:1需求发布、2需求确认。必传")
@TableField("need_type")
private Long needType;
@ApiModelProperty(value = "承建类型")
@TableField("build_type")
private Long buildType;
@ApiModelProperty(value = "状态 0:已停用 1:已发布 2:暂存")
private Integer state;
@ApiModelProperty(value = "主键")
private Long reviewId;
@ApiModelProperty(value = "评审材料类型(1:需求评审;2:概设评审)")
private String reviewType;
@ApiModelProperty(value = "评审材料关联主键(1:关联需求,2:关联概设)")
private Long busiTypeId;
@ApiModelProperty(value = "评审意见")
private String reviewSuggestion;
@ApiModelProperty(value = "评审状态(1:通过 0:未通过)")
private Integer reviewState;
}
package org.arch.common.archoverall.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import java.io.Serializable;
import java.math.BigDecimal;
/**
* <p>
* 项目-需求资料信息
* </p>
*
* @author java
* @since 2024-03-14
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
@Accessors(chain = true)
@ApiModel(value = "OnlineReviewCountVO对象", description = "概设统计分析信息")
public class OnlineReviewCountVO implements Serializable {
@ApiModelProperty(value = "承建单位")
private Integer manageOrgId;
@ApiModelProperty(value = "单位名称")
private String manageOrgName;
@ApiModelProperty(value = "概设需求数")
private Integer needCount;
@ApiModelProperty(value = "概设材料通过数")
private Integer reviewPassCount;
@ApiModelProperty(value = "通过率")
private BigDecimal passRate;
@ApiModelProperty(value = "批次计划ID")
private Long batPlanId;
@ApiModelProperty(value = "批次名称")
private String batName;
}
package org.arch.modules.base.dto;
package org.arch.common.base.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
......
package org.arch.modules.base.dto;
package org.arch.common.base.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
......
package org.arch.modules.base.dto;
package org.arch.common.base.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
......
package org.arch.modules.base.vo;
package org.arch.common.base.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
......
package org.arch.overall.service;
package org.arch.common.redis.service;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
......
/**
* Copyright (C) 2018-2020
* All rights reserved, Designed By www.yixiang.co
* 注意:
* 本软件为www.yixiang.co开发研制
*/
package org.arch.common.user.dto;
import lombok.Data;
import java.io.Serializable;
/**
* @author hupeng
* @date 2019-6-10 16:32:18
*/
@Data
public class DeptSmallDto implements Serializable {
private Long id;
private String name;
}
/**
* Copyright (C) 2018-2020
* All rights reserved, Designed By www.yixiang.co
* 注意:
* 本软件为www.yixiang.co开发研制
*/
package org.arch.common.user.dto;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
/**
* @author hupeng
* @date 2020-05-14
*/
@Data
@EqualsAndHashCode(callSuper = false)
@TableName("sys_menu")
@ApiModel(value="Menu对象", description="Menu对象")
public class MenuDto implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "ID")
@TableId(value = "id")
private Long id;
@ApiModelProperty(value = "类型,0:目录、1:菜单、2:按钮")
private Integer type;
@ApiModelProperty(value = "权限")
private String permission;
@ApiModelProperty(value = "菜单名称")
private String name;
@ApiModelProperty(value = "排序")
private Long sort;
@ApiModelProperty(value = "链接地址")
private String path;
@ApiModelProperty(value = "组件")
private String component;
@ApiModelProperty(value = "上级菜单ID")
private String pid;
@ApiModelProperty(value = "父级节点ID串")
private String pids;
@ApiModelProperty(value = "是否外链")
private Boolean iFrame;
@ApiModelProperty(value = "缓存")
private Boolean cache;
@ApiModelProperty(value = "启用禁用")
private Boolean hidden;
@ApiModelProperty(value = "组件名称")
private String componentName;
@ApiModelProperty(value = "图标")
private String icon;
@ApiModelProperty(value = "子节点")
private List<MenuDto> children;
@ApiModelProperty(value = "创建日期")
private Date createTime;
/** 类别 0:系统 1:项目*/
@ApiModelProperty(value = "类别 0:系统 1:项目")
private Integer category;
@ApiModelProperty("ISCID")
private String iscId;
}
/**
* Copyright (C) 2018-2020
* All rights reserved, Designed By www.yixiang.co
* 注意:
* 本软件为www.yixiang.co开发研制
*/
package org.arch.common.user.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
/**
* @author hupeng
* @date 2018-11-23
*/
@Data
@ApiModel(value="角色对象", description="角色对象")
public class RoleSmallDto implements Serializable {
@ApiModelProperty(value="角色id")
private Long id;
@ApiModelProperty(value="角色名")
private String roleName;
@ApiModelProperty(value="角色标识")
private String roleSign;
}
......@@ -4,13 +4,14 @@
* 注意:
* 本软件为www.yixiang.co开发研制
*/
package org.arch.modules.sysmanage.dto;
package org.arch.common.user.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.arch.common.user.entity.Menu;
import org.arch.common.user.entity.Org;
import java.awt.*;
import java.io.Serializable;
import java.sql.Timestamp;
import java.util.List;
......@@ -71,12 +72,21 @@ public class UserDto implements Serializable {
@ApiModelProperty(value = "菜单集合 说明:用户可以操作的菜单或者按钮",notes = "用户可访问的菜单或者按钮")
private Set<Menu> menus;
@ApiModelProperty(value = "部门信息")
private DeptSmallDto dept;
@ApiModelProperty(value = "组织机构信息")
private Org org;
@ApiModelProperty(value = "数据权限范围信息")
private String dataPermission;
@ApiModelProperty(value = "创建时间")
private Timestamp createTime;
@ApiModelProperty(value = "角色集合",notes = "目前系统设置的是多角色")
// @ApiModelProperty(value = "角色集合",notes = "目前系统设置的是单角色,默认在不为空的情况下获取第一条数据")
private List<RoleSmallDto> roles;
@ApiModelProperty(value = "菜单id集合",notes = "菜单id集合")
private List<Long> menuIds;
......
/**
* Copyright (C) 2018-2020
* All rights reserved, Designed By www.yixiang.co
* 注意:
* 本软件为www.yixiang.co开发研制
*/
package org.arch.common.user.entity;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.util.Date;
/**
* 菜单
* @author hupeng
* @date 2020-05-14
*/
@Data
@TableName("sys_menu")
public class Menu implements Serializable, Comparable<Menu> {
/** ID */
@ApiModelProperty("ID")
private Long id;
/** 是否外链 */
@ApiModelProperty("是否外链")
private Boolean iFrame;
/** 菜单名称 */
@NotBlank(message = "请填写菜单名称")
@ApiModelProperty("菜单名称")
private String name;
/** 组件 */
@ApiModelProperty("ID")
private String component;
/** 上级菜单ID */
@NotNull(message = "上级菜单ID不能为空")
@ApiModelProperty("上级菜单ID")
private String pid;
@ApiModelProperty("上级菜单ID串")
private String pids;
/** 排序 */
@NotNull(message = "排序不能为空")
@ApiModelProperty("排序")
private Long sort;
/** 图标 */
@ApiModelProperty("图标")
private String icon;
/** 链接地址 */
@ApiModelProperty("链接地址")
private String path;
/** 缓存 */
@ApiModelProperty("缓存")
private Boolean cache;
/** 是否隐藏 */
@ApiModelProperty("启用禁用")
private Boolean hidden;
/** 组件名称 */
@ApiModelProperty("组件名称")
private String componentName;
/** 创建日期 */
@ApiModelProperty("创建日期")
@TableField(fill= FieldFill.INSERT)
private Date createTime;
/** 权限 */
@ApiModelProperty("权限")
private String permission;
/** 类型,0:目录、1:菜单、2:按钮 */
@ApiModelProperty("类型,0:目录、1:菜单、2:按钮")
private Integer type;
/** 类别 0:系统 1:项目*/
@ApiModelProperty("类别 0:系统 1:项目")
private Integer category;
@ApiModelProperty("ISCID")
private String iscId;
@Override
public int compareTo(Menu o) {
int i=this.getSort().intValue()-o.getSort().intValue();
if(i==0){
return this.sort.intValue()-o.getSort().intValue();
}
return i;
}
}
package org.arch.common.user.entity;
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 com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
/**
* <p>
*
* </p>
*
* @author audit
* @since 2020-08-21
*/
@Data
@EqualsAndHashCode(callSuper = false)
@TableName("sys_org")
@ApiModel(value = "Org对象", description = "Org对象")
public class Org implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "组织ID")
@TableId(value = "org_id", type = IdType.AUTO)
private Long orgId;
@ApiModelProperty(value = "上级组织ID")
private Long parentOrgId;
@ApiModelProperty(value = "上级组织名称")
@TableField(exist = false)
private String parentOrgName;
@ApiModelProperty(value = "组织编码")
private String orgCode;
@ApiModelProperty(value = "组织名称")
private String orgName;
@ApiModelProperty(value = "组织简称")
private String orgSimpleName;
@ApiModelProperty(value = "组织描述")
private String orgDesc;
@ApiModelProperty(value = "组织状态;1:启动 0:禁用")
private String orgStatus;
@ApiModelProperty(value = "组织类型;1:内部组织 2:外部组织")
private String orgType;
@ApiModelProperty(value = "排序字段")
private Integer orgSort;
@ApiModelProperty(value = "创建人")
private Long createMan;
@ApiModelProperty(value = "创建人名称")
@TableField(exist = false)
private String createManName;
@ApiModelProperty(value = "创建时间")
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
private Date createTime;
@ApiModelProperty(value = "最后一次修改时间")
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
private Date lastUpdateTime;
@ApiModelProperty(value = "最后一次修改人")
private Long lastUpdateMan;
@ApiModelProperty(value = "父节点串")
private String ids;
@ApiModelProperty(value = "子组织")
@TableField(exist = false)
private List<Org> children;
@ApiModelProperty(value = "基准id")
private String depId;
@ApiModelProperty(value = "基准父级id")
private String parentId;
@ApiModelProperty(value = "组织性质,DEPT:部门 CORP:单位")
private String natureCode;
@ApiModelProperty(value = "所属部门id")
private String branchOrgId;
private Integer isShow;
}
......@@ -23,5 +23,11 @@
<artifactId>mybatis</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.arch</groupId>
<artifactId>common</artifactId>
<version>1.0-SNAPSHOT</version>
<scope>compile</scope>
</dependency>
</dependencies>
</project>
\ No newline at end of file
package org.arch.log.service;
import com.baomidou.mybatisplus.extension.service.IService;
import org.arch.common.user.dto.UserDto;
import org.arch.log.entity.SysEventLog;
import org.arch.modules.sysmanage.dto.UserDto;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
......
......@@ -7,10 +7,10 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.baomidou.mybatisplus.extension.toolkit.SqlHelper;
import org.arch.common.user.dto.UserDto;
import org.arch.log.entity.SysEventLog;
import org.arch.log.mapper.SysEventLogMapper;
import org.arch.log.service.SysEventLogService;
import org.arch.modules.sysmanage.dto.UserDto;
import org.arch.utils.StringUtils;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageImpl;
......
......@@ -23,7 +23,10 @@
<groupId>com.github.yulichang</groupId>
<artifactId>mybatis-plus-join-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>com.github.yulichang</groupId>
<artifactId>mybatis-plus-join-core</artifactId>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
......
......@@ -18,6 +18,7 @@
<module>mybatis</module>
<module>nacos</module>
<module>filters</module>
<module>common</module>
</modules>
<properties>
<maven.compiler.source>8</maven.compiler.source>
......
......@@ -43,6 +43,12 @@
<artifactId>arch-base</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.arch</groupId>
<artifactId>common</artifactId>
<version>1.0-SNAPSHOT</version>
<scope>compile</scope>
</dependency>
</dependencies>
</project>
\ No newline at end of file
......@@ -9,7 +9,7 @@ import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.arch.common.entity.BaseEntity;
import org.arch.common.BaseEntity;
import java.io.Serializable;
......
package org.arch.storage.service;
import org.arch.modules.base.dto.DelDTO;
import org.arch.modules.base.dto.DownloadObjectDTO;
import org.arch.modules.base.vo.UpLoadVO;
import org.arch.common.base.dto.DelDTO;
import org.arch.common.base.dto.DownloadObjectDTO;
import org.arch.common.base.vo.UpLoadVO;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletResponse;
......
......@@ -6,9 +6,9 @@ import lombok.RequiredArgsConstructor;
import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j;
import org.arch.storage.entity.File;
import org.arch.modules.base.dto.DelDTO;
import org.arch.modules.base.dto.DownloadObjectDTO;
import org.arch.modules.base.vo.UpLoadVO;
import org.arch.common.base.dto.DelDTO;
import org.arch.common.base.dto.DownloadObjectDTO;
import org.arch.common.base.vo.UpLoadVO;
import org.arch.storage.mapper.FileMapper;
import org.arch.storage.service.OssService;
import org.arch.utils.FileUtils;
......
......@@ -96,6 +96,18 @@
<groupId>org.bouncycastle</groupId>
<artifactId>bcprov-jdk15on</artifactId>
</dependency>
<dependency>
<groupId>org.arch</groupId>
<artifactId>common</artifactId>
<version>1.0-SNAPSHOT</version>
<scope>compile</scope>
<exclusions>
<exclusion>
<groupId>org.arch</groupId>
<artifactId>mybatis</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
<build>
<finalName>${project.artifactId}</finalName>
......
......@@ -2,11 +2,12 @@ package org.arch;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
/**
* Hello world!
*/
@SpringBootApplication
@SpringBootApplication(exclude = DataSourceAutoConfiguration.class)
public class GatewayApp {
public static void main(String[] args) {
SpringApplication.run(GatewayApp.class, args);
......
......@@ -3,8 +3,8 @@ package org.arch.config;
import com.alibaba.cloud.commons.lang.StringUtils;
import net.minidev.json.JSONObject;
import org.arch.overall.service.RedisService;
import org.arch.util.JwtUtil;
import org.arch.common.redis.service.RedisService;
import org.arch.utils.JwtUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
......
/**
* Copyright (C) 2018-2020
* All rights reserved, Designed By www.yixiang.co
* 注意:
* 本软件为www.yixiang.co开发研制
*/
package org.arch.util;
import javax.servlet.http.HttpServletRequest;
import java.net.InetAddress;
import java.net.UnknownHostException;
import java.util.Calendar;
import java.util.Date;
/**
* @author Zheng Jie
* 字符串工具类, 继承org.apache.commons.lang3.StringUtils类
*/
public class StringUtils extends org.apache.commons.lang3.StringUtils {
private static final char SEPARATOR = '_';
private static final String UNKNOWN = "unknown";
/**
* 驼峰命名法工具
*
* @return toCamelCase(" hello_world ") == "helloWorld"
* toCapitalizeCamelCase("hello_world") == "HelloWorld"
* toUnderScoreCase("helloWorld") = "hello_world"
*/
public static String toCamelCase(String s) {
if (s == null) {
return null;
}
s = s.toLowerCase();
StringBuilder sb = new StringBuilder(s.length());
boolean upperCase = false;
for (int i = 0; i < s.length(); i++) {
char c = s.charAt(i);
if (c == SEPARATOR) {
upperCase = true;
} else if (upperCase) {
sb.append(Character.toUpperCase(c));
upperCase = false;
} else {
sb.append(c);
}
}
return sb.toString();
}
/**
* 驼峰命名法工具
*
* @return toCamelCase(" hello_world ") == "helloWorld"
* toCapitalizeCamelCase("hello_world") == "HelloWorld"
* toUnderScoreCase("helloWorld") = "hello_world"
*/
public static String toCapitalizeCamelCase(String s) {
if (s == null) {
return null;
}
s = toCamelCase(s);
return s.substring(0, 1).toUpperCase() + s.substring(1);
}
/**
* 驼峰命名法工具
*
* @return toCamelCase(" hello_world ") == "helloWorld"
* toCapitalizeCamelCase("hello_world") == "HelloWorld"
* toUnderScoreCase("helloWorld") = "hello_world"
*/
static String toUnderScoreCase(String s) {
if (s == null) {
return null;
}
StringBuilder sb = new StringBuilder();
boolean upperCase = false;
for (int i = 0; i < s.length(); i++) {
char c = s.charAt(i);
boolean nextUpperCase = true;
if (i < (s.length() - 1)) {
nextUpperCase = Character.isUpperCase(s.charAt(i + 1));
}
if ((i > 0) && Character.isUpperCase(c)) {
if (!upperCase || !nextUpperCase) {
sb.append(SEPARATOR);
}
upperCase = true;
} else {
upperCase = false;
}
sb.append(Character.toLowerCase(c));
}
return sb.toString();
}
/**
* 获取ip地址
*/
public static String getIp(HttpServletRequest request) {
String ip = request.getHeader("x-forwarded-for");
if (ip == null || ip.length() == 0 || UNKNOWN.equalsIgnoreCase(ip)) {
ip = request.getHeader("Proxy-Client-IP");
}
if (ip == null || ip.length() == 0 || UNKNOWN.equalsIgnoreCase(ip)) {
ip = request.getHeader("WL-Proxy-Client-IP");
}
if (ip == null || ip.length() == 0 || UNKNOWN.equalsIgnoreCase(ip)) {
ip = request.getRemoteAddr();
}
String comma = ",";
String localhost = "127.0.0.1";
if (ip.contains(comma)) {
ip = ip.split(",")[0];
}
if (localhost.equals(ip)) {
// 获取本机真正的ip地址
try {
ip = InetAddress.getLocalHost().getHostAddress();
} catch (UnknownHostException e) {
e.printStackTrace();
}
}
return ip;
}
/**
* 获得当天是周几
*/
public static String getWeekDay(){
String[] weekDays = {"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"};
Calendar cal = Calendar.getInstance();
cal.setTime(new Date());
int w = cal.get(Calendar.DAY_OF_WEEK) - 1;
if (w < 0){
w = 0;
}
return weekDays[w];
}
}
......@@ -46,6 +46,15 @@
<artifactId>filters</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.arch</groupId>
<artifactId>common</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.nasdanika.core</groupId>
<artifactId>mxgraph</artifactId>
</dependency>
</dependencies>
<build>
......
package org.arch.overall.controller;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.arch.Result;
import org.arch.log.annotation.OperLog;
import org.arch.log.entity.DescContent;
import org.arch.log.logenum.LogOperTypeEnum;
import org.arch.log.logenum.LogTypeEnum;
import org.arch.common.archoverall.dto.ArchiAssetInfoDTO;
import org.arch.common.archoverall.dto.DelDTO;
import org.arch.overall.dto.ArchiDto;
import org.arch.overall.entity.ArchiElementNestRelation;
import org.arch.overall.entity.AssetInfo;
import org.arch.overall.service.ArchiAssetInfoService;
import org.arch.overall.utils.GenerateAssetCodeUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
import java.util.Map;
import java.util.Optional;
/**
* <p>
* 资产架构 前端控制器
* </p>
*
* @author author
* @since 2024-01-09
*/
@Api(value = "/arc-ast-info", tags = {"总体架构资产"})
@RestController
@RequestMapping("/arc-ast-info")
public class ArchiAssetInfoController {
@Autowired
private ArchiAssetInfoService archiAssetInfoService;
@ApiOperation(DescContent.QUERY_OVERALL_ASSET_LIST)
@PostMapping(value = "/")
@OperLog(value = LogOperTypeEnum.QUERY, logTypeValue = LogTypeEnum.BUSI_LOG, operDes = "查询资产列表信息",moduleName = "资产管理")
public Result iPage(@RequestBody ArchiAssetInfoDTO params) {
return Result.success(archiAssetInfoService.iPage(params));
}
@ApiOperation(value = "新增", notes = "新增", httpMethod = "POST")
@PostMapping(value = "/ad")
@OperLog(value = LogOperTypeEnum.ADD, logTypeValue = LogTypeEnum.BUSI_LOG, moduleName = "资产管理", operDes = "新增总体架构资产数据")
public Result create(@RequestBody ArchiAssetInfoDTO params) {
return Result.success(archiAssetInfoService.inster(params));
}
@ApiOperation(value = "修改", notes = "修改", httpMethod = "POST")
@PostMapping(value = "/upd")
@OperLog(value = LogOperTypeEnum.UPDATE, logTypeValue = LogTypeEnum.BUSI_LOG, moduleName = "资产管理", operDes = "修改总体架构资产数据")
public Result update(@RequestBody ArchiAssetInfoDTO params) {
return Result.success(archiAssetInfoService.update(params));
}
@PostMapping(value = "/delBatch")
@ApiOperation(value = "批量删除", notes = "批量删除", httpMethod = "POST")
@OperLog(value = LogOperTypeEnum.DELETE, logTypeValue = LogTypeEnum.BUSI_LOG, moduleName = "资产管理", operDes = "删除总体架构资产数据")
public Result delBatch(@RequestBody DelDTO requestMap) {
return archiAssetInfoService.delBatch(requestMap) ? Result.success("删除成功") : Result.error("删除失败");
}
@ApiOperation(value = "不分页查询", notes = "不分页查询", httpMethod = "POST")
@PostMapping(value = "/assetList")
@OperLog(value = LogOperTypeEnum.QUERY, logTypeValue = LogTypeEnum.BUSI_LOG, moduleName = "资产管理", operDes = "不分页查询总体架构资产数据")
public Result assetList(@RequestBody ArchiAssetInfoDTO params) {
List<AssetInfo> assetList = archiAssetInfoService.assetList(params);
return Result.success(assetList);
}
// 资产管理节点树(上级节点树)
@ApiOperation("架构资产管理-五大架构架构资产单节点树")
@PostMapping("/qryByTree")
@OperLog(value = LogOperTypeEnum.QUERY, logTypeValue = LogTypeEnum.BUSI_LOG, moduleName = "资产管理", operDes = "查询五大架构资产树")
@ApiImplicitParams({
@ApiImplicitParam(name = "archiType", value = "架构类型 应用架构:ARCHI_APPLICATION , 业务架构:ARCHI_BUSINESS, 数据架构:ARCHI_DATA, 安全架构: ARCHI_SAFE, 技术架构: ARCHI_TECHNOLOGY", required = true, dataType = "string", paramType = "query"),
@ApiImplicitParam(name = "archiAssetState", value = "架构资产状态(字典中读取,1:现状态;2:目标态)", required = false, dataType = "int", paramType = "query"),
@ApiImplicitParam(name = "archiStage", value = "架构阶段(1:总体架构;2:系统架构)", required = false, dataType = "String", paramType = "query"),
@ApiImplicitParam(name = "eleName", value = "元素名称", required = false, dataType = "String", paramType = "query"),
})
Result<List<AssetInfo>> qryTree(@RequestBody ArchiDto frameworkDto) {
String archiType = frameworkDto.getArchiType();
if (!Optional.ofNullable(archiType).isPresent()) {
return Result.error("架构类型不能为空");
}
// 构建查询条件
// 查询系统版本
// LambdaQueryWrapper<ArchiAssetSystem> wrapper = new LambdaQueryWrapper<ArchiAssetSystem>()
// .select(ArchiAssetSystem::getVersionId)
// .eq(ArchiAssetSystem::getArchiStatus, 1);
// ArchiAssetSystem version = archiAssetSystemMapper.selectOne(wrapper);
// Assert.notNull(version, "最新版本不存在");
// Long versionId = version.getVersionId();
// frameworkDto.setVersionId(versionId);
List<AssetInfo> assetInfos = archiAssetInfoService.qryTree(frameworkDto);
return Result.success(assetInfos);
}
@ApiOperation(value = "查询上级元素", notes = "查询上级元素", httpMethod = "POST")
@PostMapping(value = "/qyLastEle")
@OperLog(value = LogOperTypeEnum.QUERY, logTypeValue = LogTypeEnum.BUSI_LOG, moduleName = "资产管理", operDes = "查询上级元素")
public Result qyLastEle(@RequestBody ArchiAssetInfoDTO params) {
List<ArchiElementNestRelation> assetList = archiAssetInfoService.qyLastEle(params);
return Result.success(assetList);
}
@ApiOperation(value = "获取总体资产编码", notes = "获取总体资产编码", httpMethod = "POST")
@OperLog(value = LogOperTypeEnum.QUERY, logTypeValue = LogTypeEnum.BUSI_LOG, moduleName = "资产管理", operDes = "获取资产编码")
@PostMapping(value = "/getAssetCode")
public Result getTotalityAssetCode(@RequestBody Map<String, String> param) {
try {
//架构阶段(1:总体架构;2:系统架构 3:概设架构 4:其他架构)
Integer archiStage = 1;
String totalityAssetCode = GenerateAssetCodeUtils.getTotalityAssetCode(param.get("archiType"),
param.get("superiorAssetCode"),
param.get("assetCode"),
param.get("archiStage"));
return Result.success(totalityAssetCode);
} catch (Exception e) {
return Result.error(e.getMessage());
}
}
}
package org.arch.overall.controller;
import io.swagger.annotations.ApiOperation;
import org.arch.Result;
import org.arch.log.entity.DescContent;
import org.arch.common.archoverall.dto.ArchiEleRelaDTO;
import org.arch.common.archoverall.dto.BatchUpdateRelaDTO;
import org.arch.overall.entity.ArchiEleRela;
import org.arch.overall.service.ArchiElePropertyService;
import org.arch.overall.service.ArchiEleRelaService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.arch.log.annotation.OperLog;
import org.arch.log.logenum.LogOperTypeEnum;
import org.arch.log.logenum.LogTypeEnum;
import java.util.List;
import java.util.Map;
@RestController
@RequestMapping("ele-rel")
public class ArchiEleRelaController {
@Autowired
private ArchiEleRelaService archiEleRelaService;
@Autowired
private ArchiElePropertyService archiElePropertyService;
@PostMapping(value = "/")
@ApiOperation(DescContent.QUERY_LIST_ELEMENT_RELATIONSHIPS)
@OperLog(value = LogOperTypeEnum.QUERY, logTypeValue = LogTypeEnum.BUSI_LOG, operDes = "获取元素关系",moduleName = "元素管理")
public Result gtArchiEleRela(@RequestBody ArchiEleRelaDTO dto) {
return Result.success(archiEleRelaService.gtArchiEleRela(dto));
}
@PostMapping("/ad-ele-rel")
@ApiOperation(value = "新增元素关系")
@OperLog(value = LogOperTypeEnum.ADD, logTypeValue = LogTypeEnum.BUSI_LOG, moduleName = "元素管理", operDes = "新增元素关系")
public Result addArchiEleRela(@RequestBody ArchiEleRela archiEleRelas) {
return Result.success(archiEleRelaService.insert(archiEleRelas));
}
@PostMapping(value = "/upd-ele-rel")
@ApiOperation(value = "修改元素关系")
@OperLog(value = LogOperTypeEnum.UPDATE, logTypeValue = LogTypeEnum.BUSI_LOG, moduleName = "元素管理", operDes = "修改元素关系")
public Result updArchiEleRela(@RequestBody ArchiEleRela archiEleRelas) {
return Result.success(archiEleRelaService.update(archiEleRelas));
}
@PostMapping(value = "/del-ele-rel")
@ApiOperation(value = "根据Id删除元素关系")
@OperLog(value = LogOperTypeEnum.ADD, logTypeValue = LogTypeEnum.BUSI_LOG, moduleName = "元素管理", operDes = "根据id删除元素关系")
public Result delArchiEleRela(@RequestBody ArchiEleRela archiEleRelas) {
return Result.success(archiEleRelaService.del(archiEleRelas));
}
@PostMapping(value = "/batchupd-ele-rel")
@ApiOperation(value = "批量发布版本")
@OperLog(value = LogOperTypeEnum.UPDATE, logTypeValue = LogTypeEnum.BUSI_LOG, moduleName = "元素管理", operDes = "批量发布版本")
public Result updateEleRelBatch(@RequestBody BatchUpdateRelaDTO requestMap) {
return Result.success(archiEleRelaService.updBatch(requestMap));
}
@ApiOperation("根据元素关系查询元素信息")
@PostMapping(value = "/qEle")
@OperLog(value = LogOperTypeEnum.QUERY, logTypeValue = LogTypeEnum.BUSI_LOG, moduleName = "元素管理",operDes="根据元素关系查询元素信息")
public Result qEle(@RequestBody ArchiEleRelaDTO dto) {
return Result.success(archiEleRelaService.findEleRelaConstrainList(dto.getEleRelaId()));
}
@ApiOperation("查询元素关系(只包含元素关系名称)")
@PostMapping(value = "/qEleRela")
@OperLog(value = LogOperTypeEnum.QUERY, logTypeValue = LogTypeEnum.BUSI_LOG, moduleName = "元素管理",operDes="询元素关系(只包含元素关系名称)")
public Result qEleRela() {
return Result.success(archiEleRelaService.findEleRelaList());
}
@ApiOperation("批量新增/修改元素")
@PostMapping(value = "/updEleBatch")
@OperLog(value = LogOperTypeEnum.ADD, logTypeValue = LogTypeEnum.BUSI_LOG, moduleName = "元素管理",operDes = "批量新增/修改元素")
public Result updEleBatch(@RequestBody List<Map<String, Object>> requestList) {
return Result.success(archiElePropertyService.updateEleRelBatch(requestList));
}
@PostMapping(value = "/rel-list")
@ApiOperation(value = "获取元素关系列表")
@OperLog(value = LogOperTypeEnum.QUERY, logTypeValue = LogTypeEnum.BUSI_LOG, moduleName = "元素管理", operDes = "获取元素关系列表")
public Result gtEleRelList(@RequestBody ArchiEleRelaDTO dto) {
return Result.success(archiEleRelaService.gtEleRelList(dto));
}
}
......@@ -8,8 +8,8 @@ import org.arch.Result;
import org.arch.log.annotation.OperLog;
import org.arch.log.logenum.LogOperTypeEnum;
import org.arch.log.logenum.LogTypeEnum;
import org.arch.modules.archoverall.dto.ArchiElementDTO;
import org.arch.modules.archoverall.dto.BatchUpdateDTO;
import org.arch.common.archoverall.dto.ArchiElementDTO;
import org.arch.common.archoverall.dto.BatchUpdateDTO;
import org.arch.overall.entity.ArchiElement;
import org.arch.overall.service.ArchiElementService;
import org.springframework.web.bind.annotation.*;
......
package org.arch.overall.dto;
import lombok.Data;
import java.util.List;
/**
* 设计态-架构资产
*
* @author xh13k
* @date 2024/05/31
*/
@Data
public class ArchiAssetDesignedAddDTO {
/**
* 资产添加批处理
*/
List<ArchiAssetDesignedInfoDTO> assetAddBatch;
}
package org.arch.overall.dto;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.annotation.TableField;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.arch.common.archoverall.dto.BasePageEntity;
import org.arch.overall.entity.AssetInfo;
import java.util.List;
/**
* 架构资产
*/
@EqualsAndHashCode(callSuper = true)
@ApiModel(description = "架构资产")
@Data
public class ArchiAssetDesignedInfoDTO extends BasePageEntity {
@ApiModelProperty(value = "架构组件ID")
@JsonFormat(shape = JsonFormat.Shape.STRING)
private Long assetId;
@ApiModelProperty(value = "架构组件名称")
private String assetName;
@ApiModelProperty(value = "资产编码,采用8位阶梯设计编码,通过编码识别层级")
private String assetCode;
@ApiModelProperty(value = "上级架构组件ID")
@JsonFormat(shape = JsonFormat.Shape.STRING)
private Long parentAssetId;
@ApiModelProperty(value = "上级架构组件名称")
private String parentAssetName;
@ApiModelProperty(value = "父级编码")
private String parentCode;
@ApiModelProperty(value = "版本ID")
private Long versionId;
@ApiModelProperty(value = "架构元素Id")
private Long archiEleId;
@ApiModelProperty(value = "架构类型")
private String archiType;
@ApiModelProperty(value = "架构归属")
private Integer archiBelongId;
@ApiModelProperty(value = "架构资产状态(字典中读取,1:现状态;2:目标态)")
private Integer archiAssetState;
@ApiModelProperty(value = "架构资产类型(架构视图、架构演进路线、业务活动资产等),必传")
private Integer archiAssetType;
@ApiModelProperty(value = "架构阶段(1:总体架构;2:系统架构),必传")
private Integer archiStage;
@ApiModelProperty(value = "架构资产类型关联的ID,目前架构视图关联archi_view表,必传")
private Long archiAssetTypeId;
@ApiModelProperty(value = "关联资产,实际用作兄弟关系连线,可支持多个target")
private List<JSONObject> targetAsset;
@ApiModelProperty(value = "JSON综合字段;将架构元素的属性和值利用Json数据存储")
private List<JSONObject> fieldsValue;
@ApiModelProperty(value = "扩展字段")
private String column01;
@ApiModelProperty(value = "扩展字段")
private String column02;
@ApiModelProperty(value = "组件类型名称")
private String eleName;
@ApiModelProperty(value = "旧版本ID")
private Long orignVersionId;
@ApiModelProperty(value = "排序")
private Integer sort;
@ApiModelProperty(value = "是否首页展示 0 展示 1 不展示")
private Byte isShow;
@ApiModelProperty(value = "原架构ID")
@JsonSerialize(using = ToStringSerializer.class)
private Long orignAssetId;
@ApiModelProperty(value = "资产常量,必传。")
private String assetConstant;
@ApiModelProperty(value = "版本")
private String version;
@ApiModelProperty(value = "状态 0:已停用 1:已发布 2:暂存")
private Integer state;
@ApiModelProperty(value = "承建类型:1统推,2自建")
private Integer buildType;
@ApiModelProperty(value = "来源:0系统资产,1总体资产,2概设关联业务管理同步更新")
private Integer isExtend;
@ApiModelProperty(value = "架构资产子节点树")
private List<AssetInfo> children;
@ApiModelProperty(value = "颜色")
private String color;
@ApiModelProperty(value = "上级元素名称")
private List<String> parentElement;
@ApiModelProperty(value = "资产编号")
private String assetNumber;
@ApiModelProperty(value = "图形库ID")
private Long graphId;
@ApiModelProperty(value = "图标")
@TableField(exist = false)
private String icon;
@ApiModelProperty(value = "图形名称")
@TableField(exist = false)
private String iconName;
@ApiModelProperty(value = "上级资产")
private List<String> parentAsset;
/**
* 视图ID
*/
@ApiModelProperty(value = "视图ID")
private Long viewId;
/**
* 视图模板ID
*/
@ApiModelProperty(value = "视图模板ID")
private Long tplId;
@ApiModelProperty(value = "一层级")
@TableField(exist = false)
private String assetFirstName;
@ApiModelProperty(value = "二层级")
@TableField(exist = false)
private String assetSecondName;
}
\ No newline at end of file
package org.arch.overall.dto;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.arch.config.LongListFormatSerializer;
import org.arch.overall.entity.ArchiAssetRelated;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
/**
* <p>
* 应用架构
* </p>
*
* @author
* @since 2020-08-29
*/
@Data
@ApiModel("架构对象")
public class ArchiDto implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 架构组件ID
*/
@ApiModelProperty("架构组件ID")
@JsonSerialize(using = ToStringSerializer.class)
private Long assetId;
@ApiModelProperty("视图id")
private Long viewId;
@ApiModelProperty("架构阶段(1:总体架构;2:系统架构)")
private String archiStage;
/**
* 架构组件名称
*/
@ApiModelProperty("架构组件名称")
private String assetName;
/**
* 上级架构组件ID
*/
@ApiModelProperty("上级架构组件ID")
@JsonSerialize(using = ToStringSerializer.class)
private Long parentAssetId;
/**
* 上级架构组件ID串
*/
@ApiModelProperty("上级架构组件ID串")
private String parentIds;
/**
* 上级架构组件名称
*/
@ApiModelProperty("上级架构组件名称")
private String parentAssetName;
/**
* 版本ID
*/
@ApiModelProperty("版本ID")
private Long versionId;
// /**
// * 组件类型ID
// */
// @ApiModelProperty("组件类型ID")
// private Long moduleTypeId;
// /**
// * 组件类型名称
// */
// @ApiModelProperty("组件类型名称")
// private String moduleTypeName;
/**
* 架构类型
*/
@ApiModelProperty("架构类型")
private String archiType;
// @ApiModelProperty("上级架构")
// private String path;
//
// @ApiModelProperty("重复关键字")
// private String keyWord;
/**
* 创建时间
*/
@ApiModelProperty("创建时间")
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
private Date createTime;
/**
* 创建人
*/
@ApiModelProperty("创建人")
private Long createMan;
/**
* 创建人
*/
@ApiModelProperty("创建人")
private String createManName;
/**
* 最后一次修改时间
*/
@ApiModelProperty("最后一次修改时间")
private Date lastUpdateTime;
/**
* 最后一次修改人
*/
@ApiModelProperty("最后一次修改人")
private Long lastUpdateMan;
/**
* 最后一次修改人
*/
@ApiModelProperty("最后一次修改人")
private String lastUpdateManName;
@ApiModelProperty("元素名称")
private String eleName;
/**
* 关联架构
*/
@ApiModelProperty("关联架构")
private List<ArchiAssetRelated> relateFrameworkList;
/**
* 关联应用架构ID集合
*/
@ApiModelProperty("关联应用架构ID集合")
@JsonSerialize(using = LongListFormatSerializer.class)
private List<Long> appIds;
/**
* 关联业务架构ID集合
*/
@ApiModelProperty("关联业务架构ID集合")
@JsonSerialize(using = LongListFormatSerializer.class)
private List<Long> busIds;
/**
* 关联数据架构ID集合
*/
@ApiModelProperty("关联数据架构ID集合")
@JsonSerialize(using = LongListFormatSerializer.class)
private List<Long> dataIds;
/**
* 关联安全架构ID集合
*/
@ApiModelProperty("关联安全架构ID集合")
@JsonSerialize(using = LongListFormatSerializer.class)
private List<Long> safeIds;
/**
* 关联技术架构ID集合
*/
@ApiModelProperty("关联技术架构ID集合")
@JsonSerialize(using = LongListFormatSerializer.class)
private List<Long> tecIds;
/**
* 存储字段1
*/
@ApiModelProperty("存储字段")
private String column01;
/**
* 存储字段2
*/
@ApiModelProperty("存储字段")
private String column02;
/**
* 存储字段4
*/
@ApiModelProperty("架构元素Id")
private Long archiEleId;
/**
* 存储字段5
*/
@ApiModelProperty("架构归属")
private int archiBelongId;
/**
* 存储字段6
*/
@ApiModelProperty("架构资产状态(字典中读取,1:现状态;2:目标态)")
private int archiAssetState;
/**
* 存储字段7
*/
@ApiModelProperty("架构资产类型(架构视图、架构演进路线、业务活动资产等)")
private int archiAssetType;
/**
* 存储字段8
*/
@ApiModelProperty("架构资产类型关联的ID,目前架构视图关联archi_view表")
private Long archiAssetTypeId;
/**
* 存储字段9
*/
@ApiModelProperty("JSON综合字段;将架构元素的属性和值利用Json数据存储")
private String fieldsValue;
/**
* 存储字段10
*/
@ApiModelProperty("旧版本ID")
private Long orignVersionId;
/**
* 存储字段11
*/
@ApiModelProperty("原架构ID")
@JsonSerialize(using = ToStringSerializer.class)
private Long orignAssetId;
/**
* 存储字段12
*/
@ApiModelProperty("删除标记(0:未删除;1:删除)")
private int delFlag;
// @ApiModelProperty("模板信息")
// private List<ModuleTypeDetail> moduleTypeDetailList;
@ApiModelProperty("附件集合")
@JsonSerialize(using = LongListFormatSerializer.class)
private List<Long> fileIds;
/**
* 排序
*/
@ApiModelProperty("排序")
private Integer sort;
@ApiModelProperty("是否首页展示 0 展示 1 不展示")
private Integer isShow;
@ApiModelProperty("子集集合")
private List<ArchiDto> childs;
private String ywy;
public ArchiDto() {
}
/**
* 存储字段19
*/
@ApiModelProperty("数据主题")
private String dataSubject;
/**
* 存储字段20
*/
@ApiModelProperty("数据域")
private String dataField;
@ApiModelProperty("架构层级")
private String layeredData;
@ApiModelProperty("可研项目数量")
private int projectCount;
@ApiModelProperty("累计金额(万)")
private double sumCost;
@ApiModelProperty("当前页数")
private Integer current;
@ApiModelProperty("页面显示数量")
private Integer pageSize;
public ArchiDto(String assetName, String createManName, Long parentAssetId) {
this.assetName = assetName;
this.createManName = createManName;
this.parentAssetId = parentAssetId;
}
}
package org.arch.overall.dto;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.arch.config.LongListFormatSerializer;
import java.io.Serializable;
import java.util.List;
/**
* <p>
* 应用架构
* </p>
*
* @author
* @since 2020-08-29
*/
@Data
@ApiModel("架构修改对象")
public class ArchiReqDto implements Serializable {
private static final long serialVersionUID = 1L;
private ArchiDto dto;
@ApiModelProperty(value = "应用架构:ARCHI_APPLICATION, 业务架构:ARCHI_BUSINESS, " +
"数据架构:ARCHI_DATA, 安全架构: ARCHI_SAFE, 技术架构: ARCHI_TECHNOLOGY")
private String archiType;
@ApiModelProperty("主键ID")
@JsonSerialize(using = ToStringSerializer.class)
private Long id;
@ApiModelProperty("主键IDS 数组")
@JsonSerialize(using = LongListFormatSerializer.class)
private List<Long> ids;
@ApiModelProperty("父级ID,没有值时请传'null'")
@JsonSerialize(using = LongListFormatSerializer.class)
private Long parentAssetId;
@ApiModelProperty("当前页")
private Integer current;
@ApiModelProperty("每页显示条数")
private Integer pageSize;
@ApiModelProperty("业务组件名称")
private String assetName;
@ApiModelProperty("创建人名称")
private String createManName;
@ApiModelProperty("版本id")
private Long versionId;
@ApiModelProperty("搜索类型")
private String searchFrameWorkType;
@ApiModelProperty("组件类型ID")
private Long moduleTypeId;
}
package org.arch.overall.entity;
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 com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import org.springframework.format.annotation.DateTimeFormat;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
/**
* 中台服务清单关联资产(资产关联,中台架构服务,其他四大架构资产)(ArchiAbilityAssetsRelation)实体类
*
* @author makejava
* @since 2024-04-29 14:27:35
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
@Accessors(chain = true)
@TableName("archi_ability_assets_relation")
@ApiModel(value = "archiAbilityAssetsRelation", description = "中台服务清单关联资产")
public class ArchiAbilityAssetsRelation implements Serializable {
private static final long serialVersionUID = 815044091405040796L;
/**
* 编号
*/
@ApiModelProperty(value = "编号(主键)")
@TableId(value = "rela_id", type = IdType.AUTO)
private Long relaId;
/**
* 资产Id
*/
@ApiModelProperty(value = "服务清单Id")
@JsonSerialize(using = ToStringSerializer.class)
private Long assetId;
/**
* 资产编码
*/
@ApiModelProperty(value = "服务编码")
private String assetCode;
@ApiModelProperty(value = "服务名称")
private String assetName;
/**
* 关联资产ID
*/
@ApiModelProperty(value = "资产ID")
@JsonSerialize(using = ToStringSerializer.class)
private Long relaAssetId;
/**
* 关联资产编码
*/
@ApiModelProperty(value = "关联资产编码")
private String relaAssetCode;
/**
* 关联资产名称
*/
@ApiModelProperty(value = "关联资产名称")
private String relaAssetName;
/**
* 架构类型Id
*/
@ApiModelProperty(value = "架构类型Id")
private Integer archiTypeId;
/**
* 架构类型名称(业务架构、应用架构、数据架构、技术架构、安全架构)
*/
@ApiModelProperty(value = "架构类型名称 1业务架构、2应用架构、3数据架构、4技术架构、5安全架构")
private String archiType;
/**
* 版本ID
*/
@ApiModelProperty(value = "版本ID")
private Integer versionId;
/**
* 视图ID
*/
@ApiModelProperty(value = "视图ID")
private Long viewId;
/**
* 创建人
*/
@ApiModelProperty(value = "创建人")
private Long creator;
/**
* 创建时间
*/
@ApiModelProperty(value = "创建时间")
@DateTimeFormat(pattern = "yyyy-MM-dd")
@JsonFormat(pattern = "yyyy-MM-dd")
private Date createTime;
/**
* 更新人
*/
@ApiModelProperty(value = "更新人")
private Long updateby;
/**
* 更新时间
*/
@ApiModelProperty(value = "更新时间")
@DateTimeFormat(pattern = "yyyy-MM-dd")
@JsonFormat(pattern = "yyyy-MM-dd")
private Date updateTime;
/**
* 删除标记(0:未删除;1:已删除)
*/
@ApiModelProperty(value = "删除标记(0:未删除;1:已删除)")
private Integer delFlag;
/**
* 元素名称
*/
@ApiModelProperty(value = "元素名称")
private String eleName;
/**
* 资产的父级节点串
*/
@ApiModelProperty(value = "资产的父级节点串")
private String parentAssetIds;
/**
* 资产的父级节点名称
*/
@ApiModelProperty(value = "资产的父级节点名称串")
private String parentAssetNames;
@ApiModelProperty(value = "服务对应资产统计信息")
@TableField(exist = false)
private List<ArchiAssetStatistics> statisticsList;
@ApiModelProperty(value = "JSON综合字段;将架构元素的属性和值利用Json数据存储")
private String fieldsValue;
/**
* 元素关系ID
*/
@ApiModelProperty("元素关系ID")
private Long eleRelaId;
/**
* 架构元素关系ID
*/
@ApiModelProperty(value = "主键")
@NotNull(message = "架构元素关系ID不能为空")
private Long assetRelaId;
/**
* 状态 0:已停用 1:已发布 2:暂存
*/
@ApiModelProperty(value = "状态 0:已停用 1:已发布 2:暂存")
private Integer state;
/**
* 图标ID
*/
@ApiModelProperty(value = "图标ID")
private String iconId;
}
package org.arch.overall.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import java.io.Serializable;
/**
* 架构间关系表(ArchiAssetRelated)实体类
*
* @author makejava
* @since 2024-01-16 18:32:13
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
@Accessors(chain = true)
@TableName("archi_asset_related")
@ApiModel(value = "archiAssetRelated", description = "架构关系关联表")
public class ArchiAssetRelated implements Serializable {
private static final long serialVersionUID = -33243590503312664L;
/**
* 主键
*/
@ApiModelProperty(value = "主键")
@TableId(value = "id", type = IdType.AUTO)
private Long id;
/**
* 主架构资产ID
*/
@ApiModelProperty(value = "主架构资产ID")
@JsonSerialize(using = ToStringSerializer.class)
private Long assetId;
/**
* 关联架构资产ID
*/
@ApiModelProperty(value = "关联架构资产ID")
@JsonSerialize(using = ToStringSerializer.class)
private Long relateAssetId;
/**
* 主架构类型(业务/应用/数据/技术/安全)
*/
@ApiModelProperty(value = "主架构类型(业务/应用/数据/技术/安全)")
private String archiType;
/**
* 关联架构类型(业务/应用/数据/技术/安全)
*/
@ApiModelProperty(value = "关联架构类型(业务/应用/数据/技术/安全)")
private String relateArchiType;
/**
* 架构元素Id
*/
@ApiModelProperty(value = "架构元素Id")
private String leftArchiEleId;
/**
* 被关联元素Id
*/
@ApiModelProperty(value = "被关联元素Id")
private String rigthArchiEleId;
/**
* 关联关系
*/
@ApiModelProperty(value = "关联关系")
private String conRelate;
/**
* 版本ID
*/
@ApiModelProperty(value = "版本ID")
private Long versionId;
}
package org.arch.overall.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import java.io.Serializable;
import java.util.Date;
/**
* 服务对应的资产统计信息(ArchiAssetStatistics)实体类
*
* @author makejava
* @since 2024-04-24 17:56:18
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
@Accessors(chain = true)
@TableName("archi_asset_statistics")
@ApiModel(value = "archiAssetStatistics", description = "服务对应的资产统计信息")
public class ArchiAssetStatistics implements Serializable {
private static final long serialVersionUID = 474742981630506476L;
/**
* 编号(主键)
*/
@ApiModelProperty(value = "编号(主键)")
private Long statisticsId;
/**
* 服务编码,企业架构中台服务清单表
*/
@ApiModelProperty(value = "服务编码,企业架构中台服务清单表")
private String abilityCode;
/**
* 架构类型(业务架构、应用架构、数据架构、技术架构、安全架构)
*/
@ApiModelProperty(value = "架构类型(1 业务架构、2 应用架构、3 数据架构、4 技术架构、5 安全架构)")
private Integer archiTypeId;
/**
* 统计类型(1:服务清单关联统计;2:业务关联统计;3:应用关联统计;4:数据实体关联统计;5:技术组件关联统计)
*/
@ApiModelProperty(value = "统计类型(1:服务清单关联统计;2:业务关联统计;3:应用关联统计;4:数据实体关联统计;5:技术组件关联统计)")
private Integer statType;
/**
* 分层统计(如果没有多层统计,关键字统计字段为空)
*/
@ApiModelProperty(value = "分层统计(如果没有多层统计,关键字统计字段为空)")
private Integer statKey;
/**
* 统计时间
*/
@ApiModelProperty(value = "统计时间")
private Date statTime;
/**
* 统计数量
*/
@ApiModelProperty(value = "统计数量")
private Integer statNum;
}
package org.arch.overall.entity;
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 io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import java.io.Serializable;
import java.util.Date;
/**
* <p>
* 架构版本
* </p>
*
* @author author
* @since 2024-01-16
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
@Accessors(chain = true)
@TableName("archi_asset_version")
@ApiModel(value = "ArchiAssetVersion对象", description = "架构版本")
public class ArchiAssetSystem implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "版本ID")
@TableId(value = "version_id", type = IdType.AUTO)
private Long versionId;
@ApiModelProperty(value = "版本名称")
@TableField("version_name")
private String versionName;
@ApiModelProperty(value = "版本编号")
@TableField("version_num")
private String versionNum;
@ApiModelProperty(value = "依赖版本ID")
@TableField("rely_version_id")
private Long relyVersionId;
@ApiModelProperty(value = "依赖版本号")
@TableField("rely_version_num")
private String relyVersionNum;
@ApiModelProperty(value = "版本描述")
@TableField("version_desc")
private String versionDesc;
@ApiModelProperty(value = "支撑架构(多个架构用逗号分割)")
@TableField("support_archi")
private String supportArchi;
@ApiModelProperty(value = "版本状态(1 当前版本 2 历史版本)")
@TableField("archi_status")
private String archiStatus;
@ApiModelProperty(value = "创建时间")
@TableField("create_time")
private Date createTime;
@ApiModelProperty(value = "创建人")
@TableField("create_man")
private Long createMan;
@ApiModelProperty(value = "实际结束时间")
@TableField("end_time")
private Date endTime;
@ApiModelProperty(value = "最后一次修改时间")
@TableField("last_update_time")
private Date lastUpdateTime;
@ApiModelProperty(value = "最后一次修改人")
@TableField("last_update_man")
private Long lastUpdateMan;
public Long getVersionId() {
return versionId;
}
public void setVersionId(Long versionId) {
this.versionId = versionId;
}
public String getVersionName() {
return versionName;
}
public void setVersionName(String versionName) {
this.versionName = versionName;
}
public String getVersionNum() {
return versionNum;
}
public void setVersionNum(String versionNum) {
this.versionNum = versionNum;
}
public Long getRelyVersionId() {
return relyVersionId;
}
public void setRelyVersionId(Long relyVersionId) {
this.relyVersionId = relyVersionId;
}
public String getRelyVersionNum() {
return relyVersionNum;
}
public void setRelyVersionNum(String relyVersionNum) {
this.relyVersionNum = relyVersionNum;
}
public String getVersionDesc() {
return versionDesc;
}
public void setVersionDesc(String versionDesc) {
this.versionDesc = versionDesc;
}
public String getSupportArchi() {
return supportArchi;
}
public void setSupportArchi(String supportArchi) {
this.supportArchi = supportArchi;
}
public String getArchiStatus() {
return archiStatus;
}
public void setArchiStatus(String archiStatus) {
this.archiStatus = archiStatus;
}
public Date getCreateTime() {
return createTime;
}
public void setCreateTime(Date createTime) {
this.createTime = createTime;
}
public Long getCreateMan() {
return createMan;
}
public void setCreateMan(Long createMan) {
this.createMan = createMan;
}
public Date getEndTime() {
return endTime;
}
public void setEndTime(Date endTime) {
this.endTime = endTime;
}
public Date getLastUpdateTime() {
return lastUpdateTime;
}
public void setLastUpdateTime(Date lastUpdateTime) {
this.lastUpdateTime = lastUpdateTime;
}
public Long getLastUpdateMan() {
return lastUpdateMan;
}
public void setLastUpdateMan(Long lastUpdateMan) {
this.lastUpdateMan = lastUpdateMan;
}
@Override
public String toString() {
return "ArchiAssetVersion{" +
", versionId = " + versionId +
", versionName = " + versionName +
", versionNum = " + versionNum +
", relyVersionId = " + relyVersionId +
", relyVersionNum = " + relyVersionNum +
", versionDesc = " + versionDesc +
", supportArchi = " + supportArchi +
", archiStatus = " + archiStatus +
", createTime = " + createTime +
", createMan = " + createMan +
", endTime = " + endTime +
", lastUpdateTime = " + lastUpdateTime +
", lastUpdateMan = " + lastUpdateMan +
"}";
}
}
package org.arch.overall.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import org.arch.common.BaseEntity;
import org.arch.common.archoverall.dto.ArchiEleRelaConstrainDTO;
import java.math.BigDecimal;
import java.util.List;
/**
* <p>
* 架构元素关系信息
* </p>
*
* @author lizhen
* @since 2023-11-30
*/
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("archi_ele_rela")
@ApiModel(value = "SchemaElementRelationship", description = "架构元素关系信息")
public class ArchiEleRela extends BaseEntity {
@ApiModelProperty(value = "主键")
@TableId("ele_rela_id")
private Long eleRelaId;
@ApiModelProperty(value = "编码")
private String eleRelaCode;
@ApiModelProperty(value = "元素关系名称")
private String rsName;
@ApiModelProperty(value = "对象 1")
private Long object1;
@ApiModelProperty(value = "对象 2")
private Long object2;
@ApiModelProperty(value = "适用范围")
private String scope;
@ApiModelProperty(value = "关系描述")
private String content;
@ApiModelProperty(value = "图标")
private String icon;
@ApiModelProperty(value = "图形名称")
private String iconName;
@ApiModelProperty(value = "图标ID")
private String iconId;
@ApiModelProperty(value = "版本")
private String version;
@ApiModelProperty(value = "状态 0:已停用 1:已发布 2:暂存")
private Integer state;
@ApiModelProperty(value = "元素id")
@TableField(exist = false)
private Long elementId;
@ApiModelProperty(value = "编码")
@TableField(exist = false)
private String elementCode;
@ApiModelProperty(value = "元素名称")
@TableField(exist = false)
private String elementName;
@ApiModelProperty(value = "架构层次")
@TableField(exist = false)
private Long archiLevelId;
@ApiModelProperty(value = "架构归属")
@TableField(exist = false)
private Long archiBelongId;
@ApiModelProperty(value = "企业架构层级")
@TableField(exist = false)
private Integer eaLevel;
@ApiModelProperty(value = "元素类型(1:标准图元;2:常规图元)")
@TableField(exist = false)
private Integer eleType;
@ApiModelProperty(value = "图像宽")
private BigDecimal shapeWidth;
@ApiModelProperty(value = "图像高")
private BigDecimal shapeHeight;
@TableField(exist = false)
@ApiModelProperty(value = "约束条件")
private List<ArchiEleRelaConstrainDTO> arrList;
@ApiModelProperty(value = "元素关系id集合")
@TableField(exist = false)
private List<Long> eleRelaIdList;
}
package org.arch.overall.entity;
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 lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.Date;
/**
* 元素关系的约束条件
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@TableName(value = "archi_ele_rela_constrain")
public class ArchiEleRelaConstrain {
/**
* 主键
*/
@TableId(value = "constrain_id", type = IdType.INPUT)
private Long constrainId;
/**
* 对象1
*/
@TableField(value = "ele_gt_id")
private Long eleGtId;
/**
* 对象2
*/
@TableField(value = "ele_lt_id")
private Long eleLtId;
/**
* 对象名称1
*/
@TableField(value = "ele_gt_name")
private String eleGtName;
/**
* 对象名称2
*/
@TableField(value = "ele_lt_name")
private String eleLtName;
/**
* 元素关系ID
*/
@TableField(value = "ele_rela_id")
private Long eleRelaId;
/**
* 元素关系名称
*/
@TableField(value = "ele_rela_name")
private String eleRelaName;
/**
* 适用范围
*/
@TableField(value = "`scope`")
private Integer scope;
/**
* 状态 0:已停用 1:已发布 2:暂存
*/
@TableField(value = "`state`")
private Integer state;
/**
* 创建人
*/
@TableField(value = "create_man")
private Long createMan;
/**
* 创建时间
*/
@TableField(value = "create_time")
private Date createTime;
/**
* 最后一次修改时间
*/
@TableField(value = "last_update_time")
private Date lastUpdateTime;
/**
* 最后一次修改人
*/
@TableField(value = "last_update_man")
private Long lastUpdateMan;
/**
* 是否删除 1:已删除 0:未删除
*/
@TableField(value = "del_flag")
private Integer delFlag;
}
\ No newline at end of file
......@@ -8,7 +8,7 @@ import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import org.arch.common.entity.BaseEntity;
import org.arch.common.BaseEntity;
import java.math.BigDecimal;
import java.util.List;
......
package org.arch.overall.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
/**
* <p>
* 上级元素信息
* </p>
*
* @author java
* @since 2024-02-28
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
@Accessors(chain = true)
@TableName("archi_element_nest_relation")
@ApiModel(value = "ArchiElementNestRelation对象", description = "上级元素信息")
public class ArchiElementNestRelation {
@ApiModelProperty(value = "ID")
private Long id;
@ApiModelProperty(value = "所属架构")
private String ownershipStructure;
@ApiModelProperty(value = "架构元素名称")
private String elementName;
@ApiModelProperty(value = "上级元素名称")
private String parentElement;
@ApiModelProperty(value = "是否自嵌套(1是,0否)")
private Integer nestFlag;
}
package org.arch.overall.entity;
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 io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import org.arch.common.BaseEntity;
/**
* <p>
* 元模型
* </p>
*
* @author lizhen
* @since 2023-12-01
*/
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("archi_meta_model")
@ApiModel(value = "MetamodelManagement", description = "元模型")
public class ArchiMetaModel extends BaseEntity {
@ApiModelProperty(value = "主键")
@TableId(value = "meta_model_id", type = IdType.AUTO)
private Long metaModelId;
@ApiModelProperty(value = "编码")
private String metaModelCode;
@ApiModelProperty(value = "版本信息")
private String version;
@ApiModelProperty(value = "版本名称")
private String verName;
@ApiModelProperty(value = "状态 0:已停用 1:已发布 2:暂存")
private Integer state;
@ApiModelProperty(value = "图形ID")
private Long graphId;
@ApiModelProperty(value = "元模型数据")
@TableField(exist = false)
private String metaModelData;
@ApiModelProperty(value = "元模型 SVG")
@TableField(exist = false)
private String metaModelSvg;
}
package org.arch.overall.entity;
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 com.baomidou.mybatisplus.extension.activerecord.Model;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import org.springframework.format.annotation.DateTimeFormat;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
/**
* <p>
* 业务架构
* </p>
*
* @author author
* @since 2024-01-09
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
@Accessors(chain = true)
@TableName("archi_asset_info")
@ApiModel(value = "架构资产对象", description = "资产架构")
public class AssetInfo extends Model<AssetInfo> {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "架构组件ID")
@TableId(value = "asset_id", type = IdType.AUTO)
@JsonFormat(shape = JsonFormat.Shape.STRING)
private Long assetId;
@ApiModelProperty(value = "架构组件名称")
private String assetName;
@ApiModelProperty(value = "资产编码,采用8位阶梯设计编码,通过编码识别层级")
private String assetCode;
@ApiModelProperty(value = "上级架构组件ID")
@JsonFormat(shape = JsonFormat.Shape.STRING)
private Long parentAssetId;
@ApiModelProperty(value = "上级架构组件名称")
private String parentAssetName;
@ApiModelProperty(value = "父级编码")
private String parentCode;
@ApiModelProperty(value = "版本ID")
private Long versionId;
@ApiModelProperty(value = "架构元素Id")
private Long archiEleId;
@ApiModelProperty(value = "架构类型")
private String archiType;
@ApiModelProperty(value = "架构归属")
private Byte archiBelongId;
@ApiModelProperty(value = "架构资产状态(字典中读取,1:现状态;2:目标态)")
private Byte archiAssetState;
@ApiModelProperty(value = "架构资产类型(架构视图、架构演进路线、业务活动资产等),必传")
private Byte archiAssetType;
@ApiModelProperty(value = "架构阶段(1:总体架构;2:系统架构),必传")
private Integer archiStage;
@ApiModelProperty(value = "架构资产类型关联的ID,目前架构视图关联archi_view表,必传")
private Long archiAssetTypeId;
@ApiModelProperty(value = "关联资产,实际用作兄弟关系连线,可支持多个target")
@JsonFormat(shape = JsonFormat.Shape.ARRAY)
private String targetAsset;
@ApiModelProperty(value = "创建时间")
@DateTimeFormat(pattern = "yyyy-MM-dd")
@JsonFormat(pattern = "yyyy-MM-dd")
private Date createTime;
@ApiModelProperty(value = "创建人")
private Long createMan;
@ApiModelProperty(value = "最后一次修改时间")
@DateTimeFormat(pattern = "yyyy-MM-dd")
@JsonFormat(pattern = "yyyy-MM-dd")
private Date lastUpdateTime;
@ApiModelProperty(value = "最后一次修改人")
private Long lastUpdateMan;
@ApiModelProperty(value = "JSON综合字段;将架构元素的属性和值利用Json数据存储")
private String fieldsValue;
@ApiModelProperty(value = "扩展字段")
private String column01;
@ApiModelProperty(value = "扩展字段")
private String column02;
@ApiModelProperty(value = "组件类型名称")
private String eleName;
@ApiModelProperty(value = "旧版本ID")
private Long orignVersionId;
@ApiModelProperty(value = "排序")
private Integer sort;
@ApiModelProperty(value = "是否首页展示 0 展示 1 不展示")
private Byte isShow;
@ApiModelProperty(value = "原架构ID")
private Long orignAssetId;
@ApiModelProperty(value = "是否删除 1:已删除 0:未删除")
private Integer delFlag;
@ApiModelProperty(value = "资产常量,必传。")
@TableField(exist = false)
private String assetConstant;
@ApiModelProperty(value = "版本")
private String version;
@ApiModelProperty(value = "状态 0:已停用 1:已发布 2:暂存")
private Integer state;
@ApiModelProperty(value = "承建类型:1统推,2自建")
@TableField("build_type")
private Integer buildType;
@ApiModelProperty(value = "来源:0系统资产,1总体资产,2概设关联业务管理同步更新")
private Integer isExtend;
@TableField(exist = false) // 表示数据库里不存在此字段
@ApiModelProperty(value = "架构资产子节点树")
private List<AssetInfo> children;
@ApiModelProperty(value = "颜色")
private String color;
@ApiModelProperty(value = "上级元素名称")
private String parentElement;
@ApiModelProperty(value = "资产编号")
private String assetNumber;
@ApiModelProperty(value = "图形库ID")
private Long graphId;
@ApiModelProperty(value = "图标")
@TableField(exist = false)
private String icon;
@ApiModelProperty(value = "图形名称")
@TableField(exist = false)
private String iconName;
@ApiModelProperty(value = "上级资产")
private String parentAsset;
@ApiModelProperty(value = "资产ID")
@TableField(exist = false)
private String id;
@Override
public Serializable pkVal() {
return this.assetId;
}
}
package org.arch.overall.entity;
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 io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import java.io.Serializable;
import java.util.Date;
/**
* <p>
* 概设材料在线意见编制
* </p>
*
* @author java
* @since 2024-03-18
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
@Accessors(chain = true)
@TableName("online_review_write")
@ApiModel(value = "OnlineReviewWrite对象", description = "概设材料在线意见编制")
public class OnlineReviewWrite implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "主键")
@TableId(value = "idea_id", type = IdType.AUTO)
private Long ideaId;
@ApiModelProperty(value = "意见编码")
@TableField("idea_code")
private String ideaCode;
@ApiModelProperty(value = "概设材料在线意见编制sheet(1:概设材料修改,2:意见生成与流转)")
@TableField("idea_type")
private Long ideaType;
@ApiModelProperty(value = "年度")
@TableField("year")
private String year;
@ApiModelProperty(value = "批次计划")
@TableField("bat_plan_id")
private Long batPlanId;
@ApiModelProperty(value = "批次名称")
@TableField("bat_name")
private String batName;
@ApiModelProperty(value = "需求Id")
@TableField("need_id")
private Long needId;
@ApiModelProperty(value = "需求名称")
@TableField("need_name")
private String needName;
@ApiModelProperty(value = "项目Id")
@TableField("prj_id")
private Long prjId;
@ApiModelProperty(value = "项目名称")
@TableField("prj_name")
private String prjName;
@ApiModelProperty(value = "关联机构Id")
@TableField("org_id")
private Long orgId;
@ApiModelProperty(value = "关联机构名称")
@TableField("org_name")
private String orgName;
@ApiModelProperty(value = "评审材料名称")
@TableField("require_name")
private String requireName;
@ApiModelProperty(value = "附件ID")
@TableField("file_id")
private Long fileId;
@ApiModelProperty(value = "附件URL")
@TableField("file_url")
private String fileUrl;
@ApiModelProperty(value = "推送状态(1:已反馈 2:未反馈)")
@TableField("push_state")
private Long pushState;
@ApiModelProperty(value = "发送状态(1:发送成功 2:未发送 3:发送失败)")
@TableField("send_state")
private Long sendState;
@ApiModelProperty(value = "剩余时间")
@TableField("excess_time")
private String excessTime;
@ApiModelProperty(value = "评审意见")
@TableField("review_suggestion")
private String reviewSuggestion;
@ApiModelProperty(value = "在线评审状态(1:通过 0:未通过 2:待评审)")
@TableField("online_review_state")
private Integer onlineReviewState;
@ApiModelProperty(value = "创建人")
@TableField("create_man")
private Integer createMan;
@ApiModelProperty(value = "创建时间")
@TableField("create_time")
private Date createTime;
@ApiModelProperty(value = "最后更新人")
@TableField("last_update_man")
private Integer lastUpdateMan;
@ApiModelProperty(value = "最后更新时间")
@TableField("last_update_time")
private Date lastUpdateTime;
@ApiModelProperty(value = "是否删除 1:已删除 0:未删除")
@TableField("del_flag")
private Integer delFlag;
}
package org.arch.overall.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.apache.ibatis.annotations.Param;
import org.arch.common.archoverall.dto.ArchiAbilityInventoryDataDTO;
import org.arch.common.archoverall.dto.ArchiAssetsRelationQueryDTO;
import org.arch.common.archoverall.vo.ArchiAbilityAssetsRelationQueryVO;
import org.arch.overall.entity.ArchiAbilityAssetsRelation;
import java.util.List;
/**
* 中台服务清单关联资产(资产关联,中台架构服务,其他四大架构资产)(ArchiAbilityAssetsRelation)表数据库访问层
*
* @author makejava
* @since 2024-04-29 14:27:33
*/
public interface ArchiAbilityAssetsRelationMapper extends BaseMapper<ArchiAbilityAssetsRelation> {
void addBach(@Param("entities") List<ArchiAbilityAssetsRelation> assetsList);
/**
* 批量删除
*
* @param assetsList 资产清单
* @return {@link Boolean }
*/
Boolean removeBatchIds(@Param("list") List<Long> assetsList);
IPage<ArchiAbilityAssetsRelation> qryDataListPage(@Param("dto") ArchiAbilityInventoryDataDTO params, Page<ArchiAbilityAssetsRelation> page);
/**
* 查询资产关系
*
* @param params 参数
* @return {@link IPage }<{@link ArchiAbilityAssetsRelationQueryVO }>
*/
IPage<ArchiAbilityAssetsRelationQueryVO> queryAssetRelation(@Param("params") ArchiAssetsRelationQueryDTO params, Page<ArchiAssetsRelationQueryDTO> page);
/**
* 查询资产关系
*
* @param params 参数
* @return {@link IPage }<{@link ArchiAbilityAssetsRelationQueryVO }>
*/
ArchiAbilityAssetsRelationQueryVO queryAssetRelation(@Param("params") ArchiAssetsRelationQueryDTO params);
/**
* 资产关系数量
*
* @param assetRelaId 资产关系ID
* @return {@link Long }
*/
Long queryAssetRelationCountByTypeId(long assetRelaId);
}
package org.arch.overall.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.apache.ibatis.annotations.Param;
import org.arch.common.archoverall.dto.ArchiAssetInfoDTO;
import org.arch.common.archoverall.dto.NeedInfoDTO;
import org.arch.common.archoverall.dto.OnlineReviewCountQueryDTO;
import org.arch.common.archoverall.dto.OnlineReviewWriteDTO;
import org.arch.common.archoverall.vo.NeedReviewVo;
import org.arch.common.archoverall.vo.OnlineReviewCountVO;
import org.arch.overall.entity.AssetInfo;
import org.arch.overall.entity.OnlineReviewWrite;
import java.util.List;
public interface ArchiAssertMapper extends BaseMapper<AssetInfo> {
List<AssetInfo> maxVer(ArchiAssetInfoDTO params);
IPage<NeedReviewVo> qyNeedReview(@Param("page") Page<Object> page, @Param("nigr") NeedInfoDTO nigr);
IPage<OnlineReviewWrite> qyOnlineReview(@Param("onl") OnlineReviewWriteDTO params, @Param("page") Page<OnlineReviewWrite> page);
List<OnlineReviewWrite> qyOnlineReview(@Param("onl") OnlineReviewWriteDTO params);
/**
* 概设关联业务管理-概设统计分析-各单位概设统计
*/
IPage<OnlineReviewCountVO> qyneedCount(@Param("orcy") OnlineReviewCountQueryDTO params, @Param("page") Page<OnlineReviewCountVO> page);
List<OnlineReviewCountVO> qyreviewPassCount(@Param("orcy") OnlineReviewCountQueryDTO params);
IPage<OnlineReviewCountVO> qybatNeedCount(@Param("orqy") OnlineReviewCountQueryDTO params, @Param("page") Page<OnlineReviewCountVO> page);
List<OnlineReviewCountVO> qybatReviewPassCount(@Param("orqy") OnlineReviewCountQueryDTO params);
}
\ No newline at end of file
package org.arch.overall.mapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.github.yulichang.base.MPJBaseMapper;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import org.arch.common.archoverall.dto.ArchiAssetInfoDTO;
import org.arch.overall.entity.AssetInfo;
import org.arch.common.archoverall.dto.WordContentDTO;
import java.util.List;
import java.util.Map;
/**
* <p>
* 业务架构 Mapper 接口
* </p>
*
* @author author
* @since 2024-01-09
*/
@Mapper
public interface ArchiAssetInfoMapper extends MPJBaseMapper<AssetInfo> {
@Select("select (SELECT CONCAT((SELECT REPLACE((select date_format(now(), '%Y-%m-%d')),CHAR(45),'')),'-V',(SELECT (select date_format(now(), '%Y')) - 2023 +1),'.',(select date_format(now(), '%m')),'.','1'))\r\n" +
" as version")
String selectVer();
/**
* 分页列表查询
*
* @param params 参数
* @param page 页
* @return {@link IPage}<{@link AssetInfo}>
*/
IPage<AssetInfo> query(@Param("params") ArchiAssetInfoDTO params, Page<AssetInfo> page);
/**
* 列表查询
*
* @param params 参数
* @return {@link List }<{@link AssetInfo }>
*/
List<AssetInfo> query(@Param("params") ArchiAssetInfoDTO params);
/**
* 架构资产信息详情
*
* @param assetId 资产 ID
* @return {@link AssetInfo}
*/
AssetInfo info(Long assetId);
/**
* 自动生成编号
* @param superiorAssetCode 上级编码
* @param rchiType 架构类型
* @param num 级别层次
* @return
*/
Integer getArchiAssetMaxNum(@Param("rchiType")String rchiType,
@Param("superiorAssetCode")String superiorAssetCode,
@Param("num")int num,
@Param("archiStage") String archiStage);
/**
* @param params 查询
* @return
*/
Map<String,String> searhByKeyword(@Param("params") WordContentDTO params);
}
package org.arch.overall.mapper;
import com.github.yulichang.base.MPJBaseMapper;
import org.apache.ibatis.annotations.Mapper;
import org.arch.overall.entity.ArchiAssetSystem;
/**
* <p>
* 架构版本 Mapper 接口
* </p>
*
* @author author
* @since 2024-01-16
*/
@Mapper
public interface ArchiAssetSystemMapper extends MPJBaseMapper<ArchiAssetSystem> {
}
package org.arch.overall.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param;
import org.arch.overall.entity.ArchiEleProperty;
public interface ArchiElePropertyMapper extends BaseMapper<ArchiEleProperty> {
import java.util.List;
public interface ArchiElePropertyMapper extends BaseMapper<ArchiEleProperty> {
List<ArchiEleProperty> gtArchiElePropertyList(@Param("yp") ArchiEleProperty ynMolProyls);
}
package org.arch.overall.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.arch.common.archoverall.vo.ArchiEleRelaVO;
import org.arch.overall.entity.ArchiEleRelaConstrain;
import java.util.List;
public interface ArchiEleRelaConstrainMapper extends BaseMapper<ArchiEleRelaConstrain> {
/**
* 批量添加
*/
void batchInsert(List<ArchiEleRelaConstrain> list);
/**
* 根据元素关系,删除元素关系
*
* @param eleRelaId 元素关系 ID
*/
void delByRelaId(Long eleRelaId);
/**
* 根据元素关系编码查询约束条件
*
* @param eleRelaId 元素关系ID
* @return {@link List}<{@link ArchiEleRelaConstrain}>
*/
List<ArchiEleRelaConstrain> getArchiEleRelaConstraint(Long eleRelaId);
/**
* 根据元素关系ID查询元素关系
* 元素带属性
*
* @param constrainId 约束 ID
* @return {@link List}<{@link ArchiEleRelaVO}>
*/
List<ArchiEleRelaVO> findEleRelaConstrainList(Long constrainId);
}
\ No newline at end of file
package org.arch.overall.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.apache.ibatis.annotations.Param;
import org.arch.common.archoverall.dto.ArchiEleRelaDTO;
import org.arch.common.archoverall.vo.ArchiEleRelaNameVO;
import org.arch.overall.entity.ArchiEleRela;
import java.util.List;
public interface ArchiEleRelaMapper extends BaseMapper<ArchiEleRela> {
/**
* 分页
*
* @param dto 参数
* @param page 页
* @return {@link IPage }<{@link ArchiEleRela }>
*/
IPage<ArchiEleRela> gtArchiEleRela(@Param("dto") ArchiEleRelaDTO dto, Page<Object> page);
/**
* 列表
*
* @param dto DTO
* @return {@link List }<{@link ArchiEleRela }>
*/
List<ArchiEleRela> gtEleRelList(@Param("dto") ArchiEleRelaDTO dto);
/**
* 查询资产关系
*
*/
List<ArchiEleRelaNameVO> findEleRelaList();
/**
* 获取版本
*
* @param eleRelaId 元素关系 ID
* @return {@link String }
*/
String getVersion(@Param("eleRelaId") Long eleRelaId);
}
......@@ -4,7 +4,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.github.yulichang.base.MPJBaseMapper;
import org.apache.ibatis.annotations.Param;
import org.arch.modules.archoverall.dto.ArchiElementDTO;
import org.arch.common.archoverall.dto.ArchiElementDTO;
import org.arch.overall.entity.ArchiElement;
import java.util.List;
......
package org.arch.overall.mapper;
import com.github.yulichang.base.MPJBaseMapper;
import org.apache.ibatis.annotations.Mapper;
import org.arch.overall.entity.ArchiElementNestRelation;
/**
* <p>
* 需求管理信息 Mapper 接口
* </p>
*
* @author java
* @since 2024-03-05
*/
@Mapper
public interface ArchiElementNestRelationMapper extends MPJBaseMapper<ArchiElementNestRelation> {
}
package org.arch.overall.mapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.github.yulichang.base.MPJBaseMapper;
import org.apache.ibatis.annotations.Param;
import org.arch.common.archoverall.dto.ArchiMetaModelDTO;
import org.arch.overall.entity.ArchiMetaModel;
import java.util.List;
public interface ArchiMetaModelMapper extends MPJBaseMapper<ArchiMetaModel> {
List<ArchiMetaModel> selectVer();
/**
* 元模型列表
*
* @param dto DTO
* @param page 页
* @return {@link IPage }<{@link ArchiMetaModel }>
*/
IPage<ArchiMetaModel> getYnMol(@Param("dto") ArchiMetaModelDTO dto, Page<Object> page);
/**
* 更新 MX 图形模型
*
* @param metaModelId 元模型 ID
* @param graphId 图形 ID
* @return {@link Boolean}
*/
Boolean updateMxGraphModel(@Param("metaModelId") Long metaModelId, @Param("graphId") Long graphId);
/**
* 根据元模型id获取mxCell
*
* @param metaModelId 元模型id
* @return {@link String}
*/
String getMxCellByMetaModelId(Long metaModelId);
/**
* 查询架构原模型
*
* @param id 同上
* @return {@link ArchiMetaModel}
*/
ArchiMetaModel findMetaModelById(Long id);
}
package org.arch.overall.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param;
import org.arch.common.archoverall.dto.ArchiAssetDTO;
import org.arch.common.archoverall.dto.ArchiViewDTO;
import org.arch.common.archoverall.vo.ArchiAssetVO;
import org.arch.common.archoverall.vo.ArchiVersionVO;
import org.arch.common.archoverall.vo.ArchiViewVO;
import java.util.List;
public interface ArchiTotalAssertMapper extends BaseMapper {
/**
* 总体架构资产自动图形化
*
* @param model 参数
* @return {@link List}<{@link ArchiAssetVO}>
*/
List<ArchiAssetVO> automaticGraphing(ArchiAssetDTO model);
/**
* 总体架构资产智能搜索
*
* @param model 参数
* @return {@link List}<{@link ArchiAssetVO}>
*/
List<ArchiAssetVO> treeList(ArchiAssetDTO model);
/**
* 总体架构可视化展示
*
* @param model 参数
* @return {@link List}<{@link ArchiAssetVO}>
*/
List<ArchiAssetVO> treeListView(ArchiAssetDTO model);
/**
* 查询视图
*
* @param params 参数
* @return {@link List}<{@link ArchiViewVO}>
*/
List<ArchiViewVO> queryView(ArchiViewDTO params);
/**
* 查询架构版本
*
* @param params 参数
* @return {@link List}<{@link ArchiVersionVO}>
*/
List<ArchiVersionVO> queryArchiVersion(ArchiVersionVO params);
/**
* 根据元素查询对应的资产
*
* @param elementId 元素 ID
* @return {@link List }<{@link ArchiAssetVO }>
*/
List<ArchiAssetVO> findAssertByElementId(@Param("elementId") Long elementId);
}
\ No newline at end of file
package org.arch.overall.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import org.arch.common.archoverall.dto.ArchiAssetInfoDTO;
import org.arch.common.archoverall.dto.ArchiAssetVisalDTO;
import org.arch.common.archoverall.dto.DelDTO;
import org.arch.common.archoverall.vo.ArchVisualVO;
import org.arch.overall.dto.ArchiDto;
import org.arch.overall.entity.ArchiElementNestRelation;
import org.arch.overall.entity.AssetInfo;
import java.util.List;
import java.util.Map;
/**
* <p>
* 资产架构 服务类
* </p>
*
* @author author
* @since 2024-01-09
*/
public interface ArchiAssetInfoService extends IService<AssetInfo> {
/**
* 资产分页
*
* @param params 参数
* @return {@link IPage }<{@link AssetInfo }>
*/
IPage<AssetInfo> iPage(ArchiAssetInfoDTO params);
/**
* 资产列表
*
* @param params 参数
* @return {@link List }<{@link AssetInfo }>
*/
List<AssetInfo> assetList(ArchiAssetInfoDTO params);
Boolean inster(ArchiAssetInfoDTO params);
/**
* 架构资产信息详情
*
* @param assetId 资产 ID
* @return {@link AssetInfo}
*/
AssetInfo info(Long assetId);
Boolean update(ArchiAssetInfoDTO params);
/**
* 批量删除
*
* @param requestMap 参数
* @return {@link Boolean }
*/
Boolean delBatch(DelDTO requestMap);
String selectVer();
List<AssetInfo> qryTree(ArchiDto frameworkDto);
List<ArchiElementNestRelation> qyLastEle(ArchiAssetInfoDTO params);
Map<ArchiAssetInfoDTO, List<ArchiAssetInfoDTO>> getArchVisual(ArchVisualVO archVisualVO);
List<Map<String, Object>> getAssetVisalFirst(ArchiAssetVisalDTO archiAssetVisalDTO);
}
package org.arch.overall.service;
import cn.hutool.core.lang.tree.Tree;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.arch.common.archoverall.dto.*;
import org.arch.common.archoverall.vo.ArchiAbilityAssetsRelationQueryVO;
import org.arch.common.archoverall.vo.ArchiAssetVO;
import org.arch.common.archoverall.vo.ArchiVersionVO;
import org.arch.common.archoverall.vo.MxCellVO;
import org.arch.overall.entity.AssetInfo;
import java.util.List;
/**
* 资产服务
*
* @author admin
* @date 2024/01/24
*/
public interface ArchiAssetService {
/**
* 总体架构资产自动图形化
*
* @param model 参数
* @return {@link List}<{@link ArchiAssetVO}>
*/
List<Tree<String>> automaticGraphing(ArchiAssetDTO model);
/**
* 总体架构资产智能搜索
*
* @param model 参数
* @return {@link List}<{@link ArchiAssetVO}>
*/
List<ArchiAssetVO> treeList(ArchiAssetDTO model);
/**
* 根据元素查询对应的资产
*
* @param elementId 元素 ID
* @return {@link List }<{@link ArchiAssetVO }>
*/
List<ArchiAssetVO> findAssertByElementId(Long elementId);
/**
* 总体架构可视化展示
*
* @param model 参数
* @return {@link List}<{@link ArchiAssetVO}>
*/
List<ArchiAssetVO> treeListView(ArchiAssetDTO model);
/**
* 根据元模型id获取mxCell
*
* @param metaModelId 元模型id
*/
List<MxCellVO> getMxCellByMetaModelId(Long metaModelId);
/**
* 架构资产版本
*
* @param params 参数
* @return {@link List}<{@link ArchiVersionVO}>
*/
List<ArchiVersionVO> queryArchiVersion(ArchiVersionVO params);
//------------------------------------资产关系------------------------------------
/**
* 添加资产关系
*
* @param params 参数
* @return {@link Boolean }
*/
Boolean addAssetRelation(ArchiAssetsRelationDTO params);
/**
* 修改资产
*
* @param params 参数
* @return {@link Boolean }
*/
Boolean updateAssetRelation(ArchiAssetsRelationDTO params);
/**
* 删除资产关系
*
* @param dto DTO
* @return {@link Boolean }
*/
Boolean del(BatchRemoveDTO dto);
/**
* 发布/停用
*
* @param dto DTO
* @return {@link Boolean }
*/
Boolean post(ArchiRelaSatePostDTO dto);
/**
* 查询资产关系
*
* @param params 参数
* @return {@link IPage }<{@link ArchiAbilityAssetsRelationQueryVO }>
*/
IPage<ArchiAbilityAssetsRelationQueryVO> queryAssetRelation(ArchiAssetsRelationQueryDTO params);
/**
* 查询资产关系详情
*
* @param params 参数
* @return {@link List}<{@link ArchiAbilityAssetsRelationQueryVO}>
*/
ArchiAbilityAssetsRelationQueryVO queryAssetRelationDetail(ArchiAssetsRelationQueryDTO params);
/**
* 最大版本
*
* @param params 参数
* @return {@link List }<{@link AssetInfo }>
*/
List<AssetInfo> maxVer(ArchiAssetInfoDTO params);
}
package org.arch.overall.service;
import com.baomidou.mybatisplus.extension.service.IService;
import org.arch.overall.entity.ArchiEleProperty;
import java.util.List;
import java.util.Map;
public interface ArchiElePropertyService extends IService<ArchiEleProperty>{
List<ArchiEleProperty> gtArchiElePropertyList(ArchiEleProperty ynMolProyls);
/**
* 批量修改属性
*
* @param requestList 请求列表
* @return {@link Boolean }
*/
Boolean updateEleRelBatch(List<Map<String, Object>> requestList);
}
package org.arch.overall.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import org.arch.common.archoverall.dto.ArchiEleRelaConstrainDTO;
import org.arch.common.archoverall.dto.ArchiEleRelaDTO;
import org.arch.common.archoverall.dto.BatchUpdateRelaDTO;
import org.arch.common.archoverall.vo.ArchiEleRelaNameVO;
import org.arch.common.archoverall.vo.ArchiEleRelaVO;
import org.arch.overall.entity.ArchiEleRela;
import java.util.List;
public interface ArchiEleRelaService extends IService<ArchiEleRela> {
/**
* 分页查询元素关系
*
* @param dto DTO
* @return {@link IPage }<{@link ArchiEleRela }>
*/
IPage<ArchiEleRela> gtArchiEleRela(ArchiEleRelaDTO dto);
/**
* 列表
*
* @param dto DTO
* @return {@link List }<{@link ArchiEleRela }>
*/
List<ArchiEleRela> gtEleRelList(ArchiEleRelaDTO dto);
/**
* 根据元素关系编码查询约束条件
*
* @param eleRelaId 元素关系ID
*/
List<ArchiEleRelaConstrainDTO> getArchiEleRelaConstraint(Long eleRelaId);
/**
* 根据元素关系ID查询元素关系
* 元素带属性
*
* @param constrainId 约束 ID
* @return {@link List}<{@link ArchiEleRelaVO}>
*/
List<ArchiEleRelaVO> findEleRelaConstrainList(Long constrainId);
/**
* 查询资产关系
*
* @return {@link List}<{@link ArchiEleRelaVO}>
*/
List<ArchiEleRelaNameVO> findEleRelaList();
/**
* 批量发布
*
* @param requestMap 参数
* @return {@link Boolean }
*/
Boolean updBatch(BatchUpdateRelaDTO requestMap);
/**
* 删除
*
* @param params 参数
* @return {@link Boolean }
*/
Boolean del(ArchiEleRela params);
/**
* 插入
*
* @param params 参数
* @return {@link Boolean }
*/
Boolean insert(ArchiEleRela params);
/**
* 更新
*
* @param params 参数
* @return {@link Boolean }
*/
Boolean update(ArchiEleRela params);
/**
* 批量新增元素和元素关系
*
* @param archiEleRelas 对象
*/
void addArchiEleRelaConstraint(ArchiEleRela archiEleRelas);
}
......@@ -2,8 +2,8 @@ package org.arch.overall.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import org.arch.modules.archoverall.dto.ArchiElementDTO;
import org.arch.modules.archoverall.dto.BatchUpdateDTO;
import org.arch.common.archoverall.dto.ArchiElementDTO;
import org.arch.common.archoverall.dto.BatchUpdateDTO;
import org.arch.overall.entity.ArchiEleProperty;
import org.arch.overall.entity.ArchiElement;
......
package org.arch.overall.service.impl;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.date.StopWatch;
import cn.hutool.core.lang.Assert;
import cn.hutool.core.lang.tree.Tree;
import cn.hutool.core.lang.tree.TreeNode;
import cn.hutool.core.lang.tree.TreeNodeConfig;
import cn.hutool.core.lang.tree.TreeUtil;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.PageDTO;
import com.mxgraph.io.mxCodec;
import com.mxgraph.model.mxCell;
import com.mxgraph.util.mxXmlUtils;
import lombok.RequiredArgsConstructor;
import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j;
import org.arch.common.archoverall.dto.*;
import org.arch.common.archoverall.vo.ArchiAbilityAssetsRelationQueryVO;
import org.arch.common.archoverall.vo.ArchiAssetVO;
import org.arch.common.archoverall.vo.ArchiVersionVO;
import org.arch.common.archoverall.vo.MxCellVO;
import org.arch.enums.ArchiStateEnum;
import org.arch.overall.entity.ArchiAbilityAssetsRelation;
import org.arch.overall.entity.AssetInfo;
import org.arch.overall.mapper.ArchiAbilityAssetsRelationMapper;
import org.arch.overall.mapper.ArchiAssertMapper;
import org.arch.overall.mapper.ArchiMetaModelMapper;
import org.arch.overall.mapper.ArchiTotalAssertMapper;
import org.arch.overall.service.ArchiAssetService;
import org.arch.overall.utils.MxFileUtil;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.w3c.dom.Document;
import org.w3c.dom.NodeList;
import java.util.*;
import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;
import java.util.stream.IntStream;
import static cn.hutool.core.collection.CollUtil.isEmpty;
@Service
@RequiredArgsConstructor
@Slf4j
public class ArchiAssertServiceImpl implements ArchiAssetService {
private final ArchiTotalAssertMapper archiTotalAssertMapper;
private final ArchiAssertMapper archiMapper;
private final ArchiMetaModelMapper archiMetaModelMapper;
private final ArchiAbilityAssetsRelationMapper archiAbilityAssetsRelationMapper;
/**
* 获取树节点
*
* @param model 资产级别
* @return {@link TreeNode}<{@link Long}>
*/
private static TreeNode<String> getTreeNode(ArchiAssetVO model) {
TreeNode<String> treeNode = new TreeNode<>();
treeNode.setId(String.valueOf(model.getAssetId()));
treeNode.setParentId(String.valueOf(model.getParentAssetId()));
treeNode.setName(model.getAssetName());
treeNode.setExtra(BeanUtil.beanToMap(model));
return treeNode;
}
/**
* 自动根据模型生成架构图。
*
* @param model 包含架构资产信息的模型对象,用于生成架构图。
* @return 返回一个包含树结构的列表,每个树结构代表一个架构资产及其子资产的关系。
*/
@Override
public List<Tree<String>> automaticGraphing(ArchiAssetDTO model) {
// 初始化计时器,用于记录生成架构图的耗时
StopWatch stopWatch = new StopWatch("总体架构资产自动成图");
try {
stopWatch.start("自动成图");
// 根据模型查询相关的架构资产信息
List<ArchiAssetVO> archiAssets = archiTotalAssertMapper.automaticGraphing(model);
// 如果查询结果为空,则记录日志并返回空列表
if (isEmpty(archiAssets)) {
log.info("No assets found for the given model.");
return new ArrayList<>();
}
// 配置树节点的生成规则
TreeNodeConfig treeNodeConfig = new TreeNodeConfig();
// 设置树的深度,默认为20
treeNodeConfig.setDeep(Optional.ofNullable(model.getDeep()).orElse(20));
// 根据查询到的架构资产信息,生成树结构
List<Tree<String>> build = TreeUtil.build(archiAssets, "0", treeNodeConfig, (node, tree) -> {
// 设置树的id,即架构资产的id
tree.setId(String.valueOf(node.getAssetId()));
// 设置树的名字,即架构资产的名字
tree.setName(node.getAssetName());
// 设置树的父id,即架构资产的父id
tree.setParentId(String.valueOf(node.getParentAssetId()));
tree.putExtra("parentAssetName", node.getParentAssetName());
// 设置树的额外信息,即架构资产的名字
tree.putExtra("assetName", node.getAssetName());
// 设置树的额外信息,即架构元素的名称
tree.putExtra("elementId", node.getElementId());
tree.putExtra("elementName", node.getElementName());
});
// 记录生成架构图的耗时,并打印到日志中
stopWatch.stop();
String s = stopWatch.prettyPrint(TimeUnit.MILLISECONDS);
log.info("总体架构资产自动成图,耗费时间详情:\n{}", s);
return build;
} catch (Exception e) {
// 处理生成架构图过程中可能发生的异常,并抛出运行时异常
log.error("Failed to generate tree from model.", e);
throw new RuntimeException("Failed to generate tree from model due to internal error.", e);
}
}
/**
* 总体架构资产智能搜索
*
* @param model 参数
* @return {@link List}<{@link ArchiAssetVO}>
*/
@Override
public List<ArchiAssetVO> treeList(ArchiAssetDTO model) {
StopWatch stopWatch = new StopWatch("总体架构资产智能搜索");
stopWatch.start("查询数据");
List<ArchiAssetVO> list = new ArrayList<>();
List<ArchiAssetVO> assetType = archiTotalAssertMapper.treeList(model);
stopWatch.stop();
assetType.parallelStream().forEachOrdered(it -> {
stopWatch.start(it.getAssetName());
ArchiAssetVO vo = new ArchiAssetVO();
vo.setAssetId(it.getAssetId());
vo.setAssetName(it.getAssetName());
List<ArchiAssetVO> children = it.getSubList();
if (CollUtil.isNotEmpty(children)) {
List<TreeNode<String>> collect = children.parallelStream().map(ArchiAssertServiceImpl::getTreeNode).collect(Collectors.toList());
List<Tree<String>> childrenTrees = TreeUtil.build(collect, "0");
vo.setChildren(childrenTrees);
}
stopWatch.stop();
list.add(vo);
});
String s = stopWatch.prettyPrint(TimeUnit.MILLISECONDS);
log.info("总体架构资产智能搜索,耗费时间详情:\n{}", s);
return list;
}
@Override
public List<ArchiAssetVO> findAssertByElementId(Long elementId) {
return archiTotalAssertMapper.findAssertByElementId(elementId);
}
@SneakyThrows
@Override
public List<ArchiAssetVO> treeListView(ArchiAssetDTO model) {
StopWatch stopWatch = new StopWatch("总体架构资产可视化展示");
stopWatch.start("查询数据");
model.setArchiAssetState(2);
List<ArchiAssetVO> list = new ArrayList<>();
List<ArchiAssetVO> assetTypes = archiTotalAssertMapper.treeListView(model);
Map<Long, List<ArchiAssetVO>> listMap = assetTypes.stream().collect(Collectors.groupingBy(ArchiAssetVO::getArchiEleId));
stopWatch.stop();
stopWatch.start("递归查询");
listMap.forEach((k, v) -> {
ArchiAssetVO vo = new ArchiAssetVO();
vo.setAssetId(k);
vo.setAssetName(v.get(0).getEleName());
List<TreeNode<String>> collect = assetTypes.parallelStream().map(ArchiAssertServiceImpl::getTreeNode).collect(Collectors.toList());
List<Tree<String>> build = TreeUtil.build(collect, "0");
vo.setChildren(build);
list.add(vo);
});
stopWatch.stop();
String s = stopWatch.prettyPrint(TimeUnit.MILLISECONDS);
log.info("总体架构资产可视化展示,耗费时间详情:\n{}", s);
return list;
}
@Override
public List<AssetInfo> maxVer(ArchiAssetInfoDTO params) {
List<AssetInfo> maxVer = archiMapper.maxVer(params);
return maxVer;
}
/**
* 根据元模型id获取mxCell
*
* @param metaModelId 元模型id
*/
@Override
public List<MxCellVO> getMxCellByMetaModelId(Long metaModelId) {
List<MxCellVO> list = new ArrayList<>();
String content = archiMetaModelMapper.getMxCellByMetaModelId(metaModelId);
Assert.isFalse(StrUtil.isBlank(content), "元模型不存在");
Document doc = mxXmlUtils.parseXml(content);
Assert.notNull(doc, "文件内容格式错误");
mxCodec codec = new mxCodec(doc);
NodeList childNodes = doc.getDocumentElement().getElementsByTagName("mxCell");
int length = childNodes.getLength();
List<mxCell> arr = IntStream.range(0, length).mapToObj(i -> (mxCell) codec.decodeCell(childNodes.item(i), Boolean.TRUE)).collect(Collectors.toList());
arr.forEach(it -> {
MxCellVO mxCellVO = new MxCellVO();
if (Objects.nonNull(it)) {
if (it.isEdge() && Objects.nonNull(it.getSource()) && Objects.nonNull(it.getTarget())) {
mxCellVO.setSort(0);
mxCellVO.setSourceId(it.getSource().getId());
mxCellVO.setSource(MxFileUtil.extractValue(it.getSource()));
mxCellVO.setLinkNameDesc(MxFileUtil.extractValue(it));
mxCellVO.setLinkName(MxFileUtil.extractValue(it));
mxCellVO.setTarget(MxFileUtil.extractValue(it.getTarget()));
mxCellVO.setTargetId(it.getTarget().getId());
list.add(mxCellVO);
}
if (it.isVertex() && Objects.nonNull(it.getParent())) {
mxCellVO.setSort(1);
mxCellVO.setSourceId(it.getId());
mxCellVO.setSource(MxFileUtil.extractValue(it));
mxCellVO.setLinkNameDesc("父子");
mxCellVO.setLinkName("父子");
mxCellVO.setTarget(MxFileUtil.extractValue(it.getParent()));
mxCellVO.setTargetId(it.getParent().getId());
list.add(mxCellVO);
}
}
});
return CollUtil.sort(list, Comparator.comparing(MxCellVO::getSort));
}
@Override
public List<ArchiVersionVO> queryArchiVersion(ArchiVersionVO params) {
return archiTotalAssertMapper.queryArchiVersion(params);
}
@Override
@Transactional(rollbackFor = Exception.class)
public Boolean addAssetRelation(ArchiAssetsRelationDTO params) {
ArchiAbilityAssetsRelation relation = new ArchiAbilityAssetsRelation();
BeanUtil.copyProperties(params, relation, "relaId");
AssetInfo assetInfo = archiMapper.selectById(params.getAssetId());
Assert.notNull(assetInfo, "资产不存在");
AssetInfo relaAssetInfo = archiMapper.selectById(params.getRelaAssetId());
Assert.notNull(relaAssetInfo, "关联资产不存在");
// Assert.isFalse(params.getAssetId().equals(params.getRelaAssetId()), "资产不能关联自己");
Assert.isFalse(archiAbilityAssetsRelationMapper.selectCount(Wrappers.<ArchiAbilityAssetsRelation>lambdaQuery()
.eq(ArchiAbilityAssetsRelation::getAssetId, params.getAssetId())
.eq(ArchiAbilityAssetsRelation::getRelaAssetId, params.getRelaAssetId())
.eq(ArchiAbilityAssetsRelation::getAssetRelaId, params.getAssetRelaId())) > 0,
"资产关系已存在");
relation.setAssetCode(assetInfo.getAssetCode());
relation.setAssetName(assetInfo.getAssetName());
relation.setRelaAssetCode(relaAssetInfo.getAssetCode());
relation.setRelaAssetName(relaAssetInfo.getAssetName());
relation.setCreateTime(new Date());
relation.setUpdateTime(new Date());
relation.setDelFlag(0);
relation.setState(2);
return archiAbilityAssetsRelationMapper.insert(relation) > 0;
}
@Override
@Transactional(rollbackFor = Exception.class)
public Boolean updateAssetRelation(ArchiAssetsRelationDTO params) {
ArchiAbilityAssetsRelation relation = new ArchiAbilityAssetsRelation();
Long relaId = params.getRelaId();
Assert.notNull(relaId, "资产关系ID不能为空");
AssetInfo assetInfo = archiMapper.selectById(params.getAssetId());
Assert.notNull(assetInfo, "资产不存在");
AssetInfo relaAssetInfo = archiMapper.selectById(params.getRelaAssetId());
Assert.notNull(relaAssetInfo, "关联资产不存在");
// Assert.isFalse(assetInfo.getAssetId().equals(relaAssetInfo.getAssetId()), "资产不能关联自己");
Assert.isFalse(archiAbilityAssetsRelationMapper.selectCount(Wrappers.<ArchiAbilityAssetsRelation>lambdaQuery()
.eq(ArchiAbilityAssetsRelation::getAssetId, params.getAssetId())
.eq(ArchiAbilityAssetsRelation::getRelaAssetId, params.getRelaAssetId())
.eq(ArchiAbilityAssetsRelation::getAssetRelaId, params.getAssetRelaId())
.notIn(ArchiAbilityAssetsRelation::getRelaId, params.getRelaId())) > 0,
"资产关系已存在");
relation.setRelaId(params.getRelaId());
relation.setAssetId(assetInfo.getAssetId());
relation.setAssetCode(assetInfo.getAssetCode());
relation.setAssetName(assetInfo.getAssetName());
relation.setRelaAssetId(relaAssetInfo.getAssetId());
relation.setRelaAssetCode(relaAssetInfo.getAssetCode());
relation.setRelaAssetName(relaAssetInfo.getAssetName());
relation.setAssetRelaId(params.getAssetRelaId());
relation.setUpdateTime(new Date());
relation.setIconId(params.getIconId());
return archiAbilityAssetsRelationMapper.updateById(relation) > 0;
}
@Override
@Transactional(rollbackFor = Exception.class)
public Boolean del(BatchRemoveDTO dto) {
return archiAbilityAssetsRelationMapper.removeBatchIds(dto.getIds());
}
@Override
@Transactional(rollbackFor = Exception.class)
public Boolean post(ArchiRelaSatePostDTO dto) {
Long id = dto.getRelaId();
Byte state = dto.getState();
// 发布
if (ArchiStateEnum.PUBLISHED.getCode() == state) {
LambdaUpdateWrapper<ArchiAbilityAssetsRelation> wrapper = Wrappers.lambdaUpdate();
wrapper.set(ArchiAbilityAssetsRelation::getState, dto.getState());
wrapper.eq(ArchiAbilityAssetsRelation::getRelaId, id);
return archiAbilityAssetsRelationMapper.update(wrapper) > 0;
}
// 停用
if (ArchiStateEnum.DISABLED.getCode() == state) {
LambdaUpdateWrapper<ArchiAbilityAssetsRelation> wrapper = Wrappers.lambdaUpdate();
wrapper.set(ArchiAbilityAssetsRelation::getState, state);
wrapper.eq(ArchiAbilityAssetsRelation::getRelaId, id);
return archiAbilityAssetsRelationMapper.update(wrapper) > 0;
}
return Boolean.FALSE;
}
@Override
public IPage<ArchiAbilityAssetsRelationQueryVO> queryAssetRelation(ArchiAssetsRelationQueryDTO params) {
return archiAbilityAssetsRelationMapper.queryAssetRelation(params, PageDTO.of(params.getCurrent(), params.getPageSize()));
}
@Override
public ArchiAbilityAssetsRelationQueryVO queryAssetRelationDetail(ArchiAssetsRelationQueryDTO params) {
Assert.notNull(params.getRelaId(), "元素关系ID不能为空");
return archiAbilityAssetsRelationMapper.queryAssetRelation(params);
}
}
package org.arch.overall.service.impl;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.lang.Assert;
import cn.hutool.core.util.StrUtil;
import com.alibaba.cloud.commons.lang.StringUtils;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.serializer.SerializerFeature;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.apache.commons.compress.utils.Lists;
import org.arch.common.archoverall.dto.ArchiAssetInfoDTO;
import org.arch.common.archoverall.dto.ArchiAssetVisalDTO;
import org.arch.common.archoverall.vo.ArchVisualVO;
import org.arch.common.archoverall.dto.DelDTO;
import org.arch.overall.dto.ArchiDto;
import org.arch.overall.entity.ArchiAssetSystem;
import org.arch.overall.entity.ArchiElementNestRelation;
import org.arch.overall.entity.AssetInfo;
import org.arch.overall.mapper.ArchiAssetInfoMapper;
import org.arch.overall.mapper.ArchiAssetSystemMapper;
import org.arch.overall.mapper.ArchiElementNestRelationMapper;
import org.arch.overall.service.ArchiAssetInfoService;
import org.arch.overall.service.ArchiAssetService;
import org.arch.utils.VersionUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import com.baomidou.mybatisplus.extension.plugins.pagination.PageDTO;
import java.util.*;
import java.util.stream.Collectors;
/**
* <p>
* 总体架构 服务实现类
* </p>
*
* @author author
* @since 2024-01-09
*/
@Service
public class ArchiAssetInfoServiceImpl extends ServiceImpl<ArchiAssetInfoMapper, AssetInfo> implements ArchiAssetInfoService {
@Autowired
private ArchiAssetSystemMapper archiAssetSystemMapper;
@Autowired
private ArchiAssetInfoService archiAssetInfoService;
@Autowired
private ArchiAssetService archiAssetService;
@Autowired
private ArchiAssetInfoMapper archiAssetInfoMapper;
@Autowired
private ArchiElementNestRelationMapper archiElementNestRelationMapper;
@Override
public IPage<AssetInfo> iPage(ArchiAssetInfoDTO params) {
return baseMapper.query(params, PageDTO.of(params.getCurrent(), params.getPageSize()));
}
@Override
public List<AssetInfo> assetList(ArchiAssetInfoDTO params) {
return archiAssetInfoMapper.query(params);
}
@Override
@Transactional(rollbackFor = Exception.class)
public Boolean inster(ArchiAssetInfoDTO params) {
String assetNumber = params.getAssetNumber();
Assert.notEmpty(assetNumber, "资产编号不能为空");
Long graphId = params.getGraphId();
Assert.notNull(graphId, "图形ID不能为空");
Long archiBelongId = params.getArchiBelongId();
Assert.notNull(archiBelongId, "架构所属ID不能为空");
Long l = archiAssetInfoMapper.selectCount(Wrappers.<AssetInfo>lambdaQuery()
.eq(AssetInfo::getAssetNumber, assetNumber)
.eq(AssetInfo::getArchiBelongId, archiBelongId)
.eq(Objects.nonNull(params.getArchiStage()), AssetInfo::getArchiStage, params.getArchiStage())
.eq(Objects.nonNull(params.getArchiAssetState()), AssetInfo::getArchiAssetState, params.getArchiAssetState()));
Assert.isFalse(l > 0, "资产编号已存在");
// 构建查询条件
LambdaQueryWrapper<ArchiAssetSystem> wrapper = new LambdaQueryWrapper<ArchiAssetSystem>()
.select(ArchiAssetSystem::getVersionId)
.eq(ArchiAssetSystem::getArchiStatus, 1);
// 查询最新版本
ArchiAssetSystem version = archiAssetSystemMapper.selectOne(wrapper);
Assert.notNull(version, "最新版本不存在");
params.setVersionId(version.getVersionId());
AssetInfo asset = new AssetInfo();
BeanUtil.copyProperties(params, asset);
Date time = Calendar.getInstance().getTime();
asset.setCreateTime(time);
asset.setLastUpdateTime(time);
asset.setDelFlag(0);
//20240425取消资产名称重复校验
// Long count = archiAssetInfoMapper.selectCount(
// Wrappers.lambdaQuery(AssetInfo.class)
// .eq(AssetInfo::getAssetName, params.getAssetName())
// .eq(Objects.nonNull(params.getCreateMan()), AssetInfo::getCreateMan, params.getCreateMan())
// .eq(Objects.nonNull(params.getArchiAssetTypeId()), AssetInfo::getArchiAssetTypeId, params.getArchiAssetTypeId())
// .eq(Objects.nonNull(params.getArchiEleId()), AssetInfo::getArchiEleId, params.getArchiEleId())
// .eq(Objects.nonNull(params.getArchiAssetType()), AssetInfo::getArchiAssetType, params.getArchiAssetType())
// .eq(Objects.nonNull(params.getArchiStage()), AssetInfo::getArchiStage, params.getArchiStage())
// .eq(Objects.nonNull(params.getArchiAssetState()), AssetInfo::getArchiAssetState, params.getArchiAssetState())
// .eq(Objects.nonNull(params.getState()), AssetInfo::getState, params.getState())
// .eq(Objects.nonNull(params.getArchiBelongId()), AssetInfo::getArchiBelongId, params.getArchiBelongId())
// .eq(Objects.nonNull(params.getIsExtend()), AssetInfo::getIsExtend, params.getIsExtend())
// .eq(AssetInfo::getState, 1)
// .eq(AssetInfo::getDelFlag, 0));
// Assert.isFalse(count > 0, "架构组件名称已存在!");
// 将JSON对象转换为字符串
List<JSONObject> fieldsValue = params.getFieldsValue();
String fieldsValueStr = JSON.toJSONString(fieldsValue, SerializerFeature.WriteMapNullValue, SerializerFeature.WriteNullStringAsEmpty);
asset.setFieldsValue(fieldsValueStr);
List<JSONObject> targetAsset = params.getTargetAsset();
String targetAssetStr = JSON.toJSONString(targetAsset, SerializerFeature.WriteMapNullValue, SerializerFeature.WriteNullStringAsEmpty);
asset.setTargetAsset(targetAssetStr);
List<String> lastEleList = params.getParentElement();
if (lastEleList != null && !lastEleList.isEmpty()) {
// 将List<String>中的元素取出来,拼接成一个字符串
StringBuilder sb = new StringBuilder();
for (String element : lastEleList) {
sb.append(element).append(", ");
}
// 去除末尾多余的逗号和空格
String parentElementString = sb.toString().replaceAll(", $", "");
// 将拼接后的字符串赋值给实体类中的String类型属性
asset.setParentElement(parentElementString);
} else {
asset.setParentElement(null);
}
List<String> lastAssetList = params.getParentAsset();
if (lastAssetList != null && !lastAssetList.isEmpty()) {
// 将List<String>中的元素取出来,拼接成一个字符串
StringBuilder sb = new StringBuilder();
for (String parentAsset : lastAssetList) {
sb.append(parentAsset).append(", ");
}
// 去除末尾多余的逗号和空格
String parentAssetString = sb.toString().replaceAll(", $", "");
// 将拼接后的字符串赋值给实体类中的String类型属性
asset.setParentAsset(parentAssetString);
} else {
asset.setParentAsset(null);
}
if(params.getState() != null && params.getState() == 1 && StringUtils.isBlank(params.getVersion())) {
params.setVersion(selectVer());
}
return archiAssetInfoMapper.insert(asset) > 0;
}
@Override
public AssetInfo info(Long assetId) {
return baseMapper.info(assetId);
}
@Override
@Transactional(rollbackFor = Exception.class)
public Boolean update(ArchiAssetInfoDTO params) {
AssetInfo one = archiAssetInfoMapper.selectById(params.getAssetId());
Assert.notNull(one, "资产不存在");
if(params.getState() == 1 && StringUtils.isBlank(params.getVersion())) {
params.setVersion(selectVer());
}else if(params.getState() == 1 && StringUtils.isNotBlank(params.getVersion())) {
List<AssetInfo> assetMaxVer = archiAssetService.maxVer(params);
String lastMaxVer = assetMaxVer.get(0).getVersion();
String str = params.getVersion();
String ver = VersionUtil.getNextVersion(lastMaxVer);
params.setVersion(ver);
archiAssetInfoService.inster(params);
params.setState(0);
params.setVersion(str);
}
AssetInfo asset = new AssetInfo();
BeanUtil.copyProperties(params, asset);
Date time = Calendar.getInstance().getTime();
asset.setLastUpdateTime(time);
asset.setCreateTime(null);
// 将JSON对象转换为字符串
List<JSONObject> fieldsValue = params.getFieldsValue();
if(!CollectionUtils.isEmpty(fieldsValue)) {
String fieldsValueStr = JSON.toJSONString(fieldsValue, SerializerFeature.WriteMapNullValue, SerializerFeature.WriteNullStringAsEmpty);
asset.setFieldsValue(fieldsValueStr);
}
List<JSONObject> targetAsset = params.getTargetAsset();
if(!CollectionUtils.isEmpty(targetAsset)) {
String targetAssetStr = JSON.toJSONString(targetAsset, SerializerFeature.WriteMapNullValue, SerializerFeature.WriteNullStringAsEmpty);
asset.setTargetAsset(targetAssetStr);
}
return archiAssetInfoMapper.updateById(asset) > 0;
}
@Override
@Transactional(rollbackFor = Exception.class)
public Boolean delBatch(DelDTO requestMap) {
List<Long> assetIds = requestMap.getAssetId();
Assert.isFalse(assetIds.isEmpty(), "至少选择一条资产");
assetIds.forEach(e -> {
AssetInfo assetInfo = archiAssetInfoMapper.selectById(e);
// 发布状态不可删除
Assert.isFalse(assetInfo.getState() == 1, "发布状态不可删除");
});
return archiAssetInfoMapper.deleteBatchIds(assetIds) > 0;
}
@Override
public String selectVer() {
return archiAssetInfoMapper.selectVer();
}
@Override
public List<AssetInfo> qryTree(ArchiDto frameworkDto) {
// 查出对应架构所有分类(应用/技术/业务/数据/安全)
QueryWrapper<AssetInfo> assetInfoQueryWrapper = Wrappers.query();
assetInfoQueryWrapper.eq("archi_type",frameworkDto.getArchiType()); // 架构类型,业务架构表默认采用ARCHI_BUSINESS等
assetInfoQueryWrapper.eq("archi_stage",frameworkDto.getArchiStage()); // 1:总体架构;2:系统架构 3:概设架构 4:其他架构
assetInfoQueryWrapper.eq("is_show","0"); // 是否首页展示 0 展示 1 不展示
assetInfoQueryWrapper.eq("del_flag","0"); // 删除标记(0:未删除;1:删除)
assetInfoQueryWrapper.eq("state","1"); // 状态 0:已停用 1:已发布 2:暂存
assetInfoQueryWrapper.eq(StrUtil.isNotBlank(frameworkDto.getEleName()),"ele_name",frameworkDto.getEleName()); // 元素名称
// assetInfoQueryWrapper.eq("version",frameworkDto.getVersionId()); // 查询最新的版本
List<AssetInfo> allAssetInfos = archiAssetInfoMapper.selectList(assetInfoQueryWrapper);
if(CollectionUtils.isEmpty(allAssetInfos)){
return Lists.newArrayList();
}
List<Long> assetIds = allAssetInfos.stream().map(item -> item.getAssetId()).collect(Collectors.toList());
List<AssetInfo> rootNodeAssets = allAssetInfos.stream().filter(item -> Objects.nonNull(item.getParentAssetId()))
.filter(item -> item.getParentAssetId() == 0L).collect(Collectors.toList());
List<AssetInfo> treeList = new ArrayList<>();
if(CollectionUtils.isEmpty(rootNodeAssets)){ // 元素子嵌套类型 或者 二级元素以下,不存在根级节点
// 则不存在根节点
List<Long> roodIds = allAssetInfos.stream().map(AssetInfo::getParentAssetId).filter(Objects::nonNull)
.distinct().filter(item->!assetIds.contains(item)).collect(Collectors.toList());
List<AssetInfo> rootAssetInfos = archiAssetInfoMapper.selectBatchIds(roodIds);
treeList = rootAssetInfos.stream().peek(item -> item.setChildren(getChildrens(item, allAssetInfos))).sorted((item1, item2) -> {
return (Objects.isNull(item1.getSort()) ? 0 : item1.getSort()) - (Objects.isNull(item2.getSort()) ? 0 : item2.getSort());
}).collect(Collectors.toList());
return treeList;
}else {
// 组装成父子结构,先找出所有的一级分类
treeList = allAssetInfos.stream()
.filter(item-> Objects.nonNull(item.getParentAssetId()))
.filter(item -> item.getParentAssetId() == 0L)
.peek(item -> item.setChildren(getChildrens(item,allAssetInfos))).sorted((item1, item2) ->{
return (Objects.isNull(item1.getSort())?0:item1.getSort()) - (Objects.isNull(item2.getSort())?0:item2.getSort());
}).collect(Collectors.toList());
}
return treeList;
}
// 递归查找菜单的子菜单
private List<AssetInfo> getChildrens(AssetInfo root,List<AssetInfo> all){
List<AssetInfo> children = all.stream()
.filter(item-> Objects.nonNull(item.getParentAssetId()))
.filter(item -> item.getParentAssetId().equals(root.getAssetId()))
.peek(item ->{
// 找到子分类
item.setChildren(getChildrens(item,all));
// 菜单的排序
}).sorted((item1,item2) ->{
return (Objects.isNull(item1.getSort())?0:item1.getSort()) - (Objects.isNull(item2.getSort())?0:item2.getSort());
}).collect(Collectors.toList());
return children;
}
@Override
public List<ArchiElementNestRelation> qyLastEle(ArchiAssetInfoDTO params) {
LambdaQueryWrapper<ArchiElementNestRelation> queryWrapper = Wrappers.lambdaQuery(ArchiElementNestRelation.class)
.select()
.eq(StringUtils.isNotBlank(params.getEleName()), ArchiElementNestRelation::getElementName, params.getEleName())
.eq(ArchiElementNestRelation::getNestFlag, 1)
.isNotNull(ArchiElementNestRelation::getElementName);
List<ArchiElementNestRelation> lastEleList = archiElementNestRelationMapper.selectList(queryWrapper);
return lastEleList;
}
@Override
public Map<ArchiAssetInfoDTO, List<ArchiAssetInfoDTO>> getArchVisual(ArchVisualVO archVisualVO) {
return null;
}
public List<Map<String, Object>> getAssetVisalFirst(ArchiAssetVisalDTO archiAssetVisalDTO) {
// 查询最新版本
LambdaQueryWrapper<ArchiAssetSystem> wrapper = new LambdaQueryWrapper<ArchiAssetSystem>()
.select(ArchiAssetSystem::getVersionId)
.eq(ArchiAssetSystem::getArchiStatus, 1);
ArchiAssetSystem version = archiAssetSystemMapper.selectOne(wrapper);
Assert.notNull(version, "最新版本不存在");
Long versionId = version.getVersionId();
return null;
}
}
package org.arch.overall.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.arch.overall.entity.ArchiEleProperty;
import org.arch.overall.mapper.ArchiElePropertyMapper;
import org.arch.overall.service.ArchiElePropertyService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
@Service
public class ArchiElePropertyImpl extends ServiceImpl<ArchiElePropertyMapper, ArchiEleProperty> implements ArchiElePropertyService {
@Autowired
private ArchiElePropertyMapper archiElePropertyMapper;
@Override
public List<ArchiEleProperty> gtArchiElePropertyList(ArchiEleProperty ynMolProyls) {
List<ArchiEleProperty> YnMolProyList = archiElePropertyMapper.gtArchiElePropertyList(ynMolProyls);
return YnMolProyList;
}
@Override
@Transactional(rollbackFor = Exception.class)
public Boolean updateEleRelBatch(List<Map<String, Object>> requestList) {
List<ArchiEleProperty> updatedDataList = new ArrayList<>();
for (Map<String, Object> requestData : requestList) {
Integer propertyId = (Integer) requestData.get("propertyId");
String propertyValue = (String) requestData.get("propertyValue");
QueryWrapper<ArchiEleProperty> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("property_id", propertyId);
ArchiEleProperty archiEleProperty = getOne(queryWrapper);
if (archiEleProperty != null) {
archiEleProperty.setPropertyValue(propertyValue);
updatedDataList.add(archiEleProperty);
}
}
return updateBatchById(updatedDataList);
}
}
package org.arch.overall.service.impl;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.lang.Assert;
import cn.hutool.core.lang.UUID;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.baomidou.mybatisplus.extension.plugins.pagination.PageDTO;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.arch.common.archoverall.dto.ArchiEleRelaConstrainDTO;
import org.arch.common.archoverall.dto.ArchiEleRelaDTO;
import org.arch.common.archoverall.dto.BatchUpdateRelaDTO;
import org.arch.common.archoverall.vo.ArchiEleRelaNameVO;
import org.arch.common.archoverall.vo.ArchiEleRelaVO;
import org.arch.overall.entity.ArchiEleRela;
import org.arch.overall.entity.ArchiEleRelaConstrain;
import org.arch.overall.entity.ArchiElement;
import org.arch.overall.mapper.ArchiEleRelaConstrainMapper;
import org.arch.overall.mapper.ArchiEleRelaMapper;
import org.arch.overall.mapper.ArchiElementMapper;
import org.arch.overall.service.ArchiEleRelaService;
import org.arch.utils.VersionUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.*;
@Service
public class ArchiEleRelaImpl extends ServiceImpl<ArchiEleRelaMapper, ArchiEleRela> implements ArchiEleRelaService {
@Autowired
private ArchiEleRelaService archiEleRelaService;
@Autowired
private ArchiEleRelaMapper archiEleRelaMapper;
@Autowired
private ArchiEleRelaConstrainMapper archiEleRelaConstrainMapper;
@Autowired
private ArchiElementMapper archiElementMapper;
@Override
public IPage<ArchiEleRela> gtArchiEleRela(ArchiEleRelaDTO dto) {
IPage<ArchiEleRela> page = archiEleRelaMapper.gtArchiEleRela(dto, PageDTO.of(dto.getCurrent(), dto.getPageSize()));
List<ArchiEleRela> records = page.getRecords();
for (ArchiEleRela record : records) {
record.setArrList(archiEleRelaService.getArchiEleRelaConstraint(record.getEleRelaId()));
}
return page;
}
@Override
public List<ArchiEleRela> gtEleRelList(ArchiEleRelaDTO dto) {
return archiEleRelaMapper.gtEleRelList(dto);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void addArchiEleRelaConstraint(ArchiEleRela archiEleRelas) {
List<ArchiEleRelaConstrainDTO> arrList = archiEleRelas.getArrList();
if (CollUtil.isNotEmpty(arrList)) {
List<ArchiEleRelaConstrain> list = new ArrayList<>();
arrList.forEach(it -> {
ArchiEleRelaConstrain item = new ArchiEleRelaConstrain();
ArchiElement source = archiElementMapper.selectById(it.getEleGtId());
ArchiElement target = archiElementMapper.selectById(it.getEleLtId());
if (Objects.nonNull(source)) {
item.setEleGtId(it.getEleGtId());
item.setEleGtName(source.getElementName());
}
if (Objects.nonNull(target)) {
item.setEleLtId(it.getEleLtId());
item.setEleLtName(target.getElementName());
}
item.setLastUpdateTime(new Date());
item.setCreateTime(Calendar.getInstance().getTime());
item.setScope(it.getScope());
item.setEleRelaId(archiEleRelas.getEleRelaId());
item.setEleRelaName(archiEleRelas.getRsName());
list.add(item);
});
// 新增或者更新时删除之前历史
archiEleRelaConstrainMapper.delByRelaId(archiEleRelas.getEleRelaId());
archiEleRelaConstrainMapper.batchInsert(list);
}
}
@Override
public List<ArchiEleRelaConstrainDTO> getArchiEleRelaConstraint(Long eleRelaId) {
List<ArchiEleRelaConstrain> archiEleRelaConstraint = archiEleRelaConstrainMapper.getArchiEleRelaConstraint(eleRelaId);
return BeanUtil.copyToList(archiEleRelaConstraint, ArchiEleRelaConstrainDTO.class);
}
@Override
public List<ArchiEleRelaVO> findEleRelaConstrainList(Long constrainId) {
return archiEleRelaConstrainMapper.findEleRelaConstrainList(constrainId);
}
@Override
public List<ArchiEleRelaNameVO> findEleRelaList() {
return baseMapper.findEleRelaList();
}
@Override
@Transactional(rollbackFor = Exception.class)
public Boolean updBatch(BatchUpdateRelaDTO requestMap) {
List<Long> eleRelaId = requestMap.getEleRelaId();
Assert.isFalse(CollectionUtils.isEmpty(eleRelaId), "元素关系ID不能为空");
eleRelaId.forEach(it -> {
ArchiEleRela archiEleRela = baseMapper.selectById(it);
Assert.notNull(archiEleRela, "未找到元素关系");
Integer state = archiEleRela.getState();
Assert.isFalse(1 == state, "当前状态下不可发布!");
String version = baseMapper.getVersion(it);
archiEleRela.setState(1);
archiEleRela.setVersion(VersionUtil.getNextVersion(version));
archiEleRela.updateById();
});
return Boolean.TRUE;
}
@Override
@Transactional(rollbackFor = Exception.class)
public Boolean del(ArchiEleRela params) {
Long eleRelaId = params.getEleRelaId();
ArchiEleRela eleRela = getById(eleRelaId);
Assert.notNull(eleRela, "未找到元素关系");
return eleRela.deleteById();
}
@Override
@Transactional(rollbackFor = Exception.class)
public Boolean insert(ArchiEleRela archiEleRelas) {
archiEleRelas.setEleRelaCode(UUID.fastUUID().toString());
archiEleRelas.setDelFlag(0);
Assert.isFalse(archiEleRelas.getRsName().length() > 100,
"元素关系名称太长请修改为100个字符以内再提交!");
return save(archiEleRelas);
}
@Override
@Transactional(rollbackFor = Exception.class)
public Boolean update(ArchiEleRela params) {
Long eleRelaId = params.getEleRelaId();
ArchiEleRela eleRela = getById(eleRelaId);
Assert.notNull(eleRela, "未找到元素关系");
Integer state = params.getState();
if (1 == state) {
String ver = VersionUtil.getNextVersion(baseMapper.getVersion(eleRelaId));
params.setVersion(ver);
}
BeanUtil.copyProperties(params, eleRela, "createTime");
return eleRela.updateById();
}
}
......@@ -14,8 +14,8 @@ import org.arch.overall.entity.ArchiEleProperty;
import org.arch.overall.entity.ArchiElement;
import org.arch.overall.mapper.ArchiElePropertyMapper;
import org.arch.overall.mapper.ArchiElementMapper;
import org.arch.modules.archoverall.dto.ArchiElementDTO;
import org.arch.modules.archoverall.dto.BatchUpdateDTO;
import org.arch.common.archoverall.dto.ArchiElementDTO;
import org.arch.common.archoverall.dto.BatchUpdateDTO;
import org.arch.overall.service.ArchiElementService;
import org.arch.utils.VersionUtil;
import org.springframework.stereotype.Service;
......
package org.arch.overall.utils;
import org.apache.commons.lang3.StringUtils;
import org.arch.overall.mapper.ArchiAssetInfoMapper;
import org.arch.utils.Constant;
import org.springframework.stereotype.Service;
import javax.annotation.PostConstruct;
import javax.annotation.Resource;
import java.util.stream.IntStream;
/**
* 生成资产编码工具类
*/
@Service
public class GenerateAssetCodeUtils {
public static GenerateAssetCodeUtils assetUtils;
@Resource
private ArchiAssetInfoMapper assetInfoMapper;
@PostConstruct
public void init() {
assetUtils = this;
assetUtils.assetInfoMapper = this.assetInfoMapper;
}
/**
* @param archiType 架构类型
* @param superiorAssetCode 所选的上级资产编号
* @param assetCode 资产编码,当创建资产为根节点时 该参数必传
* @return
*/
public static String getTotalityAssetCode(String archiType, String superiorAssetCode, String assetCode,String archiStage) {
String code = "";
if (StringUtils.isEmpty(archiType)) {
throw new NullPointerException("架构类型不能为空!");
}
//判断选择的节点是否为根节点,如果选择的是无则代表该节点未根节点,编码前端创建,否则自动生成
if (StringUtils.isEmpty(superiorAssetCode)) {
throw new NullPointerException("请选择上级资产!");
}
//选择无代表为根节点
if (Constant.NO.equals(superiorAssetCode)) {
if (StringUtils.isEmpty(assetCode)) {
throw new NullPointerException("当上级节点选择无时,资产编码必输!");
} else {
return assetCode.toUpperCase();
}
}
//如果有上级资产则通过编码获取该所选级别下一级末尾最大的值
int num = getNum(superiorAssetCode, '-') + 1;
Integer maxNum = assetUtils.assetInfoMapper.getArchiAssetMaxNum(archiType, superiorAssetCode, num,archiStage);
if (null == maxNum) {
maxNum = 0;
}
StringBuilder sb = new StringBuilder();
if (maxNum < 9) {
code = sb.append(superiorAssetCode).append("-").append("0").append(maxNum + 1).toString();
} else {
code = sb.append(superiorAssetCode).append("-").append(maxNum + 1).toString();
}
return code.toUpperCase();
}
/**
* 获取指定字符的数量
*
* @param input 输入的内容
* @param charCode
* @return
*/
public static int getNum(String input, char charCode) {
return IntStream.range(0, input.length())
.filter(i -> input.charAt(i) == charCode)
.map(i -> 1)
.sum();
}
}
package org.arch.overall.utils;
import cn.hutool.core.lang.Opt;
import cn.hutool.core.map.MapUtil;
import cn.hutool.http.HtmlUtil;
import com.alibaba.fastjson2.JSONObject;
import com.alibaba.fastjson2.TypeReference;
import com.mxgraph.io.mxCodec;
import com.mxgraph.model.mxCell;
import com.mxgraph.model.mxGraphModel;
import com.mxgraph.model.mxICell;
import com.mxgraph.util.mxXmlUtils;
import com.mxgraph.view.mxGraph;
import lombok.extern.slf4j.Slf4j;
import org.arch.common.redis.service.RedisService;
import org.arch.utils.Constant;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import java.util.*;
import java.util.stream.IntStream;
/**
* drawio文件解析
*
* @author xh
* @date 2023/12/06
*/
@Slf4j
public class MxFileUtil {
/**
* 获取Cell
*
* @param content xml内容
* @return {@link Map}<{@link String}, {@link Object}>
*/
public static Map<String, Object> getCell(String content) {
Document doc = getDocument(content);
mxGraph graph = new mxGraph();
mxCodec codec = new mxCodec(doc);
mxGraphModel model = (mxGraphModel) graph.getModel();
codec.decode(doc.getDocumentElement(), model);
return model.getCells();
}
/**
* 获取xml文档
*
* @param content xml内容
* @return {@link Document}
*/
public static Document getDocument(String content) {
return mxXmlUtils.parseXml(content);
}
/**
* 获取 MX 图形模型
*
* @param doc {@link Document}
* @return {@link mxGraphModel}
*/
public static mxGraphModel getMxGraphModel(Document doc, mxGraph graph) {
mxCodec codec = new mxCodec(doc);
mxGraphModel model = (mxGraphModel) graph.getModel();
codec.decode(doc.getDocumentElement(), model);
return model;
}
/**
* <p>
* 初始化图形
* </>
*
* @param content xml内容
* @return {@link mxGraph}
*/
public static mxGraph initialize(String content) {
mxGraph graph = new mxGraph();
Document doc = getDocument(content);
mxCodec codec = new mxCodec(doc);
mxGraphModel model = (mxGraphModel) graph.getModel();
codec.decode(doc.getDocumentElement(), model);
return graph;
}
/**
* 获取xml内容
*
* @param doc {@link Document}
* @return {@link mxGraphModel}
*/
public static String getXmlContent(Document doc, mxGraph graph) {
mxCodec codec = new mxCodec(doc);
Node node = codec.encode(graph.getModel());
return mxXmlUtils.getXml(node);
}
/**
* <p>
* 从元素样式中获取元素数据
* </>
*
* @param mxCell 元素
* @return {@link Map}<{@link String}, {@link Object}>
*/
public static Map<String, Object> getCellData(mxCell mxCell) {
Map<String, Object> map = new HashMap<>();
mxGraph graph = new mxGraph();
if (Objects.isNull(mxCell)) {
return MapUtil.empty();
}
Map<String, Object> cellStyle = graph.getCellStyle(mxCell);
// 元素id
Object elementId = cellStyle.get("elementId");
if (Objects.nonNull(elementId)) {
map.put("elementId", Long.parseLong(elementId.toString()));
}
// 元素名称
Object eleName = cellStyle.get("eleName");
if (Objects.nonNull(eleName)) {
map.put("eleName", eleName.toString());
}
// 层级
Object eaLevel = cellStyle.get("eaLevel");
if (Objects.nonNull(eaLevel)) {
map.put("eaLevel", Integer.parseInt(eaLevel.toString()));
}
// 资产名称
Object assetName = cellStyle.get("assetName");
if (Objects.nonNull(assetName)) {
String s = assetName.toString().replaceAll("\\[|\\]", "");
map.put("assetName", s);
}
// 资产id
Object assetId = cellStyle.get("assetId");
if (Objects.nonNull(assetId)) {
map.put("assetId", Long.parseLong(assetId.toString()));
}
return map;
}
/**
* 获取Cell
*
* @param model 图形
* @return {@link Map}<{@link Integer}, {@link mxCell}>
*/
public static Map<Integer, mxCell> getMapCells(mxGraphModel model) {
Map<Integer, mxCell> cellMap = MapUtil.newHashMap(16);
Map<String, Object> cells = model.getCells();
cells.forEach((key, value) -> {
mxCell cell = (mxCell) value;
Map<String, Object> map = MxFileUtil.getCellData(cell);
if (MapUtil.isNotEmpty(map)) {
Integer eleId = MapUtil.getInt(map, "eaLevel");
if (Objects.nonNull(eleId) && eleId != 0) {
cellMap.put(eleId, cell);
}
}
});
return cellMap;
}
/**
* 根据层级获取Cell全部信息
*
* @param content 图形信息
* @return {@link Map}<{@link Integer}, {@link mxCell}>
*/
public static Map<Integer, mxCell> getMapCells(String content) {
Map<Integer, mxCell> cellMap = MapUtil.newHashMap(16);
Map<String, Object> cells = MxFileUtil.getCell(content);
cells.forEach((key, value) -> {
mxCell cell = (mxCell) value;
Map<String, Object> map = MxFileUtil.getCellData(cell);
if (MapUtil.isNotEmpty(map)) {
Integer eaLevel = MapUtil.getInt(map, "eaLevel");
if (Objects.nonNull(eaLevel) && eaLevel != 0) {
cellMap.put(eaLevel, cell);
}
}
});
return cellMap;
}
// region ----------------判断层级是否满足等级关系----------------
/**
* 根据Cell获取层级是否正确
*
* @param content 图形信息
* @return {@link Map}<{@link Integer}, {@link mxCell}>
*/
public static Boolean isTrueLevel(String content) {
boolean flag = true;
mxGraph graph = MxFileUtil.initialize(content);
Object[] childVertices = graph.getChildVertices(graph.getDefaultParent());
for (Object child : childVertices) {
List<Integer> sort = new ArrayList<>();
if (child instanceof mxCell) {
mxCell mxCell = (mxCell) child;
Map<String, Object> map = getCellData(mxCell);
if (MapUtil.isNotEmpty(map)) {
Integer eaLevel = MapUtil.getInt(map, "eaLevel");
if (Objects.nonNull(eaLevel) && eaLevel != 0) {
sort.add(eaLevel);
}
}
tree(mxCell, sort);
flag = isNaturallyOrdered(sort);
}
log.info("层级信息{}", sort);
if (!flag) {
return false;
}
}
return flag;
}
/**
* 递归获取元素中的层级
* 判断是或否满足层级关系 eq.[1,2,3,4,5]
*
* @param mxCell 元素
* @param sort 层级序列
*/
private static void tree(mxCell mxCell, List<Integer> sort) {
int childCount = mxCell.getChildCount();
if (childCount > 0) {
for (int i = 0; i < childCount; i++) {
mxCell childAt = (mxCell) mxCell.getChildAt(i);
if (Objects.nonNull(childAt)) {
Map<String, Object> map = getCellData(childAt);
if (MapUtil.isNotEmpty(map)) {
Integer eaLevel = MapUtil.getInt(map, "eaLevel");
if (Objects.nonNull(eaLevel) && eaLevel != 0) {
sort.add(eaLevel);
}
}
tree(childAt, sort);
}
}
}
}
/**
* 自然有序
*
* @param list 列表
* @return boolean
*/
private static boolean isNaturallyOrdered(List<Integer> list) {
return IntStream.range(0, list.size() - 1).parallel().allMatch(i -> list.get(i) < list.get(i + 1));
}
// endregion ----------------判断层级是否满足等级关系----------------
/**
* <h2>获取不同层级Cell</h2>
*
* @param eaLevel 层级
* @param model 图形
* @return {@link mxCell}
*/
public static mxCell getCells(mxGraphModel model, Integer eaLevel) {
Map<Integer, mxCell> cellMap = getMapCells(model);
if (MapUtil.isEmpty(cellMap)) {
throw new RuntimeException("图形中没有元素");
}
return cellMap.get(eaLevel);
}
/**
* <h2>获取不同层级Cell</h2>
* 带缓存,暂且测试阶段
*
* @param eaLevel 层级
* @return {@link mxCell}
*/
public static mxCell getCells(RedisService redisService, String id, Integer eaLevel) {
String key = Constant.MX_MODEL_KEY.concat("::").concat(id);
String s = redisService.get(key);
TypeReference<Map<Integer, mxCell>> typeReference = new TypeReference<Map<Integer, mxCell>>() {
};
Map<Integer, mxCell> cellMap = JSONObject.parseObject(s, typeReference);
return cellMap.get(eaLevel);
}
/**
* <h2>获取元素中xml内容</h2>
* 元素属性中的label<br/>
* 元素属性中的value<br/>
*
* @param mxCell 元素
* @return {@link String}
*/
public static String extractValue(mxICell mxCell) {
String str = "";
// 元素为空
if (mxCell == null) {
return str;
}
// 元素,提取label
Object value = mxCell.getValue();
if (value instanceof Element) {
Element userObject = (Element) value;
String label = userObject.getAttribute("label");
str = HtmlUtil.cleanHtmlTag(label);
}
// 字符串,去除html标签
if (value instanceof String) {
str = HtmlUtil.cleanHtmlTag(value.toString());
}
return Opt.ofBlankAble(str).orElse("-");
}
/**
* 获取资产层级
*
* @param mxCell 元素
* @param levelSort 资产层级
*/
public static void assertTree(mxCell mxCell, List<String> levelSort) {
mxGraph graph = new mxGraph();
int childCount = mxCell.getChildCount();
if (childCount > 0) {
for (int i = 0; i < childCount; i++) {
mxCell childAt = (mxCell) mxCell.getChildAt(i);
if (Objects.nonNull(childAt)) {
Map<String, Object> map = graph.getCellStyle(childAt);
if (MapUtil.isNotEmpty(map)) {
String assetId = MapUtil.getStr(map, "assetId");
String archiBelongId = MapUtil.getStr(map, "archiBelongId");
if (Objects.nonNull(assetId)) {
levelSort.add(archiBelongId + "-" + assetId);
}
}
assertTree(childAt, levelSort);
}
}
}
}
}
package org.arch.overall.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.experimental.Accessors;
import org.arch.overall.entity.AssetInfo;
import java.util.List;
/**
* 架构资产要素
*
* @author java
* @since 2023-12-22
*/
@ApiModel(description = "架构资产要素VO")
@Data
@Accessors(chain = true)
public class AssetInfoLevelVO {
@ApiModelProperty(value = "架构归属")
private String archiBelongId;
@ApiModelProperty("架构归属名称")
private String archiBelongName;
@ApiModelProperty("子列表")
private List<AssetInfo> subList;
}
......@@ -24,9 +24,7 @@ spring:
- data-id: common-filters.${nacos.file-extension}
refresh: true
- data-id: common-datasource.${nacos.file-extension}
refresh: true
- data-id: common-mybatis.${nacos.file-extension}
refresh: true
- data-id: common-redis.${nacos.file-extension}
refresh: true
discovery:
......
<?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.arch.overall.mapper.ArchiAbilityAssetsRelationMapper">
<resultMap id="BaseResultMap" type="org.arch.overall.entity.ArchiAbilityAssetsRelation">
<!--@Table archi_ability_assets_relation-->
<result property="relaId" column="rela_id" jdbcType="INTEGER"/>
<result property="assetId" column="asset_id" jdbcType="INTEGER"/>
<result property="assetCode" column="asset_code" jdbcType="VARCHAR"/>
<result property="assetName" column="asset_name" jdbcType="VARCHAR"/>
<result property="relaAssetId" column="rela_asset_id" jdbcType="INTEGER"/>
<result property="relaAssetCode" column="rela_asset_code" jdbcType="VARCHAR"/>
<result property="relaAssetName" column="rela_asset_name" jdbcType="VARCHAR"/>
<result property="archiTypeId" column="archi_type_id" jdbcType="INTEGER"/>
<result property="archiType" column="archi_type" jdbcType="VARCHAR"/>
<result property="versionId" column="version_id" jdbcType="INTEGER"/>
<result property="viewId" column="view_id" jdbcType="INTEGER"/>
<result property="creator" column="creator" jdbcType="INTEGER"/>
<result property="createTime" column="create_time" jdbcType="TIMESTAMP"/>
<result property="updateby" column="updateby" jdbcType="INTEGER"/>
<result property="updateTime" column="update_time" jdbcType="TIMESTAMP"/>
<result property="delFlag" column="del_flag" jdbcType="INTEGER"/>
<result property="eleName" column="ele_name" jdbcType="VARCHAR"/>
<result property="parentAssetIds" column="parent_asset_ids" jdbcType="VARCHAR"/>
<result property="parentAssetNames" column="parent_asset_names" jdbcType="VARCHAR"/>
<result property="state" column="state" jdbcType="INTEGER"/>
<result property="eleRelaId" column="ele_rela_id" jdbcType="INTEGER"/>
<result property="iconId" column="icon_id" jdbcType="INTEGER"/>
<result property="assetRelaId" column="asset_rela_id" jdbcType="INTEGER"/>
</resultMap>
<insert id="addBach" keyProperty="relaId" useGeneratedKeys="true">
<foreach collection="entities" item="entity" separator=";">
insert into archi_ability_assets_relation(
<trim suffixOverrides=",">
<if test="entity.assetId != null">asset_id,</if>
<if test="entity.assetCode != null">asset_code,</if>
<if test="entity.assetName != null">asset_name,</if>
<if test="entity.relaAssetId != null">rela_asset_id,</if>
<if test="entity.relaAssetCode != null">rela_asset_code,</if>
<if test="entity.relaAssetName != null">rela_asset_name,</if>
<if test="entity.archiTypeId != null">archi_type_id,</if>
<if test="entity.archiType != null">archi_type,</if>
<if test="entity.versionId != null">version_id,</if>
<if test="entity.viewId != null">view_id,</if>
<if test="entity.creator != null">creator,</if>
<if test="entity.createTime != null">create_time,</if>
<if test="entity.updateby != null">updateby,</if>
<if test="entity.updateTime != null">update_time,</if>
<if test="entity.delFlag != null">del_flag,</if>
<if test="entity.parentAssetIds != null">parent_asset_ids,</if>
<if test="entity.parentAssetNames != null">parent_asset_names</if>
</trim>
)
values
<!-- <trim prefix="(" suffix=")" suffixOverrides=",">-->
<trim suffixOverrides=",">
(
<if test="entity.assetId != null">#{entity.assetId},</if>
<if test="entity.assetCode != null">#{entity.assetCode},</if>
<if test="entity.assetName != null">#{entity.assetName},</if>
<if test="entity.relaAssetId != null">#{entity.relaAssetId},</if>
<if test="entity.relaAssetCode != null">#{entity.relaAssetCode},</if>
<if test="entity.relaAssetName != null">#{entity.relaAssetName},</if>
<if test="entity.archiTypeId != null">#{entity.archiTypeId},</if>
<if test="entity.archiType != null">#{entity.archiType},</if>
<if test="entity.versionId != null">#{entity.versionId},</if>
<if test="entity.viewId != null">#{entity.viewId},</if>
<if test="entity.creator != null">#{entity.creator},</if>
<if test="entity.createTime != null">#{entity.createTime},</if>
<if test="entity.updateby != null"> #{entity.updateby},</if>
<if test="entity.updateTime != null">#{entity.updateTime},</if>
<if test="entity.delFlag != null">#{entity.delFlag},</if>
<if test="entity.parentAssetIds != null">#{entity.parentAssetIds},</if>
<if test="entity.parentAssetNames != null">#{entity.parentAssetNames}</if>
)
</trim>
</foreach>
</insert>
<delete id="removeBatchIds" parameterType="java.util.List">
DELETE FROM archi_ability_assets_relation WHERE rela_id IN
<foreach item="id" index="index" collection="list" open="(" separator="," close=")">
#{id}
</foreach>
</delete>
<select id="qryDataListPage" resultType="org.arch.overall.entity.ArchiAbilityAssetsRelation">
SELECT *
FROM (
SELECT DISTINCT
aaa.*,
aai.fields_value AS fieldsValue
FROM
archi_ability_assets_relation aaa
JOIN archi_asset_info aai ON aaa.asset_id = aai.asset_id
WHERE
aaa.archi_type_id = aai.archi_belong_id
<if test=" dto.archiTypeId != null "> AND aaa.archi_type_id = #{dto.archiTypeId} </if>
<if test=" dto.assetName != null and dto.assetName != '' "> AND aai.asset_name LIKE CONCAT('%',#{dto.assetName},'%') </if>
<if test=" dto.beginTime != null "> AND aaa.create_time &gt;= #{dto.beginTime} </if>
<if test=" dto.endTime != null "> AND aaa.create_time &lt;= #{dto.endTime} </if>
AND aaa.del_flag = 0
AND aai.del_flag = 0
ORDER BY aaa.update_time DESC
) AS subquery
GROUP BY asset_name
</select>
<!--资产关系-->
<select id="queryAssetRelation" resultType="org.arch.common.archoverall.vo.ArchiAbilityAssetsRelationQueryVO">
select aaar.rela_id,
aaar.asset_id,
aaar.asset_code,
aaar.asset_name,
aaar.rela_asset_id,
aaar.rela_asset_code,
aaar.rela_asset_name,
aaar.archi_type_id,
aaar.archi_type,
aaar.version_id,
aaar.view_id,
aaar.creator,
aaar.create_time,
aaar.updateby,
aaar.update_time,
aaar.del_flag,
aaar.ele_name,
aaar.parent_asset_ids,
aaar.parent_asset_names,
aaar.ele_rela_id,
aaar.`state`,
aaar.icon_id,
aaer.rs_name
from archi_ability_assets_relation aaar
left join archi_asset_ele_rela aaer on aaar.asset_rela_id = aaer.asset_rela_id
<where>
<if test="params.relaAssetName != null and params.relaAssetName != ''">
and aaar.rela_asset_name like concat('%', #{params.relaAssetName}, '%')
</if>
<if test="params.assetName != null and params.assetName != ''">
and aaar.asset_name like concat('%', #{params.assetName}, '%')
</if>
<if test="params.rcName != null and params.rcName != ''">
and aaer.rs_name like concat('%', #{params.rcName}, '%')
</if>
<if test="params.state != null">
and aaar.state = #{params.state}
</if>
<if test="params.relaId != null">
and aaar.rela_id = #{params.relaId}
</if>
<if test="params.assetRelaId != null">
and aaar.asset_rela_id = #{params.assetRelaId}
</if>
and aaar.del_flag = 0
</where>
order by aaar.create_time desc
</select>
<!--资产关系数量-->
<select id="queryAssetRelationCountByTypeId" resultType="java.lang.Long">
select count(1)
from archi_ability_assets_relation aaar
where aaar.asset_rela_id = #{assetRelaId}
and aaar.del_flag = 0
</select>
</mapper>
<?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.arch.overall.mapper.ArchiAssertMapper">
<select id="maxVer" resultType="org.arch.overall.entity.AssetInfo">
SELECT MAX(a.version) as version
FROM archi_asset_info a
<where>
<if test="archiType != null and archiType != ''">
and a.archi_type = #{archiType}
</if>
<if test="archiAssetState != null">
and a.archi_asset_state = #{archiAssetState}
</if>
<if test="archiStage != null">
and a.archi_stage = #{archiStage}
</if>
and a.del_flag = 0
</where>
</select>
<!--根据需求评审-->
<select id="qyNeedReview" resultType="org.arch.common.archoverall.vo.NeedReviewVo">
select ni.year,
ni.bat_name,
ni.need_name,
ni.need_id,
ni.prj_name,
ni.build_type,
gr.review_suggestion,
gr.review_state
from need_info ni
left join gover_review gr on ni.need_id = gr.need_id
<where>
<if test="nigr.year != null">
and ni.year = #{nigr.year}
</if>
<if test="nigr.batName != null and nigr.batName != ''">
and ni.bat_name like concat('%', #{nigr.batName}, '%')
</if>
<if test="nigr.needName != null and nigr.needName != ''">
and ni.need_name like concat('%', #{nigr.needName}, '%')
</if>
<if test="nigr.prjName != null and nigr.prjName != ''">
and ni.prj_name like concat('%', #{nigr.prjName}, '%')
</if>
<if test="nigr.buildType != null">
and ni.build_type = #{nigr.buildType}
</if>
<if test="nigr.needIdList != null and !nigr.needIdList.isEmpty()">
and review_id in
<foreach collection="nigr.needIdList" item="item" open="(" separator="," close=")">
#{item}
</foreach>
</if>
and ni.need_type = 2
and ni.state = 1
and gr.review_type = #{nigr.reviewEnum.code}
</where>
</select>
<!--查询概设材料列表-->
<select id="qyOnlineReview" resultType="org.arch.overall.entity.OnlineReviewWrite">
SELECT ni.year,
ni.need_id,
ni.prj_id,
ni.bat_name,
ni.need_name,
ni.prj_name,
ni.org_name,
sf.file_name as require_name,
sf.url as file_url,
orw.push_state,
CONCAT(
FLOOR(TIMESTAMPDIFF(HOUR, NOW(), orw.excess_time) / 24), '天 ',
MOD(TIMESTAMPDIFF(HOUR, NOW(), orw.excess_time), 24), '小时'
) as excess_time,
orw.online_review_state,
orw.review_suggestion
FROM need_info ni
JOIN
online_review_write orw ON ni.need_id = orw.need_id
JOIN
prj_need_file pnf ON ni.prj_id = pnf.busi_id
left join sys_file sf on pnf.file_id = sf.id
<where>
<if test="onl.year != null">
and ni.year = #{onl.year}
</if>
<if test="onl.batName != null and onl.batName != ''">
and ni.bat_name like concat('%', #{onl.batName}, '%')
</if>
<if test="onl.needName != null and onl.needName != ''">
and ni.need_name like concat('%', #{onl.needName}, '%')
</if>
<if test="onl.prjName != null and onl.prjName != ''">
and ni.prj_name like concat('%', #{onl.prjName}, '%')
</if>
and ni.need_type = 2
and ni.state = 1
and pnf.busi_id_type = '1'
and pnf.busi_file_name = '概要设计说明书'
</where>
</select>
<!--概设关联业务管理-概设统计分析-各单位概设统计-->
<select id="qyneedCount" resultType="org.arch.common.archoverall.vo.OnlineReviewCountVO">
<choose>
<when test="orcy.countType != null and orcy.countType == 1">
SELECT so.org_id AS manageorgid,
so.org_name AS manageorgname,
COUNT(ni.need_id) AS needcount,
COUNT(CASE WHEN ni.approve_state = 3 THEN 1 END) AS reviewpasscount,
IFNULL(ROUND(COUNT(CASE WHEN ni.approve_state = 3 THEN 1 END) / COUNT(ni.need_id), 2) * 100, 0) AS passrate
FROM sys_org so
LEFT JOIN need_info ni ON so.org_id = ni.org_id
<where>
<if test="orcy.year != null and orcy.year != ''">
AND YEAR(ni.create_time) = YEAR(#{orcy.year})
</if>
</where>
GROUP BY so.org_id, so.org_name
</when>
<when test="orcy.countType != null and orcy.countType == 2">
SELECT bpi.bat_plan_id AS batPlanId,
bpi.bat_name AS batName,
COUNT(bpi.bat_plan_id) AS needcount,
COUNT(CASE WHEN ni.approve_state = 3 THEN 1 END) AS reviewpasscount,
IFNULL(ROUND(COUNT(CASE WHEN ni.approve_state = 3 THEN 1 END) / COUNT(bpi.bat_plan_id), 2) * 100, 0) AS passrate
FROM bat_plan_info bpi
LEFT JOIN need_info ni ON bpi.bat_plan_id = ni.bat_plan_id
<where>
<if test="orcy.year != null and orcy.year != ''">
AND YEAR(ni.create_time) = YEAR(#{orcy.year})
</if>
</where>
GROUP BY bpi.bat_plan_id, bpi.bat_name
</when>
</choose>
</select>
<select id="qyreviewPassCount" resultType="org.arch.common.archoverall.vo.OnlineReviewCountVO">
SELECT subquery.manage_org_id,
(select og.org_name from sys_org og where og.org_id = subquery.manage_org_id) AS manage_org_name,
COUNT(subquery.need_id) as review_pass_count
FROM (SELECT app.manage_org_id, ned.need_id
FROM app_info app
JOIN prj_info prj ON app.app_id = prj.app_id
JOIN need_info ned ON prj.prj_id = ned.prj_id
JOIN gover_review gr ON ned.need_id = gr.need_id
WHERE gr.review_state = '1'
AND gr.review_type IN ('report_norm', 'framework_obey', 'tech_route', 'function_unlike', 'app_dep', 'app_int', 'app_safe', 'function_s_risk', 'data_s_insert_risk')
AND ned.create_time like concat('%', #{orcy.year}, '%')
GROUP BY ned.need_id
HAVING COUNT(DISTINCT gr.review_type) = 9) AS subquery
GROUP BY subquery.manage_org_id
</select>
<select id="qybatNeedCount" resultType="org.arch.common.archoverall.vo.OnlineReviewCountVO">
SELECT bat.bat_plan_id,
bat.bat_name,
COUNT(ned.need_id) as need_count
FROM bat_plan_info bat
JOIN need_info ned ON bat.bat_plan_id = ned.bat_plan_id
<where>
<if test="orqy.year != null and orqy.year != ''">
and bat.year = #{orqy.year}
</if>
</where>
GROUP BY bat.bat_plan_id,
bat.bat_name
</select>
<select id="qybatReviewPassCount" resultType="org.arch.common.archoverall.vo.OnlineReviewCountVO">
SELECT subquery.bat_plan_id, subquery.bat_name, COUNT(subquery.need_id) as review_pass_count
FROM (SELECT bat.bat_plan_id, bat.bat_name, ned.need_id
FROM bat_plan_info bat
JOIN need_info ned ON bat.bat_plan_id = ned.bat_plan_id
JOIN gover_review gr ON ned.need_id = gr.need_id
WHERE gr.review_state = '1'
AND gr.review_type IN ('report_norm', 'framework_obey', 'tech_route', 'function_unlike', 'app_dep', 'app_int', 'app_safe', 'function_s_risk', 'data_s_insert_risk')
AND bat.year = #{orqy.year}
GROUP BY ned.need_id
HAVING COUNT(DISTINCT gr.review_type) = 9) AS subquery
GROUP BY subquery.bat_plan_id, subquery.bat_name
</select>
</mapper>
\ No newline at end of file
<?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.arch.overall.mapper.ArchiAssetInfoMapper">
<resultMap id="BaseResultMap" type="org.arch.overall.entity.AssetInfo">
<!--@mbg.generated-->
<!--@Table archi_asset_info-->
<id column="asset_id" jdbcType="BIGINT" property="assetId"/>
<id column="version_id" jdbcType="BIGINT" property="versionId"/>
<result column="asset_name" jdbcType="VARCHAR" property="assetName"/>
<result column="asset_code" jdbcType="VARCHAR" property="assetCode"/>
<result column="parent_asset_id" jdbcType="BIGINT" property="parentAssetId"/>
<result column="parent_asset_name" jdbcType="VARCHAR" property="parentAssetName"/>
<result column="parent_code" jdbcType="VARCHAR" property="parentCode"/>
<result column="archi_ele_id" jdbcType="BIGINT" property="archiEleId"/>
<result column="ele_name" jdbcType="VARCHAR" property="eleName"/>
<result column="archi_type" jdbcType="VARCHAR" property="archiType"/>
<result column="archi_belong_id" jdbcType="TINYINT" property="archiBelongId"/>
<result column="archi_asset_state" jdbcType="TINYINT" property="archiAssetState"/>
<result column="archi_asset_type" jdbcType="TINYINT" property="archiAssetType"/>
<result column="archi_stage" jdbcType="TINYINT" property="archiStage"/>
<result column="archi_asset_type_id" jdbcType="BIGINT" property="archiAssetTypeId"/>
<result column="target_asset" jdbcType="VARCHAR" property="targetAsset"/>
<result column="create_time" jdbcType="TIMESTAMP" property="createTime"/>
<result column="create_man" jdbcType="BIGINT" property="createMan"/>
<result column="last_update_time" jdbcType="TIMESTAMP" property="lastUpdateTime"/>
<result column="last_update_man" jdbcType="BIGINT" property="lastUpdateMan"/>
<result column="fields_value" jdbcType="VARCHAR" property="fieldsValue"/>
<result column="column01" jdbcType="VARCHAR" property="column01"/>
<result column="column02" jdbcType="LONGVARCHAR" property="column02"/>
<result column="orign_version_id" jdbcType="BIGINT" property="orignVersionId"/>
<result column="sort" jdbcType="INTEGER" property="sort"/>
<result column="is_show" jdbcType="TINYINT" property="isShow"/>
<result column="orign_asset_id" jdbcType="BIGINT" property="orignAssetId"/>
<result column="del_flag" jdbcType="TINYINT" property="delFlag"/>
<result column="state" jdbcType="TINYINT" property="state"/>
<result column="version" jdbcType="VARCHAR" property="version"/>
<result column="is_extend" jdbcType="TINYINT" property="isExtend"/>
<result column="build_type" jdbcType="TINYINT" property="buildType"/>
<result column="parent_element" jdbcType="VARCHAR" property="parentElement"/>
<result column="icon" property="icon"/>
<result column="icon_name" property="iconName"/>
<result column="color" jdbcType="VARCHAR" property="color"/>
<result column="asset_number" jdbcType="VARCHAR" property="assetNumber"/>
<result column="graph_id" jdbcType="BIGINT" property="graphId"/>
<result column="parent_asset" jdbcType="VARCHAR" property="parentAsset"/>
<result column="id" jdbcType="VARCHAR" property="id"/>
</resultMap>
<!--分页-->
<select id="query" resultMap="BaseResultMap">
select aai.asset_id,
aai.asset_name,
aai.parent_asset_id,
aai.parent_asset_name,
aai.parent_code,
aai.version_id,
aai.archi_ele_id,
aai.ele_name,
aai.archi_type,
aai.archi_belong_id,
aai.archi_asset_state,
aai.archi_asset_type,
aai.archi_stage,
aai.archi_asset_type_id,
aai.create_time,
aai.create_man,
aai.last_update_time,
aai.orign_version_id,
aai.sort,
aai.is_show,
aai.orign_asset_id,
aai.`state`,
aai.version,
aai.build_type,
aai.parent_element,
aai.color,
aai.asset_number,
aai.graph_id,
aai.target_asset,
aai.last_update_man,
aai.is_extend,
aai.fields_value,
aai.parent_asset,
gmi.icon,
gmi.graph_name as icon_name
from archi_asset_info aai
left join graph_meta_info gmi on (aai.graph_id = gmi.graph_id)
<if test="params.prjId != null or params.appId != null">
left join archi_asset_app_prj aaap on (aai.asset_id = aaap.asset_id)
</if>
<where>
<if test="params != null and params.assetName != null and params.assetName != ''">
and aai.asset_name like concat('%', #{params.assetName}, '%')
</if>
<if test="params.archiBelongId != null">
and aai.archi_belong_id = #{params.archiBelongId}
</if>
<if test="params.assetConstant != null and params.assetConstant != ''">
and aai.archi_type = #{params.assetConstant}
</if>
<if test="params.archiStage != null">
and aai.archi_stage = #{params.archiStage}
</if>
<if test="params.archiEleId != null">
and aai.archi_ele_id = #{params.archiEleId}
</if>
<if test="params.state != null">
and aai.state = #{params.state}
</if>
<if test="params.archiAssetState != null">
and aai.archi_asset_state = #{params.archiAssetState}
</if>
<if test="params.archiAssetType != null">
and aai.archi_asset_type = #{params.archiAssetType}
</if>
<if test="params.archiAssetTypeId != null">
and aai.archi_asset_type_id = #{params.archiAssetTypeId}
</if>
<if test="params.parentAssetId != null">
and aai.parent_asset_id = #{params.parentAssetId}
</if>
<if test="params.buildType != null">
and aai.build_type = #{params.buildType}
</if>
<if test="params.isExtend != null">
and aai.is_extend = #{params.isExtend}
</if>
<if test="params.eleIdList != null and params.eleIdList.size() > 0">
AND aai.archi_ele_id in
<foreach item="eleId" collection="params.eleIdList" open="(" separator="," close=")">
#{eleId}
</foreach>
</if>
<if test="params.assetIdList != null and params.assetIdList.size() > 0">
AND aai.asset_id in
<foreach item="assetId" collection="params.assetIdList" open="(" separator="," close=")">
#{assetId}
</foreach>
</if>
<if test="params.prjId != null">
and aaap.prj_id = #{params.prjId}
</if>
<if test="params.appId != null">
and aaap.app_id = #{params.appId}
</if>
<if test="params.archiViewId != null">
and find_in_set(aai.archi_ele_id, (select ave.archi_ele_id from archi_view_ele ave where archi_view_id = #{params.archiViewId}))
</if>
and aai.del_flag = 0
</where>
order by aai.create_time desc
<if test="params.limit != null">
limit #{params.limit}
</if>
</select>
<!--目标态-架构资产详情-->
<select id="info" resultMap="BaseResultMap">
select aai.asset_id,
aai.asset_name,
aai.asset_code,
aai.parent_asset_id,
aai.parent_asset_name,
aai.parent_code,
aai.version_id,
aai.archi_ele_id,
aai.ele_name,
aai.archi_type,
aai.archi_belong_id,
aai.archi_asset_state,
aai.archi_asset_type,
aai.archi_stage,
aai.archi_asset_type_id,
aai.target_asset,
aai.create_time,
aai.create_man,
aai.last_update_time,
aai.last_update_man,
aai.fields_value,
aai.column01,
aai.column02,
aai.orign_version_id,
aai.sort,
aai.is_show,
aai.orign_asset_id,
aai.del_flag,
aai.`state`,
aai.version,
aai.is_extend,
aai.build_type,
aai.parent_element,
aai.color,
aai.asset_number,
aai.graph_id,
aai.parent_asset,
aai.asset_id as id,
gmi.icon,
gmi.graph_name as icon_name
from archi_asset_info aai
left join graph_meta_info gmi on (aai.graph_id = gmi.graph_id)
where aai.asset_id = #{assetId}
</select>
</mapper>
\ No newline at end of file
<?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.arch.overall.mapper.ArchiElePropertyMapper">
<resultMap id="BaseResultMap" type="org.arch.overall.entity.ArchiEleProperty">
<result column="property_id" property="propertyId"/>
<result column="type_id" property="typeId"/>
<result column="type" property="type"/>
<result column="field_name" property="fieldName"/>
<result column="cn_name" property="cnName"/>
<result column="property_value" property="propertyValue"/>
<result column="display_order" property="displayOrder"/>
<result column="content_length" property="contentLength"/>
<result column="control_type" property="controlType"/>
<result column="dict_key" property="dictKey"/>
<result column="dicy_id" property="dicyId"/>
<result column="create_man" property="createMan"/>
<result column="create_time" property="createTime"/>
<result column="last_update_time" property="lastUpdateTime"/>
<result column="last_update_man" property="lastUpdateMan"/>
<result column="del_flag" property="delFlag"/>
<result column="default_value" property="defaultValue"/>
<result column="not_null" property="notNull"/>
<result column="is_show" property="isShow"/>
<result column="data_type" property="dataType"/>
<result column="data_type_name" property="dataTypeName"/>
<result column="sort" property="sort"/>
</resultMap>
<select id="gtArchiElePropertyList" resultMap="BaseResultMap">
SELECT aep.property_id,
aep.type_id,
aep.type,
aep.field_name,
aep.cn_name,
aep.display_order,
aep.content_length,
aep.control_type,
aep.dict_key,
aep.dicy_id,
aep.create_man,
aep.create_time,
aep.last_update_time,
aep.last_update_man,
aep.del_flag,
aep.default_value,
aep.not_null,
aep.is_show,
aep.data_type,
aep.data_type_name,
aep.sort,
aep.property_value
FROM archi_ele_property aep
<where>
AND aep.del_flag = 0
<if test="yp.typeId != null">
AND aep.type_id = #{yp.typeId}
</if>
<if test="yp.type != null">
AND aep.type = #{yp.type}
</if>
</where>
ORDER BY aep.sort
</select>
</mapper>
\ No newline at end of file
<?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.arch.overall.mapper.ArchiEleRelaConstrainMapper">
<resultMap id="BaseResultMap" type="org.arch.overall.entity.ArchiEleRelaConstrain">
<!--@mbg.generated-->
<!--@Table archi_ele_rela_constrain-->
<id column="constrain_id" jdbcType="BIGINT" property="constrainId"/>
<result column="ele_gt_id" jdbcType="BIGINT" property="eleGtId"/>
<result column="ele_lt_id" jdbcType="BIGINT" property="eleLtId"/>
<result column="ele_gt_name" jdbcType="VARCHAR" property="eleGtName"/>
<result column="ele_lt_name" jdbcType="VARCHAR" property="eleLtName"/>
<result column="ele_rela_id" jdbcType="BIGINT" property="eleRelaId"/>
<result column="ele_rela_name" jdbcType="VARCHAR" property="eleRelaName"/>
<result column="scope" jdbcType="TINYINT" property="scope"/>
<result column="state" jdbcType="TINYINT" property="state"/>
<result column="create_man" jdbcType="BIGINT" property="createMan"/>
<result column="create_time" jdbcType="TIMESTAMP" property="createTime"/>
<result column="last_update_time" jdbcType="TIMESTAMP" property="lastUpdateTime"/>
<result column="last_update_man" jdbcType="BIGINT" property="lastUpdateMan"/>
<result column="del_flag" jdbcType="TINYINT" property="delFlag"/>
</resultMap>
<!--元素和元素关系列表-->
<resultMap id="EleBaseResultMap" type="org.arch.common.archoverall.vo.ArchiEleRelaVO">
<id column="ele_rela_id" jdbcType="BIGINT" property="eleRelaId"/>
<result column="ele_rela_name" jdbcType="VARCHAR" property="eleRelaName"/>
<result column="source_element_id" property="sourceElementId"/>
<result column="source_element_name" property="sourceElementName"/>
<result column="source_icon" property="sourceIcon"/>
<result column="source_icon_name" property="sourceIconName"/>
<result column="source_color" property="sourceIcon"/>
<result column="target_element_id" property="targetElementId"/>
<result column="target_element_name" property="targetElementName"/>
<result column="target_icon" property="targetIcon"/>
<result column="target_icon_name" property="targetIconName"/>
<result column="target_color" property="targetColor"/>
</resultMap>
<!--批量添加-->
<insert id="batchInsert">
insert into archi_ele_rela_constrain (ele_gt_id, ele_lt_id, ele_gt_name, ele_lt_name, ele_rela_id, ele_rela_name,
`scope`, create_man, create_time, last_update_time, last_update_man)
values
<foreach collection="list" item="item" separator=",">
(#{item.eleGtId}, #{item.eleLtId}, #{item.eleGtName}, #{item.eleLtName}, #{item.eleRelaId}, #{item.eleRelaName},
#{item.scope}, #{item.createMan}, #{item.createTime}, #{item.lastUpdateTime}, #{item.lastUpdateMan})
</foreach>
</insert>
<!--根据元素关系编码查询约束条件-->
<select id="getArchiEleRelaConstraint" resultMap="BaseResultMap">
select aerc.constrain_id,
aerc.ele_gt_id,
aerc.ele_lt_id,
aerc.ele_gt_name,
aerc.ele_lt_name,
aerc.ele_rela_id,
aerc.ele_rela_name,
aerc.`scope`
from archi_ele_rela_constrain aerc
where aerc.ele_rela_id = #{eleRelaId}
and aerc.del_flag = 0
</select>
<!--根据元素关系,删除元素关系-->
<delete id="delByRelaId">
delete
from archi_ele_rela_constrain aerc
where aerc.ele_rela_id = #{eleRelaId}
</delete>
<!--根据元素关系ID查询元素关系-->
<select id="findEleRelaConstrainList" resultMap="EleBaseResultMap">
select aerc.ele_rela_id,
aerc.ele_rela_name,
ae.element_id as source_element_id,
ae.element_name as source_element_name,
ae.icon as source_icon,
ae.icon_name as source_icon_name,
ae.color as source_color,
ae1.element_id as target_element_id,
ae1.element_name as target_element_name,
ae1.icon as target_icon,
ae1.icon_name as target_icon_name,
ae1.color as target_color
from archi_ele_rela_constrain aerc
left join archi_element ae on ae.element_id = aerc.ele_gt_id
left join archi_element ae1 on ae1.element_id = aerc.ele_lt_id
where aerc.ele_rela_id = #{eleRelaId}
</select>
</mapper>
\ No newline at end of file
<?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.arch.overall.mapper.ArchiEleRelaMapper">
<resultMap id="BaseResultMap" type="org.arch.overall.entity.ArchiEleRela">
<result column="ele_rela_id" property="eleRelaId"/>
<result column="ele_rela_code" property="eleRelaCode"/>
<result column="rs_name" property="rsName"/>
<result column="object1" property="object1"/>
<result column="object2" property="object2"/>
<result column="content" property="content"/>
<result column="icon" property="icon"/>
<result column="icon_name" property="iconName"/>
<result column="icon_id" property="iconId"/>
<result column="version" property="version"/>
<result column="state" property="state"/>
<result column="create_man" property="createMan"/>
<result column="create_time" property="createTime"/>
<result column="last_update_time" property="lastUpdateTime"/>
<result column="last_update_man" property="lastUpdateMan"/>
<result column="del_flag" property="delFlag"/>
<result column="scope" property="scope"/>
</resultMap>
<!--分页-->
<select id="gtArchiEleRela" resultMap="BaseResultMap">
SELECT er.ele_rela_id,
er.ele_rela_code,
er.rs_name,
er.object1,
er.object2,
er.scope,
er.content,
er.icon,
er.icon_name,
er.version,
er.state,
er.create_man,
er.create_time,
er.last_update_time,
er.last_update_man,
er.del_flag,
er.icon_id
from archi_ele_rela er
where er.del_flag = '0'
<if test="dto.rsName != null and dto.rsName != ''">
and er.rs_name LIKE CONCAT('%', #{dto.rsName}, '%')
</if>
<if test="dto.state != null">
and er.state = #{dto.state}
</if>
order by er.create_time desc
</select>
<!--列表-->
<select id="gtEleRelList" resultMap="BaseResultMap">
select er.ele_rela_id,
er.ele_rela_code,
er.rs_name,
er.object1,
er.object2,
er.`scope`,
er.content,
er.icon,
er.icon_name,
er.version,
er.`state`,
er.create_man,
er.create_time,
er.last_update_time,
er.last_update_man,
er.del_flag,
er.icon_id,
er.shape_width,
er.shape_height
from archi_ele_rela er
<where>
and er.del_flag = '0'
<if test="dto.rsName != null and dto.rsName != ''">
and er.rs_name = #{dto.rsName}
</if>
<if test="dto.scope != null and dto.scope != ''">
and er.scope = #{dto.scope}
</if>
<if test="dto.state != null">
and er.state = #{dto.state}
</if>
</where>
order by er.create_time desc
</select>
<!--查询资产关系-->
<select id="findEleRelaList" resultType="org.arch.common.archoverall.vo.ArchiEleRelaNameVO">
select aer.ele_rela_id,
aer.rs_name
from archi_ele_rela aer
where del_flag = '0'
</select>
<!--获取最新版本-->
<select id="getVersion" resultType="java.lang.String">
set @i := (<include refid="org.arch.overall.mapper.VersionInitMapper.versionInit"/>);
</select>
</mapper>
\ No newline at end of file
<?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.arch.overall.mapper.ArchiMetaModelMapper">
<resultMap id="BaseResultMap" type="org.arch.overall.entity.ArchiMetaModel">
<result column="meta_model_id" property="metaModelId"/>
<result column="meta_model_code" property="metaModelCode"/>
<result column="version" property="version"/>
<result column="ver_name" property="verName"/>
<result column="state" property="state"/>
<result column="create_man" property="createMan"/>
<result column="create_time" property="createTime"/>
<result column="last_update_time" property="lastUpdateTime"/>
<result column="last_update_man" property="lastUpdateMan"/>
<result column="del_flag" property="delFlag"/>
<result column="meta_model_data" property="metaModelData"/>
<result column="meta_model_svg" property="metaModelSvg"/>
<result column="graph_id" property="graphId"/>
</resultMap>
<select id="selectVer" resultMap="BaseResultMap">
select (SELECT CONCAT((SELECT REPLACE((select date_format(now(), '%Y-%m-%d')), CHAR(45), '')), '-V', (SELECT (select date_format(now(), '%Y')) - 2023 + 1), '.',
(select date_format(now(), '%m')), '.', '1')) as version
</select>
<!--列表-->
<select id="getYnMol" resultMap="BaseResultMap">
Select mm.meta_model_id,
mm.meta_model_code,
mm.version,
mm.ver_name,
mm.create_man,
mm.create_time,
mm.last_update_time,
mm.last_update_man,
mm.del_flag,
mm.state,
gr.graph_id,
gr.icon as meta_model_svg,
gr.content as meta_model_data
FROM archi_meta_model mm
left join graph_repository gr on mm.graph_id = gr.graph_id
<where>
AND mm.del_flag = 0
<if test="dto.verName != null and dto.verName != ''">
AND mm.ver_name LIKE CONCAT('%', #{dto.verName}, '%')
</if>
<if test="dto.state != null">
AND mm.state = #{dto.state}
</if>
</where>
order by mm.create_time desc
</select>
<!--更新画布信息和svg缩略图-->
<update id="updateMxGraphModel">
update archi_meta_model
set graph_id = #{graphId},
last_update_time = now()
where meta_model_id = #{metaModelId}
</update>
<!-- 元模型画布细信息-->
<select id="getMxCellByMetaModelId" resultType="java.lang.String">
select gr.content
from archi_meta_model amm
left join graph_repository gr on amm.graph_id = gr.graph_id
where amm.meta_model_id = #{metaModelId}
and amm.del_flag = '0'
</select>
<!-- 元模型画布缩略图-->
<select id="findMetaModelById" resultMap="BaseResultMap">
select amm.meta_model_id,
amm.meta_model_code,
amm.ver_name,
amm.version,
amm.state,
amm.graph_id,
gr.icon as meta_model_svg,
ifnull(gr.content, '${@com.eadc.common.Constant@MX_MODEL_GRAPH}') as meta_model_data
from archi_meta_model amm
left join graph_repository gr on amm.graph_id = gr.graph_id
where amm.meta_model_id = #{metaModelId}
and amm.del_flag = '0'
</select>
</mapper>
\ No newline at end of file
......@@ -80,10 +80,16 @@
<orgjson.version>20180130</orgjson.version>
<httpclient.version>3.1</httpclient.version>
<configuration.version>1.10</configuration.version>
<mybatisPlus.version>1.4.11</mybatisPlus.version>
</properties>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.github.yulichang</groupId>
<artifactId>mybatis-plus-join-core</artifactId>
<version>${mybatisPlus.version}</version>
</dependency>
<dependency>
<groupId>commons-configuration</groupId>
<artifactId>commons-configuration</artifactId>
<version>${configuration.version}</version>
......
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!