Commit ced9d38e authored by itcast's avatar itcast

服务库服务基础管理接口

parent 3fc311df
......@@ -77,6 +77,10 @@
<version>1.2.62</version>
</dependency>
<!-- <dependency>-->
<!-- <groupId>io.jsonwebtoken</groupId>-->
<!-- <artifactId>jjwt</artifactId>-->
......
......@@ -20,11 +20,11 @@ import java.util.TimeZone;
@SpringBootApplication
@MapperScan(basePackages = {"com.pms.ocp.mapper"})
//@ConfigurationPropertiesScan
//@EnableOpenApi
@ConfigurationPropertiesScan
@EnableOpenApi
public class OcpApplication {
public static void main(String[] args) {
// TimeZone.setDefault(TimeZone.getTimeZone("GMT+8"));
TimeZone.setDefault(TimeZone.getTimeZone("GMT+8"));
SpringApplication.run(OcpApplication.class, args);
}
......
......@@ -76,9 +76,11 @@ public class ExcelUtils {
//当前日期
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
fileName = df.format(new Date());
}
Workbook workbook = ExcelExportUtil.exportExcel(new ExportParams(fileName, fileName, ExcelType.XSSF), pojoClass, list);
response.setCharacterEncoding("UTF-8");
response.setHeader("content-Type", "application/vnd.ms-excel");
response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(fileName, "UTF-8") + ".xls");
ServletOutputStream out = response.getOutputStream();
......@@ -104,7 +106,6 @@ public class ExcelUtils {
exportExcel(response, fileName, targetList, targetClass);
}
/**
* Excel导出----设置title---sheetName---要求Collection<?> list是Class<?> pojoClass类型的
*
......@@ -128,5 +129,4 @@ public class ExcelUtils {
out.flush();
}
}
package com.pms.ocp.common.utils;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFCellStyle;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.formula.functions.T;
import org.apache.poi.ss.usermodel.BorderStyle;
import org.apache.poi.ss.usermodel.Font;
import org.apache.poi.ss.usermodel.HorizontalAlignment;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.OutputStream;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import java.util.Map;
/**
* 文件导出工具
* @author abc
* @date 2019/01/08
*/
public class FileExport {
private static final Logger logger = LoggerFactory.getLogger(FileExport.class);
/** CSV文件列分隔符 */
private static final String CSV_COLUMN_SEPARATOR = ",";
private static final String CSV_COLUM_TABLE = "\t";
/** CSV文件列分隔符 */
private static final String CSV_RN = "\r\n";
/**
* 导出Excel文件
*
* @param excelHeader
* 导出文件中表格头
* @param list
* 导出的内容
* @param response
* HttpServletResponse对象,用来获得输出流向客户端写导出的文件
* @param sheetName
* Excel的sheet名称,加上时间戳作为导出文件的名称
*/
public static void exportExcel(String [] excelHeader, List<Object> list, String sheetName, HttpServletResponse response, HttpServletRequest request) {
HSSFWorkbook wb = new HSSFWorkbook();
HSSFSheet sheet = wb.createSheet(sheetName);
HSSFRow row = sheet.createRow((int) 0);
/******设置单元格是否显示网格线******/
sheet.setDisplayGridlines(true);
/******设置头单元格样式******/
HSSFCellStyle style = wb.createCellStyle();
style.setAlignment(HorizontalAlignment.CENTER);
Font fontHeader = wb.createFont();
fontHeader.setBold(true);
fontHeader.setFontHeight((short) 240);
style.setFont(fontHeader);
style.setBorderBottom(BorderStyle.THIN);
style.setBorderLeft(BorderStyle.THIN);
style.setBorderRight(BorderStyle.THIN);
style.setBorderTop(BorderStyle.THIN);
/******设置头内容******/
for (int i = 0; i < excelHeader.length; i++) {
HSSFCell cell = row.createCell(i);
cell.setCellValue(" " +excelHeader[i] + " ");
cell.setCellStyle(style);
}
/******设置内容单元格样式******/
HSSFCellStyle styleCell = wb.createCellStyle();
Font fontCell = wb.createFont();
// fontCell.setColor(HSSFColor.BLACK.index);
// fontCell.setColor(HSSFColor.B);
styleCell.setAlignment(HorizontalAlignment.CENTER);
styleCell.setFont(fontCell);
styleCell.setBorderBottom(BorderStyle.THIN);
styleCell.setBorderLeft(BorderStyle.THIN);
styleCell.setBorderRight(BorderStyle.THIN);
styleCell.setBorderTop(BorderStyle.THIN);
/******设置单元格内容******/
for (int i = 0; i < list.size(); i++) {
row = sheet.createRow(i + 1);
/******设置行高******/
row.setHeightInPoints(20);
Object[] obj = (Object[]) list.get(i);
for (int j = 0; j < excelHeader.length; j++) {
styleCell.setWrapText(false);
HSSFCell cell = row.createCell(j);
if (obj[j] != null){
cell.setCellValue(obj[j].toString());
}else{
cell.setCellValue("");
}
// if(obj[j].toString().length()>20)
// styleCell.setWrapText(true);
cell.setCellStyle(styleCell);
sheet.autoSizeColumn(j);
}
}
OutputStream ouputStream = null;
try {
String encoding = "UTF-8";
/** 获取浏览器相关的信息 */
String userAgent = request.getHeader("user-agent");
/** 判断是否为msie浏览器 */
if (userAgent.toLowerCase().indexOf("msie") != -1){
encoding = "gbk";
}
response.setCharacterEncoding(encoding);
response.setContentType("application/vnd.ms-excel");
String fileName = sheetName;
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMddHHMMSS");
fileName += (dateFormat.format(new Date())).toString()+".xls";
response.setHeader("Content-disposition", "attachment;filename=" + URLEncoder.encode(fileName, encoding));
ouputStream = response.getOutputStream();
wb.write(ouputStream);
ouputStream.flush();
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if(ouputStream!=null) {
ouputStream.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
/**
* 导出CSV文件
* @param dataList 集合数据
* @param colNames 表头部数据
* @param mapKey 查找的对应数据
*/
public static boolean doExport(List<Map<String, Object>> dataList, String colNames, String mapKey, OutputStream os) {
try {
StringBuffer buf = new StringBuffer();
String[] colNamesArr = null;
String[] mapKeyArr = null;
colNamesArr = colNames.split(",");
mapKeyArr = mapKey.split(",");
/******完成数据csv文件的封装******/
/******输出列头******/
for (int i = 0; i < colNamesArr.length; i++) {
buf.append(colNamesArr[i]).append(CSV_COLUMN_SEPARATOR);
}
buf.append(CSV_RN);
if (null != dataList) {
/******输出数据******/
for (int i = 0; i < dataList.size(); i++) {
for (int j = 0; j < mapKeyArr.length; j++) {
buf.append(dataList.get(i).get(mapKeyArr[j])).append(CSV_COLUM_TABLE).append(CSV_COLUMN_SEPARATOR);
}
buf.append(CSV_RN);
}
}
/******写出响应******/
os.write(buf.toString().getBytes("GBK"));
os.flush();
return true;
} catch (Exception e) {
logger.error("doExport错误...", e);
}
return false;
}
/**
* 设置响应格式
* @param fileName
* @param response
* @throws UnsupportedEncodingException
*/
public static void responseSetProperties(String fileName, HttpServletResponse response) throws UnsupportedEncodingException {
/******设置文件后缀******/
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
String fn = fileName + sdf.format(new Date()).toString() + ".csv";
/******读取字符编码******/
String utf = "UTF-8";
/******设置响应******/
response.setContentType("application/ms-txt.numberformat:@");
response.setCharacterEncoding(utf);
response.setHeader("Pragma", "public");
response.setHeader("Cache-Control", "max-age=30");
response.setHeader("Content-Disposition", "attachment; filename=" + URLEncoder.encode(fn, utf));
}
}
package com.pms.ocp.common.utils;
import cn.afterturn.easypoi.excel.ExcelImportUtil;
import cn.afterturn.easypoi.excel.entity.ImportParams;
import org.springframework.web.multipart.MultipartFile;
import java.util.List;
import java.util.NoSuchElementException;
/**
* 导入工具类
*/
public class FileUtil {
public static <T> List<T> importExcel(MultipartFile file, Integer titleRows, Integer headerRows, Class<T> pojoClass)
throws Exception {
if (file == null) {
return null;
}
ImportParams params = new ImportParams();
params.setTitleRows(titleRows);
params.setHeadRows(headerRows);
List<T> list = null;
try {
list = ExcelImportUtil.importExcel(file.getInputStream(), pojoClass, params);
} catch (NoSuchElementException e) {
throw new Exception("excel文件不能为空");
} catch (Exception e) {
throw new Exception(e.getMessage());
}
return list;
}
}
package com.pms.ocp.controller;
import com.pms.ocp.common.utils.ExcelUtils;
import com.pms.ocp.common.utils.FileExport;
import com.pms.ocp.common.utils.FileUtil;
import com.pms.ocp.model.dto.OcpApiBaseDto;
import com.pms.ocp.model.entity.OcpApiBase;
import com.pms.ocp.model.vo.OcpApiBaseVo;
import com.pms.ocp.model.vo.ResponseVO;
import com.pms.ocp.service.ApiBasicManagementService;
import com.pms.ocp.service.ApiDetailsService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.*;
import java.net.URLEncoder;
import java.sql.Timestamp;
import java.time.LocalDate;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
@Slf4j
@RequestMapping("/api/basic")
@RestController
@Api(tags = "服务库服务基础管理接口")
public class ApiBasicManagementController {
@Autowired
private ApiDetailsService apiDetailsService;
@Autowired
private ApiBasicManagementService apiBasicManagementService;
@ApiOperation("条件查询")
@GetMapping("/queryOcpApiBaseDto")
public ResponseVO queryOcpApiBaseDto(@RequestParam(required = false) String apiCode,
@RequestParam(required = false) String keyword,
@RequestParam(required = false) String apiUnits,
@RequestParam(required = false) Timestamp startTime,
@RequestParam(required = false) Timestamp endTime,
@RequestParam(required = false) int pageSize,
@RequestParam(required = false) int pageNum
) {
OcpApiBaseDto ocpApiBaseDto = apiBasicManagementService.queryOcpApiBaseDto(apiCode, keyword, apiUnits, startTime, endTime, pageSize
, pageNum);
return ResponseVO.ok(ocpApiBaseDto);
}
@ApiOperation("导入功能")
@PostMapping("/import")
public ResponseVO ApiImport(@RequestParam(required = false) MultipartFile file,
HttpServletRequest request) throws Exception {
if (file == null) {
return ResponseVO.ok("导入数据不能为空");
}
System.out.println(file);//用来检查前端是否把文件传过来
//解析excel,
List<OcpApiBaseVo> personList = FileUtil.importExcel(file, 0, 1, OcpApiBaseVo.class);
//也可以使用FileUtil.importExcel(filePath,1,1,FileEntity.class) 导入
System.out.println("导入数据一共【" + personList.size() + "】行");
apiBasicManagementService.apiImport(personList);
return ResponseVO.ok();
}
@ApiOperation("导出功能")
@GetMapping("/export")
public ResponseVO ApiExport(HttpServletResponse response,
@RequestParam(required = false) String apiCodes,
@RequestParam(required = false) String excelFileName) throws Exception {
if (StringUtils.isEmpty(apiCodes)) {
return ResponseVO.ok("请选择你要导出的数据");
}
List<OcpApiBaseVo> ocpApiBaseVoList = apiBasicManagementService.selectApiExport(apiCodes);
if (StringUtils.isEmpty(excelFileName)) {
excelFileName = "服务列表-";
}
//导出excel
ExcelUtils.exportExcel(response, excelFileName + LocalDate.now(), ocpApiBaseVoList, OcpApiBaseVo.class);
return ResponseVO.ok();
}
// @ApiOperation("下载模板")
//// @GetMapping("/download")
// @GetMapping(value = "/download", produces = "text/plain;charset=UTF-8")
// public void ApiDownload(HttpServletResponse response) throws IOException {
// String filePate = getClass().getResource("/template/233.xls").getPath();
// InputStream bis = new BufferedInputStream(new FileInputStream(new File(filePate)));
// //假如以中文名下载的话,设置下载文件名称
// String filename = "导入模板.xls";
// //转码,免得文件中文名中文乱码
// filename = URLEncoder.encode(filename, "UTF-8");
// //设置文件下载头
// response.addHeader("Content-Disposition", "attachment;filename=" + filename);
//// response.setHeader("Content-Length",bis.available()+"");
// //1.设置文件ContentType类型,这样设置.会自动判断下载文件类型
// response.setContentType("multipart/form-data");
// response.setCharacterEncoding("UTF-8");
//// response.setContentType("application/x-download");
// BufferedOutputStream out = new BufferedOutputStream(response.getOutputStream());
// int len = 0;
// byte[] bytes = new byte[65536];
//// bytes=bytes.toString().getBytes("GBK");
// while ((len = bis.read(bytes)) != -1) {
// out.write(bytes,0,len);
// out.flush();
// }
// out.close();
//
// }
//@GetMapping("/downloadExcel")
//public void downloadExcel(HttpServletResponse response,HttpServletRequest request){
// try {
// String filename="233.xls";
// String encoding = "UTF-8";
// /** 获取浏览器相关的信息 */
// String userAgent = request.getHeader("user-agent");
// /** 判断是否为msie浏览器 */
// if (userAgent.toLowerCase().indexOf("msie") != -1){
// encoding = "gbk";
// }
// response.setHeader("Content-disposition", "attachment;filename=" + filename);
// response.setContentType("application/vnd.ms-excel;charset=UTF-8");
// String filePath = getClass().getResource("/template/" + filename).getPath();
// FileInputStream input = new FileInputStream(filePath);
// OutputStream outputStream = response.getOutputStream();
// byte[] b = new byte[2048];
// int len;
// while ((len=input.read(b))!=-1){
// outputStream.write(b,0,len);
// }
// response.setHeader("Content-Length",String.valueOf(input.getChannel().size()));
// input.close();
// }catch (Exception ex){
// log.error("xx:",ex);
// }
//}
@ApiOperation("下载模块")
@GetMapping("/downloadExcel")
public void downloadExcel(HttpServletResponse response, HttpServletRequest request) {
String[] excelHeader = {"序号", "服务编码", "服务中文名称", "所属集群", "所属命名空间", "接口URL", "状态", "注册时间", "建设单位"};
List<Object> list = new ArrayList<>();
FileExport.exportExcel(excelHeader, list, "XXX模板", response, request);
}
@ApiOperation("服务注册")
@PostMapping("/add")
public ResponseVO addOcpApiBase(@RequestBody OcpApiBase ocpApiBase) {
apiBasicManagementService.addOcpApiBase(ocpApiBase);
return ResponseVO.ok();
}
@ApiOperation("服务订阅")
@PostMapping("/login")
public ResponseVO ApiLogin(@RequestParam(required = false) String apiPromotion,
@RequestParam(required = false) String apiCodes) {
if (StringUtils.isEmpty(apiPromotion) || apiPromotion.equals("0")) {
return ResponseVO.error("统招");
} else {
apiBasicManagementService.apiLogin(apiCodes);
return ResponseVO.ok();
}
}
@ApiOperation("服务发布")
@PostMapping("/issue")
public ResponseVO ApiIssue(@RequestParam(required = false) String apiPromotion,
@RequestParam(required = false) String apiCodes) {
if (StringUtils.isEmpty(apiPromotion) || apiPromotion.equals("0")) {
return ResponseVO.error("统招");
} else {
apiBasicManagementService.apiIssue(apiCodes);
return ResponseVO.ok();
}
}
}
package com.pms.ocp.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.pms.ocp.model.dto.OcpApiBaseDto;
import com.pms.ocp.model.entity.OcpApiBase;
import com.pms.ocp.model.vo.OcpApiBaseVo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.sql.Timestamp;
import java.util.List;
@Mapper
public interface ApiBasicManagementMapper extends BaseMapper<OcpApiBase> {
List<OcpApiBaseVo> selectApiExport(List<String> list);
OcpApiBaseDto queryOcpApiBaseDto(@Param("keyword") String keyword,@Param("list") List<String> list, @Param("startTime") Timestamp startTime, @Param("endTime") Timestamp endTime, @Param("apiCode") String apiCode, @Param("pageSize") int pageSize, @Param("pageNum") int pageNum);
}
......@@ -2,9 +2,15 @@ package com.pms.ocp.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.pms.ocp.model.entity.OcpApiBase;
import com.pms.ocp.model.vo.OcpApiBaseVo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
@Mapper
public interface ApiDetailsMapper extends BaseMapper<OcpApiBase> {
}
package com.pms.ocp.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.pms.ocp.model.entity.OcpApiExtent;
import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface OcpApiExtentMapper extends BaseMapper<OcpApiExtent> {
}
package com.pms.ocp.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.pms.ocp.model.entity.OcpApiSubs;
import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface OcpApiSubsMapper extends BaseMapper<OcpApiSubs> {
}
package com.pms.ocp.model.dto;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.format.annotation.DateTimeFormat;
import java.io.Serializable;
import java.sql.Timestamp;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class ApiBaseDto implements Serializable {
/**
* 服务编码
*/
private String ApiCode;
/**
* 建设单位
*/
private String apiUnit;
/**
* 注册时段-开始
*/
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Timestamp startTime;
/**
* 注册时段-结束
*/
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Timestamp endTime;
/**
* 关键字
*/
private String keyword;
}
package com.pms.ocp.model.dto;
import cn.afterturn.easypoi.excel.annotation.Excel;
import com.pms.ocp.model.entity.OcpApiBase;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
@Data
@AllArgsConstructor
@NoArgsConstructor
@ApiModel(value = "服务基础信息表dto")
public class OcpApiBaseDto extends OcpApiBase implements Serializable {
@ApiModelProperty("所属集群")
private String clusterName;
@ApiModelProperty("所属命名空间")
private String spaceName;
@ApiModelProperty( "状态")
private String apiState;
}
package com.pms.ocp.model.dto;
import com.pms.ocp.model.entity.OcpTenantBase;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
@Data
@AllArgsConstructor
@NoArgsConstructor
@ApiModel(value = "应用信息表dto")
public class OcpTenantBaseDto extends OcpTenantBase implements Serializable {
@ApiModelProperty("应用分类名称")
private String tenantGroupName;
@ApiModelProperty("集群名称")
private String clusterName;
@ApiModelProperty("命名空间")
private String spaceName;
}
......@@ -3,7 +3,9 @@ package com.pms.ocp.model.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @Auther: wangjian
......
......@@ -24,7 +24,7 @@ public class OcpApiBase {
private String apiCode;
@ApiModelProperty("服务接口中文名称")
private String apiName;
private String apiName;
@ApiModelProperty("服务分类代码")
private String apiGroupCode;
......
......@@ -9,6 +9,7 @@ import lombok.Data;
import lombok.experimental.Accessors;
import java.io.Serializable;
import java.sql.Timestamp;
import java.util.Date;
/**
......@@ -79,13 +80,13 @@ public class OcpTenantBase implements Serializable {
* 创建时间
*/
@ApiModelProperty("创建时间")
private Date tenantCtime;
private Timestamp tenantCtime;
/**
* 最后更新时间
*/
@ApiModelProperty("最后更新时间")
private Date tenantMtime;
private Timestamp tenantMtime;
/**
* 部署名称
......@@ -285,7 +286,7 @@ public class OcpTenantBase implements Serializable {
/**
* 创建时间
*/
public void setTenantCtime(Date tenantCtime) {
public void setTenantCtime(Timestamp tenantCtime) {
this.tenantCtime = tenantCtime;
}
......@@ -299,7 +300,7 @@ public class OcpTenantBase implements Serializable {
/**
* 最后更新时间
*/
public void setTenantMtime(Date tenantMtime) {
public void setTenantMtime(Timestamp tenantMtime) {
this.tenantMtime = tenantMtime;
}
......
......@@ -9,6 +9,7 @@ import lombok.Data;
import lombok.experimental.Accessors;
import java.io.Serializable;
import java.sql.Timestamp;
import java.util.Date;
/**
......@@ -43,13 +44,13 @@ public class OcpTenantSubs implements Serializable {
* 服务订阅创建时间
*/
@ApiModelProperty("服务订阅创建时间")
private Date subsLogTenantCtime;
private Timestamp subsLogTenantCtime;
/**
* 服务订阅修改时间
*/
@ApiModelProperty("服务订阅修改时间")
private Date subsLogTenantMtime;
private Timestamp subsLogTenantMtime;
/**
* 服务订阅创建用户ID
......@@ -61,7 +62,7 @@ public class OcpTenantSubs implements Serializable {
* 服务订阅添加时间
*/
@ApiModelProperty("服务订阅添加时间")
private Date subsLogTenantAtime;
private Timestamp subsLogTenantAtime;
/**
* 是否删除0-否,1-是
......@@ -123,7 +124,7 @@ public class OcpTenantSubs implements Serializable {
/**
* 服务订阅创建时间
*/
public void setSubsLogTenantCtime(Date subsLogTenantCtime) {
public void setSubsLogTenantCtime(Timestamp subsLogTenantCtime) {
this.subsLogTenantCtime = subsLogTenantCtime;
}
......@@ -137,7 +138,7 @@ public class OcpTenantSubs implements Serializable {
/**
* 服务订阅修改时间
*/
public void setSubsLogTenantMtime(Date subsLogTenantMtime) {
public void setSubsLogTenantMtime(Timestamp subsLogTenantMtime) {
this.subsLogTenantMtime = subsLogTenantMtime;
}
......@@ -165,7 +166,7 @@ public class OcpTenantSubs implements Serializable {
/**
* 服务订阅添加时间
*/
public void setSubsLogTenantAtime(Date subsLogTenantAtime) {
public void setSubsLogTenantAtime(Timestamp subsLogTenantAtime) {
this.subsLogTenantAtime = subsLogTenantAtime;
}
......
package com.pms.ocp.model.vo;
import cn.afterturn.easypoi.excel.annotation.Excel;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.beans.factory.annotation.Value;
import java.io.Serializable;
import java.sql.Timestamp;
import java.time.LocalDateTime;
@Data
@AllArgsConstructor
@NoArgsConstructor
@ApiModel(value = "服务列表信息vo")
public class OcpApiBaseVo implements Serializable {
@ApiModelProperty(value = "序号")
@Excel(name = "序号")
private String objId;
@ApiModelProperty(value = "服务编码")
@Excel(name = "服务编码")
private String apiCode;
@ApiModelProperty(value = "服务中文名称")
@Excel(name = "服务中文名称")
private String apiName;
@ApiModelProperty(value = "所属集群")
@Excel(name = "所属集群")
private String clusterName;
@ApiModelProperty(value = "所属命名空间")
@Excel(name = "所属命名空间")
private String spaceName;
@ApiModelProperty(value = "接口URL")
@Excel(name = "接口URL")
private String apiUrl;
@ApiModelProperty(value = "状态")
@Excel(name = "状态")
private String apiState;
@ApiModelProperty(value = "注册时间")
@Excel(name = "注册时间")
private Timestamp apiCtime;
@ApiModelProperty(value = "建设单位")
@Excel(name = "建设单位")
private String apiUnit;
}
package com.pms.ocp.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.pms.ocp.model.dto.ApiBaseDto;
import com.pms.ocp.model.dto.OcpApiBaseDto;
import com.pms.ocp.model.entity.OcpApiBase;
import com.pms.ocp.model.entity.OcpApiExtent;
import com.pms.ocp.model.vo.OcpApiBaseVo;
import java.sql.Timestamp;
import java.util.List;
public interface ApiBasicManagementService extends IService<OcpApiBase> {
/**
* 导出的查询
* @param apiCode
* @return
*/
List<OcpApiBaseVo> selectApiExport(String apiCodes);
/**
* 服务注册
* @param ocpApiBase
*/
void addOcpApiBase(OcpApiBase ocpApiBase);
/**
* 服务订阅
* @param apiCodes
*/
void apiLogin(String apiCodes);
/**
* 条件查询
* @param apiCode
* @param keyword
* @param apiUnit
* @param startTime
* @param endTime
* @return
*/
// OcpApiBaseDto queryOcpApiBaseDto(ApiBaseDto apiBaseDto);
OcpApiBaseDto queryOcpApiBaseDto(String apiCode, String keyword, String apiUnits, Timestamp startTime, Timestamp endTime,int pageSize,int pageNum);
/**
* 导入的添加到数据库
* @param personList
*/
void apiImport(List<OcpApiBaseVo> personList);
/**
* 服务发布
* @param apiCodes
*/
void apiIssue(String apiCodes);
}
package com.pms.ocp.service;
import com.pms.ocp.model.entity.OcpApiBase;
import com.pms.ocp.model.vo.OcpApiBaseVo;
import com.pms.ocp.model.vo.ResponseVO;
import org.springframework.web.multipart.MultipartFile;
import java.io.IOException;
import java.util.List;
public interface ApiDetailsService{
/**
......@@ -10,4 +16,6 @@ public interface ApiDetailsService{
* @return
*/
ResponseVO getApiDetails(String objId);
}
package com.pms.ocp.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.pms.ocp.model.entity.OcpApiExtent;
public interface OcpApiExtentService extends IService<OcpApiExtent> {
}
package com.pms.ocp.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.pms.ocp.model.entity.OcpApiSubs;
public interface OcpApiSubsService extends IService<OcpApiSubs> {
}
package com.pms.ocp.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.IService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.pms.ocp.common.exception.BeagleException;
import com.pms.ocp.mapper.ApiBasicManagementMapper;
import com.pms.ocp.mapper.OcpApiExtentMapper;
import com.pms.ocp.model.dto.ApiBaseDto;
import com.pms.ocp.model.dto.OcpApiBaseDto;
import com.pms.ocp.model.entity.OcpApiBase;
import com.pms.ocp.model.entity.OcpApiExtent;
import com.pms.ocp.model.entity.OcpApiSubs;
import com.pms.ocp.model.vo.OcpApiBaseVo;
import com.pms.ocp.model.vo.ResponseVO;
import com.pms.ocp.service.ApiBasicManagementService;
import com.pms.ocp.service.OcpApiExtentService;
import com.pms.ocp.service.OcpApiSubsService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.sql.Timestamp;
import java.time.LocalDateTime;
import java.util.Arrays;
import java.util.List;
@Service
public class ApiBasicManagementServiceImpl extends ServiceImpl<ApiBasicManagementMapper, OcpApiBase>
implements ApiBasicManagementService {
@Autowired
private ApiBasicManagementMapper apiBasicManagementMapper;
@Autowired
private OcpApiSubsService ocpApiSubsService;
@Autowired
private OcpApiExtentService ocpApiExtentService;
@Autowired
private OcpApiExtentMapper ocpApiExtentMapper;
/**
* 导出查询
*
* @param apiCodes
* @return
*/
public List<OcpApiBaseVo> selectApiExport(String apiCodes) {
String[] split = apiCodes.split(",");
List<String> list = Arrays.asList(split);
return apiBasicManagementMapper.selectApiExport(list);
}
/**
* 服务注册
*
* @param ocpApiBase
*/
public void addOcpApiBase(OcpApiBase ocpApiBase) {
apiBasicManagementMapper.insert(ocpApiBase);
}
/**
* 服务订阅
*
* @param apiCodes
*/
public void apiLogin(String apiCodes) {
String[] split = apiCodes.split(",");
List<String> apiCode = Arrays.asList(split);
for (String s : apiCode) {
OcpApiSubs ocpApiSubs = new OcpApiSubs();
ocpApiSubs.setApiCode(s);
ocpApiSubs.setSubsLogApiCtime(Timestamp.valueOf(LocalDateTime.now()));
ocpApiSubs.setSubsLogApiMtime(Timestamp.valueOf(LocalDateTime.now()));
ocpApiSubs.setSubsLogApiUserId(null);
ocpApiSubs.setSubsLogApiAtime(Timestamp.valueOf(LocalDateTime.now()));
ocpApiSubs.setSubsCompanyCode(null);
ocpApiSubsService.save(ocpApiSubs);
}
}
/**
* 条件查询
*
* @param apiCode
* @param keyword
* @param apiUnits
* @param startTime
* @param endTime
* @return
*/
public OcpApiBaseDto queryOcpApiBaseDto(String apiCode, String keyword, String apiUnits, Timestamp startTime, Timestamp endTime, int pageSize, int pageNum) {
String[] split = apiUnits.split(",");
List<String> list = Arrays.asList(split);
pageSize = (pageSize - 1) * pageNum;
OcpApiBaseDto ocpApiBaseDto = apiBasicManagementMapper.queryOcpApiBaseDto(keyword, list, startTime, endTime, apiCode, pageSize, pageNum);
return ocpApiBaseDto;
}
/**
* 导入添加到数据库
*
* @param personList
*/
public void apiImport(List<OcpApiBaseVo> personList) {
for (OcpApiBaseVo ocpApiBaseVo : personList) {
String apiCode = ocpApiBaseVo.getApiCode();
Timestamp apiCtime = ocpApiBaseVo.getApiCtime();
String apiName = ocpApiBaseVo.getApiName();
String apiUnit = ocpApiBaseVo.getApiUnit();
String apiUrl = ocpApiBaseVo.getApiUrl();
String apiState = ocpApiBaseVo.getApiState();
String spaceName = ocpApiBaseVo.getSpaceName();
String clusterName = ocpApiBaseVo.getClusterName();
OcpApiBase ocpApiBase = new OcpApiBase();
ocpApiBase.setApiCode(apiCode);
ocpApiBase.setApiGroupCode("1");
ocpApiBase.setApiCtime(apiCtime);
ocpApiBase.setApiName(apiName);
ocpApiBase.setApiUnit(apiUnit);
ocpApiBase.setApiUrl(apiUrl);
this.save(ocpApiBase);
OcpApiExtent ocpApiExtent = new OcpApiExtent();
ocpApiExtent.setApiCode(apiCode);
ocpApiExtent.setApiState(apiState);
ocpApiExtent.setSpaceName(spaceName);
ocpApiExtent.setClusterName(clusterName);
ocpApiExtentService.save(ocpApiExtent);
}
}
/**
* 服务发布
*
* @param apiCodes
*/
public void apiIssue(String apiCodes) {
String[] split = apiCodes.split(",");
List<String> list = Arrays.asList(split);
LambdaQueryWrapper<OcpApiExtent> lambdaQueryWrapper = new LambdaQueryWrapper<>();
lambdaQueryWrapper.in(OcpApiExtent::getApiCode, list);
List<OcpApiExtent> ocpApiExtents = ocpApiExtentMapper.selectList(lambdaQueryWrapper);
for (OcpApiExtent ocpApiExtent : ocpApiExtents) {
if (ocpApiExtent.getApiState().equals("1")) {
throw new BeagleException("已发布");
} else {
ocpApiExtent.setApiState("1");
ocpApiExtentMapper.updateById(ocpApiExtent);
}
}
}
}
package com.pms.ocp.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.pms.ocp.mapper.ApiDetailsMapper;
import com.pms.ocp.model.entity.OcpApiBase;
import com.pms.ocp.model.entity.OcpApiExtent;
import com.pms.ocp.model.entity.OcpApiSubs;
import com.pms.ocp.model.vo.OcpApiBaseVo;
import com.pms.ocp.model.vo.ResponseVO;
import com.pms.ocp.service.ApiDetailsService;
import com.pms.ocp.service.OcpApiExtentService;
import com.pms.ocp.service.OcpApiSubsService;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;
import org.springframework.web.multipart.MultipartFile;
import java.io.IOException;
import java.sql.Timestamp;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
@Service
public class ApiDetailsServiceImpl implements ApiDetailsService {
@Autowired
private ApiDetailsMapper apiDetailsMapper;
@Override
public ResponseVO getApiDetails(String objId) {
OcpApiBase ocpApiBase = apiDetailsMapper.selectById(objId);
return ResponseVO.ok(ocpApiBase);
}
}
package com.pms.ocp.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.pms.ocp.mapper.OcpApiExtentMapper;
import com.pms.ocp.model.entity.OcpApiExtent;
import com.pms.ocp.service.OcpApiExtentService;
import org.springframework.stereotype.Service;
@Service
public class OcpApiExtentServiceImpl extends ServiceImpl<OcpApiExtentMapper, OcpApiExtent> implements OcpApiExtentService {
}
package com.pms.ocp.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.pms.ocp.mapper.OcpApiSubsMapper;
import com.pms.ocp.model.entity.OcpApiSubs;
import com.pms.ocp.service.OcpApiSubsService;
import org.springframework.stereotype.Service;
@Service
public class OcpApiSubsServiceImpl extends ServiceImpl<OcpApiSubsMapper, OcpApiSubs> implements OcpApiSubsService {
}
spring:
datasource:
driver-class-name: org.postgresql.Driver
# jdbc-url: jdbc:postgresql://192.168.43.20:33072/pms3?currentSchema=public&stringtype=unspecified&TimeZone=Asia/Shanghai&useAffectedRows=true
# jdbc-url: jdbc:postgresql://172.20.10.9:33072/pms3?currentSchema=public&stringtype=unspecified&TimeZone=Asia/Shanghai&useAffectedRows=true
url: jdbc:postgresql://localhost:5432/pms3?stringtype=unspecified&TimeZone=Asia/Shanghai&useAffectedRows=true
username: postgres
password: 1234qwer
password: root
type: com.zaxxer.hikari.HikariDataSource
# jdbc-url: jdbc:postgresql://192.168.43.20:33072/pms3?currentSchema=public&stringtype=unspecified&TimeZone=Asia/Shanghai&useAffectedRows=true
# jdbc-url: jdbc:postgresql://172.20.10.9:33072/pms3?currentSchema=public&stringtype=unspecified&TimeZone=Asia/Shanghai&useAffectedRows=true
url: jdbc:postgresql://localhost:5432/server?currentSchema=operating_platform&stringtype=unspecified&TimeZone=Asia/Shanghai&useAffectedRows=true
knife4j:
enable: true
......
<?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="com.pms.ocp.mapper.ApiBasicManagementMapper">
<select id="selectApiExport" resultType="com.pms.ocp.model.vo.OcpApiBaseVo">
SELECT oab.obj_id,
oab.api_code,oab.api_name,oab.api_ctime,oab.api_unit
,oab.api_url,oab.api_unit,oab.api_ctime,oae.cluster_name cluster_name ,oae.space_name space_name,
oae.api_state api_state
FROM ocp_api_base oab JOIN ocp_api_extent oae ON oae.api_code = oab.api_code
where oab.api_code in
<foreach collection="list" index="index" item="apiCode" open="(" separator="," close=")">
#{apiCode}
</foreach>
</select>
<select id="queryOcpApiBaseDto" resultType="com.pms.ocp.model.dto.OcpApiBaseDto">
select oab.obj_id,oab.api_code,oae.api_code,oab.api_name,oae.cluster_name,
oae.space_name,oab.api_url,oae.api_state ,oab.api_unit ,oab.api_ctime from ocp_api_base oab
join ocp_api_extent oae ON oae.api_code = oab.api_code
<where>
<if test="apiCode!=null and apiCode!=''">
and oab.api_code=#{apiCode}
</if>
<if test="apiCode!=null and apiCode!=''">
and oae.api_code=#{apiCode}
</if>
<!-- <if test="apiUnit !=null and apiUnit!=''">-->
<!-- and oab.api_unit=#{apiUnit}-->
<!-- </if>-->
<if test="startTime !=null ">
<![CDATA[
and oab.api_ctime >= #{startTime}
]]>
</if>
<if test="endTime !=null ">
<![CDATA[
and oab.api_ctime <= #{endTime}
]]>
</if>
<if test="keyword !=null and keyword != '' ">
and oab.api_code like CONCAT('%', #{keyword}::text,'%')
</if>
<if test="keyword !=null and keyword != '' ">
and oab.api_name like CONCAT('%', #{keyword}::text,'%')
</if>
<if test="list!=null">
and oab.api_unit in
<foreach collection="list" index="index" item="apiUnit" open="(" separator="," close=")">
#{apiUnit}
</foreach>
</if>
</where>
limit #{pageNum} offset #{pageSize}
</select>
</mapper>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.pms.ocp.mapper.ApiDetailsMapper">
</mapper>
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment