初始提交
This commit is contained in:
151
common-config-starter/common-config-starter.iml
Normal file
151
common-config-starter/common-config-starter.iml
Normal file
@ -0,0 +1,151 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule="true" type="JAVA_MODULE" version="4">
|
||||
<component name="FacetManager">
|
||||
<facet type="Spring" name="Spring">
|
||||
<configuration />
|
||||
</facet>
|
||||
<facet type="web" name="Web">
|
||||
<configuration>
|
||||
<webroots />
|
||||
</configuration>
|
||||
</facet>
|
||||
</component>
|
||||
<component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_8">
|
||||
<output url="file://$MODULE_DIR$/target/classes" />
|
||||
<output-test url="file://$MODULE_DIR$/target/test-classes" />
|
||||
<content url="file://$MODULE_DIR$">
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/main/resources" type="java-resource" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/target" />
|
||||
</content>
|
||||
<orderEntry type="inheritedJdk" />
|
||||
<orderEntry type="sourceFolder" forTests="false" />
|
||||
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-web:2.3.2.RELEASE" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter:2.3.2.RELEASE" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot:2.3.2.RELEASE" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-autoconfigure:2.3.2.RELEASE" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-logging:2.3.2.RELEASE" level="project" />
|
||||
<orderEntry type="library" name="Maven: ch.qos.logback:logback-classic:1.2.3" level="project" />
|
||||
<orderEntry type="library" name="Maven: ch.qos.logback:logback-core:1.2.3" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.apache.logging.log4j:log4j-to-slf4j:2.13.3" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.apache.logging.log4j:log4j-api:2.13.3" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.slf4j:jul-to-slf4j:1.7.30" level="project" />
|
||||
<orderEntry type="library" name="Maven: jakarta.annotation:jakarta.annotation-api:1.3.5" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.springframework:spring-core:5.2.8.RELEASE" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.springframework:spring-jcl:5.2.8.RELEASE" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.yaml:snakeyaml:1.26" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-json:2.3.2.RELEASE" level="project" />
|
||||
<orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-databind:2.11.1" level="project" />
|
||||
<orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-annotations:2.11.1" level="project" />
|
||||
<orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-core:2.11.1" level="project" />
|
||||
<orderEntry type="library" name="Maven: com.fasterxml.jackson.datatype:jackson-datatype-jdk8:2.11.1" level="project" />
|
||||
<orderEntry type="library" name="Maven: com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.11.1" level="project" />
|
||||
<orderEntry type="library" name="Maven: com.fasterxml.jackson.module:jackson-module-parameter-names:2.11.1" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-tomcat:2.3.2.RELEASE" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.apache.tomcat.embed:tomcat-embed-core:9.0.37" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.apache.tomcat.embed:tomcat-embed-websocket:9.0.37" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.springframework:spring-web:5.2.8.RELEASE" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.springframework:spring-beans:5.2.8.RELEASE" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.springframework:spring-webmvc:5.2.8.RELEASE" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.springframework:spring-context:5.2.8.RELEASE" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.springframework:spring-expression:5.2.8.RELEASE" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.mybatis.spring.boot:mybatis-spring-boot-starter:2.2.0" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-jdbc:2.5.0" level="project" />
|
||||
<orderEntry type="library" name="Maven: com.zaxxer:HikariCP:4.0.3" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.springframework:spring-jdbc:5.3.7" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.springframework:spring-tx:5.3.7" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.mybatis.spring.boot:mybatis-spring-boot-autoconfigure:2.2.0" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.mybatis:mybatis:3.5.7" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.mybatis:mybatis-spring:2.0.6" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-aop:2.3.2.RELEASE" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.springframework:spring-aop:5.2.8.RELEASE" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.aspectj:aspectjweaver:1.9.6" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-validation:2.3.2.RELEASE" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.glassfish:jakarta.el:3.0.3" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.hibernate.validator:hibernate-validator:6.1.5.Final" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.jboss.logging:jboss-logging:3.3.2.Final" level="project" />
|
||||
<orderEntry type="library" name="Maven: com.fasterxml:classmate:1.3.4" level="project" />
|
||||
<orderEntry type="library" name="Maven: com.alibaba:fastjson:2.0.9" level="project" />
|
||||
<orderEntry type="library" name="Maven: com.alibaba.fastjson2:fastjson2-extension:2.0.9" level="project" />
|
||||
<orderEntry type="library" name="Maven: com.alibaba.fastjson2:fastjson2:2.0.9" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.apache.commons:commons-lang3:3.12.0" level="project" />
|
||||
<orderEntry type="library" name="Maven: com.google.guava:guava:29.0-jre" level="project" />
|
||||
<orderEntry type="library" name="Maven: com.google.guava:failureaccess:1.0.1" level="project" />
|
||||
<orderEntry type="library" name="Maven: com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava" level="project" />
|
||||
<orderEntry type="library" name="Maven: com.google.code.findbugs:jsr305:3.0.2" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.checkerframework:checker-qual:2.11.1" level="project" />
|
||||
<orderEntry type="library" name="Maven: com.google.errorprone:error_prone_annotations:2.3.4" level="project" />
|
||||
<orderEntry type="library" name="Maven: com.google.j2objc:j2objc-annotations:1.3" level="project" />
|
||||
<orderEntry type="module" module-name="common-base-starter" />
|
||||
<orderEntry type="library" name="Maven: org.apache.velocity:velocity-engine-core:2.3" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.slf4j:slf4j-api:1.7.30" level="project" />
|
||||
<orderEntry type="library" name="Maven: io.springfox:springfox-swagger2:2.8.0" level="project" />
|
||||
<orderEntry type="library" name="Maven: io.swagger:swagger-annotations:1.5.14" level="project" />
|
||||
<orderEntry type="library" name="Maven: io.swagger:swagger-models:1.5.14" level="project" />
|
||||
<orderEntry type="library" name="Maven: io.springfox:springfox-spi:2.8.0" level="project" />
|
||||
<orderEntry type="library" name="Maven: io.springfox:springfox-core:2.8.0" level="project" />
|
||||
<orderEntry type="library" name="Maven: net.bytebuddy:byte-buddy:1.7.9" level="project" />
|
||||
<orderEntry type="library" name="Maven: io.springfox:springfox-schema:2.8.0" level="project" />
|
||||
<orderEntry type="library" name="Maven: io.springfox:springfox-swagger-common:2.8.0" level="project" />
|
||||
<orderEntry type="library" name="Maven: io.springfox:springfox-spring-web:2.8.0" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.reflections:reflections:0.9.11" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.javassist:javassist:3.21.0-GA" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.springframework.plugin:spring-plugin-core:1.2.0.RELEASE" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.springframework.plugin:spring-plugin-metadata:1.2.0.RELEASE" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.mapstruct:mapstruct:1.2.0.Final" level="project" />
|
||||
<orderEntry type="library" name="Maven: io.springfox:springfox-swagger-ui:2.8.0" level="project" />
|
||||
<orderEntry type="library" name="Maven: com.github.caspar-chen:swagger-ui-layer:1.1.3" level="project" />
|
||||
<orderEntry type="library" name="Maven: cn.hutool:hutool-all:5.7.20" level="project" />
|
||||
<orderEntry type="library" name="Maven: com.belerweb:pinyin4j:2.5.0" level="project" />
|
||||
<orderEntry type="library" name="Maven: com.alibaba:transmittable-thread-local:2.11.5" level="project" />
|
||||
<orderEntry type="library" name="Maven: com.github.pagehelper:pagehelper:5.3.0" level="project" />
|
||||
<orderEntry type="library" name="Maven: com.github.jsqlparser:jsqlparser:4.2" level="project" />
|
||||
<orderEntry type="library" name="Maven: jakarta.validation:jakarta.validation-api:2.0.2" level="project" />
|
||||
<orderEntry type="library" name="Maven: com.baomidou:mybatis-plus-boot-starter:3.4.3" level="project" />
|
||||
<orderEntry type="library" name="Maven: com.baomidou:mybatis-plus:3.4.3" level="project" />
|
||||
<orderEntry type="library" name="Maven: com.baomidou:mybatis-plus-extension:3.4.3" level="project" />
|
||||
<orderEntry type="library" name="Maven: com.baomidou:mybatis-plus-core:3.4.3" level="project" />
|
||||
<orderEntry type="library" name="Maven: com.baomidou:mybatis-plus-annotation:3.4.3" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.apache.poi:poi-ooxml:4.1.2" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.apache.poi:poi-ooxml-schemas:4.1.2" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.apache.xmlbeans:xmlbeans:3.1.0" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.apache.commons:commons-compress:1.19" level="project" />
|
||||
<orderEntry type="library" name="Maven: com.github.virtuald:curvesapi:1.06" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.apache.poi:poi:4.1.2" level="project" />
|
||||
<orderEntry type="library" name="Maven: commons-codec:commons-codec:1.13" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.apache.commons:commons-collections4:4.4" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.apache.commons:commons-math3:3.6.1" level="project" />
|
||||
<orderEntry type="library" name="Maven: com.zaxxer:SparseBitSet:1.2" level="project" />
|
||||
<orderEntry type="module" module-name="common-redis-starter" />
|
||||
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-data-redis:2.3.0.RELEASE" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.springframework.data:spring-data-redis:2.3.0.RELEASE" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.springframework.data:spring-data-keyvalue:2.3.0.RELEASE" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.springframework.data:spring-data-commons:2.3.0.RELEASE" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.springframework:spring-oxm:5.2.6.RELEASE" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.springframework:spring-context-support:5.2.6.RELEASE" level="project" />
|
||||
<orderEntry type="library" name="Maven: io.lettuce:lettuce-core:5.3.0.RELEASE" level="project" />
|
||||
<orderEntry type="library" name="Maven: io.netty:netty-common:4.1.49.Final" level="project" />
|
||||
<orderEntry type="library" name="Maven: io.netty:netty-handler:4.1.49.Final" level="project" />
|
||||
<orderEntry type="library" name="Maven: io.netty:netty-resolver:4.1.49.Final" level="project" />
|
||||
<orderEntry type="library" name="Maven: io.netty:netty-buffer:4.1.49.Final" level="project" />
|
||||
<orderEntry type="library" name="Maven: io.netty:netty-codec:4.1.49.Final" level="project" />
|
||||
<orderEntry type="library" name="Maven: io.netty:netty-transport:4.1.49.Final" level="project" />
|
||||
<orderEntry type="library" name="Maven: io.projectreactor:reactor-core:3.3.5.RELEASE" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.reactivestreams:reactive-streams:1.0.3" level="project" />
|
||||
<orderEntry type="module" module-name="common-token-starter" />
|
||||
<orderEntry type="library" name="Maven: com.auth0:java-jwt:3.8.1" level="project" />
|
||||
<orderEntry type="library" name="Maven: com.vividsolutions:jts:1.13" level="project" />
|
||||
<orderEntry type="library" scope="PROVIDED" name="Maven: org.projectlombok:lombok:1.16.18" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.apache.shiro:shiro-core:1.8.0" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.apache.shiro:shiro-lang:1.8.0" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.apache.shiro:shiro-cache:1.8.0" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.apache.shiro:shiro-crypto-hash:1.8.0" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.apache.shiro:shiro-crypto-core:1.8.0" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.apache.shiro:shiro-crypto-cipher:1.8.0" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.apache.shiro:shiro-config-core:1.8.0" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.apache.shiro:shiro-config-ogdl:1.8.0" level="project" />
|
||||
<orderEntry type="library" name="Maven: commons-beanutils:commons-beanutils:1.9.4" level="project" />
|
||||
<orderEntry type="library" name="Maven: commons-collections:commons-collections:3.2.2" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.apache.shiro:shiro-event:1.8.0" level="project" />
|
||||
</component>
|
||||
</module>
|
116
common-config-starter/pom.xml
Normal file
116
common-config-starter/pom.xml
Normal file
@ -0,0 +1,116 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<parent>
|
||||
<artifactId>mosty-common</artifactId>
|
||||
<groupId>com.mosty</groupId>
|
||||
<version>1.0.0-SNAPSHOT</version>
|
||||
</parent>
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
|
||||
<artifactId>common-config-starter</artifactId>
|
||||
<version>1.0.0-SNAPSHOT</version>
|
||||
|
||||
<properties>
|
||||
<maven.compiler.source>8</maven.compiler.source>
|
||||
<maven.compiler.target>8</maven.compiler.target>
|
||||
</properties>
|
||||
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-web</artifactId>
|
||||
<version>${spring-boot-dependencies.version}</version>
|
||||
<optional>true</optional>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.mybatis.spring.boot</groupId>
|
||||
<artifactId>mybatis-spring-boot-starter</artifactId>
|
||||
<version>2.2.0</version>
|
||||
<!-- <optional>true</optional>-->
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-aop</artifactId>
|
||||
<version>${spring-boot-dependencies.version}</version>
|
||||
<optional>true</optional>
|
||||
</dependency>
|
||||
<!-- 自定义验证注解 -->
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-validation</artifactId>
|
||||
<version>${spring-boot-dependencies.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.alibaba</groupId>
|
||||
<artifactId>fastjson</artifactId>
|
||||
<version>${fastjson.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.apache.commons</groupId>
|
||||
<artifactId>commons-lang3</artifactId>
|
||||
<version>3.12.0</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.google.guava</groupId>
|
||||
<artifactId>guava</artifactId>
|
||||
<version>29.0-jre</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>com.mosty</groupId>
|
||||
<artifactId>common-base-starter</artifactId>
|
||||
<version>1.0.0-SNAPSHOT</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.mosty</groupId>
|
||||
<artifactId>common-redis-starter</artifactId>
|
||||
<version>1.0.0-SNAPSHOT</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>com.mosty</groupId>
|
||||
<artifactId>common-token-starter</artifactId>
|
||||
<version>1.0.0-SNAPSHOT</version>
|
||||
</dependency>
|
||||
<!-- <dependency>-->
|
||||
<!-- <groupId>com.baomidou</groupId>-->
|
||||
<!-- <artifactId>mybatis-plus</artifactId>-->
|
||||
<!-- <version>3.5.1</version>-->
|
||||
<!-- </dependency>-->
|
||||
<dependency>
|
||||
<groupId>org.projectlombok</groupId>
|
||||
<artifactId>lombok</artifactId>
|
||||
<version>1.16.18</version>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.apache.shiro</groupId>
|
||||
<artifactId>shiro-core</artifactId>
|
||||
<version>${shiro.version}</version>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
<distributionManagement>
|
||||
<repository>
|
||||
<id>mosty-nexus-releases</id>
|
||||
<name>release version</name>
|
||||
<url>http://47.108.232.77:8181/repository/maven-releases/</url>
|
||||
</repository>
|
||||
<snapshotRepository>
|
||||
<id>mosty-nexus-snapshots</id>
|
||||
<name>snapshots version</name>
|
||||
<url>http://47.108.232.77:8181/repository/maven-snapshots/</url>
|
||||
</snapshotRepository>
|
||||
</distributionManagement>
|
||||
<build>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-deploy-plugin</artifactId>
|
||||
<version>2.8.2</version>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
</project>
|
@ -0,0 +1,18 @@
|
||||
package com.mosty.common.config;
|
||||
|
||||
import org.mybatis.spring.annotation.MapperScan;
|
||||
import org.springframework.context.annotation.ComponentScan;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
|
||||
/**
|
||||
* 代码生成自动装配
|
||||
* @author kevin
|
||||
* @date 2022/2/3 3:34 PM
|
||||
* @since 1.0.0
|
||||
*/
|
||||
@Configuration
|
||||
@MapperScan("com.mosty.common.config.mapper")
|
||||
//@ComponentScan(basePackages = "com.mosty.common.config")
|
||||
public class CommonConfigAutoConfiguration {
|
||||
|
||||
}
|
@ -0,0 +1,35 @@
|
||||
package com.mosty.common.config;
|
||||
|
||||
import com.mosty.common.base.util.SpringIocContext;
|
||||
import com.mosty.common.config.service.SysDictItemService;
|
||||
import com.mosty.common.config.service.SysDictService;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.InitializingBean;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
/**
|
||||
* 单体服务或基础微服务 使用的服务工厂
|
||||
* @author kevin
|
||||
* @date 2022/2/9 10:57 PM
|
||||
* @since 1.0.0
|
||||
*/
|
||||
@Slf4j
|
||||
@Component
|
||||
@AllArgsConstructor
|
||||
public class ConfigServiceFactory implements InitializingBean {
|
||||
|
||||
public static SysDictService sysDictService;
|
||||
public static SysDictItemService sysDictItemService;
|
||||
|
||||
@Override
|
||||
public void afterPropertiesSet() throws Exception {
|
||||
// ConfigServiceFactory.sysDictService = SpringIocContext.getBean(SysDictService.class);
|
||||
// log.info("需要调用字典服务使用:ConfigServiceFactory.sysDictService");
|
||||
// ConfigServiceFactory.sysDictItemService = SpringIocContext.getBean(SysDictItemService.class);
|
||||
// log.info("需要调用字典明细服务使用:ConfigServiceFactory.sysDictItemService");
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
@ -0,0 +1,131 @@
|
||||
package com.mosty.common.config.Excel;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
|
||||
import com.mosty.common.base.constant.Constants;
|
||||
import com.mosty.common.base.entity.log.SpringUtils;
|
||||
import com.mosty.common.base.entity.log.StringUtils;
|
||||
import com.mosty.common.config.entity.SysDictItem;
|
||||
import com.mosty.common.redis.service.RedisService;
|
||||
|
||||
/**
|
||||
* 字典工具类
|
||||
*
|
||||
* @author ruoyi
|
||||
*/
|
||||
public class DictUtils
|
||||
{
|
||||
/**
|
||||
* 设置字典缓存
|
||||
*
|
||||
* @param key 参数键
|
||||
* @param dictDatas 字典数据列表
|
||||
*/
|
||||
public static void setDictCache(String key, List<SysDictItem> dictDatas)
|
||||
{
|
||||
SpringUtils.getBean(RedisService.class).setCacheObject(getCacheKey(key), dictDatas);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取字典缓存
|
||||
*
|
||||
* @param key 参数键
|
||||
* @return dictDatas 字典数据列表
|
||||
*/
|
||||
public static List<SysDictItem> getDictCache(String key)
|
||||
{
|
||||
Object cacheObj = SpringUtils.getBean(RedisService.class).getCacheObject(getCacheKey(key));
|
||||
if (StringUtils.isNotNull(cacheObj))
|
||||
{
|
||||
List<SysDictItem> dictItems = StringUtils.cast(cacheObj);
|
||||
return dictItems;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* 清空字典缓存
|
||||
*/
|
||||
public static void clearDictCache()
|
||||
{
|
||||
Collection<String> keys = SpringUtils.getBean(RedisService.class).keys(Constants.SYS_DICT_KEY + "*");
|
||||
SpringUtils.getBean(RedisService.class).deleteObject(keys);
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置cache key
|
||||
*
|
||||
* @param configKey 参数键
|
||||
* @return 缓存键key
|
||||
*/
|
||||
public static String getCacheKey(String configKey)
|
||||
{
|
||||
return Constants.SYS_DICT_KEY + configKey;
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据指定的type ,value 获取 label
|
||||
* @param value
|
||||
* @param type
|
||||
* @param defaultLabel 默认label
|
||||
* @return
|
||||
*/
|
||||
public static String getDictLabelByTypeAndValue(String value, String type, String defaultLabel){
|
||||
if (StringUtils.isNotBlank(type) && StringUtils.isNotBlank(value)){
|
||||
for (SysDictItem dict : getDictCache(type)){
|
||||
if (type.equals(dict.getZdbh()) && value.equals(dict.getDm())){
|
||||
return dict.getZdmc();
|
||||
}
|
||||
}
|
||||
}
|
||||
return defaultLabel;
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据type,label 获取value
|
||||
*
|
||||
* @param label
|
||||
* @param type
|
||||
* @param defaultValue
|
||||
* @return
|
||||
*/
|
||||
public static String getDictValueByTypeAndLabel(String label,String type,String defaultValue) {
|
||||
if (StringUtils.isNotBlank(type) && StringUtils.isNotBlank(label)){
|
||||
for (SysDictItem dict : getDictCache(type)){
|
||||
if(type.equals(dict.getZdbh()) && label.equals(dict.getZdmc())) {
|
||||
return dict.getDm();
|
||||
}
|
||||
}
|
||||
}
|
||||
return defaultValue;
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据 type 将 lable组成 string数组
|
||||
* @param type
|
||||
* @return
|
||||
*/
|
||||
public static String[] getLabelArr(String type) {
|
||||
String[] arr0 = new String[0];
|
||||
if (StringUtils.isNotBlank(type)) {
|
||||
List<SysDictItem> dictList = getDictCache(type);
|
||||
String[] strArr = new String[dictList.size()];
|
||||
for (int i = 0 ; i < dictList.size() ; i ++) {
|
||||
strArr[i] = dictList.get(i).getZdmc();
|
||||
}
|
||||
return strArr;
|
||||
}
|
||||
return arr0;
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除指定字典缓存
|
||||
*
|
||||
* @param key 字典键
|
||||
*/
|
||||
public static void removeDictCache(String key)
|
||||
{
|
||||
SpringUtils.getBean(RedisService.class).deleteObject(getCacheKey(key));
|
||||
}
|
||||
}
|
@ -0,0 +1,50 @@
|
||||
package com.mosty.common.config.Excel;
|
||||
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class ExcelExp {
|
||||
|
||||
private String fileName;// sheet的名称
|
||||
private String[] handers;// sheet里的标题
|
||||
private List dataset;// sheet里的数据集
|
||||
private Class clazz;
|
||||
|
||||
public ExcelExp(String fileName, List dataset, Class clazz) {
|
||||
this.fileName = fileName;
|
||||
this.dataset = dataset;
|
||||
this.clazz = clazz;
|
||||
}
|
||||
|
||||
public String getFileName() {
|
||||
return fileName;
|
||||
}
|
||||
|
||||
public void setFileName(String fileName) {
|
||||
this.fileName = fileName;
|
||||
}
|
||||
|
||||
public String[] getHanders() {
|
||||
return handers;
|
||||
}
|
||||
|
||||
public void setHanders(String[] handers) {
|
||||
this.handers = handers;
|
||||
}
|
||||
|
||||
public List getDataset() {
|
||||
return dataset;
|
||||
}
|
||||
|
||||
public void setDataset(List dataset) {
|
||||
this.dataset = dataset;
|
||||
}
|
||||
|
||||
public Class getClazz() {
|
||||
return clazz;
|
||||
}
|
||||
|
||||
public void setClazz(Class clazz) {
|
||||
this.clazz = clazz;
|
||||
}
|
||||
}
|
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,958 @@
|
||||
package com.mosty.common.config.Excel;
|
||||
|
||||
|
||||
import com.mosty.common.base.entity.log.*;
|
||||
import com.mosty.common.base.entity.log.Excel.ColumnType;
|
||||
import com.mosty.common.base.entity.log.Excel.Type;
|
||||
import com.mosty.common.base.util.DateUtils;
|
||||
import com.mosty.common.base.util.FileTypeUtils;
|
||||
import com.mosty.common.base.util.ImageUtils;
|
||||
import org.apache.poi.ss.usermodel.*;
|
||||
import org.apache.poi.ss.util.CellRangeAddress;
|
||||
import org.apache.poi.ss.util.CellRangeAddressList;
|
||||
import org.apache.poi.xssf.streaming.SXSSFWorkbook;
|
||||
import org.apache.poi.xssf.usermodel.XSSFClientAnchor;
|
||||
import org.apache.poi.xssf.usermodel.XSSFDataValidation;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.io.OutputStream;
|
||||
import java.lang.reflect.Field;
|
||||
import java.lang.reflect.Method;
|
||||
import java.math.BigDecimal;
|
||||
import java.text.DecimalFormat;
|
||||
import java.time.LocalDate;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* Excel相关处理
|
||||
*
|
||||
* @author ruoyi
|
||||
*/
|
||||
public class ExcelUtilManySheet<T> {
|
||||
private static final Logger log = LoggerFactory.getLogger(ExcelUtil.class);
|
||||
|
||||
/**
|
||||
* Excel sheet最大行数,默认65536
|
||||
*/
|
||||
public static final int sheetSize = 65536;
|
||||
|
||||
/**
|
||||
* 工作表名称
|
||||
*/
|
||||
private String sheetName;
|
||||
|
||||
/**
|
||||
* 导出类型(EXPORT:导出数据;IMPORT:导入模板)
|
||||
*/
|
||||
private Type type;
|
||||
|
||||
/**
|
||||
* 工作薄对象
|
||||
*/
|
||||
private Workbook wb;
|
||||
|
||||
/**
|
||||
* 工作表对象
|
||||
*/
|
||||
private Sheet sheet;
|
||||
|
||||
/**
|
||||
* 样式列表
|
||||
*/
|
||||
private Map<String, CellStyle> styles;
|
||||
|
||||
/**
|
||||
* 导入导出数据列表
|
||||
*/
|
||||
private List<T> list;
|
||||
|
||||
/**
|
||||
* 注解列表
|
||||
*/
|
||||
private List<Object[]> fields;
|
||||
|
||||
/**
|
||||
* 最大高度
|
||||
*/
|
||||
private short maxHeight;
|
||||
|
||||
/**
|
||||
* 统计列表
|
||||
*/
|
||||
private Map<Integer, Double> statistics = new HashMap<Integer, Double>();
|
||||
|
||||
/**
|
||||
* 数字格式
|
||||
*/
|
||||
private static final DecimalFormat DOUBLE_FORMAT = new DecimalFormat("######0.00");
|
||||
|
||||
/**
|
||||
* 实体对象
|
||||
*/
|
||||
public Class<T> clazz;
|
||||
|
||||
public List<ExcelExp> clazzlist;
|
||||
|
||||
public ExcelUtilManySheet(List<ExcelExp> clazzlist) {
|
||||
this.clazzlist = clazzlist;
|
||||
}
|
||||
|
||||
public void init(List<T> list, String sheetName, Type type) {
|
||||
if (list == null) {
|
||||
list = new ArrayList<T>();
|
||||
}
|
||||
this.list = list;
|
||||
this.sheetName = sheetName;
|
||||
this.type = type;
|
||||
createExcelField();
|
||||
}
|
||||
|
||||
/**
|
||||
* 对excel表单默认第一个索引名转换成list
|
||||
*
|
||||
* @param is 输入流
|
||||
* @return 转换后集合
|
||||
*/
|
||||
public List<T> importExcel(InputStream is) throws Exception {
|
||||
return importExcel(StringUtils.EMPTY, is);
|
||||
}
|
||||
|
||||
/**
|
||||
* 对excel表单指定表格索引名转换成list
|
||||
*
|
||||
* @param sheetName 表格索引名
|
||||
* @param is 输入流
|
||||
* @return 转换后集合
|
||||
*/
|
||||
public List<T> importExcel(String sheetName, InputStream is) throws Exception {
|
||||
this.type = Type.IMPORT;
|
||||
this.wb = WorkbookFactory.create(is);
|
||||
List<T> list = new ArrayList<T>();
|
||||
Sheet sheet = null;
|
||||
if (StringUtils.isNotEmpty(sheetName)) {
|
||||
// 如果指定sheet名,则取指定sheet中的内容.
|
||||
sheet = wb.getSheet(sheetName);
|
||||
} else {
|
||||
// 如果传入的sheet名不存在则默认指向第1个sheet.
|
||||
sheet = wb.getSheetAt(0);
|
||||
}
|
||||
|
||||
if (sheet == null) {
|
||||
throw new IOException("文件sheet不存在");
|
||||
}
|
||||
|
||||
int rows = sheet.getPhysicalNumberOfRows();
|
||||
|
||||
if (rows > 0) {
|
||||
// 定义一个map用于存放excel列的序号和field.
|
||||
Map<String, Integer> cellMap = new HashMap<String, Integer>();
|
||||
// 获取表头
|
||||
Row heard = sheet.getRow(0);
|
||||
for (int i = 0; i < heard.getPhysicalNumberOfCells(); i++) {
|
||||
Cell cell = heard.getCell(i);
|
||||
if (StringUtils.isNotNull(cell)) {
|
||||
String value = this.getCellValue(heard, i).toString();
|
||||
cellMap.put(value, i);
|
||||
} else {
|
||||
cellMap.put(null, i);
|
||||
}
|
||||
}
|
||||
// 有数据时才处理 得到类的所有field.
|
||||
Field[] allFields = clazz.getDeclaredFields();
|
||||
// 定义一个map用于存放列的序号和field.
|
||||
Map<Integer, Field> fieldsMap = new HashMap<Integer, Field>();
|
||||
for (int col = 0; col < allFields.length; col++) {
|
||||
Field field = allFields[col];
|
||||
Excel attr = field.getAnnotation(Excel.class);
|
||||
if (attr != null && (attr.type() == Type.ALL || attr.type() == type)) {
|
||||
// 设置类的私有字段属性可访问.
|
||||
field.setAccessible(true);
|
||||
Integer column = cellMap.get(attr.name());
|
||||
if (column != null) {
|
||||
fieldsMap.put(column, field);
|
||||
}
|
||||
}
|
||||
}
|
||||
for (int i = 1; i < rows; i++) {
|
||||
// 从第2行开始取数据,默认第一行是表头.
|
||||
Row row = sheet.getRow(i);
|
||||
T entity = null;
|
||||
for (Map.Entry<Integer, Field> entry : fieldsMap.entrySet()) {
|
||||
Object val = this.getCellValue(row, entry.getKey());
|
||||
|
||||
// 如果不存在实例则新建.
|
||||
entity = (entity == null ? clazz.newInstance() : entity);
|
||||
// 从map中得到对应列的field.
|
||||
Field field = fieldsMap.get(entry.getKey());
|
||||
// 取得类型,并根据对象类型设置值.
|
||||
Class<?> fieldType = field.getType();
|
||||
if (String.class == fieldType) {
|
||||
String s = Convert.toStr(val);
|
||||
if (StringUtils.endsWith(s, ".0")) {
|
||||
val = StringUtils.substringBefore(s, ".0");
|
||||
} else {
|
||||
String dateFormat = field.getAnnotation(Excel.class).dateFormat();
|
||||
if (StringUtils.isNotEmpty(dateFormat)) {
|
||||
val = DateUtils.parseDateToStr(dateFormat, (Date) val);
|
||||
} else {
|
||||
val = Convert.toStr(val);
|
||||
}
|
||||
}
|
||||
} else if ((Integer.TYPE == fieldType || Integer.class == fieldType) && StringUtils.isNumeric(Convert.toStr(val))) {
|
||||
val = Convert.toInt(val);
|
||||
} else if (Long.TYPE == fieldType || Long.class == fieldType) {
|
||||
val = Convert.toLong(val);
|
||||
} else if (Double.TYPE == fieldType || Double.class == fieldType) {
|
||||
val = Convert.toDouble(val);
|
||||
} else if (Float.TYPE == fieldType || Float.class == fieldType) {
|
||||
val = Convert.toFloat(val);
|
||||
} else if (BigDecimal.class == fieldType) {
|
||||
val = Convert.toBigDecimal(val);
|
||||
} else if (Date.class == fieldType) {
|
||||
if (val instanceof String) {
|
||||
val = DateUtils.parseDate(val);
|
||||
} else if (val instanceof Double) {
|
||||
val = DateUtil.getJavaDate((Double) val);
|
||||
}
|
||||
} else if (Boolean.TYPE == fieldType || Boolean.class == fieldType) {
|
||||
val = Convert.toBool(val, false);
|
||||
}
|
||||
if (StringUtils.isNotNull(fieldType)) {
|
||||
Excel attr = field.getAnnotation(Excel.class);
|
||||
String propertyName = field.getName();
|
||||
if (StringUtils.isNotEmpty(attr.targetAttr())) {
|
||||
propertyName = field.getName() + "." + attr.targetAttr();
|
||||
} else if (StringUtils.isNotEmpty(attr.readConverterExp())) {
|
||||
val = reverseByExp(Convert.toStr(val), attr.readConverterExp(), attr.separator());
|
||||
}
|
||||
ReflectUtils.invokeSetter(entity, propertyName, val);
|
||||
}
|
||||
}
|
||||
list.add(entity);
|
||||
}
|
||||
}
|
||||
return list;
|
||||
}
|
||||
|
||||
/**
|
||||
* 对list数据源将其里面的数据导入到excel表单
|
||||
*
|
||||
* @param response 返回数据
|
||||
* @param list 导出数据集合
|
||||
* @param sheetName 工作表的名称
|
||||
* @return 结果
|
||||
* @throws IOException
|
||||
*/
|
||||
public void exportExcel(HttpServletResponse response, List<T> list, String sheetName) throws IOException {
|
||||
response.setContentType("application/vnd.ms-excel");
|
||||
response.setCharacterEncoding("utf-8");
|
||||
this.init(list, sheetName, Type.EXPORT);
|
||||
exportExcel(response.getOutputStream());
|
||||
}
|
||||
|
||||
/**
|
||||
* 对list数据源将其里面的数据导入到excel表单
|
||||
*
|
||||
* @param response 返回数据
|
||||
* @param list 导出数据集合
|
||||
* @return 结果
|
||||
* @throws IOException
|
||||
*/
|
||||
public void exportExcelManySheet(HttpServletResponse response, List<ExcelExp> list) throws IOException {
|
||||
response.setContentType("application/vnd.ms-excel");
|
||||
response.setCharacterEncoding("utf-8");
|
||||
try {
|
||||
createWorkbook();
|
||||
for (int index = 0; index < list.size(); index++) {
|
||||
this.clazz = list.get(index).getClazz();
|
||||
this.init(list.get(index).getDataset(), list.get(index).getFileName(), Type.EXPORT);
|
||||
// 取出一共有多少个sheet.
|
||||
// double sheetNo = Math.ceil(list.size() / sheetSize);
|
||||
createSheetManySheet(index);
|
||||
// 产生一行
|
||||
Row row = sheet.createRow(0);
|
||||
int column = 0;
|
||||
// 写入各个字段的列头名称
|
||||
for (Object[] os : fields) {
|
||||
Excel excel = (Excel) os[1];
|
||||
this.createCell(excel, row, column++);
|
||||
}
|
||||
if (Type.EXPORT.equals(type)) {
|
||||
fillExcelData(index, row);
|
||||
addStatisticsRow();
|
||||
}
|
||||
}
|
||||
wb.write(response.getOutputStream());
|
||||
} catch (IOException e) {
|
||||
log.error("导出Excel异常{}", e.getMessage());
|
||||
} finally {
|
||||
if (wb != null) {
|
||||
try {
|
||||
wb.close();
|
||||
} catch (IOException e1) {
|
||||
e1.printStackTrace();
|
||||
}
|
||||
}
|
||||
if (response.getOutputStream() != null) {
|
||||
try {
|
||||
response.getOutputStream().close();
|
||||
} catch (IOException e1) {
|
||||
e1.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
// exportExcel(response.getOutputStream());
|
||||
}
|
||||
|
||||
/**
|
||||
* 对list数据源将其里面的数据导入到excel表单
|
||||
*
|
||||
* @param sheetName 工作表的名称
|
||||
* @return 结果
|
||||
*/
|
||||
public void importTemplateExcel(HttpServletResponse response, String sheetName) throws IOException {
|
||||
response.setContentType("application/vnd.ms-excel");
|
||||
response.setCharacterEncoding("utf-8");
|
||||
this.init(null, sheetName, Type.IMPORT);
|
||||
exportExcel(response.getOutputStream());
|
||||
}
|
||||
|
||||
/**
|
||||
* 对list数据源将其里面的数据导入到excel表单
|
||||
*
|
||||
* @return 结果
|
||||
*/
|
||||
public void exportExcel(OutputStream outputStream) {
|
||||
try {
|
||||
// 取出一共有多少个sheet.
|
||||
double sheetNo = Math.ceil(list.size() / sheetSize);
|
||||
for (int index = 0; index <= sheetNo; index++) {
|
||||
createSheet(sheetNo, index);
|
||||
|
||||
// 产生一行
|
||||
Row row = sheet.createRow(0);
|
||||
int column = 0;
|
||||
// 写入各个字段的列头名称
|
||||
for (Object[] os : fields) {
|
||||
Excel excel = (Excel) os[1];
|
||||
this.createCell(excel, row, column++);
|
||||
}
|
||||
if (Type.EXPORT.equals(type)) {
|
||||
fillExcelData(index, row);
|
||||
addStatisticsRow();
|
||||
}
|
||||
}
|
||||
wb.write(outputStream);
|
||||
} catch (Exception e) {
|
||||
log.error("导出Excel异常{}", e.getMessage());
|
||||
} finally {
|
||||
if (wb != null) {
|
||||
try {
|
||||
wb.close();
|
||||
} catch (IOException e1) {
|
||||
e1.printStackTrace();
|
||||
}
|
||||
}
|
||||
if (outputStream != null) {
|
||||
try {
|
||||
outputStream.close();
|
||||
} catch (IOException e1) {
|
||||
e1.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 填充excel数据
|
||||
*
|
||||
* @param index 序号
|
||||
* @param row 单元格行
|
||||
*/
|
||||
public void fillExcelData(int index, Row row) {
|
||||
// int startNo = index * sheetSize;
|
||||
// int endNo = Math.min(startNo + sheetSize, list.size());
|
||||
for (int i = 0; i < list.size(); i++) {
|
||||
row = sheet.createRow(i + 1);
|
||||
// 得到导出对象.
|
||||
T vo = (T) list.get(i);
|
||||
int column = 0;
|
||||
for (Object[] os : fields) {
|
||||
Field field = (Field) os[0];
|
||||
Excel excel = (Excel) os[1];
|
||||
// 设置实体类私有属性可访问
|
||||
field.setAccessible(true);
|
||||
this.addCell(excel, row, vo, field, column++);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 创建表格样式
|
||||
*
|
||||
* @param wb 工作薄对象
|
||||
* @return 样式列表
|
||||
*/
|
||||
private Map<String, CellStyle> createStyles(Workbook wb) {
|
||||
// 写入各条记录,每条记录对应excel表中的一行
|
||||
Map<String, CellStyle> styles = new HashMap<String, CellStyle>();
|
||||
CellStyle style = wb.createCellStyle();
|
||||
style.setAlignment(HorizontalAlignment.CENTER);
|
||||
style.setVerticalAlignment(VerticalAlignment.CENTER);
|
||||
style.setBorderRight(BorderStyle.THIN);
|
||||
style.setRightBorderColor(IndexedColors.GREY_50_PERCENT.getIndex());
|
||||
style.setBorderLeft(BorderStyle.THIN);
|
||||
style.setLeftBorderColor(IndexedColors.GREY_50_PERCENT.getIndex());
|
||||
style.setBorderTop(BorderStyle.THIN);
|
||||
style.setTopBorderColor(IndexedColors.GREY_50_PERCENT.getIndex());
|
||||
style.setBorderBottom(BorderStyle.THIN);
|
||||
style.setBottomBorderColor(IndexedColors.GREY_50_PERCENT.getIndex());
|
||||
Font dataFont = wb.createFont();
|
||||
dataFont.setFontName("Arial");
|
||||
dataFont.setFontHeightInPoints((short) 10);
|
||||
style.setFont(dataFont);
|
||||
styles.put("data", style);
|
||||
|
||||
style = wb.createCellStyle();
|
||||
style.cloneStyleFrom(styles.get("data"));
|
||||
style.setAlignment(HorizontalAlignment.CENTER);
|
||||
style.setVerticalAlignment(VerticalAlignment.CENTER);
|
||||
style.setFillForegroundColor(IndexedColors.GREY_50_PERCENT.getIndex());
|
||||
style.setFillPattern(FillPatternType.SOLID_FOREGROUND);
|
||||
Font headerFont = wb.createFont();
|
||||
headerFont.setFontName("Arial");
|
||||
headerFont.setFontHeightInPoints((short) 10);
|
||||
headerFont.setBold(true);
|
||||
headerFont.setColor(IndexedColors.WHITE.getIndex());
|
||||
style.setFont(headerFont);
|
||||
styles.put("header", style);
|
||||
|
||||
style = wb.createCellStyle();
|
||||
style.setAlignment(HorizontalAlignment.CENTER);
|
||||
style.setVerticalAlignment(VerticalAlignment.CENTER);
|
||||
Font totalFont = wb.createFont();
|
||||
totalFont.setFontName("Arial");
|
||||
totalFont.setFontHeightInPoints((short) 10);
|
||||
style.setFont(totalFont);
|
||||
styles.put("total", style);
|
||||
|
||||
style = wb.createCellStyle();
|
||||
style.cloneStyleFrom(styles.get("data"));
|
||||
style.setAlignment(HorizontalAlignment.LEFT);
|
||||
styles.put("data1", style);
|
||||
|
||||
style = wb.createCellStyle();
|
||||
style.cloneStyleFrom(styles.get("data"));
|
||||
style.setAlignment(HorizontalAlignment.CENTER);
|
||||
styles.put("data2", style);
|
||||
|
||||
style = wb.createCellStyle();
|
||||
style.cloneStyleFrom(styles.get("data"));
|
||||
style.setAlignment(HorizontalAlignment.RIGHT);
|
||||
styles.put("data3", style);
|
||||
|
||||
return styles;
|
||||
}
|
||||
|
||||
/**
|
||||
* 创建单元格
|
||||
*/
|
||||
public Cell createCell(Excel attr, Row row, int column) {
|
||||
// 创建列
|
||||
Cell cell = row.createCell(column);
|
||||
// 写入列信息
|
||||
cell.setCellValue(attr.name());
|
||||
setDataValidation(attr, row, column);
|
||||
cell.setCellStyle(styles.get("header"));
|
||||
return cell;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置单元格信息
|
||||
*
|
||||
* @param value 单元格值
|
||||
* @param attr 注解相关
|
||||
* @param cell 单元格信息
|
||||
*/
|
||||
public void setCellVo(Object value, Excel attr, Cell cell) {
|
||||
if (ColumnType.STRING == attr.cellType()) {
|
||||
cell.setCellValue(StringUtils.isNull(value) ? attr.defaultValue() : value + attr.suffix());
|
||||
} else if (ColumnType.NUMERIC == attr.cellType()) {
|
||||
cell.setCellValue(StringUtils.contains(Convert.toStr(value), ".") ? Convert.toDouble(value) : Convert.toInt(value));
|
||||
} else if (ColumnType.IMAGE == attr.cellType()) {
|
||||
ClientAnchor anchor = new XSSFClientAnchor(0, 0, 0, 0, (short) cell.getColumnIndex(), cell.getRow().getRowNum(), (short) (cell.getColumnIndex() + 1),
|
||||
cell.getRow().getRowNum() + 1);
|
||||
String imagePath = Convert.toStr(value);
|
||||
if (StringUtils.isNotEmpty(imagePath)) {
|
||||
byte[] data = ImageUtils.getImage(imagePath);
|
||||
getDrawingPatriarch(cell.getSheet()).createPicture(anchor,
|
||||
cell.getSheet().getWorkbook().addPicture(data, getImageType(data)));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取画布
|
||||
*/
|
||||
public static Drawing<?> getDrawingPatriarch(Sheet sheet) {
|
||||
if (sheet.getDrawingPatriarch() == null) {
|
||||
sheet.createDrawingPatriarch();
|
||||
}
|
||||
return sheet.getDrawingPatriarch();
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取图片类型,设置图片插入类型
|
||||
*/
|
||||
public int getImageType(byte[] value) {
|
||||
String type = FileTypeUtils.getFileExtendName(value);
|
||||
if ("JPG".equalsIgnoreCase(type)) {
|
||||
return Workbook.PICTURE_TYPE_JPEG;
|
||||
} else if ("PNG".equalsIgnoreCase(type)) {
|
||||
return Workbook.PICTURE_TYPE_PNG;
|
||||
}
|
||||
return Workbook.PICTURE_TYPE_JPEG;
|
||||
}
|
||||
|
||||
/**
|
||||
* 创建表格样式
|
||||
*/
|
||||
public void setDataValidation(Excel attr, Row row, int column) {
|
||||
if (attr.name().indexOf("注:") >= 0) {
|
||||
sheet.setColumnWidth(column, 6000);
|
||||
} else {
|
||||
// 设置列宽
|
||||
sheet.setColumnWidth(column, (int) ((attr.width() + 0.72) * 256));
|
||||
}
|
||||
// 如果设置了提示信息则鼠标放上去提示.
|
||||
if (StringUtils.isNotEmpty(attr.prompt())) {
|
||||
// 这里默认设了2-101列提示.
|
||||
setXSSFPrompt(sheet, "", attr.prompt(), 1, 100, column, column);
|
||||
}
|
||||
// 如果设置了combo属性则本列只能选择不能输入
|
||||
if (attr.combo().length > 0) {
|
||||
// 这里默认设了2-101列只能选择不能输入.
|
||||
setXSSFValidation(sheet, attr.combo(), 1, 100, column, column);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 添加单元格
|
||||
*/
|
||||
public Cell addCell(Excel attr, Row row, T vo, Field field, int column) {
|
||||
Cell cell = null;
|
||||
try {
|
||||
// 设置行高
|
||||
row.setHeight(maxHeight);
|
||||
// 根据Excel中设置情况决定是否导出,有些情况需要保持为空,希望用户填写这一列.
|
||||
if (attr.isExport()) {
|
||||
String dictType = attr.dictType();
|
||||
// 创建cell
|
||||
cell = row.createCell(column);
|
||||
cell.setCellStyle(styles.get(StringUtils.format("data_{}_{}_{}", attr.align(), attr.color(), attr.backgroundColor())));
|
||||
// 用于读取对象中的属性
|
||||
Object value = getTargetValue(vo, field, attr);
|
||||
String dateFormat = attr.dateFormat();
|
||||
String readConverterExp = attr.readConverterExp();
|
||||
String separator = attr.separator();
|
||||
if (StringUtils.isNotEmpty(dateFormat) && StringUtils.isNotNull(value)) {
|
||||
cell.setCellValue(parseDateToStr(dateFormat, value));
|
||||
} else if (StringUtils.isNotEmpty(dictType) && StringUtils.isNotNull(value)) {
|
||||
cell.setCellValue(getDictLabelByTypeAndValue(String.valueOf(value), dictType));
|
||||
} else if (StringUtils.isNotEmpty(readConverterExp) && StringUtils.isNotNull(value)) {
|
||||
cell.setCellValue(convertByExp(Convert.toStr(value), readConverterExp, separator));
|
||||
} else if (value instanceof BigDecimal && -1 != attr.scale()) {
|
||||
cell.setCellValue((((BigDecimal) value).setScale(attr.scale(), attr.roundingMode())).doubleValue());
|
||||
} else if (!attr.handler().equals(ExcelHandlerAdapter.class)) {
|
||||
cell.setCellValue(dataFormatHandlerAdapter(value, attr, cell));
|
||||
} else {
|
||||
// 设置列类型
|
||||
setCellVo(value, attr, cell);
|
||||
}
|
||||
addStatisticsData(column, Convert.toStr(value), attr);
|
||||
}
|
||||
} catch (Exception e) {
|
||||
log.error("导出Excel失败{}", e);
|
||||
}
|
||||
return cell;
|
||||
}
|
||||
|
||||
/**
|
||||
* 格式化不同类型的日期对象
|
||||
*
|
||||
* @param dateFormat 日期格式
|
||||
* @param val 被格式化的日期对象
|
||||
* @return 格式化后的日期字符
|
||||
*/
|
||||
public String parseDateToStr(String dateFormat, Object val) {
|
||||
if (val == null) {
|
||||
return "";
|
||||
}
|
||||
String str;
|
||||
if (val instanceof Date) {
|
||||
str = DateUtils.parseDateToStr(dateFormat, (Date) val);
|
||||
} else if (val instanceof LocalDateTime) {
|
||||
str = DateUtils.parseDateToStr(dateFormat, DateUtils.toDate((LocalDateTime) val));
|
||||
} else if (val instanceof LocalDate) {
|
||||
str = DateUtils.parseDateToStr(dateFormat, DateUtils.toDate((LocalDate) val));
|
||||
} else {
|
||||
str = val.toString();
|
||||
}
|
||||
return str;
|
||||
}
|
||||
/**
|
||||
* 根据指定的type ,value 获取 label
|
||||
*
|
||||
* @param value
|
||||
* @param dictType
|
||||
* @return
|
||||
* @throws Exception
|
||||
*/
|
||||
public static String getDictLabelByTypeAndValue(String value, String dictType) throws Exception {
|
||||
String label = value;
|
||||
try {
|
||||
label = DictUtils.getDictLabelByTypeAndValue(value, dictType, value);
|
||||
} catch (Exception e) {
|
||||
throw e;
|
||||
}
|
||||
return label;
|
||||
}
|
||||
|
||||
/**
|
||||
* 数据处理器
|
||||
*
|
||||
* @param value 数据值
|
||||
* @param excel 数据注解
|
||||
* @return
|
||||
*/
|
||||
public String dataFormatHandlerAdapter(Object value, Excel excel, Cell cell) {
|
||||
try {
|
||||
Object instance = excel.handler().newInstance();
|
||||
Method formatMethod = excel.handler().getMethod("format", new Class[]{Object.class, String[].class, Cell.class, Workbook.class});
|
||||
value = formatMethod.invoke(instance, value, excel.args(), cell, this.wb);
|
||||
} catch (Exception e) {
|
||||
log.error("不能格式化数据 " + excel.handler(), e.getMessage());
|
||||
}
|
||||
return Convert.toStr(value);
|
||||
}
|
||||
/**
|
||||
* 设置 POI XSSFSheet 单元格提示
|
||||
*
|
||||
* @param sheet 表单
|
||||
* @param promptTitle 提示标题
|
||||
* @param promptContent 提示内容
|
||||
* @param firstRow 开始行
|
||||
* @param endRow 结束行
|
||||
* @param firstCol 开始列
|
||||
* @param endCol 结束列
|
||||
*/
|
||||
public void setXSSFPrompt(Sheet sheet, String promptTitle, String promptContent, int firstRow, int endRow,
|
||||
int firstCol, int endCol) {
|
||||
DataValidationHelper helper = sheet.getDataValidationHelper();
|
||||
DataValidationConstraint constraint = helper.createCustomConstraint("DD1");
|
||||
CellRangeAddressList regions = new CellRangeAddressList(firstRow, endRow, firstCol, endCol);
|
||||
DataValidation dataValidation = helper.createValidation(constraint, regions);
|
||||
dataValidation.createPromptBox(promptTitle, promptContent);
|
||||
dataValidation.setShowPromptBox(true);
|
||||
sheet.addValidationData(dataValidation);
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置某些列的值只能输入预制的数据,显示下拉框.
|
||||
*
|
||||
* @param sheet 要设置的sheet.
|
||||
* @param textlist 下拉框显示的内容
|
||||
* @param firstRow 开始行
|
||||
* @param endRow 结束行
|
||||
* @param firstCol 开始列
|
||||
* @param endCol 结束列
|
||||
* @return 设置好的sheet.
|
||||
*/
|
||||
public void setXSSFValidation(Sheet sheet, String[] textlist, int firstRow, int endRow, int firstCol, int endCol) {
|
||||
DataValidationHelper helper = sheet.getDataValidationHelper();
|
||||
// 加载下拉列表内容
|
||||
DataValidationConstraint constraint = helper.createExplicitListConstraint(textlist);
|
||||
// 设置数据有效性加载在哪个单元格上,四个参数分别是:起始行、终止行、起始列、终止列
|
||||
CellRangeAddressList regions = new CellRangeAddressList(firstRow, endRow, firstCol, endCol);
|
||||
// 数据有效性对象
|
||||
DataValidation dataValidation = helper.createValidation(constraint, regions);
|
||||
// 处理Excel兼容性问题
|
||||
if (dataValidation instanceof XSSFDataValidation) {
|
||||
dataValidation.setSuppressDropDownArrow(true);
|
||||
dataValidation.setShowErrorBox(true);
|
||||
} else {
|
||||
dataValidation.setSuppressDropDownArrow(false);
|
||||
}
|
||||
|
||||
sheet.addValidationData(dataValidation);
|
||||
}
|
||||
|
||||
/**
|
||||
* 解析导出值 0=男,1=女,2=未知
|
||||
*
|
||||
* @param propertyValue 参数值
|
||||
* @param converterExp 翻译注解
|
||||
* @param separator 分隔符
|
||||
* @return 解析后值
|
||||
*/
|
||||
public static String convertByExp(String propertyValue, String converterExp, String separator) {
|
||||
StringBuilder propertyString = new StringBuilder();
|
||||
String[] convertSource = converterExp.split(",");
|
||||
for (String item : convertSource) {
|
||||
String[] itemArray = item.split("=");
|
||||
if (StringUtils.containsAny(separator, propertyValue)) {
|
||||
for (String value : propertyValue.split(separator)) {
|
||||
if (itemArray[0].equals(value)) {
|
||||
propertyString.append(itemArray[1] + separator);
|
||||
break;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if (itemArray[0].equals(propertyValue)) {
|
||||
return itemArray[1];
|
||||
}
|
||||
}
|
||||
}
|
||||
return StringUtils.stripEnd(propertyString.toString(), separator);
|
||||
}
|
||||
|
||||
/**
|
||||
* 反向解析值 男=0,女=1,未知=2
|
||||
*
|
||||
* @param propertyValue 参数值
|
||||
* @param converterExp 翻译注解
|
||||
* @param separator 分隔符
|
||||
* @return 解析后值
|
||||
*/
|
||||
public static String reverseByExp(String propertyValue, String converterExp, String separator) {
|
||||
StringBuilder propertyString = new StringBuilder();
|
||||
String[] convertSource = converterExp.split(",");
|
||||
for (String item : convertSource) {
|
||||
String[] itemArray = item.split("=");
|
||||
if (StringUtils.containsAny(separator, propertyValue)) {
|
||||
for (String value : propertyValue.split(separator)) {
|
||||
if (itemArray[1].equals(value)) {
|
||||
propertyString.append(itemArray[0] + separator);
|
||||
break;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if (itemArray[1].equals(propertyValue)) {
|
||||
return itemArray[0];
|
||||
}
|
||||
}
|
||||
}
|
||||
return StringUtils.stripEnd(propertyString.toString(), separator);
|
||||
}
|
||||
|
||||
/**
|
||||
* 合计统计信息
|
||||
*/
|
||||
private void addStatisticsData(Integer index, String text, Excel entity) {
|
||||
if (entity != null && entity.isStatistics()) {
|
||||
Double temp = 0D;
|
||||
if (!statistics.containsKey(index)) {
|
||||
statistics.put(index, temp);
|
||||
}
|
||||
try {
|
||||
temp = Double.valueOf(text);
|
||||
} catch (NumberFormatException e) {
|
||||
}
|
||||
statistics.put(index, statistics.get(index) + temp);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 创建统计行
|
||||
*/
|
||||
public void addStatisticsRow() {
|
||||
if (statistics.size() > 0) {
|
||||
Cell cell = null;
|
||||
Row row = sheet.createRow(sheet.getLastRowNum() + 1);
|
||||
Set<Integer> keys = statistics.keySet();
|
||||
cell = row.createCell(0);
|
||||
cell.setCellStyle(styles.get("total"));
|
||||
cell.setCellValue("合计");
|
||||
|
||||
for (Integer key : keys) {
|
||||
cell = row.createCell(key);
|
||||
cell.setCellStyle(styles.get("total"));
|
||||
cell.setCellValue(DOUBLE_FORMAT.format(statistics.get(key)));
|
||||
}
|
||||
statistics.clear();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取bean中的属性值
|
||||
*
|
||||
* @param vo 实体对象
|
||||
* @param field 字段
|
||||
* @param excel 注解
|
||||
* @return 最终的属性值
|
||||
* @throws Exception
|
||||
*/
|
||||
private Object getTargetValue(T vo, Field field, Excel excel) throws Exception {
|
||||
Object o = field.get(vo);
|
||||
if (StringUtils.isNotEmpty(excel.targetAttr())) {
|
||||
String target = excel.targetAttr();
|
||||
if (target.indexOf(".") > -1) {
|
||||
String[] targets = target.split("[.]");
|
||||
for (String name : targets) {
|
||||
o = getValue(o, name);
|
||||
}
|
||||
} else {
|
||||
o = getValue(o, target);
|
||||
}
|
||||
}
|
||||
return o;
|
||||
}
|
||||
|
||||
/**
|
||||
* 以类的属性的get方法方法形式获取值
|
||||
*
|
||||
* @param o
|
||||
* @param name
|
||||
* @return value
|
||||
* @throws Exception
|
||||
*/
|
||||
private Object getValue(Object o, String name) throws Exception {
|
||||
if (StringUtils.isNotNull(o) && StringUtils.isNotEmpty(name)) {
|
||||
Class<?> clazz = o.getClass();
|
||||
Field field = clazz.getDeclaredField(name);
|
||||
field.setAccessible(true);
|
||||
o = field.get(o);
|
||||
}
|
||||
return o;
|
||||
}
|
||||
|
||||
/**
|
||||
* 得到所有定义字段
|
||||
*/
|
||||
private void createExcelField() {
|
||||
this.fields = new ArrayList<Object[]>();
|
||||
List<Field> tempFields = new ArrayList<>();
|
||||
tempFields.addAll(Arrays.asList(clazz.getSuperclass().getDeclaredFields()));
|
||||
tempFields.addAll(Arrays.asList(clazz.getDeclaredFields()));
|
||||
for (Field field : tempFields) {
|
||||
// 单注解
|
||||
if (field.isAnnotationPresent(Excel.class)) {
|
||||
putToField(field, field.getAnnotation(Excel.class));
|
||||
}
|
||||
|
||||
// 多注解
|
||||
if (field.isAnnotationPresent(Excels.class)) {
|
||||
Excels attrs = field.getAnnotation(Excels.class);
|
||||
Excel[] excels = attrs.value();
|
||||
for (Excel excel : excels) {
|
||||
putToField(field, excel);
|
||||
}
|
||||
}
|
||||
}
|
||||
this.fields = this.fields.stream().sorted(Comparator.comparing(objects -> ((Excel) objects[1]).sort())).collect(Collectors.toList());
|
||||
this.maxHeight = getRowHeight();
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据注解获取最大行高
|
||||
*/
|
||||
public short getRowHeight() {
|
||||
double maxHeight = 0;
|
||||
for (Object[] os : this.fields) {
|
||||
Excel excel = (Excel) os[1];
|
||||
maxHeight = maxHeight > excel.height() ? maxHeight : excel.height();
|
||||
}
|
||||
return (short) (maxHeight * 20);
|
||||
}
|
||||
|
||||
/**
|
||||
* 放到字段集合中
|
||||
*/
|
||||
private void putToField(Field field, Excel attr) {
|
||||
if (attr != null && (attr.type() == Type.ALL || attr.type() == type)) {
|
||||
this.fields.add(new Object[]{field, attr});
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 创建一个工作簿
|
||||
*/
|
||||
public void createWorkbook() {
|
||||
this.wb = new SXSSFWorkbook(500);
|
||||
}
|
||||
|
||||
/**
|
||||
* 创建工作表
|
||||
*
|
||||
* @param sheetNo sheet数量
|
||||
* @param index 序号
|
||||
*/
|
||||
public void createSheet(double sheetNo, int index) {
|
||||
this.sheet = wb.createSheet();
|
||||
this.styles = createStyles(wb);
|
||||
// 设置工作表的名称.
|
||||
if (sheetNo == 0) {
|
||||
wb.setSheetName(index, sheetName);
|
||||
} else {
|
||||
wb.setSheetName(index, sheetName + index);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 创建工作表
|
||||
*
|
||||
* @param index 序号
|
||||
*/
|
||||
public void createSheetManySheet(int index) {
|
||||
this.sheet = wb.createSheet();
|
||||
this.styles = createStyles(wb);
|
||||
wb.setSheetName(index, sheetName);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取单元格值
|
||||
*
|
||||
* @param row 获取的行
|
||||
* @param column 获取单元格列号
|
||||
* @return 单元格值
|
||||
*/
|
||||
public Object getCellValue(Row row, int column) {
|
||||
if (row == null) {
|
||||
return row;
|
||||
}
|
||||
Object val = "";
|
||||
try {
|
||||
Cell cell = row.getCell(column);
|
||||
if (StringUtils.isNotNull(cell)) {
|
||||
if (cell.getCellType() == CellType.NUMERIC || cell.getCellType() == CellType.FORMULA) {
|
||||
val = cell.getNumericCellValue();
|
||||
if (DateUtil.isCellDateFormatted(cell)) {
|
||||
val = DateUtil.getJavaDate((Double) val); // POI Excel 日期格式转换
|
||||
} else {
|
||||
if ((Double) val % 1 != 0) {
|
||||
val = new BigDecimal(val.toString());
|
||||
} else {
|
||||
val = new DecimalFormat("0").format(val);
|
||||
}
|
||||
}
|
||||
} else if (cell.getCellType() == CellType.STRING) {
|
||||
val = cell.getStringCellValue();
|
||||
} else if (cell.getCellType() == CellType.BOOLEAN) {
|
||||
val = cell.getBooleanCellValue();
|
||||
} else if (cell.getCellType() == CellType.ERROR) {
|
||||
val = cell.getErrorCellValue();
|
||||
}
|
||||
|
||||
}
|
||||
} catch (Exception e) {
|
||||
return val;
|
||||
}
|
||||
return val;
|
||||
}
|
||||
}
|
@ -0,0 +1,84 @@
|
||||
package com.mosty.common.config.config;
|
||||
|
||||
import com.mosty.common.base.util.SpringIocContext;
|
||||
import com.mosty.common.config.constant.enums.DictElementEnum;
|
||||
import lombok.Data;
|
||||
import lombok.SneakyThrows;
|
||||
import org.springframework.beans.factory.InitializingBean;
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
|
||||
import java.lang.reflect.Field;
|
||||
|
||||
/**
|
||||
* 字典组件编码配置
|
||||
* @author kevin
|
||||
* @date 2022/2/10 11:08 PM
|
||||
* @since 1.0.0
|
||||
*/
|
||||
@Data
|
||||
@Configuration
|
||||
public class DictElementConfig {
|
||||
|
||||
/** 民族 */
|
||||
@Value("${dict.element.nation:nation}")
|
||||
private String nation;
|
||||
|
||||
/** 性别 */
|
||||
@Value("${dict.element.gender:gender}")
|
||||
private String gender;
|
||||
|
||||
/** 血型 */
|
||||
@Value("${dict.element.blood-type:bloodType}")
|
||||
private String bloodType;
|
||||
|
||||
/** 学历 */
|
||||
@Value("${dict.element.education:education}")
|
||||
private String education;
|
||||
|
||||
/** 政治面貌 */
|
||||
@Value("${dict.element.political-outlook:politicalOutlook}")
|
||||
private String politicalOutlook;
|
||||
|
||||
/** 婚姻状况 */
|
||||
@Value("${dict.element.marital-status:maritalStatus}")
|
||||
private String maritalStatus;
|
||||
|
||||
/** 亲属关系 */
|
||||
@Value("${dict.element.relationship:relationship}")
|
||||
private String relationship;
|
||||
|
||||
/** 车辆型号 */
|
||||
@Value("${dict.element.vehicle-model:vehicleModel}")
|
||||
private String vehicleModel;
|
||||
|
||||
/** 车辆颜色 */
|
||||
@Value("${dict.element.vehicle-color:vehicleColor}")
|
||||
private String vehicleColor;
|
||||
|
||||
/** 机动车号牌种类 */
|
||||
@Value("${dict.element.vehicle-number-type:vehicleNumberType}")
|
||||
private String vehicleNumberType;
|
||||
|
||||
/** 车牌号 */
|
||||
@Value("${dict.element.car-number:carNumber}")
|
||||
private String carNumber;
|
||||
|
||||
/** 权限列表 */
|
||||
@Value("${dict.element.permission-list:permissionList}")
|
||||
private String permissionList;
|
||||
|
||||
/**
|
||||
* 获取当前字典的编码
|
||||
* @param elementEnum 组件类型枚举
|
||||
* @return 组件字典编码
|
||||
*/
|
||||
@SneakyThrows
|
||||
public static String getDictCode(DictElementEnum elementEnum) {
|
||||
String code = elementEnum.code;
|
||||
DictElementConfig config = SpringIocContext.getBean(DictElementConfig.class);
|
||||
Field codeField = DictElementConfig.class.getDeclaredField(code);
|
||||
return (String)codeField.get(config);
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,21 @@
|
||||
package com.mosty.common.config.config;
|
||||
|
||||
import lombok.Data;
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
|
||||
/**
|
||||
* 系统配置
|
||||
* @author kevin
|
||||
* @date 2022/3/22 10:22 PM
|
||||
* @since 1.0.0
|
||||
*/
|
||||
@Data
|
||||
@Configuration
|
||||
public class SystemConfig {
|
||||
|
||||
/** 密码登陆 */
|
||||
@Value("${config.defaultPassword:123456}")
|
||||
private String defaultPassword;
|
||||
|
||||
}
|
@ -0,0 +1,39 @@
|
||||
package com.mosty.common.config.constant.enums;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
|
||||
|
||||
/**
|
||||
* 字典组件枚举
|
||||
* @author kevin
|
||||
* @date 2022/2/10 10:33 PM
|
||||
* @since 1.0.0
|
||||
*/
|
||||
@AllArgsConstructor
|
||||
public enum DictElementEnum {
|
||||
|
||||
NATION("nation", "民族"),
|
||||
GENDER("gender", "性别"),
|
||||
BLOOD_TYPE("bloodType", "血型"),
|
||||
EDUCATION("education", "学历"),
|
||||
POLITICAL_OUTLOOK("politicalOutlook", "政治面貌"),
|
||||
MARITAL_STATUS("maritalStatus", "婚姻状况"),
|
||||
RELATIONSHIP("relationship", "亲属关系"),
|
||||
VEHICLE_MODEL("vehicleModel", "车辆型号"),
|
||||
VEHICLE_COLOR("vehicleColor", "车辆颜色"),
|
||||
VEHICLE_NUMBER_TYPE("vehicleNumberType", "机动车号牌种类"),
|
||||
CAR_NUMBER("carNumber", "车牌号"),
|
||||
PERMISSION_LIST("permissionList", "车牌号"),
|
||||
;
|
||||
|
||||
/**
|
||||
* 字典编码
|
||||
*/
|
||||
public final String code;
|
||||
|
||||
/**
|
||||
* 字典描述
|
||||
*/
|
||||
public final String desc;
|
||||
|
||||
}
|
@ -0,0 +1,163 @@
|
||||
package com.mosty.common.config.controller;
|
||||
|
||||
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.mosty.common.base.constant.enums.DeletedEnum;
|
||||
import com.mosty.common.base.domain.ResponseResult;
|
||||
import com.mosty.common.base.entity.log.BusinessType;
|
||||
import com.mosty.common.base.entity.log.Log;
|
||||
import com.mosty.common.base.exception.Asserts;
|
||||
import com.mosty.common.base.util.IpUtil;
|
||||
import com.mosty.common.config.entity.SysConfig;
|
||||
import com.mosty.common.config.entity.SysDict;
|
||||
import com.mosty.common.config.entity.vo.AddSysConfigVO;
|
||||
import com.mosty.common.config.entity.vo.ConfigPage;
|
||||
import com.mosty.common.config.entity.vo.DeleteVO;
|
||||
import com.mosty.common.config.entity.vo.EditSysConfigVO;
|
||||
import com.mosty.common.config.service.SysConfigService;
|
||||
import com.mosty.common.token.JwtSysUser;
|
||||
import com.mosty.common.token.UserInfo;
|
||||
import com.mosty.common.token.UserInfoManager;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import lombok.AllArgsConstructor;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import javax.validation.Valid;
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 参数配置表 前端控制器
|
||||
* </p>
|
||||
*
|
||||
* @author kevin
|
||||
* @since 2022-02-10
|
||||
*/
|
||||
@RestController
|
||||
@AllArgsConstructor
|
||||
@SuppressWarnings("unused")
|
||||
@RequestMapping("/sys-config")
|
||||
@Api(tags = "系统配置接口")
|
||||
public class SysConfigController {
|
||||
|
||||
private final SysConfigService sysConfigService;
|
||||
|
||||
/**
|
||||
* 添加系统配置
|
||||
* @param addSysConfigVO 添加系统配置请求
|
||||
* @return 添加结果
|
||||
*/
|
||||
@JwtSysUser
|
||||
@PostMapping("addSysConfig")
|
||||
@Log(title = "系统配置功能", businessType = BusinessType.INSERT)
|
||||
@ApiOperation(value = "添加系统配置", httpMethod = "POST", response = Boolean.class)
|
||||
public ResponseResult<Boolean> addSysConfig(@RequestBody @Valid AddSysConfigVO addSysConfigVO) {
|
||||
SysConfig sysConfig = new SysConfig();
|
||||
|
||||
sysConfig.setPzj(addSysConfigVO.getPzj());
|
||||
sysConfig.setPzz(addSysConfigVO.getPzz());
|
||||
sysConfig.setPzmc(addSysConfigVO.getPzmc());
|
||||
sysConfig.setBz(addSysConfigVO.getBz());
|
||||
|
||||
UserInfo userInfo = UserInfoManager.get();
|
||||
sysConfig.setXtZxbz(DeletedEnum.NATURE.code);
|
||||
|
||||
sysConfig.setXtCjsj(new Date());
|
||||
sysConfig.setXtZhxgsj(new Date());
|
||||
sysConfig.setXtZhxgrid(userInfo.getUserId().toString());
|
||||
sysConfig.setXtZhxgrxm(userInfo.getUserName());
|
||||
sysConfig.setXtZhxgrbmid(userInfo.getDeptId().toString());
|
||||
sysConfig.setXtZhxgrbm(userInfo.getDeptName());
|
||||
|
||||
sysConfig.setXtLrsj(new Date());
|
||||
sysConfig.setXtLrrid(userInfo.getUserId().toString());
|
||||
sysConfig.setXtLrrxm(userInfo.getUserName());
|
||||
sysConfig.setXtLrrbmid(userInfo.getDeptId().toString());
|
||||
sysConfig.setXtLrrbm(userInfo.getDeptName());
|
||||
|
||||
// 获取ip地址
|
||||
String ipAddress = IpUtil.getIpAddress();
|
||||
sysConfig.setXtLrip(ipAddress);
|
||||
sysConfig.setXtZhxgip(ipAddress);
|
||||
|
||||
sysConfigService.getBaseMapper().insert(sysConfig);
|
||||
return ResponseResult.success(Boolean.TRUE);
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改系统配置
|
||||
* @param editSysConfigVo 系统配置修改请求
|
||||
* @return 修改结果
|
||||
*/
|
||||
@JwtSysUser
|
||||
@PostMapping("updateSysConfig")
|
||||
@Log(title = "系统配置功能", businessType = BusinessType.UPDATE)
|
||||
@ApiOperation(value = "修改系统配置信息", httpMethod = "POST", response = Boolean.class)
|
||||
public ResponseResult<Boolean> updateSysConfig(@RequestBody @Valid EditSysConfigVO editSysConfigVo) {
|
||||
Asserts.check(editSysConfigVo.getId() == null, "主键id不能为空!");
|
||||
SysConfig oldSysConfig = sysConfigService.getBaseMapper().selectById(editSysConfigVo.getId());
|
||||
Asserts.check(oldSysConfig == null, "主键为 %s 的系统配置不存在", editSysConfigVo.getId());
|
||||
|
||||
// 获取ip地址
|
||||
String ipAddress = IpUtil.getIpAddress();
|
||||
oldSysConfig.setXtZhxgip(ipAddress);
|
||||
|
||||
oldSysConfig.setPzj(editSysConfigVo.getPzj());
|
||||
oldSysConfig.setPzz(editSysConfigVo.getPzz());
|
||||
oldSysConfig.setPzmc(editSysConfigVo.getPzmc());
|
||||
oldSysConfig.setBz(editSysConfigVo.getBz());
|
||||
|
||||
UserInfo userInfo = UserInfoManager.get();
|
||||
|
||||
oldSysConfig.setXtZhxgsj(new Date());
|
||||
oldSysConfig.setXtZhxgrid(userInfo.getUserId().toString());
|
||||
oldSysConfig.setXtZhxgrxm(userInfo.getUserName());
|
||||
oldSysConfig.setXtZhxgrbmid(userInfo.getDeptId().toString());
|
||||
oldSysConfig.setXtZhxgrbm(userInfo.getDeptName());
|
||||
|
||||
sysConfigService.getBaseMapper().updateById(oldSysConfig);
|
||||
return ResponseResult.success(Boolean.TRUE);
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除系统配置信息
|
||||
* @param deleteVO 系统配置信息
|
||||
* @return 删除结果
|
||||
*/
|
||||
@JwtSysUser
|
||||
@PostMapping("deleteSysConfig")
|
||||
@Log(title = "系统配置功能", businessType = BusinessType.DELETE)
|
||||
@ApiOperation(value = "删除系统配置信息", httpMethod = "POST", response = Boolean.class)
|
||||
public ResponseResult<Boolean> deleteSysConfig(@RequestBody DeleteVO deleteVO) {
|
||||
SysConfig oldSysConfig = sysConfigService.getBaseMapper().selectById(deleteVO.getId());
|
||||
Asserts.check(oldSysConfig == null, "主键为 %s 的系统配置信息不存在", deleteVO.getId());
|
||||
|
||||
// 获取ip地址
|
||||
String ipAddress = IpUtil.getIpAddress();
|
||||
oldSysConfig.setXtZhxgip(ipAddress);
|
||||
|
||||
UserInfo userInfo = UserInfoManager.get();
|
||||
|
||||
oldSysConfig.setXtZhxgsj(new Date());
|
||||
oldSysConfig.setXtZhxgrid(userInfo.getUserId().toString());
|
||||
oldSysConfig.setXtZhxgrxm(userInfo.getUserName());
|
||||
oldSysConfig.setXtZhxgrbmid(userInfo.getDeptId().toString());
|
||||
oldSysConfig.setXtZhxgrbm(userInfo.getDeptName());
|
||||
|
||||
oldSysConfig.setXtZxbz(DeletedEnum.DELETED.code);
|
||||
oldSysConfig.setXtZxyy(deleteVO.getZxyy());
|
||||
|
||||
sysConfigService.getBaseMapper().updateById(oldSysConfig);
|
||||
return ResponseResult.success(Boolean.TRUE);
|
||||
}
|
||||
|
||||
@GetMapping("selectPage")
|
||||
@ApiOperation(value = "分页查询系统配置信息", httpMethod = "GET", response = SysConfig.class)
|
||||
public ResponseResult<IPage<SysConfig>> selectPage(ConfigPage configPage) {
|
||||
IPage<SysConfig> userIPage = sysConfigService.selectByPage(configPage);
|
||||
return ResponseResult.success(userIPage);
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -0,0 +1,323 @@
|
||||
package com.mosty.common.config.controller;
|
||||
|
||||
|
||||
import cn.hutool.core.bean.BeanUtil;
|
||||
import cn.hutool.db.Page;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
|
||||
import com.google.common.collect.Lists;
|
||||
import com.mosty.common.base.constant.enums.DeletedEnum;
|
||||
import com.mosty.common.base.constant.enums.DictTypeEnum;
|
||||
import com.mosty.common.base.domain.ResponseResult;
|
||||
import com.mosty.common.base.entity.log.BusinessType;
|
||||
import com.mosty.common.base.entity.log.Log;
|
||||
import com.mosty.common.base.exception.Asserts;
|
||||
import com.mosty.common.base.util.IpUtil;
|
||||
import com.mosty.common.config.Excel.DictUtils;
|
||||
import com.mosty.common.config.config.DictElementConfig;
|
||||
import com.mosty.common.config.constant.enums.DictElementEnum;
|
||||
import com.mosty.common.config.entity.SysDict;
|
||||
import com.mosty.common.config.entity.SysDictItem;
|
||||
import com.mosty.common.config.entity.vo.*;
|
||||
import com.mosty.common.config.service.SysDictItemService;
|
||||
import com.mosty.common.config.service.SysDictService;
|
||||
import com.mosty.common.token.JwtSysUser;
|
||||
import com.mosty.common.token.UserInfo;
|
||||
import com.mosty.common.token.UserInfoManager;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.validation.Valid;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import static com.mosty.common.config.config.DictElementConfig.getDictCode;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 字典类别配置表 前端控制器
|
||||
* </p>
|
||||
*
|
||||
* @author kevin
|
||||
* @since 2022-02-09
|
||||
*/
|
||||
@SuppressWarnings("unused")
|
||||
@RestController
|
||||
@AllArgsConstructor
|
||||
@RequestMapping("/sysDict")
|
||||
@Api(tags = "字典接口")
|
||||
@Slf4j
|
||||
public class SysDictController {
|
||||
|
||||
private final SysDictService sysDictService;
|
||||
private final SysDictItemService sysDictItemService;
|
||||
private final DictElementConfig dictElementConfig;
|
||||
|
||||
/**
|
||||
* 添加字典信息
|
||||
*
|
||||
* @param addSysDictVO 字典对象
|
||||
* @return 添加结果
|
||||
*/
|
||||
@JwtSysUser
|
||||
@PostMapping("addSysDict")
|
||||
@Log(title = "字典功能", businessType = BusinessType.INSERT)
|
||||
@ApiOperation(value = "添加字典信息", httpMethod = "POST", response = Boolean.class)
|
||||
public ResponseResult<Boolean> addSysDict(@RequestBody @Valid AddSysDictVO addSysDictVO) {
|
||||
|
||||
SysDict sysDict = new SysDict();
|
||||
|
||||
sysDict.setZdmc(addSysDictVO.getZdmc());
|
||||
sysDict.setZdywlb(addSysDictVO.getZdywlb());
|
||||
sysDict.setZdbh(addSysDictVO.getZdbh());
|
||||
sysDict.setYybz(addSysDictVO.getYybz());
|
||||
sysDict.setBz(addSysDictVO.getBz());
|
||||
sysDict.setZdlx(addSysDictVO.getZdlx());
|
||||
|
||||
UserInfo userInfo = UserInfoManager.get();
|
||||
Asserts.checkAuth(userInfo == null, "用户信息不存在");
|
||||
Asserts.checkAuth(userInfo.getDeptId() == null, "用户部门信息不存在");
|
||||
Asserts.checkAuth(userInfo.getUserId() == null, "用户id信息不存在");
|
||||
sysDict.setXtZxbz(DeletedEnum.NATURE.code);
|
||||
|
||||
sysDict.setXtZhxgsj(new Date());
|
||||
sysDict.setXtZhxgrid(userInfo.getUserId().toString());
|
||||
sysDict.setXtZhxgrxm(userInfo.getUserName());
|
||||
sysDict.setXtZhxgrbmid(userInfo.getDeptId().toString());
|
||||
sysDict.setXtZhxgrbm(userInfo.getDeptName());
|
||||
sysDict.setXtCjsj(new Date());
|
||||
|
||||
sysDict.setXtLrsj(new Date());
|
||||
sysDict.setXtLrrid(userInfo.getUserId().toString());
|
||||
sysDict.setXtLrrxm(userInfo.getUserName());
|
||||
sysDict.setXtLrrbmid(userInfo.getDeptId().toString());
|
||||
sysDict.setXtLrrbm(userInfo.getDeptName());
|
||||
SysDict one = sysDictService.getOne(new LambdaQueryWrapper<SysDict>()
|
||||
.eq(SysDict::getZdbh, sysDict.getZdbh()));
|
||||
Asserts.check(Objects.nonNull(one), "当前字典编码已经存在!");
|
||||
// 获取ip地址
|
||||
String ipAddress = IpUtil.getIpAddress();
|
||||
sysDict.setXtLrip(ipAddress);
|
||||
sysDict.setXtZhxgip(ipAddress);
|
||||
|
||||
int insert = sysDictService.getBaseMapper().insert(sysDict);
|
||||
if (insert > 0) {
|
||||
DictUtils.setDictCache(sysDict.getZdbh(), null);
|
||||
}
|
||||
return ResponseResult.success(Boolean.TRUE);
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改字典信息
|
||||
*
|
||||
* @param editSysDictVo 字典对象
|
||||
* @return 添加结果
|
||||
*/
|
||||
@JwtSysUser
|
||||
@PostMapping("updateSysDict")
|
||||
@Log(title = "字典功能", businessType = BusinessType.UPDATE)
|
||||
@ApiOperation(value = "修改字典信息", httpMethod = "POST", response = Boolean.class)
|
||||
public ResponseResult<Boolean> updateSysDict(@RequestBody @Valid EditSysDictVO editSysDictVo,
|
||||
HttpServletRequest servletRequest) {
|
||||
Asserts.check(editSysDictVo.getId() == null, "主键id不能为空!");
|
||||
SysDict oldSysDict = sysDictService.getBaseMapper().selectById(editSysDictVo.getId());
|
||||
Asserts.check(oldSysDict == null, "主键为 %s 的字典信息不存在", editSysDictVo.getId());
|
||||
|
||||
// 获取ip地址
|
||||
String ipAddress = IpUtil.getIpAddress(servletRequest);
|
||||
oldSysDict.setXtZhxgip(ipAddress);
|
||||
|
||||
oldSysDict.setZdmc(editSysDictVo.getZdmc());
|
||||
oldSysDict.setZdywlb(editSysDictVo.getZdywlb());
|
||||
oldSysDict.setZdbh(editSysDictVo.getZdbh());
|
||||
oldSysDict.setYybz(editSysDictVo.getYybz());
|
||||
oldSysDict.setBz(editSysDictVo.getBz());
|
||||
oldSysDict.setZdlx(editSysDictVo.getZdlx());
|
||||
oldSysDict.setXtZxbz(editSysDictVo.getXtZxbz());
|
||||
UserInfo userInfo = UserInfoManager.get();
|
||||
Asserts.checkAuth(userInfo == null, "用户信息不存在");
|
||||
Asserts.checkAuth(userInfo.getDeptId() == null, "用户部门信息不存在");
|
||||
Asserts.checkAuth(userInfo.getUserId() == null, "用户id信息不存在");
|
||||
|
||||
oldSysDict.setXtZhxgsj(new Date());
|
||||
oldSysDict.setXtZhxgrid(userInfo.getUserId().toString());
|
||||
oldSysDict.setXtZhxgrxm(userInfo.getUserName());
|
||||
oldSysDict.setXtZhxgrbmid(userInfo.getDeptId().toString());
|
||||
oldSysDict.setXtZhxgrbm(userInfo.getDeptName());
|
||||
|
||||
int i = sysDictService.getBaseMapper().updateById(oldSysDict);
|
||||
if (i > 0) {
|
||||
List<SysDictItem> dictDatas = this.sysDictItemService.getBaseMapper().selectList(new LambdaQueryWrapper<SysDictItem>()
|
||||
.eq(SysDictItem::getXtZxbz, 0)
|
||||
.eq(SysDictItem::getZdbh, oldSysDict.getZdbh())
|
||||
);
|
||||
DictUtils.setDictCache(oldSysDict.getZdbh(), dictDatas);
|
||||
}
|
||||
|
||||
|
||||
return ResponseResult.success(Boolean.TRUE);
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改字典信息
|
||||
*
|
||||
* @param deleteVO 字典删除信息
|
||||
* @return 删除结果
|
||||
*/
|
||||
@JwtSysUser
|
||||
@PostMapping("deleteSysDict")
|
||||
@Log(title = "字典功能", businessType = BusinessType.DELETE)
|
||||
@ApiOperation(value = "删除字典信息", httpMethod = "POST", response = Boolean.class)
|
||||
public ResponseResult<Boolean> deleteSysDict(@RequestBody DeleteVO deleteVO,
|
||||
HttpServletRequest servletRequest) {
|
||||
SysDict oldSysDict = sysDictService.getBaseMapper().selectById(deleteVO.getId());
|
||||
Asserts.check(oldSysDict == null, "主键为 %s 的字典信息不存在", deleteVO.getId());
|
||||
|
||||
QueryWrapper<SysDictItem> childQuery = new QueryWrapper<>();
|
||||
childQuery.and(wrapper -> wrapper.eq("zd_id", oldSysDict.getId()));
|
||||
childQuery.and(wrapper -> wrapper.eq("xt_zxbz", DeletedEnum.NATURE.code));
|
||||
List<SysDictItem> list = sysDictItemService.list(childQuery);
|
||||
Asserts.check(CollectionUtils.isNotEmpty(list), "当前节点下有子节点,请先删除子节点!");
|
||||
|
||||
// 获取ip地址
|
||||
String ipAddress = IpUtil.getIpAddress(servletRequest);
|
||||
oldSysDict.setXtZhxgip(ipAddress);
|
||||
|
||||
UserInfo userInfo = UserInfoManager.get();
|
||||
Asserts.checkAuth(userInfo == null, "用户信息不存在");
|
||||
Asserts.checkAuth(userInfo.getDeptId() == null, "用户部门信息不存在");
|
||||
Asserts.checkAuth(userInfo.getUserId() == null, "用户id信息不存在");
|
||||
|
||||
oldSysDict.setXtZhxgsj(new Date());
|
||||
oldSysDict.setXtZhxgrid(userInfo.getUserId().toString());
|
||||
oldSysDict.setXtZhxgrxm(userInfo.getUserName());
|
||||
oldSysDict.setXtZhxgrbmid(userInfo.getDeptId().toString());
|
||||
oldSysDict.setXtZhxgrbm(userInfo.getDeptName());
|
||||
|
||||
oldSysDict.setXtZxbz(DeletedEnum.DELETED.code);
|
||||
oldSysDict.setXtZxyy(deleteVO.getZxyy());
|
||||
|
||||
sysDictService.getBaseMapper().updateById(oldSysDict);
|
||||
|
||||
//删除缓存
|
||||
DictUtils.removeDictCache(oldSysDict.getZdbh());
|
||||
|
||||
return ResponseResult.success(Boolean.TRUE);
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据字典编号查询字典信息
|
||||
*
|
||||
* @return 字典信息
|
||||
*/
|
||||
@GetMapping("getSysDictByCode")
|
||||
@ApiOperation(value = "根据字典编号查询字典信息", httpMethod = "GET", response = SysDictVO.class)
|
||||
public ResponseResult<SysDictVO> getSysDictByCode(SysDictQueryVo vo) {
|
||||
Asserts.check(StringUtils.isBlank(vo.getDictCode()), "查询的字典编号不能为空!");
|
||||
return getSysDictVOResponseResult(vo);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 根据字典组件枚举,查询字典信息
|
||||
*
|
||||
* @param dictElementEnum 字典组件枚举
|
||||
* @return 字典信息
|
||||
*/
|
||||
@GetMapping("getElementSysDict")
|
||||
@ApiOperation(value = "根据字典组件枚举,查询字典信息", httpMethod = "GET", response = SysDictVO.class)
|
||||
public ResponseResult<SysDictVO> getElementSysDict(DictElementEnum dictElementEnum) {
|
||||
// 获取组件编码,可以中配置中修改
|
||||
String dictCode = getDictCode(dictElementEnum);
|
||||
SysDictQueryVo vo = new SysDictQueryVo();
|
||||
vo.setDictCode(dictCode);
|
||||
return getSysDictVOResponseResult(vo);
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据字典编码获取字典信息
|
||||
*
|
||||
* @return 字典信息
|
||||
*/
|
||||
private ResponseResult<SysDictVO> getSysDictVOResponseResult(SysDictQueryVo vo) {
|
||||
|
||||
QueryWrapper<SysDict> dictWrapper = new QueryWrapper<>();
|
||||
dictWrapper.and(wrapper -> wrapper.eq("zdbh", vo.getDictCode()));
|
||||
SysDict sysDict = sysDictService.getOne(dictWrapper);
|
||||
Asserts.check(sysDict == null, "字典编号 %s 对应的字典不存在", vo.getDictCode());
|
||||
SysDictVO sysDictVO = new SysDictVO();
|
||||
BeanUtil.copyProperties(sysDict, sysDictVO, true);
|
||||
|
||||
//先查redis
|
||||
List<SysDictItem> list = DictUtils.getDictCache(vo.getDictCode());
|
||||
if (!CollectionUtils.isEmpty(list)) {
|
||||
if (StringUtils.isNotBlank(vo.getZdmc())) {
|
||||
list = list.stream().filter(v -> v.getZdmc().contains(vo.getZdmc())).collect(Collectors.toList());
|
||||
}
|
||||
} else {
|
||||
QueryWrapper<SysDictItem> dictItemWrapper = new QueryWrapper<>();
|
||||
dictItemWrapper.and(wrapper -> wrapper.eq("zdbh", vo.getDictCode()));
|
||||
dictItemWrapper.and(wrapper -> wrapper.eq("xt_zxbz", DeletedEnum.NATURE.code)
|
||||
.like(StringUtils.isNotBlank(vo.getZdmc()), "zdmc", vo.getZdmc()))
|
||||
.orderByAsc("dm");
|
||||
list = sysDictItemService.list(dictItemWrapper);
|
||||
}
|
||||
|
||||
if (DictTypeEnum.NATURE.code.equals(sysDict.getZdlx())) {
|
||||
int expectedSize = CollectionUtils.isEmpty(list) ? 2 : list.size();
|
||||
List<SysDictItemVO> itemList = Lists.newArrayListWithExpectedSize(expectedSize);
|
||||
if (CollectionUtils.isNotEmpty(list)) {
|
||||
itemList = BeanUtil.copyToList(list, SysDictItemVO.class);
|
||||
}
|
||||
sysDictVO.setItemList(itemList);
|
||||
} else {
|
||||
if (CollectionUtils.isNotEmpty(list)) {
|
||||
List<SysDictItemVO> natureList = list.stream().filter(dept -> DeletedEnum.NATURE.code.equals(dept.getXtZxbz()))
|
||||
.map(dept -> BeanUtil.copyProperties(dept, SysDictItemVO.class)).collect(Collectors.toList());
|
||||
if (CollectionUtils.isNotEmpty(natureList)) {
|
||||
// 递归树
|
||||
wrapChildList(sysDictVO, null, natureList);
|
||||
}
|
||||
}
|
||||
}
|
||||
return ResponseResult.success(sysDictVO);
|
||||
}
|
||||
|
||||
@GetMapping("selectPage")
|
||||
@ApiOperation(value = "分页查询字典信息", httpMethod = "GET", response = SysDict.class)
|
||||
public ResponseResult<IPage<SysDict>> selectPage(DictPage dictPage) {
|
||||
IPage<SysDict> userIPage = sysDictService.selectByPage(dictPage);
|
||||
return ResponseResult.success(userIPage);
|
||||
}
|
||||
|
||||
/**
|
||||
* 递归组装字典信息
|
||||
*
|
||||
* @param sysDictVO 字典信息
|
||||
* @param sysDictItemVO 字典明细信息
|
||||
* @param natureList 所有字典信息
|
||||
*/
|
||||
public void wrapChildList(SysDictVO sysDictVO, SysDictItemVO sysDictItemVO, List<SysDictItemVO> natureList) {
|
||||
Long rootId = sysDictVO != null ? sysDictVO.getId() : sysDictItemVO.getId();
|
||||
List<SysDictItemVO> collect = natureList.stream().filter(dept -> rootId.equals(dept.getZdId()))
|
||||
.sorted(Comparator.comparing(SysDictItemVO::getPx).reversed()).collect(Collectors.toList());
|
||||
if (sysDictVO != null) {
|
||||
sysDictVO.setItemList(collect);
|
||||
} else {
|
||||
sysDictItemVO.setItemList(collect);
|
||||
}
|
||||
if (CollectionUtils.isNotEmpty(collect)) {
|
||||
collect.forEach(dictItem -> wrapChildList(null, dictItem, natureList));
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -0,0 +1,321 @@
|
||||
package com.mosty.common.config.controller;
|
||||
|
||||
|
||||
import cn.hutool.core.bean.BeanUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.google.common.collect.Lists;
|
||||
import com.mosty.common.base.constant.enums.DeletedEnum;
|
||||
import com.mosty.common.base.domain.ResponseResult;
|
||||
import com.mosty.common.base.entity.log.BusinessType;
|
||||
import com.mosty.common.base.entity.log.Log;
|
||||
import com.mosty.common.base.exception.Asserts;
|
||||
import com.mosty.common.base.util.ChineseCharacterUtil;
|
||||
import com.mosty.common.base.util.IpUtil;
|
||||
import com.mosty.common.config.Excel.DictUtils;
|
||||
import com.mosty.common.config.entity.SysDict;
|
||||
import com.mosty.common.config.entity.SysDictItem;
|
||||
import com.mosty.common.config.entity.vo.*;
|
||||
import com.mosty.common.config.service.SysDictItemService;
|
||||
import com.mosty.common.config.service.SysDictService;
|
||||
import com.mosty.common.token.JwtSysUser;
|
||||
import com.mosty.common.token.UserInfo;
|
||||
import com.mosty.common.token.UserInfoManager;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import lombok.AllArgsConstructor;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.validation.Valid;
|
||||
import java.util.Comparator;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 字典代码值表 前端控制器
|
||||
* </p>
|
||||
*
|
||||
* @author kevin
|
||||
* @since 2022-02-09
|
||||
*/
|
||||
@SuppressWarnings("unused")
|
||||
@RestController
|
||||
@AllArgsConstructor
|
||||
@RequestMapping("/sys-dict-item")
|
||||
@Api(tags = "字典明细接口")
|
||||
public class SysDictItemController {
|
||||
|
||||
private final SysDictService sysDictService;
|
||||
private final SysDictItemService sysDictItemService;
|
||||
|
||||
/**
|
||||
* 根据字典明细编号查询子字典明细信息
|
||||
*
|
||||
* @param dictItemCode 字典明细编码
|
||||
* @return 字典信息
|
||||
*/
|
||||
@GetMapping("getChildItemByCode")
|
||||
@ApiOperation(value = "根据字典明细编号查询子字典明细信息", httpMethod = "GET", response = SysDictItemVO.class)
|
||||
public ResponseResult<List<SysDictItemVO>> getChildItemByCode(String dictItemCode) {
|
||||
SysDictItem sysDictItem = checkAndGetItem(dictItemCode);
|
||||
|
||||
QueryWrapper<SysDictItem> queryChildWrapper = new QueryWrapper<>();
|
||||
queryChildWrapper.eq("zd_id", sysDictItem.getId());
|
||||
List<SysDictItem> list = sysDictItemService.list(queryChildWrapper);
|
||||
if (CollectionUtils.isEmpty(list)) {
|
||||
return ResponseResult.success(Lists.newArrayList());
|
||||
}
|
||||
List<SysDictItemVO> sysDictItemVOS = BeanUtil.copyToList(list, SysDictItemVO.class);
|
||||
List<SysDictItemVO> collect = sysDictItemVOS.stream().sorted(Comparator.comparing(SysDictItemVO::getPx).reversed()).collect(Collectors.toList());
|
||||
return ResponseResult.success(collect);
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据字典明细编号,查询所有子字典明细信息
|
||||
*
|
||||
* @param dictItemCode 字典明细编码
|
||||
* @return 字典信息
|
||||
*/
|
||||
@GetMapping("getAllChildItemByCode")
|
||||
@ApiOperation(value = "根据字典明细编号,查询所有子字典明细信息", httpMethod = "GET", response = SysDictItemVO.class)
|
||||
public ResponseResult<List<SysDictItemVO>> getAllChildItemByCode(String dictItemCode) {
|
||||
SysDictItem sysDictItem = checkAndGetItem(dictItemCode);
|
||||
SysDictItemVO sysDictItemVO = BeanUtil.copyProperties(sysDictItem, SysDictItemVO.class);
|
||||
|
||||
QueryWrapper<SysDictItem> queryChildWrapper = new QueryWrapper<>();
|
||||
queryChildWrapper.eq("root_path", sysDictItem.getRootPath());
|
||||
List<SysDictItem> allDict = sysDictItemService.list(queryChildWrapper);
|
||||
List<SysDictItemVO> resultList = Lists.newArrayList();
|
||||
|
||||
if (CollectionUtils.isEmpty(allDict)) {
|
||||
return ResponseResult.success(resultList);
|
||||
}
|
||||
List<SysDictItemVO> natureList = allDict.stream().filter(dept -> DeletedEnum.NATURE.code.equals(dept.getXtZxbz()))
|
||||
.map(dept -> BeanUtil.copyProperties(dept, SysDictItemVO.class)).collect(Collectors.toList());
|
||||
if (CollectionUtils.isNotEmpty(natureList)) {
|
||||
// 递归组织组织机构树
|
||||
wrapChildList(sysDictItemVO, natureList);
|
||||
}
|
||||
return ResponseResult.success(sysDictItemVO.getItemList());
|
||||
}
|
||||
|
||||
/**
|
||||
* 递归组装字典信息
|
||||
*
|
||||
* @param sysDictItemVO 字典明细信息
|
||||
* @param natureList 所有字典信息
|
||||
*/
|
||||
public void wrapChildList(SysDictItemVO sysDictItemVO, List<SysDictItemVO> natureList) {
|
||||
Long rootId = sysDictItemVO.getId();
|
||||
List<SysDictItemVO> collect = natureList.stream().filter(dept -> rootId.equals(dept.getZdId()))
|
||||
.sorted(Comparator.comparing(SysDictItemVO::getPx).reversed()).collect(Collectors.toList());
|
||||
sysDictItemVO.setItemList(collect);
|
||||
if (CollectionUtils.isNotEmpty(collect)) {
|
||||
collect.forEach(dictItem -> wrapChildList(dictItem, natureList));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 检查并获取字典明细信息
|
||||
*
|
||||
* @param dictItemCode 字典明细编码
|
||||
*/
|
||||
private SysDictItem checkAndGetItem(String dictItemCode) {
|
||||
Asserts.check(StringUtils.isBlank(dictItemCode), "查询的字典明细编码不能为空!");
|
||||
QueryWrapper<SysDictItem> queryWrapper = new QueryWrapper<>();
|
||||
queryWrapper.eq("zdbh", dictItemCode);
|
||||
SysDictItem sysDictItem = sysDictItemService.getOne(queryWrapper);
|
||||
Asserts.check(sysDictItem == null || DeletedEnum.DELETED.code.equals(sysDictItem.getXtZxbz()),
|
||||
"字典编码对应的字典不存在或已删除");
|
||||
return sysDictItem;
|
||||
}
|
||||
|
||||
/**
|
||||
* 添加字典明细信息
|
||||
*
|
||||
* @param addDictItemVo 字典明细信息对象
|
||||
* @return 添加结果
|
||||
*/
|
||||
@JwtSysUser
|
||||
@PostMapping("addSysDictItem")
|
||||
@Log(title = "字典明细功能", businessType = BusinessType.INSERT)
|
||||
@ApiOperation(value = "添加字典明细信息", httpMethod = "POST", response = Boolean.class)
|
||||
public ResponseResult<Boolean> addSysDictItem(@RequestBody @Valid AddDictItemVO addDictItemVo,
|
||||
HttpServletRequest servletRequest) {
|
||||
Long parentId = addDictItemVo.getParentId();
|
||||
SysDict sysDict = sysDictService.getById(parentId);
|
||||
String rootPath = null;
|
||||
if (sysDict == null) {
|
||||
SysDictItem sysDictItem = sysDictItemService.getById(parentId);
|
||||
Asserts.check(sysDictItem == null, "传入的父id对应的字典信息不存在");
|
||||
rootPath = sysDictItem.getRootPath() + "_";
|
||||
addDictItemVo.setZdbh(sysDictItem.getZdbh());
|
||||
} else {
|
||||
rootPath = sysDict.getId() + "_";
|
||||
addDictItemVo.setZdbh(sysDict.getZdbh());
|
||||
}
|
||||
|
||||
//拼音
|
||||
addDictItemVo.setPy(ChineseCharacterUtil.getUpperCase(addDictItemVo.getZdmc(), false));
|
||||
// 获取ip地址
|
||||
String ipAddress = IpUtil.getIpAddress(servletRequest);
|
||||
sysDictItemService.addSysDictItem(addDictItemVo, rootPath, ipAddress);
|
||||
|
||||
return ResponseResult.success(Boolean.TRUE);
|
||||
}
|
||||
|
||||
|
||||
@GetMapping("selectPage")
|
||||
@ApiOperation(value = "", httpMethod = "GET", response = SysDictVO.class)
|
||||
public ResponseResult<IPage<SysDictItem>> selectPageDict(SysDictQueryPage vo) {
|
||||
Asserts.check(StringUtils.isBlank(vo.getDictCode()), "查询的字典编号不能为空!");
|
||||
LambdaQueryWrapper<SysDictItem> wrapper = new LambdaQueryWrapper<SysDictItem>()
|
||||
.like(StringUtils.isNotBlank(vo.getZdmc()), SysDictItem::getZdmc, vo.getZdmc())
|
||||
.eq(StringUtils.isNotBlank(vo.getDictCode()), SysDictItem::getZdbh, vo.getDictCode())
|
||||
.eq(SysDictItem::getXtZxbz, "0");
|
||||
return ResponseResult.success(this.sysDictItemService.page(vo, wrapper));
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改字典明细信息
|
||||
*
|
||||
* @param editDictItemVO 字典对象
|
||||
* @return 修改结果
|
||||
*/
|
||||
@JwtSysUser
|
||||
@PostMapping("updateSysDictItem")
|
||||
@Log(title = "字典明细功能", businessType = BusinessType.UPDATE)
|
||||
@ApiOperation(value = "修改字典明细信息", httpMethod = "POST", response = Boolean.class)
|
||||
public ResponseResult<Boolean> updateSysDictItem(@RequestBody @Valid EditDictItemVO editDictItemVO,
|
||||
HttpServletRequest servletRequest) {
|
||||
Asserts.check(editDictItemVO.getId() == null, "主键id不能为空!");
|
||||
SysDictItem oldSysDictItem = sysDictItemService.getBaseMapper().selectById(editDictItemVO.getId());
|
||||
Asserts.check(oldSysDictItem == null, "主键为 %s 的字典明细信息不存在", editDictItemVO.getId());
|
||||
|
||||
// 获取ip地址
|
||||
String ipAddress = IpUtil.getIpAddress(servletRequest);
|
||||
|
||||
UserInfo userInfo = UserInfoManager.get();
|
||||
Asserts.checkAuth(userInfo == null, "用户信息为空,请登陆");
|
||||
oldSysDictItem.setXtZhxgsj(new Date());
|
||||
oldSysDictItem.setXtZhxgrid(userInfo.getUserId().toString());
|
||||
oldSysDictItem.setXtZhxgrxm(userInfo.getUserName());
|
||||
oldSysDictItem.setXtZhxgrbmid(userInfo.getDeptId().toString());
|
||||
oldSysDictItem.setXtZhxgrbm(userInfo.getDeptName());
|
||||
oldSysDictItem.setXtZhxgip(ipAddress);
|
||||
|
||||
oldSysDictItem.setBz(editDictItemVO.getBz());
|
||||
oldSysDictItem.setDm(editDictItemVO.getDm());
|
||||
oldSysDictItem.setPy(editDictItemVO.getPy());
|
||||
oldSysDictItem.setPx(editDictItemVO.getPx());
|
||||
oldSysDictItem.setZdbh(editDictItemVO.getZdbh());
|
||||
oldSysDictItem.setZdmc(editDictItemVO.getZdmc());
|
||||
oldSysDictItem.setPy(ChineseCharacterUtil.getUpperCase(oldSysDictItem.getZdmc(), false));
|
||||
int i = sysDictItemService.getBaseMapper().updateById(oldSysDictItem);
|
||||
if (i > 0) {
|
||||
List<SysDictItem> dictDatas = this.sysDictItemService.getBaseMapper().selectList(new LambdaQueryWrapper<SysDictItem>()
|
||||
.eq(SysDictItem::getXtZxbz, 0)
|
||||
.eq(SysDictItem::getZdbh, oldSysDictItem.getZdbh())
|
||||
);
|
||||
DictUtils.setDictCache(oldSysDictItem.getZdbh(), dictDatas);
|
||||
}
|
||||
return ResponseResult.success(Boolean.TRUE);
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改字典明细信息
|
||||
*
|
||||
* @param deleteVO 字典主键
|
||||
* @return 删除结果
|
||||
*/
|
||||
@JwtSysUser
|
||||
@PostMapping("deleteSysDictItem")
|
||||
@Log(title = "字典明细功能", businessType = BusinessType.DELETE)
|
||||
@ApiOperation(value = "删除字典明细信息", httpMethod = "POST", response = Boolean.class)
|
||||
public ResponseResult<Boolean> deleteSysDictItem(@RequestBody DeleteVO deleteVO, HttpServletRequest servletRequest) {
|
||||
SysDictItem sysDictItem = sysDictItemService.getBaseMapper().selectById(deleteVO.getId());
|
||||
Asserts.check(sysDictItem == null, "主键为 %s 的字典明细信息不存在", deleteVO.getId());
|
||||
|
||||
QueryWrapper<SysDictItem> childQuery = new QueryWrapper<>();
|
||||
childQuery.and(wrapper -> wrapper.eq("zd_id", sysDictItem.getId()));
|
||||
childQuery.and(wrapper -> wrapper.eq("xt_zxbz", DeletedEnum.NATURE.code));
|
||||
List<SysDictItem> list = sysDictItemService.list(childQuery);
|
||||
Asserts.check(CollectionUtils.isNotEmpty(list), "当前节点下有子节点,请先删除子节点!");
|
||||
|
||||
sysDictItem.setXtZxbz(DeletedEnum.DELETED.code);
|
||||
sysDictItem.setXtZxyy(deleteVO.getZxyy());
|
||||
|
||||
// 获取ip地址
|
||||
String ipAddress = IpUtil.getIpAddress(servletRequest);
|
||||
|
||||
UserInfo userInfo = UserInfoManager.get();
|
||||
Asserts.checkAuth(userInfo == null, "用户信息为空,请登陆");
|
||||
sysDictItem.setXtZhxgsj(new Date());
|
||||
sysDictItem.setXtZhxgrid(userInfo.getUserId().toString());
|
||||
sysDictItem.setXtZhxgrxm(userInfo.getUserName());
|
||||
sysDictItem.setXtZhxgrbmid(userInfo.getDeptId().toString());
|
||||
sysDictItem.setXtZhxgrbm(userInfo.getDeptName());
|
||||
sysDictItem.setXtZhxgip(ipAddress);
|
||||
int i = sysDictItemService.getBaseMapper().updateById(sysDictItem);
|
||||
if (i > 0) {
|
||||
List<SysDictItem> dictDatas = this.sysDictItemService.getBaseMapper().selectList(new LambdaQueryWrapper<SysDictItem>()
|
||||
.eq(SysDictItem::getXtZxbz, 0)
|
||||
.eq(SysDictItem::getZdbh, sysDictItem.getZdbh())
|
||||
);
|
||||
DictUtils.setDictCache(sysDictItem.getZdbh(), dictDatas);
|
||||
}
|
||||
|
||||
return ResponseResult.success(Boolean.TRUE);
|
||||
}
|
||||
|
||||
|
||||
@JwtSysUser
|
||||
@PostMapping("deleteSysDictItemBatch")
|
||||
@Log(title = "字典明细功能", businessType = BusinessType.DELETE)
|
||||
@ApiOperation(value = "删除字典明细信息", httpMethod = "POST", response = Boolean.class)
|
||||
public ResponseResult<Boolean> deleteSysDictItemBatch(@RequestBody List<Long> ids, HttpServletRequest servletRequest) {
|
||||
|
||||
if (!CollectionUtils.isEmpty(ids)) {
|
||||
for (Long id : ids) {
|
||||
SysDictItem sysDictItem = sysDictItemService.getBaseMapper().selectById(id);
|
||||
Asserts.check(sysDictItem == null, "主键为 %s 的字典明细信息不存在", id);
|
||||
|
||||
QueryWrapper<SysDictItem> childQuery = new QueryWrapper<>();
|
||||
childQuery.and(wrapper -> wrapper.eq("zd_id", sysDictItem.getId()));
|
||||
childQuery.and(wrapper -> wrapper.eq("xt_zxbz", DeletedEnum.NATURE.code));
|
||||
List<SysDictItem> list = sysDictItemService.list(childQuery);
|
||||
Asserts.check(CollectionUtils.isNotEmpty(list), "当前节点下有子节点,请先删除子节点!");
|
||||
|
||||
sysDictItem.setXtZxbz(DeletedEnum.DELETED.code);
|
||||
sysDictItem.setXtZxyy(null);
|
||||
// 获取ip地址
|
||||
String ipAddress = IpUtil.getIpAddress(servletRequest);
|
||||
UserInfo userInfo = UserInfoManager.get();
|
||||
Asserts.checkAuth(userInfo == null, "用户信息为空,请登陆");
|
||||
sysDictItem.setXtZhxgsj(new Date());
|
||||
sysDictItem.setXtZhxgrid(userInfo.getUserId().toString());
|
||||
sysDictItem.setXtZhxgrxm(userInfo.getUserName());
|
||||
sysDictItem.setXtZhxgrbmid(userInfo.getDeptId().toString());
|
||||
sysDictItem.setXtZhxgrbm(userInfo.getDeptName());
|
||||
sysDictItem.setXtZhxgip(ipAddress);
|
||||
int i = sysDictItemService.getBaseMapper().updateById(sysDictItem);
|
||||
if (i > 0) {
|
||||
List<SysDictItem> dictDatas = this.sysDictItemService.getBaseMapper().selectList(new LambdaQueryWrapper<SysDictItem>()
|
||||
.eq(SysDictItem::getXtZxbz, 0)
|
||||
.eq(SysDictItem::getZdbh, sysDictItem.getZdbh())
|
||||
);
|
||||
DictUtils.setDictCache(sysDictItem.getZdbh(), dictDatas);
|
||||
}
|
||||
}
|
||||
}
|
||||
return ResponseResult.success(Boolean.TRUE);
|
||||
}
|
||||
}
|
||||
|
@ -0,0 +1,168 @@
|
||||
package com.mosty.common.config.controller;
|
||||
|
||||
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.mosty.common.base.constant.enums.DeletedEnum;
|
||||
import com.mosty.common.base.domain.ResponseResult;
|
||||
import com.mosty.common.base.entity.log.BusinessType;
|
||||
import com.mosty.common.base.entity.log.Log;
|
||||
import com.mosty.common.base.exception.Asserts;
|
||||
import com.mosty.common.base.util.IpUtil;
|
||||
import com.mosty.common.config.entity.SysDict;
|
||||
import com.mosty.common.config.entity.SysVersionManage;
|
||||
import com.mosty.common.config.entity.vo.AddVersionManageVO;
|
||||
import com.mosty.common.config.entity.vo.EditVersionManageVO;
|
||||
import com.mosty.common.config.entity.vo.VersionManagePage;
|
||||
import com.mosty.common.config.service.SysVersionManageService;
|
||||
import com.mosty.common.token.JwtSysUser;
|
||||
import com.mosty.common.token.UserInfo;
|
||||
import com.mosty.common.token.UserInfoManager;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import javax.validation.Valid;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 版本管理表 前端控制器
|
||||
* </p>
|
||||
*
|
||||
* @author kevin
|
||||
* @since 2022-02-21
|
||||
*/
|
||||
@Slf4j
|
||||
@AllArgsConstructor
|
||||
@RestController
|
||||
@SuppressWarnings("unused")
|
||||
@RequestMapping("/sys-version-manage")
|
||||
@Api(tags = "系统版本管理接口")
|
||||
public class SysVersionManageController {
|
||||
|
||||
private final SysVersionManageService sysVersionManageService;
|
||||
|
||||
/**
|
||||
* 添加系统版本管理
|
||||
* @param addVersionManageVo 添加系统版本管理请求
|
||||
* @return 添加结果
|
||||
*/
|
||||
@JwtSysUser
|
||||
@PostMapping("addVersionManage")
|
||||
@Log(title = "系统版本管理功能", businessType = BusinessType.INSERT)
|
||||
@ApiOperation(value = "添加系统版本管理", httpMethod = "POST", response = Boolean.class)
|
||||
public ResponseResult<Boolean> addVersionManage(@RequestBody @Valid AddVersionManageVO addVersionManageVo) {
|
||||
|
||||
SysVersionManage sysVersionManage = new SysVersionManage();
|
||||
|
||||
sysVersionManage.setSysVersion(addVersionManageVo.getSysVersion());
|
||||
sysVersionManage.setPublishTime(addVersionManageVo.getPublishTime());
|
||||
sysVersionManage.setAddFunction(addVersionManageVo.getAddFunction());
|
||||
sysVersionManage.setFixBug(addVersionManageVo.getFixBug());
|
||||
sysVersionManage.setBz(addVersionManageVo.getBz());
|
||||
|
||||
UserInfo userInfo = UserInfoManager.get();
|
||||
sysVersionManage.setXtZxbz(DeletedEnum.NATURE.code);
|
||||
|
||||
sysVersionManage.setXtCjsj(LocalDateTime.now());
|
||||
sysVersionManage.setXtZhxgsj(LocalDateTime.now());
|
||||
sysVersionManage.setXtZhxgrid(userInfo.getUserId().toString());
|
||||
sysVersionManage.setXtZhxgrxm(userInfo.getUserName());
|
||||
sysVersionManage.setXtZhxgrbmid(userInfo.getDeptId().toString());
|
||||
sysVersionManage.setXtZhxgrbm(userInfo.getDeptName());
|
||||
|
||||
sysVersionManage.setXtLrsj(LocalDateTime.now());
|
||||
sysVersionManage.setXtLrrid(userInfo.getUserId().toString());
|
||||
sysVersionManage.setXtLrrxm(userInfo.getUserName());
|
||||
sysVersionManage.setXtLrrbmid(userInfo.getDeptId().toString());
|
||||
sysVersionManage.setXtLrrbm(userInfo.getDeptName());
|
||||
|
||||
// 获取ip地址
|
||||
String ipAddress = IpUtil.getIpAddress();
|
||||
sysVersionManage.setXtLrip(ipAddress);
|
||||
sysVersionManage.setXtZhxgip(ipAddress);
|
||||
|
||||
sysVersionManageService.getBaseMapper().insert(sysVersionManage);
|
||||
return ResponseResult.success(Boolean.TRUE);
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改系统版本管理
|
||||
* @param editVersionManageVo 修改系统版本管理请求
|
||||
* @return 修改结果
|
||||
*/
|
||||
@JwtSysUser
|
||||
@PostMapping("updateVersionManage")
|
||||
@Log(title = "系统版本管理功能", businessType = BusinessType.UPDATE)
|
||||
@ApiOperation(value = "修改系统版本管理", httpMethod = "POST", response = Boolean.class)
|
||||
public ResponseResult<Boolean> updateVersionManage(@RequestBody @Valid EditVersionManageVO editVersionManageVo) {
|
||||
Asserts.check(editVersionManageVo.getId() == null, "主键id不能为空!");
|
||||
SysVersionManage sysVersionManage = sysVersionManageService.getBaseMapper().selectById(editVersionManageVo.getId());
|
||||
Asserts.check(sysVersionManage == null, "主键为 %s 的系统版本管理信息不存在", editVersionManageVo.getId());
|
||||
|
||||
// 获取ip地址
|
||||
String ipAddress = IpUtil.getIpAddress();
|
||||
sysVersionManage.setXtZhxgip(ipAddress);
|
||||
|
||||
sysVersionManage.setSysVersion(editVersionManageVo.getSysVersion());
|
||||
sysVersionManage.setPublishTime(editVersionManageVo.getPublishTime());
|
||||
sysVersionManage.setAddFunction(editVersionManageVo.getAddFunction());
|
||||
sysVersionManage.setFixBug(editVersionManageVo.getFixBug());
|
||||
sysVersionManage.setBz(editVersionManageVo.getBz());
|
||||
|
||||
UserInfo userInfo = UserInfoManager.get();
|
||||
|
||||
sysVersionManage.setXtZhxgsj(LocalDateTime.now());
|
||||
sysVersionManage.setXtZhxgrid(userInfo.getUserId().toString());
|
||||
sysVersionManage.setXtZhxgrxm(userInfo.getUserName());
|
||||
sysVersionManage.setXtZhxgrbmid(userInfo.getDeptId().toString());
|
||||
sysVersionManage.setXtZhxgrbm(userInfo.getDeptName());
|
||||
|
||||
sysVersionManageService.getBaseMapper().updateById(sysVersionManage);
|
||||
return ResponseResult.success(Boolean.TRUE);
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除系统版本管理信息
|
||||
* @param id 系统版本管理信息id
|
||||
* @return 删除结果
|
||||
*/
|
||||
@JwtSysUser
|
||||
@GetMapping("deleteVersionManage")
|
||||
@Log(title = "系统版本管理功能", businessType = BusinessType.DELETE)
|
||||
@ApiOperation(value = "删除系统版本管理信息", httpMethod = "POST", response = Boolean.class)
|
||||
public ResponseResult<Boolean> deleteVersionManage(@RequestParam("id") Long id) {
|
||||
SysVersionManage sysVersionManage = sysVersionManageService.getBaseMapper().selectById(id);
|
||||
Asserts.check(sysVersionManage == null, "主键为 %s 的系统版本管理信息不存在", id);
|
||||
|
||||
// 获取ip地址
|
||||
String ipAddress = IpUtil.getIpAddress();
|
||||
sysVersionManage.setXtZhxgip(ipAddress);
|
||||
|
||||
UserInfo userInfo = UserInfoManager.get();
|
||||
|
||||
sysVersionManage.setXtZhxgsj(LocalDateTime.now());
|
||||
sysVersionManage.setXtZhxgrid(userInfo.getUserId().toString());
|
||||
sysVersionManage.setXtZhxgrxm(userInfo.getUserName());
|
||||
sysVersionManage.setXtZhxgrbmid(userInfo.getDeptId().toString());
|
||||
sysVersionManage.setXtZhxgrbm(userInfo.getDeptName());
|
||||
|
||||
sysVersionManage.setXtZxbz(DeletedEnum.DELETED.code);
|
||||
sysVersionManage.setXtZxyy("");
|
||||
|
||||
sysVersionManageService.getBaseMapper().updateById(sysVersionManage);
|
||||
return ResponseResult.success(Boolean.TRUE);
|
||||
}
|
||||
|
||||
@GetMapping("selectPage")
|
||||
@ApiOperation(value = "分页查询字典信息", httpMethod = "GET", response = SysVersionManage.class)
|
||||
public ResponseResult<IPage<SysVersionManage>> selectPage(VersionManagePage versionManagePage) {
|
||||
IPage<SysVersionManage> versionManageIPage = sysVersionManageService.selectByPage(versionManagePage);
|
||||
return ResponseResult.success(versionManageIPage);
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -0,0 +1,93 @@
|
||||
package com.mosty.common.config.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 参数配置表
|
||||
* </p>
|
||||
*
|
||||
* @author kevin
|
||||
* @since 2022-02-10
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
@Accessors(chain = true)
|
||||
@TableName("mosty_base.sys_config")
|
||||
@ApiModel(value="SysConfig对象", description="参数配置表")
|
||||
public class SysConfig implements Serializable {
|
||||
|
||||
private static final long serialVersionUID=1L;
|
||||
|
||||
@ApiModelProperty(value = "主键")
|
||||
@TableId(value = "id", type = IdType.AUTO)
|
||||
private Long id;
|
||||
|
||||
@ApiModelProperty(value = "配置名称")
|
||||
private String pzmc;
|
||||
|
||||
@ApiModelProperty(value = "配置键")
|
||||
private String pzj;
|
||||
|
||||
@ApiModelProperty(value = "配置值")
|
||||
private String pzz;
|
||||
|
||||
@ApiModelProperty(value = "备注")
|
||||
private String bz;
|
||||
|
||||
@ApiModelProperty(value = "采集时间")
|
||||
private Date xtCjsj;
|
||||
|
||||
@ApiModelProperty(value = "录入时间")
|
||||
private Date xtLrsj;
|
||||
|
||||
@ApiModelProperty(value = "录入人姓名")
|
||||
private String xtLrrxm;
|
||||
|
||||
@ApiModelProperty(value = "录入人ID")
|
||||
private String xtLrrid;
|
||||
|
||||
@ApiModelProperty(value = "录入人部门")
|
||||
private String xtLrrbm;
|
||||
|
||||
@ApiModelProperty(value = "录入人部门ID")
|
||||
private String xtLrrbmid;
|
||||
|
||||
@ApiModelProperty(value = "录入IP")
|
||||
private String xtLrip;
|
||||
|
||||
@ApiModelProperty(value = "最后修改时间")
|
||||
private Date xtZhxgsj;
|
||||
|
||||
@ApiModelProperty(value = "最后修改人姓名")
|
||||
private String xtZhxgrxm;
|
||||
|
||||
@ApiModelProperty(value = "最后修改人ID")
|
||||
private String xtZhxgrid;
|
||||
|
||||
@ApiModelProperty(value = "最后修改人部门")
|
||||
private String xtZhxgrbm;
|
||||
|
||||
@ApiModelProperty(value = "最后修改人部门ID")
|
||||
private String xtZhxgrbmid;
|
||||
|
||||
@ApiModelProperty(value = "最后修改IP")
|
||||
private String xtZhxgip;
|
||||
|
||||
@ApiModelProperty(value = "注销标志0正常 1.注销")
|
||||
private Integer xtZxbz;
|
||||
|
||||
@ApiModelProperty(value = "注销原因")
|
||||
private String xtZxyy;
|
||||
|
||||
}
|
@ -0,0 +1,109 @@
|
||||
package com.mosty.common.config.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.mosty.common.base.constant.enums.DictTypeEnum;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 字典类别配置表
|
||||
* </p>
|
||||
*
|
||||
* @author kevin
|
||||
* @since 2022-02-09
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
@Accessors(chain = true)
|
||||
@TableName("mosty_base.sys_dict")
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
@ApiModel(value="SysDict对象", description="字典类别配置表")
|
||||
public class SysDict implements Serializable {
|
||||
|
||||
private static final long serialVersionUID=1L;
|
||||
|
||||
@ApiModelProperty(value = "主键id")
|
||||
@TableId(value = "id", type = IdType.AUTO)
|
||||
private Long id;
|
||||
|
||||
@ApiModelProperty(value = "字典名称")
|
||||
private String zdmc;
|
||||
|
||||
/**
|
||||
* 字典类型
|
||||
*@see DictTypeEnum
|
||||
*/
|
||||
@ApiModelProperty(value = "是否树形字典:1、不是(列表) 2、树形")
|
||||
private Integer zdlx;
|
||||
|
||||
@ApiModelProperty(value = "字典业务类别")
|
||||
private String zdywlb;
|
||||
|
||||
@ApiModelProperty(value = "字典编号")
|
||||
private String zdbh;
|
||||
|
||||
@ApiModelProperty(value = "引用标准")
|
||||
private String yybz;
|
||||
|
||||
@ApiModelProperty(value = "备注")
|
||||
private String bz;
|
||||
|
||||
@ApiModelProperty(value = "采集时间")
|
||||
private Date xtCjsj;
|
||||
|
||||
@ApiModelProperty(value = "录入时间")
|
||||
private Date xtLrsj;
|
||||
|
||||
@ApiModelProperty(value = "录入人姓名")
|
||||
private String xtLrrxm;
|
||||
|
||||
@ApiModelProperty(value = "录入人ID")
|
||||
private String xtLrrid;
|
||||
|
||||
@ApiModelProperty(value = "录入人部门")
|
||||
private String xtLrrbm;
|
||||
|
||||
@ApiModelProperty(value = "录入人部门ID")
|
||||
private String xtLrrbmid;
|
||||
|
||||
@ApiModelProperty(value = "录入IP")
|
||||
private String xtLrip;
|
||||
|
||||
@ApiModelProperty(value = "最后修改时间")
|
||||
private Date xtZhxgsj;
|
||||
|
||||
@ApiModelProperty(value = "最后修改人姓名")
|
||||
private String xtZhxgrxm;
|
||||
|
||||
@ApiModelProperty(value = "最后修改人ID")
|
||||
private String xtZhxgrid;
|
||||
|
||||
@ApiModelProperty(value = "最后修改人部门")
|
||||
private String xtZhxgrbm;
|
||||
|
||||
@ApiModelProperty(value = "最后修改人部门ID")
|
||||
private String xtZhxgrbmid;
|
||||
|
||||
@ApiModelProperty(value = "最后修改IP")
|
||||
private String xtZhxgip;
|
||||
|
||||
@ApiModelProperty(value = "注销标志0正常 1.注销")
|
||||
private Integer xtZxbz;
|
||||
|
||||
@ApiModelProperty(value = "注销原因")
|
||||
private String xtZxyy;
|
||||
|
||||
|
||||
}
|
@ -0,0 +1,114 @@
|
||||
package com.mosty.common.config.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 字典代码值表
|
||||
* </p>
|
||||
*
|
||||
* @author kevin
|
||||
* @since 2022-02-09
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
@Accessors(chain = true)
|
||||
@TableName("mosty_base.sys_dict_item")
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
@ApiModel(value="SysDictItem对象", description="字典代码值表")
|
||||
public class SysDictItem implements Serializable {
|
||||
|
||||
private static final long serialVersionUID=1L;
|
||||
|
||||
@ApiModelProperty(value = "主键id")
|
||||
@TableId(value = "id", type = IdType.AUTO)
|
||||
private Long id;
|
||||
|
||||
@ApiModelProperty(value = "字典上级编号")
|
||||
private Long zdId;
|
||||
|
||||
/**
|
||||
* 根节点开始的id路径
|
||||
*/
|
||||
@TableField(value = "root_path")
|
||||
private String rootPath;
|
||||
|
||||
@ApiModelProperty(value = "字典编号")
|
||||
private String zdbh;
|
||||
|
||||
@ApiModelProperty(value = "字典名称")
|
||||
private String zdmc;
|
||||
|
||||
@ApiModelProperty(value = "字典代码")
|
||||
private String dm;
|
||||
|
||||
@ApiModelProperty(value = "字典拼音")
|
||||
private String py;
|
||||
|
||||
@ApiModelProperty(value = "排序字典:100在1前面,倒序")
|
||||
private Integer px;
|
||||
|
||||
@ApiModelProperty(value = "备注")
|
||||
private String bz;
|
||||
|
||||
@ApiModelProperty(value = "采集时间")
|
||||
private Date xtCjsj;
|
||||
|
||||
@ApiModelProperty(value = "录入时间")
|
||||
private Date xtLrsj;
|
||||
|
||||
@ApiModelProperty(value = "录入人姓名")
|
||||
private String xtLrrxm;
|
||||
|
||||
@ApiModelProperty(value = "录入人ID")
|
||||
private String xtLrrid;
|
||||
|
||||
@ApiModelProperty(value = "录入人部门")
|
||||
private String xtLrrbm;
|
||||
|
||||
@ApiModelProperty(value = "录入人部门ID")
|
||||
private String xtLrrbmid;
|
||||
|
||||
@ApiModelProperty(value = "录入IP")
|
||||
private String xtLrip;
|
||||
|
||||
@ApiModelProperty(value = "最后修改时间")
|
||||
private Date xtZhxgsj;
|
||||
|
||||
@ApiModelProperty(value = "最后修改人姓名")
|
||||
private String xtZhxgrxm;
|
||||
|
||||
@ApiModelProperty(value = "最后修改人ID")
|
||||
private String xtZhxgrid;
|
||||
|
||||
@ApiModelProperty(value = "最后修改人部门")
|
||||
private String xtZhxgrbm;
|
||||
|
||||
@ApiModelProperty(value = "最后修改人部门ID")
|
||||
private String xtZhxgrbmid;
|
||||
|
||||
@ApiModelProperty(value = "最后修改IP")
|
||||
private String xtZhxgip;
|
||||
|
||||
@ApiModelProperty(value = "注销标志0正常 1.注销")
|
||||
private Integer xtZxbz;
|
||||
|
||||
@ApiModelProperty(value = "注销原因")
|
||||
private String xtZxyy;
|
||||
|
||||
|
||||
}
|
@ -0,0 +1,100 @@
|
||||
package com.mosty.common.config.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 版本管理表
|
||||
* </p>
|
||||
*
|
||||
* @author kevin
|
||||
* @since 2022-02-21
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
@Accessors(chain = true)
|
||||
@TableName("mosty_base.sys_version_manage")
|
||||
@ApiModel(value="SysVersionManage对象", description="版本管理表")
|
||||
public class SysVersionManage implements Serializable {
|
||||
|
||||
private static final long serialVersionUID=1L;
|
||||
|
||||
@ApiModelProperty(value = "主键")
|
||||
@TableId(value = "id", type = IdType.AUTO)
|
||||
private Long id;
|
||||
|
||||
@ApiModelProperty(value = "版本")
|
||||
private String sysVersion;
|
||||
|
||||
@ApiModelProperty(value = "发布时间")
|
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
private LocalDateTime publishTime;
|
||||
|
||||
@ApiModelProperty(value = "新增功能")
|
||||
private String addFunction;
|
||||
|
||||
@ApiModelProperty(value = "修复bug")
|
||||
private String fixBug;
|
||||
|
||||
@ApiModelProperty(value = "备注")
|
||||
private String bz;
|
||||
|
||||
@ApiModelProperty(value = "采集时间")
|
||||
private LocalDateTime xtCjsj;
|
||||
|
||||
@ApiModelProperty(value = "录入时间")
|
||||
private LocalDateTime xtLrsj;
|
||||
|
||||
@ApiModelProperty(value = "录入人姓名")
|
||||
private String xtLrrxm;
|
||||
|
||||
@ApiModelProperty(value = "录入人ID")
|
||||
private String xtLrrid;
|
||||
|
||||
@ApiModelProperty(value = "录入人部门")
|
||||
private String xtLrrbm;
|
||||
|
||||
@ApiModelProperty(value = "录入人部门ID")
|
||||
private String xtLrrbmid;
|
||||
|
||||
@ApiModelProperty(value = "录入IP")
|
||||
private String xtLrip;
|
||||
|
||||
@ApiModelProperty(value = "最后修改时间")
|
||||
private LocalDateTime xtZhxgsj;
|
||||
|
||||
@ApiModelProperty(value = "最后修改人姓名")
|
||||
private String xtZhxgrxm;
|
||||
|
||||
@ApiModelProperty(value = "最后修改人ID")
|
||||
private String xtZhxgrid;
|
||||
|
||||
@ApiModelProperty(value = "最后修改人部门")
|
||||
private String xtZhxgrbm;
|
||||
|
||||
@ApiModelProperty(value = "最后修改人部门ID")
|
||||
private String xtZhxgrbmid;
|
||||
|
||||
@ApiModelProperty(value = "最后修改IP")
|
||||
private String xtZhxgip;
|
||||
|
||||
@ApiModelProperty(value = "注销标志0正常 1.注销")
|
||||
private Integer xtZxbz;
|
||||
|
||||
@ApiModelProperty(value = "注销原因")
|
||||
private String xtZxyy;
|
||||
|
||||
|
||||
}
|
@ -0,0 +1,45 @@
|
||||
package com.mosty.common.config.entity.vo;
|
||||
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import javax.validation.constraints.NotNull;
|
||||
import javax.validation.constraints.Size;
|
||||
|
||||
/**
|
||||
* 添加字典信息请求
|
||||
* @author kevin
|
||||
* @date 2022/2/20 9:24 PM
|
||||
* @since 1.0.0
|
||||
*/
|
||||
@Data
|
||||
@Accessors(chain = true)
|
||||
public class AddDictItemVO {
|
||||
|
||||
@NotNull(message = "父节点id不能为空")
|
||||
@ApiModelProperty(value = "父id: 可能是字典表id,可能是字典明细表id")
|
||||
private Long parentId;
|
||||
|
||||
@ApiModelProperty(value = "字典编号", hidden = true)
|
||||
@Size(max = 50,message = "字典编码长度不能超过50")
|
||||
private String zdbh;
|
||||
|
||||
@ApiModelProperty(value = "字典名称")
|
||||
@Size(max = 100,message = "字典名称长度不能超过50")
|
||||
private String zdmc;
|
||||
|
||||
@ApiModelProperty(value = "字典代码")
|
||||
@Size(max = 50,message = "字典代码长度不能超过50")
|
||||
private String dm;
|
||||
|
||||
@ApiModelProperty(value = "字典拼音")
|
||||
private String py;
|
||||
|
||||
@ApiModelProperty(value = "排序字典:100在1前面,倒序")
|
||||
private Integer px;
|
||||
|
||||
@ApiModelProperty(value = "备注")
|
||||
private String bz;
|
||||
|
||||
}
|
@ -0,0 +1,38 @@
|
||||
package com.mosty.common.config.entity.vo;
|
||||
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import javax.validation.constraints.NotEmpty;
|
||||
import javax.validation.constraints.Size;
|
||||
|
||||
/**
|
||||
* 添加岗位信息对象
|
||||
* @author kevin
|
||||
* @date 2022/2/21 12:47 PM
|
||||
* @since 1.0.0
|
||||
*/
|
||||
@Data
|
||||
@Accessors(chain = true)
|
||||
public class AddPositionVO {
|
||||
|
||||
@NotEmpty(message = "岗位编码不能为空")
|
||||
@ApiModelProperty(value = "岗位编码")
|
||||
@Size(max = 30,message = "岗位编码长度不能超过50")
|
||||
private String postCode;
|
||||
|
||||
@NotEmpty(message = "岗位名称不能为空")
|
||||
@ApiModelProperty(value = "岗位名称")
|
||||
@Size(max = 30,message = "岗位名称长度不能超过50")
|
||||
private String postName;
|
||||
|
||||
@ApiModelProperty(value = "岗位描述")
|
||||
@Size(max = 200,message = "岗位描述长度不能超过50")
|
||||
private String postDesc;
|
||||
|
||||
@ApiModelProperty(value = "备注")
|
||||
@Size(max = 200,message = "备注长度不能超过50")
|
||||
private String bz;
|
||||
|
||||
}
|
@ -0,0 +1,49 @@
|
||||
package com.mosty.common.config.entity.vo;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import javax.validation.constraints.NotEmpty;
|
||||
import javax.validation.constraints.Size;
|
||||
import java.io.Serializable;
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* 添加系统配置对象
|
||||
* @author kevin
|
||||
* @date 2022/2/21 8:13 PM
|
||||
* @since 1.0.0
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
@Accessors(chain = true)
|
||||
@ApiModel(value = "添加系统配置对象")
|
||||
public class AddSysConfigVO implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@NotEmpty(message = "配置名称不能为空")
|
||||
@ApiModelProperty(value = "配置名称")
|
||||
@Size(max = 50,message = "配置名称不能超过50")
|
||||
private String pzmc;
|
||||
|
||||
@NotEmpty(message = "配置键不能为空")
|
||||
@ApiModelProperty(value = "配置键")
|
||||
@Size(max = 500,message = "配置键长度不能超过500")
|
||||
private String pzj;
|
||||
|
||||
@NotEmpty(message = "配置值不能为空")
|
||||
@ApiModelProperty(value = "配置值")
|
||||
@Size(max = 1000,message = "配置键长度不能超过1000")
|
||||
private String pzz;
|
||||
|
||||
@ApiModelProperty(value = "备注")
|
||||
@Size(max = 200,message = "备注长度不能超过200")
|
||||
private String bz;
|
||||
|
||||
}
|
@ -0,0 +1,49 @@
|
||||
package com.mosty.common.config.entity.vo;
|
||||
|
||||
import com.mosty.common.base.constant.enums.DictTypeEnum;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
import javax.validation.constraints.NotEmpty;
|
||||
import javax.validation.constraints.NotNull;
|
||||
import javax.validation.constraints.Size;
|
||||
|
||||
/**
|
||||
* 添加字典信息VO
|
||||
* @author kevin
|
||||
* @date 2022/2/9 8:20 PM
|
||||
* @since 1.0.0
|
||||
*/
|
||||
@Data
|
||||
public class AddSysDictVO {
|
||||
|
||||
@ApiModelProperty(value = "字典名称")
|
||||
@NotEmpty(message = "字典名称不能为空")
|
||||
@Size(max = 50,message = "字典名称长度不能超过50")
|
||||
private String zdmc;
|
||||
|
||||
/**
|
||||
* 字典类型
|
||||
*@see DictTypeEnum
|
||||
*/
|
||||
@NotNull(message = "字典类型不能为空")
|
||||
@ApiModelProperty(value = "是否树形字典:1、不是(列表) 2、树形")
|
||||
private Integer zdlx;
|
||||
|
||||
@ApiModelProperty(value = "字典业务类别")
|
||||
@Size(max = 2,message = "字典业务类别长度不能超过50")
|
||||
private String zdywlb;
|
||||
|
||||
@NotEmpty(message = "字典编号不能为空")
|
||||
@ApiModelProperty(value = "字典编号")
|
||||
@Size(max = 50,message = "字典编号长度不能超过50")
|
||||
private String zdbh;
|
||||
|
||||
@ApiModelProperty(value = "引用标准")
|
||||
private String yybz;
|
||||
|
||||
@ApiModelProperty(value = "备注")
|
||||
@Size(max = 200,message = "备注长度不能超过200")
|
||||
private String bz;
|
||||
|
||||
}
|
@ -0,0 +1,50 @@
|
||||
package com.mosty.common.config.entity.vo;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* 添加系统版本管理请求
|
||||
* @author kevin
|
||||
* @date 2022/2/21 9:06 PM
|
||||
* @since 1.0.0
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
@Accessors(chain = true)
|
||||
@ApiModel(value = "添加系统版本管理对象")
|
||||
public class AddVersionManageVO implements Serializable {
|
||||
|
||||
/** 序列化标识 */
|
||||
private static final long serialVersionUID = 8136954123595145099L;
|
||||
|
||||
@ApiModelProperty(value = "系统版本管理id")
|
||||
private Long id;
|
||||
|
||||
@ApiModelProperty(value = "版本")
|
||||
private String sysVersion;
|
||||
|
||||
@ApiModelProperty(value = "发布时间")
|
||||
private LocalDateTime publishTime;
|
||||
|
||||
@ApiModelProperty(value = "新增功能")
|
||||
private String addFunction;
|
||||
|
||||
@ApiModelProperty(value = "修复bug")
|
||||
private String fixBug;
|
||||
|
||||
@ApiModelProperty(value = "备注")
|
||||
private String bz;
|
||||
|
||||
}
|
@ -0,0 +1,29 @@
|
||||
package com.mosty.common.config.entity.vo;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
/**
|
||||
* 分页查询系统配置信息
|
||||
* @author kevin
|
||||
* @date 2022/2/9 8:53 PM
|
||||
* @since 1.0.0
|
||||
*/
|
||||
@Data
|
||||
@Accessors(chain = true)
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
public class ConfigPage extends Page {
|
||||
|
||||
/**
|
||||
* 配置名称
|
||||
*/
|
||||
private String configName;
|
||||
|
||||
/**
|
||||
* 配置键
|
||||
*/
|
||||
private String configKey;
|
||||
|
||||
}
|
@ -0,0 +1,24 @@
|
||||
package com.mosty.common.config.entity.vo;
|
||||
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import javax.validation.constraints.NotEmpty;
|
||||
import javax.validation.constraints.NotNull;
|
||||
import java.io.Serializable;
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
@Accessors(chain = true)
|
||||
@ApiModel(value = "删除VO")
|
||||
public class DeleteVO implements Serializable {
|
||||
@ApiModelProperty(value = "主键id")
|
||||
@NotNull(message = "主键id不能为空")
|
||||
private Long id;
|
||||
|
||||
@ApiModelProperty(value = "注销原因")
|
||||
@NotEmpty(message = "注销原因不能为空")
|
||||
private String zxyy;
|
||||
}
|
@ -0,0 +1,34 @@
|
||||
package com.mosty.common.config.entity.vo;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
/**
|
||||
* 分页查询字典信息
|
||||
* @author kevin
|
||||
* @date 2022/2/9 8:53 PM
|
||||
* @since 1.0.0
|
||||
*/
|
||||
@Data
|
||||
@Accessors(chain = true)
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
public class DictPage extends Page {
|
||||
|
||||
/**
|
||||
* 字典名称
|
||||
*/
|
||||
private String dictName;
|
||||
|
||||
/**
|
||||
* 字典编码
|
||||
*/
|
||||
private String dictCode;
|
||||
|
||||
/**
|
||||
* 删除标志
|
||||
*/
|
||||
private Integer xtZxbz;
|
||||
|
||||
}
|
@ -0,0 +1,42 @@
|
||||
package com.mosty.common.config.entity.vo;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import javax.validation.constraints.NotNull;
|
||||
|
||||
/**
|
||||
* 修改字典信息请求
|
||||
* @author kevin
|
||||
* @date 2022/2/20 9:24 PM
|
||||
* @since 1.0.0
|
||||
*/
|
||||
@Data
|
||||
@Accessors(chain = true)
|
||||
public class EditDictItemVO {
|
||||
|
||||
@NotNull(message = "主键id不能为空")
|
||||
@ApiModelProperty(value = "主键id")
|
||||
private Long id;
|
||||
|
||||
@ApiModelProperty(value = "字典编号")
|
||||
private String zdbh;
|
||||
|
||||
@ApiModelProperty(value = "字典名称")
|
||||
private String zdmc;
|
||||
|
||||
@ApiModelProperty(value = "字典代码")
|
||||
private String dm;
|
||||
|
||||
@ApiModelProperty(value = "字典拼音")
|
||||
private String py;
|
||||
|
||||
@ApiModelProperty(value = "排序字典:100在1前面,倒序")
|
||||
private Integer px;
|
||||
|
||||
@ApiModelProperty(value = "备注")
|
||||
private String bz;
|
||||
|
||||
}
|
@ -0,0 +1,38 @@
|
||||
package com.mosty.common.config.entity.vo;
|
||||
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import javax.validation.constraints.NotEmpty;
|
||||
import javax.validation.constraints.NotNull;
|
||||
|
||||
/**
|
||||
* 修改岗位信息对象
|
||||
* @author kevin
|
||||
* @date 2022/2/21 12:47 PM
|
||||
* @since 1.0.0
|
||||
*/
|
||||
@Data
|
||||
@Accessors(chain = true)
|
||||
public class EditPositionVO {
|
||||
|
||||
@NotNull(message = "岗位id不能为空")
|
||||
@ApiModelProperty(value = "主键id")
|
||||
private Long id;
|
||||
|
||||
@NotEmpty(message = "岗位编码不能为空")
|
||||
@ApiModelProperty(value = "岗位编码")
|
||||
private String postCode;
|
||||
|
||||
@NotEmpty(message = "岗位名称不能为空")
|
||||
@ApiModelProperty(value = "岗位名称")
|
||||
private String postName;
|
||||
|
||||
@ApiModelProperty(value = "岗位描述")
|
||||
private String postDesc;
|
||||
|
||||
@ApiModelProperty(value = "备注")
|
||||
private String bz;
|
||||
|
||||
}
|
@ -0,0 +1,47 @@
|
||||
package com.mosty.common.config.entity.vo;
|
||||
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import javax.validation.constraints.NotEmpty;
|
||||
import javax.validation.constraints.NotNull;
|
||||
import java.io.Serializable;
|
||||
|
||||
/**
|
||||
* 修改系统配置对象
|
||||
* @author kevin
|
||||
* @date 2022/2/21 8:13 PM
|
||||
* @since 1.0.0
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
@Accessors(chain = true)
|
||||
@ApiModel(value = "添加系统配置对象")
|
||||
public class EditSysConfigVO implements Serializable {
|
||||
|
||||
/** 序列化标识 */
|
||||
private static final long serialVersionUID = -3185962159720155709L;
|
||||
|
||||
@NotNull(message = "系统配置id不能为空")
|
||||
@ApiModelProperty("id")
|
||||
private Long id;
|
||||
|
||||
@NotEmpty(message = "配置名称不能为空")
|
||||
@ApiModelProperty(value = "配置名称")
|
||||
private String pzmc;
|
||||
|
||||
@NotEmpty(message = "配置键不能为空")
|
||||
@ApiModelProperty(value = "配置键")
|
||||
private String pzj;
|
||||
|
||||
@NotEmpty(message = "配置值不能为空")
|
||||
@ApiModelProperty(value = "配置值")
|
||||
private String pzz;
|
||||
|
||||
@ApiModelProperty(value = "备注")
|
||||
private String bz;
|
||||
|
||||
}
|
@ -0,0 +1,48 @@
|
||||
package com.mosty.common.config.entity.vo;
|
||||
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import javax.validation.constraints.NotNull;
|
||||
import java.io.Serializable;
|
||||
|
||||
/**
|
||||
* 修改字典明细信息
|
||||
* @author kevin
|
||||
* @date 2022/2/20 5:24 PM
|
||||
* @since 1.0.0
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
@Accessors(chain = true)
|
||||
@ApiModel(value = "字典明细信息")
|
||||
public class EditSysDictItemVO implements Serializable {
|
||||
|
||||
/**
|
||||
* 序列化标识
|
||||
*/
|
||||
private static final long serialVersionUID = -3202056339726922311L;
|
||||
|
||||
@NotNull(message = "主键id不能为空")
|
||||
@ApiModelProperty(value = "主键id")
|
||||
private Long id;
|
||||
|
||||
@ApiModelProperty(value = "字典编号")
|
||||
private String zdbh;
|
||||
|
||||
@ApiModelProperty(value = "字典名称")
|
||||
private String zdmc;
|
||||
|
||||
@ApiModelProperty(value = "字典代码")
|
||||
private String dm;
|
||||
|
||||
@ApiModelProperty(value = "字典拼音")
|
||||
private String py;
|
||||
|
||||
@ApiModelProperty(value = "备注")
|
||||
private String bz;
|
||||
|
||||
}
|
@ -0,0 +1,51 @@
|
||||
package com.mosty.common.config.entity.vo;
|
||||
|
||||
import com.mosty.common.base.constant.enums.DictTypeEnum;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
import javax.validation.constraints.NotEmpty;
|
||||
import javax.validation.constraints.NotNull;
|
||||
|
||||
/**
|
||||
* 修改字典信息VO
|
||||
* @author kevin
|
||||
* @date 2022/2/9 8:20 PM
|
||||
* @since 1.0.0
|
||||
*/
|
||||
@Data
|
||||
public class EditSysDictVO {
|
||||
|
||||
@NotNull(message = "字典id不能为空")
|
||||
@ApiModelProperty("字典id")
|
||||
private Long id;
|
||||
|
||||
@ApiModelProperty(value = "字典名称")
|
||||
@NotEmpty(message = "字典名称不能为空")
|
||||
private String zdmc;
|
||||
|
||||
/**
|
||||
* 字典类型
|
||||
*@see DictTypeEnum
|
||||
*/
|
||||
@NotNull(message = "字典类型不能为空")
|
||||
@ApiModelProperty(value = "是否树形字典:1、不是(列表) 2、树形")
|
||||
private Integer zdlx;
|
||||
|
||||
@ApiModelProperty(value = "字典业务类别")
|
||||
private String zdywlb;
|
||||
|
||||
@NotEmpty(message = "字典编号不能为空")
|
||||
@ApiModelProperty(value = "字典编号")
|
||||
private String zdbh;
|
||||
|
||||
@ApiModelProperty(value = "引用标准")
|
||||
private String yybz;
|
||||
|
||||
@ApiModelProperty(value = "备注")
|
||||
private String bz;
|
||||
|
||||
@ApiModelProperty(value = "注销标志0正常 1.注销")
|
||||
private Integer xtZxbz;
|
||||
|
||||
}
|
@ -0,0 +1,47 @@
|
||||
package com.mosty.common.config.entity.vo;
|
||||
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* 修改系统版本管理请求
|
||||
* @author kevin
|
||||
* @date 2022/2/21 9:06 PM
|
||||
* @since 1.0.0
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
@Accessors(chain = true)
|
||||
@ApiModel(value = "修改系统版本管理对象")
|
||||
public class EditVersionManageVO implements Serializable {
|
||||
|
||||
/** 序列化标识 */
|
||||
private static final long serialVersionUID = 4182901351269001103L;
|
||||
|
||||
@ApiModelProperty(value = "系统版本管理id")
|
||||
private Long id;
|
||||
|
||||
|
||||
@ApiModelProperty(value = "版本")
|
||||
private String sysVersion;
|
||||
|
||||
@ApiModelProperty(value = "发布时间")
|
||||
private LocalDateTime publishTime;
|
||||
|
||||
@ApiModelProperty(value = "新增功能")
|
||||
private String addFunction;
|
||||
|
||||
@ApiModelProperty(value = "修复bug")
|
||||
private String fixBug;
|
||||
|
||||
@ApiModelProperty(value = "备注")
|
||||
private String bz;
|
||||
|
||||
}
|
@ -0,0 +1,58 @@
|
||||
package com.mosty.common.config.entity.vo;
|
||||
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 字典明细
|
||||
* </p>
|
||||
*
|
||||
* @author kevin
|
||||
* @since 2022-02-09
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
@Accessors(chain = true)
|
||||
@ApiModel(value="字典信息", description="字典代码值表")
|
||||
public class SysDictItemVO implements Serializable {
|
||||
|
||||
private static final long serialVersionUID=1L;
|
||||
|
||||
/**
|
||||
* 字典明细信息
|
||||
*/
|
||||
@ApiModelProperty(value = "字典明细信息")
|
||||
private List<SysDictItemVO> itemList;
|
||||
|
||||
@ApiModelProperty(value = "主键id")
|
||||
private Long id;
|
||||
|
||||
@ApiModelProperty(value = "字典上级编号")
|
||||
private Long zdId;
|
||||
|
||||
@ApiModelProperty(value = "字典编号")
|
||||
private String zdbh;
|
||||
|
||||
@ApiModelProperty(value = "字典名称")
|
||||
private String zdmc;
|
||||
|
||||
@ApiModelProperty(value = "字典代码")
|
||||
private String dm;
|
||||
|
||||
@ApiModelProperty(value = "字典拼音")
|
||||
private String py;
|
||||
|
||||
@ApiModelProperty(value = "排序字典:100在1前面,倒序")
|
||||
private Integer px;
|
||||
|
||||
@ApiModelProperty(value = "备注")
|
||||
private String bz;
|
||||
|
||||
}
|
@ -0,0 +1,26 @@
|
||||
package com.mosty.common.config.entity.vo;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
/**
|
||||
* 根据字典编号查询字典信息
|
||||
* @author kevin
|
||||
* @date 2022/2/9 8:53 PM
|
||||
* @since 1.0.0
|
||||
*/
|
||||
@Data
|
||||
@Accessors(chain = true)
|
||||
@EqualsAndHashCode
|
||||
public class SysDictQueryPage extends Page implements Serializable {
|
||||
|
||||
// 字典编码
|
||||
private String dictCode;
|
||||
|
||||
// 字典名称
|
||||
private String zdmc;
|
||||
}
|
@ -0,0 +1,26 @@
|
||||
package com.mosty.common.config.entity.vo;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
/**
|
||||
* 根据字典编号查询字典信息
|
||||
* @author kevin
|
||||
* @date 2022/2/9 8:53 PM
|
||||
* @since 1.0.0
|
||||
*/
|
||||
@Data
|
||||
@Accessors(chain = true)
|
||||
@EqualsAndHashCode
|
||||
public class SysDictQueryVo implements Serializable {
|
||||
|
||||
// 字典编码
|
||||
private String dictCode;
|
||||
|
||||
// 字典名称
|
||||
private String zdmc;
|
||||
}
|
@ -0,0 +1,43 @@
|
||||
package com.mosty.common.config.entity.vo;
|
||||
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 字典信息VO
|
||||
* @author kevin
|
||||
* @date 2022/2/9 8:20 PM
|
||||
* @since 1.0.0
|
||||
*/
|
||||
@Data
|
||||
public class SysDictVO {
|
||||
|
||||
/**
|
||||
* 字典明细信息
|
||||
*/
|
||||
private List<SysDictItemVO> itemList;
|
||||
|
||||
@ApiModelProperty(value = "主键id")
|
||||
private Long id;
|
||||
|
||||
@ApiModelProperty(value = "字典名称")
|
||||
private String zdmc;
|
||||
|
||||
@ApiModelProperty(value = "是否树形字典:1、不是(列表) 2、树形")
|
||||
private Integer zdlx;
|
||||
|
||||
@ApiModelProperty(value = "字典业务类别")
|
||||
private String zdywlb;
|
||||
|
||||
@ApiModelProperty(value = "字典编号")
|
||||
private String zdbh;
|
||||
|
||||
@ApiModelProperty(value = "引用标准")
|
||||
private String yybz;
|
||||
|
||||
@ApiModelProperty(value = "备注")
|
||||
private String bz;
|
||||
|
||||
}
|
@ -0,0 +1,34 @@
|
||||
package com.mosty.common.config.entity.vo;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
/**
|
||||
* 版本管理分页请求
|
||||
* @author kevin
|
||||
* @date 2022/2/9 8:53 PM
|
||||
* @since 1.0.0
|
||||
*/
|
||||
@Data
|
||||
@Accessors(chain = true)
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
public class VersionManagePage extends Page {
|
||||
|
||||
/**
|
||||
* 版本
|
||||
*/
|
||||
private String sysVersion;
|
||||
|
||||
/**
|
||||
* 发布开始时间
|
||||
*/
|
||||
private String startPublishTime;
|
||||
|
||||
/**
|
||||
* 发布结束时间
|
||||
*/
|
||||
private String endPublishTime;
|
||||
|
||||
}
|
@ -0,0 +1,16 @@
|
||||
package com.mosty.common.config.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.mosty.common.config.entity.SysConfig;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 参数配置表 Mapper 接口
|
||||
* </p>
|
||||
*
|
||||
* @author kevin
|
||||
* @since 2022-02-10
|
||||
*/
|
||||
public interface SysConfigMapper extends BaseMapper<SysConfig> {
|
||||
|
||||
}
|
@ -0,0 +1,16 @@
|
||||
package com.mosty.common.config.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.mosty.common.config.entity.SysDictItem;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 字典代码值表 Mapper 接口
|
||||
* </p>
|
||||
*
|
||||
* @author kevin
|
||||
* @since 2022-02-09
|
||||
*/
|
||||
public interface SysDictItemMapper extends BaseMapper<SysDictItem> {
|
||||
|
||||
}
|
@ -0,0 +1,21 @@
|
||||
package com.mosty.common.config.mapper;
|
||||
|
||||
//import cn.hutool.db.Page;
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.mosty.common.config.entity.SysDict;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 字典类别配置表 Mapper 接口
|
||||
* </p>
|
||||
*
|
||||
* @author kevin
|
||||
* @since 2022-02-09
|
||||
*/
|
||||
public interface SysDictMapper extends BaseMapper<SysDict> {
|
||||
|
||||
// IPage<SysDict> selectByPage(Page page);
|
||||
|
||||
}
|
@ -0,0 +1,16 @@
|
||||
package com.mosty.common.config.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.mosty.common.config.entity.SysVersionManage;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 版本管理表 Mapper 接口
|
||||
* </p>
|
||||
*
|
||||
* @author kevin
|
||||
* @since 2022-02-21
|
||||
*/
|
||||
public interface SysVersionManageMapper extends BaseMapper<SysVersionManage> {
|
||||
|
||||
}
|
@ -0,0 +1,29 @@
|
||||
package com.mosty.common.config.service;
|
||||
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.mosty.common.base.constant.enums.ConfigKeyEnum;
|
||||
import com.mosty.common.config.entity.SysConfig;
|
||||
import com.mosty.common.config.entity.SysDict;
|
||||
import com.mosty.common.config.entity.vo.ConfigPage;
|
||||
import com.mosty.common.config.entity.vo.DictPage;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 参数配置表 服务类
|
||||
* </p>
|
||||
*
|
||||
* @author kevin
|
||||
* @since 2022-02-10
|
||||
*/
|
||||
public interface SysConfigService extends IService<SysConfig> {
|
||||
|
||||
IPage<SysConfig> selectByPage(ConfigPage page);
|
||||
|
||||
/**
|
||||
* 根据配制键获取值
|
||||
* @param passwordLevel
|
||||
* @return
|
||||
*/
|
||||
SysConfig getOneByKey(ConfigKeyEnum passwordLevel);
|
||||
}
|
@ -0,0 +1,26 @@
|
||||
package com.mosty.common.config.service;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.mosty.common.config.entity.SysDictItem;
|
||||
import com.mosty.common.config.entity.vo.AddDictItemVO;
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 字典代码值表 服务类
|
||||
* </p>
|
||||
*
|
||||
* @author kevin
|
||||
* @since 2022-02-09
|
||||
*/
|
||||
public interface SysDictItemService extends IService<SysDictItem> {
|
||||
|
||||
/**
|
||||
* 添加字典明细信息
|
||||
* @param addDictItemVo 待添加的信息
|
||||
* @param rootPath 父根节点开始的路口,当前还不包含自己的id
|
||||
* @param ipAddress ip地址
|
||||
*/
|
||||
void addSysDictItem(AddDictItemVO addDictItemVo, String rootPath, String ipAddress);
|
||||
|
||||
}
|
@ -0,0 +1,21 @@
|
||||
package com.mosty.common.config.service;
|
||||
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.mosty.common.config.entity.SysDict;
|
||||
import com.mosty.common.config.entity.vo.DictPage;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 字典类别配置表 服务类
|
||||
* </p>
|
||||
*
|
||||
* @author kevin
|
||||
* @since 2022-02-09
|
||||
*/
|
||||
public interface SysDictService extends IService<SysDict> {
|
||||
|
||||
IPage<SysDict> selectByPage(DictPage page);
|
||||
|
||||
}
|
@ -0,0 +1,25 @@
|
||||
package com.mosty.common.config.service;
|
||||
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.mosty.common.config.entity.SysVersionManage;
|
||||
import com.mosty.common.config.entity.vo.VersionManagePage;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 版本管理表 服务类
|
||||
* </p>
|
||||
*
|
||||
* @author kevin
|
||||
* @since 2022-02-21
|
||||
*/
|
||||
public interface SysVersionManageService extends IService<SysVersionManage> {
|
||||
|
||||
/**
|
||||
* 版本管理功能分页
|
||||
* @param versionManagePage 分页请求
|
||||
* @return 分页数据
|
||||
*/
|
||||
IPage<SysVersionManage> selectByPage(VersionManagePage versionManagePage);
|
||||
|
||||
}
|
@ -0,0 +1,56 @@
|
||||
package com.mosty.common.config.service.impl;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.mosty.common.base.constant.enums.ConfigKeyEnum;
|
||||
import com.mosty.common.base.constant.enums.DeletedEnum;
|
||||
import com.mosty.common.config.entity.SysConfig;
|
||||
import com.mosty.common.config.entity.SysDict;
|
||||
import com.mosty.common.config.entity.vo.ConfigPage;
|
||||
import com.mosty.common.config.entity.vo.DictPage;
|
||||
import com.mosty.common.config.mapper.SysConfigMapper;
|
||||
import com.mosty.common.config.mapper.SysDictMapper;
|
||||
import com.mosty.common.config.service.SysConfigService;
|
||||
import lombok.AllArgsConstructor;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 参数配置表 服务实现类
|
||||
* </p>
|
||||
*
|
||||
* @author kevin
|
||||
* @since 2022-02-10
|
||||
*/
|
||||
@Service
|
||||
@AllArgsConstructor
|
||||
public class SysConfigServiceImpl extends ServiceImpl<SysConfigMapper, SysConfig> implements SysConfigService {
|
||||
|
||||
private final SysConfigMapper sysConfigMapper;
|
||||
|
||||
@Override
|
||||
public IPage<SysConfig> selectByPage(ConfigPage page) {
|
||||
QueryWrapper<SysConfig> queryWrapper = new QueryWrapper<>();
|
||||
if (StringUtils.isNotBlank(page.getConfigName())) {
|
||||
queryWrapper.and(wrapper -> wrapper.like("pzmc", page.getConfigName()));
|
||||
}
|
||||
if (StringUtils.isNotBlank(page.getConfigKey())) {
|
||||
queryWrapper.and(wrapper -> wrapper.eq("pzj", page.getConfigKey()));
|
||||
}
|
||||
queryWrapper.and(wrapper -> wrapper.eq("xt_zxbz", DeletedEnum.NATURE.code));
|
||||
// LambdaQueryWrapper<SysConfig> eq = new LambdaQueryWrapper<SysConfig>().eq(SysConfig::getPzmc, page.getConfigName());
|
||||
return getBaseMapper().selectPage(page, queryWrapper);
|
||||
}
|
||||
|
||||
@Override
|
||||
public SysConfig getOneByKey(ConfigKeyEnum passwordLevel) {
|
||||
SysConfig one = this.getOne(new LambdaQueryWrapper<SysConfig>().eq(SysConfig::getPzj, passwordLevel.code)
|
||||
.eq(SysConfig::getXtZxbz, DeletedEnum.NATURE.code));
|
||||
return one;
|
||||
}
|
||||
|
||||
|
||||
}
|
@ -0,0 +1,101 @@
|
||||
package com.mosty.common.config.service.impl;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.mosty.common.base.constant.enums.DeletedEnum;
|
||||
import com.mosty.common.config.Excel.DictUtils;
|
||||
import com.mosty.common.base.exception.Asserts;
|
||||
import com.mosty.common.config.entity.SysDictItem;
|
||||
import com.mosty.common.config.entity.vo.AddDictItemVO;
|
||||
import com.mosty.common.config.mapper.SysDictItemMapper;
|
||||
import com.mosty.common.config.service.SysDictItemService;
|
||||
import com.mosty.common.token.UserInfo;
|
||||
import com.mosty.common.token.UserInfoManager;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.collections.CollectionUtils;
|
||||
import org.apache.commons.lang3.ObjectUtils;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import javax.annotation.PostConstruct;
|
||||
import java.util.Comparator;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 字典代码值表 服务实现类
|
||||
* </p>
|
||||
*
|
||||
* @author kevin
|
||||
* @since 2022-02-09
|
||||
*/
|
||||
@Slf4j
|
||||
@Service
|
||||
@AllArgsConstructor
|
||||
public class SysDictItemServiceImpl extends ServiceImpl<SysDictItemMapper, SysDictItem> implements SysDictItemService {
|
||||
|
||||
private final SysDictItemMapper sysDictItemMapper;
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void addSysDictItem(AddDictItemVO addDictItemVo, String rootPath, String ipAddress) {
|
||||
SysDictItem one = sysDictItemMapper.selectOne(new LambdaQueryWrapper<SysDictItem>()
|
||||
.eq(SysDictItem::getZdbh, addDictItemVo.getZdbh())
|
||||
.eq(SysDictItem::getDm, addDictItemVo.getDm())
|
||||
.eq(SysDictItem::getXtZxbz, "0")
|
||||
);
|
||||
Asserts.check(one != null, "当前字典编码 %s 下的字典代码 %s 已经存在!",
|
||||
addDictItemVo.getZdbh(), addDictItemVo.getDm());
|
||||
SysDictItem sysDictItem = new SysDictItem();
|
||||
sysDictItem.setRootPath(rootPath);
|
||||
sysDictItem.setZdId(addDictItemVo.getParentId());
|
||||
|
||||
sysDictItem.setZdmc(addDictItemVo.getZdmc());
|
||||
sysDictItem.setPy(addDictItemVo.getPy());
|
||||
sysDictItem.setPx(addDictItemVo.getPx());
|
||||
sysDictItem.setBz(addDictItemVo.getBz());
|
||||
sysDictItem.setDm(addDictItemVo.getDm());
|
||||
sysDictItem.setZdbh(addDictItemVo.getZdbh());
|
||||
|
||||
UserInfo userInfo = UserInfoManager.get();
|
||||
sysDictItem.setXtZxbz(DeletedEnum.NATURE.code);
|
||||
|
||||
sysDictItem.setXtCjsj(new Date());
|
||||
sysDictItem.setXtZhxgsj(new Date());
|
||||
sysDictItem.setXtZhxgrid(userInfo.getUserId().toString());
|
||||
sysDictItem.setXtZhxgrxm(userInfo.getUserName());
|
||||
sysDictItem.setXtZhxgrbmid(userInfo.getDeptId().toString());
|
||||
sysDictItem.setXtZhxgrbm(userInfo.getDeptName());
|
||||
|
||||
sysDictItem.setXtLrsj(new Date());
|
||||
sysDictItem.setXtLrrid(userInfo.getUserId().toString());
|
||||
sysDictItem.setXtLrrxm(userInfo.getUserName());
|
||||
sysDictItem.setXtLrrbmid(userInfo.getDeptId().toString());
|
||||
sysDictItem.setXtLrrbm(userInfo.getDeptName());
|
||||
|
||||
sysDictItem.setXtLrip(ipAddress);
|
||||
sysDictItem.setXtZhxgip(ipAddress);
|
||||
// 先保存信息,返回当前的主键id
|
||||
sysDictItemMapper.insert(sysDictItem);
|
||||
|
||||
// 根据主键id,修改rootPath
|
||||
SysDictItem updateEntity = new SysDictItem();
|
||||
updateEntity.setRootPath(sysDictItem.getRootPath() + sysDictItem.getId());
|
||||
updateEntity.setId(sysDictItem.getId());
|
||||
int row = sysDictItemMapper.updateById(updateEntity);
|
||||
if (row > 0) {
|
||||
List<SysDictItem> dictDatas = sysDictItemMapper.selectList(new LambdaQueryWrapper<SysDictItem>()
|
||||
.eq(SysDictItem::getXtZxbz, 0)
|
||||
.eq(SysDictItem::getZdbh, sysDictItem.getZdbh())
|
||||
);
|
||||
DictUtils.setDictCache(sysDictItem.getZdbh(), dictDatas);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,43 @@
|
||||
package com.mosty.common.config.service.impl;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.mosty.common.config.entity.SysDict;
|
||||
import com.mosty.common.config.entity.vo.DictPage;
|
||||
import com.mosty.common.config.mapper.SysDictMapper;
|
||||
import com.mosty.common.config.service.SysDictService;
|
||||
import lombok.AllArgsConstructor;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 字典类别配置表 服务实现类
|
||||
* </p>
|
||||
*
|
||||
* @author kevin
|
||||
* @since 2022-02-09
|
||||
*/
|
||||
@Service
|
||||
@AllArgsConstructor
|
||||
public class SysDictServiceImpl extends ServiceImpl<SysDictMapper, SysDict> implements SysDictService {
|
||||
|
||||
private final SysDictMapper sysDictMapper;
|
||||
|
||||
@Override
|
||||
public IPage<SysDict> selectByPage(DictPage page) {
|
||||
QueryWrapper<SysDict> queryWrapper = new QueryWrapper<>();
|
||||
if (StringUtils.isNotBlank(page.getDictName())) {
|
||||
queryWrapper.and(wrapper -> wrapper.like("zdmc", page.getDictName()));
|
||||
}
|
||||
if (StringUtils.isNotBlank(page.getDictCode())) {
|
||||
queryWrapper.and(wrapper -> wrapper.like("zdbh", page.getDictCode()));
|
||||
}
|
||||
if (page.getXtZxbz() != null) {
|
||||
queryWrapper.and(wrapper -> wrapper.eq("xt_zxbz", page.getXtZxbz()));
|
||||
}
|
||||
return getBaseMapper().selectPage(page, queryWrapper);
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,46 @@
|
||||
package com.mosty.common.config.service.impl;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.mosty.common.base.constant.enums.DeletedEnum;
|
||||
import com.mosty.common.config.entity.SysDict;
|
||||
import com.mosty.common.config.entity.SysVersionManage;
|
||||
import com.mosty.common.config.entity.vo.VersionManagePage;
|
||||
import com.mosty.common.config.mapper.SysVersionManageMapper;
|
||||
import com.mosty.common.config.service.SysVersionManageService;
|
||||
import lombok.AllArgsConstructor;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 版本管理表 服务实现类
|
||||
* </p>
|
||||
*
|
||||
* @author kevin
|
||||
* @since 2022-02-21
|
||||
*/
|
||||
@Service
|
||||
@AllArgsConstructor
|
||||
public class SysVersionManageServiceImpl extends ServiceImpl<SysVersionManageMapper, SysVersionManage> implements SysVersionManageService {
|
||||
|
||||
private final SysVersionManageMapper sysVersionManageMapper;
|
||||
|
||||
@Override
|
||||
public IPage<SysVersionManage> selectByPage(VersionManagePage versionManagePage) {
|
||||
QueryWrapper<SysVersionManage> queryWrapper = new QueryWrapper<>();
|
||||
if (StringUtils.isNotBlank(versionManagePage.getSysVersion())) {
|
||||
queryWrapper.and(wrapper -> wrapper.like("sys_version", versionManagePage.getSysVersion()));
|
||||
}
|
||||
if (StringUtils.isNotBlank(versionManagePage.getStartPublishTime())) {
|
||||
queryWrapper.and(wrapper -> wrapper.gt("publish_time", versionManagePage.getStartPublishTime()));
|
||||
}
|
||||
if (StringUtils.isNotBlank(versionManagePage.getEndPublishTime())) {
|
||||
queryWrapper.and(wrapper -> wrapper.le("publish_time", versionManagePage.getEndPublishTime()));
|
||||
}
|
||||
queryWrapper.and(wrapper -> wrapper.le("xt_zxbz", DeletedEnum.NATURE.code));
|
||||
queryWrapper.orderByDesc("publish_time");
|
||||
return getBaseMapper().selectPage(versionManagePage, queryWrapper);
|
||||
}
|
||||
}
|
@ -0,0 +1,5 @@
|
||||
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
|
||||
com.mosty.common.config.CommonConfigAutoConfiguration,\
|
||||
com.mosty.common.config.ConfigServiceFactory,\
|
||||
com.mosty.common.config.config.DictElementConfig,\
|
||||
com.mosty.common.config.config.SystemConfig
|
@ -0,0 +1,5 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="com.mosty.common.config.mapper.SysConfigMapper">
|
||||
|
||||
</mapper>
|
@ -0,0 +1,5 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="com.mosty.common.config.mapper.SysDictItemMapper">
|
||||
|
||||
</mapper>
|
@ -0,0 +1,17 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="com.mosty.common.config.mapper.SysDictMapper">
|
||||
|
||||
<select id="selectByPage" resultType="com.mosty.common.config.entity.SysDict" parameterType="com.mosty.common.config.entity.vo.DictPage">
|
||||
select * FROM sys_dict
|
||||
<where>
|
||||
<if test="dictName != null and dictName != '' ">
|
||||
zdmc like CONCAT('%',#{dictName,jdbcType=VARCHAR},'%')
|
||||
</if>
|
||||
<if test="dictCode != null and dictCode != '' ">
|
||||
zdmc = #{dictCode}
|
||||
</if>
|
||||
</where>
|
||||
</select>
|
||||
|
||||
</mapper>
|
@ -0,0 +1,5 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="com.mosty.common.config.mapper.SysVersionManageMapper">
|
||||
|
||||
</mapper>
|
Reference in New Issue
Block a user