Commit 8f9e47ea authored by 王锦盛's avatar 王锦盛

模型导入功能

parent 659df783
package com.pms.ocp.common.constants;
import com.pms.ocp.common.exception.ServiceException;
import org.apache.poi.ss.usermodel.Workbook;
import javax.servlet.ServletOutputStream;
......@@ -16,11 +17,12 @@ public class ExportUtils {
/**
* 校验Header Manipulation
*
* @param header 参数
* @return 数据
*/
public static String headerManipulation(String header) {
if(StringUtils.isNullOrEmpty(header)){
if (StringUtils.isNullOrEmpty(header)) {
return header;
}
String regex = "[`~!@#$%^&*()\\+\\=\\{}|:\"?><【】\\/r\\/n]";
......@@ -55,9 +57,9 @@ public class ExportUtils {
out.flush();
} catch (IOException e) {
e.printStackTrace();
throw new ServiceException(com.pms.ocp.common.constants.ResultCodee.INTERNAL_SERVER_ERROR);
throw new ServiceException(ResultCode.INTERNAL_SERVER_ERROR);
} finally {
if (out != null){
if (out != null) {
try {
out.close();
} catch (IOException e) {
......@@ -78,6 +80,7 @@ public class ExportUtils {
/**
* Workbook导出浏览器
* 文件导出添加跨域 Access-Control-Allow-Origin
*
* @param response
* @param fileName
* @param workbook
......@@ -94,7 +97,7 @@ public class ExportUtils {
workbook.write(outputStream);
} catch (IOException e) {
e.printStackTrace();
throw new ServiceException(com.pms.ocp.common.constants.ResultCodee.INTERNAL_SERVER_ERROR);
throw new ServiceException(ResultCode.INTERNAL_SERVER_ERROR);
}
}
......@@ -142,7 +145,7 @@ public class ExportUtils {
}
} catch (IOException e) {
e.printStackTrace();
throw new ServiceException(ResultCodee.INTERNAL_SERVER_ERROR);
throw new ServiceException(ResultCode.INTERNAL_SERVER_ERROR);
}
}
}
......@@ -3,7 +3,7 @@ package com.pms.ocp.common.constants;
/**
* 异常枚举类
*/
public enum ResultCodee {
public enum ResultCode {
/* ============================ 通用错误码 ========================== **/
/**
* 禁止访问 303
......@@ -154,7 +154,7 @@ public enum ResultCodee {
public final int statusCode;
public String msg;
ResultCodee(int statusCode, String msg) {
ResultCode(int statusCode, String msg) {
this.statusCode = statusCode;
this.msg = msg;
}
......
package com.pms.ocp.common.constants;
public class ServiceException extends RuntimeException {
private static final long serialVersionUID = -6914996666319154848L;
/**
* 状态编码
*/
public final int statusCode;
/**
* message信息
*/
public final String msg;
/**
* 数据对象
*/
public Object data;
public ServiceException(String message, ResultCodee resultCode) {
super(message);
this.statusCode = resultCode.statusCode;
this.msg = message;
}
public ServiceException(String message, ResultCodee resultCode, Object data) {
this(message, resultCode);
this.data = data;
}
public ServiceException(ResultCodee resultCode) {
this(resultCode.msg, resultCode);
}
public ServiceException(ResultCodee resultCode, Object data) {
this(resultCode.msg, resultCode, data);
}
}
package com.pms.ocp.common.exception;
import com.pms.ocp.common.constants.ResultCode;
/**
* @Auther: wangjian
* @Date: 2022/3/11 16:31
* @Description:
*/
public class ServiceException extends RuntimeException {
/**
* 自定义异常枚举类
*/
private ResultCode resultCode;
/**
* 错误码
*/
private int code;
/**
* 错误信息
*/
private String errorMsg;
public ServiceException() {
super();
}
public ServiceException(ResultCode resultCode) {
super("{code:" + resultCode.getStatusCode() + ",errorMsg:" + resultCode.getMessage() + "}");
this.resultCode = resultCode;
this.code = resultCode.getStatusCode();
this.errorMsg = resultCode.getMessage();
}
public ServiceException(int code, String errorMsg) {
super("{code:" + code + ",errorMsg:" + errorMsg + "}");
this.code = code;
this.errorMsg = errorMsg;
}
public ResultCode getErrorEnum() {
return resultCode;
}
public String getErrorMsg() {
return errorMsg;
}
public void setErrorMsg(String errorMsg) {
this.errorMsg = errorMsg;
}
public int getCode() {
return code;
}
public void setCode(int code) {
this.code = code;
}
}
package com.pms.ocp.common.utils;
import cn.afterturn.easypoi.excel.ExcelExportUtil;
import cn.afterturn.easypoi.excel.ExcelImportUtil;
import cn.afterturn.easypoi.excel.entity.ExportParams;
import cn.afterturn.easypoi.excel.entity.ImportParams;
import cn.afterturn.easypoi.excel.entity.enmus.ExcelType;
import com.pms.ocp.common.constants.ResultCode;
import com.pms.ocp.common.exception.BeagleException;
import com.pms.ocp.common.exception.ServiceException;
import org.apache.commons.lang3.StringUtils;
import org.apache.poi.ss.usermodel.Workbook;
import org.springframework.beans.BeanUtils;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.net.URLEncoder;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Date;
import java.util.List;
import java.util.*;
/**
* @author huxiuwu
......@@ -24,6 +29,12 @@ import java.util.List;
*/
public class ExcelUtils {
//xls 后缀
private static final String XLS = ".xls";
//xlsx 后缀
private static final String XLS_X = ".xlsx";
/**
* 导出excel通用方法
*
......@@ -129,4 +140,171 @@ public class ExcelUtils {
out.flush();
}
/**
* 下载
*
* @param fileName 文件名称
* @param response
* @param workbook excel数据
*/
private static void downLoadExcel(String fileName, HttpServletResponse response, Workbook workbook)
throws IOException {
try {
response.setCharacterEncoding("UTF-8");
response.setHeader("content-Type", "application/vnd.ms-excel");
response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(fileName + "." + ExcelTypeEnum.XLSX.getValue(), "UTF-8"));
workbook.write(response.getOutputStream());
} catch (Exception e) {
throw new IOException(e.getMessage());
}
}
/**
* excel 导入
*
* @param filePath excel文件路径
* @param titleRows 标题行
* @param headerRows 表头行
* @param pojoClass pojo类型
* @param <T>
* @return
*/
public static <T> List<T> importExcel(String filePath, Integer titleRows, Integer headerRows, Class<T> pojoClass)
throws IOException {
if (StringUtils.isBlank(filePath)) {
return null;
}
ImportParams params = new ImportParams();
params.setTitleRows(titleRows);
params.setHeadRows(headerRows);
params.setNeedSave(true);
params.setSaveUrl("/excel/");
try {
return ExcelImportUtil.importExcel(new File(filePath), pojoClass, params);
} catch (NoSuchElementException e) {
throw new IOException("模板不能为空");
} catch (Exception e) {
throw new IOException(e.getMessage());
}
}
/**
* excel 导入
*
* @param file excel文件
* @param pojoClass pojo类型
* @param <T>
* @return
*/
public static <T> List<T> importExcel(MultipartFile file, Class<T> pojoClass)
throws IOException {
return importExcel(file, 0, 1, pojoClass);
}
/**
* excel 导入
*
* @param file excel文件
* @param titleRows 标题行
* @param headerRows 表头行
* @param pojoClass pojo类型
* @param <T>
* @return
*/
public static <T> List<T> importExcel(MultipartFile file, Integer titleRows, Integer headerRows, Class<T> pojoClass)
throws IOException {
return importExcel(file, titleRows, headerRows, false, pojoClass);
}
/**
* excel 导入
*
* @param file 上传的文件
* @param titleRows 标题行
* @param headerRows 表头行
* @param needVerfiy 是否检验excel内容
* @param pojoClass pojo类型
* @param <T>
* @return
*/
public static <T> List<T> importExcel(MultipartFile file, Integer titleRows, Integer headerRows, boolean needVerfiy, Class<T> pojoClass)
throws IOException {
if (file == null) {
return null;
}
try {
return importExcel(file.getInputStream(), titleRows, headerRows, needVerfiy, pojoClass);
} catch (Exception e) {
throw new IOException(e.getMessage());
}
}
/**
* excel 导入
*
* @param inputStream 文件输入流
* @param titleRows 标题行
* @param headerRows 表头行
* @param needVerfiy 是否检验excel内容
* @param pojoClass pojo类型
* @param <T>
* @return
*/
public static <T> List<T> importExcel(InputStream inputStream, Integer titleRows, Integer headerRows, boolean needVerfiy, Class<T> pojoClass)
throws IOException {
if (inputStream == null) {
return null;
}
ImportParams params = new ImportParams();
params.setTitleRows(titleRows);
params.setHeadRows(headerRows);
params.setSaveUrl("/excel/");
params.setNeedSave(true);
params.setNeedVerify(needVerfiy);
try {
return ExcelImportUtil.importExcel(inputStream, pojoClass, params);
} catch (NoSuchElementException e) {
throw new IOException("excel文件不能为空");
} catch (Exception e) {
throw new IOException(e.getMessage());
}
}
/**
* 检查文件
*
* @param file
*/
public static void checkFile(MultipartFile file) {
if (file == null) {
throw new ServiceException(ResultCode.FILE_NOT_EXISTS);
}
String fileName = file.getOriginalFilename();
assert fileName != null;
if (!fileName.endsWith(XLS) && !fileName.endsWith(XLS_X)) {
throw new ServiceException(ResultCode.FILE_NOT_EXISTS);
}
}
/**
* Excel 类型枚举
*/
enum ExcelTypeEnum {
XLS("xls"), XLSX("xlsx");
private String value;
ExcelTypeEnum(String value) {
this.value = value;
}
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
}
}
......@@ -14,7 +14,9 @@ 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 java.io.IOException;
import java.util.List;
import static com.pms.ocp.common.constants.CodeEnum.REQUIRED_PARAMETER_EMPTY;
......@@ -143,6 +145,17 @@ public class ModelBaseController {
return modelService.updateModel(model);
}
/**
* 模型-导入
*
* @return
*/
@ApiOperation("模型-导入")
@PostMapping("/import/model")
public ResponseVO importModel(@RequestParam("file") MultipartFile file) throws IOException {
return ResponseVO.ok(modelService.importModel(file));
}
/**
* 模型-下发/批量下发
* TODO
......@@ -185,7 +198,7 @@ public class ModelBaseController {
@ApiOperation("模型订阅-删除/批量删除")
@PostMapping("/delete/model/subscribe")
public ResponseVO deleteModelSubscribe(@ApiParam(value = "订阅编号集合") @RequestBody List<String> ids) {
return ResponseVO.ok(modelIssueService.deletePatchModelIssue(ids));
return ResponseVO.ok(modelIssueService.deleteBatchModelIssue(ids));
}
/**
......@@ -273,7 +286,7 @@ public class ModelBaseController {
@ApiOperation("模型属性-删除/批量删除")
@PostMapping("/delete/model/property")
public ResponseVO deleteModelProperty(@ApiParam(value = "属性ID集合") @RequestBody List<String> ids) {
return ResponseVO.ok(modelPropertyService.deletePatchModelProperty(ids));
return ResponseVO.ok(modelPropertyService.deleteBatchModelProperty(ids));
}
/**
......
......@@ -3,6 +3,9 @@ package com.pms.ocp.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.pms.ocp.model.entity.Model;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* @Auther: wangjian
......@@ -12,4 +15,7 @@ import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface ModelMapper extends BaseMapper<Model> {
boolean insertBatchModel(@Param("modelList") List<Model> modelList);
}
......@@ -2,7 +2,7 @@ package com.pms.ocp.model;
public interface Response {
public static final boolean SUCCESS = true;
public static final int SUCCESS_CODE = 0;
boolean SUCCESS = true;
int SUCCESS_CODE = 0;
}
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 com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
......@@ -9,7 +8,6 @@ import lombok.experimental.Accessors;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
import java.util.Date;
/**
* @Auther: wangjian
......@@ -23,9 +21,9 @@ import java.util.Date;
public class Model {
/**
* 模型编号
* 模型关系编号
* 主键
*/
@TableId
private String objId;
/**
......@@ -44,47 +42,41 @@ public class Model {
private String equipType;
/**
* 所属专业
* 所属专业ts:输电,t:变电, dc:直流,ds配电,tc:技术,pl计划 im综合
*/
private String professionalKind;
private String professional_kind;
/**
* 模型分类编码
*/
private String modelGroupCode;
private String model_group_code;
/**
* 模型表
* 模型表名称
*/
private String modelTable;
private String model_table;
/**
* 是否启用
* 是否启用 0:未启用,1:启用
*/
private String isUse;
@TableField(value = "is_use")
private Integer boolUse;
/**
* 模型推广类型
* 0:统推,1:自建
* 模型推广类型 0:统推,1:自建
*/
private String modelPromotion;
private Integer modelPromotion;
/**
* 公司code
* 公司编码
*/
private String ownerCompanyCode;
/**
* 公司名称
*/
private String ownerCompanyName;
/**
* 排列顺序
*/
private String modelOrderNo;
private Integer modelOrderNo;
/**
* 提交人id
......@@ -100,36 +92,90 @@ public class Model {
/**
* 模型创建时间
*/
@TableField(value = "model_ctime")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
private Date modelCreateTime;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private LocalDateTime modelCtime;
/**
* 模型修改时间
*/
@TableField(value = "model_mtime")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
private Date modelUpdateTime;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private LocalDateTime modelMtime;
/**
* 是否已删除0:未删除 1:已删除
*/
@TableField(value = "is_delete")
private Integer boolDelete;
/**
* 所属区域1:生成控制大区 2:信息关联大区3:互联网大区
*/
private Integer modelZone;
/**
* 所属层级1:应用层 2:平台层3:网络层 4:感知层
*/
private Integer modelLayer;
/**
* 模型版本模型版本(最新版本)
*/
private String modelVersion;
/**
* 建设厂商
*/
private String apiUnit;
}
// 字段名称 字段描述 字段类型 允许为NULL 备注
// model_id 主键 varchar(40) 否
// model_name 模型名称 varchar(50) 否
// model_code 模型编码 varchar(42) 否
// equip_type 设备类型 varchar(42) 是
// domain_type 所属专业 int4 是 0:输电,1:变电,2:配电,3:直流,4:计划,5:技术
// model_group_id 模型分类id varchar(42) 否
// model_group_name 模型分类名称 varchar(50) 否
// model_table 模型表 varchar(50) 否
// model_relation 模型关联关系 text 是 存储模型之间的关系json格式;例如[{ model_group_id : t_public_manage_model_group.group_id}]
// Is_use 是否启用 int4 否 0:不启用,1:启用
// model_promotion 推广类型 int4 否 0:统推,1:自建
// company_id 省公司ID varchar(42) 是
// company_name 省公司名称 varchar(50) 是
// model_dispidx 显示顺序 int4 是
// model_user_id 提交人id varchar(42) 是
// model_user_name 提交人姓名 varchar(64) 是
// model_ctime 创建时间 timestamp(6) 是
// model_mtime 修改时间 timestamp(6) 是
// create table ocp_model_base
// (
// obj_id varchar(42) not null
// constraint ocp_model_base_pkey
// primary key,
// model_name varchar(50) default ''::character varying not null,
// model_code varchar(42) default ''::character varying not null,
// equip_type varchar(42) default ''::character varying,
// professional_kind varchar(10) default ''::character varying,
// model_group_code varchar(42) default ''::character varying,
// model_table varchar(50) default ''::character varying,
// is_use smallint default '-1'::integer,
// model_promotion smallint default '-1'::integer,
// owner_company_code varchar(42) default ''::character varying not null,
// model_order_no integer default '-1'::integer,
// model_user_id varchar(42) default ''::character varying,
// model_user_name varchar(64) default ''::character varying,
// model_ctime timestamp(6) default '2000-01-01 00:00:00'::timestamp(0) without time zone,
// model_mtime timestamp(6) default '2000-01-01 00:00:00'::timestamp(0) without time zone,
// is_delete smallint default '-1'::integer,
// model_zone smallint default '-1'::integer,
// model_layer smallint default '-1'::integer,
// model_version varchar(10) default ''::character varying,
// api_unit varchar(50) default ''::character varying
// );
//
// comment on table ocp_model_base is '模型基础信息表';
// comment on column ocp_model_base.obj_id is '主键';
// comment on column ocp_model_base.model_name is '模型名称';
// comment on column ocp_model_base.model_code is '模型编码';
// comment on column ocp_model_base.equip_type is '设备类型';
// comment on column ocp_model_base.professional_kind is '所属专业ts:输电,t:变电, dc:直流,ds配电,tc:技术,pl计划 im综合';
// comment on column ocp_model_base.model_group_code is '模型分类编码';
// comment on column ocp_model_base.model_table is '模型表(表的英文名称)表的英文名称';
// comment on column ocp_model_base.is_use is '是否启用0:未启用,1:启用';
// comment on column ocp_model_base.model_promotion is '推广类型0:统推 1自建';
// comment on column ocp_model_base.owner_company_code is '公司code';
// comment on column ocp_model_base.model_order_no is '排列顺序';
// comment on column ocp_model_base.model_user_id is '提交人id';
// comment on column ocp_model_base.model_user_name is '提交人姓名';
// comment on column ocp_model_base.model_ctime is '创建时间';
// comment on column ocp_model_base.model_mtime is '修改时间';
// comment on column ocp_model_base.is_delete is '是否已删除0:未删除 1:已删除';
// comment on column ocp_model_base.model_zone is '所属区域1:生成控制大区 2:信息关联大区3:互联网大区';
// comment on column ocp_model_base.model_layer is '所属层级1:应用层 2:平台层3:网络层 4:感知层';
// comment on column ocp_model_base.model_version is '模型版本模型版本(最新版本)';
// comment on column ocp_model_base.api_unit is '建设厂商';
package com.pms.ocp.model.vo;
import cn.afterturn.easypoi.excel.annotation.Excel;
import com.baomidou.mybatisplus.annotation.TableField;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import lombok.AllArgsConstructor;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
/**
* @Auther: wangjian
......@@ -14,6 +20,155 @@ import lombok.NoArgsConstructor;
@Data
@NoArgsConstructor
//@AllArgsConstructor
@ApiModel(value = "中台服务运营看板_网省切换数据_服务表", description = "中台服务运营看板_网省切换数据_服务表")
@ApiModel(value = "中台运营管控_模型表", description = "中台运营管控_模型表")
public class ModelVO {
/**
* 模型编号
* 主键
*/
@Excel(name = "模型编号")
@ApiModelProperty(value = "模型编号")
private String objId;
/**
* 模型名称
*/
@Excel(name = "模型名称")
@ApiModelProperty(value = "模型名称")
private String modelName;
/**
* 模型编码
*/
@Excel(name = "模型编码")
@ApiModelProperty(value = "模型编码")
private String modelCode;
/**
* 设备类型
*/
@Excel(name = "设备类型")
@ApiModelProperty(value = "设备类型")
private String equipType;
/**
* 所属专业 ts:输电,t:变电, dc:直流,ds:配电,tc:技术,pl:计划 im:综合
*/
@Excel(name = "所属专业", replace = {"输电_ts", "变电_t", "直流_ds", "配电_ds", "技术_tc", "计划_pl", "综合_im"})
@ApiModelProperty(value = "所属专业 ts:输电,t:变电, dc:直流,ds:配电,tc:技术,pl:计划 im:综合")
private String professional_kind;
/**
* 模型分类编码
*/
@Excel(name = "模型分类编码")
@ApiModelProperty(value = "模型分类编码")
private String model_group_code;
/**
* 模型表名称
*/
@Excel(name = "模型表名称")
@ApiModelProperty(value = "模型表名称")
private String model_table;
/**
* 是否启用 0:未启用,1:启用
*/
@Excel(name = "是否启用", replace = {"未启用_0", "启用_1"})
@ApiModelProperty(value = "是否启用")
private Integer boolUse;
/**
* 推广类型 0:统推,1:自建
*/
@Excel(name = "推广类型", replace = {"统推_0", "自建_1"})
@ApiModelProperty(value = "推广类型")
private Integer modelPromotion;
/**
* 公司编码
*/
@Excel(name = "公司编码")
@ApiModelProperty(value = "公司编码")
private String ownerCompanyCode;
/**
* 排列顺序
*/
@Excel(name = "排列顺序")
@ApiModelProperty(value = "排列顺序")
private Integer modelOrderNo;
/**
* 提交人编号
*/
@Excel(name = "提交人编号")
@ApiModelProperty(value = "提交人编号")
private String modelUserId;
/**
* 提交人姓名
*/
@Excel(name = "提交人姓名")
@ApiModelProperty(value = "提交人姓名")
private String modelUserName;
/**
* 模型创建时间
*/
@Excel(name = "创建时间")
@ApiModelProperty(value = "创建时间")
@TableField(value = "model_ctime")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private LocalDateTime modelCtime;
/**
* 模型修改时间
*/
@Excel(name = "修改时间")
@ApiModelProperty(value = "修改时间")
@TableField(value = "model_mtime")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private LocalDateTime modelMtime;
/**
* 是否删除 0:未删除 1:已删除
*/
@Excel(name = "是否删除", replace = {"未删除_1", "已删除_2"})
@ApiModelProperty(value = "是否删除")
private Integer boolDelete;
/**
* 所属区域 1:生成控制大区 2:信息关联大区 3:互联网大区
*/
@Excel(name = "所属区域", replace = {"生成控制大区_1", "信息关联大区_2", "互联网大区_3"})
@ApiModelProperty(value = "所属区域")
private Integer modelZone;
/**
* 所属层级 1:应用层 2:平台层 3:网络层 4:感知层
*/
@Excel(name = "方机构类型", replace = {"应用层_1", "平台层_2", "网络层_3", "感知层_4"})
@ApiModelProperty(value = "所属层级 1:应用层 2:平台层3:网络层 4:感知层")
private Integer modelLayer;
/**
* 模型版本(最新版本)
*/
@Excel(name = "模型版本")
@ApiModelProperty(value = "模型版本")
private String modelVersion;
/**
* 建设厂商
*/
@Excel(name = "建设厂商")
@ApiModelProperty(value = "建设厂商")
private String apiUnit;
}
......@@ -34,7 +34,7 @@ public interface ModelIssueService {
* @param ids
* @return
*/
Integer deletePatchModelIssue(List<String> ids);
Integer deleteBatchModelIssue(List<String> ids);
/**
* 更新模型订阅
......
......@@ -35,7 +35,7 @@ public interface ModelPropertyService {
* @param ids
* @return
*/
Integer deletePatchModelProperty(List<String> ids);
Integer deleteBatchModelProperty(List<String> ids);
/**
* 更新模型属性
......
......@@ -37,7 +37,7 @@ public interface ModelRelationService {
* @param ids
* @return
*/
Integer deletePatchModelRelation(List<String> ids);
Integer deleteBatchModelRelation(List<String> ids);
/**
* 更新模型关系
......
......@@ -2,6 +2,9 @@ package com.pms.ocp.service;
import com.pms.ocp.model.entity.Model;
import com.pms.ocp.model.vo.ResponseVO;
import org.springframework.web.multipart.MultipartFile;
import java.io.IOException;
/**
* @Auther: wangjian
......@@ -34,6 +37,14 @@ public interface ModelService {
*/
ResponseVO updateModel(Model model);
/**
* 导入模型
*
* @param file
* @return
*/
Boolean importModel(MultipartFile file) throws IOException;
/**
* 获取模型
*
......
......@@ -49,7 +49,7 @@ public class ModelIssueServiceImpl implements ModelIssueService {
* @return
*/
@Override
public Integer deletePatchModelIssue(List<String> ids) {
public Integer deleteBatchModelIssue(List<String> ids) {
return modelIssueMapper.deleteBatchIds(ids);
}
......
......@@ -54,7 +54,7 @@ public class ModelPropertyServiceImpl implements ModelPropertyService {
}
@Override
public Integer deletePatchModelProperty(List<String> ids) {
public Integer deleteBatchModelProperty(List<String> ids) {
return modelPropertyMapper.deleteBatchIds(ids);
}
......
......@@ -57,7 +57,7 @@ public class ModelRelationServiceImpl implements ModelRelationService {
}
@Override
public Integer deletePatchModelRelation(List<String> ids) {
public Integer deleteBatchModelRelation(List<String> ids) {
return modelRelationMapper.deleteBatchIds(ids);
}
......
package com.pms.ocp.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.pms.ocp.common.constants.CodeEnum;
import com.pms.ocp.common.utils.ExcelUtils;
import com.pms.ocp.mapper.ModelMapper;
import com.pms.ocp.model.entity.Model;
import com.pms.ocp.model.vo.ModelVO;
import com.pms.ocp.model.vo.ResponseVO;
import com.pms.ocp.service.ModelService;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import org.springframework.web.multipart.MultipartFile;
import java.io.IOException;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;
/**
......@@ -19,7 +28,8 @@ import java.util.List;
*/
@Service
public class ModelServiceImpl implements ModelService {
public class ModelServiceImpl extends ServiceImpl<ModelMapper, Model> implements ModelService {
@Autowired
private ModelMapper modelMapper;
......@@ -73,6 +83,35 @@ public class ModelServiceImpl implements ModelService {
}
}
/**
* 导入模型
*
* @param file
* @return
*/
@Override
public Boolean importModel(MultipartFile file) throws IOException {
//校验Excel文件
ExcelUtils.checkFile(file);
List<ModelVO> modelVOList = ExcelUtils.importExcel(file, ModelVO.class);
List<Model> modelList = new ArrayList<>(modelVOList.size());
if (!modelVOList.isEmpty()) {
for (ModelVO modelVO : modelVOList) {
Model model = new Model();
BeanUtils.copyProperties(modelVO, model);
model.setModelCtime(LocalDateTime.now());
modelList.add(model);
}
}
//校验Excel数据
// checkData(excelCps);
return modelMapper.insertBatchModel(modelList);
}
/**
* 获取模型列表
*
......
<?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.ModelMapper">
<!-- &lt;!&ndash;<select id="getPlatformServiceSortVo" resultType="com.beagle.base.model.vo.PlatformServiceSortVo">&ndash;&gt;-->
<!-- &lt;!&ndash;SELECT&ndash;&gt;-->
<!-- &lt;!&ndash;*&ndash;&gt;-->
<!-- &lt;!&ndash;FROM&ndash;&gt;-->
<!-- &lt;!&ndash;( SELECT COUNT ( api_code ) AS total, api_code AS apiCode, api_name AS apiName FROM pms_zy_api GROUP BY api_code, api_name ) T&ndash;&gt;-->
<!-- &lt;!&ndash;where T.total > 0&ndash;&gt;-->
<!-- &lt;!&ndash;ORDER BY&ndash;&gt;-->
<!-- &lt;!&ndash;total DESC&ndash;&gt;-->
<!-- &lt;!&ndash;</select>&ndash;&gt;-->
<!-- <select id="getPlatformServiceNotSortVo" resultType="com.beagle.base.model.vo.PlatformServiceSortVo">-->
<!-- SELECT COUNT ( api_code ) AS total, api_code AS apiCode, api_name AS apiName FROM pms_zy_api GROUP BY api_code, api_name-->
<!-- </select>-->
<!-- <select id="getCountCompanyCodeIsNull" resultType="int">-->
<!-- SELECT COUNT( * ) FROM pms_zy_api WHERE company_code is null-->
<!-- </select>-->
<!-- <select id="selectApiInfoList" resultType="com.beagle.base.model.dto.AcceptApiInfoDto"-->
<!-- parameterType="java.util.Map">-->
<!-- select-->
<!-- api.api_id as apiId,-->
<!-- api.api_code as api_code,-->
<!-- api.api_name as apiName,-->
<!-- api.api_url as apiUrl,-->
<!-- api.api_ctime as apiCtime,-->
<!-- gro.group_name as groupName,-->
<!-- api.company_code as companyCode,-->
<!-- api.company_name as companyName-->
<!-- from pms_zy_api api-->
<!-- left join pms_zy_api_group gro-->
<!-- on api.group_id = gro.group_id-->
<!-- <where>-->
<!-- api.company_code = #{companyCode}-->
<!-- <if test="apiName !=null and apiName != '' ">-->
<!-- and api.api_name like CONCAT('%', #{apiName}::text,'%')-->
<!-- </if>-->
<!-- <if test="groupName != null and groupName != '' ">-->
<!-- and gro.group_name = #{groupName}-->
<!-- </if>-->
<!-- <if test="isBind != null and isBind == 0">-->
<!-- and api.api_id not in-->
<!-- <foreach collection="apiIds" separator="," item="item" open="(" close=")" index="index" >-->
<!-- #{item}-->
<!-- </foreach>-->
<!-- </if>-->
<!-- <if test="isBind != null and isBind == 1">-->
<!-- and api.api_id in-->
<!-- <foreach collection="apiIds" separator="," item="item" open="(" close=")" index="index" >-->
<!-- #{item}-->
<!-- </foreach>-->
<!-- </if>-->
<!-- </where>-->
<!-- order by api.api_ctime desc-->
<!-- </select>-->
<!-- <select id="selectPlanInvokeApiList" resultType="com.beagle.base.model.dto.PlanInvokeApiCountDTO">-->
<!-- select pc2.company_code, pc2.company_name,pc2.company_short_name, eee.tenant_code, eee.tenant_name , eee.api_plan_invoke_count from pms_company pc2-->
<!-- left join (select pc.company_code, pc.company_name, pzt.tenant_id, pzt.tenant_code, pzt.tenant_name , count(pztar.api_id) as api_plan_invoke_count-->
<!-- from pms_company pc-->
<!-- left join pms_zy_tenant pzt on pc.company_code = pzt.company_code-->
<!-- join pms_zy_tenant_api_rel pztar on pzt.tenant_id = pztar.tenant_id-->
<!-- group by pzt.tenant_id ,pc.company_code, pc.company_name,pzt.tenant_name,pzt.tenant_code) as eee on pc2.company_code = eee.company_code-->
<!-- <where>-->
<!-- <if test="tenantCode != null and tenantCode != '' ">-->
<!-- and tenant_code = #{tenantCode}-->
<!-- </if>-->
<!-- </where>-->
<!-- </select>-->
<!-- <select id="selectGroupApiQuantity" resultType="com.beagle.base.model.dto.GroupInvokeApiSituationDTO">-->
<!-- select pzag.group_id, pzag.group_name, pza.api_code, pza.api_name-->
<!-- from pms_zy_api_group pzag-->
<!-- left join pms_zy_api pza on pzag.group_id = pza.group_id-->
<!-- <where>-->
<!-- <if test="groupLvl != null and groupLvl != '' ">-->
<!-- and pzag.group_lvl = #{groupLvl}-->
<!-- </if>-->
<!-- <if test="groupNamePre != null and groupNamePre != '' ">-->
<!-- and pzag.group_name like CONCAT('%', #{groupNamePre}::text,'%')-->
<!-- </if>-->
<!-- </where>-->
<!-- </select>-->
<!--
collection:表示遍历的数组或者集合,填写对应 key 的值
item:集合中被遍历的元素名,自己随意起的名字
separator:每次遍历元素后用于拼接字符串
open:遍历开始拼接的字符串
close:遍历结束拼接字符串
index:遍历索引
例如本条 SQL 语句,拼接后的结果为:
insert into user(username, password) values (?, ?), (?, ?), ...
-->
<insert id="insertBatchModel" useGeneratedKeys="true" keyProperty="id">
insert into user(username, password)
values
<foreach collection="users" item="user" separator=",">
(#{user.username}, #{user.password})
</foreach>
</insert>
</mapper>
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