提交 c5719fd5 authored 作者: hjf's avatar hjf

代码提交

上级 b29b6ca1
# 年度绩效评价指标体系
\ No newline at end of file
package com.tykj;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
/**
* @author HASEE
*/
@SpringBootApplication
public class AnnualPerformanceIndicatorsApplication {
public static void main(String[] args) {
SpringApplication.run(AnnualPerformanceIndicatorsApplication.class, args);
}
}
package com.tykj.base.aop;
import com.tykj.base.entity.BaseEntity;
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.hibernate.mapping.KeyValue;
import org.hibernate.mapping.Map;
import org.springframework.stereotype.Component;
import java.util.Date;
import java.util.List;
import static java.util.Objects.isNull;
/**
* @author C
*/
@Aspect
@Component
public class EntityHandle {
@Before("execution(* org.springframework.data.repository.CrudRepository.save(..)) && args(com.tykj.base.entity.BaseEntity))")
public void checkTimes(JoinPoint point) {
Object[] args = point.getArgs();
for (Object arg : args) {
if (arg instanceof BaseEntity) {
BaseEntity entity = (BaseEntity) arg;
if (isNull(entity.getCreatedTime())) {
entity.setCreatedTime(new Date());
}
entity.setUpdatedTime(new Date());
}
}
}
// @Before("execution(* org.hibernate.internal.SessionImpl.saveOrUpdate(..))")
public void addTime(JoinPoint point) throws DocumentException {
Object[] args = point.getArgs();
for (Object arg : args) {
if (arg instanceof Map) {
}
}
}
}
package com.tykj.base.config;
import com.tykj.model.create_util.BaseCreateUtil;
import com.tykj.model.create_util.MysqlCreateTableUtil;
import com.tykj.model.create_util.OscarCreateUtil;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.stereotype.Component;
/**
* @author huangjiafu
* @version V1.0
* @data 2021/7/15 10:46
**/
@Component
public class BeanFactory {
@Value("${spring.datasource.driver-class-name}")
private String env;
@Bean("baseCreateUtil")
BaseCreateUtil baseCreateUtil() {
if ("com.mysql.cj.jdbc.Driver".equals(env) || "com.mysql.jdbc.Driver".equals(env)) {
return new MysqlCreateTableUtil();
}
// if ("com.oscar.Driver".equals(env)) {
// return new OscarCreateUtil();
// }
return new MysqlCreateTableUtil();
}
}
package com.tykj.base.config;
import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.databind.*;
import com.fasterxml.jackson.databind.ser.std.DateSerializer;
import com.fasterxml.jackson.datatype.jdk8.Jdk8Module;
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer;
import com.fasterxml.jackson.module.paramnames.ParameterNamesModule;
import com.tykj.base.util.DateFormatUtil;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import java.io.IOException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.time.Instant;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.format.DateTimeFormatter;
import java.util.Date;
/**
* 描述:使jackson能够正确的接收时间格式
* @author HuangXiahao
* @version V1.0
* @class Java8TimeConfig
* @packageName com.example.personnelmanager.common.config
* @data 2020/5/20
**/
@Configuration
public class Java8TimeConfig {
@Value("${spring.jackson.date-format}")
private String formatValue;
@Bean(name = "format")
DateTimeFormatter format() {
return DateTimeFormatter.ofPattern(formatValue);
}
@Bean
public ObjectMapper serializingObjectMapper(@Qualifier("format") DateTimeFormatter format) {
JavaTimeModule javaTimeModule = new JavaTimeModule();
javaTimeModule.addSerializer(LocalDateTime.class, new LocalDateTimeSerializer(format));
javaTimeModule.addSerializer(Instant.class, new InstantCustomSerializer(format));
javaTimeModule.addSerializer(Date.class, new DateSerializer(false, new SimpleDateFormat(formatValue)));
javaTimeModule.addDeserializer(Instant.class, new InstantCustomDeserializer());
javaTimeModule.addDeserializer(Date.class, new DateCustomDeserializer());
return new ObjectMapper()
.registerModule(new ParameterNamesModule())
.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS)
.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false)
.registerModule(javaTimeModule);
}
static class InstantCustomSerializer extends JsonSerializer<Instant> {
private final DateTimeFormatter format;
private InstantCustomSerializer(DateTimeFormatter formatter) {
this.format = formatter;
}
@Override
public void serialize(Instant instant, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException {
if (instant == null) {
return;
}
String jsonValue = format.format(instant.atZone(ZoneId.systemDefault()));
jsonGenerator.writeString(jsonValue);
}
}
static class InstantCustomDeserializer extends JsonDeserializer<Instant>{
@Override
public Instant deserialize(JsonParser p, DeserializationContext ctxt)
throws IOException {
String dateString = p.getText().trim();
if(StringUtils.isNotBlank(dateString)){
Date pareDate;
try {
pareDate = DateFormatUtil.pareDate(dateString);
if(null != pareDate){
return pareDate.toInstant();
}
} catch (ParseException e) {
e.printStackTrace();
}
}
return null;
}
}
static class DateCustomDeserializer extends JsonDeserializer<Date>{
@Override
public Date deserialize(JsonParser p, DeserializationContext ctxt)
throws IOException {
String dateString = p.getText().trim();
if(StringUtils.isNotBlank(dateString)){
try {
return DateFormatUtil.pareDate(dateString);
} catch (ParseException e) {
e.printStackTrace();
}
}
return null;
}
}
/**
* Support for Java date and time API.
* @return the corresponding Jackson module.
*/
@Bean
public JavaTimeModule javaTimeModule() {
return new JavaTimeModule();
}
@Bean
public Jdk8Module jdk8TimeModule() {
return new Jdk8Module();
}
}
\ No newline at end of file
package com.tykj.base.config;
import org.hibernate.boot.model.naming.Identifier;
import org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl;
import org.hibernate.engine.jdbc.env.spi.JdbcEnvironment;
import org.springframework.stereotype.Component;
/**
* @author huangjiafu
* @version V1.0
* @data 2021/7/15 9:49
**/
@Component
public class ToUpperCase extends PhysicalNamingStrategyStandardImpl {
@Override
public Identifier toPhysicalTableName(Identifier name, JdbcEnvironment context) {
return Identifier.toIdentifier(name.getText().toUpperCase());
}
@Override
public Identifier toPhysicalColumnName(Identifier name, JdbcEnvironment context) {
return Identifier.toIdentifier(name.getText().toUpperCase());
}
}
package com.tykj.base.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
/**
* @author zsp
* @version V1.0
* @class WebMvcConfig
* @packageName com.example.personnelmanager.common.config
* @data 2020/6/11
**/
@Configuration
@EnableSwagger2
public class WebMvcConfig implements WebMvcConfigurer {
@Bean
public WebMvcConfigurer corsConfigurer() {
return new WebMvcConfigurer() {
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**")
.allowedOriginPatterns("*")
.allowCredentials(true)
.allowedMethods("GET", "POST", "DELETE", "PUT", "PATCH")
.maxAge(3600);
}
};
}
@Bean
public Docket api() {
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo())
.select()
// 自行修改为自己的包路径
.apis(RequestHandlerSelectors.basePackage("com.tykj"))
.paths(PathSelectors.any())
.build();
}
private ApiInfo apiInfo() {
return new ApiInfoBuilder()
.title("数据模型")
.description("数据模型")
.version("1.1")
.build();
}
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
// 这里之所以多了一"/",是为了解决打war时访问不到问题
registry.addResourceHandler("/webs/**").addResourceLocations("classpath:/webs/");
}
}
package com.tykj.base.consumer;
import java.util.Objects;
/**
* @Description TODO
* @Author WWW
* @Date 2021/7/5 17:28
*/
@FunctionalInterface
public interface FourComsumer<T, Y, U, I> {
/**
* accept
* @param t
* @param y
* @param u
* @param i
*/
void accept(T t, Y y, U u, I i);
/**
* andThen
* @param after
* @return
*/
default FourComsumer<T, Y, U, I> andThen(FourComsumer<? super T, ? super Y, ? super U, ? super I> after) {
Objects.requireNonNull(after);
return (l, y, u, i) -> {
accept(l, y, u, i);
after.accept(l, y, u, i);
};
}
}
package com.tykj.base.entity;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.persistence.*;
import java.util.Date;
/**
* @author HuangXiahao
* @version V1.0
* @class BaseEntity
* @packageName com.example.demo.entity
**/
@Data
@MappedSuperclass
public abstract class BaseEntity {
@Id
// @SequenceGenerator(sequenceName = "SEQUENCE",name = "t1",allocationSize = 1)
@GeneratedValue(strategy = GenerationType.IDENTITY)
@ApiModelProperty("主键")
protected Integer id;
@ApiModelProperty("创建时间")
@Temporal(TemporalType.TIMESTAMP)
@JsonFormat(pattern = "yyyy-MM-dd hh:mm")
protected Date createdTime;
@ApiModelProperty("修改时间")
@Temporal(TemporalType.TIMESTAMP)
@JsonFormat(pattern = "yyyy-MM-dd hh:mm")
protected Date updatedTime;
@ApiModelProperty("逻辑删除 0为 false 1为 true")
protected Integer deleted = 0;
}
package com.tykj.base.entity;
import org.hibernate.engine.spi.SharedSessionContractImplementor;
import org.hibernate.id.SequenceGenerator;
import java.io.Serializable;
import java.util.HashMap;
/**
* @author HuangXiahao
* @version V1.0
* @class UUIDHexGenerator
* @packageName com.tykj.base.entity
**/
public class XMQGenerator extends SequenceGenerator {
public XMQGenerator () {
super();
}
@Override
public Serializable generate(SharedSessionContractImplementor s, Object obj) {
if (obj instanceof HashMap){
HashMap hashMap = (HashMap) obj;
if (hashMap.containsKey("id")){
return (Serializable) hashMap.get("id");
};
}
return super.generate(s, obj);
}
}
package com.tykj.base.page;
import lombok.Data;
import org.springframework.data.domain.Sort;
/**
* 描述:Jpa排序类
*
* @author HuangXiahao
* @version V1.0
* @data 2020/5/13
**/
@Data
public class JpaCustomOrder {
private String coulmn;
private Sort.Direction direction;
}
package com.tykj.base.page;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.tykj.base.page.JpaCustomOrder;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Sort;
import org.springframework.util.Assert;
import java.util.ArrayList;
import java.util.List;
/**
* JPA分页类
* @author HuangXiahao
* @class CustomOrder
* @data 2020/5/13
**/
public class JpaCustomPage {
@JsonProperty(access = JsonProperty.Access.WRITE_ONLY)
private Integer page = 0;
@JsonProperty(access = JsonProperty.Access.WRITE_ONLY)
private Integer size = 15;
@JsonProperty(access = JsonProperty.Access.WRITE_ONLY)
private List<JpaCustomOrder> orders = new ArrayList<>();
public Integer getPage() {
return page;
}
public void setPage(Integer page) {
this.page = page;
}
public Integer getSize() {
return size;
}
public void setSize(Integer size) {
Assert.isTrue(page >= 0, "分页信息错误!");
this.size = size;
}
public List<JpaCustomOrder> getOrders() {
return orders;
}
public void setOrders(List<JpaCustomOrder> orders) {
this.orders = orders;
}
@JsonIgnore
public long getOffset() {
return page * size;
}
@JsonIgnore
public Integer getLimit() {
return size;
}
@JsonIgnore
public PageRequest getPageable() {
if (orders.size() != 0) {
List<Sort.Order> orders = new ArrayList<>();
this.orders.stream().forEach(item ->
orders.add(new Sort.Order(item.getDirection(), item.getCoulmn())));
return PageRequest.of(getPage(), getLimit(), Sort.by(orders));
}
return PageRequest.of(getPage(), getLimit());
}
}
package com.tykj.base.result;
import org.springframework.http.ResponseEntity;
/**
* 全局错误处理类,用于处理一些不容易定义的错误
*
* @author HuangXiahao
**/
public class ApiException extends RuntimeException {
private ResponseEntity responseEntity;
public ApiException(ResponseEntity responseEntity) {
this.responseEntity = responseEntity;
}
public ApiException(String message) {
this.responseEntity = ResponseEntity.status(500).body(new ResultObj("",message));
}
public ApiException( Object data,String message) {
this.responseEntity = ResponseEntity.status(500).body(new ResultObj(data, message));
}
public ResponseEntity getResponseEntity() {
return responseEntity;
}
public void setResponseEntity(ResponseEntity responseEntity) {
this.responseEntity = responseEntity;
}
}
package com.tykj.base.result;
import com.fasterxml.jackson.databind.exc.InvalidFormatException;
import com.tykj.base.result.ApiException;
import lombok.extern.slf4j.Slf4j;
import org.springframework.core.Ordered;
import org.springframework.core.annotation.Order;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;
import java.sql.SQLSyntaxErrorException;
/**
* 错误处理类
* 所有的报错信息都会通过本层的方法向外界返回
*
* @author HuangXiahao
**/
@Order(Ordered.HIGHEST_PRECEDENCE)
@ControllerAdvice
@Slf4j
public class GlobalExceptionHandler {
/**
* 业务错误
*
* @param e 报错信息
*/
@ResponseBody
@ExceptionHandler(ApiException.class)
public ResponseEntity errorMessage(ApiException e) {
log.warn("[自定义异常] {}", e.toString());
e.printStackTrace();
if (e.getResponseEntity() != null) {
return e.getResponseEntity();
}
return ResultUtil.failed(e.getMessage());
}
/**
* 处理字段长度异常
* @param invalidFormatException
* @return
*/
@ExceptionHandler(InvalidFormatException.class)
public ResponseEntity handle(InvalidFormatException invalidFormatException){
log.warn(invalidFormatException.toString());
return ResultUtil.failed("字段长度错误,请修改为合适的长度!");
}
@ExceptionHandler(SQLSyntaxErrorException.class)
public ResponseEntity handleSQl(InvalidFormatException invalidFormatException){
log.warn(invalidFormatException.toString());
return ResultUtil.failed("列名不合法,请修改列名!");
}
}
package com.tykj.base.result;
import com.fasterxml.jackson.annotation.JsonPropertyOrder;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @author dengdiyi
* @description 接口返回统一标准类
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@JsonPropertyOrder(value = {"message", "data"})
public class ResultObj<T> {
private T data;
private String message;
public ResultObj(T o) {
this.data = o;
this.message = "no message";
}
}
package com.tykj.base.result;
import com.tykj.base.result.ResultObj;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
/**
* @author HuangXiahao
* @version V1.0
* @class ResultMessage
* @packageName com.example.hello.demo.resultObject
**/
public class ResultUtil<T> {
/**
* 成功返回结果
*
* @param data 获取的数据
*/
public static <T> ResponseEntity<ResultObj<T>> success(T data, String message) {
return ResponseEntity.ok(new ResultObj<>(data,message));
}
/**
* 成功返回结果
*/
public static <T> ResponseEntity<ResultObj<T>> success(String message) {
return ResponseEntity.ok(new ResultObj<>(null,message));
}
/**
* 成功返回结果
*
* @param data 获取的数据
*/
public static <T> ResponseEntity success(T data, HttpHeaders headers) {
return new ResponseEntity(new ResultObj(data), headers, HttpStatus.OK);
}
/**
* 失败返回结果
*/
public static <T> ResponseEntity failed() {
return ResponseEntity.status(500).body(new ResultObj("服务器内部发生错误"));
}
/**
* 失败返回结果
*/
public static <T> ResponseEntity failed(T content) {
return new ResponseEntity(new ResultObj(content), HttpStatus.INTERNAL_SERVER_ERROR);
}
/**
* 失败返回结果
*/
public static <T> ResponseEntity failed(HttpStatus httpStatus) {
return new ResponseEntity(httpStatus);
}
/**
* 失败返回结果
*/
public static <T> ResponseEntity failed(HttpStatus httpStatus, T content) {
return new ResponseEntity(new ResultObj(content), httpStatus);
}
/**
* 参数验证失败返回结果
*/
public static <T> ResponseEntity validateFailed(T content) {
return failed(HttpStatus.INTERNAL_SERVER_ERROR, content);
}
/**
* 未登录返回结果
*/
public static <T> ResponseEntity unauthorized() {
return failed(HttpStatus.UNAUTHORIZED);
}
/**
* 未授权返回结果
*/
public static <T> ResponseEntity forbidden() {
return failed(HttpStatus.FORBIDDEN);
}
}
package com.tykj.base.util;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.time.FastDateFormat;
import java.text.ParseException;
import java.time.Instant;
import java.util.Date;
/**
* 时间格式化工具工具
*
* @author HuangXiahao
* @version V1.0
* @class DateFormatUtil
* @packageName com.example.personnelmanager.common.utils
* @data 2020/5/20
**/
public class DateFormatUtil {
public static final String SYMBOL_DOT = "\\.";
/**
* 日期正则yyyy-MM
*/
public static final String DATE_REGEX_YYYYMM = "^\\d{4}-\\d{1,2}$";
/**
* 日期正则yyyy-MM-dd
*/
public static final String DATE_REGEX_YYYYMMDD = "^\\d{4}-\\d{1,2}-\\d{1,2}$";
/**
* 日期正则yyyy-MM-dd hh:mm
*/
public static final String DATE_REGEX_YYYYMMDDHHMM = "^\\d{4}-\\d{1,2}-\\d{1,2} \\d{1,2}:\\d{1,2}$";
/**
* 日期正则yyyy-MM-dd hh:mm:ss
*/
public static final String DATE_REGEX_YYYYMMDDHHMMSS = "^\\d{4}-\\d{1,2}-\\d{1,2} \\d{1,2}:\\d{1,2}:\\d{1,2}$";
/**
* Instant日期秒+纳秒
*/
public static final String DATE_REGEX_SECOND_DOT_NANOSECOND = "^[0-9]+\\.[0-9]{1,9}$";
/**
* 日期正则yyyy-MM-dd'T'HH:mm:ssZ
*/
public static final String DATE_REGEX_YYYYMMDD_T_HHMMSS_Z = "^\\d{4}-\\d{1,2}-\\d{1,2}T\\d{1,2}:\\d{1,2}:\\d{1,2}Z$";
/**
* 日期正则yyyy-MM-dd'T'HH:mm:ssZ
*/
public static final String DATE_REGEX_YYYYMMDD_T_HHMMSS_SSS_Z = "^\\d{4}-\\d{1,2}-\\d{1,2}T\\d{1,2}:\\d{1,2}:\\d{1,2}\\.\\d{1,3}Z$";
/**
* 以T分隔日期和时间,并带时区信息,符合ISO8601规范
*/
public static final String PATTERN_ISO = "yyyy-MM-dd'T'HH:mm:ss.SSSZZ";
public static final String PATTERN_ISO_ON_SECOND = "yyyy-MM-dd'T'HH:mm:ssZZ";
public static final String PATTERN_ISO_ON_DATE = "yyyy-MM-dd";
public static final String PATTERN_ISO_ON_MONTH = "yyyy-MM";
/**
* 以空格分隔日期和时间,不带时区信息
*/
public static final String PATTERN_DEFAULT = "yyyy-MM-dd HH:mm:ss.SSS";
public static final String PATTERN_DEFAULT_ON_SECOND = "yyyy-MM-dd HH:mm:ss";
public static final String PATTERN_DEFAULT_ON_MINUTE = "yyyy-MM-dd HH:mm";
//
/**
* 以T分隔日期和时间,并带时区信息,符合ISO8601规范
*/
public static final FastDateFormat ISO_FORMAT = FastDateFormat.getInstance(PATTERN_ISO);
public static final FastDateFormat ISO_ON_SECOND_FORMAT = FastDateFormat.getInstance(PATTERN_ISO_ON_SECOND);
public static final FastDateFormat ISO_ON_DATE_FORMAT = FastDateFormat.getInstance(PATTERN_ISO_ON_DATE);
public static final FastDateFormat ISO_ON_MONTH_FORMAT = FastDateFormat.getInstance(PATTERN_ISO_ON_MONTH);
/**
* 以空格分隔日期和时间,不带时区信息
*/
public static final FastDateFormat DEFAULT_FORMAT = FastDateFormat.getInstance(PATTERN_DEFAULT);
public static final FastDateFormat DEFAULT_ON_SECOND_FORMAT = FastDateFormat.getInstance(PATTERN_DEFAULT_ON_SECOND);
public static final FastDateFormat DEFAULT_ON_MINUTE_FORMAT = FastDateFormat.getInstance(PATTERN_DEFAULT_ON_MINUTE);
/**
* 将日期格式的字符串转换成指定格式的日期
* @param pattern 日期格式
* @param dateString 日期字符串
* @return
* @throws ParseException
*/
public static Date pareDate( String pattern, String dateString) throws ParseException {
return FastDateFormat.getInstance(pattern).parse(dateString);
}
/**
* 将日期格式的字符串根据正则转换成相应格式的日期
* @param dateString 日期字符串
* @return
* @throws ParseException
*/
public static Date pareDate( String dateString) throws ParseException {
String source = dateString.trim();
if (StringUtils.isNotBlank(source)) {
if(source.matches(DATE_REGEX_YYYYMM)){
return ISO_ON_MONTH_FORMAT.parse(source);
}else if(source.matches(DATE_REGEX_YYYYMMDD)){
return ISO_ON_DATE_FORMAT.parse(source);
}else if(source.matches(DATE_REGEX_YYYYMMDDHHMM)){
return DEFAULT_ON_MINUTE_FORMAT.parse(source);
}else if(source.matches(DATE_REGEX_YYYYMMDDHHMMSS)){
return DEFAULT_ON_SECOND_FORMAT.parse(source);
}else if(source.matches(DATE_REGEX_YYYYMMDD_T_HHMMSS_Z)){
return ISO_ON_SECOND_FORMAT.parse(source);
}else if(source.matches(DATE_REGEX_YYYYMMDD_T_HHMMSS_SSS_Z)){
return ISO_FORMAT.parse(source);
}else if(source.matches(DATE_REGEX_SECOND_DOT_NANOSECOND)){
String[] split = source.split(SYMBOL_DOT);
return Date.from(Instant.ofEpochSecond(Long.parseLong(split[0]), Long.parseLong(split[1])));
}else {
throw new IllegalArgumentException("Invalid date value '" + source + "'");
}
}
return null;
}
}
package com.tykj.model.controller;
import com.tykj.base.result.ApiException;
import com.tykj.base.result.ResultUtil;
import com.tykj.model.dao.QuoteDao;
import com.tykj.model.dao.RuleDao;
import com.tykj.model.entity.ColumnInfo;
import com.tykj.model.entity.Quote;
import com.tykj.model.entity.Rule;
import com.tykj.model.entity.TableInfo;
import com.tykj.model.entity.vo.*;
import com.tykj.model.service.ModelService;
import com.tykj.model.service.impl.ModelHelper;
import com.tykj.model.utils.SessionUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.hibernate.Session;
import org.hibernate.internal.SessionImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.env.Environment;
import org.springframework.data.domain.Page;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import java.sql.SQLException;
import java.util.*;
/**
* @ClassName ModelController
* @Description TODO
* @Author WWW
* @Date 2021/2/26 13:35
* @Version 1.0
*/
@Slf4j
@RestController
@RequestMapping("/model")
@Api(tags = "数据模型层接口")
public class ModelController {
@Autowired
private ModelService modelService;
@Autowired
private ModelHelper modelHelper;
@Autowired
private QuoteDao quoteDao;
@Autowired
private RuleDao ruleDao;
@Autowired
SessionUtil sessionUtil;
@Autowired
private Environment env;
/**
* @param
* @return java.util.List<com.tykj.workflowcore.model_layer.model.TableInfo>
* @Author WWW
* @Description 得到所有数据库信息
* @Date 16:19 2021/3/4
**/
@ApiOperation("得到所有数据表信息")
@PostMapping("/getAllEntity")
public ResponseEntity getAllEntity(@RequestBody SearchTableInfoVo searchTableInfoVo) {
Page<TableInfo> tableInfos = modelService.pageAllEntities(searchTableInfoVo);
return ResultUtil.success(tableInfos, "数据查询成功!");
}
/**
* @return org.springframework.http.ResponseEntity
* @Author WWW
* @Description 根据表名查询所有数据
* @Date 9:30 2021/3/11
**/
@ApiOperation("根据表名查询所有数据")
@PostMapping("/getAll")
public ResponseEntity getAll(@RequestBody SearchAllVO searchAllVO) throws SQLException {
if (searchAllVO.getOrderConditions() != null && searchAllVO.getOrderConditions().size() > 0) {
return ResultUtil.success(modelService.findAllByName(searchAllVO.getTableName(), searchAllVO.getOrderConditions()), "查询成功!");
}
return ResultUtil.success(modelService.findAllByName(searchAllVO.getTableName()), "查询成功!");
}
/**
* @param searchColumnInfoVo
* @return java.util.List<com.tykj.workflowcore.model_layer.model.ColumnInfo>
* @Author WWW
* @Description 根据表名得到所有字段名
* @Date 16:20 2021/3/4
**/
@ApiOperation("根据表名或者id查询表中所有字段")
@PostMapping("/getAllField")
public ResponseEntity getFields(@RequestBody SearchColumnInfoVo searchColumnInfoVo) {
List<ColumnInfo> columnInfos = modelService.showModelFields(searchColumnInfoVo);
// if ("com.mysql.cj.jdbc.Driver".equals(env.getProperty("spring.datasource.driver-class-name"))
// || "com.mysql.jdbc.Driver".equals(env.getProperty("spring.datasource.driver-class-name"))) {
// for (ColumnInfo columnInfo : columnInfos) {
// if (columnInfo.getFieldName().equals("ID"))
// {
// continue;
// }
// columnInfo.setFieldName(columnInfo.getFieldName().toLowerCase());
// System.out.println(columnInfo);
// }
// }
for (ColumnInfo columnInfo : columnInfos) {
List<Quote> allQuote = quoteDao.findAllByColumnId(columnInfo.getId());
Rule rule;
try {
rule = ruleDao.findAllByColumnId(columnInfo.getId());
} catch (Exception e) {
throw new ApiException("规则不唯一!");
}
columnInfo.setRule(rule);
columnInfo.setQuoteList(allQuote);
}
return ResultUtil.success(columnInfos, "数据查询成功!");
}
/**
* @param
* @return org.springframework.http.ResponseEntity
* @Author WWW
* @Description 新增数据模型
* @Date 16:21 2021/3/4
**/
@ApiOperation("新增数据模型")
@PostMapping(value = "/addModel")
public ResponseEntity addModel(@RequestBody TableVO tableVO) {
long start = System.currentTimeMillis();
TableInfo tableInfo = modelService.newTable(tableVO);
long end = System.currentTimeMillis();
log.warn("创建总用时为:{}秒", (end - start) / 1000.0);
return ResultUtil.success(tableInfo, "新建成功!");
}
/**
* @param map
* @return int
* @Author WWW
* @Description 对应表插入数据
* map (表名,字段数据)
* @Date 16:22 2021/3/4
**/
@ApiOperation(value = "根据表名表插入数据")
@PostMapping("/insertValues")
public ResponseEntity insertValues(@RequestBody Map<String, Object> map) {
SessionImpl session =(SessionImpl) sessionUtil.getSession();
int i = modelService.operationValueByEntityName(map,session,session::saveOrUpdate,modelService::validationAllRuleAndQuote);
if (i == 0) {
return ResultUtil.success("", "数据插入成功!");
}
return ResultUtil.failed("模型类型不支持插入数据!");
}
/**
* @param mapList
* @return int
* @Author WWW
* @Description 对应表插入数据
* map (表名,字段数据)
* @Date 16:22 2021/3/4
**/
@ApiOperation(value = "根据表名表插入数据")
@PostMapping("/insertValueList")
public ResponseEntity insertValueList(@RequestBody List<Map<String, Object>> mapList) {
SessionImpl session =(SessionImpl) sessionUtil.getSession();
int i = modelService.operationValueByEntityNameList(mapList,session,session::saveOrUpdate,modelService::validationAllRuleAndQuote);
if (i == 0) {
return ResultUtil.success("", "数据保存成功!");
}
return ResultUtil.failed("模型类型不支持插入数据!");
}
/**
* @param cqv
* @return 复杂查询
*/
@ApiOperation("复杂查询")
@PostMapping("/complexQuery")
public ResponseEntity complexQuery(@RequestBody complexQueryVo cqv) {
List list = modelService.complexQuery(cqv.getTableName(),
cqv.getColumnNames(),
cqv.getQueryConditions(),
cqv.getGroupByColumn());
if (list != null) {
return ResultUtil.success(list, "查询成功!");
}
return ResultUtil.failed(null, "没有数据!");
}
/**
* @param cqv
* @return 复杂查询
*/
@ApiOperation("复杂查询(分类)")
@PostMapping("/complexQuery/group")
public ResponseEntity complexQueryWithGroup(@RequestBody complexQueryVo cqv) {
CustomPage customPage = modelService.complexQueryWithGroup(cqv.getTableName(), cqv.getGroupCondition(), cqv.getColumnNames(), cqv.getQueryConditions(), cqv.getGroupByColumn(), cqv.getPage(), cqv.getSize());
if (customPage.getContents() != null) {
return ResultUtil.success(customPage, "查询成功!");
}
return ResultUtil.failed(HttpStatus.INTERNAL_SERVER_ERROR, "没有数据!");
}
@ApiOperation("编辑操作")
@PutMapping("/update")
public ResponseEntity updateTable(@RequestBody UpdateTableInfoVO updateTableInfoVO) {
sessionUtil.addXml(modelService.updateTable(updateTableInfoVO));
// return
// if (i == 1) {
return ResultUtil.success("", "修改成功!");
// }
// return ResultUtil.failed("业务不支持修改!");
}
@ApiOperation("删除操作")
@DeleteMapping("/delete")
public ResponseEntity delTable(DelTableVO delTableVO) {
int i = modelService.delTable(delTableVO);
if (i == 1) {
return ResultUtil.success("", "删除成功!");
}
return ResultUtil.failed("业务类型不支持删除!");
}
@ApiOperation("获得获得非聚合对象example")
@GetMapping("/example")
public ResponseEntity getJSONExample(Integer id) {
return ResultUtil.success(modelHelper.getJsonExample(id),
"获得example成功!");
}
@ApiOperation("自定义SQL查询")
@PostMapping("/sql")
public ResponseEntity executeSql(String sql) {
try {
return ResultUtil.success(modelService.executeQuery(sql), "查询成功!");
} catch (SQLException throwables) {
throwables.printStackTrace();
}
return ResultUtil.failed("SQL错误,查询失败!");
}
@ApiOperation("删除接口")
@PostMapping("/deleteValue")
public ResponseEntity deleteValue(@RequestBody Map<String, Object> map) {
SessionImpl session =(SessionImpl) sessionUtil.getSession();
int i = modelService.operationValueByEntityName(map,session,session::delete,null);
if (i == 0) {
return ResultUtil.success("", "数据删除成功!");
}
return ResultUtil.failed("数据删除失败!");
}
@ApiOperation("字段类型")
@GetMapping("/type")
public ResponseEntity type() {
//这代码狗都不改
List<ColumnTypeVO> columnTypeVOS = Arrays.asList(
new ColumnTypeVO("数字", "java.lang.Integer", "11")
, new ColumnTypeVO("浮点数", "java.lang.Double", "11")
, new ColumnTypeVO("单/多行文本", "java.lang.String", "255")
, new ColumnTypeVO("布尔值", "java.lang.Boolean", "1"));
return ResultUtil.success(columnTypeVOS, "查询成功!");
}
}
package com.tykj.model.controller;
import com.tykj.base.result.ResultUtil;
import com.tykj.model.entity.Quote;
import com.tykj.model.entity.vo.SearchQuoteVO;
import com.tykj.model.entity.vo.UpdateQuoteVO;
import com.tykj.model.service.QuoteService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
/**
* @Description TODO
* @Author WWW
* @Date 2021/5/17 15:57
*/
@Api(tags = "引用接口")
@RestController
@RequestMapping("/quote")
public class QuoteController {
@Autowired
private QuoteService quoteService;
@ApiOperation("引用删除")
@GetMapping("/delete")
public ResponseEntity deleteQuote(Integer id) {
Integer integer = quoteService.delQuote(id);
if (integer==1){
return ResultUtil.success("删除成功!");
}
return ResultUtil.failed("此id不存在,删除失败");
}
@ApiOperation("引用更新")
@PostMapping("/update")
public ResponseEntity UpdateQuote(@RequestBody UpdateQuoteVO updateQuoteVO) {
int i = quoteService.updateQuote(updateQuoteVO);
if (i==0){
return ResultUtil.success( "更新/保存成功!");
}
return ResultUtil.failed( "引用数据重复,导致更新/保存失败!");
}
@ApiOperation("查找所有引用")
@PostMapping("/getAllQuote")
public ResponseEntity getAllQuote(@RequestBody SearchQuoteVO searchQuoteVO) {
return ResultUtil.success(quoteService.getAllQuote(searchQuoteVO), "查询成功!");
}
@ApiOperation("保存引用")
@PostMapping("/saveQuote")
public ResponseEntity saveQuote(@RequestBody Quote quote) {
return ResultUtil.success(quoteService.saveQuote(quote), "保存成功!");
}
}
package com.tykj.model.controller;
import com.tykj.base.result.ResultUtil;
import com.tykj.model.entity.vo.RuleVo;
import com.tykj.model.service.RuleService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
/**
* @Description TODO
* @Author WWW
* @Date 2021/6/29 16:39
*/
@Api(tags = "规则接口")
@RestController
@RequestMapping("/rule")
public class RuleController {
@Autowired
RuleService ruleService;
@ApiOperation("规则删除")
@GetMapping("/delete")
public ResponseEntity deleteRule(Integer id) {
try {
ruleService.del(id);
return ResultUtil.success("删除成功!");
} catch (Exception e) {
}
return ResultUtil.failed("此id已经被删除!");
}
@ApiOperation("规则新增")
@PostMapping("/save")
public ResponseEntity add(@RequestBody RuleVo ruleVo) {
try {
ruleService.add(ruleVo);
return ResultUtil.success("保存成功!");
} catch (Exception e) {
}
return ResultUtil.failed("保存失败!");
}
@ApiOperation("规则修改")
@PostMapping("/update")
public ResponseEntity update(@RequestBody RuleVo ruleVo) {
try {
ruleService.update(ruleVo);
return ResultUtil.success("操作成功!");
} catch (Exception ignored) {
}
return ResultUtil.failed("操作失败!");
}
@ApiOperation("查询全部")
@PostMapping("/getAll")
public ResponseEntity get() {
return ResultUtil.success(ruleService.getAll(), "查询成功");
}
}
package com.tykj.model.create_util;
import com.tykj.base.result.ApiException;
import com.tykj.model.entity.vo.ColumnVO;
import com.tykj.model.entity.vo.TableVO;
import javax.persistence.Table;
import java.util.List;
/**
* @author huangjiafu
* @version V1.0
* @data 2021/7/15 10:40
**/
public abstract class BaseCreateUtil {
public String createTable(TableVO tableVO) {
// 1sql-type="text" string 转为text文本,2长度超过会自动转换
List<ColumnVO> dataList = tableVO.getDataList();
String xmlMapping = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +
"<!DOCTYPE hibernate-mapping PUBLIC\n" +
" \"-//Hibernate/Hibernate Mapping DTD 3.0//EN\"\n" +
" \"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd\">\n" +
"<hibernate-mapping>\n" +
" <class entity-name=\"" + tableVO.getModelName().toLowerCase().toUpperCase() + "\" table=\"" + tableVO.getModelName().toLowerCase().toUpperCase() + "\">\n";
xmlMapping += addGenerator();
for (ColumnVO columnVO : dataList) {
try {
//由于ID属于自动建立的列 不允许用户自己建立
// if (!columnVO.getFieldName().toUpperCase(Locale.ROOT).equals("ID")){
xmlMapping +=
"\n <property type=\"" + columnVO.getFieldType() + "\" name=\"" + columnVO.getFieldName().toUpperCase() + "\" length=\"" + columnVO.getFieldLength() +
"\" column=\"" + columnVO.getFieldName().toUpperCase() + "\"/>\n";
// }
} catch (Exception e) {
throw new ApiException("名称不合法!");
}
}
;
xmlMapping += addDefaultTime();
xmlMapping += " </class>\n" +
"</hibernate-mapping>";
return xmlMapping;
}
abstract String addGenerator();
abstract String addDefaultTime();
}
package com.tykj.model.create_util;
import com.tykj.base.result.ApiException;
import com.tykj.model.entity.vo.ColumnVO;
import com.tykj.model.entity.vo.TableVO;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
/**
* @author huangjiafu
* @version V1.0
* @data 2021/7/15 10:43
**/
public class MysqlCreateTableUtil extends BaseCreateUtil {
@Override
String addGenerator() {
String result = "";
result += " <id name=\"ID\" type=\"java.lang.Integer\" length=\"11\" unsaved-value=\"null\" >\n" +
" <generator class=\"increment\" >\n" +
"</generator>" +
" </id>\n";
return result;
}
@Override
String addDefaultTime() {
String result = "";
result+=" <property name =\"CREATE_TIME\" type =\"java.util.Date\" generated=\"always\" insert=\"false\" update=\"false\" access=\"field\" >" +
"<column name=\"CREATE_TIME\" sql-type=\"timestamp\" not-null=\"true\" default=\"CURRENT_TIMESTAMP\" />\n"+
"</property> " ;
result+=" <property name =\"UPDATE_TIME\" type =\"java.util.Date\" generated=\"always\" insert=\"false\" update=\"false\" access=\"field\" >" +
"<column name=\"UPDATE_TIME\" sql-type=\"timestamp\" default=\"CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP\" />\n"+
"</property> " ;
return result;
}
}
package com.tykj.model.create_util;
import com.tykj.model.entity.vo.TableVO;
/**
* @author huangjiafu
* @version V1.0
* @data 2021/7/15 10:58
**/
public class OscarCreateUtil extends BaseCreateUtil {
@Override
public String createTable(TableVO tableVO) {
return super.createTable(tableVO);
}
@Override
String addGenerator() {
return "\" <id name=\\\"ID\\\" type=\\\"java.lang.Integer\\\" length=\\\"11\\\" unsaved-value=\\\"null\\\" >\\n\" +\n" +
" \" <generator class=\\\"com.tykj.base.entity.XMQGenerator\\\" >\\n\" +\n" +
" \"<param name=\\\"sequence\\\">SEQUENCE_\" + tableVO.getModelName().toLowerCase().toUpperCase() + \"</param>\" +\n" +
" \"</generator>\" +\n" +
" \" </id>\\n\";";
}
@Override
String addDefaultTime() {
return " <property name = \\\"CREATE_TIME\\\" type =\\\"java.util.Date\\\" generated=\\\"always\\\" > \\n\" +\n" +
" \" <column name = \\\"CREATE_TIME\\\" default = \\\"CURRENT_TIMESTAMP\\\" /> \\n\" +\n" +
" \" </property> \\n\" +\n" +
" \" <property name = \\\"UPDATE_TIME\\\" type =\\\"java.util.Date\\\" > \\n\" +\n" +
" \" <column name = \\\"UPDATE_TIME\\\" default = \\\"CURRENT_TIMESTAMP\\\" /> \\n\" +\n" +
" \" </property> \";\n" +
" + \" </class>\\n\" +\n" +
" \"</hibernate-mapping>\"";
}
}
package com.tykj.model.dao;
import com.tykj.model.entity.ColumnInfo;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
/**
* @ClassName ColumnInfoDao
* @Description TODO
* @Author WWW
* @Date 2021/2/24 11:22
* @Version 1.0
*/
public interface ColumnInfoDao extends JpaRepository<ColumnInfo, Integer>, JpaSpecificationExecutor<ColumnInfo> {
/**
* 根据dbId查询所有
* @param id
* @return
*/
List<ColumnInfo> findAllByDbId(int id);
/**
* 根据dbID删除
* @param id
*/
@Transactional(rollbackFor = Exception.class)
@Modifying
void deleteAllByDbId(Integer id);
/**
* @param id
* @param columnName
* @return
*/
ColumnInfo findByDbIdAndFieldName(Integer id, String columnName);
}
package com.tykj.model.dao;
import com.tykj.model.entity.Quote;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import java.util.List;
/**
* @Description TODO
* @Author WWW
* @Date 2021/5/17 15:23
*/
public interface QuoteDao extends JpaRepository<Quote, Integer>, JpaSpecificationExecutor<Quote> {
/**
* 根据Columnid查询全部
* @param id
* @return
*/
List<Quote> findAllByColumnId(Integer id);
}
package com.tykj.model.dao;
import com.tykj.model.entity.Rule;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
/**
* @Description TODO
* @Author WWW
* @Date 2021/6/29 11:01
*/
public interface RuleDao extends JpaRepository<Rule, Integer>, JpaSpecificationExecutor<Rule> {
/**
* 根据columnId查询
* @param id
* @return
*/
Rule findAllByColumnId(Integer id);
}
package com.tykj.model.dao;
import com.tykj.model.entity.TableInfo;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
/**
* @ClassName TableInfoDao
* @Description TODO
* @Author WWW
* @Date 2021/2/24 11:20
* @Version 1.0
*/
public interface TableInfoDao extends JpaRepository<TableInfo, Integer>, JpaSpecificationExecutor<TableInfo> {
/**
* 根据表名查询tableInfo
* @param name
* @return
*/
TableInfo findByModelName(String name);
}
package com.tykj.model.entity;
import com.tykj.base.entity.BaseEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.persistence.Entity;
import javax.persistence.Table;
import javax.persistence.Transient;
import java.util.ArrayList;
import java.util.List;
/**
* @ClassName ColumnInfo
* @Description TODO
* @Author WWW
* @Date 2021/2/24 11:14
* @Version 1.0
*/
@Data
@NoArgsConstructor
@Entity
@Table
@ApiModel("列对象")
public class ColumnInfo extends BaseEntity {
/**
* 是否primary key, 0是,1否
*/
@ApiModelProperty("是否主键")
private Integer primaryKey;
@ApiModelProperty("列名")
private String fieldName;
@ApiModelProperty("列名中文描述")
private String fieldTitle;
@ApiModelProperty("列类型")
private String fieldType;
@ApiModelProperty("长度")
private Integer fieldLength;
@ApiModelProperty("所属表名")
private String dbName;
@ApiModelProperty("所属表id")
private Integer dbId;
@ApiModelProperty("详细描述")
private String description;
@ApiModelProperty("规则")
@Transient
private Rule rule =new Rule();
@ApiModelProperty("引用对象")
@Transient
private List<Quote> quoteList =new ArrayList<>();
public ColumnInfo(Integer primaryKey, String fieldName, String fieldTitle, String fieldType, Integer fieldLength, String dbName, Integer dbId, String description) {
this.primaryKey = primaryKey;
this.fieldName = fieldName;
this.fieldTitle = fieldTitle;
this.fieldType = fieldType;
this.fieldLength = fieldLength;
this.dbName = dbName;
this.dbId = dbId;
this.description = description;
}
}
package com.tykj.model.entity;
import com.tykj.base.entity.BaseEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;
/**
* @Description TODO
* @Author WWW
* @Date 2021/5/17 15:17
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@Entity
@Table
@ApiModel("引用对象")
public class Quote extends BaseEntity {
@Column
@ApiModelProperty("columnId")
private Integer columnId;
@ApiModelProperty("值")
private String value;
}
package com.tykj.model.entity;
import com.tykj.base.entity.BaseEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.persistence.Entity;
import javax.persistence.Table;
/**
* @author HASEE
*/
@AllArgsConstructor
@NoArgsConstructor
@Data
@Entity
@Table
@ApiModel("规则表")
public class Rule extends BaseEntity {
@ApiModelProperty("表id")
private Integer tableId;
@ApiModelProperty("字段id")
private Integer columnId;
@ApiModelProperty("规则")
private String regular;
}
package com.tykj.model.entity;
import com.tykj.base.entity.BaseEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Lob;
import javax.persistence.Table;
/**
* @ClassName TableInfo
* @Description TODO
* @Author WWW
* @Date 2021/2/24 11:05
* @Version 1.0
*/
@Entity
@Table
@Data
@AllArgsConstructor
@NoArgsConstructor
@ApiModel("表对象")
public class TableInfo extends BaseEntity {
@ApiModelProperty("数据对象名,不能为空")
@Column(nullable = false)
private String modelName;
@ApiModelProperty("表中文名,不能为空")
@Column(nullable = false)
private String modelTitle;
@ApiModelProperty("详细描述")
private String description;
@Lob
@ApiModelProperty("表对应hbm.xml")
private String xml;
}
package com.tykj.model.entity.customEnums;
/**
* @ClassName ModelType
* @Description TODO 模型的3种类型
* @Author Hxh
* @Date 2021/3/26 14:41
* @Version 1.0
*/
public enum ConnectionType {
/**
* or
*/
OR(" or "),
/**
* and
*/
AND(" and ");
private final String type;
ConnectionType(String type) {
this.type = type;
}
public String getType() {
return type;
}
}
package com.tykj.model.entity.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @Description TODO
* @Author WWW
* @Date 2021/6/30 9:51
*/
@ApiModel("列类型VO")
@Data
@AllArgsConstructor
@NoArgsConstructor
public class ColumnTypeVO {
@ApiModelProperty("中文名")
private String lab;
@ApiModelProperty("类型")
private String value;
@ApiModelProperty("长度")
private String lengths;
}
package com.tykj.model.entity.vo;
import com.tykj.model.entity.Quote;
import com.tykj.model.entity.Rule;
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.util.List;
/**
* @ClassName ColumnVO
* @Description TODO
* @Author WWW
* @Date 2021/3/1 9:58
* @Version 1.0
*/
@ApiModel("列信息VO")
@Data
@AllArgsConstructor
@NoArgsConstructor
public class ColumnVO {
@ApiModelProperty("id")
private Integer id;
@ApiModelProperty("是否主键")
private Integer primaryKey = 1;
@ApiModelProperty("字段类型")
private String fieldType;
@ApiModelProperty("字段名")
private String fieldName;
@ApiModelProperty("中文描述")
private String fieldTitle;
@ApiModelProperty("字段长度,有默认值")
private Integer fieldLength;
@ApiModelProperty("规则")
private Rule rule;
@ApiModelProperty("详细描述")
private String description;
@ApiModelProperty("引用数组")
private List<Quote> quoteList;
}
package com.tykj.model.entity.vo;
import com.tykj.model.entity.ColumnInfo;
import com.tykj.model.entity.Quote;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
/**
* @Description TODO
* @Author WWW
* @Date 2021/5/18 14:19
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class ColumnWithQuoteVO {
private ColumnInfo columnInfo;
private List<Quote> quotes;
}
package com.tykj.model.entity.vo;
import io.swagger.annotations.ApiModel;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
/**
* @author HuangXiahao
* @version V1.0
* @class CustomPage
* @packageName com.tykj.model_layer.entity.vo
**/
@ApiModel("带分页的返回")
@Data
@AllArgsConstructor
@NoArgsConstructor
public class CustomPage {
public long total;
public List contents;
}
package com.tykj.model.entity.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @ClassName DelTableVO
* @Description TODO
* @Author WWW
* @Date 2021/3/23 18:51
* @Version 1.0
*/
@AllArgsConstructor
@NoArgsConstructor
@Data
@ApiModel("删除VO类")
public class DelTableVO {
@ApiModelProperty("模型id")
private Integer id;
@ApiModelProperty("模型名称")
private String dbName;
}
package com.tykj.model.entity.vo;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@AllArgsConstructor
@NoArgsConstructor
@Data
public class GroupCondition {
private String name;
private String value;
}
package com.tykj.model.entity.vo;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @Description TODO
* @Author WWW
* @Date 2021/6/9 17:03
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class OrderCondition {
@ApiModelProperty("列")
private String columns;
@ApiModelProperty("排序")
private String sortValue;
}
package com.tykj.model.entity.vo;
import com.tykj.model.entity.customEnums.ConnectionType;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @author HASEE
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@ApiModel("复杂查询")
public class QueryCondition {
/**
* 字段名 例如:age
*/
@ApiModelProperty(value = "查询字段名",example = "age")
private String name;
/**
* 条件符号类型 例如:>
*/
@ApiModelProperty(value = "查询条件符号类型",example = ">")
private String type;
/**
* 条件参数值 例如:20
*/
@ApiModelProperty(value = "条件参数值",example = "18")
private String value;
@ApiModelProperty(value = "连接条件",example = "or或者and")
private ConnectionType connectionType;
}
package com.tykj.model.entity.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @author HASEE
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@ApiModel("查询规则信息VO")
public class RuleVo{
@ApiModelProperty
private Integer id;
@ApiModelProperty("表id")
private Integer tableId;
@ApiModelProperty("字段id")
private Integer columnId;
@ApiModelProperty("规则")
private String regular;
}
package com.tykj.model.entity.vo;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
/**
* @Description TODO
* @Author WWW
* @Date 2021/6/9 19:24
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class SearchAllVO {
private String tableName;
List<OrderCondition> orderConditions;
}
package com.tykj.model.entity.vo;
import com.tykj.base.page.JpaCustomPage;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @ClassName SearchColumnInfoVo
* @Description TODO
* @Author WWW
* @Date 2021/3/15 14:46
* @Version 1.0
*/
@AllArgsConstructor
@NoArgsConstructor
@Data
@ApiModel("查询列信息VO")
public class SearchColumnInfoVo extends JpaCustomPage {
@ApiModelProperty("查询表id")
private Integer dbId;
@ApiModelProperty("列名称")
private String dbName;
}
package com.tykj.model.entity.vo;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @Description TODO
* @Author WWW
* @Date 2021/5/18 13:19
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class SearchQuoteVO {
private Integer[] columnIds;
private Integer[] ids;
private String value;
private String[] values;
}
package com.tykj.model.entity.vo;
import com.tykj.base.page.JpaCustomPage;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @ClassName SearchTableInfoVo
* @Description TODO
* @Author WWW
* @Date 2021/3/11 16:06
* @Version 1.0
*/
@AllArgsConstructor
@NoArgsConstructor
@Data
@ApiModel("查询表信息VO")
public class SearchTableInfoVo extends JpaCustomPage {
@ApiModelProperty("表id")
private Integer id;
@ApiModelProperty("表名称")
private String modelName;
@ApiModelProperty("表中文名")
private String modelTitle;
@ApiModelProperty("表名称数组")
private Integer[] modelType;
@ApiModelProperty("表id数组")
private Integer[] ids;
}
package com.tykj.model.entity.vo;
import com.tykj.model.entity.ColumnInfo;
import com.tykj.model.entity.TableInfo;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
/**
* @ClassName TableAndColumnInfoVO
* @Description TODO
* @Author WWW
* @Date 2021/3/29 9:59
* @Version 1.0
*/
@AllArgsConstructor
@NoArgsConstructor
@Data
public class TableAndColumnInfoVO {
private List<TableInfo> tableInfos;
private List<ColumnInfo> columnInfos;
}
package com.tykj.model.entity.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
/**
* @ClassName tableVO
* @Description TODO
* @Author WWW
* @Date 2021/3/1 9:56
* @Version 1.0
*/
@ApiModel("表信息VO")
@Data
@AllArgsConstructor
@NoArgsConstructor
public class TableVO {
@ApiModelProperty("中文描述")
private String modelTitle;
@ApiModelProperty("表名")
private String modelName;
@ApiModelProperty("详细描述")
private String description;
/**
* 0扫描,1自建,2扫描后自选
*/
@ApiModelProperty("模型类型")
private Integer modelType;
@ApiModelProperty("父表名称")
private String parentTable;
@ApiModelProperty("列数组")
private List<ColumnVO> dataList;
}
package com.tykj.model.entity.vo;
import com.tykj.model.entity.Quote;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
/**
* @Description TODO
* @Author WWW
* @Date 2021/5/18 15:00
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class UpdateQuoteVO {
@ApiModelProperty("id")
private Integer id;
private List<Quote> quoteList;
}
package com.tykj.model.entity.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @ClassName UpdateTableInfoVO
* @Description TODO
* @Author WWW
* @Date 2021/3/16 13:43
* @Version 1.0
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@ApiModel("更新表VO")
public class UpdateTableInfoVO {
@ApiModelProperty("表id")
private Integer dbId;
@ApiModelProperty("表名称")
private String dbName;
@ApiModelProperty("TableVO")
private TableVO tableVO;
}
package com.tykj.model.entity.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
/**
* @author HuangXiahao
* @version V1.0
* @class complexQueryVo
* @packageName com.tykj.model_layer.entity.vo
**/
@ApiModel("复杂查询VO")
@Data
@AllArgsConstructor
@NoArgsConstructor
public class complexQueryVo {
@ApiModelProperty("表名")
String tableName;
@ApiModelProperty("筛选字段")
List<String> columnNames;
@ApiModelProperty("分类条件信息")
GroupCondition groupCondition;
@ApiModelProperty("查询条件")
List<QueryCondition> queryConditions;
@ApiModelProperty("分类字段")
String groupByColumn;
Integer page = 0 ;
Integer size = 15 ;
}
package com.tykj.model.myEnum;
/**
* @ClassName ModelType
* @Description TODO 模型的3种类型
* @Author WWW
* @Date 2021/3/26 14:41
* @Version 1.0
*/
public class ModelType {
/**
* 聚合对象
*/
// public static final Integer AGGREGATION = -1;
/**
* 基础扫描对象
*/
public static final Integer BASICS = 0;
/**
* 业务对象
*/
// public static final Integer BUSINESS = 1;
/**
* 基础对象延伸
*/
// public static final Integer BASICS_EXTENSION = 2;
/**
* 数据源对象
*/
public static final Integer DATA_SOURCE = 3;
/**
*虚拟对象,业务对象加聚合对象
*/
public static final Integer VIRTUAL = 4;
}
package com.tykj.model.service;
import com.tykj.base.consumer.FourComsumer;
import com.tykj.model.entity.ColumnInfo;
import com.tykj.model.entity.TableInfo;
import com.tykj.model.entity.vo.*;
import org.hibernate.internal.SessionImpl;
import org.hibernate.type.Type;
import org.springframework.data.domain.Page;
import org.springframework.http.ResponseEntity;
import org.springframework.transaction.annotation.Transactional;
import java.sql.SQLException;
import java.util.List;
import java.util.Map;
import java.util.function.BiConsumer;
/**
* @ClassName ModelService
* @Description TODO
* @Author WWW
* @Date 2021/2/26 13:36
* @Version 1.0
*/
public interface ModelService {
/**
* 分页查询
*
* @param searchTableInfoVo
* @return
*/
Page<TableInfo> pageAllEntities(SearchTableInfoVo searchTableInfoVo);
/**
* 方法重载不分页查询
*
* @return
*/
List<TableInfo> listAllEntities(SearchTableInfoVo searchTableInfoVo);
/**
* 根据表名查询所有字段信息
*
* @param searchColumnInfoVo
* @return
*/
List<ColumnInfo> showModelFields(SearchColumnInfoVo searchColumnInfoVo);
/**
* 新建模型
*
* @param tableVO
* @return
*/
TableInfo newTable(TableVO tableVO);
/**
*
*根据表名插入数据
* @param map
* @return
*/
int operationValueByEntityName(Map<String, Object> map,
SessionImpl session,
BiConsumer<String, Object> biConsumer,
FourComsumer<TableInfo, Object, Type, String> valitor);
int operationValueByEntityNameList(List<Map<String, Object>> mapList,
SessionImpl session,
BiConsumer<String, Object> biConsumer,
FourComsumer<TableInfo, Object, Type, String> valitor);
/**
* 根据表名查询所有
*
* @param name
* @return
* @throws SQLException
*/
List<Map<String, Object>> findAllByName(String name) throws SQLException;
List<Map<String, Object>> findAllByName(String name, List<OrderCondition> orderConditions) ;
/**
* 复杂查询
*
* @param tableName
* @param queryConditions
* @return
*/
List<Map<String, Object>> complexQuery(String tableName,
List<String> columnNames,
List<QueryCondition> queryConditions,
String groupName);
/**
* 复杂查询(带分类)
*
* @param tableName
* @param queryConditions
* @return
*/
CustomPage complexQueryWithGroup(String tableName,
GroupCondition groupCondition,
List<String> columnNames,
List<QueryCondition> queryConditions,
String groupByColumn,
Integer page,
Integer size);
/**
* 修改表
*
* @param updateTableInfoVO
* @return
*/
String updateTable(UpdateTableInfoVO updateTableInfoVO);
/**
* 删除表
*
* @param delTableVO
* @return
*/
@Transactional(rollbackFor = Exception.class)
int delTable(DelTableVO delTableVO);
/**
* 根据id批量查询所有tableInfo和ColumnInfo
*
* @param ids
* @return
*/
TableAndColumnInfoVO getTableInfoAndColumnInfoByBatch(Integer[] ids);
/**
* 执行自定义SQL
* @param sql
* @return
* @throws SQLException
*/
List<Map<String, Object>> executeQuery(String sql) throws SQLException;
void validationAllRuleAndQuote(TableInfo tableInfo, Object value, Type propertyType, String propertyNames);
void deleteAllBytableName(String tableName);
}
package com.tykj.model.service;
import com.tykj.model.entity.Quote;
import com.tykj.model.entity.vo.SearchQuoteVO;
import com.tykj.model.entity.vo.UpdateQuoteVO;
import java.util.List;
/**
* @Description TODO
* @Author WWW
* @Date 2021/5/17 15:58
*/
public interface QuoteService {
/**
* 更新quote
* @param updateQuoteVO
*/
int updateQuote(UpdateQuoteVO updateQuoteVO);
/**
* 条件查询引用
* @param searchQuoteVO
* @return
*/
List<Quote> getAllQuote(SearchQuoteVO searchQuoteVO);
Quote saveQuote(Quote quote);
Integer delQuote(Integer id);
}
package com.tykj.model.service;
import com.tykj.model.entity.Rule;
import com.tykj.model.entity.vo.RuleVo;
import java.util.List;
/**
* @Description TODO
* @Author WWW
* @Date 2021/6/29 11:04
*/
public interface RuleService {
/**
* 新增
* @param ruleVo
*/
void add(RuleVo ruleVo);
/**
* 修改
* @param ruleVo
*/
void update(RuleVo ruleVo);
/**
* 删除
* @param id
*/
void del(Integer id);
/**
* 查询
* @return
*/
List<Rule> getAll();
}
package com.tykj.model.service.impl;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.tykj.base.result.ApiException;
import com.tykj.model.dao.ColumnInfoDao;
import com.tykj.model.dao.TableInfoDao;
import com.tykj.model.entity.ColumnInfo;
import com.tykj.model.entity.TableInfo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import static java.lang.String.format;
/**
* @author C
*/
@Service
public class ModelHelper {
@Autowired
private TableInfoDao tableInfoDao;
@Autowired
private ColumnInfoDao columnInfoDao;
/**
* 获取指定数据模型的json格式数据示例
*
* @param tableInfoId 指定id
* @return json格式的数据示例
*/
public String getJsonExample(Integer tableInfoId) {
/* 你要放10个元素,10/0.75+1=14 */
Map<String, Object> result = new HashMap<>();
TableInfo tableInfo = tableInfoDao.findById(tableInfoId)
.orElseThrow(() -> new ApiException(format("未找到该id的数据:%s", tableInfoId)));
String resultKey = tableInfo.getModelName();
Map<String, Object> resultValue = new HashMap<>();
//根据表id查出字段信息 并加入Map结果
List<ColumnInfo> columnInfos = columnInfoDao.findAllByDbId(tableInfoId);
for (ColumnInfo columnInfo : columnInfos) {
resultValue.put(columnInfo.getFieldName(), null);
}
result.put(resultKey, resultValue);
//做json转换并返回
try {
return new ObjectMapper().writeValueAsString(result);
} catch (JsonProcessingException e) {
e.printStackTrace();
throw new ApiException("json转换时出现异常");
}
}
}
package com.tykj.model.service.impl;
import com.github.wenhao.jpa.PredicateBuilder;
import com.github.wenhao.jpa.Specifications;
import com.tykj.base.consumer.FourComsumer;
import com.tykj.base.result.ApiException;
import com.tykj.base.result.ResultUtil;
import com.tykj.model.create_util.BaseCreateUtil;
import com.tykj.model.dao.ColumnInfoDao;
import com.tykj.model.dao.QuoteDao;
import com.tykj.model.dao.RuleDao;
import com.tykj.model.dao.TableInfoDao;
import com.tykj.model.entity.ColumnInfo;
import com.tykj.model.entity.Quote;
import com.tykj.model.entity.TableInfo;
import com.tykj.model.entity.customEnums.ConnectionType;
import com.tykj.model.entity.vo.*;
import com.tykj.model.service.ModelService;
import com.tykj.model.utils.SessionUtil;
import com.tykj.model.utils.SqlTypeUtil;
import com.tykj.model.utils.SqlUtil;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.apache.logging.log4j.util.Strings;
import org.hibernate.Session;
import org.hibernate.StaleStateException;
import org.hibernate.internal.SessionImpl;
import org.hibernate.persister.entity.EntityPersister;
import org.hibernate.query.Query;
import org.hibernate.type.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.env.Environment;
import org.springframework.data.domain.Page;
import org.springframework.http.ResponseEntity;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.text.SimpleDateFormat;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.util.*;
import java.util.concurrent.ExecutionException;
import java.util.function.BiConsumer;
import java.util.stream.Collectors;
import static com.tykj.model.utils.CheckUtils.validationQuote;
import static com.tykj.model.utils.CheckUtils.validationRule;
import static com.tykj.model.utils.HqlUtil.createQuery;
import static java.util.Objects.isNull;
import static java.util.Objects.nonNull;
/**
* @ClassName ModelImpl
* @Description TODO
* @Author WWW
* @Date 2021/2/26 13:39
* @Version 1.0
*/
@Service
@Slf4j
public class ModelImpl implements ModelService {
@Autowired
BaseCreateUtil baseCreateUtil;
@Autowired
private TableInfoDao tableInfoDao;
@Autowired
private ColumnInfoDao columnInfoDao;
@Autowired
private JdbcTemplate jdbcTemplate;
@Autowired
private SessionUtil sessionUtil;
@Autowired
private Environment env;
@Autowired
private QuoteDao quoteDao;
@Autowired
private RuleDao ruleDao;
/**
* @param
* @return java.util.List<com.tykj.workflowcore.model_layer.model.TableInfo>
* @Author WWW
* @Description 得到所有表
* @Date 16:14 2021/3/5
**/
@Override
public Page<TableInfo> pageAllEntities(SearchTableInfoVo searchTableInfoVo) {
PredicateBuilder<TableInfo> and = createPredicateBySearchTableInfoVo(searchTableInfoVo);
return tableInfoDao.findAll(and.build(), searchTableInfoVo.getPageable());
}
@Override
public List<TableInfo> listAllEntities(SearchTableInfoVo stv) {
PredicateBuilder<TableInfo> and = createPredicateBySearchTableInfoVo(stv);
return tableInfoDao.findAll(and.build());
}
private PredicateBuilder<TableInfo> createPredicateBySearchTableInfoVo(SearchTableInfoVo stv) {
PredicateBuilder<TableInfo> and = Specifications.and();
if (!isNull(stv)) {
and.like(!isNull(stv.getModelName()) && isNotEmpty(stv.getModelName()), "modelName", "%" + stv.getModelName() + "%");
and.like(!isNull(stv.getModelTitle()) && isNotEmpty(stv.getModelTitle()), "modelTitle", "%" + stv.getModelTitle() + "%");
and.in(!isNull(stv.getModelType()) && stv.getModelType().length > 0, "modelType", stv.getModelType());
and.in(!isNull(stv.getIds()) && stv.getIds().length > 0, "id", stv.getIds());
}
return and;
}
/**
* @param scv
* @return java.util.List<com.tykj.workflowcore.model_layer.model.ColumnInfo>
* @Author WWW
* @Description 根据表名得到所有字段名
* @Date 16:15 2021/3/5
**/
@Override
public List<ColumnInfo> showModelFields(SearchColumnInfoVo scv) {
PredicateBuilder<ColumnInfo> and = Specifications.and();
and.eq(!isNull(scv.getDbId()), "dbId", scv.getDbId());
and.eq(!isNull(scv.getDbName()) && isNotEmpty(scv.getDbName()), "dbName", scv.getDbName());
return columnInfoDao.findAll(and.build());
}
/**
* @param tableVO
* @return com.tykj.workflowcore.model_layer.model.TableVO
* @Author WWW
* @Description 完全新建一张表
* @Date 16:16 2021/3/5
**/
@Override
@Transactional(rollbackFor = Exception.class)
public TableInfo newTable(TableVO tableVO) {
// String xmlMapping = createTable(tableVO);
String xmlMapping = baseCreateUtil.createTable(tableVO);
// 表名判重
modelNameIsExist(tableVO.getModelName().toUpperCase());
//向数据库中生成这张表
List<ColumnVO> dataList = tableVO.getDataList();
//构建TableInfo
TableInfo tableInfo = new TableInfo();
tableInfo.setModelName(tableVO.getModelName().toUpperCase());
tableInfo.setModelTitle(tableVO.getModelTitle());
tableInfo.setXml(xmlMapping);
tableInfo.setDescription(tableVO.getDescription());
tableInfoDao.save(tableInfo);
// System.out.println(1/0);
//构建字段
//默认存储ID字段
ColumnInfo cId = new ColumnInfo(0, "ID", "主键", "java.lang.Integer", 11, tableInfo.getModelName().toUpperCase(), tableInfo.getId(), "主键");
columnInfoDao.save(cId);
for (ColumnVO columnVO : dataList) {
ColumnInfo columnInfo = new ColumnInfo(
columnVO.getPrimaryKey()
, columnVO.getFieldName().toUpperCase()
, columnVO.getFieldTitle()
, columnVO.getFieldType()
, columnVO.getFieldLength()
, tableInfo.getModelName().toUpperCase()
, tableInfo.getId()
, columnVO.getDescription()
);
ColumnInfo save = columnInfoDao.save(columnInfo);
sessionUtil.addXml(xmlMapping);
/***/
// List<Quote> quoteList = columnVO.getQuoteList();
// if (quoteList != null) {
// for (Quote quote : quoteList) {
// if (isNotEmpty(quote.getValue())) {
// quote.setColumnId(save.getId());
// quoteDao.save(quote);
// }
// }
// }
}
//关闭会话
return tableInfo;
}
/**
* @param map
* @return int
* @Author WWW
* @Description 根据表名新增数据
* @Date 16:17 2021/3/5
**/
@Override
public int operationValueByEntityName(Map<String, Object> map, SessionImpl session, BiConsumer<String, Object> saveOrDelete, FourComsumer<TableInfo, Object, Type, String> valitor) {
session.getTransaction().begin();
for (String tableName :
map.keySet()) {
Object values = map.get(tableName);
if (values instanceof Map) {
//插入数据
operationValue(tableName, (Map) values, session, saveOrDelete, valitor);
}
}
try {
session.getTransaction().commit();
} catch (Exception e) {
//todo 等会捕捉一下
if (e.getMessage().contains("Batch update returned unexpected row count from")) {
throw new ApiException("要操作对象的主键不存在");
}
} finally {
session.close();
}
return 0;
}
@Override
public int operationValueByEntityNameList(List<Map<String, Object>> mapList, SessionImpl session, BiConsumer<String, Object> biConsumer, FourComsumer<TableInfo, Object, Type, String> valitor) {
session.getTransaction().begin();
for (Map<String, Object> map : mapList) {
for (String tableName :
map.keySet()) {
Object values = map.get(tableName);
if (values instanceof Map) {
//插入数据
operationValue(tableName, (Map) values, session, biConsumer, valitor);
}
}
}
try {
session.getTransaction().commit();
} catch (StaleStateException staleStateException) {
if (staleStateException.getMessage().contains("Batch update returned unexpected row count from")) {
throw new ApiException("要操作对象的主键不存在");
}
} finally {
session.close();
}
return 0;
}
/**
* @param tableName
* @param map
* @return void
* @Author WWW
* @Description 新增参数的方法
* @Date 16:17 2021/3/5
**/
public void operationValue(String tableName,
Map map,
SessionImpl session,
BiConsumer<String, Object> saveOrDelete,
FourComsumer<TableInfo, Object, Type, String> valitor) {
TableInfo tableInfo = tableInfoDao.findByModelName(tableName);
EntityPersister entityPersister = session.getEntityPersister(tableName, map);
//主键类型推断
String identifierPropertyName = entityPersister.getIdentifierPropertyName();
if (map.containsKey(identifierPropertyName)) {
changeValueToTargetType(map, map.get(identifierPropertyName), entityPersister.getIdentifierType(), identifierPropertyName);
}
//类型推断 根据目标值的类型强转目标值的目标类型
Type[] propertyTypes = entityPersister.getPropertyTypes();
//这个是列名 数组
String[] propertyNames = entityPersister.getEntityPersister().getPropertyNames();
//这个是插入的值 数组
Object[] propertyValuesToInsert = entityPersister.getPropertyValuesToInsert(map, null, session);
for (int i = 0; i < propertyValuesToInsert.length; i++) {
Object value = propertyValuesToInsert[i];
Type propertyType = propertyTypes[i];
//根据目标Type转换
changeValueToTargetType(map, value, propertyType, propertyNames[i]);
//验证
if (valitor != null) {
valitor.accept(tableInfo, value, propertyType, propertyNames[i]);
}
}
saveOrDelete.accept(tableName, map);
}
/**
* @param name
* @return java.util.List
* @Author WWW
* @Description 通过表名查询所有信息
* @Date 10:51 2021/3/11
**/
@Override
public List<Map<String, Object>> findAllByName(String name) {
if (name != null && name != "") {
String sql = "select * from " + name;
try {
return jdbcTemplate.queryForList(sql);
} catch (Exception e) {
throw new ApiException("查询SQL语句错误!");
}
}
return new ArrayList<>();
}
@Override
public List<Map<String, Object>> complexQuery(String tableName, List<String> columnNames, List<QueryCondition> queryConditions, String groupName) {
if (Strings.isNotEmpty(tableName)) {
String query = createQuery(tableName, columnNames, queryConditions, groupName);
Session session = sessionUtil.getSession();
Query query1 = session.createQuery(query);
List<Map<String, Object>> list = query1.list();
session.close();
return list;
}
return new ArrayList<>();
}
@Override
public List<Map<String, Object>> findAllByName(String name, List<OrderCondition> orderConditions) {
StringBuilder sb = new StringBuilder();
if (StringUtils.isNotEmpty(name)) {
if (orderConditions.size() > 0) {
for (OrderCondition orderCondition : orderConditions) {
sb.append(orderCondition.getColumns() + " " + orderCondition.getSortValue() + " ,");
}
}
String sql = sb.substring(0, sb.toString().lastIndexOf(","));
try {
return jdbcTemplate.queryForList("select * from " + name + " order by " + sql);
} catch (Exception e) {
throw new ApiException("操作数据库失败,请联系管理员");
}
}
return new ArrayList<>();
}
@Override
public CustomPage complexQueryWithGroup(String tableName, GroupCondition groupCondition, List<String> columnNames, List<QueryCondition> queryConditions, String groupByColumn, Integer page, Integer size) {
if (Strings.isNotEmpty(tableName)) {
List<QueryCondition> queryConditionList = new ArrayList<>();
if (queryConditions != null) {
queryConditionList.addAll(queryConditions);
}
if (groupCondition != null) {
if (StringUtils.isNotEmpty(groupCondition.getValue())) {
queryConditionList.add(new QueryCondition(
groupByColumn,
"like",
groupCondition.getValue(),
ConnectionType.AND
));
}
}
String query = createQuery(tableName, columnNames, queryConditionList, Strings.EMPTY);
Session session = sessionUtil.getSession();
Query query1 = session.createQuery(query);
List list1 = query1.list();
page = page - 1;
query1.setFirstResult(page * size);
query1.setMaxResults(size);
List list2 = query1.list();
session.close();
return new CustomPage(list1.size(), list2);
}
// }
return null;
}
private QueryCondition queryCondition(String groupByColumn, GroupCondition groupCondition) {
return new QueryCondition(
groupByColumn,
"like",
groupCondition.getValue(),
ConnectionType.AND
);
}
@Override
@Transactional(rollbackFor = Exception.class)
public String updateTable(UpdateTableInfoVO updateTableInfoVO) {
//tableInfo和columnInfo变化
//查询到TableInfo和ColumnInfo
TableVO tableVO = updateTableInfoVO.getTableVO();
Integer dbId = updateTableInfoVO.getDbId();
TableInfo tableInfo = tableInfoDao.findById(dbId).orElseThrow(() -> new RuntimeException("未找到该id的表信息"));
// todo 记录一个 oldTableInfo 用于回滚
tableInfo.setUpdatedTime(new Date());
tableInfo.setDescription(tableVO.getDescription());
tableInfo.setModelTitle(tableVO.getModelTitle());
List<ColumnInfo> originalColumnInfos = columnInfoDao.findAllByDbId(dbId);
//新的字段信息
List<ColumnInfo> currentColumnInfos = tableVO.getDataList().stream()
.map(columnVO -> columnInfo(tableInfo.getId(), tableInfo.getModelName(), columnVO))
.collect(Collectors.toList());
//根据ColumnInfo集合得出表实际改动的sql语句集合
List<String> sqls = getTableSqls(tableInfo.getModelName(), originalColumnInfos, currentColumnInfos);
//执行sql语句
for (String sql : sqls) {
try {
jdbcTemplate.execute(sql);
} catch (Exception exception) {
//todo
exception.printStackTrace();
throw new ApiException("出错");
// if (exception instanceof OSQLException) {
// String error = exception.getMessage();
// error.substring(error.lastIndexOf(":"));
// return ResultUtil.failed("已有数据类型不能转换"+error);
// }
// if (exception instanceof SQLSyntaxErrorException) {
// return ResultUtil.failed("sql语法错误"+ exception.getMessage());
// }
}
}
//重新保存字段信息
List<ColumnInfo> columnsForAdd = getColumnsForAdd(originalColumnInfos, currentColumnInfos);
for (ColumnInfo columnInfo : columnsForAdd) {
columnInfoDao.save(columnInfo);
}
List<ColumnInfo> columnsForUpdate = getColumnsForUpdate(originalColumnInfos, currentColumnInfos);
for (ColumnInfo columnInfo : columnsForUpdate) {
columnInfoDao.save(columnInfo);
}
List<ColumnInfo> columnsFordDelete = getColumnsFordDelete(originalColumnInfos, currentColumnInfos);
for (ColumnInfo originColumnInfo : columnsFordDelete) {
columnInfoDao.delete(originColumnInfo);
}
String xml = baseCreateUtil.createTable(tableVO);
tableInfo.setXml(xml);
// System.out.println(1/0);
tableInfoDao.save(tableInfo);
sessionUtil.deleteTableInMeteData(tableInfo.getModelName());
return xml;
}
/**
* 对象类型转换
* ColumnVo -> ColumnInfo
*/
private ColumnInfo columnInfo(Integer dbId, String dbName, ColumnVO columnVO) {
ColumnInfo columnInfo = new ColumnInfo();
columnInfo.setId(columnVO.getId());
columnInfo.setFieldName(columnVO.getFieldName());
columnInfo.setFieldType(columnVO.getFieldType());
columnInfo.setFieldLength(columnVO.getFieldLength());
columnInfo.setFieldTitle(columnVO.getFieldTitle());
columnInfo.setFieldLength(columnVO.getFieldLength());
columnInfo.setDescription(columnVO.getDescription());
columnInfo.setDbId(dbId);
columnInfo.setDbName(dbName);
columnInfo.setPrimaryKey(columnVO.getPrimaryKey());
return columnInfo;
}
/**
* 根据ColumnInfo集合得出表实际改动的sql语句集合
* 根据ColumnInfo的id来匹配字段变化
*/
private List<String> getTableSqls(String table, List<ColumnInfo> origin, List<ColumnInfo> current) {
//取到当前环境名
String driverType = env.getProperty("spring.datasource.driver-class-name");
Map<String, String> sqlTypeMap = SqlTypeUtil.getSqlTypeMap(driverType);
List<String> result = new ArrayList<>();
//遍历获取新增和更新列的情况
for (ColumnInfo columnInfo : current) {
ColumnInfo originColumnInfo = origin.stream()
.filter(columnInfo1 -> Objects.equals(columnInfo.getId(), columnInfo1.getId()))
.findAny()
.orElse(null);
if (isNull(originColumnInfo)) {
String sql = SqlUtil.addColumn(table, columnInfo.getFieldName(), columnInfo.getFieldType(), columnInfo.getFieldLength(), sqlTypeMap);
result.add(sql);
} else {
//判断 originColumnInfo 和 columnInfo 是否存在不一样的地方
if (!columnInfo.getFieldType().equals(originColumnInfo.getFieldType())
|| !columnInfo.getFieldLength().equals(originColumnInfo.getFieldLength())
) {
String sql = SqlUtil.updateColumnType(table, originColumnInfo.getFieldName(), columnInfo.getFieldName(), columnInfo.getFieldType(), columnInfo.getFieldLength(), driverType, sqlTypeMap);
result.add(sql);
}
if (!columnInfo.getFieldName().equals(originColumnInfo.getFieldName())) {
String sql = SqlUtil.updateColumnName(table, originColumnInfo.getFieldName(), columnInfo.getFieldName());
result.add(sql);
}
}
}
//遍历获取删除列的情况
for (ColumnInfo originColumnInfo : origin) {
if (!"id".equals(originColumnInfo.getFieldName())) {
boolean noneMatch = current.stream()
.noneMatch(columnInfo1 -> Objects.equals(originColumnInfo.getId(), columnInfo1.getId()));
if (noneMatch) {
String sql = SqlUtil.deleteColumn(table, originColumnInfo.getFieldName());
result.add(sql);
}
}
}
return result;
}
private List<ColumnInfo> getColumnsForAdd(List<ColumnInfo> origin, List<ColumnInfo> current) {
List<ColumnInfo> result = new ArrayList<>();
for (ColumnInfo columnInfo : current) {
ColumnInfo originColumnInfo = origin.stream()
.filter(columnInfo1 -> Objects.equals(columnInfo.getId(), columnInfo1.getId()))
.findAny()
.orElse(null);
if (isNull(originColumnInfo)) {
result.add(columnInfo);
}
}
return result;
}
private List<ColumnInfo> getColumnsForUpdate(List<ColumnInfo> origin, List<ColumnInfo> current) {
List<ColumnInfo> result = new ArrayList<>();
for (ColumnInfo columnInfo : current) {
ColumnInfo originColumnInfo = origin.stream()
.filter(columnInfo1 -> Objects.equals(columnInfo.getId(), columnInfo1.getId()))
.findAny()
.orElse(null);
if (nonNull(originColumnInfo)) {
result.add(columnInfo);
}
}
return result;
}
private List<ColumnInfo> getColumnsFordDelete(List<ColumnInfo> origin, List<ColumnInfo> current) {
List<ColumnInfo> result = new ArrayList<>();
for (ColumnInfo originColumnInfo : origin) {
boolean noneMatch = current.stream()
.noneMatch(columnInfo1 -> Objects.equals(originColumnInfo.getId(), columnInfo1.getId()));
if (noneMatch) {
result.add(originColumnInfo);
}
}
return result;
}
@Override
@Transactional(rollbackFor = Exception.class)
public int delTable(DelTableVO delTableVO) {
Optional<TableInfo> byId = tableInfoDao.findById(delTableVO.getId());
if (!byId.isPresent()) {
throw new ApiException("此id已经被删除!");
} else {
TableInfo tableInfo = byId.get();
try {
tableInfoDao.deleteById(delTableVO.getId());
List<ColumnInfo> allByDbId = columnInfoDao.findAllByDbId(delTableVO.getId());
columnInfoDao.deleteAll(allByDbId);
String sql1 = "DROP TABLE " + tableInfo.getModelName().toUpperCase();
log.info(sql1);
jdbcTemplate.execute(sql1);
//删除SEQUENCE
if ("com.oscar.Driver".equals(env.getProperty("spring.datasource.driver-class-name"))) {
String sql = "DROP SEQUENCE " + "SEQUENCE_" + tableInfo.getModelName().toUpperCase() + " CASCADE;";
log.info(sql);
jdbcTemplate.execute(sql);
}
//删除此session
sessionUtil.deleteTableInMeteData(tableInfo.getModelName());
} catch (Exception e) {
throw new ApiException("删除表时出现错误!");
}
return 1;
}
}
@Override
public TableAndColumnInfoVO getTableInfoAndColumnInfoByBatch(Integer[] ids) {
TableAndColumnInfoVO tableAndColumnInfoVO = new TableAndColumnInfoVO();
PredicateBuilder<TableInfo> builder1 = Specifications.and();
builder1.in(ids != null, "id", ids);
List<TableInfo> allTableInfos = tableInfoDao.findAll(builder1.build());
PredicateBuilder<ColumnInfo> builder2 = Specifications.and();
builder2.in(ids != null, "dbId", ids);
List<ColumnInfo> allColumnInfos = columnInfoDao.findAll(builder2.build());
tableAndColumnInfoVO.setTableInfos(allTableInfos);
tableAndColumnInfoVO.setColumnInfos(allColumnInfos);
return tableAndColumnInfoVO;
}
@Override
public List<Map<String, Object>> executeQuery(String sql) {
try {
return jdbcTemplate.queryForList(sql);
} catch (ApiException e) {
throw new ApiException("sql语法错误!");
}
}
@Override
public void deleteAllBytableName(String tableName) {
String sql = "delete from " + tableName;
jdbcTemplate.execute(sql);
}
void changeValueToTargetType(Map map, Object value, Type propertyType, String propertyName) {
// TimestampType
if ("UPDATE_TIME".equals(propertyName)) {
map.put(propertyName, new Date());
}
// TimestampType
if (propertyType instanceof TimestampType) {
if (value instanceof String) {
if (StringUtils.isNotEmpty((String) value)) {
try {
Date parse = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse((String) value);
map.put(propertyName, parse);
} catch (Exception e) {
throw new ApiException("时间格式输入错误,时间格式请参照=>\"yyyy-MM-dd HH:mm:ss");
}
} else {
map.put(propertyName, null);
}
}
if (value instanceof LocalDateTime) {
map.put(propertyName, Date.from(((LocalDateTime) value).atZone(ZoneId.systemDefault()).toInstant()));
}
}
if (propertyType instanceof IntegerType) {
//然后调用强转方法
try {
int i1 = Integer.valueOf(value + "");
map.put(propertyName, i1);
} catch (Exception e) {
throw new ApiException("字段:" + propertyName + "的类型是数字类型的。他的值不能为:" + value);
}
}
if (propertyType instanceof StringType) {
//然后调用强转方法
map.put(propertyName, value + "");
//
}
if (propertyType instanceof BooleanType) {
map.put(propertyName, value);
}
if (propertyType instanceof DoubleType) {
try {
Double i1 = Double.valueOf(value + "");
map.put(propertyName, i1);
} catch (Exception e) {
throw new ApiException("字段:" + propertyName + "的类型是浮点数类型的。他的值不能为:" + value);
}
}
}
@Override
public void validationAllRuleAndQuote(TableInfo tableInfo, Object value, Type propertyType, String propertyNames) {
if (propertyType instanceof StringType) {
// 通过 tableInfo 的 Id + columnName 为查询条件 查出 columnInfo
ColumnInfo columnInfo = columnInfoDao.findByDbIdAndFieldName(tableInfo.getId(), propertyNames);
//引用校验
if (!isNull(quoteDao.findAllByColumnId(columnInfo.getId()))) {
List<String> quotes = quoteDao.findAllByColumnId(columnInfo.getId()).stream().map(Quote::getValue).collect(Collectors.toList());
if (!validationQuote(quotes, value)) {
throw new ApiException("引用校验不通过!");
}
}
//规则校验
if (!isNull(ruleDao.findAllByColumnId(columnInfo.getId()))) {
String regular = ruleDao.findAllByColumnId(columnInfo.getId()).getRegular();
if (!validationRule(regular, (String) value)) {
throw new ApiException("正则校验不通过!");
}
}
}
}
private Boolean isNotEmpty(String str) {
return StringUtils.isNotEmpty(str);
}
private void modelNameIsExist(String tableName) {
List<String> collect = tableInfoDao.findAll()
.stream()
.map(TableInfo::getModelName)
.collect(Collectors.toList());
if (collect.contains(tableName)) {
throw new ApiException("表名已经存在!");
}
}
}
package com.tykj.model.service.impl;
import com.github.wenhao.jpa.PredicateBuilder;
import com.github.wenhao.jpa.Specifications;
import com.tykj.base.result.ApiException;
import com.tykj.model.dao.QuoteDao;
import com.tykj.model.entity.Quote;
import com.tykj.model.entity.vo.SearchQuoteVO;
import com.tykj.model.entity.vo.UpdateQuoteVO;
import com.tykj.model.service.QuoteService;
import com.tykj.model.utils.SessionUtil;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
import static java.util.Objects.isNull;
/**
* @Description TODO
* @Author WWW
* @Date 2021/5/17 15:59
*/
@Service
public class QuoteServiceImpl implements QuoteService {
@Autowired
private QuoteDao quoteDao;
@Override
public int updateQuote(UpdateQuoteVO updateQuoteVO) {
List<Quote> quoteList = updateQuoteVO.getQuoteList();
try {
for (Quote quote : quoteList) {
quote.setColumnId(updateQuoteVO.getId());
if (existValue(quote.getColumnId(), quote.getValue())) {
quoteDao.save(quote);
}
}
return 0;
}
catch (Exception e){
return 1;
}
}
@Override
public List<Quote> getAllQuote(SearchQuoteVO sqv) {
PredicateBuilder<Quote> and = Specifications.and();
if (sqv!=null){
and.like(!isNull(sqv.getValue() ) && StringUtils.isNotEmpty(sqv.getValue()),
"value", "%" + sqv.getValue() + "%");
and.in(sqv.getColumnIds()!=null && sqv.getColumnIds().length>0,
"columnId",sqv.getColumnIds());
and.in(sqv.getValues()!=null && sqv.getValues().length>0,
"value", sqv.getValues());
}
return quoteDao.findAll(and.build());
}
@Override
public Quote saveQuote(Quote quote) {
if (existValue(quote.getColumnId(), quote.getValue())) {
return quoteDao.save(quote);
}
throw new ApiException("插入错误!");
}
@Override
public Integer delQuote(Integer id) {
quoteDao.deleteById(id);
return 1;
}
public boolean existValue(Integer cId, String value) {
List<String> collect = quoteDao.findAllByColumnId(cId)
.stream()
.map(Quote::getValue)
.collect(Collectors.toList());
if (collect.contains(value)) {
return false;
}
return true;
}
}
package com.tykj.model.service.impl;
import com.tykj.model.dao.RuleDao;
import com.tykj.model.entity.Rule;
import com.tykj.model.entity.vo.RuleVo;
import com.tykj.model.service.RuleService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.Date;
import java.util.List;
/**
* @Description TODO
* @Author WWW
* @Date 2021/6/29 11:05
*/
@Service
public class RuleServiceImpl implements RuleService {
@Autowired
RuleDao ruleDao;
/**
* @param ruleVo
*/
@Override
public void add(RuleVo ruleVo) {
Rule rule = new Rule(
ruleVo.getTableId(),
ruleVo.getColumnId(),
ruleVo.getRegular()
);
ruleDao.save(rule);
}
/**
* 修改
*
* @param ruleVo
*/
@Override
public void update(RuleVo ruleVo) {
Rule rule = new Rule();
rule.setId(ruleVo.getId());
rule.setColumnId(ruleVo.getColumnId());
rule.setRegular(ruleVo.getRegular());
rule.setTableId(ruleVo.getTableId());
rule.setUpdatedTime(new Date());
ruleDao.save(rule);
}
/**
* 删除
*
* @param id
*/
@Override
public void del(Integer id) {
ruleDao.deleteById(id);
}
/**
* 查询
*
* @return
*/
@Override
public List<Rule> getAll() {
return ruleDao.findAll();
}
}
package com.tykj.model.sqlType;
import java.util.HashMap;
import java.util.Map;
/**
* @author HASEE
*/
public class MysqlSqlType {
/**
* java类型对应sql类型Map
*/
public static Map<String, String> TYPE_MAP = new HashMap<>();
static {
TYPE_MAP.put("java.lang.Integer", "int");
TYPE_MAP.put("java.lang.Long", "bigint");
TYPE_MAP.put("java.lang.Short", "smallint");
TYPE_MAP.put("java.lang.Float", "float");
TYPE_MAP.put("java.lang.Double", "double");
TYPE_MAP.put("java.lang.BigDecimal", "numeric");
TYPE_MAP.put("java.lang.Character", "char(1)");
TYPE_MAP.put("java.lang.String", "varchar(255)");
TYPE_MAP.put("java.lang.Byte", "tinyint");
TYPE_MAP.put("java.lang.Boolean", "bit");
TYPE_MAP.put("java.lang.Class", "varchar");
TYPE_MAP.put("java.util.Date", "date");
TYPE_MAP.put("java.util.Calendar", "timestamp");
TYPE_MAP.put("java.util.Locale", "varchar");
TYPE_MAP.put("java.util.TimeZone", "varchar");
TYPE_MAP.put("java.util.Currency", "varchar");
TYPE_MAP.put("java.sql.Date", "date");
TYPE_MAP.put("java.sql.Time", "time");
TYPE_MAP.put("java.sql.Timestamp", "timestamp");
TYPE_MAP.put("java.sql.Clob", "clob");
TYPE_MAP.put("java.sql.Blob", "blob");
}
}
package com.tykj.model.sqlType;
import java.util.HashMap;
import java.util.Map;
/**
* @author HASEE
*/
public class OscarSqlType {
/**
* java类型对应sql类型Map
*/
public static Map<String, String> TYPE_MAP = new HashMap<>();
static {
TYPE_MAP.put("java.lang.Integer", "int");
TYPE_MAP.put("java.lang.Long", "bigint");
TYPE_MAP.put("java.lang.Short", "smallint");
TYPE_MAP.put("java.lang.Float", "float");
TYPE_MAP.put("java.lang.Double", "DOUBLE PRECISION");
TYPE_MAP.put("java.lang.BigDecimal", "numeric");
TYPE_MAP.put("java.lang.Character", "char(1)");
TYPE_MAP.put("java.lang.String", "varchar");
TYPE_MAP.put("java.lang.Byte", "tinyint");
TYPE_MAP.put("java.lang.Boolean", "BOOL");
TYPE_MAP.put("java.lang.Class", "varchar");
TYPE_MAP.put("java.util.Date", "date");
TYPE_MAP.put("java.util.Calendar", "timestamp");
TYPE_MAP.put("java.util.Locale", "varchar");
TYPE_MAP.put("java.util.TimeZone", "varchar");
TYPE_MAP.put("java.util.Currency", "varchar");
TYPE_MAP.put("java.sql.Date", "date");
TYPE_MAP.put("java.sql.Time", "time");
TYPE_MAP.put("java.sql.Timestamp", "timestamp");
TYPE_MAP.put("java.sql.Clob", "clob");
TYPE_MAP.put("java.sql.Blob", "blob");
}
}
package com.tykj.model.utils;
import com.tykj.base.result.ApiException;
import org.apache.commons.lang3.StringUtils;
import java.util.List;
import java.util.regex.Pattern;
import static java.util.Objects.isNull;
/**
* @Description TODO
* @Author WWW
* @Date 2021/6/29 11:19
*/
public class CheckUtils {
/**
* 正则校验
*
* @param regx
* @param val
* @return
*/
public static Boolean validationRule(String regx, String val) {
//假如规则不为空,值为空默认通过校验
if (!StringUtils.isEmpty(regx)) {
if (StringUtils.isEmpty(val) || isNull(val)) {
return true;
} else {
Pattern pattern = Pattern.compile(regx);
return pattern.matcher(val).matches();
}
}
throw new ApiException("校验不通过!");
}
public static Boolean validationQuote(List<String> quotes, Object val) {
//如果没有引用就通过
if (quotes.size() == 0) {
return true;
}
//如果引用存在则通过
if (val instanceof String){
if (quotes.contains(val)) {
return true;
}
}
if (val instanceof Integer){
if (quotes.contains(val)) {
return true;
}
}
if (val instanceof Double){
if (quotes.contains(val)) {
return true;
}
}
throw new ApiException("引用不通过!");
}
}
package com.tykj.model.utils;
/**
* @ClassName ClassTypeLength
* @Description TODO
* @Author WWW
* @Date 2021/3/15 9:53
* @Version 1.0
*/
public class ClassTypeLength {
public static String STRING = "class java.lang.String";
public static String Integer = "class java.lang.Integer";
public static String Double = "class java.lang.Double";
public static int setLength(String genericType) {
int length ;
if (STRING.equals(genericType)) {
length = 255;
} else if (Integer.equals(genericType)) {
length = 11;
} else if (Double.equals(genericType)) {
length = 10;
} else {
length =1;
}
return length;
}
}
package com.tykj.model.utils;
/**
* @Description TODO
* @Author WWW
* @Date 2021/5/19 17:46
*/
public class GetIndexUtil {
public static String getIndex(Integer id){
return "";
}
}
package com.tykj.model.utils;
import com.tykj.model.entity.vo.QueryCondition;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import java.util.List;
import java.util.Objects;
/**
* @author C
*/
@Slf4j
public class HqlUtil {
public static String createQuery(String tableName, List<String> columnNames, List<QueryCondition> conditions, String groupByColumn) {
StringBuilder result = new StringBuilder("select ");
if (Objects.isNull(columnNames) || columnNames.isEmpty()) {
result.append("entity ");
} else {
for (String columnName : columnNames) {
result.append("entity.").append(columnName).append(",");
}
result.delete(result.lastIndexOf(","),result.length() );
}
result.append(" from ").append(tableName).append(" entity ");
if (Objects.nonNull(conditions) && !conditions.isEmpty()) {
result.append(" where ");
for (QueryCondition condition : conditions) {
result.append("entity.")
.append(condition.getName())
.append(" " + condition.getType() + " ")
.append("'")
.append(condition.getValue())
.append("'");
if (condition.getConnectionType()!=null){
result.append(condition.getConnectionType().getType());
}
}
if (result.lastIndexOf(" and ") > -1) {
result.delete(result.lastIndexOf(" and "), result.length());
}
if (result.lastIndexOf(" or ") > -1) {
result.delete(result.lastIndexOf(" or "), result.length());
}
}
if (StringUtils.isNotEmpty(groupByColumn)) {
result.append(" group by entity." + groupByColumn);
}
System.out.println(result.toString());
return result.toString();
}
}
package com.tykj.model.utils;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
/**
* 月份计算工具类
*/
public class MonthUtil {
public static SimpleDateFormat simpleDateFormatMonth = new SimpleDateFormat("yyyy-MM");
public static SimpleDateFormat simpleDateFormatDay = new SimpleDateFormat("yyyy-MM-DD");
/**
* 计算开始时间到结束时间,中间的所有月份
* @param start 开始时间 例如:2020-1
* @param end 结束时间 例如:2020-1
* @return
*/
public static List<String> getMonthList(String start, String end){
List<String> date=new ArrayList<String>();
try{
Date d1 = new SimpleDateFormat("yyyy-MM").parse(start);//定义起始日期
Date d2 = new SimpleDateFormat("yyyy-MM").parse(end);//定义结束日期
Calendar dd = Calendar.getInstance();//定义日期实例
dd.setTime(d1);//设置日期起始时间
while (dd.getTime().before(d2)) {//判断是否到结束日期
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM");
String str = sdf.format(dd.getTime());
date.add(str);
dd.add(Calendar.MONTH, 1);//进行当前日期月份加1
}
date.add(end);;//输出日期结果
}catch (Exception e){
System.out.println("异常"+e.getMessage());
}
return date;
}
public static List<String> getMountListEndNow(String start){
return getMonthList(start,new SimpleDateFormat("yyyy-MM").format(new Date()));
}
public static Date lastDay(String month){
Date parse = null;
try {
parse = simpleDateFormatMonth.parse(month);
} catch (ParseException e) {
e.printStackTrace();
}
Calendar ca = Calendar.getInstance();
ca.setTime(parse);
ca.set(Calendar.DAY_OF_MONTH, ca.getActualMaximum(Calendar.DAY_OF_MONTH));
ca.set(Calendar.HOUR_OF_DAY,23);
ca.set(Calendar.MINUTE,59);
ca.set(Calendar.SECOND,59);
return ca.getTime();
}
public static Date firstDay(String month){
Date parse = null;
try {
parse = simpleDateFormatMonth.parse(month);
} catch (ParseException e) {
e.printStackTrace();
}
Calendar ca = Calendar.getInstance();
ca.setTime(parse);
ca.set(Calendar.DAY_OF_MONTH,1);
return ca.getTime();
}
}
package com.tykj.model.utils;
import java.lang.reflect.Field;
import java.util.HashMap;
import java.util.Map;
/**
* @author HuangXiahao
* @version V1.0
* @class ObjectUtil
* @packageName com.tykj.model_layer.utils
**/
public class ObjectUtil {
//Object转Map
public static Map<String, Object> objectToMap(Object obj) {
Map<String, Object> map = new HashMap<String, Object>();
Class<?> clazz = obj.getClass();
for (Field field : clazz.getDeclaredFields()) {
field.setAccessible(true);
String fieldName = field.getName();
Object value = null;
try {
value = field.get(obj);
} catch (IllegalAccessException e) {
e.printStackTrace();
}
map.put(fieldName, value);
}
return map;
}
}
package com.tykj.model.utils;
import com.google.common.base.Strings;
import com.tykj.model.dao.TableInfoDao;
import com.tykj.model.entity.TableInfo;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.boot.Metadata;
import org.hibernate.boot.MetadataSources;
import org.hibernate.boot.jaxb.hbm.spi.JaxbHbmHibernateMapping;
import org.hibernate.boot.jaxb.hbm.spi.JaxbHbmRootEntityType;
import org.hibernate.boot.jaxb.spi.Binding;
import org.hibernate.boot.registry.StandardServiceRegistry;
import org.hibernate.tool.hbm2ddl.SchemaUpdate;
import org.hibernate.tool.schema.TargetType;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import javax.persistence.EntityManagerFactory;
import java.io.ByteArrayInputStream;
import java.util.EnumSet;
import java.util.List;
/**
* @ClassName SessionUtil
* @Description TODO
* @Author WWW
* @Date 2021/4/1 10:08
* @Version 1.0
*/
@Component
public class SessionUtil {
SessionFactory sessionFactory;
StandardServiceRegistry serviceRegistry;
@Autowired
TableInfoDao tableInfoDao;
MetadataSources metadataSources;
public SessionUtil(EntityManagerFactory entityManagerFactory, TableInfoDao tableInfoDao){
this.tableInfoDao = tableInfoDao;
sessionFactory = entityManagerFactory.unwrap(SessionFactory.class);
serviceRegistry = sessionFactory.getSessionFactoryOptions().getServiceRegistry();
init();
}
public void init(){
metadataSources = new MetadataSources(serviceRegistry);
//去数据库读取所有的XML 加载到 metasource里
List<TableInfo> all = tableInfoDao.findAll();
for (TableInfo tableInfo : all) {
String xml = tableInfo.getXml();
if (!Strings.isNullOrEmpty(xml)){
addXml(xml);
}
}
}
public void addXml(String xmlStr){
metadataSources.addInputStream(new ByteArrayInputStream(xmlStr.getBytes()));
Metadata metadata = metadataSources.buildMetadata();
//更新数据库Schema,如果不存在就创建表,存在就更新字段,不会影响已有数据
SchemaUpdate schemaUpdate = new SchemaUpdate();
schemaUpdate.execute(EnumSet.of(TargetType.DATABASE), metadata, serviceRegistry);
}
public Session getSession(){
Metadata metadata = metadataSources.buildMetadata();
//创建会话工厂
SessionFactory newSessionFactory = metadata.buildSessionFactory();
//保存对象
return newSessionFactory.openSession();
}
public Metadata getMetadata(){
return metadataSources.buildMetadata();
}
public MetadataSources getMetadataSources() {
return metadataSources;
}
public void deleteTableInMeteData(String tableName){
int needDelete = -1;
List<Binding> xmlBindings = metadataSources.getXmlBindings();
for (int i = 0; i < xmlBindings.size(); i++) {
Object root = xmlBindings.get(i).getRoot();
if (root instanceof JaxbHbmHibernateMapping){
List<JaxbHbmRootEntityType> listEntity = ((JaxbHbmHibernateMapping) root).getClazz();
for (JaxbHbmRootEntityType jaxbHbmRootEntityType : listEntity) {
String currentTableName = jaxbHbmRootEntityType.getTable();
if (currentTableName.equals(tableName)){
needDelete = i;
break;
}
}
}
}
if (needDelete>-1){
xmlBindings.remove(needDelete);
}
System.out.println("1");
}
}
package com.tykj.model.utils;
import com.tykj.model.sqlType.MysqlSqlType;
import com.tykj.model.sqlType.OscarSqlType;
import java.util.Map;
/**
* @author HASEE
*/
public class SqlTypeUtil {
public static Map<String, String> getSqlTypeMap(String driveName){
switch (driveName){
case "org.h2.Driver":
case "com.oscar.Driver":
return OscarSqlType.TYPE_MAP;
default:
return MysqlSqlType.TYPE_MAP;
}
}
}
package com.tykj.model.utils;
import com.google.common.base.Strings;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.env.Environment;
import java.util.Map;
import static java.util.Objects.isNull;
import static java.util.Objects.nonNull;
/**
* @author C
*/
@Slf4j
public class SqlUtil {
@Autowired
private Environment env;
/**
* 修改表名的SQL语句
*
* @param table 原表名
* @param newTable 新表名
* @return SQL语句
*/
public static String renameTable(String table, String newTable) {
return String.format("rename table %s to %s;", table, newTable);
}
/**
* 增加单个字段的SQL语句
*
* @param table 表名
* @param name 字段名
* @param type 字段类型
* @param length 字段长度
* @return SQL语句
*/
public static String addColumn(String table, String name, String type, Integer length, Map<String, String> sqlTypeMap) {
type = sqlTypeMap.get(type);
boolean hasValue = !Strings.isNullOrEmpty(table)
&& !Strings.isNullOrEmpty(name)
&& nonNull(type);
StringBuilder result = new StringBuilder();
if (hasValue) {
//基本部分
result.append(String.format("ALTER TABLE %s ADD COLUMN %s %s", table, name, type));
//字段长度
if (nonNull(length) && type.equals("java.lang.String")) {
result.append(String.format("(%s)", length));
}
result.append(";");
return result.toString();
} else {
log.error("表名或字段名不能为空");
throw new RuntimeException("表名或字段名不能为空");
}
}
/**
* 修改表的单个字段的SQL语句
*
* @param table 表名
* @param name 旧字段名
* @param newName 新字段名
* @param newType 字段类型
* @param newLength 字段长度
* @return SQL语句
*/
public static String updateColumnType(String table, String name, String newName, String newType, Integer newLength, String driverType, Map<String, String> sqlTypeMap) {
newType = sqlTypeMap.get(newType);
boolean hasValue = !Strings.isNullOrEmpty(table)
&& nonNull(newType);
StringBuilder result = new StringBuilder();
if (hasValue) {
if (needLengthColumn(newType)) {
result.append(String.format("ALTER TABLE %s MODIFY %s %s (%s) ;", table, name, newType, newLength));
} else {
result.append(String.format("ALTER TABLE %s MODIFY %s %s ;", table, name, newType));
}
if (isNull(newName)) {
result.append(String.format("ALTER TABLE %s RENAME COLUMN %s TO %s ;", table, name, newName));
}
} else {
log.error("参数缺失");
}
return result.toString();
}
/**
* 修改表的单个字段的SQL语句
*
* @param table 表名
* @param name 旧字段名
* @param newName 新字段名
* @return SQL语句
*/
public static String updateColumnName(String table, String name, String newName) {
boolean hasValue = !Strings.isNullOrEmpty(table);
StringBuilder result = new StringBuilder();
if (hasValue) {
if (!isNull(newName)) {
result.append(String.format("ALTER TABLE %s RENAME COLUMN %s TO %s ;", table, name, newName));
}
} else {
log.error("参数缺失");
}
return result.toString();
}
/**
* 删除单个字段的SQL语句
*
* @param table 表名
* @param name 字段名
* @return SQL语句
*/
public static String deleteColumn(String table, String name) {
return String.format("ALTER TABLE %s DROP %s;", table, name);
}
private static boolean needLengthColumn(String type) {
switch (type) {
case "varchar":
return true;
default:
return false;
}
}
}
spring:
jackson:
date-format: yyyy-MM-dd HH:mm:ss
time-zone: GMT+8
datasource:
username: root
password: root
url: jdbc:mysql://localhost:3306/mybatis?useSSL=true&verifyServerCertificate=false&useUnicode=true&autoReconnect=true&characterEncoding=utf-8&serverTimezone=GMT%2B8
driver-class-name: com.mysql.cj.jdbc.Driver
hikari:
read-only: false
connection-timeout: 60000
idle-timeout: 60000
validation-timeout: 3000
max-lifetime: 60000
login-timeout: 5
maximum-pool-size: 60
minimum-idle: 10
jpa:
show-sql: true
hibernate:
naming:
physical-strategy: com.tykj.base.config.ToUpperCase
ddl-auto: update
# database-platform: org.hibernate.dialect.MySQL8Dialect
server:
port: 8088
\ No newline at end of file
body,html{width:100%;height:100%;margin:0;padding:0}*{box-sizing:border-box}#app{font-family:Avenir,Helvetica,Arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-align:center;color:#2c3e50;width:100%;height:100%}.button_ty{width:120px;height:40px;font-size:20px;cursor:pointer;outline:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;color:#394b6b;background-color:#f9fafd;border:1px solid #e8eaf0;margin-right:20px;border-radius:4px}.button_ty:hover{background-color:rgba(238,241,249,.8)}.searchBtn:hover{background-color:rgba(42,61,179,.8)}.searchBtn{color:#fff;background-color:#2a3db3;border:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}
\ No newline at end of file
.searchBar[data-v-4f65c0ad]{background-color:#fff;width:100%;height:84px;box-shadow:0 2px 4px rgba(42,61,179,.1);border-radius:4px;display:flex;align-items:center;box-sizing:border-box}.addOutsideTableDialog[data-v-4f65c0ad] .el-dialog__header{background:#e0e8ff;height:36px;padding:10px;display:flex;align-items:center}.addOutsideTableDialog[data-v-4f65c0ad] .el-dialog__header>.el-dialog__title{font-size:22px;color:#35435e;font-weight:700;margin-left:30px}.addOutsideTableDialog[data-v-4f65c0ad] .el-dialog__header>.el-dialog__headerbtn>i{border-radius:50%;background:#2a3db3;color:#fff;font-size:22px}.addProcessDialog[data-v-4f65c0ad] .el-input__inner,.addProcessDialog[data-v-4f65c0ad] .el-textarea__inner{font-size:20px;background-color:#f9fafd}.ty_padding_left_right[data-v-4f65c0ad]{padding:0 36px}.checkModel[data-v-4f65c0ad]{width:100%;height:60px;display:flex}.ty_lable[data-v-4f65c0ad]{font-size:20px;color:#606266;line-height:60px;white-space:nowrap}.checkModel_select[data-v-4f65c0ad]{flex:1;height:36px;margin-top:10px;padding-left:16px;padding-right:6px}.checkModel_select[data-v-4f65c0ad] .el-select{width:100%;height:40px;background:#f9fafd;border:1px solid #ebedf1;font-size:20px;color:#a1a8ba;border-radius:3px}.checkModel_select[data-v-4f65c0ad] .el-select .el-input__inner{border:0;font-size:20px}.check_byte[data-v-4f65c0ad]{display:flex}.table_wrap[data-v-4f65c0ad]{width:calc(100% - 40px);flex:1;margin-top:0;padding-left:16px}.searchBar[data-v-10604b56]{background-color:#fff;width:100%;height:84px;box-shadow:0 2px 4px rgba(42,61,179,.1);border-radius:4px;display:flex;align-items:center;box-sizing:border-box}.addOptionDialog[data-v-10604b56] .el-dialog__header{background:#e0e8ff;height:36px;padding:10px;display:flex;align-items:center}.addOptionDialog[data-v-10604b56] .el-dialog__header>.el-dialog__title{font-size:22px;color:#35435e;font-weight:700;margin-left:30px}.addOptionDialog[data-v-10604b56] .el-dialog__header>.el-dialog__headerbtn>i{border-radius:50%;background:#2a3db3;color:#fff;font-size:22px}.addProcessDialog[data-v-10604b56] .el-input__inner,.addProcessDialog[data-v-10604b56] .el-textarea__inner{font-size:20px;background-color:#f9fafd}.ty_padding_left_right[data-v-10604b56]{padding:0 36px}.checkModel[data-v-10604b56]{width:100%;height:60px}.checkModel .add[data-v-10604b56]{border:1px solid #2a3db3;color:#2a3db3;border-radius:20px}.add[data-v-10604b56]:hover,.checkModel .add[data-v-10604b56]{width:100px;height:40px;text-align:center;line-height:40px;font-size:18px;cursor:pointer}.add[data-v-10604b56]:hover{background-color:#2a3db3;color:#fff;border-radius:20px}.check_byte[data-v-10604b56]{margin-top:30px}.check_byte .item[data-v-10604b56]{display:flex;align-items:center;width:500px;margin-bottom:10px}.item[data-v-10604b56] .el-input__inner{height:50px;font-size:18px}.item .del[data-v-10604b56]{margin-left:40px;width:50px;color:red;font-size:18px;cursor:pointer}.searchBar[data-v-1eebce70]{background-color:#fff;width:100%;height:84px;box-shadow:0 2px 4px rgba(42,61,179,.1);border-radius:4px;display:flex;align-items:center;box-sizing:border-box}.addOptionDialog[data-v-1eebce70] .el-dialog__header{background:#e0e8ff;height:36px;padding:10px;display:flex;align-items:center}.addOptionDialog[data-v-1eebce70] .el-dialog__header>.el-dialog__title{font-size:22px;color:#35435e;font-weight:700;margin-left:30px}.addOptionDialog[data-v-1eebce70] .el-dialog__header>.el-dialog__headerbtn>i{border-radius:50%;background:#2a3db3;color:#fff;font-size:22px}.addProcessDialog[data-v-1eebce70] .el-input__inner,.addProcessDialog[data-v-1eebce70] .el-textarea__inner{font-size:20px;background-color:#f9fafd}.ty_padding_left_right[data-v-1eebce70]{padding:0 36px}.checkModel[data-v-1eebce70]{width:100%;height:60px}.checkModel .add[data-v-1eebce70]{border:1px solid #2a3db3;color:#2a3db3;border-radius:20px}.add[data-v-1eebce70]:hover,.checkModel .add[data-v-1eebce70]{width:100px;height:40px;text-align:center;line-height:40px;font-size:18px;cursor:pointer}.add[data-v-1eebce70]:hover{background-color:#2a3db3;color:#fff;border-radius:20px}.check_byte[data-v-1eebce70]{margin-top:30px}.check_byte .item[data-v-1eebce70]{display:flex;align-items:center;margin-bottom:10px}.item[data-v-1eebce70] .el-input__inner{height:50px;font-size:18px}.item .del[data-v-1eebce70]{margin-left:40px;width:50px;color:red;font-size:18px;cursor:pointer}.addDataModel[data-v-99867544]{height:100%;background:#fff;display:flex;flex-direction:column}.addDataModel .searchBar[data-v-99867544]{height:120px;margin:10px;padding:10px;background:rgba(166,192,201,.479)}.addDataModel .searchBar .topDiv[data-v-99867544]{text-align:left}.addDataModel .searchBar .topDiv .addProcess[data-v-99867544]{margin-left:40px}.addDataModel .searchBar .topDiv .preservationButton[data-v-99867544]{margin-left:30px}.addDataModel .ty_table[data-v-99867544]{margin:10px;flex:1}
\ No newline at end of file
.pagination[data-v-6e5b13b2] .number{width:20%!important}.dataModelManage[data-v-6e5b13b2]{display:flex;flex-direction:column;background:#fff;height:100%}.dataModelManage .set_model[data-v-6e5b13b2]{position:fixed;top:0;right:0;width:20px;height:20px}.dataModelManage .searchBar[data-v-6e5b13b2]{margin:10px;background:rgba(166,192,201,.479);border-radius:10px;padding:20px;padding-bottom:0}.dataModelManage .main[data-v-6e5b13b2]{flex:1;padding:10px}
\ No newline at end of file
.set_model[data-v-a9d4e952]{position:fixed;top:0;right:0;width:20px;height:20px}.setModel-page[data-v-a9d4e952]{width:100%;height:100%}.setModel-body[data-v-a9d4e952]{width:100%;height:100%;display:flex}.setModel-body .nav-box[data-v-a9d4e952]{width:18%;height:100%;overflow-y:auto;padding:20px;background:#ccc}.setModel-body .nav-box .item[data-v-a9d4e952]{text-align:left;font-size:20px;font-weight:600;padding:10px 20px;margin-bottom:10px;cursor:pointer}.setModel-body .nav-box .item[data-v-a9d4e952]:hover{background:#6495ed}.setModel-body .container[data-v-a9d4e952]{width:80%;margin-left:20px}.setModel-body .container .table-box[data-v-a9d4e952]{width:100%;height:100%;display:flex;flex-direction:column}.setModel-body .container .table-box .topDiv[data-v-a9d4e952]{padding-top:20px;text-align:left;padding-left:10px}.setModel-body .container .table-box .topDiv .preservationButton[data-v-a9d4e952]{margin-left:30px}.setModel-body .container .table-box .ty_table[data-v-a9d4e952]{margin:10px;flex:1}.setModel-body .container .table-box .ty_table .empty[data-v-a9d4e952]{width:100%;height:100%;display:flex;align-items:center;justify-content:center}
\ No newline at end of file
This source diff could not be displayed because it is too large. You can view the blob instead.
<!DOCTYPE html><html lang=""><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width,initial-scale=1"><link rel="icon" href="favicon.ico"><title>datamodel</title><link href="css/chunk-13db6cf5.c6944e59.css" rel="prefetch"><link href="css/chunk-378aeb01.88f23a7e.css" rel="prefetch"><link href="css/chunk-65e873cb.a47d4cb6.css" rel="prefetch"><link href="js/chunk-13db6cf5.ba02db97.js" rel="prefetch"><link href="js/chunk-378aeb01.2d3c9d6f.js" rel="prefetch"><link href="js/chunk-65e873cb.f20a89cc.js" rel="prefetch"><link href="css/app.225d289e.css" rel="preload" as="style"><link href="css/chunk-vendors.caacd1e0.css" rel="preload" as="style"><link href="js/app.23f099d0.js" rel="preload" as="script"><link href="js/chunk-vendors.720fd9e2.js" rel="preload" as="script"><link href="css/chunk-vendors.caacd1e0.css" rel="stylesheet"><link href="css/app.225d289e.css" rel="stylesheet"></head><body><noscript><strong>We're sorry but datamodel doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></noscript><div id="app"></div><script src="js/chunk-vendors.720fd9e2.js"></script><script src="js/app.23f099d0.js"></script></body></html>
\ No newline at end of file
(function(e){function t(t){for(var r,o,d=t[0],l=t[1],c=t[2],i=0,s=[];i<d.length;i++)o=d[i],Object.prototype.hasOwnProperty.call(a,o)&&a[o]&&s.push(a[o][0]),a[o]=0;for(r in l)Object.prototype.hasOwnProperty.call(l,r)&&(e[r]=l[r]);f&&f(t);while(s.length)s.shift()();return u.push.apply(u,c||[]),n()}function n(){for(var e,t=0;t<u.length;t++){for(var n=u[t],r=!0,o=1;o<n.length;o++){var d=n[o];0!==a[d]&&(r=!1)}r&&(u.splice(t--,1),e=l(l.s=n[0]))}return e}var r={},o={app:0},a={app:0},u=[];function d(e){return l.p+"js/"+({}[e]||e)+"."+{"chunk-13db6cf5":"ba02db97","chunk-378aeb01":"2d3c9d6f","chunk-65e873cb":"f20a89cc"}[e]+".js"}function l(t){if(r[t])return r[t].exports;var n=r[t]={i:t,l:!1,exports:{}};return e[t].call(n.exports,n,n.exports,l),n.l=!0,n.exports}l.e=function(e){var t=[],n={"chunk-13db6cf5":1,"chunk-378aeb01":1,"chunk-65e873cb":1};o[e]?t.push(o[e]):0!==o[e]&&n[e]&&t.push(o[e]=new Promise((function(t,n){for(var r="css/"+({}[e]||e)+"."+{"chunk-13db6cf5":"c6944e59","chunk-378aeb01":"88f23a7e","chunk-65e873cb":"a47d4cb6"}[e]+".css",a=l.p+r,u=document.getElementsByTagName("link"),d=0;d<u.length;d++){var c=u[d],i=c.getAttribute("data-href")||c.getAttribute("href");if("stylesheet"===c.rel&&(i===r||i===a))return t()}var s=document.getElementsByTagName("style");for(d=0;d<s.length;d++){c=s[d],i=c.getAttribute("data-href");if(i===r||i===a)return t()}var f=document.createElement("link");f.rel="stylesheet",f.type="text/css",f.onload=t,f.onerror=function(t){var r=t&&t.target&&t.target.src||a,u=new Error("Loading CSS chunk "+e+" failed.\n("+r+")");u.code="CSS_CHUNK_LOAD_FAILED",u.request=r,delete o[e],f.parentNode.removeChild(f),n(u)},f.href=a;var p=document.getElementsByTagName("head")[0];p.appendChild(f)})).then((function(){o[e]=0})));var r=a[e];if(0!==r)if(r)t.push(r[2]);else{var u=new Promise((function(t,n){r=a[e]=[t,n]}));t.push(r[2]=u);var c,i=document.createElement("script");i.charset="utf-8",i.timeout=120,l.nc&&i.setAttribute("nonce",l.nc),i.src=d(e);var s=new Error;c=function(t){i.onerror=i.onload=null,clearTimeout(f);var n=a[e];if(0!==n){if(n){var r=t&&("load"===t.type?"missing":t.type),o=t&&t.target&&t.target.src;s.message="Loading chunk "+e+" failed.\n("+r+": "+o+")",s.name="ChunkLoadError",s.type=r,s.request=o,n[1](s)}a[e]=void 0}};var f=setTimeout((function(){c({type:"timeout",target:i})}),12e4);i.onerror=i.onload=c,document.head.appendChild(i)}return Promise.all(t)},l.m=e,l.c=r,l.d=function(e,t,n){l.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},l.r=function(e){"undefined"!==typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},l.t=function(e,t){if(1&t&&(e=l(e)),8&t)return e;if(4&t&&"object"===typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(l.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var r in e)l.d(n,r,function(t){return e[t]}.bind(null,r));return n},l.n=function(e){var t=e&&e.__esModule?function(){return e["default"]}:function(){return e};return l.d(t,"a",t),t},l.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},l.p="",l.oe=function(e){throw console.error(e),e};var c=window["webpackJsonp"]=window["webpackJsonp"]||[],i=c.push.bind(c);c.push=t,c=c.slice();for(var s=0;s<c.length;s++)t(c[s]);var f=i;u.push([0,"chunk-vendors"]),n()})({0:function(e,t,n){e.exports=n("56d7")},2395:function(e,t,n){},"56d7":function(e,t,n){"use strict";n.r(t);n("e260"),n("e6cf"),n("cca6"),n("a79d");var r=n("2b0e"),o=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{attrs:{id:"app"}},[n("router-view")],1)},a=[],u=(n("7c55"),n("2877")),d={},l=Object(u["a"])(d,o,a,!1,null,null,null),c=l.exports,i=(n("d3b7"),n("3ca3"),n("ddb0"),n("8c4f")),s=function(){var e=this,t=e.$createElement;e._self._c;return e._m(0)},f=[function(){var e=this,t=e.$createElement,r=e._self._c||t;return r("div",{staticClass:"home"},[r("img",{attrs:{alt:"Vue logo",src:n("cf05")}})])}],p={name:"Home",data:function(){return{value:""}},methods:{change:function(e){console.log(e)}}},m=p,h=Object(u["a"])(m,s,f,!1,null,null,null),v=h.exports;r["default"].use(i["a"]);var g=[{path:"/",name:"Home",component:v},{path:"/dataModel",name:"dataModel",component:function(){return n.e("chunk-378aeb01").then(n.bind(null,"91b3"))}},{path:"/addDataModel",name:"addDataModel",component:function(){return n.e("chunk-13db6cf5").then(n.bind(null,"2ea3"))}},{path:"/setModel",name:"setModel",component:function(){return n.e("chunk-65e873cb").then(n.bind(null,"85a7"))}}],b=new i["a"]({mode:"hash",base:"",routes:g}),y=b,k=n("2f62");r["default"].use(k["a"]);var w=new k["a"].Store({state:{},mutations:{},actions:{},modules:{}}),j=n("bc3a"),O=n.n(j),_="",E={default:_},M=E;O.a.interceptors.request.use((function(e){return"post"===e.method||"put"===e.method||e.method,e}),(function(e){return Promise.reject(e)})),O.a.interceptors.response.use((function(e){return e}),(function(e){return Promise.reject(e)}));var C=function(e,t){var n=t.method,r=void 0===n?"get":n,o=t.timeout,a=void 0===o?18e4:o,u=t.data,d=void 0===u?{}:u,l=t.params,c=void 0===l?{}:l,i=t.headers,s=void 0===i?{"Content-Type":"application/json"}:i,f=t.dataType,p=void 0===f?"json":f,m={method:r,timeout:a,url:e,baseURL:M.default,data:d,params:c,headers:s,dataType:p};return O()(m)},S={getAllEntity:function(e){return C("/model/getAllEntity",{method:"post",data:e})},deleteModel:function(e){return C("/model/delete",{method:"delete",params:e})},getAllField:function(e){return C("/model/getAllField",{method:"post",data:e})},updateModel:function(e){return C("/model/update",{method:"put",data:e})},addModel:function(e){return C("/model/addModel",{method:"post",data:e})},getAllCalculationData:function(e){return C("/model/getAll",{method:"post",data:e})},addSingleCalculationData:function(e){return C("/model/insertValues",{method:"post",data:e})},deleteCalculationData:function(e){return C("/model/deleteValue",{method:"post",data:e})},addCalculationData:function(e){return C("/model/insertValueList",{method:"post",data:e})},getfiledType:function(){return C("/model/type",{method:"get"})},deleteOption:function(e){return C("/quote/delete",{method:"get",params:e})},updateOption:function(e){return C("/quote/update",{method:"post",data:e})},ruleSave:function(e){return C("/rule/update",{method:"post",data:e})},deleteSave:function(e){return C("/rule/delete",{method:"get",params:e})}},A=S,P=n("5c96"),T=n.n(P);n("0fae");r["default"].prototype.$axios=A,r["default"].use(T.a),r["default"].config.productionTip=!1,new r["default"]({router:y,store:w,render:function(e){return e(c)}}).$mount("#app")},"7c55":function(e,t,n){"use strict";n("2395")},cf05:function(e,t,n){e.exports=n.p+"img/logo.82b9c7a5.png"}});
\ No newline at end of file
(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-13db6cf5"],{"057f":function(e,t,a){var i=a("fc6a"),n=a("241c").f,l={}.toString,r="object"==typeof window&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[],o=function(e){try{return n(e)}catch(t){return r.slice()}};e.exports.f=function(e){return r&&"[object Window]"==l.call(e)?o(e):n(i(e))}},"0ba5":function(e,t,a){"use strict";a("7b6b")},"0cb2":function(e,t,a){var i=a("7b0b"),n=Math.floor,l="".replace,r=/\$([$&'`]|\d{1,2}|<[^>]*>)/g,o=/\$([$&'`]|\d{1,2})/g;e.exports=function(e,t,a,s,c,u){var d=a+e.length,f=s.length,p=o;return void 0!==c&&(c=i(c),p=r),l.call(u,p,(function(i,l){var r;switch(l.charAt(0)){case"$":return"$";case"&":return e;case"`":return t.slice(0,a);case"'":return t.slice(d);case"<":r=c[l.slice(1,-1)];break;default:var o=+l;if(0===o)return i;if(o>f){var u=n(o/10);return 0===u?i:u<=f?void 0===s[u-1]?l.charAt(1):s[u-1]+l.charAt(1):i}r=s[o-1]}return void 0===r?"":r}))}},"107c":function(e,t,a){var i=a("d039");e.exports=i((function(){var e=RegExp("(?<a>b)","string".charAt(5));return"b"!==e.exec("b").groups.a||"bc"!=="b".replace(e,"$<a>c")}))},"14c3":function(e,t,a){var i=a("c6b6"),n=a("9263");e.exports=function(e,t){var a=e.exec;if("function"===typeof a){var l=a.call(e,t);if("object"!==typeof l)throw TypeError("RegExp exec method returned something other than an Object or null");return l}if("RegExp"!==i(e))throw TypeError("RegExp#exec called on incompatible receiver");return n.call(e,t)}},"159b":function(e,t,a){var i=a("da84"),n=a("fdbc"),l=a("17c2"),r=a("9112");for(var o in n){var s=i[o],c=s&&s.prototype;if(c&&c.forEach!==l)try{r(c,"forEach",l)}catch(u){c.forEach=l}}},"15ba":function(e,t,a){},"17c2":function(e,t,a){"use strict";var i=a("b727").forEach,n=a("a640"),l=n("forEach");e.exports=l?[].forEach:function(e){return i(this,e,arguments.length>1?arguments[1]:void 0)}},"1dde":function(e,t,a){var i=a("d039"),n=a("b622"),l=a("2d00"),r=n("species");e.exports=function(e){return l>=51||!i((function(){var t=[],a=t.constructor={};return a[r]=function(){return{foo:1}},1!==t[e](Boolean).foo}))}},2573:function(e,t,a){"use strict";a("9ffa")},"2b35":function(e,t,a){"use strict";a("15ba")},"2ea3":function(e,t,a){"use strict";a.r(t);var i=function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("div",{staticClass:"addDataModel"},[a("div",{staticClass:"searchBar"},[a("el-form",{ref:"ruleForm",staticStyle:{width:"100%"},attrs:{model:e.fieldTableData,rules:e.rules,"label-width":"100px"}},[a("el-row",[a("el-col",{attrs:{span:8}},[a("el-form-item",{attrs:{label:"名称: ",prop:"modelName"}},[e.update?e._e():a("el-input",{staticStyle:{width:"100%"},on:{input:function(t){return e.tableInput(e.fieldTableData)}},model:{value:e.fieldTableData.modelName,callback:function(t){e.$set(e.fieldTableData,"modelName",t)},expression:"fieldTableData.modelName"}}),e.update?a("span",{staticClass:"ty_span_name"},[e._v(e._s(e.fieldTableData.modelName))]):e._e()],1)],1),a("el-col",{attrs:{span:8}},[a("el-form-item",{attrs:{label:"标签: ",prop:"modelTitle"}},[a("el-input",{staticStyle:{width:"100%"},model:{value:e.fieldTableData.modelTitle,callback:function(t){e.$set(e.fieldTableData,"modelTitle",t)},expression:"fieldTableData.modelTitle"}})],1)],1),a("el-col",{attrs:{span:8}},[a("el-form-item",{attrs:{label:"描述: ",prop:"description"}},[a("el-input",{staticStyle:{width:"100%"},model:{value:e.fieldTableData.description,callback:function(t){e.$set(e.fieldTableData,"description",t)},expression:"fieldTableData.description"}})],1)],1)],1)],1),a("div",{staticClass:"topDiv"},[a("el-button",{staticClass:"addProcess",on:{click:e.add}},[e._v(" 新增字段 ")]),a("el-button",{staticClass:"preservationButton",on:{click:e.addTable}},[e._v("保存")])],1)],1),a("div",{staticClass:"ty_table"},[a("el-table",{staticStyle:{width:"100%"},attrs:{data:e.fieldTableData.dataList,height:"100%","row-class-name":function(e){e.row;var t=e.rowIndex;return t%2==0?"":"stripe"}}},[a("el-table-column",{attrs:{prop:"fieldName",label:"字段名"},scopedSlots:e._u([{key:"default",fn:function(t){return[a("el-input",{on:{input:function(a){return e.filedInput(t.row)}},model:{value:t.row.fieldName,callback:function(a){e.$set(t.row,"fieldName",a)},expression:"scope.row.fieldName"}})]}}])}),a("el-table-column",{attrs:{prop:"fieldTitle",label:"标签"},scopedSlots:e._u([{key:"default",fn:function(t){return[a("el-input",{model:{value:t.row.fieldTitle,callback:function(a){e.$set(t.row,"fieldTitle",a)},expression:"scope.row.fieldTitle"}})]}}])}),a("el-table-column",{attrs:{prop:"description",label:"描述"},scopedSlots:e._u([{key:"default",fn:function(t){return[a("el-input",{model:{value:t.row.description,callback:function(a){e.$set(t.row,"description",a)},expression:"scope.row.description"}})]}}])}),a("el-table-column",{attrs:{prop:"fieldType",label:"类型"},scopedSlots:e._u([{key:"default",fn:function(t){return[a("el-select",{attrs:{placeholder:"请选择数据类型"},on:{change:function(a){return e.changeType(t.$index,t.row.fieldType)}},model:{value:t.row.fieldType,callback:function(a){e.$set(t.row,"fieldType",a)},expression:"scope.row.fieldType"}},e._l(e.fieldType,(function(e,t){return a("el-option",{key:t,attrs:{label:e.lab,value:e.value}})})),1)]}}])}),a("el-table-column",{attrs:{prop:"fieldLength",label:"长度"},scopedSlots:e._u([{key:"default",fn:function(t){return[a("el-input",{model:{value:t.row.fieldLength,callback:function(a){e.$set(t.row,"fieldLength",a)},expression:"scope.row.fieldLength"}})]}}])}),a("el-table-column",{attrs:{label:"引用",width:"110"},scopedSlots:e._u([{key:"default",fn:function(t){return[t.row.ID&&0!==t.row.ID?a("el-button",{attrs:{type:"primary",plain:"",size:"medium"},on:{click:function(a){return e.onClick_showOptionSet(t.row.quotes,t.$index,t.row.ID)}}},[e._v("设置")]):e._e()]}}])}),a("el-table-column",{attrs:{label:"规则",width:"110"},scopedSlots:e._u([{key:"default",fn:function(t){return[t.row.ID&&0!==t.row.ID?a("el-button",{attrs:{type:"primary",plain:"",size:"medium"},on:{click:function(a){return e.onClick_showRule(t.row)}}},[e._v("校验")]):e._e()]}}])}),a("el-table-column",{attrs:{label:"操作",width:"110"},scopedSlots:e._u([{key:"default",fn:function(t){return[a("el-button",{staticStyle:{color:"red"},attrs:{type:"text"},on:{click:function(a){return e.del(t.$index)}}},[e._v("删除")])]}}])})],1)],1),e.addDialogVisible2?a("addOutsideTableDialog",{attrs:{addDialogVisible2:e.addDialogVisible2,fieldTableData:e.fieldTableData},on:{"update:addDialogVisible2":function(t){e.addDialogVisible2=t},"update:add-dialog-visible2":function(t){e.addDialogVisible2=t},"update:fieldTableData":function(t){e.fieldTableData=t},"update:field-table-data":function(t){e.fieldTableData=t}}}):e._e(),e.isShowOptionSet?a("option-set-dialog",{attrs:{isShowOptionSet:e.isShowOptionSet,currentIndex:e.currentIndex,optionList:e.optionList,update:e.update,currentId:e.currentId},on:{"update:isShowOptionSet":function(t){e.isShowOptionSet=t},"update:is-show-option-set":function(t){e.isShowOptionSet=t},close:e.onClick_closeOption}}):e._e(),e.isShowRule?a("ruleDialog",{attrs:{isShowRule:e.isShowRule,filedOnce:e.filedOnce},on:{"update:isShowRule":function(t){e.isShowRule=t},"update:is-show-rule":function(t){e.isShowRule=t}}}):e._e()],1)},n=[],l=(a("ac1f"),a("5319"),a("a4d3"),a("e01a"),a("c740"),a("a434"),a("159b"),function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("div",{staticClass:"addOutsideTableDialog"},[a("el-dialog",{attrs:{title:"选择基础数据模型",visible:e.addDialogVisible2,width:"70%",top:"50px","before-close":e.showFlase},on:{"update:visible":function(t){e.addDialogVisible2=t}}},[a("div",{staticClass:"ty_padding_left_right"},[a("div",{staticClass:"checkModel"},[a("span",{staticClass:"ty_lable"},[e._v("基础对象:")]),a("div",{staticClass:"checkModel_select"},[a("el-select",{attrs:{placeholder:"请选择"},on:{change:e.changeTable},model:{value:e.fileData.parentTable,callback:function(t){e.$set(e.fileData,"parentTable",t)},expression:"fileData.parentTable"}},e._l(e.modelTypeList,(function(e){return a("el-option",{key:e.id,attrs:{label:e.modelName,value:e.modelName}})})),1)],1)]),a("div",{staticClass:"check_byte"},[a("span",{staticClass:"ty_lable",staticStyle:{"margin-top":"10px"}},[e._v("选择字段:")]),a("div",{staticClass:"ty_table table_wrap"},[a("el-table",{staticStyle:{width:"100%","margin-top":"20px"},attrs:{data:e.tableData,height:"400","row-class-name":function(e){e.row;var t=e.rowIndex;return t%2==0?"":"stripe"}},on:{"selection-change":e.selectionChange}},[a("el-table-column",{attrs:{type:"selection",width:"55",selectable:e.selectable}}),a("el-table-column",{attrs:{prop:"fieldName",label:"名称"}}),a("el-table-column",{attrs:{prop:"fieldTitle",label:"标签"}}),a("el-table-column",{attrs:{prop:"fieldType",label:"类型"}}),a("el-table-column",{attrs:{prop:"description",label:"描述"}})],1)],1)])]),a("span",{staticClass:"dialog-footer",attrs:{slot:"footer"},slot:"footer"},[a("button",{staticClass:"button_ty",on:{click:e.showFlase}},[e._v("取 消")]),a("button",{staticClass:"searchBtn button_ty",on:{click:e.addTable}},[e._v("确 定")])])])],1)}),r=[],o={name:"addFormDialog",props:["addDialogVisible2","fieldTableData"],data:function(){return{modelTypeList:[],fieldType:[{lab:"数字",value:"java.lang.Integer",lengths:"11"},{lab:"文本",value:"java.lang.String",lengths:"255"},{lab:"时间",value:"java.util.Date",lengths:"0"}],rules:{modelName:[{required:!0,message:"请输入表名",trigger:"blur"}],modelTitle:[{required:!0,message:"请输入别名",trigger:"blur"}],parentTable:[{required:!0,message:"请选择活动资源",trigger:"change"}]},tableData:[],fileData:{parentTable:"",dataList:[]}}},created:function(){this.getAllModel()},methods:{showFlase:function(){this.$emit("update:addDialogVisible2",!1)},selectable:function(e,t){return!0},changeTable:function(e){this.editTable(e)},editTable:function(e){var t=this,a={dbName:e};this.$axios.getAllField(a).then((function(e){t.tableData=e.data.data}))},getAllModel:function(){var e=this,t={modelType:[0]};this.$axios.getAllEntity(t).then((function(t){e.modelTypeList=t.data.data.content})).catch((function(e){console.log(e.response)}))},selectionChange:function(e){this.fileData.dataList=e},addTable:function(){this.fileData.dataList.length<1?this.$message.error("请至少选择一个字段"):(this.fileData.modelType=2,this.fieldTableData.dataList=this.fileData.dataList,this.fieldTableData.modelType=this.fileData.modelType,this.fieldTableData.parentTable=this.fileData.parentTable,this.showFlase())}}},s=o,c=(a("2573"),a("2877")),u=Object(c["a"])(s,l,r,!1,null,"4f65c0ad",null),d=u.exports,f=function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("div",{staticClass:"addOptionDialog"},[a("el-dialog",{attrs:{title:"引用设置",visible:e.isShowOptionSet,width:"40%",top:"80px","before-close":e.showFalse},on:{"update:visible":function(t){e.isShowOptionSet=t}}},[a("div",{staticClass:"ty_padding_left_right"},[a("div",{staticClass:"checkModel"},[a("div",{staticClass:"add",on:{click:e.add}},[e._v("添加")])]),a("div",{staticClass:"check_byte"},e._l(e.inputList,(function(t,i){return a("div",{key:i,staticClass:"item"},[a("el-input",{attrs:{placeholder:"请输入内容"},model:{value:t.value,callback:function(a){e.$set(t,"value",a)},expression:"item.value"}}),a("div",{staticClass:"del",on:{click:function(a){return e.del(t,i)}}},[e._v("删除")])],1)})),0)]),a("span",{staticClass:"dialog-footer",attrs:{slot:"footer"},slot:"footer"},[a("button",{staticClass:"button_ty",on:{click:e.showFalse}},[e._v("取 消")]),a("button",{staticClass:"searchBtn button_ty",on:{click:e.onClick_confrim}},[e._v(" 确定 ")])])])],1)},p=[],h={props:["isShowOptionSet","currentIndex","optionList","update","currentId"],data:function(){return{inputList:[{value:""}]}},created:function(){Array.isArray(this.optionList)&&this.optionList.length>0&&(this.inputList=this.optionList)},methods:{add:function(){this.inputList.push({value:""})},del:function(e,t){var a=this;e.id&&this.$axios.deleteOption({id:e.id}).then((function(e){a.$message({message:e.data.message,type:"success"}),a.$emit("close",!1),a.inputList.length>1&&a.inputList.splice(t,1)})).catch((function(e){a.$message.error(e.response.data.data),console.log(e)}))},showFalse:function(){this.$emit("close",!1)},unNull:function(e){for(var t=0;t<e.length;t++)if(e[t].value.length<1)return!0;return!1},onClick_confrim:function(){var e=this;if(this.update){var t={id:this.currentId,quoteList:this.inputList};console.log(t),this.$axios.updateOption(t).then((function(t){e.$message({message:t.data.message,type:"success"}),e.$emit("close",!1),e.$parent.editTable()})).catch((function(t){e.$message.error(t.response.data.data),e.$parent.editTable()}))}else{if(this.unNull(this.inputList))return void this.$message.error("至少填写一条");this.$emit("close",this.inputList,this.currentIndex,!0)}}}},b=h,g=(a("0ba5"),Object(c["a"])(b,f,p,!1,null,"10604b56",null)),v=g.exports,m=function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("div",{staticClass:"addOptionDialog"},[a("el-dialog",{attrs:{title:"规则校验",visible:e.isShowRule,width:"40%",top:"80px","before-close":e.showFalse},on:{"update:visible":function(t){e.isShowRule=t}}},[a("div",{staticClass:"ty_padding_left_right"},[a("div",{staticClass:"check_byte"},[a("div",{staticClass:"item"},[a("el-input",{attrs:{placeholder:"请输入内容"},model:{value:e.filedOnce.rule.regular,callback:function(t){e.$set(e.filedOnce.rule,"regular",t)},expression:"filedOnce.rule.regular"}}),e.filedOnce.rule.id&&0!=e.filedOnce.rule.id?a("div",{staticClass:"del",on:{click:e.del}},[e._v(" 删除 ")]):e._e()],1)])]),a("span",{staticClass:"dialog-footer",attrs:{slot:"footer"},slot:"footer"},[a("button",{staticClass:"button_ty",on:{click:e.showFalse}},[e._v("取 消")]),a("button",{staticClass:"searchBtn button_ty",on:{click:e.ruleSave}},[e._v("确定")])])])],1)},y=[],w={props:["filedOnce","isShowRule"],data:function(){return{}},methods:{showFalse:function(){this.$emit("update:isShowRule",!1)},ruleSave:function(){var e=this;console.log(this.filedOnce),this.$axios.ruleSave(this.filedOnce.rule).then((function(t){console.log(t),e.$route.query.tableId&&e.$parent.editTable(),e.$message({message:t.data.message,type:"success"}),e.showFalse()})).catch((function(t){e.$message.error(t.response.data.data)}))},del:function(){var e=this;this.$axios.deleteSave({id:this.filedOnce.rule.id}).then((function(t){e.$message({message:t.data.message,type:"success"}),e.$route.query.tableId&&e.$parent.editTable(),e.showFalse()})).catch((function(t){e.$message.error(t.response.data.data)}))}}},x=w,T=(a("5fbf"),Object(c["a"])(x,m,y,!1,null,"1eebce70",null)),S=T.exports,$={components:{addOutsideTableDialog:d,OptionSetDialog:v,ruleDialog:S},data:function(){return{update:!1,filedOnce:{},addDialogVisible2:!1,isShowOptionSet:!1,isShowRule:!1,currentIndex:"",optionList:[],currentId:"",fieldType:[{lab:"数字",value:"java.lang.Integer",lengths:"11"},{lab:"浮点数",lengths:"11",value:"java.lang.Double"},{lab:"单/多行文本",lengths:"500",value:"java.lang.String"},{lab:"布尔值",value:"java.lang.Boolean",lengths:"1"},{lab:"日期",value:"java.util.Date",lengths:"0"}],rules:{modelName:[{required:!0,message:"请输入表名",trigger:"blur"}],modelTitle:[{required:!0,message:"请输入别名",trigger:"blur"}]},dbId:"",fieldTableData:{modelName:"",modelTitle:"",modelType:4,parentTable:"",description:"",dataList:[{fieldName:"",fieldTitle:"",description:"",fieldType:"java.lang.String",fieldLength:"255",primaryKey:1,quoteList:[{value:""}],rule:{regular:""}}]}}},created:function(){this.$route.query.tableId&&(this.update=!0,this.editTable())},methods:{tableInput:function(e){if(e.modelName){e.modelName=e.modelName.replace(/[^A-Za-z0-9_]+$/g,"").toUpperCase();var t=/^[A-Za-z]{1}[A-Za-z0-9_]+$/;return!t.test(e.modelName)&&e.modelName.length>1?(this.$message.error("格式错误"),void(e.modelName="")):void 0}},filedInput:function(e){if(e.fieldName){e.fieldName=e.fieldName.replace(/[^A-Za-z0-9_]+$/g,"").toUpperCase();var t=/^[A-Za-z]{1}[A-Za-z0-9_]+$/;return!t.test(e.fieldName)&&e.fieldName.length>1?(this.$message.error("格式错误"),void(e.fieldName="")):void 0}},getfiledType:function(){var e=this;this.$axios.getfiledType().then((function(t){e.fieldType=t.data.data}))},onClick_showOptionSet:function(e,t,a){this.currentIndex=t,this.optionList=e,this.currentId=a,this.optionList=this.fieldTableData.dataList[t].quoteList,this.isShowOptionSet=!0},onClick_showRule:function(e){e.rule||(e.rule={regular:"",tableId:e.dbId,columnId:e.ID}),this.filedOnce=e,this.isShowRule=!0},onClick_closeOption:function(e,t){this.isShowOptionSet=!1,e&&(this.fieldTableData.dataList[t].quoteList=e)},editTable:function(){var e=this,t=JSON.parse(sessionStorage.getItem("ty_model")),a=t.modelName,i=t.modelTitle,n=t.modelType,l=t.parentTable,r=t.description,o=t.id;this.dbId=o;var s={dbId:this.$route.query.tableId};this.$axios.getAllField(s).then((function(t){var o=t.data.data.findIndex((function(e){return"ID"==e.fieldName}));o>-1&&t.data.data.splice(o,1),e.fieldTableData={modelName:a,modelTitle:i,modelType:n,parentTable:l,description:r,dataList:t.data.data}}))},changeType:function(e,t){var a=this.fieldType.findIndex((function(e,a,i){return e.value==t}));this.fieldTableData.dataList[e].fieldLength=this.fieldType[a].lengths},add:function(){var e={fieldName:"",description:"",fieldType:"java.lang.String",fieldLength:"255",fieldTitle:"",primaryKey:1,quoteList:[{value:""}],rule:{regular:""}};this.fieldTableData.dataList.push(e)},del:function(e){var t=this;this.$confirm("此操作将删除该数据, 是否继续?","提示",{confirmButtonText:"确定",cancelButtonText:"取消",type:"warning"}).then((function(){t.fieldTableData.dataList.length<=1||t.fieldTableData.dataList.splice(e,1)})).catch((function(){t.$message({type:"info",message:"已取消删除"})}))},unique:function(e){for(var t=0;t<e.length;t++)for(var a=0;a<e.length;a++)if(e[t].fieldName==e[a].fieldName&&t!=a)return!0;return!1},unNull:function(e){for(var t=0;t<e.length;t++)if(e[t].fieldName.length<1)return!0;return!1},addTable:function(){var e=this;if(this.fieldTableData.modelName.length<1)this.$message.error("请输入表名");else{var t=/^[A-Za-z]{1}[A-Za-z0-9_]+$/;if(t.test(this.fieldTableData.modelName))if(this.fieldTableData.modelTitle.length<1)this.$message.error("请输入别名");else if(this.unique(this.fieldTableData.dataList))this.$message.error("字段名不能重复");else if(this.unNull(this.fieldTableData.dataList))this.$message.error("字段名不能为空");else{var a=JSON.parse(JSON.stringify(this.fieldTableData)),i=a.dataList.findIndex((function(e){return"ID"==e.fieldName}));if(i>-1&&a.dataList.splice(i,1),a.dataList.length<1)this.$message.error("字段个数不能少于一个");else{var n=this.$loading({lock:!0,text:"保存中,请稍后",spinner:"el-icon-loading",background:"rgba(0, 0, 0, 0.7)"});if(this.update){var l={dbId:this.dbId,tableVO:a};this.$axios.updateModel(l).then((function(t){n.close(),e.$router.push("dataModel"),e.$message({message:t.data.message,type:"success"})})).catch((function(t){n.close(),e.$message.error(t.response.data.data)}))}else a.dataList.forEach((function(e){delete e.ID})),this.$axios.addModel(a).then((function(t){n.close(),e.$router.push("dataModel"),e.$message({message:t.data.message,type:"success"})})).catch((function(t){n.close(),e.$message.error(t.response.data.data)}))}}else this.$message.error("表名格式错误")}}}},_=$,D=(a("2b35"),Object(c["a"])(_,i,n,!1,null,"99867544",null));t["default"]=D.exports},5319:function(e,t,a){"use strict";var i=a("d784"),n=a("d039"),l=a("825a"),r=a("50c4"),o=a("a691"),s=a("1d80"),c=a("8aa5"),u=a("0cb2"),d=a("14c3"),f=a("b622"),p=f("replace"),h=Math.max,b=Math.min,g=function(e){return void 0===e?e:String(e)},v=function(){return"$0"==="a".replace(/./,"$0")}(),m=function(){return!!/./[p]&&""===/./[p]("a","$0")}(),y=!n((function(){var e=/./;return e.exec=function(){var e=[];return e.groups={a:"7"},e},"7"!=="".replace(e,"$<a>")}));i("replace",(function(e,t,a){var i=m?"$":"$0";return[function(e,a){var i=s(this),n=void 0==e?void 0:e[p];return void 0!==n?n.call(e,i,a):t.call(String(i),e,a)},function(e,n){if("string"===typeof n&&-1===n.indexOf(i)&&-1===n.indexOf("$<")){var s=a(t,this,e,n);if(s.done)return s.value}var f=l(this),p=String(e),v="function"===typeof n;v||(n=String(n));var m=f.global;if(m){var y=f.unicode;f.lastIndex=0}var w=[];while(1){var x=d(f,p);if(null===x)break;if(w.push(x),!m)break;var T=String(x[0]);""===T&&(f.lastIndex=c(p,r(f.lastIndex),y))}for(var S="",$=0,_=0;_<w.length;_++){x=w[_];for(var D=String(x[0]),O=h(b(o(x.index),p.length),0),I=[],k=1;k<x.length;k++)I.push(g(x[k]));var N=x.groups;if(v){var L=[D].concat(I,O,p);void 0!==N&&L.push(N);var C=String(n.apply(void 0,L))}else C=u(D,p,O,I,N,n);O>=$&&(S+=p.slice($,O)+C,$=O+D.length)}return S+p.slice($)}]}),!y||!v||m)},"5fbf":function(e,t,a){"use strict";a("cafb")},"65f0":function(e,t,a){var i=a("861d"),n=a("e8b5"),l=a("b622"),r=l("species");e.exports=function(e,t){var a;return n(e)&&(a=e.constructor,"function"!=typeof a||a!==Array&&!n(a.prototype)?i(a)&&(a=a[r],null===a&&(a=void 0)):a=void 0),new(void 0===a?Array:a)(0===t?0:t)}},"746f":function(e,t,a){var i=a("428f"),n=a("5135"),l=a("e538"),r=a("9bf2").f;e.exports=function(e){var t=i.Symbol||(i.Symbol={});n(t,e)||r(t,e,{value:l.f(e)})}},"7b6b":function(e,t,a){},8418:function(e,t,a){"use strict";var i=a("c04e"),n=a("9bf2"),l=a("5c6c");e.exports=function(e,t,a){var r=i(t);r in e?n.f(e,r,l(0,a)):e[r]=a}},"8aa5":function(e,t,a){"use strict";var i=a("6547").charAt;e.exports=function(e,t,a){return t+(a?i(e,t).length:1)}},9263:function(e,t,a){"use strict";var i=a("ad6d"),n=a("9f7f"),l=a("5692"),r=a("7c73"),o=a("69f3").get,s=a("fce3"),c=a("107c"),u=RegExp.prototype.exec,d=l("native-string-replace",String.prototype.replace),f=u,p=function(){var e=/a/,t=/b*/g;return u.call(e,"a"),u.call(t,"a"),0!==e.lastIndex||0!==t.lastIndex}(),h=n.UNSUPPORTED_Y||n.BROKEN_CARET,b=void 0!==/()??/.exec("")[1],g=p||b||h||s||c;g&&(f=function(e){var t,a,n,l,s,c,g,v=this,m=o(v),y=m.raw;if(y)return y.lastIndex=v.lastIndex,t=f.call(y,e),v.lastIndex=y.lastIndex,t;var w=m.groups,x=h&&v.sticky,T=i.call(v),S=v.source,$=0,_=e;if(x&&(T=T.replace("y",""),-1===T.indexOf("g")&&(T+="g"),_=String(e).slice(v.lastIndex),v.lastIndex>0&&(!v.multiline||v.multiline&&"\n"!==e[v.lastIndex-1])&&(S="(?: "+S+")",_=" "+_,$++),a=new RegExp("^(?:"+S+")",T)),b&&(a=new RegExp("^"+S+"$(?!\\s)",T)),p&&(n=v.lastIndex),l=u.call(x?a:v,_),x?l?(l.input=l.input.slice($),l[0]=l[0].slice($),l.index=v.lastIndex,v.lastIndex+=l[0].length):v.lastIndex=0:p&&l&&(v.lastIndex=v.global?l.index+l[0].length:n),b&&l&&l.length>1&&d.call(l[0],a,(function(){for(s=1;s<arguments.length-2;s++)void 0===arguments[s]&&(l[s]=void 0)})),l&&w)for(l.groups=c=r(null),s=0;s<w.length;s++)g=w[s],c[g[0]]=l[g[1]];return l}),e.exports=f},"9f7f":function(e,t,a){var i=a("d039"),n=function(e,t){return RegExp(e,t)};t.UNSUPPORTED_Y=i((function(){var e=n("a","y");return e.lastIndex=2,null!=e.exec("abcd")})),t.BROKEN_CARET=i((function(){var e=n("^r","gy");return e.lastIndex=2,null!=e.exec("str")}))},"9ffa":function(e,t,a){},a434:function(e,t,a){"use strict";var i=a("23e7"),n=a("23cb"),l=a("a691"),r=a("50c4"),o=a("7b0b"),s=a("65f0"),c=a("8418"),u=a("1dde"),d=u("splice"),f=Math.max,p=Math.min,h=9007199254740991,b="Maximum allowed length exceeded";i({target:"Array",proto:!0,forced:!d},{splice:function(e,t){var a,i,u,d,g,v,m=o(this),y=r(m.length),w=n(e,y),x=arguments.length;if(0===x?a=i=0:1===x?(a=0,i=y-w):(a=x-2,i=p(f(l(t),0),y-w)),y+a-i>h)throw TypeError(b);for(u=s(m,i),d=0;d<i;d++)g=w+d,g in m&&c(u,d,m[g]);if(u.length=i,a<i){for(d=w;d<y-i;d++)g=d+i,v=d+a,g in m?m[v]=m[g]:delete m[v];for(d=y;d>y-i+a;d--)delete m[d-1]}else if(a>i)for(d=y-i;d>w;d--)g=d+i-1,v=d+a-1,g in m?m[v]=m[g]:delete m[v];for(d=0;d<a;d++)m[d+w]=arguments[d+2];return m.length=y-i+a,u}})},a4d3:function(e,t,a){"use strict";var i=a("23e7"),n=a("da84"),l=a("d066"),r=a("c430"),o=a("83ab"),s=a("4930"),c=a("fdbf"),u=a("d039"),d=a("5135"),f=a("e8b5"),p=a("861d"),h=a("825a"),b=a("7b0b"),g=a("fc6a"),v=a("c04e"),m=a("5c6c"),y=a("7c73"),w=a("df75"),x=a("241c"),T=a("057f"),S=a("7418"),$=a("06cf"),_=a("9bf2"),D=a("d1e7"),O=a("9112"),I=a("6eeb"),k=a("5692"),N=a("f772"),L=a("d012"),C=a("90e3"),E=a("b622"),A=a("e538"),R=a("746f"),j=a("d44e"),F=a("69f3"),q=a("b727").forEach,M=N("hidden"),P="Symbol",V="prototype",B=E("toPrimitive"),z=F.set,Z=F.getterFor(P),J=Object[V],U=n.Symbol,K=l("JSON","stringify"),Y=$.f,Q=_.f,W=T.f,G=D.f,H=k("symbols"),X=k("op-symbols"),ee=k("string-to-symbol-registry"),te=k("symbol-to-string-registry"),ae=k("wks"),ie=n.QObject,ne=!ie||!ie[V]||!ie[V].findChild,le=o&&u((function(){return 7!=y(Q({},"a",{get:function(){return Q(this,"a",{value:7}).a}})).a}))?function(e,t,a){var i=Y(J,t);i&&delete J[t],Q(e,t,a),i&&e!==J&&Q(J,t,i)}:Q,re=function(e,t){var a=H[e]=y(U[V]);return z(a,{type:P,tag:e,description:t}),o||(a.description=t),a},oe=c?function(e){return"symbol"==typeof e}:function(e){return Object(e)instanceof U},se=function(e,t,a){e===J&&se(X,t,a),h(e);var i=v(t,!0);return h(a),d(H,i)?(a.enumerable?(d(e,M)&&e[M][i]&&(e[M][i]=!1),a=y(a,{enumerable:m(0,!1)})):(d(e,M)||Q(e,M,m(1,{})),e[M][i]=!0),le(e,i,a)):Q(e,i,a)},ce=function(e,t){h(e);var a=g(t),i=w(a).concat(he(a));return q(i,(function(t){o&&!de.call(a,t)||se(e,t,a[t])})),e},ue=function(e,t){return void 0===t?y(e):ce(y(e),t)},de=function(e){var t=v(e,!0),a=G.call(this,t);return!(this===J&&d(H,t)&&!d(X,t))&&(!(a||!d(this,t)||!d(H,t)||d(this,M)&&this[M][t])||a)},fe=function(e,t){var a=g(e),i=v(t,!0);if(a!==J||!d(H,i)||d(X,i)){var n=Y(a,i);return!n||!d(H,i)||d(a,M)&&a[M][i]||(n.enumerable=!0),n}},pe=function(e){var t=W(g(e)),a=[];return q(t,(function(e){d(H,e)||d(L,e)||a.push(e)})),a},he=function(e){var t=e===J,a=W(t?X:g(e)),i=[];return q(a,(function(e){!d(H,e)||t&&!d(J,e)||i.push(H[e])})),i};if(s||(U=function(){if(this instanceof U)throw TypeError("Symbol is not a constructor");var e=arguments.length&&void 0!==arguments[0]?String(arguments[0]):void 0,t=C(e),a=function(e){this===J&&a.call(X,e),d(this,M)&&d(this[M],t)&&(this[M][t]=!1),le(this,t,m(1,e))};return o&&ne&&le(J,t,{configurable:!0,set:a}),re(t,e)},I(U[V],"toString",(function(){return Z(this).tag})),I(U,"withoutSetter",(function(e){return re(C(e),e)})),D.f=de,_.f=se,$.f=fe,x.f=T.f=pe,S.f=he,A.f=function(e){return re(E(e),e)},o&&(Q(U[V],"description",{configurable:!0,get:function(){return Z(this).description}}),r||I(J,"propertyIsEnumerable",de,{unsafe:!0}))),i({global:!0,wrap:!0,forced:!s,sham:!s},{Symbol:U}),q(w(ae),(function(e){R(e)})),i({target:P,stat:!0,forced:!s},{for:function(e){var t=String(e);if(d(ee,t))return ee[t];var a=U(t);return ee[t]=a,te[a]=t,a},keyFor:function(e){if(!oe(e))throw TypeError(e+" is not a symbol");if(d(te,e))return te[e]},useSetter:function(){ne=!0},useSimple:function(){ne=!1}}),i({target:"Object",stat:!0,forced:!s,sham:!o},{create:ue,defineProperty:se,defineProperties:ce,getOwnPropertyDescriptor:fe}),i({target:"Object",stat:!0,forced:!s},{getOwnPropertyNames:pe,getOwnPropertySymbols:he}),i({target:"Object",stat:!0,forced:u((function(){S.f(1)}))},{getOwnPropertySymbols:function(e){return S.f(b(e))}}),K){var be=!s||u((function(){var e=U();return"[null]"!=K([e])||"{}"!=K({a:e})||"{}"!=K(Object(e))}));i({target:"JSON",stat:!0,forced:be},{stringify:function(e,t,a){var i,n=[e],l=1;while(arguments.length>l)n.push(arguments[l++]);if(i=t,(p(t)||void 0!==e)&&!oe(e))return f(t)||(t=function(e,t){if("function"==typeof i&&(t=i.call(this,e,t)),!oe(t))return t}),n[1]=t,K.apply(null,n)}})}U[V][B]||O(U[V],B,U[V].valueOf),j(U,P),L[M]=!0},a640:function(e,t,a){"use strict";var i=a("d039");e.exports=function(e,t){var a=[][e];return!!a&&i((function(){a.call(null,t||function(){throw 1},1)}))}},ac1f:function(e,t,a){"use strict";var i=a("23e7"),n=a("9263");i({target:"RegExp",proto:!0,forced:/./.exec!==n},{exec:n})},ad6d:function(e,t,a){"use strict";var i=a("825a");e.exports=function(){var e=i(this),t="";return e.global&&(t+="g"),e.ignoreCase&&(t+="i"),e.multiline&&(t+="m"),e.dotAll&&(t+="s"),e.unicode&&(t+="u"),e.sticky&&(t+="y"),t}},b727:function(e,t,a){var i=a("0366"),n=a("44ad"),l=a("7b0b"),r=a("50c4"),o=a("65f0"),s=[].push,c=function(e){var t=1==e,a=2==e,c=3==e,u=4==e,d=6==e,f=7==e,p=5==e||d;return function(h,b,g,v){for(var m,y,w=l(h),x=n(w),T=i(b,g,3),S=r(x.length),$=0,_=v||o,D=t?_(h,S):a||f?_(h,0):void 0;S>$;$++)if((p||$ in x)&&(m=x[$],y=T(m,$,w),e))if(t)D[$]=y;else if(y)switch(e){case 3:return!0;case 5:return m;case 6:return $;case 2:s.call(D,m)}else switch(e){case 4:return!1;case 7:s.call(D,m)}return d?-1:c||u?u:D}};e.exports={forEach:c(0),map:c(1),filter:c(2),some:c(3),every:c(4),find:c(5),findIndex:c(6),filterOut:c(7)}},c740:function(e,t,a){"use strict";var i=a("23e7"),n=a("b727").findIndex,l=a("44d2"),r="findIndex",o=!0;r in[]&&Array(1)[r]((function(){o=!1})),i({target:"Array",proto:!0,forced:o},{findIndex:function(e){return n(this,e,arguments.length>1?arguments[1]:void 0)}}),l(r)},cafb:function(e,t,a){},d784:function(e,t,a){"use strict";a("ac1f");var i=a("6eeb"),n=a("9263"),l=a("d039"),r=a("b622"),o=a("9112"),s=r("species"),c=RegExp.prototype;e.exports=function(e,t,a,u){var d=r(e),f=!l((function(){var t={};return t[d]=function(){return 7},7!=""[e](t)})),p=f&&!l((function(){var t=!1,a=/a/;return"split"===e&&(a={},a.constructor={},a.constructor[s]=function(){return a},a.flags="",a[d]=/./[d]),a.exec=function(){return t=!0,null},a[d](""),!t}));if(!f||!p||a){var h=/./[d],b=t(d,""[e],(function(e,t,a,i,l){var r=t.exec;return r===n||r===c.exec?f&&!l?{done:!0,value:h.call(t,a,i)}:{done:!0,value:e.call(a,t,i)}:{done:!1}}));i(String.prototype,e,b[0]),i(c,d,b[1])}u&&o(c[d],"sham",!0)}},e01a:function(e,t,a){"use strict";var i=a("23e7"),n=a("83ab"),l=a("da84"),r=a("5135"),o=a("861d"),s=a("9bf2").f,c=a("e893"),u=l.Symbol;if(n&&"function"==typeof u&&(!("description"in u.prototype)||void 0!==u().description)){var d={},f=function(){var e=arguments.length<1||void 0===arguments[0]?void 0:String(arguments[0]),t=this instanceof f?new u(e):void 0===e?u():u(e);return""===e&&(d[t]=!0),t};c(f,u);var p=f.prototype=u.prototype;p.constructor=f;var h=p.toString,b="Symbol(test)"==String(u("test")),g=/^Symbol\((.*)\)[^)]+$/;s(p,"description",{configurable:!0,get:function(){var e=o(this)?this.valueOf():this,t=h.call(e);if(r(d,e))return"";var a=b?t.slice(7,-1):t.replace(g,"$1");return""===a?void 0:a}}),i({global:!0,forced:!0},{Symbol:f})}},e538:function(e,t,a){var i=a("b622");t.f=i},e8b5:function(e,t,a){var i=a("c6b6");e.exports=Array.isArray||function(e){return"Array"==i(e)}},fce3:function(e,t,a){var i=a("d039");e.exports=i((function(){var e=RegExp(".","string".charAt(0));return!(e.dotAll&&e.exec("\n")&&"s"===e.flags)}))}}]);
\ No newline at end of file
(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-378aeb01"],{"057f":function(t,e,r){var n=r("fc6a"),o=r("241c").f,a={}.toString,i="object"==typeof window&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[],c=function(t){try{return o(t)}catch(e){return i.slice()}};t.exports.f=function(t){return i&&"[object Window]"==a.call(t)?c(t):o(n(t))}},"159b":function(t,e,r){var n=r("da84"),o=r("fdbc"),a=r("17c2"),i=r("9112");for(var c in o){var s=n[c],l=s&&s.prototype;if(l&&l.forEach!==a)try{i(l,"forEach",a)}catch(u){l.forEach=a}}},"17c2":function(t,e,r){"use strict";var n=r("b727").forEach,o=r("a640"),a=o("forEach");t.exports=a?[].forEach:function(t){return n(this,t,arguments.length>1?arguments[1]:void 0)}},"1dde":function(t,e,r){var n=r("d039"),o=r("b622"),a=r("2d00"),i=o("species");t.exports=function(t){return a>=51||!n((function(){var e=[],r=e.constructor={};return r[i]=function(){return{foo:1}},1!==e[t](Boolean).foo}))}},"2e10":function(t,e,r){"use strict";r("8e08")},"450c":function(t,e,r){},"4de4":function(t,e,r){"use strict";var n=r("23e7"),o=r("b727").filter,a=r("1dde"),i=a("filter");n({target:"Array",proto:!0,forced:!i},{filter:function(t){return o(this,t,arguments.length>1?arguments[1]:void 0)}})},"65f0":function(t,e,r){var n=r("861d"),o=r("e8b5"),a=r("b622"),i=a("species");t.exports=function(t,e){var r;return o(t)&&(r=t.constructor,"function"!=typeof r||r!==Array&&!o(r.prototype)?n(r)&&(r=r[i],null===r&&(r=void 0)):r=void 0),new(void 0===r?Array:r)(0===e?0:e)}},"746f":function(t,e,r){var n=r("428f"),o=r("5135"),a=r("e538"),i=r("9bf2").f;t.exports=function(t){var e=n.Symbol||(n.Symbol={});o(e,t)||i(e,t,{value:a.f(t)})}},"7af2":function(t,e,r){"use strict";r("450c")},8418:function(t,e,r){"use strict";var n=r("c04e"),o=r("9bf2"),a=r("5c6c");t.exports=function(t,e,r){var i=n(e);i in t?o.f(t,i,a(0,r)):t[i]=r}},"8e08":function(t,e,r){},"91b3":function(t,e,r){"use strict";r.r(e);var n=function(){var t=this,e=t.$createElement,r=t._self._c||e;return r("div",{staticClass:"dataModelManage"},[r("div",{staticClass:"searchBar"},[r("el-form",{ref:"form",staticStyle:{width:"100%"},attrs:{model:t.searchForm,"label-width":"100px"}},[r("el-row",[r("el-col",{attrs:{span:6}},[r("el-form-item",{attrs:{label:"标签:"}},[r("el-input",{staticStyle:{width:"100%"},attrs:{placeholder:"请输入"},model:{value:t.searchForm.modelTitle,callback:function(e){t.$set(t.searchForm,"modelTitle",e)},expression:"searchForm.modelTitle"}})],1)],1),r("el-col",{staticStyle:{"margin-left":"20px"},attrs:{span:6}},[r("el-form-item",{attrs:{label:"名称:"}},[r("el-input",{staticStyle:{width:"100%"},attrs:{placeholder:"请输入"},model:{value:t.searchForm.modelName,callback:function(e){t.$set(t.searchForm,"modelName",e)},expression:"searchForm.modelName"}})],1)],1),r("el-col",{attrs:{span:10}},[r("el-form-item",[r("el-button",{staticClass:"searchBtn button_ty",on:{click:t.searchData}},[t._v(" 查询 ")]),r("el-button",{staticClass:"button_ty",on:{click:t.reset}},[t._v("重置")]),r("el-button",{staticClass:"addProcess",on:{click:function(e){return t.$router.push({path:"addDataModel"})}}},[t._v(" 新建模型 ")]),r("div",{staticClass:"set_model",on:{click:function(e){return t.$router.push({path:"setModel"})}}})],1)],1)],1)],1)],1),r("div",{staticClass:"main"},[r("el-table",{staticStyle:{width:"100%"},attrs:{data:t.tableData,height:"calc(100% - 70px)","row-class-name":function(t){t.row;var e=t.rowIndex;return e%2==0?"":"stripe"}}},[r("el-table-column",{attrs:{prop:"modelName",label:"名称"}}),r("el-table-column",{attrs:{prop:"modelTitle",label:"标签"}}),r("el-table-column",{attrs:{label:"类型",width:"200"},scopedSlots:t._u([{key:"default",fn:function(e){return[r("div",[0==e.row.modelType?r("span",{staticStyle:{color:"orange"}},[t._v("基础对象")]):t._e(),1==e.row.modelType?r("span",{staticStyle:{color:"#2a3bd3"}},[t._v("业务对象")]):t._e(),2==e.row.modelType?r("span",{staticStyle:{color:"yellowgreen"}},[t._v("基础对象(延伸)")]):t._e()])]}}])}),r("el-table-column",{attrs:{prop:"createdTime",label:"创建时间"}}),r("el-table-column",{attrs:{prop:"updatedTime",label:"最后修改时间"}}),r("el-table-column",{attrs:{prop:"description",label:"描述"}}),r("el-table-column",{attrs:{label:"操作",width:"200"},scopedSlots:t._u([{key:"default",fn:function(e){return[r("div",{staticClass:"operation"},[r("el-button",{on:{click:function(r){return t.editTable(e.row)}}},[t._v("编辑")]),r("el-button",{staticStyle:{color:"red"},on:{click:function(r){return t.deleteTable(e.row)}}},[t._v("删除")])],1)]}}])})],1),r("el-pagination",{staticStyle:{"text-align":"right","margin-right":"20px","margin-top":"30px"},attrs:{background:"",layout:"prev, pager, next",total:t.total,"page-size":t.pageSize,"prev-text":"上一页","next-text":"下一页"},on:{"current-change":t.pageChange}})],1)])},o=[],a=(r("b64b"),r("a4d3"),r("4de4"),r("e439"),r("159b"),r("dbb4"),r("ade3"));function i(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),r.push.apply(r,n)}return r}function c(t){for(var e=1;e<arguments.length;e++){var r=null!=arguments[e]?arguments[e]:{};e%2?i(Object(r),!0).forEach((function(e){Object(a["a"])(t,e,r[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):i(Object(r)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))}))}return t}r("e01a");var s={name:"dataModelManage",data:function(){return{addDialogVisible2:!1,updateDialogVisible:!1,searchForm:{modelTitle:"",modelName:""},addProcessDialog:!1,pageSize:9,total:0,nowPage:0,tableData:[],tableForm:{}}},created:function(){this.getAllModel()},methods:{getAllModel:function(){var t=this,e=c(c({page:this.nowPage,size:this.pageSize},this.searchForm),{},{orders:[{coulmn:"updatedTime",direction:"DESC"}]});this.$axios.getAllEntity(e).then((function(e){t.total=e.data.data.totalElements,t.tableData=e.data.data.content})).catch((function(t){console.log(t.response)}))},getDate:function(t){var e=new Date(t),r=e.getFullYear()+"-",n=(e.getMonth()+1<10?"0"+(e.getMonth()+1):e.getMonth()+1)+"-",o=e.getDate()<10?"0"+e.getDate():e.getDate(),a=(e.getHours()<10?"0"+e.getHours():e.getHours())+":",i=(e.getMinutes()<10?"0"+e.getMinutes():e.getMinutes())+":",c=e.getSeconds()<10?"0"+e.getSeconds():e.getSeconds();return r+n+o+" "+a+i+c},searchData:function(){this.getAllModel()},reset:function(){this.searchForm={tableCnName:"",tableName:""},this.getAllModel()},pageChange:function(t){this.nowPage=t-1,this.getAllModel()},editTable:function(t){var e=t.modelName,r=t.modelTitle,n=t.modelType,o=t.parentTable,a=t.description,i=t.id,c={id:i,modelName:e,modelTitle:r,modelType:n,parentTable:o,description:a};sessionStorage.setItem("ty_model",JSON.stringify(c)),this.$router.push({path:"addDataModel",query:{tableId:t.id}})},deleteTable:function(t){var e=this;this.$confirm("此操作将永久删除该模型, 是否继续?","提示",{confirmButtonText:"确定",cancelButtonText:"取消",type:"warning"}).then((function(r){var n={id:t.id,dbName:t.modelName};e.$axios.deleteModel(n).then((function(t){console.log(t),e.getAllModel(),e.$message({message:t.data.message,type:"success"})})).catch((function(t){e.$message.error(t.response.data.data)}))})).catch((function(){e.$message({type:"info",message:"已取消删除"})}))}}},l=s,u=(r("7af2"),r("2e10"),r("2877")),f=Object(u["a"])(l,n,o,!1,null,"6e5b13b2",null);e["default"]=f.exports},a4d3:function(t,e,r){"use strict";var n=r("23e7"),o=r("da84"),a=r("d066"),i=r("c430"),c=r("83ab"),s=r("4930"),l=r("fdbf"),u=r("d039"),f=r("5135"),d=r("e8b5"),p=r("861d"),b=r("825a"),h=r("7b0b"),g=r("fc6a"),m=r("c04e"),v=r("5c6c"),y=r("7c73"),w=r("df75"),S=r("241c"),O=r("057f"),j=r("7418"),x=r("06cf"),P=r("9bf2"),T=r("d1e7"),D=r("9112"),M=r("6eeb"),_=r("5692"),k=r("f772"),E=r("d012"),N=r("90e3"),F=r("b622"),$=r("e538"),A=r("746f"),C=r("d44e"),z=r("69f3"),B=r("b727").forEach,I=k("hidden"),J="Symbol",H="prototype",V=F("toPrimitive"),q=z.set,Q=z.getterFor(J),W=Object[H],Y=o.Symbol,G=a("JSON","stringify"),K=x.f,L=P.f,R=O.f,U=T.f,X=_("symbols"),Z=_("op-symbols"),tt=_("string-to-symbol-registry"),et=_("symbol-to-string-registry"),rt=_("wks"),nt=o.QObject,ot=!nt||!nt[H]||!nt[H].findChild,at=c&&u((function(){return 7!=y(L({},"a",{get:function(){return L(this,"a",{value:7}).a}})).a}))?function(t,e,r){var n=K(W,e);n&&delete W[e],L(t,e,r),n&&t!==W&&L(W,e,n)}:L,it=function(t,e){var r=X[t]=y(Y[H]);return q(r,{type:J,tag:t,description:e}),c||(r.description=e),r},ct=l?function(t){return"symbol"==typeof t}:function(t){return Object(t)instanceof Y},st=function(t,e,r){t===W&&st(Z,e,r),b(t);var n=m(e,!0);return b(r),f(X,n)?(r.enumerable?(f(t,I)&&t[I][n]&&(t[I][n]=!1),r=y(r,{enumerable:v(0,!1)})):(f(t,I)||L(t,I,v(1,{})),t[I][n]=!0),at(t,n,r)):L(t,n,r)},lt=function(t,e){b(t);var r=g(e),n=w(r).concat(bt(r));return B(n,(function(e){c&&!ft.call(r,e)||st(t,e,r[e])})),t},ut=function(t,e){return void 0===e?y(t):lt(y(t),e)},ft=function(t){var e=m(t,!0),r=U.call(this,e);return!(this===W&&f(X,e)&&!f(Z,e))&&(!(r||!f(this,e)||!f(X,e)||f(this,I)&&this[I][e])||r)},dt=function(t,e){var r=g(t),n=m(e,!0);if(r!==W||!f(X,n)||f(Z,n)){var o=K(r,n);return!o||!f(X,n)||f(r,I)&&r[I][n]||(o.enumerable=!0),o}},pt=function(t){var e=R(g(t)),r=[];return B(e,(function(t){f(X,t)||f(E,t)||r.push(t)})),r},bt=function(t){var e=t===W,r=R(e?Z:g(t)),n=[];return B(r,(function(t){!f(X,t)||e&&!f(W,t)||n.push(X[t])})),n};if(s||(Y=function(){if(this instanceof Y)throw TypeError("Symbol is not a constructor");var t=arguments.length&&void 0!==arguments[0]?String(arguments[0]):void 0,e=N(t),r=function(t){this===W&&r.call(Z,t),f(this,I)&&f(this[I],e)&&(this[I][e]=!1),at(this,e,v(1,t))};return c&&ot&&at(W,e,{configurable:!0,set:r}),it(e,t)},M(Y[H],"toString",(function(){return Q(this).tag})),M(Y,"withoutSetter",(function(t){return it(N(t),t)})),T.f=ft,P.f=st,x.f=dt,S.f=O.f=pt,j.f=bt,$.f=function(t){return it(F(t),t)},c&&(L(Y[H],"description",{configurable:!0,get:function(){return Q(this).description}}),i||M(W,"propertyIsEnumerable",ft,{unsafe:!0}))),n({global:!0,wrap:!0,forced:!s,sham:!s},{Symbol:Y}),B(w(rt),(function(t){A(t)})),n({target:J,stat:!0,forced:!s},{for:function(t){var e=String(t);if(f(tt,e))return tt[e];var r=Y(e);return tt[e]=r,et[r]=e,r},keyFor:function(t){if(!ct(t))throw TypeError(t+" is not a symbol");if(f(et,t))return et[t]},useSetter:function(){ot=!0},useSimple:function(){ot=!1}}),n({target:"Object",stat:!0,forced:!s,sham:!c},{create:ut,defineProperty:st,defineProperties:lt,getOwnPropertyDescriptor:dt}),n({target:"Object",stat:!0,forced:!s},{getOwnPropertyNames:pt,getOwnPropertySymbols:bt}),n({target:"Object",stat:!0,forced:u((function(){j.f(1)}))},{getOwnPropertySymbols:function(t){return j.f(h(t))}}),G){var ht=!s||u((function(){var t=Y();return"[null]"!=G([t])||"{}"!=G({a:t})||"{}"!=G(Object(t))}));n({target:"JSON",stat:!0,forced:ht},{stringify:function(t,e,r){var n,o=[t],a=1;while(arguments.length>a)o.push(arguments[a++]);if(n=e,(p(e)||void 0!==t)&&!ct(t))return d(e)||(e=function(t,e){if("function"==typeof n&&(e=n.call(this,t,e)),!ct(e))return e}),o[1]=e,G.apply(null,o)}})}Y[H][V]||D(Y[H],V,Y[H].valueOf),C(Y,J),E[I]=!0},a640:function(t,e,r){"use strict";var n=r("d039");t.exports=function(t,e){var r=[][t];return!!r&&n((function(){r.call(null,e||function(){throw 1},1)}))}},ade3:function(t,e,r){"use strict";function n(t,e,r){return e in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}r.d(e,"a",(function(){return n}))},b64b:function(t,e,r){var n=r("23e7"),o=r("7b0b"),a=r("df75"),i=r("d039"),c=i((function(){a(1)}));n({target:"Object",stat:!0,forced:c},{keys:function(t){return a(o(t))}})},b727:function(t,e,r){var n=r("0366"),o=r("44ad"),a=r("7b0b"),i=r("50c4"),c=r("65f0"),s=[].push,l=function(t){var e=1==t,r=2==t,l=3==t,u=4==t,f=6==t,d=7==t,p=5==t||f;return function(b,h,g,m){for(var v,y,w=a(b),S=o(w),O=n(h,g,3),j=i(S.length),x=0,P=m||c,T=e?P(b,j):r||d?P(b,0):void 0;j>x;x++)if((p||x in S)&&(v=S[x],y=O(v,x,w),t))if(e)T[x]=y;else if(y)switch(t){case 3:return!0;case 5:return v;case 6:return x;case 2:s.call(T,v)}else switch(t){case 4:return!1;case 7:s.call(T,v)}return f?-1:l||u?u:T}};t.exports={forEach:l(0),map:l(1),filter:l(2),some:l(3),every:l(4),find:l(5),findIndex:l(6),filterOut:l(7)}},dbb4:function(t,e,r){var n=r("23e7"),o=r("83ab"),a=r("56ef"),i=r("fc6a"),c=r("06cf"),s=r("8418");n({target:"Object",stat:!0,sham:!o},{getOwnPropertyDescriptors:function(t){var e,r,n=i(t),o=c.f,l=a(n),u={},f=0;while(l.length>f)r=o(n,e=l[f++]),void 0!==r&&s(u,e,r);return u}})},e01a:function(t,e,r){"use strict";var n=r("23e7"),o=r("83ab"),a=r("da84"),i=r("5135"),c=r("861d"),s=r("9bf2").f,l=r("e893"),u=a.Symbol;if(o&&"function"==typeof u&&(!("description"in u.prototype)||void 0!==u().description)){var f={},d=function(){var t=arguments.length<1||void 0===arguments[0]?void 0:String(arguments[0]),e=this instanceof d?new u(t):void 0===t?u():u(t);return""===t&&(f[e]=!0),e};l(d,u);var p=d.prototype=u.prototype;p.constructor=d;var b=p.toString,h="Symbol(test)"==String(u("test")),g=/^Symbol\((.*)\)[^)]+$/;s(p,"description",{configurable:!0,get:function(){var t=c(this)?this.valueOf():this,e=b.call(t);if(i(f,t))return"";var r=h?e.slice(7,-1):e.replace(g,"$1");return""===r?void 0:r}}),n({global:!0,forced:!0},{Symbol:d})}},e439:function(t,e,r){var n=r("23e7"),o=r("d039"),a=r("fc6a"),i=r("06cf").f,c=r("83ab"),s=o((function(){i(1)})),l=!c||s;n({target:"Object",stat:!0,forced:l,sham:!c},{getOwnPropertyDescriptor:function(t,e){return i(a(t),e)}})},e538:function(t,e,r){var n=r("b622");e.f=n},e8b5:function(t,e,r){var n=r("c6b6");t.exports=Array.isArray||function(t){return"Array"==n(t)}}}]);
\ No newline at end of file
(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-65e873cb"],{"057f":function(t,e,n){var r=n("fc6a"),i=n("241c").f,a={}.toString,o="object"==typeof window&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[],l=function(t){try{return i(t)}catch(e){return o.slice()}};t.exports.f=function(t){return o&&"[object Window]"==a.call(t)?l(t):i(r(t))}},"0664":function(t,e,n){},"0e8c":function(t,e,n){"use strict";n("0664")},"1dde":function(t,e,n){var r=n("d039"),i=n("b622"),a=n("2d00"),o=i("species");t.exports=function(t){return a>=51||!r((function(){var e=[],n=e.constructor={};return n[o]=function(){return{foo:1}},1!==e[t](Boolean).foo}))}},"4de4":function(t,e,n){"use strict";var r=n("23e7"),i=n("b727").filter,a=n("1dde"),o=a("filter");r({target:"Array",proto:!0,forced:!o},{filter:function(t){return i(this,t,arguments.length>1?arguments[1]:void 0)}})},"4df4":function(t,e,n){"use strict";var r=n("0366"),i=n("7b0b"),a=n("9bdd"),o=n("e95a"),l=n("50c4"),s=n("8418"),c=n("35a1");t.exports=function(t){var e,n,f,u,d,v,b=i(t),h="function"==typeof this?this:Array,p=arguments.length,m=p>1?arguments[1]:void 0,y=void 0!==m,g=c(b),w=0;if(y&&(m=r(m,p>2?arguments[2]:void 0,2)),void 0==g||h==Array&&o(g))for(e=l(b.length),n=new h(e);e>w;w++)v=y?m(b[w],w):b[w],s(n,w,v);else for(u=g.call(b),d=u.next,n=new h;!(f=d.call(u)).done;w++)v=y?a(u,m,[f.value,w],!0):f.value,s(n,w,v);return n.length=w,n}},"65f0":function(t,e,n){var r=n("861d"),i=n("e8b5"),a=n("b622"),o=a("species");t.exports=function(t,e){var n;return i(t)&&(n=t.constructor,"function"!=typeof n||n!==Array&&!i(n.prototype)?r(n)&&(n=n[o],null===n&&(n=void 0)):n=void 0),new(void 0===n?Array:n)(0===e?0:e)}},"746f":function(t,e,n){var r=n("428f"),i=n("5135"),a=n("e538"),o=n("9bf2").f;t.exports=function(t){var e=r.Symbol||(r.Symbol={});i(e,t)||o(e,t,{value:a.f(t)})}},8418:function(t,e,n){"use strict";var r=n("c04e"),i=n("9bf2"),a=n("5c6c");t.exports=function(t,e,n){var o=r(e);o in t?i.f(t,o,a(0,n)):t[o]=n}},"85a7":function(t,e,n){"use strict";n.r(e);var r=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{staticClass:"setModel-page"},[n("div",{staticClass:"set_model",on:{click:function(e){return t.$router.push({path:"dataModel"})}}}),n("div",{staticClass:"setModel-body"},[n("div",{staticClass:"nav-box"},t._l(t.navList,(function(e){return n("div",{key:e.id,staticClass:"item",on:{click:function(n){return t.onClick_item(e.modelName)}}},[t._v(" "+t._s(e.modelTitle)+" ")])})),0),n("div",{staticClass:"container"},[n("div",{staticClass:"table-box"},[n("div",{staticClass:"topDiv"},[n("el-button",{staticClass:"addProcess",on:{click:t.add}},[t._v(" 新增记录 ")])],1),n("div",{staticClass:"ty_table"},[t.tableTitleList.length<1?n("div",{staticClass:"empty"},[t._v("暂无数据")]):n("el-table",{staticStyle:{width:"100%"},attrs:{data:t.dataList,height:"100%","row-class-name":function(t){var e=t.row;t.rowIndex;return e.isEditCell?"ty_dbclick":""}},on:{"cell-click":t.cellClick,"cell-dblclick":t.shuangji,"sort-change":t.sortChange}},[n("el-table-column",{attrs:{type:"index",label:"序号",width:"80"}}),t._l(t.tableTitleList,(function(e){return n("el-table-column",{key:e.id,attrs:{prop:e.fieldName,label:e.fieldName,sortable:"","min-width":"150"},scopedSlots:t._u([{key:"default",fn:function(r){return[r.row.isEditCell?n("div",[e.quoteList.length>0?n("div",[n("el-select",{attrs:{placeholder:"请选择"},model:{value:r.row[e.fieldName],callback:function(n){t.$set(r.row,e.fieldName,n)},expression:"scope.row[item.fieldName]"}},t._l(e.quoteList,(function(t){return n("el-option",{key:t.id,attrs:{label:t.value,value:t.value}})})),1)],1):n("div",["java.lang.String"==e.fieldType?n("el-input",{attrs:{placeholder:"请输入内容"},model:{value:r.row[e.fieldName],callback:function(n){t.$set(r.row,e.fieldName,n)},expression:"scope.row[item.fieldName]"}}):t._e(),"java.lang.Integer"==e.fieldType||"java.lang.Double"==e.fieldType?n("el-input",{attrs:{type:"number",placeholder:"请输入内容"},model:{value:r.row[e.fieldName],callback:function(n){t.$set(r.row,e.fieldName,n)},expression:"scope.row[item.fieldName]"}}):t._e(),"java.lang.Boolean"==e.fieldType?n("div",[n("el-radio",{attrs:{label:!0},model:{value:r.row[e.fieldName],callback:function(n){t.$set(r.row,e.fieldName,n)},expression:"scope.row[item.fieldName]"}},[t._v("true")]),n("el-radio",{attrs:{label:!1},model:{value:r.row[e.fieldName],callback:function(n){t.$set(r.row,e.fieldName,n)},expression:"scope.row[item.fieldName]"}},[t._v("false")])],1):t._e(),"java.util.Date"==e.fieldType?n("el-date-picker",{attrs:{type:"datetime",format:"yyyy-MM-dd HH:mm:ss","value-format":"yyyy-MM-dd HH:mm:ss"},model:{value:r.row[e.fieldName],callback:function(n){t.$set(r.row,e.fieldName,n)},expression:"scope.row[item.fieldName]"}}):t._e()],1)]):n("span",[t._v(t._s(r.row[e.fieldName]))])]}}],null,!0)})})),n("el-table-column",{attrs:{label:"操作",width:"130"},scopedSlots:t._u([{key:"default",fn:function(e){return[n("el-button",{staticStyle:{color:"red"},attrs:{type:"text"},on:{click:function(n){return t.del(e.row,e.$index,e.row.ID)}}},[t._v("删除")]),!e.row.ID||e.row.isEditCell?n("el-button",{staticStyle:{color:"red"},attrs:{type:"text"},on:{click:function(n){return t.save(e.row,!0)}}},[t._v("保存")]):t._e()]}}])})],2)],1)])])])])},i=[],a=n("ade3");n("a4d3"),n("e01a"),n("d3b7"),n("d28b"),n("3ca3"),n("ddb0"),n("fb6a"),n("b0c0"),n("a630");function o(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n<e;n++)r[n]=t[n];return r}function l(t,e){if(t){if("string"===typeof t)return o(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);return"Object"===n&&t.constructor&&(n=t.constructor.name),"Map"===n||"Set"===n?Array.from(t):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?o(t,e):void 0}}function s(t,e){var n="undefined"!==typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!n){if(Array.isArray(t)||(n=l(t))||e&&t&&"number"===typeof t.length){n&&(t=n);var r=0,i=function(){};return{s:i,n:function(){return r>=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var a,o=!0,s=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return o=t.done,t},e:function(t){s=!0,a=t},f:function(){try{o||null==n["return"]||n["return"]()}finally{if(s)throw a}}}}n("a434"),n("4de4");var c={data:function(){return{navList:[],tableTitleList:[],currentName:"",currentRow:{},dataList:[],oldObj:{}}},created:function(){this.getAllModel()},methods:{getAllModel:function(){var t=this,e={size:9999};this.$axios.getAllEntity(e).then((function(e){t.navList=e.data.data.content})).catch((function(t){console.log(t.response)}))},onClick_item:function(t){var e=this;this.currentName=t;var n={dbName:t};this.$axios.getAllField(n).then((function(t){e.tableTitleList=t.data.data;for(var n=0;n<e.tableTitleList.length;n++)"ID"==e.tableTitleList[n].fieldName&&e.tableTitleList.splice(n,1);e.getAllData()})).catch((function(t){console.log(t.response)}))},getAllData:function(){var t,e=this,n={},r=[],i=s(this.tableTitleList);try{for(i.s();!(t=i.n()).done;){var a=t.value;n={columns:a.fieldName,sortValue:"ASC"},r.push(n)}}catch(l){i.e(l)}finally{i.f()}var o={tableName:this.currentName,orderConditions:r};this.$axios.getAllCalculationData(o).then((function(t){e.dataList=[],e.dataList=t.data.data;for(var n=e.dataList.length,r=0;r<n;r++)e.dataList[r].isEditCell=!1;e.oldObj={}})).catch((function(t){console.log(t.response),e.$message.error(t.response.data.data)}))},add:function(){var t,e={},n=s(this.tableTitleList);try{for(n.s();!(t=n.n()).done;){var r=t.value;e[r.fieldName]=""}}catch(i){n.e(i)}finally{n.f()}e.isEditCell=!0,this.dataList.push(e)},del:function(t,e,n){var r=this;this.$confirm("此操作将删除该数据, 是否继续?","提示",{confirmButtonText:"确定",cancelButtonText:"取消",type:"warning"}).then((function(){if(n){var i=Object(a["a"])({},r.currentName,t);r.$axios.deleteCalculationData(JSON.stringify(i)).then((function(t){r.$message({message:t.data.message,type:"success"}),r.getAllData()})).catch((function(t){console.log(t.response),r.$message.error(t.response.data.data)}))}else r.dataList.splice(e,1)})).catch((function(){r.$message({type:"info",message:"已取消删除"})}))},cellClick:function(t){this.currentRow=t},save:function(t,e){var n=this,r=Object(a["a"])({},this.currentName,t);this.$axios.addSingleCalculationData(JSON.stringify(r)).then((function(t){n.$message({message:t.data.message,type:"success"}),e&&(n.getAllData(),n.oldObj={})})).catch((function(t){n.getAllData(),n.oldObj={},n.$message.error(t.response.data.message)}))},saveAll:function(){var t,e=this,n=[],r=s(this.dataList);try{for(r.s();!(t=r.n()).done;){var i=t.value,o=Object(a["a"])({},this.currentName,i);n.push(o)}}catch(l){r.e(l)}finally{r.f()}this.$axios.addCalculationData(JSON.stringify(n)).then((function(t){e.$message({message:t.data.message,type:"success"}),e.getAllData()})).catch((function(t){e.$message.error(t.response.data.data)}))},shuangji:function(t,e){this.oldObj.ID&&t.ID!=this.oldObj.ID&&this.save(this.oldObj),this.oldObj.isEditCell=!1,this.oldObj=t;var n,r=s(this.tableTitleList);try{for(r.s();!(n=r.n()).done;){var i=n.value;e.property==i.fieldName&&this.$set(t,"isEditCell",!0)}}catch(a){r.e(a)}finally{r.f()}this.dataList=this.dataList.filter((function(t){return t}))},sortChange:function(t){console.log(t)}}},f=c,u=(n("0e8c"),n("2877")),d=Object(u["a"])(f,r,i,!1,null,"a9d4e952",null);e["default"]=d.exports},"9bdd":function(t,e,n){var r=n("825a"),i=n("2a62");t.exports=function(t,e,n,a){try{return a?e(r(n)[0],n[1]):e(n)}catch(o){throw i(t),o}}},a434:function(t,e,n){"use strict";var r=n("23e7"),i=n("23cb"),a=n("a691"),o=n("50c4"),l=n("7b0b"),s=n("65f0"),c=n("8418"),f=n("1dde"),u=f("splice"),d=Math.max,v=Math.min,b=9007199254740991,h="Maximum allowed length exceeded";r({target:"Array",proto:!0,forced:!u},{splice:function(t,e){var n,r,f,u,p,m,y=l(this),g=o(y.length),w=i(t,g),N=arguments.length;if(0===N?n=r=0:1===N?(n=0,r=g-w):(n=N-2,r=v(d(a(e),0),g-w)),g+n-r>b)throw TypeError(h);for(f=s(y,r),u=0;u<r;u++)p=w+u,p in y&&c(f,u,y[p]);if(f.length=r,n<r){for(u=w;u<g-r;u++)p=u+r,m=u+n,p in y?y[m]=y[p]:delete y[m];for(u=g;u>g-r+n;u--)delete y[u-1]}else if(n>r)for(u=g-r;u>w;u--)p=u+r-1,m=u+n-1,p in y?y[m]=y[p]:delete y[m];for(u=0;u<n;u++)y[u+w]=arguments[u+2];return y.length=g-r+n,f}})},a4d3:function(t,e,n){"use strict";var r=n("23e7"),i=n("da84"),a=n("d066"),o=n("c430"),l=n("83ab"),s=n("4930"),c=n("fdbf"),f=n("d039"),u=n("5135"),d=n("e8b5"),v=n("861d"),b=n("825a"),h=n("7b0b"),p=n("fc6a"),m=n("c04e"),y=n("5c6c"),g=n("7c73"),w=n("df75"),N=n("241c"),S=n("057f"),O=n("7418"),x=n("06cf"),j=n("9bf2"),A=n("d1e7"),C=n("9112"),k=n("6eeb"),$=n("5692"),_=n("f772"),L=n("d012"),T=n("90e3"),D=n("b622"),E=n("e538"),M=n("746f"),I=n("d44e"),P=n("69f3"),J=n("b727").forEach,B=_("hidden"),F="Symbol",H="prototype",q=D("toPrimitive"),R=P.set,z=P.getterFor(F),Q=Object[H],U=i.Symbol,V=a("JSON","stringify"),W=x.f,G=j.f,K=S.f,X=A.f,Y=$("symbols"),Z=$("op-symbols"),tt=$("string-to-symbol-registry"),et=$("symbol-to-string-registry"),nt=$("wks"),rt=i.QObject,it=!rt||!rt[H]||!rt[H].findChild,at=l&&f((function(){return 7!=g(G({},"a",{get:function(){return G(this,"a",{value:7}).a}})).a}))?function(t,e,n){var r=W(Q,e);r&&delete Q[e],G(t,e,n),r&&t!==Q&&G(Q,e,r)}:G,ot=function(t,e){var n=Y[t]=g(U[H]);return R(n,{type:F,tag:t,description:e}),l||(n.description=e),n},lt=c?function(t){return"symbol"==typeof t}:function(t){return Object(t)instanceof U},st=function(t,e,n){t===Q&&st(Z,e,n),b(t);var r=m(e,!0);return b(n),u(Y,r)?(n.enumerable?(u(t,B)&&t[B][r]&&(t[B][r]=!1),n=g(n,{enumerable:y(0,!1)})):(u(t,B)||G(t,B,y(1,{})),t[B][r]=!0),at(t,r,n)):G(t,r,n)},ct=function(t,e){b(t);var n=p(e),r=w(n).concat(bt(n));return J(r,(function(e){l&&!ut.call(n,e)||st(t,e,n[e])})),t},ft=function(t,e){return void 0===e?g(t):ct(g(t),e)},ut=function(t){var e=m(t,!0),n=X.call(this,e);return!(this===Q&&u(Y,e)&&!u(Z,e))&&(!(n||!u(this,e)||!u(Y,e)||u(this,B)&&this[B][e])||n)},dt=function(t,e){var n=p(t),r=m(e,!0);if(n!==Q||!u(Y,r)||u(Z,r)){var i=W(n,r);return!i||!u(Y,r)||u(n,B)&&n[B][r]||(i.enumerable=!0),i}},vt=function(t){var e=K(p(t)),n=[];return J(e,(function(t){u(Y,t)||u(L,t)||n.push(t)})),n},bt=function(t){var e=t===Q,n=K(e?Z:p(t)),r=[];return J(n,(function(t){!u(Y,t)||e&&!u(Q,t)||r.push(Y[t])})),r};if(s||(U=function(){if(this instanceof U)throw TypeError("Symbol is not a constructor");var t=arguments.length&&void 0!==arguments[0]?String(arguments[0]):void 0,e=T(t),n=function(t){this===Q&&n.call(Z,t),u(this,B)&&u(this[B],e)&&(this[B][e]=!1),at(this,e,y(1,t))};return l&&it&&at(Q,e,{configurable:!0,set:n}),ot(e,t)},k(U[H],"toString",(function(){return z(this).tag})),k(U,"withoutSetter",(function(t){return ot(T(t),t)})),A.f=ut,j.f=st,x.f=dt,N.f=S.f=vt,O.f=bt,E.f=function(t){return ot(D(t),t)},l&&(G(U[H],"description",{configurable:!0,get:function(){return z(this).description}}),o||k(Q,"propertyIsEnumerable",ut,{unsafe:!0}))),r({global:!0,wrap:!0,forced:!s,sham:!s},{Symbol:U}),J(w(nt),(function(t){M(t)})),r({target:F,stat:!0,forced:!s},{for:function(t){var e=String(t);if(u(tt,e))return tt[e];var n=U(e);return tt[e]=n,et[n]=e,n},keyFor:function(t){if(!lt(t))throw TypeError(t+" is not a symbol");if(u(et,t))return et[t]},useSetter:function(){it=!0},useSimple:function(){it=!1}}),r({target:"Object",stat:!0,forced:!s,sham:!l},{create:ft,defineProperty:st,defineProperties:ct,getOwnPropertyDescriptor:dt}),r({target:"Object",stat:!0,forced:!s},{getOwnPropertyNames:vt,getOwnPropertySymbols:bt}),r({target:"Object",stat:!0,forced:f((function(){O.f(1)}))},{getOwnPropertySymbols:function(t){return O.f(h(t))}}),V){var ht=!s||f((function(){var t=U();return"[null]"!=V([t])||"{}"!=V({a:t})||"{}"!=V(Object(t))}));r({target:"JSON",stat:!0,forced:ht},{stringify:function(t,e,n){var r,i=[t],a=1;while(arguments.length>a)i.push(arguments[a++]);if(r=e,(v(e)||void 0!==t)&&!lt(t))return d(e)||(e=function(t,e){if("function"==typeof r&&(e=r.call(this,t,e)),!lt(e))return e}),i[1]=e,V.apply(null,i)}})}U[H][q]||C(U[H],q,U[H].valueOf),I(U,F),L[B]=!0},a630:function(t,e,n){var r=n("23e7"),i=n("4df4"),a=n("1c7e"),o=!a((function(t){Array.from(t)}));r({target:"Array",stat:!0,forced:o},{from:i})},ade3:function(t,e,n){"use strict";function r(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}n.d(e,"a",(function(){return r}))},b0c0:function(t,e,n){var r=n("83ab"),i=n("9bf2").f,a=Function.prototype,o=a.toString,l=/^\s*function ([^ (]*)/,s="name";r&&!(s in a)&&i(a,s,{configurable:!0,get:function(){try{return o.call(this).match(l)[1]}catch(t){return""}}})},b727:function(t,e,n){var r=n("0366"),i=n("44ad"),a=n("7b0b"),o=n("50c4"),l=n("65f0"),s=[].push,c=function(t){var e=1==t,n=2==t,c=3==t,f=4==t,u=6==t,d=7==t,v=5==t||u;return function(b,h,p,m){for(var y,g,w=a(b),N=i(w),S=r(h,p,3),O=o(N.length),x=0,j=m||l,A=e?j(b,O):n||d?j(b,0):void 0;O>x;x++)if((v||x in N)&&(y=N[x],g=S(y,x,w),t))if(e)A[x]=g;else if(g)switch(t){case 3:return!0;case 5:return y;case 6:return x;case 2:s.call(A,y)}else switch(t){case 4:return!1;case 7:s.call(A,y)}return u?-1:c||f?f:A}};t.exports={forEach:c(0),map:c(1),filter:c(2),some:c(3),every:c(4),find:c(5),findIndex:c(6),filterOut:c(7)}},d28b:function(t,e,n){var r=n("746f");r("iterator")},e01a:function(t,e,n){"use strict";var r=n("23e7"),i=n("83ab"),a=n("da84"),o=n("5135"),l=n("861d"),s=n("9bf2").f,c=n("e893"),f=a.Symbol;if(i&&"function"==typeof f&&(!("description"in f.prototype)||void 0!==f().description)){var u={},d=function(){var t=arguments.length<1||void 0===arguments[0]?void 0:String(arguments[0]),e=this instanceof d?new f(t):void 0===t?f():f(t);return""===t&&(u[e]=!0),e};c(d,f);var v=d.prototype=f.prototype;v.constructor=d;var b=v.toString,h="Symbol(test)"==String(f("test")),p=/^Symbol\((.*)\)[^)]+$/;s(v,"description",{configurable:!0,get:function(){var t=l(this)?this.valueOf():this,e=b.call(t);if(o(u,t))return"";var n=h?e.slice(7,-1):e.replace(p,"$1");return""===n?void 0:n}}),r({global:!0,forced:!0},{Symbol:d})}},e538:function(t,e,n){var r=n("b622");e.f=r},e8b5:function(t,e,n){var r=n("c6b6");t.exports=Array.isArray||function(t){return"Array"==r(t)}},fb6a:function(t,e,n){"use strict";var r=n("23e7"),i=n("861d"),a=n("e8b5"),o=n("23cb"),l=n("50c4"),s=n("fc6a"),c=n("8418"),f=n("b622"),u=n("1dde"),d=u("slice"),v=f("species"),b=[].slice,h=Math.max;r({target:"Array",proto:!0,forced:!d},{slice:function(t,e){var n,r,f,u=s(this),d=l(u.length),p=o(t,d),m=o(void 0===e?d:e,d);if(a(u)&&(n=u.constructor,"function"!=typeof n||n!==Array&&!a(n.prototype)?i(n)&&(n=n[v],null===n&&(n=void 0)):n=void 0,n===Array||void 0===n))return b.call(u,p,m);for(r=new(void 0===n?Array:n)(h(m-p,0)),f=0;p<m;p++,f++)p in u&&c(r,f,u[p]);return r.length=f,r}})}}]);
\ No newline at end of file
This source diff could not be displayed because it is too large. You can view the blob instead.
package com.tykj;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
@SpringBootTest
class AnnualPerformanceIndicatorsApplicationTests {
@Test
void contextLoads() {
}
}
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论