填写工单页面相关接口

main
litao 3 years ago
parent d451dfe82e
commit e2553b34ac
  1. 55
      lab-plugin/lab-workflow/src/main/java/org/springblade/plugin/operation/database/context/CustomCellWriteHandler.java
  2. 93
      lab-plugin/lab-workflow/src/main/java/org/springblade/plugin/operation/database/context/CustomSheetWriteHandler.java
  3. 199
      lab-plugin/lab-workflow/src/main/java/org/springblade/plugin/operation/database/controller/DataBaseController.java
  4. 11
      lab-plugin/lab-workflow/src/main/java/org/springblade/plugin/operation/database/entity/DataBase.java
  5. 62
      lab-plugin/lab-workflow/src/main/java/org/springblade/plugin/operation/database/entity/DataTable.java
  6. 17
      lab-plugin/lab-workflow/src/main/java/org/springblade/plugin/operation/database/excel/UploadReturn.java
  7. 14
      lab-plugin/lab-workflow/src/main/java/org/springblade/plugin/operation/database/mapper/DataTableMapper.java
  8. 6
      lab-plugin/lab-workflow/src/main/java/org/springblade/plugin/operation/database/mapper/DataTableMapper.xml
  9. 14
      lab-plugin/lab-workflow/src/main/java/org/springblade/plugin/operation/database/service/IDataTableService.java
  10. 22
      lab-plugin/lab-workflow/src/main/java/org/springblade/plugin/operation/database/service/impl/DataTableServiceImpl.java
  11. 8
      lab-plugin/lab-workflow/src/main/java/org/springblade/plugin/operation/system/controller/ModuleInfoController.java
  12. 85
      lab-plugin/lab-workflow/src/main/java/org/springblade/plugin/operation/system/controller/ProjectInfoController.java
  13. 16
      lab-plugin/lab-workflow/src/main/java/org/springblade/plugin/operation/task/controller/TaskInfoController.java
  14. 13
      lab-plugin/lab-workflow/src/main/java/org/springblade/plugin/operation/task/entity/TaskAndDataBase.java
  15. 8
      lab-service/lab-system/src/main/java/org/springblade/system/controller/DeptController.java
  16. 68
      lab-service/lab-user/src/main/java/org/springblade/system/user/controller/UserController.java

@ -0,0 +1,55 @@
package org.springblade.plugin.operation.database.context;
import com.alibaba.excel.metadata.CellData;
import com.alibaba.excel.metadata.Head;
import com.alibaba.excel.write.handler.CellWriteHandler;
import com.alibaba.excel.write.metadata.holder.WriteSheetHolder;
import com.alibaba.excel.write.metadata.holder.WriteTableHolder;
import lombok.extern.slf4j.Slf4j;
import org.apache.poi.common.usermodel.HyperlinkType;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.CreationHelper;
import org.apache.poi.ss.usermodel.Hyperlink;
import org.apache.poi.ss.usermodel.Row;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.List;
/**
* 自定义拦截器对第一行第一列的头超链接到:https://github.com/alibaba/easyexcel
*
* @author
*/
@Slf4j
public class CustomCellWriteHandler implements CellWriteHandler {
private static final Logger LOGGER = LoggerFactory.getLogger(CustomCellWriteHandler.class);
@Override
public void beforeCellCreate(WriteSheetHolder writeSheetHolder, WriteTableHolder writeTableHolder, Row row, Head head, Integer columnIndex, Integer relativeRowIndex, Boolean isHead) {
}
@Override
public void afterCellCreate(WriteSheetHolder writeSheetHolder, WriteTableHolder writeTableHolder, Cell cell, Head head, Integer relativeRowIndex, Boolean isHead) {
}
@Override
public void afterCellDataConverted(WriteSheetHolder writeSheetHolder, WriteTableHolder writeTableHolder, CellData cellData, Cell cell, Head head, Integer relativeRowIndex, Boolean isHead) {
}
@Override
public void afterCellDispose(WriteSheetHolder writeSheetHolder, WriteTableHolder writeTableHolder, List<CellData> cellDataList, Cell cell, Head head, Integer relativeRowIndex, Boolean isHead) {
// 这里可以对cell进行任何操作
LOGGER.info("第{}行,第{}列写入完成。", cell.getRowIndex(), cell.getColumnIndex());
if (isHead && cell.getColumnIndex() == 0) {
CreationHelper createHelper = writeSheetHolder.getSheet().getWorkbook().getCreationHelper();
Hyperlink hyperlink = createHelper.createHyperlink(HyperlinkType.URL);
hyperlink.setAddress("https://github.com/alibaba/easyexcel");
cell.setHyperlink(hyperlink);
}
}
}

@ -0,0 +1,93 @@
package org.springblade.plugin.operation.database.context;
import com.alibaba.excel.write.handler.SheetWriteHandler;
import com.alibaba.excel.write.metadata.holder.WriteSheetHolder;
import com.alibaba.excel.write.metadata.holder.WriteWorkbookHolder;
import com.alibaba.nacos.common.utils.CollectionUtils;
import lombok.extern.slf4j.Slf4j;
import org.apache.poi.ss.usermodel.DataValidation;
import org.apache.poi.ss.usermodel.DataValidationConstraint;
import org.apache.poi.ss.usermodel.DataValidationHelper;
import org.apache.poi.ss.util.CellRangeAddressList;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springblade.plugin.operation.database.utils.UserAndDept;
import org.springblade.system.cache.DictBizCache;
import org.springblade.system.entity.Dept;
import org.springblade.system.entity.DictBiz;
import org.springblade.system.feign.ISysClient;
import org.springblade.system.user.entity.User;
import org.springblade.system.user.feign.IUserClient;
import org.springframework.beans.factory.annotation.Autowired;
import java.util.ArrayList;
import java.util.List;
/**
* 自定义拦截器.对第一列第一行和第二行的数据新增下拉框显示 测试1 测试2
* @author
*/
@Slf4j
public class CustomSheetWriteHandler implements SheetWriteHandler {
private static final Logger LOGGER = LoggerFactory.getLogger(CustomSheetWriteHandler.class);
@Override
public void beforeSheetCreate(WriteWorkbookHolder writeWorkbookHolder, WriteSheetHolder writeSheetHolder) {
}
@Override
public void afterSheetCreate(WriteWorkbookHolder writeWorkbookHolder, WriteSheetHolder writeSheetHolder) {
LOGGER.info("第{}个Sheet写入成功。", writeSheetHolder.getSheetNo());
// 数据库类型
List<DictBiz> dictBizList = DictBizCache.getList("database_type");
List<String> names = new ArrayList<>();
if (CollectionUtils.isNotEmpty(dictBizList)) {
for (DictBiz dictBiz : dictBizList) {
if (!"-1".equals(dictBiz.getDictKey())) {
names.add(dictBiz.getDictValue());
}
}
}
// 区间设置 第一列第一行和第二行的数据。由于第一行是头,所以第一、二行的数据实际上是第二三行
CellRangeAddressList cellRangeAddressList = new CellRangeAddressList(1, 100, 3, 3);
DataValidationHelper helper = writeSheetHolder.getSheet().getDataValidationHelper();
DataValidationConstraint constraint = helper.createExplicitListConstraint(names.stream().toArray(String[]::new));
DataValidation dataValidation = helper.createValidation(constraint, cellRangeAddressList);
// 部门
// List<Dept> depts = sysClient.getDepts().getData();
List<Dept> depts = UserAndDept.depts();
List<String> deptNames = new ArrayList<>();
if (CollectionUtils.isNotEmpty(depts)) {
for (Dept dept : depts) {
deptNames.add(dept.getDeptName());
}
}
CellRangeAddressList cellRangeAddressList1 = new CellRangeAddressList(1, 100, 7, 7);
DataValidationHelper helper1 = writeSheetHolder.getSheet().getDataValidationHelper();
DataValidationConstraint constraint1 = helper1.createExplicitListConstraint(deptNames.stream().toArray(String[]::new));
DataValidation dataValidation1 = helper1.createValidation(constraint1, cellRangeAddressList1);
// 运维公司
// List<User> userList = userClient.listRolebyId("运维公司").getData();
List<User> userList = UserAndDept.users();
if (CollectionUtils.isNotEmpty(userList)) {
List<String> userNames = new ArrayList<>();
for (User user : userList) {
userNames.add(user.getRealName());
}
CellRangeAddressList cellRangeAddressList2 = new CellRangeAddressList(1, 100, 8, 8);
DataValidationHelper helper2 = writeSheetHolder.getSheet().getDataValidationHelper();
DataValidationConstraint constraint2 = helper2.createExplicitListConstraint(userNames.stream().toArray(String[]::new));
DataValidation dataValidation2 = helper2.createValidation(constraint2, cellRangeAddressList2);
writeSheetHolder.getSheet().addValidationData(dataValidation2);
}
writeSheetHolder.getSheet().addValidationData(dataValidation);
writeSheetHolder.getSheet().addValidationData(dataValidation1);
}
}

@ -3,6 +3,7 @@ package org.springblade.plugin.operation.database.controller;
import com.alibaba.excel.EasyExcel; import com.alibaba.excel.EasyExcel;
import com.alibaba.nacos.common.utils.CollectionUtils; import com.alibaba.nacos.common.utils.CollectionUtils;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
@ -24,22 +25,32 @@ import org.springblade.core.tool.utils.Func;
import org.springblade.plugin.operation.database.context.CustomCellWriteHandler; import org.springblade.plugin.operation.database.context.CustomCellWriteHandler;
import org.springblade.plugin.operation.database.context.CustomSheetWriteHandler; import org.springblade.plugin.operation.database.context.CustomSheetWriteHandler;
import org.springblade.plugin.operation.database.entity.DataBase; 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.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.IDataBaseService;
import org.springblade.plugin.operation.database.service.IDataTableService;
import org.springblade.system.cache.DictBizCache;
import org.springblade.system.entity.DictBiz;
import org.springblade.system.feign.ISysClient;
import org.springblade.system.user.entity.User;
import org.springblade.system.user.feign.IUserClient;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import javax.validation.Valid; import javax.validation.Valid;
import java.util.ArrayList; import java.io.File;
import java.util.List; import java.io.FileInputStream;
import java.util.Map; import java.io.IOException;
import java.util.*;
import static org.springblade.core.cache.constant.CacheConstant.SYS_CACHE; import static org.springblade.core.cache.constant.CacheConstant.SYS_CACHE;
/** /**
*
* *
*/ */
@NonDS @NonDS
@ -51,16 +62,11 @@ public class DataBaseController extends BladeController {
private final IDataBaseService dataBaseService; private final IDataBaseService dataBaseService;
/** private final IDataTableService dataTableService;
* 详情
*/ private final ISysClient sysClient;
@GetMapping("/detail")
@ApiOperationSupport(order = 1) private final IUserClient userClient;
@ApiOperation(value = "详情", notes = "传入dataScope")
public R<DataBase> detail(DataBase dataBase) {
DataBase detail = dataBaseService.getOne(Condition.getQueryWrapper(dataBase));
return R.data(detail);
}
/** /**
* 分页 * 分页
@ -68,8 +74,23 @@ public class DataBaseController extends BladeController {
@GetMapping("/list") @GetMapping("/list")
@ApiOperationSupport(order = 2) @ApiOperationSupport(order = 2)
@ApiOperation(value = "分页", notes = "传入dataScope") @ApiOperation(value = "分页", notes = "传入dataScope")
public R<IPage<DataBase>> list(DataBase dataBase, Query query) { public R<IPage<DataTable>> list(DataTable dataTable, Query query) {
IPage<DataBase> pages = dataBaseService.page(Condition.getPage(query), Condition.getQueryWrapper(dataBase)); IPage<DataTable> pages = dataTableService.page(Condition.getPage(query.setDescs("create_time")), Condition.getQueryWrapper(dataTable));
List<DataTable> dataTableList = pages.getRecords();
if (CollectionUtils.isNotEmpty(dataTableList)) {
for (DataTable table : dataTableList) {
DataBase dataBase = dataBaseService.getById(table.getDataBaseId());
table.setDataBaseName(dataBase.getDataBaseName());
table.setDataBaseAlias(dataBase.getDataBaseAlias());
table.setDataBaseType(dataBase.getDataBaseType());
table.setDataBaseIp(dataBase.getDataBaseIp());
table.setDataBasePort(dataBase.getDataBasePort());
table.setSystemName(dataBase.getSystemName());
table.setDeptName(sysClient.getDeptName(table.getDeptId()).getData());
table.setCompanyName(userClient.userInfoById(table.getCompany()).getData().getRealName());
}
pages.setRecords(dataTableList);
}
return R.data(pages); return R.data(pages);
} }
@ -93,16 +114,6 @@ public class DataBaseController extends BladeController {
return R.status(dataBaseService.updateById(dataBase)); return R.status(dataBaseService.updateById(dataBase));
} }
/**
* 新增或修改
*/
@PostMapping("/submit")
@ApiOperationSupport(order = 5)
@ApiOperation(value = "新增或修改", notes = "传入dataScope")
public R submit(@Valid @RequestBody DataBase dataBase) {
return R.status(dataBaseService.saveOrUpdate(dataBase));
}
/** /**
* 删除 * 删除
*/ */
@ -116,16 +127,27 @@ public class DataBaseController extends BladeController {
/** /**
* excel导入 * excel导入
*/ */
@PostMapping("dataImport") @PostMapping("/dataImport")
public R importUser(MultipartFile file) { public R importUser(MultipartFile file) {
List<DatabaseExcel> excelList = ExcelUtil.read(file, DatabaseExcel.class); List<DatabaseExcel> excelList = ExcelUtil.read(file, DatabaseExcel.class);
if (CollectionUtils.isNotEmpty(excelList)) { if (CollectionUtils.isNotEmpty(excelList)) {
List<DataBase> dataBaseList = new ArrayList<>(); List<DataBase> dataBaseList = new ArrayList<>();
List<DataTable> dataTableList = new ArrayList<>();
excelList.forEach(item -> { excelList.forEach(item -> {
// String data = sysClient.getDeptIds(AuthUtil.getTenantId(), item.getDeptId()).getData();
// User user = userClient.userInfoByName(AuthUtil.getTenantId(), item.getCompany()).getData();
// 数据库
DataBase dataBase = BeanUtil.copy(item, DataBase.class); DataBase dataBase = BeanUtil.copy(item, DataBase.class);
dataBase.setDataBaseType(Integer.parseInt(DictBizCache.getKey("database_type", item.getDataBaseType())));
dataBaseList.add(dataBase); dataBaseList.add(dataBase);
// 数据表
DataTable dataTable = BeanUtil.copy(item, DataTable.class);
dataTableList.add(dataTable);
}); });
dataBaseService.saveBatch(dataBaseList); dataBaseService.saveBatch(dataBaseList);
dataTableService.saveBatch(dataTableList);
} }
return R.success("操作成功"); return R.success("操作成功");
} }
@ -133,21 +155,18 @@ public class DataBaseController extends BladeController {
/** /**
* excel导出模板 * excel导出模板
*/ */
@GetMapping("exportTemplate") @GetMapping("/exportTemplate")
public void exportUser(HttpServletResponse response) { public void exportUser(HttpServletResponse response) {
List<DatabaseExcel> excels = new ArrayList<>(); List<DatabaseExcel> excels = new ArrayList<>();
DatabaseExcel excel = new DatabaseExcel(); DatabaseExcel excel = new DatabaseExcel();
// excel.setDataBaseIp("127.0.0.1"); excel.setDataBaseIp("127.0.0.1");
// excel.setDataBasePort("1000"); excel.setDataBasePort("1000");
// excel.setDataBaseName("work_order"); excel.setDataBaseName("work_order");
// excel.setDataBaseType("mysql"); excel.setDataBaseAlias("工单数据库");
// excel.setDataBaseAlias("工单数据库"); excel.setSystemName("工单系统");
// excel.setSystemName("工单系统"); excel.setSystemModuleName("数据运维");
// excel.setSystemModuleName("数据运维"); excel.setDataTableName("t_task_info");
// excel.setDeptId("数据科"); excel.setDataTableAlias("任务种类");
// excel.setCompany("A公司");
// excel.setDataTableName("t_task_info");
// excel.setDataTableAlias("任务种类");
excels.add(excel); excels.add(excel);
// ExcelUtil.export(response, "数据库数据" + DateUtil.time(), "数据库数据", excels, DatabaseExcel.class); // ExcelUtil.export(response, "数据库数据" + DateUtil.time(), "数据库数据", excels, DatabaseExcel.class);
@ -155,6 +174,108 @@ public class DataBaseController extends BladeController {
// 这里 需要指定写用哪个class去写,然后写到第一个sheet,名字为模板 然后文件流会自动关闭 // 这里 需要指定写用哪个class去写,然后写到第一个sheet,名字为模板 然后文件流会自动关闭
EasyExcel.write(fileName, DatabaseExcel.class).registerWriteHandler(new CustomSheetWriteHandler()) EasyExcel.write(fileName, DatabaseExcel.class).registerWriteHandler(new CustomSheetWriteHandler())
.registerWriteHandler(new CustomCellWriteHandler()).sheet("模板").doWrite(excels); .registerWriteHandler(new CustomCellWriteHandler()).sheet("模板").doWrite(excels);
download(fileName, response);
}
/**
* 文件上传
*/
@PostMapping("/upload")
public R<UploadReturn> upload(MultipartFile file) {
// 1、获取文件的原始文件名, 通过原始文件名获取文件后缀 例如:abc.jpg
String originalFilename = file.getOriginalFilename();
String suffix = originalFilename.substring(originalFilename.lastIndexOf("."));
// 2、使用UUID重新生成文件名,防止文件名称重复造成文件覆盖
String fileName = UUID.randomUUID().toString() + suffix;
// 3、创建一个目录对象
String basePath = "D://用户签名//";
File dir = new File(basePath);
//判断当前目录是否存在
if (!dir.exists()) {
//目录不存在,需要创建
dir.mkdirs();
} }
try {
// 4、将临时文件转存到指定位置
file.transferTo(new File(basePath + fileName));
} catch (IOException e) {
e.printStackTrace();
}
UploadReturn uploadReturn = new UploadReturn();
uploadReturn.setName(originalFilename);
uploadReturn.setPath(basePath + fileName);
uploadReturn.setCreateUser(AuthUtil.getNickName());
uploadReturn.setCreateTime(new Date());
return R.data(uploadReturn);
}
/**
* 查看文件
*/
@GetMapping("/download")
public void download(String path, HttpServletResponse resp) {
// CtglPlaninfo ctglPlaninfo = ctglPlaninfoMapper.queryRecord(fid);
// String fapath = "//" + ctglPlaninfo.getFapath();
// 通过id 查询 数据表 地址
//获取配置文件地址
// 文件地址 = 配置文件地址+数据表地址
// File file = new File(path);
// if (!file.exists()) {
// try {
// file.mkdirs();
// } catch (Exception e) {
// e.printStackTrace();
// }
// }
File file2 = new File(path);
//获取文件名
String[] split = path.split("//");
String fileName = split[split.length - 1];
// String[] split1 = fileName.split(".");
// String s = split1[0];
if (file2.exists()) {
FileInputStream in = null;
HttpServletResponse response = resp;
response.setCharacterEncoding("UTF-8");
response.setContentType("application/octet-stream;charset=utf-8");
response.setHeader("Content-disposition", "attachment;filename=" + fileName);
try {
in = new FileInputStream(path);
byte[] a = new byte[1024];
int b;
while ((b = in.read(a)) != -1) {
response.getOutputStream().write(a, 0, b);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (null != in) {
try {
in.close();
} catch (IOException e2) {
System.out.println("关闭输入流错误");
}
try {
response.getOutputStream().close();
} catch (IOException e) {
System.out.println("输出流关闭错误");
}
}
}
} else {
try {
resp.getWriter().println("查不到文件");
} catch (IOException e) {
System.out.println("resp返回前端信息异常");
}
}
}
} }

@ -47,15 +47,4 @@ public class DataBase extends TenantEntity {
*/ */
private String systemName; private String systemName;
/**
* 管理部门id
*/
private Long deptId;
/**
* 运维公司id
*/
private Long company;
} }

@ -1,5 +1,6 @@
package org.springblade.plugin.operation.database.entity; package org.springblade.plugin.operation.database.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
@ -12,6 +13,11 @@ public class DataTable extends TenantEntity {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
/**
* 数据库id
*/
private Long dataBaseId;
/** /**
* 模块名称 * 模块名称
*/ */
@ -27,4 +33,60 @@ public class DataTable extends TenantEntity {
*/ */
private String dataTableAlias; private String dataTableAlias;
/**
* 管理部门id
*/
private Long deptId;
/**
* 管理部门
*/
private String deptName;
/**
* 运维公司id
*/
private Long company;
/**
* 运维公司
*/
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,17 @@
package org.springblade.plugin.operation.database.excel;
import lombok.Data;
import java.util.Date;
@Data
public class UploadReturn {
private String name;
private String path;
private String createUser;
private Date createTime;
}

@ -0,0 +1,14 @@
package org.springblade.plugin.operation.database.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.springblade.plugin.operation.database.entity.DataTable;
/**
* Mapper 接口
*
* @author BladeX
*/
public interface DataTableMapper extends BaseMapper<DataTable> {
}

@ -0,0 +1,6 @@
<?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">
</mapper>

@ -0,0 +1,14 @@
package org.springblade.plugin.operation.database.service;
import org.springblade.core.mp.base.BaseService;
import org.springblade.plugin.operation.database.entity.DataTable;
/**
* 服务类
*
* @author BladeX
*/
public interface IDataTableService extends BaseService<DataTable> {
}

@ -0,0 +1,22 @@
package org.springblade.plugin.operation.database.service.impl;
import com.baomidou.mybatisplus.core.metadata.IPage;
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.DataBaseMapper;
import org.springblade.plugin.operation.database.mapper.DataTableMapper;
import org.springblade.plugin.operation.database.service.IDataBaseService;
import org.springblade.plugin.operation.database.service.IDataTableService;
import org.springframework.stereotype.Service;
/**
* 服务实现类
*
* @author BladeX
*/
@Service
public class DataTableServiceImpl extends BaseServiceImpl<DataTableMapper, DataTable> implements IDataTableService {
}

@ -2,6 +2,7 @@
package org.springblade.plugin.operation.system.controller; package org.springblade.plugin.operation.system.controller;
import com.alibaba.nacos.common.utils.CollectionUtils; import com.alibaba.nacos.common.utils.CollectionUtils;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
@ -9,6 +10,7 @@ import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam; import io.swagger.annotations.ApiParam;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import org.codehaus.janino.Java;
import org.springblade.core.boot.ctrl.BladeController; import org.springblade.core.boot.ctrl.BladeController;
import org.springblade.core.cache.utils.CacheUtil; import org.springblade.core.cache.utils.CacheUtil;
import org.springblade.core.mp.support.Condition; import org.springblade.core.mp.support.Condition;
@ -74,13 +76,13 @@ public class ModuleInfoController extends BladeController {
@ApiOperationSupport(order = 2) @ApiOperationSupport(order = 2)
@ApiOperation(value = "分页", notes = "传入dataScope") @ApiOperation(value = "分页", notes = "传入dataScope")
public R<IPage<ModuleInfo>> list(ModuleInfo moduleInfo, Query query) { public R<IPage<ModuleInfo>> list(ModuleInfo moduleInfo, Query query) {
IPage<ModuleInfo> pages = moduleInfoService.page(Condition.getPage(query), Condition.getQueryWrapper(moduleInfo)); LambdaQueryWrapper<ModuleInfo> wrapper = new LambdaQueryWrapper<>(moduleInfo);
wrapper.orderByDesc(ModuleInfo::getCreateTime);
IPage<ModuleInfo> pages = moduleInfoService.page(Condition.getPage(query), wrapper);
List<ModuleInfo> infoList = pages.getRecords(); List<ModuleInfo> infoList = pages.getRecords();
if (CollectionUtils.isNotEmpty(infoList)) { if (CollectionUtils.isNotEmpty(infoList)) {
infoList.forEach(item -> { infoList.forEach(item -> {
item.setProjectName(projectInfoService.getById(item.getProjectInfoId()).getProjectName()); item.setProjectName(projectInfoService.getById(item.getProjectInfoId()).getProjectName());
// item.setDeptName(sysClient.getDeptName(item.getManageDeptId()).getData());
// item.setMaintenanceDeptName(userClient.userInfoById(item.getMaintenanceDeptId()).getData().getRealName());
item.setCreateName(userClient.userInfoById(item.getCreateUser()).getData().getRealName()); item.setCreateName(userClient.userInfoById(item.getCreateUser()).getData().getRealName());
}); });
} }

@ -1,6 +1,8 @@
package org.springblade.plugin.operation.system.controller; package org.springblade.plugin.operation.system.controller;
import com.alibaba.nacos.common.utils.CollectionUtils;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
@ -15,14 +17,22 @@ import org.springblade.core.mp.support.Query;
import org.springblade.core.tenant.annotation.NonDS; import org.springblade.core.tenant.annotation.NonDS;
import org.springblade.core.tool.api.R; import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.Func; 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.system.entity.ModuleInfo;
import org.springblade.plugin.operation.system.entity.ProjectInfo; 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.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.entity.TaskInfo;
import org.springblade.plugin.operation.task.service.ITaskInfoService; import org.springblade.plugin.operation.task.service.ITaskInfoService;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import javax.validation.Valid; import javax.validation.Valid;
import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
@ -42,6 +52,12 @@ public class ProjectInfoController extends BladeController {
private final IProjectInfoService projectInfoService; private final IProjectInfoService projectInfoService;
private final IDataBaseService dataBaseService;
private final IModuleInfoService moduleInfoService;
private final IDataTableService dataTableService;
/** /**
* 详情 * 详情
*/ */
@ -104,5 +120,74 @@ public class ProjectInfoController extends BladeController {
return R.status(projectInfoService.deleteLogic(Func.toLongList(ids))); return R.status(projectInfoService.deleteLogic(Func.toLongList(ids)));
} }
/**
* 组合数据库和系统数据
*/
@GetMapping("/projectAndDataBase")
public R taskAndDataBase() {
List<TaskAndDataBase> list = new ArrayList<>();
// 数据库数据
List<DataBase> dataBaseList = dataBaseService.list();
if (CollectionUtils.isNotEmpty(dataBaseList)) {
for (DataBase dataBase : dataBaseList) {
TaskAndDataBase taskAndDataBase = new TaskAndDataBase();
taskAndDataBase.setId(dataBase.getId());
taskAndDataBase.setName(dataBase.getSystemName());
taskAndDataBase.setType(2);
list.add(taskAndDataBase);
}
}
// 系统名称数据
List<ProjectInfo> projectInfoList = projectInfoService.list();
if (CollectionUtils.isNotEmpty(projectInfoList)) {
for (ProjectInfo projectInfo : projectInfoList) {
TaskAndDataBase taskAndDataBase = new TaskAndDataBase();
taskAndDataBase.setId(projectInfo.getId());
taskAndDataBase.setName(projectInfo.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.getDataTableName());
list.add(taskAndDataBase);
}
}
return R.data(list);
}
}
} }

@ -1,6 +1,7 @@
package org.springblade.plugin.operation.task.controller; package org.springblade.plugin.operation.task.controller;
import com.alibaba.nacos.common.utils.CollectionUtils;
import com.alibaba.nacos.common.utils.StringUtils; import com.alibaba.nacos.common.utils.StringUtils;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
@ -21,16 +22,21 @@ import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.Func; import org.springblade.core.tool.utils.Func;
import org.springblade.plugin.operation.database.entity.DataBase; import org.springblade.plugin.operation.database.entity.DataBase;
import org.springblade.plugin.operation.database.service.IDataBaseService; import org.springblade.plugin.operation.database.service.IDataBaseService;
import org.springblade.plugin.operation.system.entity.ProjectInfo;
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.entity.TaskInfo;
import org.springblade.plugin.operation.task.service.ITaskInfoService; import org.springblade.plugin.operation.task.service.ITaskInfoService;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import javax.validation.Valid; import javax.validation.Valid;
import java.util.ArrayList;
import java.util.List;
import static org.springblade.core.cache.constant.CacheConstant.SYS_CACHE; import static org.springblade.core.cache.constant.CacheConstant.SYS_CACHE;
/** /**
*
* *
*/ */
@NonDS @NonDS
@ -120,9 +126,15 @@ public class TaskInfoController extends BladeController {
* 任务种类去重返回 * 任务种类去重返回
*/ */
@GetMapping("/taskTypeData") @GetMapping("/taskTypeData")
public R taskTypeData() { public R taskTypeData(String parentId) {
QueryWrapper<TaskInfo> wrapper = new QueryWrapper<>(); QueryWrapper<TaskInfo> wrapper = new QueryWrapper<>();
if (StringUtils.isNotBlank(parentId)) {
wrapper.eq("task_parent_id", parentId);
} else {
wrapper.select("DISTINCT task_type_name"); wrapper.select("DISTINCT task_type_name");
}
return R.data(taskInfoService.list(wrapper)); return R.data(taskInfoService.list(wrapper));
} }
} }

@ -0,0 +1,13 @@
package org.springblade.plugin.operation.task.entity;
import lombok.Data;
@Data
public class TaskAndDataBase {
private Long id;
private String name;
private Integer type;
}

@ -166,12 +166,12 @@ public class DeptController extends BladeController {
} }
/** /**
* 获取所有基地信息 * 获取运维公司所对应的部门信息
*/ */
@GetMapping("/getBases") @GetMapping("/getDepts")
public R<List<Dept>> getBases(Integer type) { public R<List<Dept>> getBases(String id) {
LambdaQueryWrapper<Dept> wrapper = new LambdaQueryWrapper<>(); LambdaQueryWrapper<Dept> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(Dept::getDeptCategory, type); wrapper.in(Dept::getId, Func.toLongList(id));
return R.data(deptService.list(wrapper)); return R.data(deptService.list(wrapper));
} }

@ -26,6 +26,7 @@ import org.springblade.core.tool.api.R;
import org.springblade.core.tool.constant.BladeConstant; import org.springblade.core.tool.constant.BladeConstant;
import org.springblade.core.tool.constant.RoleConstant; import org.springblade.core.tool.constant.RoleConstant;
import org.springblade.core.tool.utils.DateUtil; import org.springblade.core.tool.utils.DateUtil;
import org.springblade.core.tool.utils.Func;
import org.springblade.core.tool.utils.StringPool; import org.springblade.core.tool.utils.StringPool;
import org.springblade.system.feign.ISysClient; import org.springblade.system.feign.ISysClient;
import org.springblade.system.user.entity.User; import org.springblade.system.user.entity.User;
@ -100,7 +101,6 @@ public class UserController {
/** /**
* 用户列表 * 用户列表
*/ */
@GetMapping("/list") @GetMapping("/list")
@ApiImplicitParams({ @ApiImplicitParams({
@ApiImplicitParam(name = "account", value = "账号名", paramType = "query", dataType = "string"), @ApiImplicitParam(name = "account", value = "账号名", paramType = "query", dataType = "string"),
@ -157,22 +157,6 @@ public class UserController {
return R.data(UserWrapper.build().pageVO(pages)); return R.data(UserWrapper.build().pageVO(pages));
} }
// @GetMapping("/page")
// public R<IPage<UserVO>> newPage(User user, Query query) {
// LambdaQueryWrapper<User> wrapper = new LambdaQueryWrapper<>(user);
// if (AuthUtil.getUserId() != 1530823299437965313L) {
// wrapper.ne(User::getId, 1530823299437965313L);
// }
// if (user.getDeptId() != null && !"".equals(user.getDeptId())) {
// wrapper.eq(User::getDeptId, user.getDeptId());
// }
// wrapper.eq(User::getTenantId, AuthUtil.getTenantId());
// wrapper.orderByDesc(User::getCreateTime);
// IPage<User> page = userService.page(Condition.getPage(query), wrapper);
// return R.data(UserWrapper.build().pageVO(page));
// }
/** /**
* 新增或修改 * 新增或修改
*/ */
@ -434,37 +418,27 @@ public class UserController {
} }
/** /**
* 人员统计 * 运维公司
*/ */
@GetMapping("/user/statistics") @GetMapping("/maintenanceCompany")
public R<Map<String, Object>> user() { public R<List<User>> maintenanceCompany() {
Map<String, Object> map = new HashMap<>(); BladeUser user = AuthUtil.getUser();
// 实际人员数量 List<User> users = new ArrayList<>();
// 判断是否运维公司
if ("运维公司".equals(user.getRoleName())) {
User byId = userService.getById(user.getUserId());
users.add(byId);
return R.data(users);
} else {
// 获取运维公司角色id
String roleId = sysClient.getRoleIdByAlias(AuthUtil.getTenantId(), "运维公司").getData();
// 查当前操作人部门下的运维公司
LambdaQueryWrapper<User> wrapper = new LambdaQueryWrapper<>(); LambdaQueryWrapper<User> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(User::getIsDeleted, 0); wrapper.in(User::getDeptId, Func.toStrList(user.getDeptId()));
wrapper.eq(User::getTenantId, 704067L); wrapper.eq(User::getRoleId, roleId);
int count = userService.count(wrapper); users = userService.list(wrapper);
// 额定人数 return R.data(users);
double rated = 40.00; }
double actual = 0.00;
actual += count;
// 满编率
int rate = 0;
if (rated > 0) {
rate = (int) (actual / rated * 100);
}
// 硕士及以上人数
wrapper.clear();
wrapper.eq(User::getTenantId, 704067L);
wrapper.eq(User::getEducation, "2");
int count1 = userService.count(wrapper);
// 硕士以下人数
int count2 = count - count1;
map.put("rated", 40);
map.put("actual", count);
map.put("rate", rate);
map.put("masterUp", count1);
map.put("masterLo", count2);
return R.data(map);
} }
} }

Loading…
Cancel
Save