2023年4月24日13:03:31

main
litao 3 years ago
parent 9614014e29
commit 91fea4084d
  1. 4
      lab-plugin/lab-workflow/src/main/java/org/springblade/plugin/operation/database/context/CustomSheetWriteHandler.java
  2. 160
      lab-plugin/lab-workflow/src/main/java/org/springblade/plugin/operation/database/controller/ProjectDatabaseController.java
  3. 96
      lab-plugin/lab-workflow/src/main/java/org/springblade/plugin/operation/database/entity/DataTable.java
  4. 36
      lab-plugin/lab-workflow/src/main/java/org/springblade/plugin/operation/database/entity/ModuleDatatable.java
  5. 24
      lab-plugin/lab-workflow/src/main/java/org/springblade/plugin/operation/database/entity/ProjectDatabase.java
  6. 24
      lab-plugin/lab-workflow/src/main/java/org/springblade/plugin/operation/database/excel/DatabaseExcel.java
  7. 22
      lab-plugin/lab-workflow/src/main/java/org/springblade/plugin/operation/database/mapper/DataTableMapper.java
  8. 58
      lab-plugin/lab-workflow/src/main/java/org/springblade/plugin/operation/database/mapper/DataTableMapper.xml
  9. 22
      lab-plugin/lab-workflow/src/main/java/org/springblade/plugin/operation/database/mapper/ModuleDatatableMapper.java
  10. 63
      lab-plugin/lab-workflow/src/main/java/org/springblade/plugin/operation/database/mapper/ModuleDatatableMapper.xml
  11. 4
      lab-plugin/lab-workflow/src/main/java/org/springblade/plugin/operation/database/mapper/ProjectDatabaseMapper.java
  12. 2
      lab-plugin/lab-workflow/src/main/java/org/springblade/plugin/operation/database/mapper/ProjectDatabaseMapper.xml
  13. 16
      lab-plugin/lab-workflow/src/main/java/org/springblade/plugin/operation/database/service/IDataBaseService.java
  14. 20
      lab-plugin/lab-workflow/src/main/java/org/springblade/plugin/operation/database/service/IDataTableService.java
  15. 19
      lab-plugin/lab-workflow/src/main/java/org/springblade/plugin/operation/database/service/IModuleDatatableService.java
  16. 19
      lab-plugin/lab-workflow/src/main/java/org/springblade/plugin/operation/database/service/IProjectDatabaseService.java
  17. 138
      lab-plugin/lab-workflow/src/main/java/org/springblade/plugin/operation/database/service/impl/DataBaseServiceImpl.java
  18. 31
      lab-plugin/lab-workflow/src/main/java/org/springblade/plugin/operation/database/service/impl/DataTableServiceImpl.java
  19. 31
      lab-plugin/lab-workflow/src/main/java/org/springblade/plugin/operation/database/service/impl/ModuleDatatableServiceImpl.java
  20. 183
      lab-plugin/lab-workflow/src/main/java/org/springblade/plugin/operation/database/service/impl/ProjectDatabaseServiceImpl.java
  21. 74
      lab-plugin/lab-workflow/src/main/java/org/springblade/plugin/operation/database/vo/DataBaseVO.java
  22. 303
      lab-plugin/lab-workflow/src/main/java/org/springblade/plugin/operation/system/controller/ProjectInfoController.java
  23. 9
      lab-plugin/lab-workflow/src/main/java/org/springblade/plugin/operation/task/controller/TaskInfoController.java
  24. 1
      lab-plugin/lab-workflow/src/main/java/org/springblade/plugin/operation/task/mapper/TaskInfoMapper.java
  25. 1
      lab-plugin/lab-workflow/src/main/java/org/springblade/plugin/operation/task/service/ITaskInfoService.java
  26. 3
      lab-plugin/lab-workflow/src/main/java/org/springblade/plugin/operation/task/service/impl/TaskInfoServiceImpl.java
  27. 3
      lab-plugin/lab-workflow/src/main/java/org/springblade/plugin/operation/workorder/entity/WorkOrder.java
  28. 84
      lab-plugin/lab-workflow/src/main/java/org/springblade/plugin/operation/workorder/service/impl/WorkOrderServiceImpl.java
  29. 6
      lab-plugin/lab-workflow/src/main/java/org/springblade/plugin/workbench/entity/AutoStartModel.java
  30. 75
      lab-plugin/lab-workflow/src/main/java/org/springblade/plugin/workbench/service/impl/AutoStartModelServiceImpl.java

@ -66,7 +66,7 @@ public class CustomSheetWriteHandler implements SheetWriteHandler {
deptNames.add(dept.getDeptName());
}
}
CellRangeAddressList cellRangeAddressList1 = new CellRangeAddressList(1, 100, 7, 7);
CellRangeAddressList cellRangeAddressList1 = new CellRangeAddressList(1, 100, 6, 6);
DataValidationHelper helper1 = writeSheetHolder.getSheet().getDataValidationHelper();
DataValidationConstraint constraint1 = helper1.createExplicitListConstraint(deptNames.stream().toArray(String[]::new));
DataValidation dataValidation1 = helper1.createValidation(constraint1, cellRangeAddressList1);
@ -79,7 +79,7 @@ public class CustomSheetWriteHandler implements SheetWriteHandler {
for (User user : userList) {
userNames.add(user.getName());
}
CellRangeAddressList cellRangeAddressList2 = new CellRangeAddressList(1, 100, 8, 8);
CellRangeAddressList cellRangeAddressList2 = new CellRangeAddressList(1, 100, 7, 7);
DataValidationHelper helper2 = writeSheetHolder.getSheet().getDataValidationHelper();
DataValidationConstraint constraint2 = helper2.createExplicitListConstraint(userNames.stream().toArray(String[]::new));
DataValidation dataValidation2 = helper2.createValidation(constraint2, cellRangeAddressList2);

@ -3,6 +3,8 @@ package org.springblade.plugin.operation.database.controller;
import com.alibaba.excel.EasyExcel;
import com.alibaba.nacos.common.utils.CollectionUtils;
import com.alibaba.nacos.common.utils.StringUtils;
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.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
@ -20,12 +22,16 @@ import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.Func;
import org.springblade.plugin.operation.database.context.CustomCellWriteHandler;
import org.springblade.plugin.operation.database.context.CustomSheetWriteHandler;
import org.springblade.plugin.operation.database.entity.DataBase;
import org.springblade.plugin.operation.database.entity.ModuleDatatable;
import org.springblade.plugin.operation.database.entity.ProjectDatabase;
import org.springblade.plugin.operation.database.entity.ProjectDatabasePo;
import org.springblade.plugin.operation.database.entity.ProjectDatabaseVo;
import org.springblade.plugin.operation.database.excel.DatabaseExcel;
import org.springblade.plugin.operation.database.excel.UploadReturn;
import org.springblade.plugin.operation.database.service.IDataBaseService;
import org.springblade.plugin.operation.database.service.IDataTableService;
import org.springblade.plugin.operation.database.vo.DataBaseVO;
import org.springblade.plugin.operation.database.service.IProjectDatabaseService;
import org.springblade.plugin.operation.database.service.IModuleDatatableService;
import org.springblade.plugin.operation.system.entity.ModuleInfo;
import org.springblade.plugin.operation.system.entity.ProjectInfo;
import org.springblade.system.entity.Dept;
import org.springblade.system.feign.ISysClient;
import org.springblade.system.user.entity.User;
@ -51,11 +57,11 @@ import java.util.*;
@AllArgsConstructor
@RequestMapping("/database")
@Api(value = "接口权限", tags = "接口权限")
public class DataBaseController extends BladeController {
public class ProjectDatabaseController extends BladeController {
private final IDataBaseService dataBaseService;
private final IProjectDatabaseService dataBaseService;
private final IDataTableService dataTableService;
private final IModuleDatatableService dataTableService;
private final ISysClient sysClient;
@ -66,13 +72,19 @@ public class DataBaseController extends BladeController {
*/
@ApiLog("数据运维-查看数据库列表")
@GetMapping("/list")
public R<IPage<DataBaseVO>> list(DataBase dataBase, Query query) {
IPage<DataBaseVO> pages = dataTableService.pageVO(Condition.getPage(query), dataBase);
List<DataBaseVO> dataTableList = pages.getRecords();
public R<IPage<ProjectDatabaseVo>> list(ProjectDatabase dataBase, Query query) {
IPage<ProjectDatabaseVo> pages = dataTableService.pageVO(Condition.getPage(query), dataBase);
List<ProjectDatabaseVo> dataTableList = pages.getRecords();
if (CollectionUtils.isNotEmpty(dataTableList)) {
for (DataBaseVO table : dataTableList) {
for (ProjectDatabaseVo table : dataTableList) {
table.setDeptName(sysClient.getDeptName(table.getDeptId()).getData());
table.setCompanyName(userClient.userInfoById(table.getCompany()).getData().getName());
if (StringUtils.isNotBlank(table.getDataBaseAlias())) {
table.setDatabaseProjectName(table.getDataBaseAlias() + "(" + table.getDatabaseProjectName() + ")");
}
if (StringUtils.isNotBlank(table.getDataTableAlias())) {
table.setDatatableModuleName(table.getDataTableAlias() + "(" + table.getDatatableModuleName() + ")");
}
}
pages.setRecords(dataTableList);
}
@ -101,8 +113,11 @@ public class DataBaseController extends BladeController {
@PostMapping("/save")
@ApiOperationSupport(order = 3)
@ApiOperation(value = "新增", notes = "传入dataScope")
public R save(@Valid @RequestBody DataBase dataBase) {
return R.status(dataBaseService.save(dataBase));
public R save(@Valid @RequestBody ProjectDatabasePo dataBase) {
if (dataBaseService.saveProAndMod(dataBase)) {
return R.status(true);
}
return R.success("数据重复,添加失败!");
}
/**
@ -111,7 +126,7 @@ public class DataBaseController extends BladeController {
@PostMapping("/update")
@ApiOperationSupport(order = 4)
@ApiOperation(value = "修改", notes = "传入dataScope")
public R update(@Valid @RequestBody DataBase dataBase) {
public R update(@Valid @RequestBody ProjectDatabase dataBase) {
return R.status(dataBaseService.updateById(dataBase));
}
@ -131,7 +146,7 @@ public class DataBaseController extends BladeController {
@ApiLog("数据运维-导入数据库Excel模板")
@PostMapping("/dataImport")
public R dataImport(MultipartFile file) {
return R.status(dataBaseService.dataImport(file));
return R.success(dataBaseService.dataImport(file));
}
/**
@ -144,15 +159,15 @@ public class DataBaseController extends BladeController {
DatabaseExcel excel = new DatabaseExcel();
excel.setDataBaseIp("127.0.0.1");
excel.setDataBasePort("1000");
excel.setDataBaseName("work_order");
excel.setDatabaseProjectName("work_order");
excel.setDataBaseAlias("工单数据库");
excel.setSystemName("工单系统");
excel.setSystemModuleName("数据运维");
excel.setDataTableName("t_task_info");
excel.setDatatableModuleName("t_task_info");
excel.setDataTableAlias("任务种类");
excels.add(excel);
// ExcelUtil.export(response, "数据库数据" + DateUtil.time(), "数据库数据", excels, DatabaseExcel.class);
String path = sysClient.getParamValue("data_base_excel_path").getData();
// String path = "D:\\360MoveData\\Users\\AAA\\Desktop\\ceshilujin\\";
String fileName = path + UUID.randomUUID().toString() + ".xlsx";
// 这里 需要指定写用哪个class去写,然后写到第一个sheet,名字为模板 然后文件流会自动关闭
EasyExcel.write(fileName, DatabaseExcel.class).registerWriteHandler(new CustomSheetWriteHandler())
@ -275,20 +290,31 @@ public class DataBaseController extends BladeController {
* 列表数据返回
*/
@GetMapping("/listData")
public R listData() {
public R listData(String databaseProName, String datatableModName) {
Map<String, Object> map = new HashMap<>();
// 数据库实例名集合
QueryWrapper<DataBase> wrapper = new QueryWrapper<>();
wrapper.select("DISTINCT data_base_name");
map.put("dataBaseNames", dataBaseService.list(wrapper));
// 数据库/系统名称集合
QueryWrapper<ProjectDatabase> wrapper = new QueryWrapper<>();
wrapper.select("DISTINCT database_project_name");
if (StringUtils.isNotBlank(databaseProName)) {
wrapper.like("database_project_name", databaseProName);
}
map.put("dataBaseProjectNames", dataBaseService.list(wrapper));
wrapper.clear();
// 数据表/系统模块集合
QueryWrapper<ModuleDatatable> wrapper1 = new QueryWrapper<>();
wrapper1.select("DISTINCT datatable_module_name");
if (StringUtils.isNotBlank(datatableModName)) {
wrapper1.like("datatable_module_name", datatableModName);
}
map.put("dataTableModuleNames", dataTableService.list(wrapper1));
// 运维公司集合
wrapper.select("DISTINCT company");
List<DataBase> dataBases = dataBaseService.list(wrapper);
List<ProjectDatabase> dataBases = dataBaseService.list(wrapper);
if (CollectionUtils.isNotEmpty(dataBases)) {
List<User> users = new ArrayList<>();
for (DataBase dataBase : dataBases) {
for (ProjectDatabase dataBase : dataBases) {
User user = userClient.userInfoById(dataBase.getCompany()).getData();
users.add(user);
}
@ -298,10 +324,10 @@ public class DataBaseController extends BladeController {
// 部门集合
wrapper.select("DISTINCT dept_id");
List<DataBase> depts = dataBaseService.list(wrapper);
List<ProjectDatabase> depts = dataBaseService.list(wrapper);
if (CollectionUtils.isNotEmpty(depts)) {
List<Dept> deptList = new ArrayList<>();
for (DataBase dataBase : depts) {
for (ProjectDatabase dataBase : depts) {
Dept dept = sysClient.getDept(dataBase.getDeptId()).getData();
deptList.add(dept);
}
@ -309,4 +335,84 @@ public class DataBaseController extends BladeController {
}
return R.data(map);
}
/**
* 组合数据库和系统数据
*/
@GetMapping("/projectAndDataBase")
public R taskAndDataBase(String id) {
// 数据库数据
LambdaQueryWrapper<ProjectDatabase> wrapper = new LambdaQueryWrapper<>();
wrapper.select(ProjectDatabase::getId, ProjectDatabase::getDatabaseProjectName, ProjectDatabase::getDataBaseIp);
wrapper.eq(ProjectDatabase::getCompany, id);
List<ProjectDatabase> dataBaseList = dataBaseService.list(wrapper);
if (CollectionUtils.isNotEmpty(dataBaseList)) {
for (ProjectDatabase dataBase : dataBaseList) {
if (StringUtils.isNotBlank(dataBase.getDataBaseIp())) {
dataBase.setDatabaseProjectName(dataBase.getDatabaseProjectName() + "(" + dataBase.getDataBaseIp() + ")");
}
}
}
// 系统名称数据
// QueryWrapper<ModuleInfo> queryWrapper = new QueryWrapper<>();
// queryWrapper.select("DISTINCT project_info_id");
// queryWrapper.eq("maintenance_dept_id", id);
// List<ModuleInfo> moduleInfoList = moduleInfoService.list(queryWrapper);
// if (CollectionUtils.isNotEmpty(moduleInfoList)) {
// for (ModuleInfo moduleInfo : moduleInfoList) {
// TaskAndDataBase taskAndDataBase = new TaskAndDataBase();
// taskAndDataBase.setId(moduleInfo.getProjectInfoId());
// taskAndDataBase.setName(projectInfoService.getById(moduleInfo.getProjectInfoId()).getProjectName());
// taskAndDataBase.setType(1);
// list.add(taskAndDataBase);
// }
// }
return R.data(dataBaseList);
}
/**
* 获取系统模块或数据表
*/
@GetMapping("/moduleAndDataTable")
public R moduleAndDataTable(String id) {
LambdaQueryWrapper<ModuleDatatable> wrapper = new LambdaQueryWrapper<>();
wrapper.select(ModuleDatatable::getDataTableAlias, ModuleDatatable::getDatatableModuleName, ModuleDatatable::getId);
wrapper.eq(ModuleDatatable::getProjectDatabaseId, id);
List<ModuleDatatable> dataTableList = dataTableService.list(wrapper);
if (CollectionUtils.isNotEmpty(dataTableList)) {
for (ModuleDatatable dataTable : dataTableList) {
if (StringUtils.isNotBlank(dataTable.getDataTableAlias())) {
dataTable.setDatatableModuleName(dataTable.getDataTableAlias() + "(" + dataTable.getDatatableModuleName() + ")");
}
}
}
return R.data(dataTableList);
}
/**
* 获取新增系统所需数据
*/
@GetMapping("/basicData")
public R allProject() {
Map<String, Object> map = new HashMap<>();
// 数据库/系统名称集合
// QueryWrapper<ProjectDatabase> wrapper = new QueryWrapper<>();
// wrapper.select("id,database_project_name");
map.put("dataBaseProjectNames", dataBaseService.list());
// 运维公司
List<User> users = userClient.listRolebyId("运维公司").getData();
if (CollectionUtils.isNotEmpty(users)) {
map.put("users", users);
}
// 分管部门
List<Dept> depts = sysClient.getDepts().getData();
if (CollectionUtils.isNotEmpty(depts)) {
map.put("depts", depts);
}
return R.data(map);
}
}

@ -1,96 +0,0 @@
package org.springblade.plugin.operation.database.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.springblade.core.tenant.mp.TenantEntity;
@Data
@TableName("t_data_table")
@EqualsAndHashCode(callSuper = true)
public class DataTable extends TenantEntity {
private static final long serialVersionUID = 1L;
/**
* 数据库id
*/
private Long dataBaseId;
/**
* 模块名称
*/
private String systemModuleName;
/**
* 表名称
*/
private String dataTableName;
/**
* 中文别名
*/
private String dataTableAlias;
/**
* 管理部门id
*/
@TableField(exist = false)
private Long deptId;
/**
* 管理部门
*/
@TableField(exist = false)
private String deptName;
/**
* 运维公司id
*/
@TableField(exist = false)
private Long company;
/**
* 运维公司
*/
@TableField(exist = false)
private String companyName;
/**
* 数据库名称
*/
@TableField(exist = false)
private String dataBaseName;
/**
* 数据库中文别名
*/
@TableField(exist = false)
private String dataBaseAlias;
/**
* 数据库类型
*/
@TableField(exist = false)
private Integer dataBaseType;
/**
* 数据库ip
*/
@TableField(exist = false)
private String dataBaseIp;
/**
* 数据库端口
*/
@TableField(exist = false)
private String dataBasePort;
/**
* 系统名称
*/
@TableField(exist = false)
private String systemName;
}

@ -0,0 +1,36 @@
package org.springblade.plugin.operation.database.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.springblade.core.tenant.mp.TenantEntity;
@Data
@TableName("t_module_datatable")
@EqualsAndHashCode(callSuper = true)
public class ModuleDatatable extends TenantEntity {
private static final long serialVersionUID = 1L;
/**
* 数据库id
*/
private Long projectDatabaseId;
/**
* 表名称
*/
private String datatableModuleName;
/**
* 中文别名
*/
private String dataTableAlias;
/**
* 模块名称先留着不给前端返回
*/
private String systemModuleName;
}

@ -1,21 +1,28 @@
package org.springblade.plugin.operation.database.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.springblade.core.tenant.mp.TenantEntity;
@Data
@TableName("t_data_base")
@TableName("t_project_database")
@EqualsAndHashCode(callSuper = true)
public class DataBase extends TenantEntity {
public class ProjectDatabase extends TenantEntity {
private static final long serialVersionUID = 1L;
/**
* 数据库名称
* 数据库/系统名称
*/
private String dataBaseName;
private String databaseProjectName;
/**
* 数据库/系统名称
*/
// @TableField(exist = false)
// private String datatableModuleName;
/**
* 数据库中文别名
@ -23,9 +30,9 @@ public class DataBase extends TenantEntity {
private String dataBaseAlias;
/**
* 数据库类型
* 类型
*/
private Integer dataBaseType;
private Integer type;
/**
* 数据库版本
@ -43,7 +50,7 @@ public class DataBase extends TenantEntity {
private String dataBasePort;
/**
* 系统名称
* 所属系统
*/
private String systemName;
@ -57,4 +64,7 @@ public class DataBase extends TenantEntity {
*/
private Long company;
@TableField(exist = false)
private String datatableModuleName;
}

@ -20,24 +20,24 @@ public class DatabaseExcel implements Serializable {
private String dataBasePort;
@ColumnWidth(20)
@ExcelProperty("数据库实例")
private String dataBaseName;
@ExcelProperty("数据库/系统名称")
private String databaseProjectName;
@ColumnWidth(20)
@ExcelProperty("数据库类型")
private String dataBaseType;
@ExcelProperty("类型")
private String type;
@ColumnWidth(20)
@ExcelProperty("数据库中文名")
@ExcelProperty("数据库/系统别名")
private String dataBaseAlias;
@ColumnWidth(20)
@ExcelProperty("系统名称")
@ExcelProperty("所属系统")
private String systemName;
@ColumnWidth(20)
@ExcelProperty("模块名称")
private String systemModuleName;
// @ColumnWidth(20)
// @ExcelProperty("模块名称")
// private String systemModuleName;
@ColumnWidth(20)
@ExcelProperty("管理部门")
@ -48,11 +48,11 @@ public class DatabaseExcel implements Serializable {
private String company;
@ColumnWidth(20)
@ExcelProperty("表名")
private String dataTableName;
@ExcelProperty("数据表/系统模块")
private String datatableModuleName;
@ColumnWidth(20)
@ExcelProperty("中文表别名")
@ExcelProperty("数据表/系统模块别名")
private String dataTableAlias;
}

@ -1,22 +0,0 @@
package org.springblade.plugin.operation.database.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param;
import org.springblade.plugin.operation.database.entity.DataBase;
import org.springblade.plugin.operation.database.entity.DataTable;
import org.springblade.plugin.operation.database.vo.DataBaseVO;
import java.util.List;
/**
* Mapper 接口
*
* @author BladeX
*/
public interface DataTableMapper extends BaseMapper<DataTable> {
List<DataBaseVO> page(@Param("dataBase")DataBase dataBase, @Param("current")long current, @Param("size")long size);
long dataCount(@Param("dataBase")DataBase dataBase);
}

@ -1,58 +0,0 @@
<?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.springblade.plugin.operation.database.mapper.DataTableMapper">
<select id="page" resultType="org.springblade.plugin.operation.database.vo.DataBaseVO">
select
b.data_base_ip,
b.data_base_port,
b.data_base_name,
b.data_base_type,
b.data_base_alias,
b.system_name,
t.system_module_name,
b.dept_id,
b.company,
t.data_table_name,
t.data_table_alias
from t_data_base b left join t_data_table t on b.id = t.data_base_id
where t.is_deleted = 0
<if test="dataBase.getDataBaseName!=null and dataBase.getDataBaseName != ''">
and b.data_base_name = #{dataBase.dataBaseName}
</if>
<if test="dataBase.getDataBaseType!=null">
and b.data_base_type = #{dataBase.dataBaseType}
</if>
<if test="dataBase.getDeptId!=null">
and b.dept_id = #{dataBase.deptId}
</if>
<if test="dataBase.getCompany!=null">
and b.company = #{dataBase.company}
</if>
order by t.create_time DESC
LIMIT #{current},#{size}
</select>
<select id="dataCount" resultType="long">
select
count(*)
from t_data_base b left join t_data_table t on b.id = t.data_base_id
where t.is_deleted = 0
<if test="dataBase.getDataBaseName!=null and dataBase.getDataBaseName != ''">
and b.data_base_name = #{dataBase.dataBaseName}
</if>
<if test="dataBase.getDataBaseType!=null">
and b.data_base_type = #{dataBase.dataBaseType}
</if>
<if test="dataBase.getDeptId!=null">
and b.dept_id = #{dataBase.deptId}
</if>
<if test="dataBase.getCompany!=null">
and b.company = #{dataBase.company}
</if>
</select>
</mapper>

@ -0,0 +1,22 @@
package org.springblade.plugin.operation.database.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param;
import org.springblade.plugin.operation.database.entity.ProjectDatabase;
import org.springblade.plugin.operation.database.entity.ModuleDatatable;
import org.springblade.plugin.operation.database.entity.ProjectDatabaseVo;
import java.util.List;
/**
* Mapper 接口
*
* @author BladeX
*/
public interface ModuleDatatableMapper extends BaseMapper<ModuleDatatable> {
List<ProjectDatabaseVo> page(@Param("dataBase") ProjectDatabase dataBase, @Param("current")long current, @Param("size")long size);
long dataCount(@Param("dataBase") ProjectDatabase dataBase);
}

@ -0,0 +1,63 @@
<?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.springblade.plugin.operation.database.mapper.ModuleDatatableMapper">
<select id="page" resultType="org.springblade.plugin.operation.database.entity.ProjectDatabaseVo">
select
b.data_base_ip,
b.data_base_port,
b.database_project_name,
b.type,
b.data_base_alias,
b.system_name,
b.dept_id,
b.company,
t.datatable_module_name,
t.data_table_alias
from t_project_database b left join t_module_datatable t on b.id = t.project_database_id
where t.is_deleted = 0
<if test="dataBase.getDatabaseProjectName!=null and dataBase.getDatabaseProjectName != ''">
and b.database_project_name = #{dataBase.databaseProjectName}
</if>
<if test="dataBase.getDatatableModuleName!=null and dataBase.getDatatableModuleName != ''">
and t.datatable_module_name = #{dataBase.datatableModuleName}
</if>
<if test="dataBase.getType!=null">
and b.type = #{dataBase.type}
</if>
<if test="dataBase.getDeptId!=null">
and b.dept_id = #{dataBase.deptId}
</if>
<if test="dataBase.getCompany!=null">
and b.company = #{dataBase.company}
</if>
order by t.create_time DESC
LIMIT #{current},#{size}
</select>
<select id="dataCount" resultType="long">
select
count(*)
from t_project_database b left join t_module_datatable t on b.id = t.project_database_id
where t.is_deleted = 0
<if test="dataBase.getDatabaseProjectName!=null and dataBase.getDatabaseProjectName != ''">
and b.database_project_name = #{dataBase.databaseProjectName}
</if>
<if test="dataBase.getDatatableModuleName!=null and dataBase.getDatatableModuleName != ''">
and t.datatable_module_name = #{dataBase.datatableModuleName}
</if>
<if test="dataBase.getType!=null">
and b.type = #{dataBase.type}
</if>
<if test="dataBase.getDeptId!=null">
and b.dept_id = #{dataBase.deptId}
</if>
<if test="dataBase.getCompany!=null">
and b.company = #{dataBase.company}
</if>
</select>
</mapper>

@ -2,13 +2,13 @@
package org.springblade.plugin.operation.database.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.springblade.plugin.operation.database.entity.DataBase;
import org.springblade.plugin.operation.database.entity.ProjectDatabase;
/**
* Mapper 接口
*
* @author BladeX
*/
public interface DataBaseMapper extends BaseMapper<DataBase> {
public interface ProjectDatabaseMapper extends BaseMapper<ProjectDatabase> {
}

@ -1,5 +1,5 @@
<?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.springblade.plugin.operation.database.mapper.DataBaseMapper">
<mapper namespace="org.springblade.plugin.operation.database.mapper.ProjectDatabaseMapper">
</mapper>

@ -1,16 +0,0 @@
package org.springblade.plugin.operation.database.service;
import org.springblade.core.mp.base.BaseService;
import org.springblade.plugin.operation.database.entity.DataBase;
import org.springframework.web.multipart.MultipartFile;
/**
* 服务类
*
* @author BladeX
*/
public interface IDataBaseService extends BaseService<DataBase> {
boolean dataImport(MultipartFile file);
}

@ -1,20 +0,0 @@
package org.springblade.plugin.operation.database.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.springblade.core.mp.base.BaseService;
import org.springblade.core.mp.support.Query;
import org.springblade.plugin.operation.database.entity.DataBase;
import org.springblade.plugin.operation.database.entity.DataTable;
import org.springblade.plugin.operation.database.vo.DataBaseVO;
/**
* 服务类
*
*
* @author BladeX
*/
public interface IDataTableService extends BaseService<DataTable> {
IPage<DataBaseVO> pageVO(IPage<DataBaseVO> page, DataBase dataBase);
}

@ -0,0 +1,19 @@
package org.springblade.plugin.operation.database.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.springblade.core.mp.base.BaseService;
import org.springblade.plugin.operation.database.entity.ProjectDatabase;
import org.springblade.plugin.operation.database.entity.ModuleDatatable;
import org.springblade.plugin.operation.database.entity.ProjectDatabaseVo;
/**
* 服务类
*
*
* @author BladeX
*/
public interface IModuleDatatableService extends BaseService<ModuleDatatable> {
IPage<ProjectDatabaseVo> pageVO(IPage<ProjectDatabaseVo> page, ProjectDatabase dataBase);
}

@ -0,0 +1,19 @@
package org.springblade.plugin.operation.database.service;
import org.springblade.core.mp.base.BaseService;
import org.springblade.plugin.operation.database.entity.ProjectDatabase;
import org.springblade.plugin.operation.database.entity.ProjectDatabasePo;
import org.springframework.web.multipart.MultipartFile;
/**
* 服务类
*
* @author BladeX
*/
public interface IProjectDatabaseService extends BaseService<ProjectDatabase> {
String dataImport(MultipartFile file);
boolean saveProAndMod(ProjectDatabasePo dataBase) ;
}

@ -1,138 +0,0 @@
package org.springblade.plugin.operation.database.service.impl;
import com.alibaba.nacos.common.utils.CollectionUtils;
import com.alibaba.nacos.common.utils.StringUtils;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import lombok.AllArgsConstructor;
import org.springblade.core.excel.util.ExcelUtil;
import org.springblade.core.mp.base.BaseServiceImpl;
import org.springblade.core.secure.utils.AuthUtil;
import org.springblade.core.tool.utils.BeanUtil;
import org.springblade.plugin.operation.database.entity.DataBase;
import org.springblade.plugin.operation.database.entity.DataTable;
import org.springblade.plugin.operation.database.excel.DatabaseExcel;
import org.springblade.plugin.operation.database.mapper.DataBaseMapper;
import org.springblade.plugin.operation.database.service.IDataBaseService;
import org.springblade.plugin.operation.database.service.IDataTableService;
import org.springblade.system.cache.DictBizCache;
import org.springblade.system.feign.ISysClient;
import org.springblade.system.user.entity.User;
import org.springblade.system.user.feign.IUserClient;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile;
import java.util.List;
/**
* 服务实现类
* @author BladeX
*/
@Service
@AllArgsConstructor
public class DataBaseServiceImpl extends BaseServiceImpl<DataBaseMapper, DataBase> implements IDataBaseService {
private final IDataTableService dataTableService;
private final ISysClient sysClient;
private final IUserClient userClient;
@Override
@Transactional(rollbackFor = Exception.class)
public boolean dataImport(MultipartFile file) {
List<DatabaseExcel> excelList = ExcelUtil.read(file, DatabaseExcel.class);
if (CollectionUtils.isNotEmpty(excelList)) {
// List<DataTable> dataTableList = new ArrayList<>();
for (DatabaseExcel item : excelList) {
// 如果数据库类型不存在,跳过这条数据
if (StringUtils.isBlank(DictBizCache.getKey("database_type", item.getDataBaseType()))) {
continue;
}
Integer databaseType = Integer.parseInt(DictBizCache.getKey("database_type", item.getDataBaseType()));
LambdaQueryWrapper<DataBase> wrapper = new LambdaQueryWrapper<>();
wrapper.select(DataBase::getId);
wrapper.eq(DataBase::getDataBaseName, item.getDataBaseName());
// wrapper.eq(DataBase::getDataBaseType, databaseType);
wrapper.eq(DataBase::getDataBaseIp, item.getDataBaseIp());
wrapper.eq(DataBase::getDataBasePort,item.getDataBasePort());
DataBase base = getOne(wrapper);
if (base == null) {
// 数据库
DataBase dataBase = BeanUtil.copy(item, DataBase.class);
String data = sysClient.getDeptIds(AuthUtil.getTenantId(), item.getDeptId()).getData();
User user = userClient.userInfoByName(AuthUtil.getTenantId(), item.getCompany()).getData();
dataBase.setDataBaseType(databaseType);
dataBase.setDeptId(Long.parseLong(data));
dataBase.setCompany(user.getId());
save(dataBase);
// 数据表
DataTable dataTable = BeanUtil.copy(item, DataTable.class);
dataTable.setDataBaseId(dataBase.getId());
// dataTableList.add(dataTable);
dataTableService.save(dataTable);
} else {
LambdaQueryWrapper<DataTable> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(DataTable::getDataBaseId, base.getId());
queryWrapper.eq(DataTable::getDataTableName, item.getDataTableName());
int count = dataTableService.count(queryWrapper);
if (count <= 0) {
// 数据表
DataTable dataTable = BeanUtil.copy(item, DataTable.class);
dataTable.setDataBaseId(base.getId());
dataTableService.save(dataTable);
// dataTableList.add(dataTable);
}
}
}
// excelList.forEach(item -> {
// String key = DictBizCache.getKey("database_type", item.getDataBaseType());
// if (StringUtils.isBlank(key)) {
//
// }
// Integer databaseType = Integer.parseInt(DictBizCache.getKey("database_type", item.getDataBaseType()));
// LambdaQueryWrapper<DataBase> wrapper = new LambdaQueryWrapper<>();
// wrapper.select(DataBase::getId);
// wrapper.eq(DataBase::getDataBaseName, item.getDataBaseName());
//// wrapper.eq(DataBase::getDataBaseType, databaseType);
// wrapper.eq(DataBase::getDataBaseIp, item.getDataBaseIp());
// wrapper.eq(DataBase::getDataBasePort,item.getDataBasePort());
// DataBase base = getOne(wrapper);
// if (base == null) {
// // 数据库
// DataBase dataBase = BeanUtil.copy(item, DataBase.class);
// String data = sysClient.getDeptIds(AuthUtil.getTenantId(), item.getDeptId()).getData();
// User user = userClient.userInfoByName(AuthUtil.getTenantId(), item.getCompany()).getData();
// dataBase.setDataBaseType(databaseType);
// dataBase.setDeptId(Long.parseLong(data));
// dataBase.setCompany(user.getId());
// save(dataBase);
//
// // 数据表
// DataTable dataTable = BeanUtil.copy(item, DataTable.class);
// dataTable.setDataBaseId(dataBase.getId());
//// dataTableList.add(dataTable);
// dataTableService.save(dataTable);
// } else {
// LambdaQueryWrapper<DataTable> queryWrapper = new LambdaQueryWrapper<>();
// queryWrapper.eq(DataTable::getDataBaseId, base.getId());
// queryWrapper.eq(DataTable::getDataTableName, item.getDataTableName());
// int count = dataTableService.count(queryWrapper);
// if (count <= 0) {
// // 数据表
// DataTable dataTable = BeanUtil.copy(item, DataTable.class);
// dataTable.setDataBaseId(base.getId());
// dataTableService.save(dataTable);
//// dataTableList.add(dataTable);
// }
// }
// });
// return dataTableService.saveBatch(dataTableList);
return true;
}
return false;
}
}

@ -1,31 +0,0 @@
package org.springblade.plugin.operation.database.service.impl;
import com.baomidou.mybatisplus.core.metadata.IPage;
import lombok.AllArgsConstructor;
import org.springblade.core.mp.base.BaseServiceImpl;
import org.springblade.plugin.operation.database.entity.DataBase;
import org.springblade.plugin.operation.database.entity.DataTable;
import org.springblade.plugin.operation.database.mapper.DataTableMapper;
import org.springblade.plugin.operation.database.service.IDataTableService;
import org.springblade.plugin.operation.database.vo.DataBaseVO;
import org.springframework.stereotype.Service;
/**
* 服务实现类
*
* @author BladeX
*/
@Service
@AllArgsConstructor
public class DataTableServiceImpl extends BaseServiceImpl<DataTableMapper, DataTable> implements IDataTableService {
private final DataTableMapper dataTableMapper;
@Override
public IPage<DataBaseVO> pageVO(IPage<DataBaseVO> page, DataBase dataBase) {
page.setTotal(dataTableMapper.dataCount(dataBase));
return page.setRecords(dataTableMapper.page(dataBase, (page.getCurrent() - 1) * page.getSize(), page.getSize()));
}
}

@ -0,0 +1,31 @@
package org.springblade.plugin.operation.database.service.impl;
import com.baomidou.mybatisplus.core.metadata.IPage;
import lombok.AllArgsConstructor;
import org.springblade.core.mp.base.BaseServiceImpl;
import org.springblade.plugin.operation.database.entity.ProjectDatabase;
import org.springblade.plugin.operation.database.entity.ModuleDatatable;
import org.springblade.plugin.operation.database.entity.ProjectDatabaseVo;
import org.springblade.plugin.operation.database.mapper.ModuleDatatableMapper;
import org.springblade.plugin.operation.database.service.IModuleDatatableService;
import org.springframework.stereotype.Service;
/**
* 服务实现类
*
* @author BladeX
*/
@Service
@AllArgsConstructor
public class ModuleDatatableServiceImpl extends BaseServiceImpl<ModuleDatatableMapper, ModuleDatatable> implements IModuleDatatableService {
private final ModuleDatatableMapper moduleDatatableMapper;
@Override
public IPage<ProjectDatabaseVo> pageVO(IPage<ProjectDatabaseVo> page, ProjectDatabase dataBase) {
page.setTotal(moduleDatatableMapper.dataCount(dataBase));
return page.setRecords(moduleDatatableMapper.page(dataBase, (page.getCurrent() - 1) * page.getSize(), page.getSize()));
}
}

@ -0,0 +1,183 @@
package org.springblade.plugin.operation.database.service.impl;
import com.alibaba.nacos.common.utils.CollectionUtils;
import com.alibaba.nacos.common.utils.StringUtils;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import lombok.AllArgsConstructor;
import org.springblade.core.excel.util.ExcelUtil;
import org.springblade.core.mp.base.BaseServiceImpl;
import org.springblade.core.secure.utils.AuthUtil;
import org.springblade.core.tool.utils.BeanUtil;
import org.springblade.plugin.operation.database.entity.ProjectDatabase;
import org.springblade.plugin.operation.database.entity.ModuleDatatable;
import org.springblade.plugin.operation.database.entity.ProjectDatabasePo;
import org.springblade.plugin.operation.database.excel.DatabaseExcel;
import org.springblade.plugin.operation.database.mapper.ProjectDatabaseMapper;
import org.springblade.plugin.operation.database.service.IProjectDatabaseService;
import org.springblade.plugin.operation.database.service.IModuleDatatableService;
import org.springblade.system.cache.DictBizCache;
import org.springblade.system.feign.ISysClient;
import org.springblade.system.user.entity.User;
import org.springblade.system.user.feign.IUserClient;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile;
import java.util.ArrayList;
import java.util.List;
/**
* 服务实现类
*
* @author BladeX
*/
@Service
@AllArgsConstructor
public class ProjectDatabaseServiceImpl extends BaseServiceImpl<ProjectDatabaseMapper, ProjectDatabase> implements IProjectDatabaseService {
private final IModuleDatatableService dataTableService;
private final ISysClient sysClient;
private final IUserClient userClient;
@Override
@Transactional(rollbackFor = Exception.class)
public String dataImport(MultipartFile file) {
List<DatabaseExcel> excelList = ExcelUtil.read(file, DatabaseExcel.class);
int total = excelList.size();
int success = 0;
int lose = 0;
if (CollectionUtils.isNotEmpty(excelList)) {
for (DatabaseExcel item : excelList) {
// 如果类型不存在,跳过这条数据
if (StringUtils.isBlank(DictBizCache.getKey("database_type", item.getType())) ||
StringUtils.isBlank(item.getDatabaseProjectName()) ||
StringUtils.isBlank(item.getDatatableModuleName()) ||
StringUtils.isBlank(item.getDeptId()) ||
StringUtils.isBlank(item.getCompany())) {
lose++;
continue;
}
Integer databaseType = Integer.parseInt(DictBizCache.getKey("database_type", item.getType()));
String data = sysClient.getDeptIds(AuthUtil.getTenantId(), item.getDeptId()).getData();
User user = userClient.userInfoByName(AuthUtil.getTenantId(), item.getCompany()).getData();
LambdaQueryWrapper<ProjectDatabase> wrapper = new LambdaQueryWrapper<>();
// wrapper.select(ProjectDatabase::getId);
wrapper.eq(ProjectDatabase::getDatabaseProjectName, item.getDatabaseProjectName());
// if (StringUtils.isNotBlank(item.getDataBaseIp())) {
// wrapper.eq(ProjectDatabase::getDataBaseIp, item.getDataBaseIp());
// }
ProjectDatabase base = getOne(wrapper);
if (base == null) {
// 数据库
ProjectDatabase dataBase = BeanUtil.copy(item, ProjectDatabase.class);
dataBase.setType(databaseType);
dataBase.setDeptId(Long.parseLong(data));
dataBase.setCompany(user.getId());
save(dataBase);
// 数据表
ModuleDatatable dataTable = BeanUtil.copy(item, ModuleDatatable.class);
dataTable.setProjectDatabaseId(dataBase.getId());
dataTableService.save(dataTable);
} else {
if (item.getDataBaseIp() == null) { item.setDataBaseIp(""); }
if (base.getDataBaseIp() == null) { base.setDataBaseIp(""); }
if (item.getDataBasePort() == null) { item.setDataBasePort(""); }
if (base.getDataBasePort() == null) { base.setDataBasePort(""); }
if (item.getDataBaseAlias() == null) { item.setDataBaseAlias(""); }
if (base.getDataBaseAlias() == null) { base.setDataBaseAlias(""); }
if (item.getSystemName() == null) { item.setSystemName(""); }
if (base.getSystemName() == null) { base.setSystemName(""); }
if (!item.getDataBaseIp().equals(base.getDataBaseIp()) ||
!item.getDataBasePort().equals(base.getDataBasePort()) ||
!item.getDataBaseAlias().equals(base.getDataBaseAlias()) ||
!item.getSystemName().equals(base.getSystemName()) ||
!item.getDatabaseProjectName().equals(base.getDatabaseProjectName()) ||
!databaseType.equals(base.getType()) ||
!Long.valueOf(data).equals(base.getDeptId()) ||
!user.getId().equals(base.getCompany())
) {
lose++;
continue;
}
LambdaQueryWrapper<ModuleDatatable> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(ModuleDatatable::getProjectDatabaseId, base.getId());
queryWrapper.eq(ModuleDatatable::getDatatableModuleName, item.getDatatableModuleName());
int count = dataTableService.count(queryWrapper);
if (count <= 0) {
// 数据表
ModuleDatatable dataTable = BeanUtil.copy(item, ModuleDatatable.class);
dataTable.setProjectDatabaseId(base.getId());
dataTableService.save(dataTable);
} else {
success++;
}
}
}
return "共" + total + "条数据,导入成功" + (total - lose - success) + "条;导入失败" + lose + "条;数据重复" + success + "条!";
}
return "数据为空,无法导入!";
}
@Override
@Transactional(rollbackFor = Exception.class)
public boolean saveProAndMod(ProjectDatabasePo dataBase) {
// 条件查询数据库/系统数据
LambdaQueryWrapper<ProjectDatabase> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(ProjectDatabase::getDatabaseProjectName, dataBase.getDatabaseProjectName());
if (StringUtils.isNotBlank(dataBase.getDataBaseIp())) {
wrapper.eq(ProjectDatabase::getDataBaseIp, dataBase.getDataBaseIp());
}
ProjectDatabase database = getOne(wrapper);
// 创建数据表/模块对象集合
List<ModuleDatatable> moduleDatatableList = new ArrayList<>();
// 传过来的数据表/模块数据
List<ModuleDatatable> moduleDatatables = dataBase.getModuleDatatables();
LambdaQueryWrapper<ModuleDatatable> queryWrapper = new LambdaQueryWrapper<>();
if (database == null) {
save(dataBase);
if (CollectionUtils.isNotEmpty(moduleDatatables)) {
for (ModuleDatatable moduleDatatable : moduleDatatables) {
queryWrapper.eq(ModuleDatatable::getProjectDatabaseId, dataBase.getId());
queryWrapper.eq(ModuleDatatable::getDatatableModuleName, moduleDatatable.getDatatableModuleName());
int count = dataTableService.count(queryWrapper);
if (count == 0) {
moduleDatatable.setProjectDatabaseId(dataBase.getId());
moduleDatatableList.add(moduleDatatable);
}
queryWrapper.clear();
}
}
} else {
if (CollectionUtils.isNotEmpty(moduleDatatables)) {
for (ModuleDatatable moduleDatatable : moduleDatatables) {
queryWrapper.eq(ModuleDatatable::getProjectDatabaseId, database.getId());
queryWrapper.eq(ModuleDatatable::getDatatableModuleName, moduleDatatable.getDatatableModuleName());
int count = dataTableService.count(queryWrapper);
if (count == 0) {
moduleDatatable.setProjectDatabaseId(database.getId());
moduleDatatableList.add(moduleDatatable);
}
queryWrapper.clear();
}
}
}
if (CollectionUtils.isEmpty(moduleDatatableList)) {
return false;
}
return dataTableService.saveBatch(moduleDatatableList);
}
}

@ -1,74 +0,0 @@
package org.springblade.plugin.operation.database.vo;
import lombok.Data;
@Data
public class DataBaseVO {
private static final long serialVersionUID = 1L;
/**
* 模块名称
*/
private String systemModuleName;
/**
* 表名称
*/
private String dataTableName;
/**
* 中文别名
*/
private String dataTableAlias;
/**
* 管理部门
*/
private String deptName;
/**
* 运维公司
*/
private String companyName;
/**
* 管理部门id
*/
private Long deptId;
/**
* 运维公司id
*/
private Long company;
/**
* 数据库名称
*/
private String dataBaseName;
/**
* 数据库中文别名
*/
private String dataBaseAlias;
/**
* 数据库类型
*/
private Integer dataBaseType;
/**
* 数据库ip
*/
private String dataBaseIp;
/**
* 数据库端口
*/
private String dataBasePort;
/**
* 系统名称
*/
private String systemName;
}

@ -2,6 +2,7 @@
package org.springblade.plugin.operation.system.controller;
import com.alibaba.nacos.common.utils.CollectionUtils;
import com.alibaba.nacos.common.utils.StringUtils;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
@ -11,36 +12,28 @@ import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import lombok.AllArgsConstructor;
import org.springblade.core.boot.ctrl.BladeController;
import org.springblade.core.cache.utils.CacheUtil;
import org.springblade.core.mp.support.Condition;
import org.springblade.core.mp.support.Query;
import org.springblade.core.tenant.annotation.NonDS;
import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.Func;
import org.springblade.plugin.operation.database.entity.DataBase;
import org.springblade.plugin.operation.database.entity.DataTable;
import org.springblade.plugin.operation.database.service.IDataBaseService;
import org.springblade.plugin.operation.database.service.IDataTableService;
import org.springblade.plugin.operation.database.entity.ProjectDatabase;
import org.springblade.plugin.operation.database.entity.ModuleDatatable;
import org.springblade.plugin.operation.database.service.IProjectDatabaseService;
import org.springblade.plugin.operation.database.service.IModuleDatatableService;
import org.springblade.plugin.operation.system.entity.ModuleInfo;
import org.springblade.plugin.operation.system.entity.ProjectInfo;
import org.springblade.plugin.operation.system.service.IModuleInfoService;
import org.springblade.plugin.operation.system.service.IProjectInfoService;
import org.springblade.plugin.operation.task.entity.TaskAndDataBase;
import org.springblade.plugin.operation.task.entity.TaskInfo;
import org.springblade.plugin.operation.task.service.ITaskInfoService;
import org.springframework.web.bind.annotation.*;
import javax.validation.Valid;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import static org.springblade.core.cache.constant.CacheConstant.SYS_CACHE;
/**
*
*
*/
@NonDS
@ -50,151 +43,143 @@ import static org.springblade.core.cache.constant.CacheConstant.SYS_CACHE;
@Api(value = "接口权限", tags = "接口权限")
public class ProjectInfoController extends BladeController {
private final IProjectInfoService projectInfoService;
private final IDataBaseService dataBaseService;
private final IModuleInfoService moduleInfoService;
private final IDataTableService dataTableService;
/**
* 详情
*/
@GetMapping("/detail")
@ApiOperationSupport(order = 1)
@ApiOperation(value = "详情", notes = "传入dataScope")
public R<ProjectInfo> detail(ProjectInfo projectInfo) {
ProjectInfo detail = projectInfoService.getOne(Condition.getQueryWrapper(projectInfo));
return R.data(detail);
}
/**
* 分页
*/
@GetMapping("/list")
@ApiOperationSupport(order = 2)
@ApiOperation(value = "分页", notes = "传入dataScope")
public R<IPage<ProjectInfo>> list(ProjectInfo projectInfo, Query query) {
IPage<ProjectInfo> pages = projectInfoService.page(Condition.getPage(query), Condition.getQueryWrapper(projectInfo));
return R.data(pages);
}
/**
* 新增
*/
@PostMapping("/save")
@ApiOperationSupport(order = 3)
@ApiOperation(value = "新增", notes = "传入dataScope")
public R save(@Valid @RequestBody ProjectInfo projectInfo) {
return R.status(projectInfoService.save(projectInfo));
}
/**
* 修改
*/
@PostMapping("/update")
@ApiOperationSupport(order = 4)
@ApiOperation(value = "修改", notes = "传入dataScope")
public R update(@Valid @RequestBody ProjectInfo projectInfo) {
return R.status(projectInfoService.updateById(projectInfo));
}
/**
* 新增或修改
*/
@PostMapping("/submit")
@ApiOperationSupport(order = 5)
@ApiOperation(value = "新增或修改", notes = "传入dataScope")
public R submit(@Valid @RequestBody ProjectInfo projectInfo) {
return R.status(projectInfoService.saveOrUpdate(projectInfo));
}
/**
* 删除
*/
@PostMapping("/remove")
@ApiOperationSupport(order = 6)
@ApiOperation(value = "逻辑删除", notes = "传入ids")
public R remove(@ApiParam(value = "主键集合", required = true) @RequestParam String ids) {
return R.status(projectInfoService.deleteLogic(Func.toLongList(ids)));
}
/**
* 组合数据库和系统数据
*/
@GetMapping("/projectAndDataBase")
public R taskAndDataBase(String id) {
List<TaskAndDataBase> list = new ArrayList<>();
// 数据库数据
LambdaQueryWrapper<DataBase> wrapper = new LambdaQueryWrapper<>();
wrapper.select(DataBase::getId, DataBase::getDataBaseName, DataBase::getDataBaseIp);
wrapper.eq(DataBase::getCompany, id);
List<DataBase> dataBaseList = dataBaseService.list(wrapper);
if (CollectionUtils.isNotEmpty(dataBaseList)) {
for (DataBase dataBase : dataBaseList) {
TaskAndDataBase taskAndDataBase = new TaskAndDataBase();
taskAndDataBase.setId(dataBase.getId());
taskAndDataBase.setName(dataBase.getDataBaseName() + "(" + dataBase.getDataBaseIp() + ")");
taskAndDataBase.setType(2);
list.add(taskAndDataBase);
}
}
// 系统名称数据
QueryWrapper<ModuleInfo> queryWrapper = new QueryWrapper<>();
queryWrapper.select("DISTINCT project_info_id");
// queryWrapper.eq("project_info_id", id);
queryWrapper.eq("maintenance_dept_id", id);
List<ModuleInfo> moduleInfoList = moduleInfoService.list(queryWrapper);
if (CollectionUtils.isNotEmpty(moduleInfoList)) {
for (ModuleInfo moduleInfo : moduleInfoList) {
TaskAndDataBase taskAndDataBase = new TaskAndDataBase();
taskAndDataBase.setId(moduleInfo.getProjectInfoId());
taskAndDataBase.setName(projectInfoService.getById(moduleInfo.getProjectInfoId()).getProjectName());
taskAndDataBase.setType(1);
list.add(taskAndDataBase);
}
}
return R.data(list);
}
/**
* 获取系统模块或数据表
*/
@GetMapping("/moduleAndDataTable")
public R moduleAndDataTable(String id, Integer type) {
List<TaskAndDataBase> list = new ArrayList<>();
// 查模块信息
if (type == 1) {
LambdaQueryWrapper<ModuleInfo> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(ModuleInfo::getProjectInfoId, id);
List<ModuleInfo> moduleInfoList = moduleInfoService.list(wrapper);
if (CollectionUtils.isNotEmpty(moduleInfoList)) {
for (ModuleInfo moduleInfo : moduleInfoList) {
TaskAndDataBase taskAndDataBase = new TaskAndDataBase();
taskAndDataBase.setId(moduleInfo.getId());
taskAndDataBase.setName(moduleInfo.getModuleName());
list.add(taskAndDataBase);
}
}
return R.data(list);
}
// 查数据表信息
else {
LambdaQueryWrapper<DataTable> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(DataTable::getDataBaseId, id);
List<DataTable> dataTableList = dataTableService.list(wrapper);
if (CollectionUtils.isNotEmpty(dataTableList)) {
for (DataTable dataTable : dataTableList) {
TaskAndDataBase taskAndDataBase = new TaskAndDataBase();
taskAndDataBase.setId(dataTable.getId());
taskAndDataBase.setName(dataTable.getDataTableAlias() + "(" + dataTable.getDataTableName() + ")");
list.add(taskAndDataBase);
}
}
return R.data(list);
}
}
private final IProjectInfoService projectInfoService;
private final IProjectDatabaseService dataBaseService;
private final IModuleInfoService moduleInfoService;
private final IModuleDatatableService dataTableService;
/**
* 详情
*/
@GetMapping("/detail")
@ApiOperationSupport(order = 1)
@ApiOperation(value = "详情", notes = "传入dataScope")
public R<ProjectInfo> detail(ProjectInfo projectInfo) {
ProjectInfo detail = projectInfoService.getOne(Condition.getQueryWrapper(projectInfo));
return R.data(detail);
}
/**
* 分页
*/
@GetMapping("/list")
@ApiOperationSupport(order = 2)
@ApiOperation(value = "分页", notes = "传入dataScope")
public R<IPage<ProjectInfo>> list(ProjectInfo projectInfo, Query query) {
IPage<ProjectInfo> pages = projectInfoService.page(Condition.getPage(query), Condition.getQueryWrapper(projectInfo));
return R.data(pages);
}
/**
* 新增
*/
@PostMapping("/save")
@ApiOperationSupport(order = 3)
@ApiOperation(value = "新增", notes = "传入dataScope")
public R save(@Valid @RequestBody ProjectInfo projectInfo) {
return R.status(projectInfoService.save(projectInfo));
}
/**
* 修改
*/
@PostMapping("/update")
@ApiOperationSupport(order = 4)
@ApiOperation(value = "修改", notes = "传入dataScope")
public R update(@Valid @RequestBody ProjectInfo projectInfo) {
return R.status(projectInfoService.updateById(projectInfo));
}
/**
* 新增或修改
*/
@PostMapping("/submit")
@ApiOperationSupport(order = 5)
@ApiOperation(value = "新增或修改", notes = "传入dataScope")
public R submit(@Valid @RequestBody ProjectInfo projectInfo) {
return R.status(projectInfoService.saveOrUpdate(projectInfo));
}
/**
* 删除
*/
@PostMapping("/remove")
@ApiOperationSupport(order = 6)
@ApiOperation(value = "逻辑删除", notes = "传入ids")
public R remove(@ApiParam(value = "主键集合", required = true) @RequestParam String ids) {
return R.status(projectInfoService.deleteLogic(Func.toLongList(ids)));
}
/**
* 组合数据库和系统数据
*/
@GetMapping("/projectAndDataBase")
public R taskAndDataBase(String id) {
// 数据库数据
LambdaQueryWrapper<ProjectDatabase> wrapper = new LambdaQueryWrapper<>();
wrapper.select(ProjectDatabase::getId, ProjectDatabase::getDatabaseProjectName, ProjectDatabase::getDataBaseIp);
wrapper.eq(ProjectDatabase::getCompany, id);
List<ProjectDatabase> dataBaseList = dataBaseService.list(wrapper);
if (CollectionUtils.isNotEmpty(dataBaseList)) {
for (ProjectDatabase dataBase : dataBaseList) {
if (StringUtils.isNotBlank(dataBase.getDataBaseIp())) {
dataBase.setDatabaseProjectName(dataBase.getDatabaseProjectName() + "(" + dataBase.getDataBaseIp() + ")");
}
}
}
// 系统名称数据
// QueryWrapper<ModuleInfo> queryWrapper = new QueryWrapper<>();
// queryWrapper.select("DISTINCT project_info_id");
// queryWrapper.eq("maintenance_dept_id", id);
// List<ModuleInfo> moduleInfoList = moduleInfoService.list(queryWrapper);
// if (CollectionUtils.isNotEmpty(moduleInfoList)) {
// for (ModuleInfo moduleInfo : moduleInfoList) {
// TaskAndDataBase taskAndDataBase = new TaskAndDataBase();
// taskAndDataBase.setId(moduleInfo.getProjectInfoId());
// taskAndDataBase.setName(projectInfoService.getById(moduleInfo.getProjectInfoId()).getProjectName());
// taskAndDataBase.setType(1);
// list.add(taskAndDataBase);
// }
// }
return R.data(dataBaseList);
}
/**
* 获取系统模块或数据表
*/
@GetMapping("/moduleAndDataTable")
public R moduleAndDataTable(String id, Integer type) {
// 查模块信息
// if (type == 1) {
// LambdaQueryWrapper<ModuleInfo> wrapper = new LambdaQueryWrapper<>();
// wrapper.eq(ModuleInfo::getProjectInfoId, id);
// List<ModuleInfo> moduleInfoList = moduleInfoService.list(wrapper);
// if (CollectionUtils.isNotEmpty(moduleInfoList)) {
// for (ModuleInfo moduleInfo : moduleInfoList) {
// TaskAndDataBase taskAndDataBase = new TaskAndDataBase();
// taskAndDataBase.setId(moduleInfo.getId());
// taskAndDataBase.setName(moduleInfo.getModuleName());
// list.add(taskAndDataBase);
// }
// }
// return R.data(list);
// }
//
// // 查数据表信息
LambdaQueryWrapper<ModuleDatatable> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(ModuleDatatable::getProjectDatabaseId, id);
List<ModuleDatatable> dataTableList = dataTableService.list(wrapper);
if (CollectionUtils.isNotEmpty(dataTableList)) {
for (ModuleDatatable dataTable : dataTableList) {
if (StringUtils.isNotBlank(dataTable.getDataTableAlias())) {
dataTable.setDatatableModuleName(dataTable.getDataTableAlias() + "(" + dataTable.getDatatableModuleName() + ")");
}
}
}
return R.data(dataTableList);
}
}

@ -10,6 +10,7 @@ import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import io.swagger.models.auth.In;
import lombok.AllArgsConstructor;
import org.springblade.core.boot.ctrl.BladeController;
@ -142,11 +143,11 @@ public class TaskInfoController extends BladeController {
* 任务种类去重返回
*/
@GetMapping("/taskTypeData")
public R taskTypeData(String parentId) {
public R taskTypeData(String parentId, Integer isDetail) {
QueryWrapper<TaskInfo> wrapper = new QueryWrapper<>();
if (StringUtils.isNotBlank(parentId)) {
wrapper.eq("task_parent_id", parentId);
if (!"运维公司".equals(AuthUtil.getUser().getRoleName())) {
if (!"运维公司".equals(AuthUtil.getUser().getRoleName()) && isDetail == 0) {
wrapper.ne("task_level", 1625035000825049090L);
}
} else {
@ -159,9 +160,9 @@ public class TaskInfoController extends BladeController {
* 任务等级
*/
@GetMapping("/taskLevel")
public R taskParent() {
public R taskParent(Integer isDetail) {
List<DictBiz> taskParent = DictBizCache.getList("task_level");
if ("运维公司".equals(AuthUtil.getUser().getRoleName())) {
if ("运维公司".equals(AuthUtil.getUser().getRoleName()) || isDetail == 1) {
return R.data(taskParent);
}
List<DictBiz> taskParents = new ArrayList<>();

@ -2,7 +2,6 @@
package org.springblade.plugin.operation.task.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.springblade.plugin.operation.database.entity.DataBase;
import org.springblade.plugin.operation.task.entity.TaskInfo;
/**

@ -2,7 +2,6 @@
package org.springblade.plugin.operation.task.service;
import org.springblade.core.mp.base.BaseService;
import org.springblade.plugin.operation.database.entity.DataBase;
import org.springblade.plugin.operation.task.entity.TaskInfo;
/**

@ -2,9 +2,6 @@
package org.springblade.plugin.operation.task.service.impl;
import org.springblade.core.mp.base.BaseServiceImpl;
import org.springblade.plugin.operation.database.entity.DataBase;
import org.springblade.plugin.operation.database.mapper.DataBaseMapper;
import org.springblade.plugin.operation.database.service.IDataBaseService;
import org.springblade.plugin.operation.task.entity.TaskInfo;
import org.springblade.plugin.operation.task.mapper.TaskInfoMapper;
import org.springblade.plugin.operation.task.service.ITaskInfoService;

@ -67,6 +67,9 @@ public class WorkOrder extends TenantEntity {
//备注
private String remark;
// 详情
private String detail;
// 结束时间
@TableField(exist = false)
private Date endTime;

@ -22,8 +22,10 @@ import org.springblade.core.mp.support.Query;
import org.springblade.core.secure.utils.AuthUtil;
import org.springblade.core.tool.utils.DateUtil;
import org.springblade.core.tool.utils.Func;
import org.springblade.plugin.operation.database.service.IDataBaseService;
import org.springblade.plugin.operation.database.service.IDataTableService;
import org.springblade.plugin.operation.database.entity.ModuleDatatable;
import org.springblade.plugin.operation.database.entity.ProjectDatabase;
import org.springblade.plugin.operation.database.service.IProjectDatabaseService;
import org.springblade.plugin.operation.database.service.IModuleDatatableService;
import org.springblade.plugin.operation.system.entity.ProjectInfo;
import org.springblade.plugin.operation.system.service.IModuleInfoService;
import org.springblade.plugin.operation.system.service.IProjectInfoService;
@ -59,11 +61,8 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO
private final ITaskInfoService taskInfoService;
private final ISysClient sysClient;
private final IUserClient userClient;
private final IDataBaseService dataBaseService;
private final IDataTableService dataTableService;
private final IProjectInfoService projectInfoService;
private final IModuleInfoService moduleInfoService;
private final IProjectDatabaseService dataBaseService;
private final IModuleDatatableService dataTableService;
@Override
public IPage<Map<String, Object>> historyWorkOrder(WorkOrder workOrder, Query query) {
@ -130,12 +129,17 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO
order.setTaskParentName(DictBizCache.getById(Long.parseLong(variables.get("renwufulei").toString())).getDictValue());
// 操作模块
ProjectInfo projectInfo = projectInfoService.getById(variables.get("xitongmingchengshujuku").toString());
if (projectInfo != null) {
order.setOperateSysName(projectInfo.getProjectName());
// ProjectInfo projectInfo = projectInfoService.getById(variables.get("xitongmingchengshujuku").toString());
// if (projectInfo != null) {
// order.setOperateSysName(projectInfo.getProjectName());
// } else {
ProjectDatabase byId = dataBaseService.getById(variables.get("xitongmingchengshujuku").toString());
if (byId != null) {
order.setOperateSysName(byId.getDatabaseProjectName());
} else {
order.setOperateSysName(dataBaseService.getById(variables.get("xitongmingchengshujuku").toString()).getDataBaseName());
order.setOperateSysName(variables.get("xitongmingchengshujuku").toString());
}
// }
// 当前责任人
order.setCurrentResponsiblePerson(userClient.userInfoById(Long.parseLong(task.getAssignee())).getData().getRealName());
@ -283,12 +287,17 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO
order.setTaskParentName(DictBizCache.getById(Long.parseLong(variables.get("renwufulei").toString())).getDictValue());
// 操作模块
ProjectInfo projectInfo = projectInfoService.getById(variables.get("xitongmingchengshujuku").toString());
if (projectInfo != null) {
order.setOperateSysName(projectInfo.getProjectName());
// ProjectInfo projectInfo = projectInfoService.getById(variables.get("xitongmingchengshujuku").toString());
// if (projectInfo != null) {
// order.setOperateSysName(projectInfo.getProjectName());
// } else {
ProjectDatabase byId = dataBaseService.getById(variables.get("xitongmingchengshujuku").toString());
if (byId != null) {
order.setOperateSysName(byId.getDatabaseProjectName());
} else {
order.setOperateSysName(dataBaseService.getById(variables.get("xitongmingchengshujuku").toString()).getDataBaseName());
order.setOperateSysName(variables.get("xitongmingchengshujuku").toString());
}
// }
// 当前责任人
order.setCurrentResponsiblePerson(userClient.userInfoById(Long.parseLong(task.getAssignee())).getData().getRealName());
@ -448,12 +457,9 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO
// 任务父类
varMap.put("renwufulei", DictBizCache.getById(Long.parseLong(varMap.get("renwufulei").toString())).getDictValue());
// 操作模块
ProjectInfo projectInfo = projectInfoService.getById(varMap.get("xitongmingchengshujuku").toString());
if (projectInfo != null) {
varMap.put("xitongmingchengshujuku", projectInfo.getProjectName());
} else {
varMap.put("xitongmingchengshujuku", dataBaseService.getById(varMap.get("xitongmingchengshujuku").toString()).getDataBaseName());
ProjectDatabase byId = dataBaseService.getById(varMap.get("xitongmingchengshujuku").toString());
if (byId != null) {
varMap.put("xitongmingchengshujuku", byId.getDatabaseProjectName());
}
// 运维公司
@ -540,10 +546,11 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO
OrderExcel excel = new OrderExcel();
excel.setTaskType(taskInfoService.getById(record.getTaskType()).getTaskTypeName());
excel.setTaskParent(DictBizCache.getById(Long.parseLong(record.getTaskParent())).getDictValue());
if (record.getType() == 1) {
excel.setOperationModule(projectInfoService.getById(record.getOperateSys()).getProjectName());
ProjectDatabase byId = dataBaseService.getById(record.getOperateSys());
if (byId != null) {
excel.setOperationModule(byId.getSystemName());
} else {
excel.setOperationModule(dataBaseService.getById(record.getOperateSys()).getSystemName());
excel.setOperationModule(record.getOperateSys());
}
excel.setDept(sysClient.getDeptName(Long.parseLong(record.getManagement())).getData());
excel.setLevel(DictBizCache.getById(Long.parseLong(record.getTaskLevel())).getDictValue());
@ -581,12 +588,13 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO
record.setCurrentResponsiblePerson(userClient.userInfoById(AuthUtil.getUserId()).getData().getName());
record.setApprovalStatus("待实施");
record.setUploadRecords(JSONObject.parseArray(record.getUploadRecord(), Map.class));
if (record.getType() == 1) {
record.setOperateSysName(projectInfoService.getById(record.getOperateSys()).getProjectName());
record.setOperateModuleName(moduleInfoService.getById(record.getOperateModule()).getModuleName());
} else {
record.setOperateSysName(dataBaseService.getById(record.getOperateSys()).getSystemName());
record.setOperateModuleName(dataTableService.getById(record.getOperateModule()).getSystemModuleName());
ProjectDatabase database = dataBaseService.getById(record.getOperateSys());
if (database != null) {
record.setOperateSysName(database.getDatabaseProjectName());
}
ModuleDatatable datatable = dataTableService.getById(record.getOperateModule());
if (datatable != null) {
record.setOperateModuleName(datatable.getDatatableModuleName());
}
}
}
@ -612,11 +620,14 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO
varMap.put("renwufulei", DictBizCache.getById(Long.parseLong(varMap.get("renwufulei").toString())).getDictValue());
// 操作模块
if ("1".equals(varMap.get("type").toString())) {
varMap.put("xitongmingchengshujuku", projectInfoService.getById(varMap.get("xitongmingchengshujuku").toString()).getProjectName());
} else {
varMap.put("xitongmingchengshujuku", dataBaseService.getById(varMap.get("xitongmingchengshujuku").toString()).getDataBaseName());
// if ("1".equals(varMap.get("type").toString())) {
// varMap.put("xitongmingchengshujuku", projectInfoService.getById(varMap.get("xitongmingchengshujuku").toString()).getProjectName());
// } else {
ProjectDatabase byId = dataBaseService.getById(varMap.get("xitongmingchengshujuku").toString());
if (byId != null) {
varMap.put("xitongmingchengshujuku", byId.getDatabaseProjectName());
}
// }
// ProjectInfo projectInfo = projectInfoService.getById(varMap.get("xitongmingchengshujuku").toString());
// if (projectInfo != null) {
@ -711,6 +722,11 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO
workOrders = workOrders.stream().filter(s -> s.get("startUserId").equals(workOrder.getApplyUser())).collect(Collectors.toList());
}
// 重复模式
if (StringUtils.isNotBlank(workOrder.getRepeatMode())) {
workOrders = workOrders.stream().filter(s -> s.get("chongfumoshi").equals(workOrder.getRepeatMode())).collect(Collectors.toList());
}
// 创建时间范围
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
if (workOrder.getStartTime() != null && workOrder.getEndTime() != null) {

@ -53,10 +53,10 @@ public class AutoStartModel extends TenantEntity {
private Integer type;
//系统名称或数据库id
private Long operateSys;
private String operateSys;
//模块或数据库表id
private Long operateModule;
private String operateModule;
//是否结束 0 否 1 是
private Integer isBreak;
@ -83,4 +83,6 @@ public class AutoStartModel extends TenantEntity {
private Date endTime;
private String uploadRecord;
private String detail;
}

@ -14,10 +14,10 @@ import org.springblade.core.mp.base.BaseServiceImpl;
import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.DateUtil;
import org.springblade.core.tool.utils.Func;
import org.springblade.plugin.operation.database.entity.DataBase;
import org.springblade.plugin.operation.database.entity.DataTable;
import org.springblade.plugin.operation.database.service.IDataBaseService;
import org.springblade.plugin.operation.database.service.IDataTableService;
import org.springblade.plugin.operation.database.entity.ProjectDatabase;
import org.springblade.plugin.operation.database.entity.ModuleDatatable;
import org.springblade.plugin.operation.database.service.IProjectDatabaseService;
import org.springblade.plugin.operation.database.service.IModuleDatatableService;
import org.springblade.plugin.operation.system.entity.ModuleInfo;
import org.springblade.plugin.operation.system.entity.ProjectInfo;
import org.springblade.plugin.operation.system.service.IModuleInfoService;
@ -25,7 +25,6 @@ import org.springblade.plugin.operation.system.service.IProjectInfoService;
import org.springblade.plugin.operation.task.service.ITaskInfoService;
import org.springblade.plugin.operation.workorder.entity.WorkOrder;
import org.springblade.plugin.operation.workorder.service.IWorkOrderService;
import org.springblade.plugin.workbench.cache.FlowCache;
import org.springblade.plugin.workbench.entity.AutoStartModel;
import org.springblade.plugin.workbench.enumutil.RepeatEnum;
import org.springblade.plugin.workbench.feign.ProcessErrorLogClient;
@ -64,13 +63,9 @@ public class AutoStartModelServiceImpl extends BaseServiceImpl<BladeManMadeMappe
private final ITaskInfoService taskInfoService;
private final IProjectInfoService projectInfoService;
private final IProjectDatabaseService dataBaseService;
private final IModuleInfoService moduleInfoService;
private final IDataBaseService dataBaseService;
private final IDataTableService dataTableService;
private final IModuleDatatableService dataTableService;
private final IWorkOrderService workOrderService;
@ -135,18 +130,18 @@ public class AutoStartModelServiceImpl extends BaseServiceImpl<BladeManMadeMappe
copy.setTaskId(Func.isEmpty(listHisInstance) ? "" : listHisInstance.get(0).getId());
//模块和数据表
Integer type = l.getType();
if(type == 1){//系统
ProjectInfo projectInfo = projectInfoService.getById(l.getOperateSys());
ModuleInfo moduleInfo = moduleInfoService.getById(l.getOperateModule());
copy.setOperaModule(moduleInfo.getModuleName());
copy.setOperaObject(projectInfo.getProjectName());
}else{
DataBase dataBase = dataBaseService.getById(l.getOperateSys());
DataTable dataTable = dataTableService.getById(l.getOperateModule());
copy.setOperaModule(dataTable.getDataTableName());
copy.setOperaObject(dataBase.getDataBaseName());
ProjectDatabase dataBase = dataBaseService.getById(l.getOperateSys());
if (dataBase != null) {
copy.setOperaObject(dataBase.getDatabaseProjectName());
} else {
copy.setOperaObject(l.getOperateSys().toString());
}
ModuleDatatable dataTable = dataTableService.getById(l.getOperateModule());
if (dataTable != null) {
copy.setOperaModule(dataTable.getDatatableModuleName());
} else {
copy.setOperaModule(l.getOperateModule().toString());
}
lists.add(copy);
});
@ -216,20 +211,21 @@ public class AutoStartModelServiceImpl extends BaseServiceImpl<BladeManMadeMappe
workOrder.setUploadRecord(JSON.toJSONString(variables.get("uploadrecord")));
workOrder.setOperateSys(variables.get("xitongmingchengshujuku").toString());
workOrder.setOperateModule(variables.get("xitongmokuaishujubiao").toString());
workOrder.setType(Integer.parseInt(variables.get("type").toString()));
// workOrder.setType(Integer.parseInt(variables.get("type").toString()));
workOrder.setTaskParent(variables.get("renwufulei").toString());
workOrder.setTaskType(variables.get("renwuzhonglei").toString());
workOrder.setTaskLevel(variables.get("renwudengji").toString());
workOrder.setApplyUser(variables.get("applyUser").toString());
workOrder.setOperateSys(variables.get("xitongmingchengshujuku").toString());
workOrder.setOperateModule(variables.get("xitongmokuaishujubiao").toString());
workOrder.setApplyUser(variables.get("applyUser").toString());
// workOrder.setOperateSys(variables.get("xitongmingchengshujuku").toString());
// workOrder.setOperateModule(variables.get("xitongmokuaishujubiao").toString());
// workOrder.setApplyUser(variables.get("applyUser").toString());
workOrder.setManagement(variables.get("guanlibumen").toString());
workOrder.setMaintenanceCompany(variables.get("yunweigongsi").toString());
workOrder.setTenantId(WfTaskUtil.getTenantId());
workOrder.setProcessInstanceId(processInstanceId);
workOrder.setExpectedCompletionTime(DateUtil.parse(variables.get("qiwangwanchengshijian").toString().substring(0,10) + " 23:59:59","yyyy-MM-dd HH:mm:ss"));
workOrder.setExpectedCompletionTime(DateUtil.parse(variables.get("qiwangwanchengshijian").toString(),"yyyy-MM-dd HH:mm:ss"));
workOrder.setRepeatMode(variables.get("chongfumoshi").toString());
workOrder.setDetail(variables.get("beizhu").toString());
//如果是运维公司发起的日常任务(普通),生成工单,并标记为已完成
User applyUser = UserCache.getUser(Long.valueOf(variables.get("applyUser").toString()));
String roleId = applyUser.getRoleId();
@ -319,7 +315,8 @@ public class AutoStartModelServiceImpl extends BaseServiceImpl<BladeManMadeMappe
AutoStartModel autoStartModel = new AutoStartModel();
autoStartModel.setProcessInstanceId(processinstanceId);
String chongfumoshi = variables.get("chongfumoshi") == null ? "" : variables.get("chongfumoshi").toString();
Date qiwangwanchengshijian = DateUtil.parse(variables.get("qiwangwanchengshijian").toString().substring(0,10) + " 23:59:59", "yyyy-MM-dd HH:mm:ss");
// Date qiwangwanchengshijian = DateUtil.parse(variables.get("qiwangwanchengshijian").toString().substring(0,10) + " 23:59:59", "yyyy-MM-dd HH:mm:ss");
Date qiwangwanchengshijian = DateUtil.parse(variables.get("qiwangwanchengshijian").toString(), "yyyy-MM-dd HH:mm:ss");
Date nextStartTime = this.setStartTime(qiwangwanchengshijian, chongfumoshi);
//第一次创建工单的开始时间和结束时间都是以工作流的期望结束时间为基准的
autoStartModel.setNextStartTime(nextStartTime);
@ -333,11 +330,12 @@ public class AutoStartModelServiceImpl extends BaseServiceImpl<BladeManMadeMappe
autoStartModel.setTaskType(Long.valueOf(variables.get("renwuzhonglei").toString()));
autoStartModel.setTaskLevel(Long.valueOf(variables.get("renwudengji").toString()));
autoStartModel.setRepeatMode(Long.valueOf(variables.get("chongfumoshi").toString()));
autoStartModel.setType(Integer.parseInt(variables.get("type").toString()));
autoStartModel.setOperateSys(Long.valueOf(variables.get("xitongmingchengshujuku").toString()));
autoStartModel.setOperateModule(Long.valueOf(variables.get("xitongmokuaishujubiao").toString()));
// autoStartModel.setType(Integer.parseInt(variables.get("type").toString()));
autoStartModel.setOperateSys(variables.get("xitongmingchengshujuku").toString());
autoStartModel.setOperateModule(variables.get("xitongmokuaishujubiao").toString());
autoStartModel.setIsDeleted(0);
autoStartModel.setUploadRecord(JSON.toJSONString(variables.get("uploadrecord")));
autoStartModel.setDetail(variables.get("beizhu").toString());
//自动生成工单并保存
boolean saveOrder = false;
@ -433,7 +431,7 @@ public class AutoStartModelServiceImpl extends BaseServiceImpl<BladeManMadeMappe
Date now = DateUtil.now();
//每分钟重复
if(StringUtils.equals(RepeatEnum.每分钟.getCode(),repeatMode)) return DateUtil.plusMinutes(date,1);
// if(StringUtils.equals(RepeatEnum.每分钟.getCode(),repeatMode)) return DateUtil.plusMinutes(date,1);
//每天重复
if(StringUtils.equals(RepeatEnum.每天.getCode(),repeatMode)) return DateUtil.plusDays(date,1);
@ -464,12 +462,13 @@ public class AutoStartModelServiceImpl extends BaseServiceImpl<BladeManMadeMappe
workOrder.setTaskType(autoStartModel.getTaskType().toString());
workOrder.setTaskLevel(autoStartModel.getTaskLevel().toString());
workOrder.setRepeatMode(autoStartModel.getRepeatMode().toString());
workOrder.setType(autoStartModel.getType());
// workOrder.setType(autoStartModel.getType());
workOrder.setOperateSys(autoStartModel.getOperateSys().toString());
workOrder.setOperateModule(autoStartModel.getOperateModule().toString());
workOrder.setUploadRecord(autoStartModel.getUploadRecord());
workOrder.setExpectedCompletionTime(autoStartModel.getNextEndTime());
workOrder.setIsFinish(0);
workOrder.setDetail(autoStartModel.getDetail());
//如果是运维公司发起的日常任务(普通),生成工单,并标记为已完成
if(StringUtils.equals(autoStartModel.getApplyRole(),"运维公司") && StringUtils.equals(autoStartModel.getTaskLevel().toString(),"1625035000825049090")){
workOrder.setIsFinish(1);
@ -493,13 +492,13 @@ public class AutoStartModelServiceImpl extends BaseServiceImpl<BladeManMadeMappe
workOrder.setTaskType(autoStartModel.getTaskType().toString());
workOrder.setTaskLevel(autoStartModel.getTaskLevel().toString());
workOrder.setRepeatMode(autoStartModel.getRepeatMode().toString());
workOrder.setType(autoStartModel.getType());
// workOrder.setType(autoStartModel.getType());
workOrder.setOperateSys(autoStartModel.getOperateSys().toString());
workOrder.setOperateModule(autoStartModel.getOperateModule().toString());
workOrder.setUploadRecord(autoStartModel.getUploadRecord());
workOrder.setExpectedCompletionTime(autoStartModel.getNextEndTime());
workOrder.setIsFinish(0);
workOrder.setDetail(autoStartModel.getDetail());
workOrder.setExpectedCompletionTime(autoStartModel.getNextEndTime());
save = workOrderService.save(workOrder);
return save;
@ -520,7 +519,9 @@ public class AutoStartModelServiceImpl extends BaseServiceImpl<BladeManMadeMappe
wrapper.eq(AutoStartModel::getIsBreak, 0).le(AutoStartModel::getNextStartTime, now);
List<AutoStartModel> autoStartModels = baseMapper.selectList(wrapper);
autoStartModels.forEach(autoStartModel -> {
this.autoCreateWorkOrder(now,autoStartModel);
if (autoStartModel.getRepeatMode() != 1631111669916913665L) {
this.autoCreateWorkOrder(now, autoStartModel);
}
});
}
}

Loading…
Cancel
Save