Commit 17bc3f35 by renrui

[add]系统信息

1 parent 9347abbc
Showing with 1392 additions and 1 deletions
package org.arch.common.modules.archsysytem.eneiity;
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.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import org.arch.common.BaseEntity;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;
/**
* <p>
* 系统列表信息
* </p>
*
* @author java
* @since 2024-02-27
*/
@EqualsAndHashCode(callSuper = true)
@Data
@NoArgsConstructor
@AllArgsConstructor
@Accessors(chain = true)
@TableName("app_info")
@ApiModel(value = "AppInfo对象", description = "系统列表信息")
public class AppInfo extends BaseEntity {
@ApiModelProperty(value = "系统应用ID")
@TableId(value = "app_id", type = IdType.AUTO)
private Long appId;
@ApiModelProperty(value = "系统编码")
@TableField("app_code")
private String appCode;
@ApiModelProperty(value = "系统名称")
@TableField("app_name")
private String appName;
@ApiModelProperty(value = "上线时间")
@DateTimeFormat(pattern = "yyyy-MM-dd")
@JsonFormat(pattern = "yyyy-MM-dd")
@TableField("online_date")
private Date onlineDate;
@ApiModelProperty(value = "项目名称")
@TableField("project_name")
private String projectName;
@ApiModelProperty(value = "建管单位")
@TableField("manage_org_id")
private Long manageOrgId;
@ApiModelProperty(value = "建管部门")
@TableField("manage_dept_id")
private Long manageDeptId;
@ApiModelProperty(value = "建管单位名称")
@TableField("manage_org_name")
private String manageOrgName;
@ApiModelProperty(value = "建管部门名称")
@TableField("manage_dept_name")
private String manageDeptName;
@ApiModelProperty(value = "承建类型:1统推,2自建")
@TableField("build_type")
private Integer buildType;
@ApiModelProperty(value = "承建单位")
@TableField("build_org")
private Byte buildOrg;
@ApiModelProperty(value = "承建单位名称")
@TableField("build_org_name")
private String buildOrgName;
@ApiModelProperty(value = "项目经理")
@TableField("project_manager")
private String projectManager;
@ApiModelProperty(value = "前期项目")
@TableField("orign_project_id")
private Long orignProjectId;
@ApiModelProperty(value = "关联系统")
@TableField("relation_app_id")
private Long relationAppId;
}
package org.arch.common.modules.archsysytem.eneiity;
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.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import org.arch.common.BaseEntity;
import org.springframework.format.annotation.DateTimeFormat;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
/**
* <p>
* 项目管理信息
* </p>
*
* @author java
* @since 2024-02-28
*/
@EqualsAndHashCode(callSuper = true)
@Data
@NoArgsConstructor
@AllArgsConstructor
@Accessors(chain = true)
@TableName("prj_info")
@ApiModel(value = "PrjInfo对象", description = "项目管理信息")
public class PrjInfo extends BaseEntity {
@ApiModelProperty(value = "项目ID")
@TableId(value = "prj_id", type = IdType.AUTO)
private Long prjId;
@ApiModelProperty(value = "项目编码")
@TableField("prj_code")
private String prjCode;
@ApiModelProperty(value = "项目名称")
@TableField("prj_name")
private String prjName;
@ApiModelProperty(value = "系统ID")
@TableField("app_id")
private Long appId;
@ApiModelProperty(value = "系统编码")
@TableField("app_code")
private String appCode;
@ApiModelProperty(value = "系统名称")
@TableField("app_name")
private String appName;
@ApiModelProperty(value = "项目经理")
@TableField("project_manager")
private String projectManager;
@ApiModelProperty(value = "实际竣工时间")
@TableField("cmpl_date")
@DateTimeFormat(pattern = "yyyy-MM-dd")
@JsonFormat(pattern = "yyyy-MM-dd")
private Date cmplDate;
@ApiModelProperty(value = "项目性质,1:新建、2:续建")
@TableField("prj_plan_class")
private Long prjPlanClass;
@ApiModelProperty(value = "建管单位")
@TableField("manage_org_id")
private Long manageOrgId;
/**
* 建管单位编码
*/
@TableField("manage_org_code")
private String manageOrgCode;
@ApiModelProperty(value = "建管部门")
@TableField("manage_dept_id")
private Long manageDeptId;
@ApiModelProperty(value = "建设类型")
@TableField("build_type")
private Integer buildType;
@ApiModelProperty(value = "承建单位")
@TableField("build_org")
private Integer buildOrg;
@ApiModelProperty(value = "前期项目ID")
@TableField("ago_prj_id")
private Long agoPrjId;
@ApiModelProperty(value = "前期项目编码")
@TableField("ago_prj_code")
private String agoPrjCode;
@ApiModelProperty(value = "前期项目名称")
@TableField("ago_prj_name")
private String agoPrjName;
/**
* 项目启动时间
*/
@DateTimeFormat(pattern = "yyyy-MM-dd")
@JsonFormat(pattern = "yyyy-MM-dd")
private Date projectInitiationTime;
/**
* 项目金额
*/
private BigDecimal projAmount;
//-------------------以下非数据库字段-------------------
@ApiModelProperty(value = "建管单位名称")
@TableField(exist = false)
private String manageOrgName;
@ApiModelProperty(value = "建管部门名称")
@TableField(exist = false)
private String manageDeptName;
//-------------------系统架构管控要求-评审情况(概要设计) 列表增加的字段(王勇)----------------
@ApiModelProperty(value = "一致性评审 0 未完成 1 已完成")
private Integer conformanceReview;
@ApiModelProperty(value = "架构遵从 0 未完成 1 已完成")
private Integer architecturalCompliance;
@ApiModelProperty(value = "关键技术深度评审 0 未完成 1 已完成")
private Integer cruxTechReview;
@ApiModelProperty(value = "功能深度评审 0 未完成 1 已完成")
private Integer funcDepthReview;
@ApiModelProperty(value = "数据深度评审 0 未完成 1 已完成")
private Integer dataDepthReview;
@TableField(exist = false)
private List<PrjNeedFile> filesValue;
}
package org.arch.common.modules.archsysytem.eneiity;
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.List;
/**
* <p>
* 项目-需求资料信息
* </p>
*
* @author java
* @since 2024-03-14
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
@Accessors(chain = true)
@TableName("prj_need_file")
@ApiModel(value = "PrjNeedFile对象", description = "项目-需求资料信息")
public class PrjNeedFile implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "项目需求ID")
@TableId(value = "prj_need_file_id", type = IdType.AUTO)
private Long prjNeedFileId;
@ApiModelProperty(value = "业务ID")
@TableField("busi_id")
private Long busiId;
/**
* 文件 ID
*/
private Long fileId;
@ApiModelProperty(value = "业务ID类型:1项目附件,2需求附件")
@TableField("busi_id_type")
private Integer busiIdType;
@ApiModelProperty(value = "业务资料类型")
@TableField("busi_file_name")
private String busiFileName;
/**
* 文件名称
*/
@ApiModelProperty(value = "文件名称")
@TableField(exist = false)
private String fileName;
/**
* 文件类型
*/
@ApiModelProperty(value = "业务资料类型ID")
private Long busiFileType;
@ApiModelProperty(value = "业务资料类型集合")
@TableField(exist = false)
private List<String> busiFileNameList;
}
package org.arch.common.modules.archsysytem.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.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import org.arch.common.BaseEntity;
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
@NoArgsConstructor
@AllArgsConstructor
@Accessors(chain = true)
@ApiModel(value = "AppInfo对象VO", description = "系统列表信息")
public class AppInfoVO extends BaseEntity {
@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 = "承建类型:1统推,2自建")
private Integer buildType;
@ApiModelProperty(value = "承建单位")
private Byte buildOrg;
@ApiModelProperty(value = "承建单位名称")
private String buildOrgName;
@ApiModelProperty(value = "项目经理")
private String projectManager;
@ApiModelProperty(value = "前期项目")
private Long orignProjectId;
@ApiModelProperty(value = "关联系统")
@TableField("relation_app_id")
private Long relationAppId;
/**
* 关联项目
*/
@ApiModelProperty(value = "管理项目")
private List<PrjInfoVO> linkPrjList;
}
package org.arch.common.modules.archsysytem.vo;
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.util.Date;
import java.util.List;
/**
* <p>
* 项目管理信息
* </p>
*
* @author java
* @since 2024-02-28
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
@Accessors(chain = true)
@ApiModel(value = "PrjInfo对象", description = "项目管理信息")
public class CockpitProjectInfoVO {
@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;
private String prjPlanClassName;
@ApiModelProperty(value = "建管单位")
private Long manageOrgId;
@ApiModelProperty(value = "建管单位名称")
private String manageOrgName;
@ApiModelProperty(value = "建管部门")
private Long manageDeptId;
@ApiModelProperty(value = "建管部门名称")
private String manageDeptName;
@ApiModelProperty(value = "建设类型")
private Integer buildType;
@ApiModelProperty(value = "建设类型名称")
private String buildTypeName;
@ApiModelProperty(value = "承建单位")
private Integer buildOrg;
@ApiModelProperty(value = "承建单位名称")
private String buildOrgName;
@ApiModelProperty(value = "前期项目ID")
private Long agoPrjId;
@ApiModelProperty(value = "前期项目编码")
private String agoPrjCode;
@ApiModelProperty(value = "前期项目名称")
private String agoPrjName;
@ApiModelProperty(value = "文件列表")
private List<ProjectFile> filesValue;
/**
* 文件列表
*
* @author xh13k
* {@code @date} 2024/05/23
*/
@ApiModel(description = "文件列表")
@Data
public static class ProjectFile {
/**
* 文件 ID
*/
@ApiModelProperty("文件 ID")
private String fileId;
/**
* 文件名
*/
@ApiModelProperty("文件名")
private String fileName;
}
}
package org.arch.common.modules.archsysytem.vo;
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.util.Date;
/**
* <p>
* 项目管理信息
* </p>
*
* @author java
* @since 2024-02-28
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
@Accessors(chain = true)
@ApiModel(value = "PrjInfo对象", description = "项目管理信息")
public class PrjInfoVO {
@ApiModelProperty(value = "项目ID")
private Long prjId;
@ApiModelProperty(value = "项目名称")
private String prjName;
@ApiModelProperty(value = "关联时间")
@DateTimeFormat(pattern = "yyyy-MM-dd")
@JsonFormat(pattern = "yyyy-MM-dd")
private Date linkDate;
@ApiModelProperty(value = "项目性质,1:新建、2:续建")
private Integer prjPlanClass;
}
......@@ -17,4 +17,17 @@
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>org.arch</groupId>
<artifactId>log</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.arch</groupId>
<artifactId>nacos</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
</dependencies>
</project>
\ No newline at end of file
package org.arch.system;
import org.dromara.x.file.storage.spring.EnableFileStorage;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.EnableMBeanExport;
import org.springframework.jmx.support.RegistrationPolicy;
@SpringBootApplication
@EnableMBeanExport(registration = RegistrationPolicy.IGNORE_EXISTING)
public class ArchSystemApp {
public static void main(String[] args) {
SpringApplication.run(ArchSystemApp.class, args);
}
}
package org.arch.system.controller;
import com.baomidou.mybatisplus.extension.plugins.pagination.PageDTO;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.arch.base.Result;
import org.arch.common.modules.archoverall.dto.AppInfoDTO;
import org.arch.common.modules.archoverall.dto.BatchRemoveDTO;
import org.arch.common.modules.archsysytem.eneiity.AppInfo;
import org.arch.system.serive.AppInfoService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
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;
/**
* <p>
* 系统列表信息 前端控制器
* </p>
*
* @author java
* @since 2024-02-27
*/
@Api(value = "/app-info", tags = {"系统信息管理"})
@RestController
@RequestMapping("/app-info")
public class AppInfoController {
@Autowired
private AppInfoService appInfoService;
@ApiOperation(value = "分页查询", notes = "分页查询", httpMethod = "POST")
@PostMapping(value = "/")
// @AutoLog(value = LogEventTypeEnum.SEARCH, LogTypeValue = LogTypeEnum.BUSI_LOG, LogLevValue = LogLevEnum.HIGH, description = "查询系统信息管理数据")
public Result iPage(@RequestBody AppInfoDTO params) {
return Result.success(appInfoService.iPage(params, PageDTO.of(params.getCurrent(), params.getPageSize())));
}
@ApiOperation(value = "不分页查询", notes = "不分页查询", httpMethod = "POST")
@PostMapping(value = "/appList")
// @AutoLog(value = LogEventTypeEnum.SEARCH, LogTypeValue = LogTypeEnum.BUSI_LOG, LogLevValue = LogLevEnum.HIGH, description = "查询系统信息管理数据")
public Result appList(@RequestBody AppInfoDTO params) {
return Result.success(appInfoService.appList(params));
}
@ApiOperation(value = "新增", notes = "新增", httpMethod = "POST")
@PostMapping(value = "/ad")
//@AutoLog(value = LogEventTypeEnum.INSERT, LogTypeValue = LogTypeEnum.BUSI_LOG, LogLevValue = LogLevEnum.MIDDLE, description = "新增系统信息管理数据")
public Result create(@RequestBody AppInfo params) {
return Result.success(appInfoService.insert(params));
}
@ApiOperation(value = "修改", notes = "修改", httpMethod = "POST")
@PostMapping(value = "/upd")
//@AutoLog(value = LogEventTypeEnum.UPDATE, LogTypeValue = LogTypeEnum.BUSI_LOG, LogLevValue = LogLevEnum.HIGH, description = "修改系统信息管理数据")
public Result update(@RequestBody AppInfo params) {
return Result.success(appInfoService.update(params));
}
@ApiOperation("详情")
@PostMapping(value = "/dApp")
//@AutoLog(value = LogEventTypeEnum.SEARCH, LogTypeValue = LogTypeEnum.BUSI_LOG, LogLevValue = LogLevEnum.HIGH, description = "查询系统信息管理详情数据")
public Result dApp(@RequestBody AppInfoDTO params) {
return Result.success(appInfoService.info(params));
}
@ApiOperation("删除")
@PostMapping(value = "/rApp")
//@AutoLog(value = LogEventTypeEnum.DELETE, LogTypeValue = LogTypeEnum.BUSI_LOG, LogLevValue = LogLevEnum.HIGH)
public Result delete(@RequestBody @Validated BatchRemoveDTO params) {
boolean b = appInfoService.delBatch(params);
return b ? Result.success("删除成功") : Result.error("删除失败");
}
}
package org.arch.system.mapper;
import com.github.yulichang.base.MPJBaseMapper;
import org.arch.common.modules.archoverall.dto.AppInfoDTO;
import org.arch.common.modules.archsysytem.eneiity.AppInfo;
import org.arch.common.modules.archsysytem.vo.AppInfoVO;
/**
* <p>
* 系统列表信息 Mapper 接口
* </p>
*
* @author java
* @since 2024-02-27
*/
public interface AppInfoMapper extends MPJBaseMapper<AppInfo> {
/**
* 获取系统信息详情
*
* @param params 参数
* @return {@link AppInfo}
*/
AppInfoVO info(AppInfoDTO params);
}
package org.arch.system.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.modules.archsysytem.dto.ProjectQueryDTO;
import org.arch.common.modules.archsysytem.eneiity.PrjInfo;
import org.arch.common.modules.archsysytem.vo.CockpitProjectInfoVO;
/**
* <p>
* 项目管理信息 Mapper 接口
* </p>
*
* @author java
* @since 2024-02-28
*/
public interface PrjInfoMapper extends MPJBaseMapper<PrjInfo> {
/**
* 分页查询
*
* @param page 页
* @param params 参数
* @return {@link IPage }<{@link PrjInfo }>
*/
IPage<PrjInfo> page(Page<PrjInfo> page, @Param("params") ProjectQueryDTO params);
/**
* 查询项目信息
*
* @param projectId 项目 ID
* @return {@link CockpitProjectInfoVO }
*/
CockpitProjectInfoVO queryProjectInfo(Long projectId);
/**
* 涉及业务流程数量
*
* @return {@link Integer }
*/
Integer businessProcessCount(Long projectId);
/**
* 涉及业务活动数量
*
* @return {@link Integer }
*/
Integer businessActivityCount(Long projectId);
/**
* 涉及支撑业务系统数量
*
* @return {@link Integer }
*/
Integer businessSystemCount(Long projectId);
}
package org.arch.system.serive;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import org.arch.common.modules.archoverall.dto.AppInfoDTO;
import org.arch.common.modules.archoverall.dto.BatchRemoveDTO;
import org.arch.common.modules.archsysytem.eneiity.AppInfo;
import org.arch.common.modules.archsysytem.vo.AppInfoVO;
import java.util.List;
/**
* <p>
* 系统列表信息 服务类
* </p>
*
* @author java
* @since 2024-02-27
*/
public interface AppInfoService extends IService<AppInfo> {
/**
* 分页
*
* @param params 参数
* @param page 页
* @return {@link IPage }<{@link AppInfo }>
*/
IPage<AppInfo> iPage(AppInfoDTO params, Page<AppInfo> page);
/**
* 应用列表
*
* @param params 参数
* @return {@link List }<{@link AppInfo }>
*/
List<AppInfo> appList(AppInfoDTO params);
/**
* 插入
*
* @param params 参数
* @return {@link Boolean }
*/
Boolean insert(AppInfo params);
/**
* 更新
*
* @param params 参数
* @return {@link Boolean }
*/
Boolean update(AppInfo params);
/**
* 获取系统信息详情
*
* @param params 参数
* @return {@link AppInfo}
*/
AppInfoVO info(AppInfoDTO params);
/**
* 批量删除
*
* @param params 参数
*/
Boolean delBatch(BatchRemoveDTO params);
}
package org.arch.system.serive.impl;
import cn.hutool.core.lang.Assert;
import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import lombok.RequiredArgsConstructor;
import org.arch.common.modules.archoverall.dto.AppInfoDTO;
import org.arch.common.modules.archoverall.dto.BatchRemoveDTO;
import org.arch.common.modules.archsysytem.eneiity.AppInfo;
import org.arch.common.modules.archsysytem.eneiity.PrjInfo;
import org.arch.common.modules.archsysytem.vo.AppInfoVO;
import org.arch.system.mapper.AppInfoMapper;
import org.arch.system.mapper.PrjInfoMapper;
import org.arch.system.serive.AppInfoService;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
import java.util.Objects;
/**
* <p>
* 系统列表信息 服务实现类
* </p>
*
* @author java
* @since 2024-02-27
*/
@Service
@RequiredArgsConstructor
public class AppInfoServiceImpl extends ServiceImpl<AppInfoMapper, AppInfo> implements AppInfoService {
private final PrjInfoMapper prjInfoMapper;
@Override
public IPage<AppInfo> iPage(AppInfoDTO params, Page<AppInfo> page) {
return baseMapper.selectPage(page, queryWrapper(params));
}
@Override
public List<AppInfo> appList(AppInfoDTO params) {
return baseMapper.selectList(queryWrapper(params));
}
private LambdaQueryWrapper<AppInfo> queryWrapper(AppInfoDTO params) {
return Wrappers.lambdaQuery(AppInfo.class)
.select()
.like(StrUtil.isNotBlank(params.getAppName()), AppInfo::getAppName, params.getAppName())
.eq(Objects.nonNull(params.getManageOrgId()), AppInfo::getManageOrgId, params.getManageOrgId())
.eq(Objects.nonNull(params.getManageDeptId()), AppInfo::getManageDeptId, params.getManageDeptId())
.eq(Objects.nonNull(params.getBuildType()), AppInfo::getBuildType, params.getBuildType())
.eq(Objects.nonNull(params.getAppId()), AppInfo::getAppId, params.getAppId())
.eq(Objects.nonNull(params.getAppCode()), AppInfo::getAppCode, params.getAppCode());
}
@Override
public Boolean insert(AppInfo params) {
Long count = baseMapper.selectCount(
Wrappers.lambdaQuery(AppInfo.class)
.eq(StrUtil.isNotBlank(params.getAppName()), AppInfo::getAppName, params.getAppName())
.eq(Objects.nonNull(params.getManageDeptId()), AppInfo::getManageDeptId, params.getManageDeptId()));
Assert.isFalse(count > 0, "此部门下,系统名称已存在");
params.setAppCode(IdUtil.fastUUID());
return baseMapper.insert(params) > 0;
}
@Override
public Boolean update(AppInfo params) {
AppInfo one = baseMapper.selectById(params.getAppId());
Assert.notNull(one, "系统不存在");
Long count = baseMapper.selectCount(
Wrappers.lambdaQuery(AppInfo.class)
.eq(StrUtil.isNotBlank(params.getAppName()), AppInfo::getAppName, params.getAppName())
.eq(Objects.nonNull(params.getManageDeptId()), AppInfo::getManageDeptId, params.getManageDeptId())
.notIn(AppInfo::getAppId, params.getAppId()));
Assert.isFalse(count > 0, "此部门下,系统名称已存在");
return baseMapper.updateById(params) > 0;
}
@Override
public AppInfoVO info(AppInfoDTO params) {
return baseMapper.info(params);
}
@Override
@Transactional
public Boolean delBatch(BatchRemoveDTO params) {
// 项目 ids
List<Long> ids = params.getIds();
// 判断项目是否引用
Long count = prjInfoMapper.selectCount(Wrappers.lambdaQuery(PrjInfo.class)
.in(PrjInfo::getAppId, ids));
Assert.isFalse(count > 0, "系统已被项目引用,无法删除");
return removeByIds(ids);
}
}
server:
port: 17008
nacos:
server-addr: 192.168.0.200:18848
username: nacos
password: nacos
namespace: ${NAMESPACE:arch}
file-extension: yaml
spring:
cloud:
nacos:
config:
group: DEFAULT_GROUP
server-addr: ${nacos.server-addr}
username: ${nacos.username}
password: ${nacos.password}
namespace: ${nacos.namespace}
# 公共配置
shared-configs:
- data-id: common-storage.${nacos.file-extension}
refresh: true
- data-id: common-config.${nacos.file-extension}
refresh: true
- data-id: common-filters.${nacos.file-extension}
refresh: true
- data-id: common-datasource.${nacos.file-extension}
- data-id: common-mybatis.${nacos.file-extension}
- data-id: common-redis.${nacos.file-extension}
refresh: true
discovery:
ip: localhost
server-addr: ${nacos.server-addr}
username: ${nacos.username}
password: ${nacos.password}
namespace: ${nacos.namespace}
config:
activate:
on-profile: dev
server:
port: 17003
nacos:
server-addr: localhost:8848
username: nacos
password: nacos
namespace: ${NAMESPACE:public}
file-extension: yaml
spring:
cloud:
nacos:
config:
group: DEFAULT_GROUP
server-addr: ${nacos.server-addr}
username: ${nacos.username}
password: ${nacos.password}
namespace: ${nacos.namespace}
# 公共配置
shared-configs:
- data-id: common-storage.${nacos.file-extension}
refresh: true
- data-id: common-config.${nacos.file-extension}
refresh: true
- data-id: common-log.${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-isc.${nacos.file-extension}
refresh: true
- data-id: common-redis.${nacos.file-extension}
refresh: true
discovery:
ip: localhost
server-addr: ${nacos.server-addr}
username: ${nacos.username}
password: ${nacos.password}
namespace: ${nacos.namespace}
server:
port: 17003
nacos:
server-addr: 192.168.0.120:18848
username: nacos
password: nacos
namespace: ${NAMESPACE:sit}
file-extension: yaml
spring:
cloud:
nacos:
config:
group: DEFAULT_GROUP
server-addr: ${nacos.server-addr}
username: ${nacos.username}
password: ${nacos.password}
namespace: ${nacos.namespace}
# 公共配置
shared-configs:
- data-id: common-storage.${nacos.file-extension}
refresh: true
- data-id: common-config.${nacos.file-extension}
refresh: true
- data-id: common-log.${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-isc.${nacos.file-extension}
refresh: true
- data-id: common-redis.${nacos.file-extension}
refresh: true
discovery:
server-addr: ${nacos.server-addr}
username: ${nacos.username}
password: ${nacos.password}
namespace: ${nacos.namespace}
config:
activate:
on-profile: sit
spring:
application:
name: arch-system
main:
# 解决升级 Spring Boot 2.6后,因循环引用导致启动时报错是否允许循环引用
allow-circular-references: true
servlet:
multipart:
max-file-size: 50MB
max-request-size: 100MB
profiles:
active: dev
<?xml version="1.0" encoding="UTF-8"?>
<configuration debug="false">
<!--定义日志文件的存储地址 -->
<property name="LOG_HOME" value="./logs"/>
<property name="LOG_NAME" value="arch-overall"/>
<!--从配置中心加载数据-->
<springProperty scope="context" name="applicationName" source="spring.application.name"/>
<springProperty scope="context" name="logstashDestination" source="logstash.destination"/>
<!--<property name="COLOR_PATTERN" value="%black(%contextName-) %red(%d{yyyy-MM-dd HH:mm:ss}) %green([%thread]) %highlight(%-5level) %boldMagenta( %replace(%caller{1}){'\t|Caller.{1}0|\r\n', ''})- %gray(%msg%xEx%n)" />-->
<!-- 控制台输出 -->
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<withJansi>true</withJansi>
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符 -->
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %highlight(%-5level) %cyan(%logger{50}:%L) - %msg%n</pattern>
</encoder>
</appender>
<!-- 按照每天生成日志文件INFO -->
<appender name="INFO_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!-- 正在记录的日志文件的路径及文件名 -->
<file>${LOG_HOME}/${LOG_NAME}_info.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!--日志文件输出的文件名 -->
<FileNamePattern>${LOG_HOME}/${LOG_NAME}_info.%d{yyyy-MM-dd}.%i.log</FileNamePattern>
<maxHistory>30</maxHistory>
<timeBasedFileNamingAndTriggeringPolicy
class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>100MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy>
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符 -->
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50}:%L - %msg%n</pattern>
<charset>UTF-8</charset>
</encoder>
</appender>
<!-- 按照每天生成日志文件ERROR -->
<appender name="ERROR_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!-- 正在记录的日志文件的路径及文件名 -->
<file>${LOG_HOME}/${LOG_NAME}_error.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<FileNamePattern>${LOG_HOME}/${LOG_NAME}_error.%d{yyyy-MM-dd}.log</FileNamePattern>
<MaxHistory>30</MaxHistory>
</rollingPolicy>
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{50}:%L - %msg%n</pattern>
<charset>UTF-8</charset>
</encoder>
<filter class="ch.qos.logback.classic.filter.LevelFilter"><!-- 只打印错误日志 -->
<level>ERROR</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
</appender>
<!--nacos 心跳 INFO 屏蔽-->
<logger name="com.alibaba.nacos" level="OFF">
<appender-ref ref="ERROR_FILE"/>
</logger>
<!--myibatis log configure-->
<logger name="com.apache.ibatis" level="TRACE"/>
<logger name="java.sql.Connection" level="DEBUG"/>
<logger name="java.sql.Statement" level="DEBUG"/>
<logger name="java.sql.PreparedStatement" level="DEBUG"/>
<logger name="com.xxl.job.core" level="DEBUG"/>
<logger name="org.apache.http.impl.conn" level="INFO"/>
<logger name="springfox.documentation" level="INFO" />
<logger name="org.springframework" level="INFO" />
<logger name="com.baomidou.mybatisplus" level="INFO" />
<!-- 本地环境 -->
<springProfile name="local">
<root level="DEBUG">
<appender-ref ref="STDOUT"/>
<appender-ref ref="INFO_FILE"/>
<appender-ref ref="ERROR_FILE"/>
</root>
</springProfile>
<!-- 其它环境 -->
<springProfile name="dev,test,stage,prod,sit,uat,default">
<root level="DEBUG">
<appender-ref ref="STDOUT"/>
<appender-ref ref="INFO_FILE"/>
<appender-ref ref="ERROR_FILE"/>
</root>
</springProfile>
</configuration>
\ 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.system.mapper.AppInfoMapper">
<resultMap id="BaseResultMap" type="org.arch.common.modules.archsysytem.vo.AppInfoVO">
<!--@mbg.generated-->
<!--@Table app_info-->
<id column="app_id" jdbcType="BIGINT" property="appId"/>
<result column="app_code" jdbcType="VARCHAR" property="appCode"/>
<result column="app_name" jdbcType="VARCHAR" property="appName"/>
<result column="online_date" jdbcType="DATE" property="onlineDate"/>
<result column="project_name" jdbcType="VARCHAR" property="projectName"/>
<result column="manage_org_id" jdbcType="BIGINT" property="manageOrgId"/>
<result column="manage_org_name" jdbcType="VARCHAR" property="manageOrgName"/>
<result column="manage_dept_id" jdbcType="BIGINT" property="manageDeptId"/>
<result column="manage_dept_name" jdbcType="VARCHAR" property="manageDeptName"/>
<result column="build_type" jdbcType="TINYINT" property="buildType"/>
<result column="build_org" jdbcType="TINYINT" property="buildOrg"/>
<result column="build_org_name" jdbcType="VARCHAR" property="buildOrgName"/>
<result column="project_manager" jdbcType="VARCHAR" property="projectManager"/>
<result column="create_man" jdbcType="BIGINT" property="createMan"/>
<result column="create_time" jdbcType="TIMESTAMP" property="createTime"/>
<result column="orign_project_id" jdbcType="BIGINT" property="orignProjectId"/>
<result column="relation_app_id" jdbcType="BIGINT" property="relationAppId"/>
<result column="del_flag" jdbcType="TINYINT" property="delFlag"/>
<result column="last_update_time" jdbcType="TIMESTAMP" property="lastUpdateTime"/>
<result column="last_update_man" jdbcType="BIGINT" property="lastUpdateMan"/>
<collection property="linkPrjList" ofType="org.arch.common.modules.archsysytem.vo.PrjInfoVO">
<id column="prj_id" property="prjId"/>
<result column="prj_name" property="prjName"/>
<result column="link_date" property="linkDate"/>
<result column="prj_plan_class" property="prjPlanClass"/>
</collection>
</resultMap>
<!--系统信息详情-->
<select id="info" resultMap="BaseResultMap">
select ai.app_id,
ai.app_code,
ai.app_name,
ai.online_date,
ai.project_name,
ai.manage_org_id,
ai.manage_org_name,
ai.manage_dept_id,
ai.manage_dept_name,
ai.build_type,
ai.build_org,
ai.build_org_name,
ai.project_manager,
ai.create_man,
ai.create_time,
ai.orign_project_id,
ai.relation_app_id,
ai.del_flag,
ai.last_update_time,
ai.last_update_man,
pi.prj_id,
pi.prj_name,
pi.create_time as link_date,
pi.prj_plan_class
from app_info ai
left join prj_info pi on (ai.app_id = pi.app_id)
where ai.app_id = #{appId}
</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.system.mapper.PrjInfoMapper">
<resultMap id="BaseResultMap" type="org.arch.common.modules.archsysytem.eneiity.PrjInfo">
<!--@mbg.generated-->
<!--@Table prj_info-->
<id column="prj_id" jdbcType="BIGINT" property="prjId"/>
<result column="prj_code" jdbcType="VARCHAR" property="prjCode"/>
<result column="prj_name" jdbcType="VARCHAR" property="prjName"/>
<result column="app_id" jdbcType="BIGINT" property="appId"/>
<result column="app_code" jdbcType="VARCHAR" property="appCode"/>
<result column="app_name" jdbcType="VARCHAR" property="appName"/>
<result column="project_manager" jdbcType="VARCHAR" property="projectManager"/>
<result column="cmpl_date" jdbcType="DATE" property="cmplDate"/>
<result column="prj_plan_class" jdbcType="BIGINT" property="prjPlanClass"/>
<result column="manage_org_id" jdbcType="BIGINT" property="manageOrgId"/>
<result column="manage_org_name" jdbcType="VARCHAR" property="manageOrgName"/>
<result column="manage_dept_id" jdbcType="BIGINT" property="manageDeptId"/>
<result column="manage_dept_name" jdbcType="VARCHAR" property="manageDeptName"/>
<result column="build_type" jdbcType="TINYINT" property="buildType"/>
<result column="build_org" jdbcType="TINYINT" property="buildOrg"/>
<result column="ago_prj_id" jdbcType="BIGINT" property="agoPrjId"/>
<result column="ago_prj_code" jdbcType="VARCHAR" property="agoPrjCode"/>
<result column="ago_prj_name" jdbcType="VARCHAR" property="agoPrjName"/>
<result column="create_man" jdbcType="BIGINT" property="createMan"/>
<result column="create_time" jdbcType="TIMESTAMP" property="createTime"/>
<result column="del_flag" jdbcType="TINYINT" property="delFlag"/>
<result column="last_update_time" jdbcType="TIMESTAMP" property="lastUpdateTime"/>
<result column="last_update_man" jdbcType="BIGINT" property="lastUpdateMan"/>
<result column="conformance_review" jdbcType="INTEGER" property="conformanceReview"/>
<result column="architectural_compliance" jdbcType="INTEGER" property="architecturalCompliance"/>
<result column="crux_tech_review" jdbcType="INTEGER" property="cruxTechReview"/>
<result column="func_depth_review" jdbcType="INTEGER" property="funcDepthReview"/>
<result column="data_depth_review" jdbcType="INTEGER" property="dataDepthReview"/>
</resultMap>
<!--项目分页数据-->
<select id="page" resultMap="BaseResultMap">
select pi.prj_id,
pi.prj_code,
pi.prj_name,
pi.app_id,
pi.app_code,
pi.app_name,
pi.project_manager,
pi.cmpl_date,
pi.prj_plan_class,
pi.manage_org_id,
so.org_name as manage_org_name,
pi.manage_dept_id,
so1.org_name as manage_dept_name,
pi.build_type,
pi.build_org,
pi.ago_prj_id,
pi.ago_prj_code,
pi.ago_prj_name,
pi.create_man,
pi.create_time,
pi.del_flag,
pi.last_update_time,
pi.last_update_man,
pi.conformance_review,
pi.architectural_compliance,
pi.crux_tech_review,
pi.func_depth_review,
pi.data_depth_review,
ai.project_manager
from prj_info pi
left join app_info ai on (pi.app_id = ai.app_id)
left join sys_org so on (pi.manage_org_id = so.org_id)
left join sys_org so1 on (pi.manage_dept_id = so1.org_id)
<where>
<if test="params.prjName != null and params.prjName != ''">
and pi.prj_name like concat('%', #{params.prjName}, '%')
</if>
<if test="params.appName != null and params.appName != ''">
and pi.app_name like concat('%', #{params.appName}, '%')
</if>
<if test="params.manageOrgId != null and params.manageOrgId != ''">
and pi.manage_org_id = #{params.manageOrgId}
</if>
<if test="params.manageDeptId != null and params.manageDeptId != ''">
and pi.manage_dept_id = #{params.manageDeptId}
</if>
<if test="param2.buildType != null">
and pi.build_type = #{param2.buildType}
</if>
<if test="params.prjIds != null and params.prjIds.size() != 0">
and pi.prj_id in
<foreach collection="params.prjIds" item="prjId" open="(" close=")" separator=",">
#{prjId}
</foreach>
</if>
and pi.del_flag = 0
</where>
order by pi.create_time desc
</select>
<!--根据ID查询项目详情-->
<select id="queryProjectInfo" resultType="org.arch.common.modules.archsysytem.vo.CockpitProjectInfoVO">
select pi.prj_id,
pi.prj_code,
pi.prj_name,
pi.app_id,
pi.app_code,
pi.app_name,
pi.project_manager,
pi.cmpl_date,
pi.prj_plan_class,
pi.manage_org_id,
so.org_name as manage_org_name,
pi.manage_dept_id,
so1.org_name as manage_dept_name,
pi.build_type,
pi.build_org,
pi.ago_prj_id,
pi.ago_prj_code,
pi.ago_prj_name
from prj_info pi
left join sys_org so on (pi.manage_org_id = so.org_id)
left join sys_org so1 on (pi.manage_dept_id = so1.org_id)
where pi.prj_id = #{prjId}
</select>
<!--涉及业务流程数量-->
<select id="businessProcessCount" resultType="java.lang.Integer">
select count(1)
from archi_asset_relation aar
left join archi_asset_info aai on aar.source_asset_id = aai.asset_id
left join archi_element ae on aai.archi_ele_id = ae.element_id
where ae.element_name = '业务流程'
and aar.archi_asset_type_id in (select avr.archi_views_detail_id
from archi_view_relation avr
where avr.prj_id = #{projectId})
</select>
<!--涉及业务活动数量-->
<select id="businessActivityCount" resultType="java.lang.Integer">
select count(1)
from archi_asset_relation aar
left join archi_asset_info aai on aar.source_asset_id = aai.asset_id
left join archi_element ae on aai.archi_ele_id = ae.element_id
where ae.element_name = '业务活动'
and aar.archi_asset_type_id in (select avr.archi_views_detail_id
from archi_view_relation avr
where avr.prj_id = #{projectId})
</select>
<!--涉及业务系统数量-->
<select id="businessSystemCount" resultType="java.lang.Integer">
select count(distinct aar.app_id)
from archi_view_relation aar
where prj_id = #{projectId}
</select>
</mapper>
\ No newline at end of file
......@@ -16,7 +16,7 @@
<module>framework-system-manage</module>
<module>framework-gateway</module>
<module>framework-base</module>
<module>framework-knowledge</module>
<!-- <module>framework-knowledge</module>-->
</modules>
<name>数字化架构管理工具</name>
<properties>
......
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!