Commit 17703c83 authored by 郭凡凡's avatar 郭凡凡

Merge remote-tracking branch 'origin/master'

parents abdd1192 704b96ee
package com.pms.ocp.common.aspectj;
import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
/**
* @author Administrator
*/
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.METHOD})
@Documented
public @interface WebLog {
String description() default "";
}
package com.pms.ocp.common.aspectj;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.pms.ocp.common.utils.StringBusinessUtil;
import lombok.extern.slf4j.Slf4j;
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.*;
import org.springframework.context.annotation.Profile;
import org.springframework.stereotype.Component;
import org.springframework.validation.BindingResult;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.lang.reflect.Method;
import java.util.HashMap;
import java.util.Map;
@Aspect
@Component
@Slf4j
/**
* 根据配置可在不同环境中生效
* @Profile({"dev", "test"})
*/
//@Profile({"dev", "test"})
public class WebLogAspect {
private static final String LINE_SEPARATOR = System.lineSeparator();
@Pointcut("@annotation(com.pms.ocp.common.aspectj.WebLog)")
public void webLog() {
}
/**
* 环绕
*
* @param proceedingJoinPoint
* @return
* @throws Throwable
*/
@Around("webLog()")
public Object doAround(ProceedingJoinPoint proceedingJoinPoint) throws Throwable {
long startTime = System.currentTimeMillis();
Object result = proceedingJoinPoint.proceed();
// 打印出参
log.info("Response Args : {}", JSONObject.toJSONString(result));
// 打印耗时
log.info("Time-Consuming : {} ms", System.currentTimeMillis() - startTime);
return result;
}
/**
* 在切点前切入
*
* @param joinPoint
* @throws Throwable
*/
@Before("webLog()")
public void doBefore(JoinPoint joinPoint) throws Throwable {
ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
HttpServletRequest request = attributes.getRequest();
// 获取 @WebLog 注解的描述信息
String methodDescription = getAspectLogDescription(joinPoint);
// 处理入参
Object[] args = joinPoint.getArgs();
Map<String, Object> map = new HashMap<>();
for (Object arg : args) {
if (StringBusinessUtil.isNullOrEmpty(arg)) {
continue;
}
if (arg instanceof BindingResult) {
continue;
}
if (arg instanceof HttpSession) {
continue;
}
if (arg instanceof HttpServletRequest) {
continue;
}
if (arg instanceof HttpServletResponse) {
continue;
}
if (arg instanceof MultipartFile) {
MultipartFile file = (MultipartFile) arg;
map.put("file", getFileParam(file));
} else if (arg instanceof MultipartFile[]) {
MultipartFile[] files = (MultipartFile[]) arg;
Map<String, Object> t = new HashMap<>();
for (MultipartFile file : files) {
t.put("file", getFileParam(file));
}
map.put("files", t);
} else {
try {
map.put(arg.getClass().getSimpleName(), arg);
} catch (Exception e) {
e.printStackTrace();
}
}
}
// 打印请求相关参数
log.info("============================================ 接口开始执行 ==================================================");
try {
// 打印请求 url
log.info("URL : {}", request.getRequestURL().toString());
// 打印描述信息
log.info("Description : {}", methodDescription);
// 打印 Http method
log.info("HTTP Method : {}", request.getMethod());
// 打印调用 controller 的全路径以及执行方法
log.info("Class Method : {}.{}", joinPoint.getSignature().getDeclaringTypeName(), joinPoint.getSignature().getName());
// 打印请求的IP
log.info("IP : {}", request.getRemoteAddr());
//log.info("Request Args : {}", new Gson().toJson(joinPoint.getArgs()));
// 打印请求的入参
log.info("Request Args : {}", JSON.toJSONString(map));
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 处理文件,获取文件基本信息
*
* @param file
* @return
*/
private Map<String, Object> getFileParam(MultipartFile file) {
Map<String, Object> map = null;
try {
map = new HashMap<>();
map.put("文件名:", file.getOriginalFilename());
map.put("文件类型:", file.getContentType());
map.put("文件大小:", file.getSize());
} catch (Exception e) {
e.printStackTrace();
}
return map;
}
/**
* 在切点后切入
*
* @throws Throwable
*/
@After("webLog()")
public void doAfter() throws Throwable {
log.info("============================================ 接口执行结束 ===================================================" + LINE_SEPARATOR);
}
/**
* 获取切面注解的描述
*/
private String getAspectLogDescription(JoinPoint joinPoint) throws ClassNotFoundException {
String targetName = joinPoint.getTarget().getClass().getName();
String methodName = joinPoint.getSignature().getName();
Object[] arguments = joinPoint.getArgs();
Class targetClass = Class.forName(targetName);
Method[] methods = targetClass.getMethods();
StringBuilder description = new StringBuilder("");
for (Method method : methods) {
if (method.getName().equals(methodName)) {
Class[] calzzs = method.getParameterTypes();
if (calzzs.length == arguments.length) {
description.append(method.getAnnotation(WebLog.class).description());
break;
}
}
}
return description.toString();
}
}
package com.pms.ocp.common.config;
import javax.validation.groups.Default;
/**
* 新增校验
*
* @author Administrator
*/
public interface CreateGroups extends Default {
}
package com.pms.ocp.common.config;
import javax.validation.groups.Default;
/**
* 更新校验
*
* @author Administrator
*/
public interface UpdateGroups extends Default {
}
package com.pms.ocp.common.utils;
public class GUIDGenerator {
private static final UUIDHexLengthGenerator GENERATOR = new UUIDHexLengthGenerator();
public GUIDGenerator() {
}
private static String generate(int length, boolean toLowerCase) {
setLength(length);
return toLowerCase ? GENERATOR.generate().toString().toLowerCase() : GENERATOR.generate().toString().toUpperCase();
}
private static void setLength(int length) {
GENERATOR.setLength(length);
}
public static String generate32(boolean toLowerCase) {
return generate(32, toLowerCase);
}
public static String generate42(boolean toLowerCase) {
return generate(42, toLowerCase);
}
}
package com.pms.ocp.common.utils;
import com.pms.ocp.model.vo.ResponseVO;
import org.springframework.validation.BindingResult;
import org.springframework.validation.ObjectError;
import java.util.Collection;
import java.util.List;
import java.util.Map;
/**
* 工具类
*
* @author Administrator
*/
public class StringBusinessUtil {
/**
* 判断对象或数组中每一个对象是否为空
* 判断对象是否为null
* 判断字符串长度是否为0,集合类是否为empty
*
* @param obj
* @return
*/
public static boolean isNullOrEmpty(Object obj) {
if (obj == null) {
return true;
}
if (obj instanceof CharSequence) {
return ((CharSequence) obj).length() == 0 || "null".equalsIgnoreCase(obj.toString());
}
if (obj instanceof Collection) {
return ((Collection<?>) obj).isEmpty();
}
if (obj instanceof Map) {
return ((Map<?, ?>) obj).isEmpty();
}
if (obj instanceof Object[]) {
Object[] object = (Object[]) obj;
if (object.length == 0) {
return true;
}
boolean empty = true;
for (int i = 0; i < object.length; i++) {
if (!isNullOrEmpty(object[i])) {
empty = false;
break;
}
}
return empty;
}
return false;
}
/**
* 入参校验
*
* @param bindingResult
* @return
*/
public static ResponseVO verifyDispose(BindingResult bindingResult) {
StringBuilder stringBuilder = new StringBuilder();
List<ObjectError> allErrors = bindingResult.getAllErrors();
for (ObjectError e : allErrors) {
String defaultMessage = e.getDefaultMessage();
if (!StringBusinessUtil.isNullOrEmpty(e.getDefaultMessage())) {
stringBuilder.append(defaultMessage);
stringBuilder.append(",");
}
}
return ResponseVO.error(stringBuilder.toString().substring(0, stringBuilder.toString().length() - 1));
}
}
package com.pms.ocp.common.utils;
import java.io.Serializable;
import java.net.InetAddress;
public abstract class UUIDGenerator {
private static final int IP;
private String separator = "";
private static short counter = 0;
private static final int JVM = (int) (System.currentTimeMillis() >>> 8);
public UUIDGenerator() {
}
public String getSeparator() {
return this.separator;
}
public void setSeparator(String separator) {
this.separator = separator;
}
protected int getJVM() {
return JVM;
}
protected short getCount() {
Class var1 = UUIDGenerator.class;
synchronized (UUIDGenerator.class) {
if (counter < 0) {
counter = 0;
}
short var10000 = counter;
counter = (short) (var10000 + 1);
return var10000;
}
}
protected int getIP() {
return IP;
}
protected short getHiTime() {
return (short) ((int) (System.currentTimeMillis() >>> 32));
}
protected int getLoTime() {
return (int) System.currentTimeMillis();
}
private static int toInt(byte[] bytes) {
int result = 0;
for (int i = 0; i < 4; ++i) {
result = (result << 8) - -128 + bytes[i];
}
return result;
}
public abstract Serializable generate();
static {
int ipadd;
try {
ipadd = toInt(InetAddress.getLocalHost().getAddress());
} catch (Exception var2) {
ipadd = 0;
}
IP = ipadd;
}
}
package com.pms.ocp.common.utils;
import java.io.Serializable;
public class UUIDHexLengthGenerator extends UUIDGenerator {
private int length = 32;
private static int mycount = 0;
public UUIDHexLengthGenerator() {
}
public int getLength() {
return this.length;
}
public void setLength(int length) {
this.length = length;
}
protected String format(int intval) {
String formatted = Integer.toHexString(intval);
StringBuffer buf = new StringBuffer("00000000");
buf.replace(8 - formatted.length(), 8, formatted);
return buf.toString();
}
protected String format(short shortval) {
String formatted = Integer.toHexString(shortval);
StringBuffer buf = new StringBuffer("0000");
buf.replace(4 - formatted.length(), 4, formatted);
return buf.toString();
}
protected String random(int offset) {
long curr = System.currentTimeMillis();
String formatted = Long.toHexString((long) mycount + curr);
StringBuffer buf = new StringBuffer();
for (int i = offset; i < 0; ++i) {
buf.append("0");
}
if (-offset < 8) {
buf.replace(0, -offset, formatted.substring(formatted.length() + offset));
} else if (-offset > 16) {
buf.replace(0, 8, formatted.substring(formatted.length() - 8));
formatted = Long.toHexString(curr + (long) mycount + (long) this.getCount());
buf.replace(8, 16, formatted.substring(formatted.length() - 8));
} else {
buf.replace(0, 8, formatted.substring(formatted.length() - 8));
formatted = Long.toHexString(curr + (long) mycount + (long) this.getCount() + curr / 10000L);
buf.replace(8, -offset, formatted.substring(formatted.length() + offset + 8));
}
return buf.toString();
}
public Serializable generate() {
++mycount;
StringBuffer sb = new StringBuffer(36);
sb.append(this.format(this.getIP())).append(this.getSeparator()).append(this.format(this.getJVM())).append(this.getSeparator()).append(this.format(this.getHiTime())).append(this.getSeparator()).append(this.format(this.getLoTime())).append(this.getSeparator()).append(this.format(this.getCount())).toString();
return this.processLength(sb);
}
private String processLength(StringBuffer sb) {
if (this.getLength() != 32) {
int offset = 32 - this.getLength();
if (offset > 0) {
sb.delete(0, offset);
} else {
sb.insert(0, this.getSeparator());
sb.insert(0, this.random(offset));
}
}
return sb.toString();
}
}
package com.pms.ocp.controller;
import com.pms.ocp.model.vo.ApiProvinceVo;
import com.pms.ocp.model.vo.OcpApiBaseVo;
import com.pms.ocp.model.vo.ResponseVO;
import com.pms.ocp.service.ApiProvinceService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
@Slf4j
@RequestMapping("/apiProvince")
@RestController
@Api(tags = "服务省侧接口")
public class ApiProvinceController {
@Autowired
private ApiProvinceService apiProvinceService;
@ApiOperation("服务省侧-添加")
@PostMapping("/create")
public ResponseVO createApiBase(@RequestBody ApiProvinceVo apiProvinceVo) {
boolean isSuccess = apiProvinceService.updateOrCreate(apiProvinceVo);
if(isSuccess){
return ResponseVO.ok();
}else {
return ResponseVO.error("添加失败");
}
}
}
package com.pms.ocp.controller;
import com.github.pagehelper.PageInfo;
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.ApiBaseDto;
import com.pms.ocp.model.dto.OcpGroupBaseDto;
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.sql.Timestamp;
import java.time.LocalDate;
import java.util.ArrayList;
import java.util.List;
/**
* @author guofanfan
*/
@Slf4j
@RequestMapping("/api/province")
@RestController
@Api(tags = "服务库省侧管理接口")
public class ApiProvinceTreeController {
@Autowired
private ApiDetailsService apiDetailsService;
@Autowired
private ApiBasicManagementService apiBasicManagementService;
@ApiOperation("服务分类层级")
@GetMapping("/apiBaseTreeOther")
public ResponseVO<List<OcpGroupBaseDto>> apiBaseTreeOther(String apiGroupCompanyCode, String apiGroupCode, Integer apiGroupPromotionType,String apiCode,String apiPromotion) {
List<OcpGroupBaseDto> apiTreeGroupDtos = apiBasicManagementService.apiBaseTreeOther(apiGroupCompanyCode, apiGroupCode, apiGroupPromotionType,apiCode,apiPromotion);
return ResponseVO.ok(apiTreeGroupDtos);
}
@ApiOperation("服务树列表")
@GetMapping("/apiBaseTreeList")
public ResponseVO<List<OcpApiBase>> apiBaseTreeList(String apiGroupCompanyCode, String apiGroupCode) {
List<OcpApiBase> apiBaseList = apiBasicManagementService.apiBaseTreeApiList(apiGroupCompanyCode, apiGroupCode);
return ResponseVO.ok(apiBaseList);
}
@ApiOperation("服务库服务详情-查询")
@GetMapping("/query")
public ResponseVO<OcpApiBaseVo> getApiDetails(String apiCode) {
return apiDetailsService.getApiDetails(apiCode);
}
}
package com.pms.ocp.controller;
import com.pms.ocp.common.config.CreateGroups;
import com.pms.ocp.common.utils.StringBusinessUtil;
import com.pms.ocp.model.dto.AppRegisterDTO;
import com.pms.ocp.model.dto.ImgDTO;
import com.pms.ocp.model.dto.QueryAppDTO;
import com.pms.ocp.model.vo.ResponseVO;
import com.pms.ocp.service.AppRegisterService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.BindingResult;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* 应用注册接口
*
* @author Administrator
*/
@RestController
@RequestMapping("appRegister")
@Api(tags = "应用注册接口")
public class AppRegisterController {
@Autowired
private AppRegisterService appRegisterService;
@ApiOperation("新增应用注册")
@PostMapping("addApp")
public ResponseVO addApp(@RequestBody @Validated(CreateGroups.class) AppRegisterDTO appRegisterDTO,
BindingResult bindingResult) {
if (bindingResult.hasErrors()) {
return StringBusinessUtil.verifyDispose(bindingResult);
}
ResponseVO responseVO = appRegisterService.addApp(appRegisterDTO);
return responseVO;
}
@ApiOperation("查询应用目录")
@PostMapping("getAppInfo")
public ResponseVO getAppInfo(@RequestBody @Validated QueryAppDTO queryAppDTO, BindingResult bindingResult) {
if (bindingResult.hasErrors()) {
return StringBusinessUtil.verifyDispose(bindingResult);
}
ResponseVO responseVO = appRegisterService.getAppInfo(queryAppDTO);
return responseVO;
}
@ApiOperation("应用预览图")
@PostMapping("addAppImgUrl")
public ResponseVO addAppImgUrl(@RequestBody @Validated(CreateGroups.class) List<ImgDTO> imgDTO,
BindingResult bindingResult) {
if (bindingResult.hasErrors()) {
return StringBusinessUtil.verifyDispose(bindingResult);
}
ResponseVO responseVO = appRegisterService.addAppImgUrl(imgDTO);
return responseVO;
}
}
package com.pms.ocp.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.pms.ocp.model.entity.OcpApiParam;
import com.pms.ocp.model.vo.ApiProvinceVo;
public interface ApiParamMapper extends BaseMapper<OcpApiParam> {
}
package com.pms.ocp.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.pms.ocp.model.vo.ApiProvinceVo;
import com.pms.ocp.model.vo.OcpApiBaseVo;
public interface ApiProvinceMapper extends BaseMapper<ApiProvinceVo> {
}
package com.pms.ocp.mapper;
import com.pms.ocp.model.dto.QueryAppDTO;
import com.pms.ocp.model.entity.OcpTenantIocn;
import com.pms.ocp.model.vo.QueryAppInfoVO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* 应用注册数据查询接口
*
* @author Administrator
*/
@Mapper
public interface AppRegisterMapper {
/**
* 分页查询应用目录
*
* @param queryAppDTO
* @return
*/
List<QueryAppInfoVO> getAppInfo(@Param("dto") QueryAppDTO queryAppDTO);
/**
* 批量插入应用预览图
*
* @param list
* @return
*/
int batchInsert(@Param("list") List<OcpTenantIocn> list);
}
...@@ -24,7 +24,7 @@ public interface OcpApiTreeMapper extends BaseMapper<OcpApiGroup> { ...@@ -24,7 +24,7 @@ public interface OcpApiTreeMapper extends BaseMapper<OcpApiGroup> {
/** /**
* 二级树 * 二级树
* @param apiGroupPromotionType * @param apiGroupPromotionType
* @return * /. * @return
*/ */
List<OcpApiGroup> selectTwoApiGroups(Long apiGroupPromotionType); List<OcpApiGroup> selectTwoApiGroups(Long apiGroupPromotionType);
...@@ -40,6 +40,6 @@ public interface OcpApiTreeMapper extends BaseMapper<OcpApiGroup> { ...@@ -40,6 +40,6 @@ public interface OcpApiTreeMapper extends BaseMapper<OcpApiGroup> {
//根据code查询整条数据 //根据code查询整条数据
OcpApiGroup selectCode(String code); OcpApiGroup selectCode(String code);
//根据code查询是否=含有下级服务 //根据code查询是否含有下级服务
List<OcpApiGroup> selectGroupPcode(); List<OcpApiGroup> selectGrpPcode();
} }
package com.pms.ocp.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.pms.ocp.model.entity.OcpTenantIocn;
/**
* @author Administrator
*/
public interface OcpTenantIocnMapper extends BaseMapper<OcpTenantIocn> {
}
package com.pms.ocp.model.dto;
import com.pms.ocp.common.config.CreateGroups;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import java.util.Date;
/**
* 应用注册入参实体
*
* @author Administrator
*/
@ApiModel(value = "应用注册入参实体")
@Data
public class AppRegisterDTO {
@ApiModelProperty("用户id")
@NotBlank(message = "用户id不能为空", groups = CreateGroups.class)
private String userId;
@ApiModelProperty("用户名称")
@NotBlank(message = "用户名称不能为空", groups = CreateGroups.class)
private String userName;
@ApiModelProperty("应用图标")
@NotBlank(message = "应用图标不能为空", groups = CreateGroups.class)
private String imgUrl;
@ApiModelProperty("应用名称")
@NotBlank(message = "应用名称不能为空", groups = CreateGroups.class)
private String appName;
@ApiModelProperty("应用编码")
@NotBlank(message = "应用编码不能为空", groups = CreateGroups.class)
private String appCode;
@ApiModelProperty("所属专业——ts:输电,t:变电,dc:直流,ds配电,tc:技术,pl计划,im综合")
@NotBlank(message = "所属专业不能为空", groups = CreateGroups.class)
private String kind;
// @ApiModelProperty("所属中心")
// @NotBlank(message = "所属中心不能为空", groups = CreateGroups.class)
// private String center;
@ApiModelProperty("所属类别——基础管理,分析决策,作业管理,设备管理")
@NotBlank(message = "所属类别不能为空", groups = CreateGroups.class)
private String type;
@ApiModelProperty("应用描述")
@NotBlank(message = "应用描述不能为空", groups = CreateGroups.class)
private String desc;
@ApiModelProperty("开发厂商")
@NotBlank(message = "开发厂商不能为空", groups = CreateGroups.class)
private String manufacturer;
@ApiModelProperty("当前版本")
@NotBlank(message = "当前版本不能为空", groups = CreateGroups.class)
private String version;
@ApiModelProperty("所属集群")
@NotBlank(message = "所属集群不能为空", groups = CreateGroups.class)
private String group;
@ApiModelProperty("部署名称")
@NotBlank(message = "部署名称不能为空", groups = CreateGroups.class)
private String deploymentName;
@ApiModelProperty("注册时间")
private Date time;
@ApiModelProperty("url")
private String url;
public String getAppName() {
return appName;
}
public void setAppName(String appName) {
this.appName = appName;
}
public String getAppCode() {
return appCode;
}
public void setAppCode(String appCode) {
this.appCode = appCode;
}
public String getKind() {
return kind;
}
public void setKind(String kind) {
this.kind = kind;
}
// public String getCenter() {
// return center;
// }
//
// public void setCenter(String center) {
// this.center = center;
// }
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public String getDesc() {
return desc;
}
public void setDesc(String desc) {
this.desc = desc;
}
public String getManufacturer() {
return manufacturer;
}
public void setManufacturer(String manufacturer) {
this.manufacturer = manufacturer;
}
public String getVersion() {
return version;
}
public void setVersion(String version) {
this.version = version;
}
public String getGroup() {
return group;
}
public void setGroup(String group) {
this.group = group;
}
public String getDeploymentName() {
return deploymentName;
}
public void setDeploymentName(String deploymentName) {
this.deploymentName = deploymentName;
}
public Date getTime() {
return time;
}
public void setTime(Date time) {
this.time = time;
}
public String getImgUrl() {
return imgUrl;
}
public void setImgUrl(String imgUrl) {
this.imgUrl = imgUrl;
}
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
public String getUserId() {
return userId;
}
public void setUserId(String userId) {
this.userId = userId;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
}
package com.pms.ocp.model.dto;
import com.pms.ocp.common.config.CreateGroups;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotBlank;
/**
* 应用预览图入参
*
* @author Administrator
*/
@Data
public class ImgDTO {
@ApiModelProperty(value = "应用编码")
@NotBlank(message = "应用编码值不能为空", groups = CreateGroups.class)
private String codeNo;
@ApiModelProperty(value = "应用预览url")
@NotBlank(message = "应用预览url不能为空", groups = CreateGroups.class)
private String img;
public String getCodeNo() {
return codeNo;
}
public void setCodeNo(String codeNo) {
this.codeNo = codeNo;
}
public String getImg() {
return img;
}
public void setImg(String img) {
this.img = img;
}
}
package com.pms.ocp.model.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
/**
* 应用目录条件查询入参实体
*
* @author Administrator
*/
@ApiModel(value = "应用目录条件查询入参实体")
public class QueryAppDTO {
@ApiModelProperty("当前页码")
@NotNull(message = "当前页码不能为空")
private Integer currentPage;
@ApiModelProperty("页数目")
@NotNull(message = "页数目不能为空")
private Integer pageSize;
@ApiModelProperty("所属专业")
private String kind;
// @ApiModelProperty("所属中心")
// private String center;
@ApiModelProperty("所属类别")
private String type;
public Integer getCurrentPage() {
return currentPage;
}
public void setCurrentPage(Integer currentPage) {
this.currentPage = currentPage;
}
public Integer getPageSize() {
return pageSize;
}
public void setPageSize(Integer pageSize) {
this.pageSize = pageSize;
}
public String getKind() {
return kind;
}
public void setKind(String kind) {
this.kind = kind;
}
// public String getCenter() {
// return center;
// }
//
// public void setCenter(String center) {
// this.center = center;
// }
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
}
package com.pms.ocp.model.dto;
import com.pms.ocp.model.entity.OcpApiGroup;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.sql.Timestamp;
import java.util.List;
@ApiModel(value = "应用与服务的传输参数")
@Data
public class TreeListDto {
@ApiModelProperty("主键ID")
private String objId;
@ApiModelProperty("分类编码")
private String apiGroupCode;
@ApiModelProperty("分类名称")
private String apiGroupName;
@ApiModelProperty("上级code")
private String apiGroupPcode;
@ApiModelProperty("分层树层级 1中台层 2中心层 3 服务组层 4服务层 ")
private long apiGroupLevel;
@ApiModelProperty("分层树子级 ")
private List<OcpApiGroup> apiChildrenGroup;
}
package com.pms.ocp.model.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.experimental.Accessors;
import java.io.Serializable;
import java.sql.Timestamp;
@Data
@Accessors(chain = true)
@TableName("ocp_apiParam")
@ApiModel("服务参数表")
public class OcpApiParam implements Serializable {
@TableId(type = IdType.ASSIGN_ID)
@ApiModelProperty("主键ID")
private String objId;
@ApiModelProperty("服务编码")
private String apiCode;
@ApiModelProperty("参数版本")
private String apiParamversion;
@ApiModelProperty("参数分类out出参 in入参 ")
private String apiParamClassification;
@ApiModelProperty("参数排序")
private Integer apiParamOrderNo;
@ApiModelProperty("参数名称")
private String apiParamName;
@ApiModelProperty("参数值")
private String apiParamValue;
@ApiModelProperty("是否必须0:不必要 1必要")
private Integer isRequire;
@ApiModelProperty("参数类型")
private String apiParamType;
@ApiModelProperty("是否删除0:未删除 1已删除")
private Integer isDelete;
public String getObjId() {
return objId;
}
public void setObjId(String objId) {
this.objId = objId;
}
public String getApiCode() {
return apiCode;
}
public void setApiCode(String apiCode) {
this.apiCode = apiCode;
}
public String getApiParamversion() {
return apiParamversion;
}
public void setApiParamversion(String apiParamversion) {
this.apiParamversion = apiParamversion;
}
public String getApiParamClassification() {
return apiParamClassification;
}
public void setApiParamClassification(String apiParamClassification) {
this.apiParamClassification = apiParamClassification;
}
public Integer getApiParamOrderNo() {
return apiParamOrderNo;
}
public void setApiParamOrderNo(Integer apiParamOrderNo) {
this.apiParamOrderNo = apiParamOrderNo;
}
public String getApiParamName() {
return apiParamName;
}
public void setApiParamName(String apiParamName) {
this.apiParamName = apiParamName;
}
public String getApiParamValue() {
return apiParamValue;
}
public void setApiParamValue(String apiParamValue) {
this.apiParamValue = apiParamValue;
}
public Integer getIsRequire() {
return isRequire;
}
public void setIsRequire(Integer isRequire) {
this.isRequire = isRequire;
}
public String getApiParamType() {
return apiParamType;
}
public void setApiParamType(String apiParamType) {
this.apiParamType = apiParamType;
}
public Integer getIsDelete() {
return isDelete;
}
public void setIsDelete(Integer isDelete) {
this.isDelete = isDelete;
}
}
package com.pms.ocp.model.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.io.Serializable;
import lombok.Data;
/**
* @author Administrator
*/
@ApiModel(value = "com-pms-ocp-model-entity-OcpTenantIocn")
@Data
@TableName("ocp_tenant_iocn")
public class OcpTenantIocn implements Serializable {
/**
* 主键
*/
@ApiModelProperty(value = "主键")
@TableId(type = IdType.ASSIGN_ID)
private String objId;
/**
* 图标种类tenant:应用图标api:服务图标
*/
@ApiModelProperty(value = "图标种类——tenant:应用图标,api:服务图标")
private String iocnType;
/**
* 编码值
*/
@ApiModelProperty(value = "编码值")
private String codeNo;
/**
* 应用调用的服务数量图标数据
*/
@ApiModelProperty(value = "应用调用的服务数量图标数据")
private Object iocn;
/**
* 所属公司可能会根据公司分区
*/
@ApiModelProperty(value = "所属公司可能会根据公司分区")
private String companyCode;
private static final long serialVersionUID = 1L;
public String getObjId() {
return objId;
}
public void setObjId(String objId) {
this.objId = objId;
}
public String getIocnType() {
return iocnType;
}
public void setIocnType(String iocnType) {
this.iocnType = iocnType;
}
public String getCodeNo() {
return codeNo;
}
public void setCodeNo(String codeNo) {
this.codeNo = codeNo;
}
public Object getIocn() {
return iocn;
}
public void setIocn(Object iocn) {
this.iocn = iocn;
}
public String getCompanyCode() {
return companyCode;
}
public void setCompanyCode(String companyCode) {
this.companyCode = companyCode;
}
}
package com.pms.ocp.model.vo;
import cn.afterturn.easypoi.excel.annotation.Excel;
import com.pms.ocp.model.entity.OcpApiParam;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.sql.Timestamp;
import java.util.List;
/**
* @author guofanfan
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@ApiModel(value = "服务列表信息vo")
public class ApiProvinceVo 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;
/**
* 请求参数列表
*/
private List<OcpApiParam> apiParams;
}
package com.pms.ocp.model.vo; package com.pms.ocp.model.vo;
import cn.afterturn.easypoi.excel.annotation.Excel; import cn.afterturn.easypoi.excel.annotation.Excel;
import com.pms.ocp.model.entity.OcpApiParam;
import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
...@@ -11,6 +12,8 @@ import org.springframework.beans.factory.annotation.Value; ...@@ -11,6 +12,8 @@ import org.springframework.beans.factory.annotation.Value;
import java.io.Serializable; import java.io.Serializable;
import java.sql.Timestamp; import java.sql.Timestamp;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.List;
/** /**
* @author guofanfan * @author guofanfan
*/ */
...@@ -46,6 +49,88 @@ public class OcpApiBaseVo implements Serializable { ...@@ -46,6 +49,88 @@ public class OcpApiBaseVo implements Serializable {
@ApiModelProperty(value = "建设单位") @ApiModelProperty(value = "建设单位")
@Excel(name = "建设单位") @Excel(name = "建设单位")
private String apiUnit; private String apiUnit;
@ApiModelProperty(value = "出参入参")
@Excel(name = "建设单位")
private List<OcpApiParam> apiParams;
public String getObjId() {
return objId;
}
public void setObjId(String objId) {
this.objId = objId;
}
public String getApiCode() {
return apiCode;
}
public void setApiCode(String apiCode) {
this.apiCode = apiCode;
}
public String getApiName() {
return apiName;
}
public void setApiName(String apiName) {
this.apiName = apiName;
}
public String getClusterName() {
return clusterName;
}
public void setClusterName(String clusterName) {
this.clusterName = clusterName;
}
public String getSpaceName() {
return spaceName;
}
public void setSpaceName(String spaceName) {
this.spaceName = spaceName;
}
public String getApiUrl() {
return apiUrl;
}
public void setApiUrl(String apiUrl) {
this.apiUrl = apiUrl;
}
public String getApiState() {
return apiState;
}
public void setApiState(String apiState) {
this.apiState = apiState;
}
public Timestamp getApiCtime() {
return apiCtime;
}
public void setApiCtime(Timestamp apiCtime) {
this.apiCtime = apiCtime;
}
public String getApiUnit() {
return apiUnit;
}
public void setApiUnit(String apiUnit) {
this.apiUnit = apiUnit;
}
public List<OcpApiParam> getApiParams() {
return apiParams;
}
public void setApiParams(List<OcpApiParam> apiParams) {
this.apiParams = apiParams;
}
} }
package com.pms.ocp.model.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* 应用目录查询返回实体
*
* @author Administrator
*/
@ApiModel(value = "应用目录查询返回实体")
@Data
public class QueryAppInfoVO {
@ApiModelProperty("应用图标")
private String icon;
@ApiModelProperty("应用名称")
private String appName;
@ApiModelProperty("版本号")
private String version;
@ApiModelProperty("开发商")
private String unit;
@ApiModelProperty("应用状态")
private String state;
}
package com.pms.ocp.service;
import com.pms.ocp.model.vo.ApiProvinceVo;
import com.pms.ocp.model.vo.OcpApiBaseVo;
import com.pms.ocp.model.vo.ResponseVO;
public interface ApiProvinceService {
boolean updateOrCreate(ApiProvinceVo apiProvinceVo);
}
package com.pms.ocp.service;
import com.pms.ocp.model.dto.AppRegisterDTO;
import com.pms.ocp.model.dto.ImgDTO;
import com.pms.ocp.model.dto.QueryAppDTO;
import com.pms.ocp.model.vo.ResponseVO;
import java.util.List;
/**
* 应用注册业务接口
*
* @author Administrator
*/
public interface AppRegisterService {
/**
* 新增应用注册
*
* @param appRegisterDTO
* @return
*/
ResponseVO addApp(AppRegisterDTO appRegisterDTO);
/**
* 查询应用目录
*
* @param queryAppDTO
* @return
*/
ResponseVO getAppInfo(QueryAppDTO queryAppDTO);
/**
* 应用预览图
*
* @param imgDTO
* @return
*/
ResponseVO addAppImgUrl(List<ImgDTO> imgDTO);
}
package com.pms.ocp.service.impl; package com.pms.ocp.service.impl;
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.pms.ocp.mapper.ApiDetailsMapper; import com.pms.ocp.mapper.ApiDetailsMapper;
import com.pms.ocp.mapper.ApiParamMapper;
import com.pms.ocp.model.dto.ApiBaseDto; import com.pms.ocp.model.dto.ApiBaseDto;
import com.pms.ocp.model.entity.OcpApiBase; import com.pms.ocp.model.entity.*;
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.OcpApiBaseVo;
import com.pms.ocp.model.vo.ResponseVO; import com.pms.ocp.model.vo.ResponseVO;
import com.pms.ocp.service.ApiDetailsService; import com.pms.ocp.service.ApiDetailsService;
...@@ -36,11 +36,16 @@ public class ApiDetailsServiceImpl implements ApiDetailsService { ...@@ -36,11 +36,16 @@ public class ApiDetailsServiceImpl implements ApiDetailsService {
@Autowired @Autowired
private ApiDetailsMapper apiDetailsMapper; private ApiDetailsMapper apiDetailsMapper;
@Autowired
private ApiParamMapper apiParamMapper;
@Override @Override
public ResponseVO<OcpApiBaseVo> getApiDetails(String apiCode) { public ResponseVO<OcpApiBaseVo> getApiDetails(String apiCode) {
OcpApiBaseVo ocpApiBase = apiDetailsMapper.selectByCode(apiCode); OcpApiBaseVo ocpApiBase = apiDetailsMapper.selectByCode(apiCode);
QueryWrapper<OcpApiParam> wrapper = new QueryWrapper<>();
wrapper.lambda().eq(OcpApiParam::getApiCode, apiCode);
List<OcpApiParam> ocpApiParams = apiParamMapper.selectList(wrapper);
ocpApiBase.setApiParams(ocpApiParams);
return ResponseVO.ok(ocpApiBase); return ResponseVO.ok(ocpApiBase);
} }
......
package com.pms.ocp.service.impl;
import com.github.pagehelper.util.StringUtil;
import com.pms.ocp.common.utils.RandomStringUtils;
import com.pms.ocp.mapper.ApiDetailsMapper;
import com.pms.ocp.mapper.ApiParamMapper;
import com.pms.ocp.mapper.ApiProvinceMapper;
import com.pms.ocp.model.entity.OcpApiParam;
import com.pms.ocp.model.vo.ApiProvinceVo;
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.ApiProvinceService;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class ApiProvinceServiceImpl implements ApiProvinceService {
@Autowired
private ApiProvinceMapper apiProvinceMapper;
@Autowired
private ApiParamMapper apiParamDao;
@Override
public boolean updateOrCreate(ApiProvinceVo apiProvinceVo) {
String code = RandomStringUtils.getRandomString(32);
apiProvinceVo.setApiCode(code);
apiProvinceMapper.insert(apiProvinceVo);
List<OcpApiParam> apiParams = apiProvinceVo.getApiParams();
if (CollectionUtils.isNotEmpty(apiParams)) {
//清除原有数据
apiParams.forEach(apiParam -> {
apiParamDao.insert(apiParam);
apiParam.setApiCode(apiProvinceVo.getApiCode());
});
}
return true;
}
}
package com.pms.ocp.service.impl;
import com.pms.ocp.common.utils.GUIDGenerator;
import com.pms.ocp.common.utils.PageUtil;
import com.pms.ocp.mapper.*;
import com.pms.ocp.model.dto.AppRegisterDTO;
import com.pms.ocp.model.dto.ImgDTO;
import com.pms.ocp.model.dto.QueryAppDTO;
import com.pms.ocp.model.entity.OcpTenantBase;
import com.pms.ocp.model.entity.OcpTenantExtent;
import com.pms.ocp.model.entity.OcpTenantGroup;
import com.pms.ocp.model.entity.OcpTenantIocn;
import com.pms.ocp.model.vo.QueryAppInfoVO;
import com.pms.ocp.model.vo.ResponseVO;
import com.pms.ocp.service.AppRegisterService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.sql.Timestamp;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
/**
* 应用注册业务接口实现
*
* @author Administrator
*/
@Service
public class AppRegisterServiceImpl implements AppRegisterService {
@Autowired
private AppRegisterMapper appRegisterMapper;
@Autowired
private OcpTenantIocnMapper ocpTenantIocnMapper;
@Autowired
private OcpTenantBaseMapper ocpTenantBaseMapper;
@Autowired
private OcpTenantExtentMapper ocpTenantExtentMapper;
@Autowired
private OcpTenantGroupMapper ocpTenantGroupMapper;
@Override
public ResponseVO addApp(AppRegisterDTO appRegisterDTO) {
OcpTenantIocn ocpTenantIocn = new OcpTenantIocn();
ocpTenantIocn.setIocnType("tenant");
ocpTenantIocn.setCodeNo(appRegisterDTO.getAppCode());
ocpTenantIocn.setIocn(appRegisterDTO.getImgUrl());
// 加字段
int n = ocpTenantIocnMapper.insert(ocpTenantIocn);
OcpTenantExtent ocpTenantExtent = new OcpTenantExtent();
ocpTenantExtent.setTenantCtime(new Date());
ocpTenantExtent.setTenantCode(appRegisterDTO.getAppCode());
ocpTenantExtent.setClusterName(appRegisterDTO.getGroup());
ocpTenantExtent.setDeploymentName(appRegisterDTO.getDeploymentName());
int j = ocpTenantExtentMapper.insert(ocpTenantExtent);
OcpTenantGroup ocpTenantGroup = new OcpTenantGroup();
ocpTenantGroup.setTenantGroupUserId(appRegisterDTO.getUserId());
ocpTenantGroup.setTenantGroupUserName(appRegisterDTO.getUserName());
ocpTenantGroup.setTenantGroupCtime(new Timestamp(System.currentTimeMillis()));
ocpTenantGroup.setTenantGroupCode(GUIDGenerator.generate32(true));
ocpTenantGroup.setTenantGroupName(appRegisterDTO.getType());
int m = ocpTenantGroupMapper.insert(ocpTenantGroup);
OcpTenantBase ocpTenantBase = new OcpTenantBase();
ocpTenantBase.setTenantUserId(appRegisterDTO.getUserId());
ocpTenantBase.setTenantName(appRegisterDTO.getAppName());
ocpTenantBase.setTenantCode(appRegisterDTO.getAppCode());
ocpTenantBase.setProfessionalKind(appRegisterDTO.getKind());
ocpTenantBase.setTenantUrl(appRegisterDTO.getUrl());
ocpTenantBase.setTenantDescription(appRegisterDTO.getDesc());
ocpTenantBase.setTenantUnit(appRegisterDTO.getManufacturer());
ocpTenantBase.setTenantVersion(appRegisterDTO.getVersion());
ocpTenantBase.setTenantCtime(new Timestamp(System.currentTimeMillis()));
ocpTenantBase.setTenantGroupCode(ocpTenantGroup.getTenantGroupCode());
int i = ocpTenantBaseMapper.insert(ocpTenantBase);
if (n > 0 && i > 0 && j > 0 && m > 0) {
return ResponseVO.ok();
}
return ResponseVO.error("新增应用注册失败");
}
@Override
public ResponseVO getAppInfo(QueryAppDTO queryAppDTO) {
List<QueryAppInfoVO> list = appRegisterMapper.getAppInfo(queryAppDTO);
PageUtil<QueryAppInfoVO> pageUtil = new PageUtil<>();
pageUtil.startPage(queryAppDTO.getCurrentPage(), queryAppDTO.getPageSize(), list);
return ResponseVO.ok(pageUtil);
}
@Override
public ResponseVO addAppImgUrl(List<ImgDTO> imgDTO) {
List<OcpTenantIocn> list = new ArrayList<>();
for (ImgDTO item : imgDTO) {
OcpTenantIocn ocpTenantIocn = new OcpTenantIocn();
ocpTenantIocn.setIocnType("tenant");
ocpTenantIocn.setCodeNo(item.getCodeNo());
ocpTenantIocn.setIocn(item.getImg());
list.add(ocpTenantIocn);
}
int count = appRegisterMapper.batchInsert(list);
if (count > 0) {
return ResponseVO.ok();
}
return ResponseVO.error("应用预览图插入失败");
}
}
...@@ -138,7 +138,7 @@ public class OcpApiTreeServiceImpl extends ServiceImpl<OcpApiTreeMapper, OcpApiG ...@@ -138,7 +138,7 @@ public class OcpApiTreeServiceImpl extends ServiceImpl<OcpApiTreeMapper, OcpApiG
queryWrapper.eq(OcpApiGroup::getApiGroupPcode, ocpApiGroup.getApiGroupCode()); queryWrapper.eq(OcpApiGroup::getApiGroupPcode, ocpApiGroup.getApiGroupCode());
String objId = ocpApiGroup.getObjId(); String objId = ocpApiGroup.getObjId();
List<OcpApiGroup> list = mapper.selectGroupPcode(); List<OcpApiGroup> list = mapper.selectGrpPcode();
if (list.size() >= 1) { if (list.size() >= 1) {
flag = false; flag = false;
} }
......
<?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.AppRegisterMapper">
<select id="getAppInfo" resultType="com.pms.ocp.model.vo.QueryAppInfoVO">
select
icon.iocn AS icon,
base.tenant_name AS appName,
base.tenant_version AS version,
base.tenant_unit AS unit,
extent.tenant_state AS state
from ocp_tenant_base base
INNER JOIN ocp_tenant_iocn icon ON base.tenant_code = icon.code_no
INNER JOIN ocp_tenant_extent extent ON extent.tenant_code = base.tenant_code
INNER JOIN ocp_tenant_group g ON g.tenant_group_code = base.tenant_group_code
<where>
<if test="dto.kind != null and dto.kind != ''">
base.professional_kind like CONCAT('%', #{dto.kind}, '%')
</if>
<if test="dto.type != null and dto.type != ''">
and g.tenant_group_name like CONCAT('%', #{dto.type}, '%')
</if>
</where>
</select>
<insert id="batchInsert">
insert into ocp_tenant_iocn(obj_id, iocn_type, code_no, iocn, company_code)
values
<foreach collection="list" item="item" separator=",">
(#{item.objId,jdbcType=VARCHAR},
#{item.iocnType,jdbcType=VARCHAR},
#{item.codeNo},#{item.iocn},#{item.companyCode,jdbcType=VARCHAR})
</foreach>
</insert>
</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