提交 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.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.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
This source diff could not be displayed because it is too large. You can view the blob instead.
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论