不动产登记档案系统
0 parents
Showing
24 changed files
with
2338 additions
and
0 deletions
.gitignore
0 → 100644
pom.xml
0 → 100644
| 1 | <?xml version="1.0" encoding="UTF-8"?> | ||
| 2 | <project xmlns="http://maven.apache.org/POM/4.0.0" | ||
| 3 | xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" | ||
| 4 | xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> | ||
| 5 | <modelVersion>4.0.0</modelVersion> | ||
| 6 | |||
| 7 | <groupId>com.pashanhoo</groupId> | ||
| 8 | <artifactId>archive-system</artifactId> | ||
| 9 | <version>1.0-SNAPSHOT</version> | ||
| 10 | |||
| 11 | <dependencies> | ||
| 12 | <!-- --> | ||
| 13 | <dependency> | ||
| 14 | <groupId>com.fasterxml.jackson.core</groupId> | ||
| 15 | <artifactId>jackson-databind</artifactId> | ||
| 16 | <version>${fasterxml.jackson.version}</version> | ||
| 17 | </dependency> | ||
| 18 | |||
| 19 | <dependency> | ||
| 20 | <groupId>com.fasterxml.jackson.core</groupId> | ||
| 21 | <artifactId>jackson-core</artifactId> | ||
| 22 | <version>${fasterxml.jackson.version}</version> | ||
| 23 | </dependency> | ||
| 24 | <dependency> | ||
| 25 | <groupId>org.springframework.boot</groupId> | ||
| 26 | <artifactId>spring-boot</artifactId> | ||
| 27 | <version>${org.spring.boot.version}</version> | ||
| 28 | </dependency> | ||
| 29 | <dependency> | ||
| 30 | <groupId>org.freemarker</groupId> | ||
| 31 | <artifactId>freemarker</artifactId> | ||
| 32 | <version>2.3.29</version> | ||
| 33 | </dependency> | ||
| 34 | <dependency> | ||
| 35 | <groupId>junit</groupId> | ||
| 36 | <artifactId>junit</artifactId> | ||
| 37 | <version>4.12</version> | ||
| 38 | </dependency> | ||
| 39 | <dependency> | ||
| 40 | <groupId>org.slf4j</groupId> | ||
| 41 | <artifactId>slf4j-api</artifactId> | ||
| 42 | <version>1.7.29</version> | ||
| 43 | </dependency> | ||
| 44 | |||
| 45 | <dependency> | ||
| 46 | <groupId>com.baomidou</groupId> | ||
| 47 | <artifactId>mybatis-plus-boot-starter</artifactId> | ||
| 48 | <version>3.1.2</version> | ||
| 49 | </dependency> | ||
| 50 | <dependency> | ||
| 51 | <groupId>com.baomidou</groupId> | ||
| 52 | <artifactId>mybatis-plus-generator</artifactId> | ||
| 53 | <version>3.3.2</version> | ||
| 54 | </dependency> | ||
| 55 | |||
| 56 | <dependency> | ||
| 57 | <groupId>org.springframework</groupId> | ||
| 58 | <artifactId>spring-web</artifactId> | ||
| 59 | <version>${org.springframework.version}</version> | ||
| 60 | </dependency> | ||
| 61 | <dependency> | ||
| 62 | <groupId>org.springframework.boot</groupId> | ||
| 63 | <artifactId>spring-boot-starter-web</artifactId> | ||
| 64 | <version>${org.spring.boot.version}</version> | ||
| 65 | </dependency> | ||
| 66 | |||
| 67 | <!--<dependency>--> | ||
| 68 | <!-- <groupId>org.springframework.session</groupId>--> | ||
| 69 | <!-- <artifactId>spring-session-data-redis</artifactId>--> | ||
| 70 | <!-- <version>${org.spring.session.version}</version>--> | ||
| 71 | <!--</dependency>--> | ||
| 72 | <!--<!– 引入Redis依赖 –>--> | ||
| 73 | <!--<dependency>--> | ||
| 74 | <!-- <groupId>org.springframework.boot</groupId>--> | ||
| 75 | <!-- <artifactId>spring-boot-starter-data-redis</artifactId>--> | ||
| 76 | <!-- <version>${org.spring.boot.version}</version>--> | ||
| 77 | <!--</dependency>--> | ||
| 78 | <!--<dependency>--> | ||
| 79 | <!-- <groupId>redis.clients</groupId>--> | ||
| 80 | <!-- <artifactId>jedis</artifactId>--> | ||
| 81 | <!-- <version>2.9.3</version>--> | ||
| 82 | <!--</dependency>--> | ||
| 83 | <!--<dependency>--> | ||
| 84 | <!-- <groupId>org.springframework.session</groupId>--> | ||
| 85 | <!-- <artifactId>spring-session</artifactId>--> | ||
| 86 | <!-- <version>1.0.2.RELEASE</version>--> | ||
| 87 | <!--</dependency>--> | ||
| 88 | <dependency> | ||
| 89 | <groupId>io.lettuce</groupId> | ||
| 90 | <artifactId>lettuce-core</artifactId> | ||
| 91 | <version>5.2.0.RELEASE</version> | ||
| 92 | </dependency> | ||
| 93 | <dependency> | ||
| 94 | <groupId>org.springframework.boot</groupId> | ||
| 95 | <artifactId>spring-boot-starter-test</artifactId> | ||
| 96 | <version>2.1.12.RELEASE</version> | ||
| 97 | </dependency> | ||
| 98 | |||
| 99 | <!-- Swagger API文档 --> | ||
| 100 | <dependency> | ||
| 101 | <groupId>io.springfox</groupId> | ||
| 102 | <artifactId>springfox-swagger2</artifactId> | ||
| 103 | <version>${springfox.swagger2.version}</version> | ||
| 104 | </dependency> | ||
| 105 | <dependency> | ||
| 106 | <groupId>io.springfox</groupId> | ||
| 107 | <artifactId>springfox-swagger-ui</artifactId> | ||
| 108 | <version>${springfox.swagger2.version}</version> | ||
| 109 | <exclusions> | ||
| 110 | <exclusion> | ||
| 111 | <groupId>io.swagger</groupId> | ||
| 112 | <artifactId>swagger-models</artifactId> | ||
| 113 | </exclusion> | ||
| 114 | </exclusions> | ||
| 115 | </dependency> | ||
| 116 | <dependency> | ||
| 117 | <groupId>io.swagger</groupId> | ||
| 118 | <artifactId>swagger-models</artifactId> | ||
| 119 | <version>1.5.21</version> | ||
| 120 | </dependency> | ||
| 121 | |||
| 122 | <dependency> | ||
| 123 | <groupId>com.spring4all</groupId> | ||
| 124 | <artifactId>swagger-spring-boot-starter</artifactId> | ||
| 125 | <version>1.9.1.RELEASE</version> | ||
| 126 | </dependency> | ||
| 127 | |||
| 128 | <dependency> | ||
| 129 | <groupId>org.projectlombok</groupId> | ||
| 130 | <artifactId>lombok</artifactId> | ||
| 131 | <optional>true</optional> | ||
| 132 | <version>1.18.8</version> | ||
| 133 | </dependency> | ||
| 134 | |||
| 135 | <dependency> | ||
| 136 | <groupId>io.swagger</groupId> | ||
| 137 | <artifactId>swagger-annotations</artifactId> | ||
| 138 | <version>1.5.13</version> | ||
| 139 | <scope>compile</scope> | ||
| 140 | </dependency> | ||
| 141 | |||
| 142 | <dependency> | ||
| 143 | <groupId>com.google.guava</groupId> | ||
| 144 | <artifactId>guava</artifactId> | ||
| 145 | <version>20.0</version> | ||
| 146 | <scope>compile</scope> | ||
| 147 | </dependency> | ||
| 148 | <dependency> | ||
| 149 | <groupId>commons-collections</groupId> | ||
| 150 | <artifactId>commons-collections</artifactId> | ||
| 151 | <version>3.2.2</version> | ||
| 152 | </dependency> | ||
| 153 | <dependency> | ||
| 154 | <groupId>commons-codec</groupId> | ||
| 155 | <artifactId>commons-codec</artifactId> | ||
| 156 | <version>1.10</version> | ||
| 157 | </dependency> | ||
| 158 | <dependency> | ||
| 159 | <groupId>commons-beanutils</groupId> | ||
| 160 | <artifactId>commons-beanutils</artifactId> | ||
| 161 | <version>1.9.3</version> | ||
| 162 | </dependency> | ||
| 163 | <dependency> | ||
| 164 | <groupId>javax.validation</groupId> | ||
| 165 | <artifactId>validation-api</artifactId> | ||
| 166 | <version>2.0.1.Final</version> | ||
| 167 | </dependency> | ||
| 168 | <dependency> | ||
| 169 | <groupId>org.hibernate</groupId> | ||
| 170 | <artifactId>hibernate-validator</artifactId> | ||
| 171 | <version>5.2.4.Final</version> | ||
| 172 | </dependency> | ||
| 173 | |||
| 174 | <dependency> | ||
| 175 | <groupId>com.github.pagehelper</groupId> | ||
| 176 | <artifactId>pagehelper-spring-boot-starter</artifactId> | ||
| 177 | <version>1.2.5</version> | ||
| 178 | </dependency> | ||
| 179 | <dependency> | ||
| 180 | <groupId>org.springframework.boot</groupId> | ||
| 181 | <artifactId>spring-boot-starter-aop</artifactId> | ||
| 182 | <version>${org.spring.boot.version}</version> | ||
| 183 | </dependency> | ||
| 184 | <dependency> | ||
| 185 | <groupId>org.aspectj</groupId> | ||
| 186 | <artifactId>aspectjweaver</artifactId> | ||
| 187 | <version>1.9.4</version> | ||
| 188 | </dependency> | ||
| 189 | <dependency> | ||
| 190 | <groupId>com.alibaba</groupId> | ||
| 191 | <artifactId>fastjson</artifactId> | ||
| 192 | <version>1.2.60</version> | ||
| 193 | </dependency> | ||
| 194 | <dependency> | ||
| 195 | <groupId>org.springframework.data</groupId> | ||
| 196 | <artifactId>spring-data-redis</artifactId> | ||
| 197 | <version>2.1.10.RELEASE</version> | ||
| 198 | <scope>compile</scope> | ||
| 199 | </dependency> | ||
| 200 | |||
| 201 | <dependency> | ||
| 202 | <groupId>com.baomidou</groupId> | ||
| 203 | <artifactId>mybatis-plus-annotation</artifactId> | ||
| 204 | <version>3.3.2</version> | ||
| 205 | <scope>compile</scope> | ||
| 206 | </dependency> | ||
| 207 | <dependency> | ||
| 208 | <groupId>com.baomidou</groupId> | ||
| 209 | <artifactId>mybatis-plus-core</artifactId> | ||
| 210 | <version>3.3.2</version> | ||
| 211 | <scope>compile</scope> | ||
| 212 | </dependency> | ||
| 213 | <dependency> | ||
| 214 | <groupId>org.mapstruct</groupId> | ||
| 215 | <artifactId>mapstruct-jdk8</artifactId> | ||
| 216 | <version>${mapstruct.version}</version> | ||
| 217 | </dependency> | ||
| 218 | <dependency> | ||
| 219 | <groupId>org.mapstruct</groupId> | ||
| 220 | <artifactId>mapstruct-processor</artifactId> | ||
| 221 | <version>${mapstruct.version}</version> | ||
| 222 | </dependency> | ||
| 223 | <!--<dependency>--> | ||
| 224 | <!-- <groupId>polaris</groupId>--> | ||
| 225 | <!-- <artifactId>polaris-fileattachment</artifactId>--> | ||
| 226 | <!-- <version>1.0</version>--> | ||
| 227 | <!-- <scope>compile</scope>--> | ||
| 228 | <!--</dependency>--> | ||
| 229 | <dependency> | ||
| 230 | <groupId>io.minio</groupId> | ||
| 231 | <artifactId>minio</artifactId> | ||
| 232 | <version>6.0.11</version> | ||
| 233 | </dependency> | ||
| 234 | |||
| 235 | <dependency> | ||
| 236 | <groupId>com.google.zxing</groupId> | ||
| 237 | <artifactId>core</artifactId> | ||
| 238 | <version>3.4.1</version> | ||
| 239 | </dependency> | ||
| 240 | |||
| 241 | <dependency> | ||
| 242 | <groupId>com.oracle</groupId> | ||
| 243 | <artifactId>ojdbc6</artifactId> | ||
| 244 | <version>${oracle.version}</version> | ||
| 245 | </dependency> | ||
| 246 | |||
| 247 | <dependency> | ||
| 248 | <groupId>cn.hutool</groupId> | ||
| 249 | <artifactId>hutool-all</artifactId> | ||
| 250 | <version>5.6.0</version> | ||
| 251 | </dependency> | ||
| 252 | </dependencies> | ||
| 253 | |||
| 254 | <build> | ||
| 255 | <plugins> | ||
| 256 | <plugin> | ||
| 257 | <groupId>org.springframework.boot</groupId> | ||
| 258 | <artifactId>spring-boot-maven-plugin</artifactId> | ||
| 259 | <executions> | ||
| 260 | <execution> | ||
| 261 | <goals> | ||
| 262 | <goal>repackage</goal> | ||
| 263 | </goals> | ||
| 264 | </execution> | ||
| 265 | </executions> | ||
| 266 | </plugin> | ||
| 267 | <plugin> | ||
| 268 | <groupId>org.apache.maven.plugins</groupId> | ||
| 269 | <artifactId>maven-surefire-plugin</artifactId> | ||
| 270 | <version>2.22.2</version> | ||
| 271 | <configuration> | ||
| 272 | <skip>true</skip> | ||
| 273 | </configuration> | ||
| 274 | </plugin> | ||
| 275 | </plugins> | ||
| 276 | |||
| 277 | <resources> | ||
| 278 | <resource> | ||
| 279 | <directory>src/main/resources</directory> | ||
| 280 | <excludes> | ||
| 281 | <!--使用通配符,当然可以定义多个exclude标签进行排除--> | ||
| 282 | <exclude>application*.yml</exclude> | ||
| 283 | </excludes> | ||
| 284 | </resource> | ||
| 285 | |||
| 286 | <!--根据激活条件引入打包所需的配置和文件--> | ||
| 287 | <resource> | ||
| 288 | <directory>src/main/resources</directory> | ||
| 289 | <!--引入所需环境的配置文件--> | ||
| 290 | <filtering>true</filtering> | ||
| 291 | <includes> | ||
| 292 | <include>application.yml</include> | ||
| 293 | <!--根据maven选择环境导入配置文件--> | ||
| 294 | <include>application-${profile.active}.yml</include> | ||
| 295 | </includes> | ||
| 296 | </resource> | ||
| 297 | </resources> | ||
| 298 | </build> | ||
| 299 | |||
| 300 | <profiles> | ||
| 301 | <profile> | ||
| 302 | <!--不同环境的唯一id--> | ||
| 303 | <id>dev</id> | ||
| 304 | <activation> | ||
| 305 | <activeByDefault>true</activeByDefault> | ||
| 306 | </activation> | ||
| 307 | <properties> | ||
| 308 | <profile.active>dev</profile.active> | ||
| 309 | </properties> | ||
| 310 | </profile> | ||
| 311 | |||
| 312 | <!--生产环境--> | ||
| 313 | <profile> | ||
| 314 | <id>prod</id> | ||
| 315 | <properties> | ||
| 316 | <profile.active>prod</profile.active> | ||
| 317 | </properties> | ||
| 318 | </profile> | ||
| 319 | </profiles> | ||
| 320 | |||
| 321 | <properties> | ||
| 322 | <maven.compiler.source>11</maven.compiler.source> | ||
| 323 | <maven.compiler.target>11</maven.compiler.target> | ||
| 324 | <oracle.version>11.2.0.4</oracle.version> | ||
| 325 | <geotools.version>24-SNAPSHOT</geotools.version> | ||
| 326 | <org.springframework.version>5.1.8.RELEASE</org.springframework.version> | ||
| 327 | <org.spring.boot.version>2.1.8.RELEASE</org.spring.boot.version> | ||
| 328 | <org.spring.amqp>2.2.2.RELEASE</org.spring.amqp> | ||
| 329 | <org.spring.security.version>5.1.6.RELEASE</org.spring.security.version> | ||
| 330 | <!--<org.spring.session.version>2.1.4.RELEASE</org.spring.session.version>--> | ||
| 331 | <fasterxml.jackson.version>2.10.0</fasterxml.jackson.version> | ||
| 332 | <maven-deploy-plugin_version>2.8.2</maven-deploy-plugin_version> | ||
| 333 | <mybatis-plus.version>3.1.2</mybatis-plus.version> | ||
| 334 | <springfox.spring.web.version>2.9.2</springfox.spring.web.version> | ||
| 335 | <springfox.swagger2.version>2.9.2</springfox.swagger2.version> | ||
| 336 | <mapstruct.version>1.3.0.Final</mapstruct.version> | ||
| 337 | <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> | ||
| 338 | <maven.compiler.source>11</maven.compiler.source> | ||
| 339 | <maven.compiler.target>11</maven.compiler.target> | ||
| 340 | </properties> | ||
| 341 | |||
| 342 | </project> | 
src/main/java/com/pashanhoo/Application.java
0 → 100644
| 1 | package com.pashanhoo; | ||
| 2 | |||
| 3 | import org.mybatis.spring.annotation.MapperScan; | ||
| 4 | import org.springframework.boot.SpringApplication; | ||
| 5 | import org.springframework.boot.autoconfigure.SpringBootApplication; | ||
| 6 | import org.springframework.transaction.annotation.EnableTransactionManagement; | ||
| 7 | |||
| 8 | @SpringBootApplication(scanBasePackages={"com.pashanhoo"}) | ||
| 9 | @EnableTransactionManagement | ||
| 10 | @MapperScan(basePackages = {"com.pashanhoo.**.mapper"}) | ||
| 11 | public class Application { | ||
| 12 | public static void main(String[] args) { | ||
| 13 | SpringApplication app = new SpringApplication(Application.class); | ||
| 14 | app.run(args); | ||
| 15 | } | ||
| 16 | } | 
| 1 | package com.pashanhoo; | ||
| 2 | |||
| 3 | import io.swagger.annotations.Api; | ||
| 4 | import org.springframework.context.annotation.Bean; | ||
| 5 | import org.springframework.context.annotation.Configuration; | ||
| 6 | import springfox.documentation.builders.ApiInfoBuilder; | ||
| 7 | import springfox.documentation.builders.PathSelectors; | ||
| 8 | import springfox.documentation.builders.RequestHandlerSelectors; | ||
| 9 | import springfox.documentation.service.ApiInfo; | ||
| 10 | import springfox.documentation.spi.DocumentationType; | ||
| 11 | import springfox.documentation.spring.web.plugins.Docket; | ||
| 12 | import springfox.documentation.swagger2.annotations.EnableSwagger2; | ||
| 13 | |||
| 14 | /** | ||
| 15 | * swagger配置类 | ||
| 16 | */ | ||
| 17 | @Configuration | ||
| 18 | @EnableSwagger2 | ||
| 19 | public class SwaggerConfig { | ||
| 20 | @Bean | ||
| 21 | public Docket createRestApi() { | ||
| 22 | return new Docket(DocumentationType.SWAGGER_2) | ||
| 23 | .apiInfo(apiInfo()) | ||
| 24 | .select() | ||
| 25 | // 为当前包路径 | ||
| 26 | // .apis(RequestHandlerSelectors.basePackage("com.pashanhoo")) | ||
| 27 | .apis(RequestHandlerSelectors.withClassAnnotation(Api.class)) | ||
| 28 | .paths(PathSelectors.any()) | ||
| 29 | .build(); | ||
| 30 | } | ||
| 31 | |||
| 32 | // 构建 api文档的详细信息函数,注意这里的注解引用的是哪个 | ||
| 33 | private ApiInfo apiInfo() { | ||
| 34 | return new ApiInfoBuilder() | ||
| 35 | // 页面标题 | ||
| 36 | .title("档案系统 接口文档") | ||
| 37 | // 版本号 | ||
| 38 | .version("1.0") | ||
| 39 | // 描述 | ||
| 40 | .description("API 描述") | ||
| 41 | .build(); | ||
| 42 | } | ||
| 43 | |||
| 44 | } | 
| 1 | package com.pashanhoo.common; | ||
| 2 | |||
| 3 | public interface CommonConstant { | ||
| 4 | |||
| 5 | /** | ||
| 6 | * 新增校验报错状态 | ||
| 7 | */ | ||
| 8 | Integer CHECK_ERROR_2002=2002; | ||
| 9 | /** | ||
| 10 | * {@code 500 Server Error} (HTTP/1.0 - RFC 1945) | ||
| 11 | */ | ||
| 12 | Integer SC_INTERNAL_SERVER_ERROR_500 = 500; | ||
| 13 | /** | ||
| 14 | * {@code 200 OK} (HTTP/1.0 - RFC 1945) | ||
| 15 | */ | ||
| 16 | Integer SC_OK_200 = 200; | ||
| 17 | |||
| 18 | /** | ||
| 19 | * {@code 200 OK} (HTTP/1.0 - RFC 1945) | ||
| 20 | */ | ||
| 21 | Integer SC_INFO_206 = 206; | ||
| 22 | |||
| 23 | /** | ||
| 24 | * {@code 200 OK} (HTTP/1.0 - RFC 1945) | ||
| 25 | */ | ||
| 26 | Integer SC_INFO_210 = 210; | ||
| 27 | |||
| 28 | /** | ||
| 29 | * 字典信息缓存 | ||
| 30 | */ | ||
| 31 | String SYS_DICT_NAME = "sys:dict:name:"; | ||
| 32 | |||
| 33 | /** | ||
| 34 | * 字典信息缓存 | ||
| 35 | */ | ||
| 36 | String SYS_DICT_ID = "sys:dict:id:"; | ||
| 37 | |||
| 38 | /** | ||
| 39 | * 字典信息单条 | ||
| 40 | */ | ||
| 41 | String SYS_DICT_ALL = "sys:dict:all:"; | ||
| 42 | |||
| 43 | /** | ||
| 44 | * 字典信息缓存 | ||
| 45 | */ | ||
| 46 | String SYS_DICT_CODE = "sys:dict:code:"; | ||
| 47 | |||
| 48 | /** | ||
| 49 | * 菜单列表 | ||
| 50 | */ | ||
| 51 | String MENU_TREE = "sys:menu:"; | ||
| 52 | |||
| 53 | |||
| 54 | } | 
| 1 | package com.pashanhoo.common; | ||
| 2 | |||
| 3 | import com.baomidou.mybatisplus.core.toolkit.StringUtils; | ||
| 4 | import io.swagger.annotations.ApiModelProperty; | ||
| 5 | import lombok.Data; | ||
| 6 | |||
| 7 | @Data | ||
| 8 | public class PageInfo { | ||
| 9 | @ApiModelProperty(name = "currentPage",value = "页码") | ||
| 10 | private Integer currentPage = 1; | ||
| 11 | |||
| 12 | @ApiModelProperty(name = "pageSize",value = "每页个数") | ||
| 13 | private Integer pageSize = 10; | ||
| 14 | |||
| 15 | @ApiModelProperty(name = "sortField",value = "排序字段" ) | ||
| 16 | private String sortField; | ||
| 17 | |||
| 18 | @ApiModelProperty(name = "sortOrder",value = "升序(asc)或降序(desc)") | ||
| 19 | private String sortOrder; | ||
| 20 | |||
| 21 | public void defaultFillPageProp(String sortField, String sortOrder) { | ||
| 22 | if(StringUtils.isBlank(this.sortField)) { | ||
| 23 | this.sortField = sortField; | ||
| 24 | this.sortOrder = sortOrder; | ||
| 25 | } | ||
| 26 | } | ||
| 27 | } | 
| 1 | package com.pashanhoo.common; | ||
| 2 | |||
| 3 | import com.fasterxml.jackson.annotation.JsonInclude; | ||
| 4 | import io.swagger.annotations.ApiModel; | ||
| 5 | import io.swagger.annotations.ApiModelProperty; | ||
| 6 | |||
| 7 | import java.io.Serializable; | ||
| 8 | |||
| 9 | @ApiModel(value = "接口返回对象", description = "接口返回对象") | ||
| 10 | @JsonInclude | ||
| 11 | public class Result<T> implements Serializable { | ||
| 12 | |||
| 13 | private static final long serialVersionUID = 1L; | ||
| 14 | |||
| 15 | /** | ||
| 16 | * 成功标志 | ||
| 17 | */ | ||
| 18 | @ApiModelProperty(value = "成功标志") | ||
| 19 | private boolean success = true; | ||
| 20 | |||
| 21 | /** | ||
| 22 | * 返回处理消息 | ||
| 23 | */ | ||
| 24 | @ApiModelProperty(value = "返回处理消息") | ||
| 25 | private String message = "操作成功!"; | ||
| 26 | |||
| 27 | /** | ||
| 28 | * 返回代码 | ||
| 29 | */ | ||
| 30 | @ApiModelProperty(value = "返回代码") | ||
| 31 | private Integer code = 0; | ||
| 32 | |||
| 33 | /** | ||
| 34 | * 返回数据对象 data | ||
| 35 | */ | ||
| 36 | @ApiModelProperty(value = "返回数据对象") | ||
| 37 | private T result; | ||
| 38 | |||
| 39 | /** | ||
| 40 | * 时间戳 | ||
| 41 | */ | ||
| 42 | @ApiModelProperty(value = "时间戳") | ||
| 43 | private long timestamp = System.currentTimeMillis(); | ||
| 44 | |||
| 45 | public Result() { | ||
| 46 | |||
| 47 | } | ||
| 48 | |||
| 49 | public Result<T> success(String message) { | ||
| 50 | this.message = message; | ||
| 51 | this.code = CommonConstant.SC_OK_200; | ||
| 52 | this.success = true; | ||
| 53 | return this; | ||
| 54 | } | ||
| 55 | |||
| 56 | |||
| 57 | public static Result<Object> ok() { | ||
| 58 | Result<Object> r = new Result<Object>(); | ||
| 59 | r.setSuccess(true); | ||
| 60 | r.setCode(CommonConstant.SC_OK_200); | ||
| 61 | r.setMessage("成功"); | ||
| 62 | return r; | ||
| 63 | } | ||
| 64 | |||
| 65 | public static Result<Object> ok(String msg) { | ||
| 66 | Result<Object> r = new Result<Object>(); | ||
| 67 | r.setSuccess(true); | ||
| 68 | r.setCode(CommonConstant.SC_OK_200); | ||
| 69 | r.setMessage(msg); | ||
| 70 | return r; | ||
| 71 | } | ||
| 72 | |||
| 73 | public static <T> Result<T> ok(T data) { | ||
| 74 | Result<T> r = new Result<T>(); | ||
| 75 | r.setSuccess(true); | ||
| 76 | r.setCode(CommonConstant.SC_OK_200); | ||
| 77 | r.setResult(data); | ||
| 78 | return r; | ||
| 79 | } | ||
| 80 | |||
| 81 | public static Result<String> content(String data) { | ||
| 82 | Result<String> r = new Result<String>(); | ||
| 83 | r.setSuccess(true); | ||
| 84 | r.setCode(CommonConstant.SC_OK_200); | ||
| 85 | r.setResult(data); | ||
| 86 | return r; | ||
| 87 | } | ||
| 88 | public static Result<Object> info(Object data) { | ||
| 89 | Result<Object> r = new Result<Object>(); | ||
| 90 | r.setSuccess(false); | ||
| 91 | r.setCode(CommonConstant.SC_INFO_206); | ||
| 92 | r.setResult(data); | ||
| 93 | return r; | ||
| 94 | } | ||
| 95 | |||
| 96 | public static Result<Object> exception(String data) { | ||
| 97 | Result<Object> r = new Result<Object>(); | ||
| 98 | r.setSuccess(false); | ||
| 99 | r.setCode(CommonConstant.SC_INFO_210); | ||
| 100 | r.setMessage(data); | ||
| 101 | return r; | ||
| 102 | } | ||
| 103 | |||
| 104 | public static <T> Result<T> ok(T data, String msg) { | ||
| 105 | Result<T> r = new Result<T>(); | ||
| 106 | r.setSuccess(true); | ||
| 107 | r.setMessage(msg); | ||
| 108 | r.setCode(CommonConstant.SC_OK_200); | ||
| 109 | r.setResult(data); | ||
| 110 | return r; | ||
| 111 | } | ||
| 112 | |||
| 113 | public static Result<String> error(String msg) { | ||
| 114 | return error(CommonConstant.SC_INTERNAL_SERVER_ERROR_500, msg); | ||
| 115 | } | ||
| 116 | public static Result<String> checkError(String msg) { | ||
| 117 | return error(CommonConstant.CHECK_ERROR_2002, msg); | ||
| 118 | } | ||
| 119 | |||
| 120 | public static Result<String> error(int code, String msg) { | ||
| 121 | Result<String> r = new Result<String>(); | ||
| 122 | r.setCode(code); | ||
| 123 | r.setMessage(msg); | ||
| 124 | r.setSuccess(false); | ||
| 125 | return r; | ||
| 126 | } | ||
| 127 | |||
| 128 | public static <T> Result<T> error(String message, T data) { | ||
| 129 | Result<T> r = new Result<T>(); | ||
| 130 | r.setMessage(message); | ||
| 131 | r.setResult(data); | ||
| 132 | r.setCode(CommonConstant.SC_INTERNAL_SERVER_ERROR_500); | ||
| 133 | r.setSuccess(false); | ||
| 134 | return r; | ||
| 135 | } | ||
| 136 | |||
| 137 | public Result<T> error500(String message) { | ||
| 138 | this.message = message; | ||
| 139 | this.code = CommonConstant.SC_INTERNAL_SERVER_ERROR_500; | ||
| 140 | this.success = false; | ||
| 141 | return this; | ||
| 142 | } | ||
| 143 | |||
| 144 | // /** | ||
| 145 | // * 无权限访问返回结果 | ||
| 146 | // */ | ||
| 147 | // public static Result<String> noauth(String msg) { | ||
| 148 | // return error(CommonConstant.SC_JEECG_NO_AUTHZ, msg); | ||
| 149 | // } | ||
| 150 | |||
| 151 | public static long getSerialVersionUID() { | ||
| 152 | return serialVersionUID; | ||
| 153 | } | ||
| 154 | |||
| 155 | public boolean getSuccess() { | ||
| 156 | return success; | ||
| 157 | } | ||
| 158 | |||
| 159 | public void setSuccess(boolean success) { | ||
| 160 | this.success = success; | ||
| 161 | } | ||
| 162 | |||
| 163 | public String getMessage() { | ||
| 164 | return message; | ||
| 165 | } | ||
| 166 | |||
| 167 | public void setMessage(String message) { | ||
| 168 | this.message = message; | ||
| 169 | } | ||
| 170 | |||
| 171 | public Integer getCode() { | ||
| 172 | return code; | ||
| 173 | } | ||
| 174 | |||
| 175 | public void setCode(Integer code) { | ||
| 176 | this.code = code; | ||
| 177 | } | ||
| 178 | |||
| 179 | public T getResult() { | ||
| 180 | return result; | ||
| 181 | } | ||
| 182 | |||
| 183 | public void setResult(T result) { | ||
| 184 | this.result = result; | ||
| 185 | } | ||
| 186 | |||
| 187 | public long getTimestamp() { | ||
| 188 | return timestamp; | ||
| 189 | } | ||
| 190 | |||
| 191 | public void setTimestamp(long timestamp) { | ||
| 192 | this.timestamp = timestamp; | ||
| 193 | } | ||
| 194 | |||
| 195 | } | 
| 1 | package com.pashanhoo.common.util; | ||
| 2 | |||
| 3 | import com.baomidou.mybatisplus.annotation.DbType; | ||
| 4 | import com.baomidou.mybatisplus.annotation.IdType; | ||
| 5 | import com.baomidou.mybatisplus.generator.AutoGenerator; | ||
| 6 | import com.baomidou.mybatisplus.generator.config.*; | ||
| 7 | import com.baomidou.mybatisplus.generator.config.rules.DateType; | ||
| 8 | import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy; | ||
| 9 | import com.pashanhoo.common.util.mybatisplus.MyFreemarkerTemplateEngine; | ||
| 10 | |||
| 11 | |||
| 12 | /** | ||
| 13 | * 代码自动生成器 | ||
| 14 | */ | ||
| 15 | public class CodeGenerator { | ||
| 16 | public static void main(String[] args) { | ||
| 17 | // 需要构建一个 代码自动生成器 对象 | ||
| 18 | AutoGenerator mpg = new AutoGenerator(); | ||
| 19 | // 配置策略 | ||
| 20 | // 1、全局配置 | ||
| 21 | GlobalConfig gc = new GlobalConfig(); | ||
| 22 | String projectPath = System.getProperty("user.dir"); | ||
| 23 | gc.setOutputDir(projectPath + "/src/main/java"); | ||
| 24 | gc.setAuthor(""); | ||
| 25 | gc.setOpen(false); | ||
| 26 | // 是否覆盖 | ||
| 27 | gc.setFileOverride(false); | ||
| 28 | // 去Service的I前缀 | ||
| 29 | // gc.setEntityName("%sDO"); | ||
| 30 | gc.setServiceName("%sService"); | ||
| 31 | gc.setServiceImplName("%sServiceImpl"); | ||
| 32 | gc.setControllerName("%sController"); | ||
| 33 | gc.setDateType(DateType.ONLY_DATE); | ||
| 34 | |||
| 35 | gc.setIdType(IdType.UUID); | ||
| 36 | // gc.setSwagger2(true); 实体属性 Swagger2 注解 | ||
| 37 | mpg.setGlobalConfig(gc); | ||
| 38 | //2、设置数据源 | ||
| 39 | DataSourceConfig dsc = new DataSourceConfig(); | ||
| 40 | dsc.setUrl("jdbc:oracle:thin:@192.168.2.218:1521:orcl"); | ||
| 41 | dsc.setDriverName("oracle.jdbc.driver.OracleDriver"); | ||
| 42 | dsc.setUsername("bdcdjsb"); | ||
| 43 | dsc.setPassword("bdcdjsb"); | ||
| 44 | dsc.setDbType(DbType.ORACLE); | ||
| 45 | mpg.setDataSource(dsc); | ||
| 46 | //3、包的配置 | ||
| 47 | PackageConfig pc = new PackageConfig(); | ||
| 48 | //TODO | ||
| 49 | pc.setModuleName("system"); | ||
| 50 | pc.setParent("com"); | ||
| 51 | pc.setEntity("entity"); | ||
| 52 | pc.setMapper("mapper"); | ||
| 53 | pc.setService("service"); | ||
| 54 | pc.setController("controller"); | ||
| 55 | mpg.setPackageInfo(pc); | ||
| 56 | |||
| 57 | // 配置模板 | ||
| 58 | TemplateConfig templateConfig = new TemplateConfig(); | ||
| 59 | |||
| 60 | // 配置自定义输出模板 | ||
| 61 | //指定自定义模板路径,注意不要带上.ftl/.vm, 会根据使用的模板引擎自动识别 | ||
| 62 | templateConfig.setEntity("templates/entity2.java"); | ||
| 63 | templateConfig.setMapper("templates/mapper2.java"); | ||
| 64 | templateConfig.setService("templates/service2.java"); | ||
| 65 | templateConfig.setServiceImpl("templates/serviceImpl2.java"); | ||
| 66 | templateConfig.setController("templates/controller2.java"); | ||
| 67 | templateConfig.setXml("templates/mapper2.xml"); | ||
| 68 | |||
| 69 | mpg.setTemplate(templateConfig); | ||
| 70 | |||
| 71 | //4、策略配置 | ||
| 72 | StrategyConfig strategy = new StrategyConfig(); | ||
| 73 | // 设置要映射的表名 | ||
| 74 | strategy.setInclude("DJF_DJ_SJ"); | ||
| 75 | strategy.setNaming(NamingStrategy.underline_to_camel); | ||
| 76 | strategy.setColumnNaming(NamingStrategy.underline_to_camel); | ||
| 77 | // 自动lombok; | ||
| 78 | strategy.setEntityLombokModel(true); | ||
| 79 | mpg.setStrategy(strategy); | ||
| 80 | |||
| 81 | //设置Freemarker模板引擎 | ||
| 82 | mpg.setTemplateEngine(new MyFreemarkerTemplateEngine()); | ||
| 83 | |||
| 84 | mpg.execute(); //执行 | ||
| 85 | } | ||
| 86 | } | 
| 1 | package com.pashanhoo.common.util; | ||
| 2 | |||
| 3 | import com.baomidou.mybatisplus.core.toolkit.StringUtils; | ||
| 4 | import com.google.common.collect.ArrayListMultimap; | ||
| 5 | import com.google.common.collect.Lists; | ||
| 6 | import com.google.common.collect.Multimap; | ||
| 7 | import org.apache.commons.collections.CollectionUtils; | ||
| 8 | |||
| 9 | import java.lang.reflect.InvocationTargetException; | ||
| 10 | import java.lang.reflect.Method; | ||
| 11 | import java.util.Collections; | ||
| 12 | import java.util.Comparator; | ||
| 13 | import java.util.List; | ||
| 14 | |||
| 15 | public class TreeUtil { | ||
| 16 | |||
| 17 | /** | ||
| 18 | * 比较规则 | ||
| 19 | */ | ||
| 20 | private static Comparator comparator; | ||
| 21 | |||
| 22 | /** | ||
| 23 | * 树节点Class类型 | ||
| 24 | */ | ||
| 25 | private static Class<?> treeNodeClass; | ||
| 26 | |||
| 27 | /** | ||
| 28 | * 主键的get方法对应的Method对象 | ||
| 29 | */ | ||
| 30 | private static Method getKeyMethod; | ||
| 31 | |||
| 32 | /** | ||
| 33 | * 获取父节点id的get方法对应的Method对象 | ||
| 34 | */ | ||
| 35 | private static Method getParentIdMethod; | ||
| 36 | |||
| 37 | /** | ||
| 38 | * 设置子元素对应的方法的Method对象 | ||
| 39 | */ | ||
| 40 | private static Method setChildrenMethod; | ||
| 41 | |||
| 42 | /** | ||
| 43 | * @param comparator | ||
| 44 | * @param treeNodeClass | ||
| 45 | * @param key 首字母大写的主键字段名称 | ||
| 46 | */ | ||
| 47 | public static void setRule(Comparator comparator, Class<?> treeNodeClass, String key) { | ||
| 48 | TreeUtil.comparator = comparator; | ||
| 49 | TreeUtil.treeNodeClass = treeNodeClass; | ||
| 50 | try { | ||
| 51 | TreeUtil.getKeyMethod = treeNodeClass.getMethod("get" + key); | ||
| 52 | TreeUtil.getParentIdMethod = treeNodeClass.getMethod("getParentId"); | ||
| 53 | TreeUtil.setChildrenMethod = treeNodeClass.getMethod("setChildren", List.class); | ||
| 54 | } catch (NoSuchMethodException e) { | ||
| 55 | e.printStackTrace(); | ||
| 56 | } | ||
| 57 | |||
| 58 | } | ||
| 59 | |||
| 60 | /** | ||
| 61 | * 将符合条件的List转为Tree | ||
| 62 | * | ||
| 63 | * @param | ||
| 64 | * @param rootId | ||
| 65 | * @return | ||
| 66 | */ | ||
| 67 | |||
| 68 | public static <TreeNode> List<TreeNode> listToTree(List<TreeNode> treeNodes, String rootId) { | ||
| 69 | if (CollectionUtils.isEmpty(treeNodes)) { | ||
| 70 | return Lists.newArrayList(); | ||
| 71 | } | ||
| 72 | |||
| 73 | //parent -> [data1, data2 ...] | ||
| 74 | Multimap<String, TreeNode> parentMap = ArrayListMultimap.create(); | ||
| 75 | //记录parentMap | ||
| 76 | List<TreeNode> rootList = Lists.newArrayList(); | ||
| 77 | |||
| 78 | for (TreeNode treeNode : treeNodes) { | ||
| 79 | String parentId = null; | ||
| 80 | try { | ||
| 81 | parentId = (String) getParentIdMethod.invoke(treeNode); | ||
| 82 | } catch (IllegalAccessException e) { | ||
| 83 | e.printStackTrace(); | ||
| 84 | } catch (InvocationTargetException e) { | ||
| 85 | e.printStackTrace(); | ||
| 86 | } | ||
| 87 | |||
| 88 | parentMap.put(parentId, treeNode); | ||
| 89 | |||
| 90 | //从根节点的下一级构造树 | ||
| 91 | |||
| 92 | //rootId为null,从最顶部构造整棵树 | ||
| 93 | if (rootId == null) { | ||
| 94 | if (parentId == null) { | ||
| 95 | rootList.add(treeNode); | ||
| 96 | } | ||
| 97 | } | ||
| 98 | if (StringUtils.isNotBlank(parentId) && parentId.equals(rootId)) { | ||
| 99 | rootList.add(treeNode); | ||
| 100 | } | ||
| 101 | } | ||
| 102 | |||
| 103 | // 对树节点进行排序 | ||
| 104 | Collections.sort(rootList, comparator); | ||
| 105 | |||
| 106 | // 递归生成树 | ||
| 107 | transformTree(rootList, parentMap); | ||
| 108 | return rootList; | ||
| 109 | } | ||
| 110 | |||
| 111 | private static <TreeNode> void transformTree(List<TreeNode> treeNodeList, Multimap<String, TreeNode> parentMap) { | ||
| 112 | for (int i = 0; i < treeNodeList.size(); i++) { | ||
| 113 | // 遍历该层的每个元素 | ||
| 114 | TreeNode treeNode = treeNodeList.get(i); | ||
| 115 | //获取当前节点下一层节点的List数据 | ||
| 116 | List<TreeNode> tempList = null; | ||
| 117 | try { | ||
| 118 | tempList = (List<TreeNode>) parentMap.get((String) getKeyMethod.invoke(treeNode)); | ||
| 119 | } catch (IllegalAccessException e) { | ||
| 120 | e.printStackTrace(); | ||
| 121 | } catch (InvocationTargetException e) { | ||
| 122 | e.printStackTrace(); | ||
| 123 | } | ||
| 124 | if (CollectionUtils.isNotEmpty(tempList)) { | ||
| 125 | //首先排序下一层节点 | ||
| 126 | Collections.sort(tempList, comparator); | ||
| 127 | //将下一层节点数据设置为当前节点的Children数据 | ||
| 128 | try { | ||
| 129 | setChildrenMethod.invoke(treeNode, tempList); | ||
| 130 | } catch (IllegalAccessException e) { | ||
| 131 | e.printStackTrace(); | ||
| 132 | } catch (InvocationTargetException e) { | ||
| 133 | e.printStackTrace(); | ||
| 134 | } | ||
| 135 | // 进入到下一层处理 | ||
| 136 | transformTree(tempList, parentMap); | ||
| 137 | } | ||
| 138 | } | ||
| 139 | |||
| 140 | } | ||
| 141 | } | 
| 1 | package com.pashanhoo.common.util.mybatisplus; | ||
| 2 | |||
| 3 | import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; | ||
| 4 | import com.baomidou.mybatisplus.generator.InjectionConfig; | ||
| 5 | import com.baomidou.mybatisplus.generator.config.ConstVal; | ||
| 6 | import com.baomidou.mybatisplus.generator.config.FileOutConfig; | ||
| 7 | import com.baomidou.mybatisplus.generator.config.TemplateConfig; | ||
| 8 | import com.baomidou.mybatisplus.generator.config.po.TableField; | ||
| 9 | import com.baomidou.mybatisplus.generator.config.po.TableInfo; | ||
| 10 | import com.baomidou.mybatisplus.generator.config.rules.FileType; | ||
| 11 | import com.baomidou.mybatisplus.generator.engine.AbstractTemplateEngine; | ||
| 12 | |||
| 13 | import java.io.File; | ||
| 14 | import java.util.*; | ||
| 15 | |||
| 16 | public abstract class AbstractTemplateEngineLocal extends AbstractTemplateEngine { | ||
| 17 | |||
| 18 | private void fitAddEntityRequest(List<TableField> tableFields, TableInfo tableInfo) { | ||
| 19 | for(Iterator<TableField> it = tableFields.iterator(); it.hasNext();){ | ||
| 20 | TableField tableField =it.next(); | ||
| 21 | if(tableField.isKeyIdentityFlag() || "ADDTIME".equals(tableField.getName()) || "EDITTIME".equals(tableField.getName())) { | ||
| 22 | it.remove(); | ||
| 23 | } | ||
| 24 | } | ||
| 25 | |||
| 26 | Set<String> importPacks = tableInfo.getImportPackages(); | ||
| 27 | for(Iterator<String> it = importPacks.iterator(); it.hasNext();){ | ||
| 28 | String importPack = it.next(); | ||
| 29 | if(importPack.indexOf("baomidou") > 0){ | ||
| 30 | it.remove(); | ||
| 31 | } | ||
| 32 | } | ||
| 33 | |||
| 34 | } | ||
| 35 | |||
| 36 | private void fillEntityProp(Map<String, Object> objectMap) { | ||
| 37 | TableInfo tableInfo = (TableInfo) objectMap.get("table"); | ||
| 38 | int addFieldFillPacCount = 0; | ||
| 39 | for(TableField tableField : tableInfo.getFields()) { | ||
| 40 | tableField.setConvert(true); | ||
| 41 | if("ADDTIME".equals(tableField.getName())) { | ||
| 42 | tableField.setFill("INSERT"); | ||
| 43 | if(addFieldFillPacCount == 0) { | ||
| 44 | tableInfo.getImportPackages().add("com.baomidou.mybatisplus.annotation.FieldFill"); | ||
| 45 | addFieldFillPacCount++; | ||
| 46 | } | ||
| 47 | } | ||
| 48 | if("UPDATETIME".equals(tableField.getName())) { | ||
| 49 | tableField.setFill("INSERT_UPDATE"); | ||
| 50 | } | ||
| 51 | } | ||
| 52 | |||
| 53 | } | ||
| 54 | |||
| 55 | /** | ||
| 56 | * list深度拷贝 | ||
| 57 | * @param list | ||
| 58 | * @return | ||
| 59 | */ | ||
| 60 | public List copyList(List list) { | ||
| 61 | //list深度拷贝 | ||
| 62 | List<Integer> newList = new ArrayList<>(); | ||
| 63 | org.apache.commons.collections.CollectionUtils.addAll(newList, new Object[list.size()]); | ||
| 64 | Collections.copy(newList, list); | ||
| 65 | return newList; | ||
| 66 | } | ||
| 67 | |||
| 68 | /** | ||
| 69 | * 输出 java xml 文件 | ||
| 70 | */ | ||
| 71 | @Override | ||
| 72 | public AbstractTemplateEngine batchOutput() { | ||
| 73 | try { | ||
| 74 | List<TableInfo> tableInfoList = getConfigBuilder().getTableInfoList(); | ||
| 75 | for (TableInfo tableInfo : tableInfoList) { | ||
| 76 | Map<String, Object> objectMap = getObjectMap(tableInfo); | ||
| 77 | Map<String, String> pathInfo = getConfigBuilder().getPathInfo(); | ||
| 78 | TemplateConfig template = getConfigBuilder().getTemplate(); | ||
| 79 | // 自定义内容 | ||
| 80 | InjectionConfig injectionConfig = getConfigBuilder().getInjectionConfig(); | ||
| 81 | if (null != injectionConfig) { | ||
| 82 | injectionConfig.initTableMap(tableInfo); | ||
| 83 | objectMap.put("cfg", injectionConfig.getMap()); | ||
| 84 | List<FileOutConfig> focList = injectionConfig.getFileOutConfigList(); | ||
| 85 | if (CollectionUtils.isNotEmpty(focList)) { | ||
| 86 | for (FileOutConfig foc : focList) { | ||
| 87 | if (isCreate(FileType.OTHER, foc.outputFile(tableInfo))) { | ||
| 88 | writer(objectMap, foc.getTemplatePath(), foc.outputFile(tableInfo)); | ||
| 89 | } | ||
| 90 | } | ||
| 91 | } | ||
| 92 | } | ||
| 93 | // Mp.java | ||
| 94 | String entityName = tableInfo.getEntityName(); | ||
| 95 | List<TableField> originalTableFieldList = tableInfo.getFields(); | ||
| 96 | if (null != entityName && null != pathInfo.get(ConstVal.ENTITY_PATH)) { | ||
| 97 | fillEntityProp(objectMap); | ||
| 98 | String entityFile = String.format((pathInfo.get(ConstVal.ENTITY_PATH) + File.separator + "%s" + "DO" + suffixJavaOrKt()), entityName) ; | ||
| 99 | if (isCreate(FileType.ENTITY, entityFile)) { | ||
| 100 | writer(objectMap, templateFilePath(template.getEntity(getConfigBuilder().getGlobalConfig().isKotlin())), entityFile); | ||
| 101 | } | ||
| 102 | |||
| 103 | List<TableField> originalTableFields = tableInfo.getFields(); | ||
| 104 | List<TableField> addEntityTableFieldList = copyList(tableInfo.getFields()); | ||
| 105 | fitAddEntityRequest(addEntityTableFieldList, tableInfo); | ||
| 106 | tableInfo.setFields(addEntityTableFieldList); | ||
| 107 | |||
| 108 | //向ObjectMap中添加首字母小写的实体对象名 | ||
| 109 | String entity = (String) objectMap.get("entity"); | ||
| 110 | objectMap.put("lowerEntity", entity.toLowerCase()); | ||
| 111 | |||
| 112 | //AddEntityRequest.java | ||
| 113 | fitAddEntityRequest(tableInfo.getFields(), tableInfo); | ||
| 114 | String addEntityRequestFile = String.format((pathInfo.get(ConstVal.ENTITY_PATH) + File.separator + "%s" + suffixJavaOrKt()), "Add" + entityName + "Request"); | ||
| 115 | if (isCreate(FileType.ENTITY, addEntityRequestFile)) { | ||
| 116 | writer(objectMap, "templates/AddEntityRequest.java.ftl", addEntityRequestFile); | ||
| 117 | } | ||
| 118 | |||
| 119 | //UpdateEntityRequest.java | ||
| 120 | fitAddEntityRequest(tableInfo.getFields(), tableInfo); | ||
| 121 | String updateEntityRequestFile = String.format((pathInfo.get(ConstVal.ENTITY_PATH) + File.separator + "%s" + suffixJavaOrKt()), "Update" + entityName + "Request"); | ||
| 122 | if (isCreate(FileType.ENTITY, updateEntityRequestFile)) { | ||
| 123 | writer(objectMap, "templates/UpdateEntityRequest.java.ftl", updateEntityRequestFile); | ||
| 124 | } | ||
| 125 | |||
| 126 | |||
| 127 | //EntitySearchRequest.java | ||
| 128 | String entitySearchRequestFile = String.format((pathInfo.get(ConstVal.ENTITY_PATH) + File.separator + "%s" + suffixJavaOrKt()), entityName + "SearchRequest"); | ||
| 129 | if (isCreate(FileType.ENTITY, entitySearchRequestFile)) { | ||
| 130 | writer(objectMap, "templates/EntitySearchRequest.java.ftl", entitySearchRequestFile); | ||
| 131 | } | ||
| 132 | |||
| 133 | tableInfo.setFields(originalTableFields); | ||
| 134 | //EntityListVO.java | ||
| 135 | String entityListVOFile = String.format((pathInfo.get(ConstVal.ENTITY_PATH) + File.separator + "%s" + suffixJavaOrKt()), entityName + "ListVO"); | ||
| 136 | if (isCreate(FileType.ENTITY, entityListVOFile)) { | ||
| 137 | writer(objectMap, "templates/EntityListVO.java.ftl", entityListVOFile); | ||
| 138 | } | ||
| 139 | |||
| 140 | //EntityDetailVO.java | ||
| 141 | String entityDetailVOFile = String.format((pathInfo.get(ConstVal.ENTITY_PATH) + File.separator + "%s" + suffixJavaOrKt()), entityName + "DetailVO"); | ||
| 142 | if (isCreate(FileType.ENTITY, entityDetailVOFile)) { | ||
| 143 | writer(objectMap, "templates/EntityDetailVO.java.ftl", entityDetailVOFile); | ||
| 144 | } | ||
| 145 | } | ||
| 146 | |||
| 147 | //converter.java | ||
| 148 | String entityConverterFile = String.format((pathInfo.get(ConstVal.ENTITY_PATH) + File.separator + "%s" + suffixJavaOrKt()), entityName + "Converter"); | ||
| 149 | if (isCreate(FileType.ENTITY, entityConverterFile)) { | ||
| 150 | writer(objectMap, "templates/entityConverter.java.ftl", entityConverterFile); | ||
| 151 | } | ||
| 152 | |||
| 153 | // MpMapper.java | ||
| 154 | if (null != tableInfo.getMapperName() && null != pathInfo.get(ConstVal.MAPPER_PATH)) { | ||
| 155 | String mapperFile = String.format((pathInfo.get(ConstVal.MAPPER_PATH) + File.separator + tableInfo.getMapperName() + suffixJavaOrKt()), entityName); | ||
| 156 | if (isCreate(FileType.MAPPER, mapperFile)) { | ||
| 157 | writer(objectMap, templateFilePath(template.getMapper()), mapperFile); | ||
| 158 | } | ||
| 159 | } | ||
| 160 | // MpMapper.xml | ||
| 161 | if (null != tableInfo.getXmlName() && null != pathInfo.get(ConstVal.XML_PATH)) { | ||
| 162 | String xmlFile = String.format((pathInfo.get(ConstVal.XML_PATH) + File.separator + tableInfo.getXmlName() + ConstVal.XML_SUFFIX), entityName); | ||
| 163 | if (isCreate(FileType.XML, xmlFile)) { | ||
| 164 | writer(objectMap, templateFilePath(template.getXml()), xmlFile); | ||
| 165 | } | ||
| 166 | } | ||
| 167 | |||
| 168 | // IMpService.java | ||
| 169 | if (null != tableInfo.getServiceName() && null != pathInfo.get(ConstVal.SERVICE_PATH)) { | ||
| 170 | String serviceFile = String.format((pathInfo.get(ConstVal.SERVICE_PATH) + File.separator + tableInfo.getServiceName() + suffixJavaOrKt()), entityName); | ||
| 171 | if (isCreate(FileType.SERVICE, serviceFile)) { | ||
| 172 | writer(objectMap, templateFilePath(template.getService()), serviceFile); | ||
| 173 | } | ||
| 174 | } | ||
| 175 | // MpServiceImpl.java | ||
| 176 | if (null != tableInfo.getServiceImplName() && null != pathInfo.get(ConstVal.SERVICE_IMPL_PATH)) { | ||
| 177 | String implFile = String.format((pathInfo.get(ConstVal.SERVICE_IMPL_PATH) + File.separator + tableInfo.getServiceImplName() + suffixJavaOrKt()), entityName); | ||
| 178 | if (isCreate(FileType.SERVICE_IMPL, implFile)) { | ||
| 179 | writer(objectMap, templateFilePath(template.getServiceImpl()), implFile); | ||
| 180 | } | ||
| 181 | } | ||
| 182 | // MpController.java | ||
| 183 | if (null != tableInfo.getControllerName() && null != pathInfo.get(ConstVal.CONTROLLER_PATH)) { | ||
| 184 | String controllerFile = String.format((pathInfo.get(ConstVal.CONTROLLER_PATH) + File.separator + tableInfo.getControllerName() + suffixJavaOrKt()), entityName); | ||
| 185 | if (isCreate(FileType.CONTROLLER, controllerFile)) { | ||
| 186 | writer(objectMap, templateFilePath(template.getController()), controllerFile); | ||
| 187 | } | ||
| 188 | } | ||
| 189 | } | ||
| 190 | } catch (Exception e) { | ||
| 191 | logger.error("无法创建文件,请检查配置信息!", e); | ||
| 192 | } | ||
| 193 | return this; | ||
| 194 | } | ||
| 195 | |||
| 196 | } | 
| 1 | package com.pashanhoo.common.util.mybatisplus; | ||
| 2 | |||
| 3 | import com.baomidou.mybatisplus.core.toolkit.StringPool; | ||
| 4 | import com.baomidou.mybatisplus.generator.config.ConstVal; | ||
| 5 | import com.baomidou.mybatisplus.generator.config.builder.ConfigBuilder; | ||
| 6 | import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine; | ||
| 7 | import freemarker.template.Configuration; | ||
| 8 | import freemarker.template.Template; | ||
| 9 | |||
| 10 | import java.io.FileOutputStream; | ||
| 11 | import java.io.OutputStreamWriter; | ||
| 12 | import java.util.Map; | ||
| 13 | |||
| 14 | public class MyFreemarkerTemplateEngine extends AbstractTemplateEngineLocal { | ||
| 15 | |||
| 16 | private Configuration configuration; | ||
| 17 | |||
| 18 | @Override | ||
| 19 | public MyFreemarkerTemplateEngine init(ConfigBuilder configBuilder) { | ||
| 20 | super.init(configBuilder); | ||
| 21 | configuration = new Configuration(Configuration.DEFAULT_INCOMPATIBLE_IMPROVEMENTS); | ||
| 22 | configuration.setDefaultEncoding(ConstVal.UTF8); | ||
| 23 | configuration.setClassForTemplateLoading(FreemarkerTemplateEngine.class, StringPool.SLASH); | ||
| 24 | return this; | ||
| 25 | } | ||
| 26 | |||
| 27 | |||
| 28 | @Override | ||
| 29 | public void writer(Map<String, Object> objectMap, String templatePath, String outputFile) throws Exception { | ||
| 30 | Template template = configuration.getTemplate(templatePath); | ||
| 31 | try (FileOutputStream fileOutputStream = new FileOutputStream(outputFile)) { | ||
| 32 | template.process(objectMap, new OutputStreamWriter(fileOutputStream, ConstVal.UTF8)); | ||
| 33 | } | ||
| 34 | logger.debug("模板:" + templatePath + "; 文件:" + outputFile); | ||
| 35 | } | ||
| 36 | |||
| 37 | |||
| 38 | @Override | ||
| 39 | public String templateFilePath(String filePath) { | ||
| 40 | return filePath + ".ftl"; | ||
| 41 | } | ||
| 42 | |||
| 43 | } | 
| 1 | package com.pashanhoo.config; | ||
| 2 | |||
| 3 | import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor; | ||
| 4 | import org.springframework.context.annotation.Bean; | ||
| 5 | import org.springframework.context.annotation.Configuration; | ||
| 6 | |||
| 7 | @Configuration | ||
| 8 | public class MybatisPlusConfig { | ||
| 9 | /** | ||
| 10 | * 分页插件 | ||
| 11 | */ | ||
| 12 | @Bean | ||
| 13 | public PaginationInterceptor paginationInterceptor() { | ||
| 14 | return new PaginationInterceptor(); | ||
| 15 | } | ||
| 16 | |||
| 17 | } | 
| 1 | package com.pashanhoo.dictionary.controller; | ||
| 2 | |||
| 3 | import com.github.pagehelper.PageInfo; | ||
| 4 | import com.pashanhoo.common.Result; | ||
| 5 | import com.pashanhoo.common.util.TreeUtil; | ||
| 6 | import com.pashanhoo.dictionary.model.dto.SysDict; | ||
| 7 | import com.pashanhoo.dictionary.model.vo.EditDictVo; | ||
| 8 | import com.pashanhoo.dictionary.model.vo.GetSysDictParentVo; | ||
| 9 | import com.pashanhoo.dictionary.model.vo.SysDictVo; | ||
| 10 | import com.pashanhoo.dictionary.service.SysDictService; | ||
| 11 | import io.swagger.annotations.Api; | ||
| 12 | import io.swagger.annotations.ApiOperation; | ||
| 13 | import io.swagger.annotations.ApiParam; | ||
| 14 | import org.springframework.beans.factory.annotation.Autowired; | ||
| 15 | import org.springframework.web.bind.annotation.*; | ||
| 16 | |||
| 17 | import java.util.Comparator; | ||
| 18 | import java.util.HashMap; | ||
| 19 | import java.util.List; | ||
| 20 | import java.util.Map; | ||
| 21 | |||
| 22 | @Api(tags = "字典表") | ||
| 23 | @RestController | ||
| 24 | @RequestMapping("/SysDict") | ||
| 25 | public class SysDictController { | ||
| 26 | |||
| 27 | |||
| 28 | @Autowired | ||
| 29 | SysDictService sysDictService; | ||
| 30 | |||
| 31 | @ApiOperation("获取字典表父级集合") | ||
| 32 | @PostMapping("getSysDictParent") | ||
| 33 | public Result<PageInfo<GetSysDictParentVo>> getSysDictParent(@RequestBody SysDictVo request) { | ||
| 34 | return Result.ok(sysDictService.getSysDictParent(request)); | ||
| 35 | } | ||
| 36 | |||
| 37 | @ApiOperation("编辑界面获取指定字典编码子集") | ||
| 38 | @GetMapping("getSysDictByTypeId") | ||
| 39 | public Result<List<SysDict>> getSysDictByTypeId(@ApiParam("类型ID") @RequestParam String typeId) { | ||
| 40 | List<SysDict> dicts = sysDictService.getSysDictByTypeId(typeId); | ||
| 41 | TreeUtil.setRule((o1, o2) -> 0, SysDict.class,"DictId"); | ||
| 42 | List<SysDict> tree = TreeUtil.listToTree(dicts, typeId); | ||
| 43 | return Result.ok(tree); | ||
| 44 | } | ||
| 45 | |||
| 46 | @ApiOperation("编辑") | ||
| 47 | @PostMapping("editSysDictByTypeId") | ||
| 48 | public Result editSysDictByTypeId(@RequestBody EditDictVo request) { | ||
| 49 | int row = sysDictService.editSysDict(request); | ||
| 50 | if (row != 0) { | ||
| 51 | return Result.ok("修改成功"); | ||
| 52 | } else { | ||
| 53 | return Result.ok("修改失败"); | ||
| 54 | } | ||
| 55 | } | ||
| 56 | |||
| 57 | @ApiOperation("返回json") | ||
| 58 | @GetMapping("getJson") | ||
| 59 | public Result getJson() { | ||
| 60 | List<SysDict> dicts = sysDictService.selectAll(); | ||
| 61 | TreeUtil.setRule(new Comparator<SysDict>() { | ||
| 62 | @Override | ||
| 63 | public int compare(SysDict o1, SysDict o2) { | ||
| 64 | if (o1.getSort() == null) { | ||
| 65 | o1.setSort((short) 0); | ||
| 66 | } | ||
| 67 | if (o2.getSort() == null) { | ||
| 68 | o2.setSort((short) 0); | ||
| 69 | } | ||
| 70 | return o1.getSort() - o2.getSort(); | ||
| 71 | } | ||
| 72 | }, SysDict.class, "DictId"); | ||
| 73 | List<SysDict> tree = TreeUtil.listToTree(dicts, null); | ||
| 74 | |||
| 75 | Map<String, List<SysDict>> map = new HashMap<>(); | ||
| 76 | for (SysDict SYSDICT : tree) { | ||
| 77 | map.put(SYSDICT.getDcode(), SYSDICT.getChildren()); | ||
| 78 | } | ||
| 79 | return Result.ok(map); | ||
| 80 | } | ||
| 81 | } | 
| 1 | package com.pashanhoo.dictionary.dao; | ||
| 2 | |||
| 3 | import com.pashanhoo.dictionary.model.dto.SysDict; | ||
| 4 | import com.pashanhoo.dictionary.model.vo.GetSysDictParentVo; | ||
| 5 | import com.pashanhoo.dictionary.model.vo.SysDictVo; | ||
| 6 | import org.apache.ibatis.annotations.Mapper; | ||
| 7 | import org.apache.ibatis.annotations.Param; | ||
| 8 | |||
| 9 | import java.util.List; | ||
| 10 | |||
| 11 | @Mapper | ||
| 12 | public interface SysDictMapper { | ||
| 13 | /** | ||
| 14 | * delete by primary key | ||
| 15 | * | ||
| 16 | * @param dictid primaryKey | ||
| 17 | * @return deleteCount | ||
| 18 | */ | ||
| 19 | int deleteByPrimaryKey(String dictid); | ||
| 20 | |||
| 21 | /** | ||
| 22 | * insert record to table | ||
| 23 | * | ||
| 24 | * @param record the record | ||
| 25 | * @return insert count | ||
| 26 | */ | ||
| 27 | int insert(SysDict record); | ||
| 28 | |||
| 29 | /** | ||
| 30 | * insert record to table selective | ||
| 31 | * | ||
| 32 | * @param record the record | ||
| 33 | * @return insert count | ||
| 34 | */ | ||
| 35 | int insertSelective(SysDict record); | ||
| 36 | |||
| 37 | /** | ||
| 38 | * select by primary key | ||
| 39 | * | ||
| 40 | * @param dictid primary key | ||
| 41 | * @return object by primary key | ||
| 42 | */ | ||
| 43 | SysDict selectByPrimaryKey(String dictid); | ||
| 44 | |||
| 45 | /** | ||
| 46 | * update record selective | ||
| 47 | * | ||
| 48 | * @param record the updated record | ||
| 49 | * @return update count | ||
| 50 | */ | ||
| 51 | int updateByPrimaryKeySelective(SysDict record); | ||
| 52 | |||
| 53 | /** | ||
| 54 | * update record | ||
| 55 | * | ||
| 56 | * @param record the updated record | ||
| 57 | * @return update count | ||
| 58 | */ | ||
| 59 | int updateByPrimaryKey(SysDict record); | ||
| 60 | |||
| 61 | int updateBatch(List<SysDict> list); | ||
| 62 | |||
| 63 | int updateBatchSelective(List<SysDict> list); | ||
| 64 | |||
| 65 | int batchInsert(@Param("list") List<SysDict> list); | ||
| 66 | |||
| 67 | List<GetSysDictParentVo> getSysDictParent(@Param("request") SysDictVo request); | ||
| 68 | |||
| 69 | List<SysDict> getSysDictByTypeId(@Param("typeId") String typeId); | ||
| 70 | |||
| 71 | int deleteListByPrimaryKey(@Param("dictWithoutParent") List<SysDict> dictWithoutParent); | ||
| 72 | |||
| 73 | List<SysDict> selectAll(); | ||
| 74 | |||
| 75 | int deleteByTypeId(@Param("typeid") String typeid); | ||
| 76 | } | 
| 1 | package com.pashanhoo.dictionary.model.dto; | ||
| 2 | |||
| 3 | import io.swagger.annotations.ApiModel; | ||
| 4 | import io.swagger.annotations.ApiModelProperty; | ||
| 5 | import lombok.Data; | ||
| 6 | |||
| 7 | import java.io.Serializable; | ||
| 8 | import java.util.List; | ||
| 9 | |||
| 10 | /** | ||
| 11 | * 字典表 | ||
| 12 | */ | ||
| 13 | @ApiModel(value = "extraction-model-SysDict") | ||
| 14 | @Data | ||
| 15 | public class SysDict implements Serializable { | ||
| 16 | /** | ||
| 17 | * 字典主键 | ||
| 18 | */ | ||
| 19 | @ApiModelProperty(value = "字典主键") | ||
| 20 | private String dictId; | ||
| 21 | |||
| 22 | /** | ||
| 23 | * 父级ID | ||
| 24 | */ | ||
| 25 | @ApiModelProperty(value = "父级ID") | ||
| 26 | private String parentId; | ||
| 27 | |||
| 28 | /** | ||
| 29 | * 字典编码 | ||
| 30 | */ | ||
| 31 | @ApiModelProperty(value = "字典编码") | ||
| 32 | private String dcode; | ||
| 33 | |||
| 34 | /** | ||
| 35 | * 字典名称 | ||
| 36 | */ | ||
| 37 | @ApiModelProperty(value = "字典名称") | ||
| 38 | private String dname; | ||
| 39 | |||
| 40 | /** | ||
| 41 | * 排序号 | ||
| 42 | */ | ||
| 43 | @ApiModelProperty(value = "排序号") | ||
| 44 | private Short sort; | ||
| 45 | |||
| 46 | /** | ||
| 47 | * 是否树形 | ||
| 48 | */ | ||
| 49 | @ApiModelProperty(value = "是否树形") | ||
| 50 | private String isTree; | ||
| 51 | |||
| 52 | /** | ||
| 53 | * 类型ID | ||
| 54 | */ | ||
| 55 | @ApiModelProperty(value = "类型ID") | ||
| 56 | private String typeId; | ||
| 57 | |||
| 58 | private List<SysDict> children; | ||
| 59 | |||
| 60 | private static final long serialVersionUID = 1L; | ||
| 61 | } | 
| 1 | package com.pashanhoo.dictionary.model.vo; | ||
| 2 | |||
| 3 | import com.pashanhoo.dictionary.model.dto.SysDict; | ||
| 4 | import io.swagger.annotations.ApiModel; | ||
| 5 | import lombok.Data; | ||
| 6 | import lombok.EqualsAndHashCode; | ||
| 7 | |||
| 8 | import java.util.List; | ||
| 9 | |||
| 10 | @Data | ||
| 11 | @ApiModel("字典表编辑请求实体") | ||
| 12 | @EqualsAndHashCode(callSuper = false) | ||
| 13 | public class EditDictVo { | ||
| 14 | |||
| 15 | List<SysDict> editDicts; | ||
| 16 | } | 
| 1 | package com.pashanhoo.dictionary.model.vo; | ||
| 2 | |||
| 3 | import com.pashanhoo.dictionary.model.dto.SysDict; | ||
| 4 | import io.swagger.annotations.ApiModel; | ||
| 5 | import io.swagger.annotations.ApiModelProperty; | ||
| 6 | import lombok.Data; | ||
| 7 | import lombok.EqualsAndHashCode; | ||
| 8 | |||
| 9 | import java.util.List; | ||
| 10 | |||
| 11 | @Data | ||
| 12 | @ApiModel("获取字典表父级集合实体") | ||
| 13 | @EqualsAndHashCode(callSuper = false) | ||
| 14 | public class GetSysDictParentVo { | ||
| 15 | |||
| 16 | /** | ||
| 17 | * 字典主键 | ||
| 18 | */ | ||
| 19 | @ApiModelProperty(value = "字典主键") | ||
| 20 | private String dictId; | ||
| 21 | |||
| 22 | /** | ||
| 23 | * 父级ID | ||
| 24 | */ | ||
| 25 | @ApiModelProperty(value = "父级ID") | ||
| 26 | private String parentId; | ||
| 27 | |||
| 28 | /** | ||
| 29 | * 字典编码 | ||
| 30 | */ | ||
| 31 | @ApiModelProperty(value = "字典编码") | ||
| 32 | private String dcode; | ||
| 33 | |||
| 34 | /** | ||
| 35 | * 字典名称 | ||
| 36 | */ | ||
| 37 | @ApiModelProperty(value = "字典名称") | ||
| 38 | private String dname; | ||
| 39 | |||
| 40 | /** | ||
| 41 | * 排序号 | ||
| 42 | */ | ||
| 43 | @ApiModelProperty(value = "排序号") | ||
| 44 | private Short sort; | ||
| 45 | |||
| 46 | /** | ||
| 47 | * 是否树形 | ||
| 48 | */ | ||
| 49 | @ApiModelProperty(value = "是否树形") | ||
| 50 | private String isTree; | ||
| 51 | |||
| 52 | /** | ||
| 53 | * 类型ID | ||
| 54 | */ | ||
| 55 | @ApiModelProperty(value = "类型ID") | ||
| 56 | private String typeId; | ||
| 57 | |||
| 58 | /** | ||
| 59 | * 序号 | ||
| 60 | */ | ||
| 61 | @ApiModelProperty(value = "序号") | ||
| 62 | private Integer rowNum; | ||
| 63 | |||
| 64 | private List<SysDict> children; | ||
| 65 | |||
| 66 | private static final long serialVersionUID = 1L; | ||
| 67 | } | 
| 1 | package com.pashanhoo.dictionary.model.vo; | ||
| 2 | |||
| 3 | import com.pashanhoo.common.PageInfo; | ||
| 4 | import io.swagger.annotations.ApiModel; | ||
| 5 | import io.swagger.annotations.ApiModelProperty; | ||
| 6 | import lombok.Data; | ||
| 7 | import lombok.EqualsAndHashCode; | ||
| 8 | |||
| 9 | import java.io.Serializable; | ||
| 10 | |||
| 11 | @Data | ||
| 12 | @ApiModel("字典表请求实体") | ||
| 13 | @EqualsAndHashCode(callSuper = false) | ||
| 14 | public class SysDictVo extends PageInfo implements Serializable { | ||
| 15 | |||
| 16 | /** | ||
| 17 | * 字典编码 | ||
| 18 | */ | ||
| 19 | @ApiModelProperty(value = "字典编码") | ||
| 20 | private String dcode; | ||
| 21 | |||
| 22 | /** | ||
| 23 | * 字典名称 | ||
| 24 | */ | ||
| 25 | @ApiModelProperty(value = "字典名称") | ||
| 26 | private String dname; | ||
| 27 | |||
| 28 | /** | ||
| 29 | * 类型ID | ||
| 30 | */ | ||
| 31 | @ApiModelProperty(value = "类型ID") | ||
| 32 | private String typeId; | ||
| 33 | } | 
| 1 | package com.pashanhoo.dictionary.service; | ||
| 2 | |||
| 3 | import com.github.pagehelper.PageInfo; | ||
| 4 | import com.pashanhoo.dictionary.model.dto.SysDict; | ||
| 5 | import com.pashanhoo.dictionary.model.vo.EditDictVo; | ||
| 6 | import com.pashanhoo.dictionary.model.vo.GetSysDictParentVo; | ||
| 7 | import com.pashanhoo.dictionary.model.vo.SysDictVo; | ||
| 8 | |||
| 9 | import java.util.List; | ||
| 10 | |||
| 11 | public interface SysDictService { | ||
| 12 | |||
| 13 | /** | ||
| 14 | * 删除 | ||
| 15 | * @param dictid | ||
| 16 | * @return | ||
| 17 | */ | ||
| 18 | int deleteByPrimaryKey(String dictid); | ||
| 19 | |||
| 20 | /** | ||
| 21 | * 插入 | ||
| 22 | * @param record | ||
| 23 | * @return | ||
| 24 | */ | ||
| 25 | int insert(SysDict record); | ||
| 26 | |||
| 27 | /** | ||
| 28 | * 插入 | ||
| 29 | * @param record | ||
| 30 | * @return | ||
| 31 | */ | ||
| 32 | int insertSelective(SysDict record); | ||
| 33 | |||
| 34 | /** | ||
| 35 | * 查询 | ||
| 36 | * @param dictid | ||
| 37 | * @return | ||
| 38 | */ | ||
| 39 | SysDict selectByPrimaryKey(String dictid); | ||
| 40 | |||
| 41 | /** | ||
| 42 | * 更新 | ||
| 43 | * @param record | ||
| 44 | * @return | ||
| 45 | */ | ||
| 46 | int updateByPrimaryKeySelective(SysDict record); | ||
| 47 | |||
| 48 | /** | ||
| 49 | * 更新 | ||
| 50 | * @param record | ||
| 51 | * @return | ||
| 52 | */ | ||
| 53 | int updateByPrimaryKey(SysDict record); | ||
| 54 | |||
| 55 | /** | ||
| 56 | * 批量更新 | ||
| 57 | * @param list | ||
| 58 | * @return | ||
| 59 | */ | ||
| 60 | int updateBatch(List<SysDict> list); | ||
| 61 | |||
| 62 | /** | ||
| 63 | * 批量更新 | ||
| 64 | * @param list | ||
| 65 | * @return | ||
| 66 | */ | ||
| 67 | int updateBatchSelective(List<SysDict> list); | ||
| 68 | |||
| 69 | /** | ||
| 70 | * 批量插入 | ||
| 71 | * @param list | ||
| 72 | * @return | ||
| 73 | */ | ||
| 74 | int batchInsert(List<SysDict> list); | ||
| 75 | |||
| 76 | /** | ||
| 77 | * 获取父级字典表 | ||
| 78 | * @param request | ||
| 79 | * @return | ||
| 80 | */ | ||
| 81 | PageInfo<GetSysDictParentVo> getSysDictParent(SysDictVo request); | ||
| 82 | |||
| 83 | /** | ||
| 84 | * 根据typeId查询 | ||
| 85 | * @param typeId | ||
| 86 | * @return | ||
| 87 | */ | ||
| 88 | List<SysDict> getSysDictByTypeId(String typeId); | ||
| 89 | |||
| 90 | /** | ||
| 91 | * 编辑字典表 | ||
| 92 | * @param request | ||
| 93 | * @return | ||
| 94 | */ | ||
| 95 | int editSysDict(EditDictVo request); | ||
| 96 | |||
| 97 | /** | ||
| 98 | * 查询全部 | ||
| 99 | * @return | ||
| 100 | */ | ||
| 101 | List<SysDict> selectAll(); | ||
| 102 | |||
| 103 | } | 
| 1 | package com.pashanhoo.dictionary.service.impl; | ||
| 2 | |||
| 3 | import com.github.pagehelper.PageHelper; | ||
| 4 | import com.github.pagehelper.PageInfo; | ||
| 5 | import com.pashanhoo.dictionary.dao.SysDictMapper; | ||
| 6 | import com.pashanhoo.dictionary.model.dto.SysDict; | ||
| 7 | import com.pashanhoo.dictionary.model.vo.EditDictVo; | ||
| 8 | import com.pashanhoo.dictionary.model.vo.GetSysDictParentVo; | ||
| 9 | import com.pashanhoo.dictionary.model.vo.SysDictVo; | ||
| 10 | import com.pashanhoo.dictionary.service.SysDictService; | ||
| 11 | import org.springframework.stereotype.Service; | ||
| 12 | import org.springframework.transaction.annotation.Transactional; | ||
| 13 | |||
| 14 | import javax.annotation.Resource; | ||
| 15 | import java.util.ArrayList; | ||
| 16 | import java.util.List; | ||
| 17 | import java.util.stream.Collectors; | ||
| 18 | |||
| 19 | @Service | ||
| 20 | public class SysDictServiceImpl implements SysDictService { | ||
| 21 | |||
| 22 | @Resource | ||
| 23 | private SysDictMapper sysDictMapper; | ||
| 24 | |||
| 25 | /** | ||
| 26 | * 查询 | ||
| 27 | * @param dictid | ||
| 28 | * @return | ||
| 29 | */ | ||
| 30 | @Override | ||
| 31 | public int deleteByPrimaryKey(String dictid) { | ||
| 32 | return sysDictMapper.deleteByPrimaryKey(dictid); | ||
| 33 | } | ||
| 34 | |||
| 35 | /** | ||
| 36 | * 插入 | ||
| 37 | * @param record | ||
| 38 | * @return | ||
| 39 | */ | ||
| 40 | @Override | ||
| 41 | public int insert(SysDict record) { | ||
| 42 | return sysDictMapper.insert(record); | ||
| 43 | } | ||
| 44 | |||
| 45 | /** | ||
| 46 | * 插入 | ||
| 47 | * @param record | ||
| 48 | * @return | ||
| 49 | */ | ||
| 50 | @Override | ||
| 51 | public int insertSelective(SysDict record) { | ||
| 52 | return sysDictMapper.insertSelective(record); | ||
| 53 | } | ||
| 54 | |||
| 55 | /** | ||
| 56 | * 查询 | ||
| 57 | * @param dictid | ||
| 58 | * @return | ||
| 59 | */ | ||
| 60 | @Override | ||
| 61 | public SysDict selectByPrimaryKey(String dictid) { | ||
| 62 | return sysDictMapper.selectByPrimaryKey(dictid); | ||
| 63 | } | ||
| 64 | |||
| 65 | /** | ||
| 66 | * 更新 | ||
| 67 | * @param record | ||
| 68 | * @return | ||
| 69 | */ | ||
| 70 | @Override | ||
| 71 | public int updateByPrimaryKeySelective(SysDict record) { | ||
| 72 | return sysDictMapper.updateByPrimaryKeySelective(record); | ||
| 73 | } | ||
| 74 | |||
| 75 | /** | ||
| 76 | * 更新 | ||
| 77 | * @param record | ||
| 78 | * @return | ||
| 79 | */ | ||
| 80 | @Override | ||
| 81 | public int updateByPrimaryKey(SysDict record) { | ||
| 82 | return sysDictMapper.updateByPrimaryKey(record); | ||
| 83 | } | ||
| 84 | |||
| 85 | /** | ||
| 86 | * 批量更新 | ||
| 87 | * @param list | ||
| 88 | * @return | ||
| 89 | */ | ||
| 90 | @Override | ||
| 91 | public int updateBatch(List<SysDict> list) { | ||
| 92 | return sysDictMapper.updateBatch(list); | ||
| 93 | } | ||
| 94 | |||
| 95 | /** | ||
| 96 | * 批量更新 | ||
| 97 | * @param list | ||
| 98 | * @return | ||
| 99 | */ | ||
| 100 | @Override | ||
| 101 | public int updateBatchSelective(List<SysDict> list) { | ||
| 102 | return sysDictMapper.updateBatchSelective(list); | ||
| 103 | } | ||
| 104 | |||
| 105 | /** | ||
| 106 | * 批量插入 | ||
| 107 | * @param list | ||
| 108 | * @return | ||
| 109 | */ | ||
| 110 | @Override | ||
| 111 | public int batchInsert(List<SysDict> list) { | ||
| 112 | return sysDictMapper.batchInsert(list); | ||
| 113 | } | ||
| 114 | |||
| 115 | /** | ||
| 116 | * 获取父级字典表 | ||
| 117 | * @param request | ||
| 118 | * @return | ||
| 119 | */ | ||
| 120 | @Override | ||
| 121 | public PageInfo<GetSysDictParentVo> getSysDictParent(SysDictVo request) { | ||
| 122 | PageHelper.startPage(request.getCurrentPage(), request.getPageSize()); | ||
| 123 | List<GetSysDictParentVo> list = sysDictMapper.getSysDictParent(request); | ||
| 124 | return new PageInfo<>(list); | ||
| 125 | } | ||
| 126 | |||
| 127 | /** | ||
| 128 | * 根据typeId查询字典表 | ||
| 129 | * @param typeId | ||
| 130 | * @return | ||
| 131 | */ | ||
| 132 | @Override | ||
| 133 | public List<SysDict> getSysDictByTypeId(String typeId) { | ||
| 134 | return sysDictMapper.getSysDictByTypeId(typeId); | ||
| 135 | } | ||
| 136 | |||
| 137 | /** | ||
| 138 | * root节点只做更新,子节点全部删除再批量插入 | ||
| 139 | * @param request | ||
| 140 | * @return | ||
| 141 | */ | ||
| 142 | @Override | ||
| 143 | @Transactional(rollbackFor = Exception.class) | ||
| 144 | public int editSysDict(EditDictVo request) { | ||
| 145 | List<SysDict> editDicts = request.getEditDicts(); | ||
| 146 | List<SysDict> parent = editDicts.stream().filter(item -> item.getParentId() == null).collect(Collectors.toList()); | ||
| 147 | sysDictMapper.updateByPrimaryKey(parent.get(0)); | ||
| 148 | |||
| 149 | List<SysDict> dictWithoutParent = editDicts.stream().filter(item -> item.getParentId() != null).collect(Collectors.toList()); | ||
| 150 | List<SysDict> result = new ArrayList<>(); | ||
| 151 | //递归所有子集 | ||
| 152 | List<SysDict> resultList = getAllSysDict(dictWithoutParent,result); | ||
| 153 | |||
| 154 | //删除除了根目录的所有子集 | ||
| 155 | sysDictMapper.deleteByTypeId(resultList.get(0).getTypeId()); | ||
| 156 | return sysDictMapper.batchInsert(resultList); | ||
| 157 | } | ||
| 158 | |||
| 159 | /** | ||
| 160 | * 查询所有字典表 | ||
| 161 | * @return | ||
| 162 | */ | ||
| 163 | @Override | ||
| 164 | public List<SysDict> selectAll() { | ||
| 165 | return sysDictMapper.selectAll(); | ||
| 166 | } | ||
| 167 | |||
| 168 | |||
| 169 | private List<SysDict> getAllSysDict(List<SysDict> dicts, List<SysDict> result) { | ||
| 170 | |||
| 171 | for (SysDict SYSDICT : dicts) { | ||
| 172 | List<SysDict> children = SYSDICT.getChildren(); | ||
| 173 | result.add(SYSDICT); | ||
| 174 | if (children != null) { | ||
| 175 | getAllSysDict(children, result); | ||
| 176 | } | ||
| 177 | } | ||
| 178 | |||
| 179 | return result; | ||
| 180 | } | ||
| 181 | |||
| 182 | } | 
src/main/resources/application-dev.yaml
0 → 100644
| 1 | server: | ||
| 2 | port: 8866 | ||
| 3 | servlet: | ||
| 4 | session: | ||
| 5 | timeout: 43200 | ||
| 6 | |||
| 7 | spring: | ||
| 8 | servlet: | ||
| 9 | multipart: | ||
| 10 | maxFileSize: 10MB | ||
| 11 | maxRequestSize: 10MB | ||
| 12 | application: | ||
| 13 | name: archive-system | ||
| 14 | profiles: | ||
| 15 | active: dev | ||
| 16 | jackson: | ||
| 17 | time-zone: GMT+8 | ||
| 18 | date-format: yyyy-MM-dd HH:mm:ss | ||
| 19 | default-property-inclusion: non_null | ||
| 20 | datasource: | ||
| 21 | driver-class-name: oracle.jdbc.driver.OracleDriver | ||
| 22 | username: bdcdjsb | ||
| 23 | password: bdcdjsb | ||
| 24 | url: jdbc:oracle:thin:@192.168.2.218:1521:orcl | ||
| 25 | |||
| 26 | mybatis-plus: | ||
| 27 | mapper-locations: classpath:mapper/**/*.xml | ||
| 28 | typeAliasesPackage: archive | ||
| 29 | global-config: | ||
| 30 | #主键类型 0:"数据库ID自增", 1:"用户输入ID",2:"全局唯一ID (数字类型唯一ID)", 3:"全局唯一ID UUID"; | ||
| 31 | id-type: 2 | ||
| 32 | #字段策略 0:"忽略判断",1:"非 NULL 判断"),2:"非空判断" | ||
| 33 | field-strategy: 1 | ||
| 34 | #驼峰下划线转换 | ||
| 35 | db-column-underline: true | ||
| 36 | #刷新mapper 调试神器 | ||
| 37 | refresh-mapper: true | ||
| 38 | #数据库大写下划线转换 | ||
| 39 | #capital-mode: true | ||
| 40 | #序列接口实现类配置 | ||
| 41 | #key-generator: com.baomidou.springboot.xxx | ||
| 42 | #逻辑删除配置 | ||
| 43 | logic-delete-value: -1 | ||
| 44 | logic-not-delete-0: 0 | ||
| 45 | #自定义填充策略接口实现 | ||
| 46 | #meta-object-handler: com.baomidou.springboot.xxx | ||
| 47 | #自定义SQL注入器 | ||
| 48 | # sql-injector: com.baomidou.mybatisplus.mapper.LogicSqlInjector | ||
| 49 | configuration: | ||
| 50 | map-underscore-to-camel-case: true | ||
| 51 | cache-enabled: false | ||
| 52 | call-setters-on-nulls: true | ||
| 53 | log-impl: org.apache.ibatis.logging.stdout.StdOutImpl | ||
| 54 | |||
| 55 | management: | ||
| 56 | endpoints: | ||
| 57 | web: | ||
| 58 | exposure: | ||
| 59 | include: "*" | ||
| 60 | |||
| 61 | logging: | ||
| 62 | level: | ||
| 63 | rent: | ||
| 64 | mapper: debug | ||
| 65 | config: "classpath:logback-spring.xml" | ||
| 66 | |||
| 67 | #app: | ||
| 68 | # attachment[0]: | ||
| 69 | # name: S1 | ||
| 70 | # type: minIO | ||
| 71 | # params: | ||
| 72 | # type: http:// | ||
| 73 | # bucket: archiveSystem | ||
| 74 | # host: 192.168.2.218 | ||
| 75 | # port: 9000 | ||
| 76 | # user: minioadmin | ||
| 77 | # password: minioadmin | 
src/main/resources/application.yaml
0 → 100644
src/main/resources/logback-spring.xml
0 → 100644
| 1 | <?xml version="1.0" encoding="UTF-8"?> | ||
| 2 | <!-- 日志级别从低到高分为TRACE < DEBUG < INFO < WARN < ERROR < FATAL,如果设置为WARN,则低于WARN的信息都不会输出 --> | ||
| 3 | <!-- scan:当此属性设置为true时,配置文件如果发生改变,将会被重新加载,默认值为true --> | ||
| 4 | <!-- scanPeriod:设置监测配置文件是否有修改的时间间隔,如果没有给出时间单位,默认单位是毫秒。当scan为true时,此属性生效。默认的时间间隔为1分钟。 --> | ||
| 5 | <!-- debug:当此属性设置为true时,将打印出logback内部日志信息,实时查看logback运行状态。默认值为false。 --> | ||
| 6 | <configuration scan="true" scanPeriod="10 seconds"> | ||
| 7 | |||
| 8 | <!--<include resource="org/springframework/boot/logging/logback/base.xml" />--> | ||
| 9 | |||
| 10 | <contextName>logback</contextName> | ||
| 11 | <!-- name的值是变量的名称,value的值时变量定义的值。通过定义的值会被插入到logger上下文中。定义变量后,可以使“${}”来使用变量。 --> | ||
| 12 | <property name="log.path" value="/home/project/logs" /> | ||
| 13 | |||
| 14 | <!-- 彩色日志 --> | ||
| 15 | <!-- 彩色日志依赖的渲染类 --> | ||
| 16 | <conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter" /> | ||
| 17 | <conversionRule conversionWord="wex" converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter" /> | ||
| 18 | <conversionRule conversionWord="wEx" converterClass="org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter" /> | ||
| 19 | <!-- 彩色日志格式 --> | ||
| 20 | <property name="CONSOLE_LOG_PATTERN" value="${CONSOLE_LOG_PATTERN:-%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/> | ||
| 21 | |||
| 22 | |||
| 23 | <!--输出到控制台--> | ||
| 24 | <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender"> | ||
| 25 | <!--此日志appender是为开发使用,只配置最底级别,控制台输出的日志级别是大于或等于此级别的日志信息--> | ||
| 26 | <filter class="ch.qos.logback.classic.filter.ThresholdFilter"> | ||
| 27 | <level>debug</level> | ||
| 28 | </filter> | ||
| 29 | <encoder> | ||
| 30 | <Pattern>${CONSOLE_LOG_PATTERN}</Pattern> | ||
| 31 | <!-- 设置字符集 --> | ||
| 32 | <charset>UTF-8</charset> | ||
| 33 | </encoder> | ||
| 34 | </appender> | ||
| 35 | |||
| 36 | |||
| 37 | <!--输出到文件--> | ||
| 38 | |||
| 39 | <!-- 时间滚动输出 level为 DEBUG 日志 --> | ||
| 40 | <!-- <appender name="DEBUG_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">--> | ||
| 41 | <!-- <!– 正在记录的日志文件的路径及文件名 –>--> | ||
| 42 | <!-- <file>${log.path}/log_debug.log</file>--> | ||
| 43 | <!-- <!–日志文件输出格式–>--> | ||
| 44 | <!-- <encoder>--> | ||
| 45 | <!-- <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>--> | ||
| 46 | <!-- <charset>UTF-8</charset> <!– 设置字符集 –>--> | ||
| 47 | <!-- </encoder>--> | ||
| 48 | <!-- <!– 日志记录器的滚动策略,按日期,按大小记录 –>--> | ||
| 49 | <!-- <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">--> | ||
| 50 | <!-- <!– 日志归档 –>--> | ||
| 51 | <!-- <fileNamePattern>${log.path}/debug/log-debug-%d{yyyy-MM-dd}.%i.log</fileNamePattern>--> | ||
| 52 | <!-- <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">--> | ||
| 53 | <!-- <maxFileSize>100MB</maxFileSize>--> | ||
| 54 | <!-- </timeBasedFileNamingAndTriggeringPolicy>--> | ||
| 55 | <!-- <!–日志文件保留天数–>--> | ||
| 56 | <!-- <maxHistory>15</maxHistory>--> | ||
| 57 | <!-- </rollingPolicy>--> | ||
| 58 | <!-- <!– 此日志文件只记录debug级别的 –>--> | ||
| 59 | <!-- <filter class="ch.qos.logback.classic.filter.LevelFilter">--> | ||
| 60 | <!-- <level>debug</level>--> | ||
| 61 | <!-- <onMatch>ACCEPT</onMatch>--> | ||
| 62 | <!-- <onMismatch>DENY</onMismatch>--> | ||
| 63 | <!-- </filter>--> | ||
| 64 | <!-- </appender>--> | ||
| 65 | |||
| 66 | <!-- 时间滚动输出 level为 INFO 日志 --> | ||
| 67 | <appender name="INFO_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> | ||
| 68 | <!-- 正在记录的日志文件的路径及文件名 --> | ||
| 69 | <file>${log.path}/log_info.log</file> | ||
| 70 | <!--日志文件输出格式--> | ||
| 71 | <encoder> | ||
| 72 | <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern> | ||
| 73 | <charset>UTF-8</charset> | ||
| 74 | </encoder> | ||
| 75 | <!-- 日志记录器的滚动策略,按日期,按大小记录 --> | ||
| 76 | <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> | ||
| 77 | <!-- 每天日志归档路径以及格式 --> | ||
| 78 | <fileNamePattern>${log.path}/info/log-info-%d{yyyy-MM-dd}.%i.log</fileNamePattern> | ||
| 79 | <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> | ||
| 80 | <maxFileSize>100MB</maxFileSize> | ||
| 81 | </timeBasedFileNamingAndTriggeringPolicy> | ||
| 82 | <!--日志文件保留天数--> | ||
| 83 | <maxHistory>15</maxHistory> | ||
| 84 | </rollingPolicy> | ||
| 85 | <!-- 此日志文件只记录info级别的 --> | ||
| 86 | <filter class="ch.qos.logback.classic.filter.LevelFilter"> | ||
| 87 | <level>info</level> | ||
| 88 | <onMatch>ACCEPT</onMatch> | ||
| 89 | <onMismatch>DENY</onMismatch> | ||
| 90 | </filter> | ||
| 91 | </appender> | ||
| 92 | |||
| 93 | <!-- 时间滚动输出 level为 WARN 日志 --> | ||
| 94 | <appender name="WARN_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> | ||
| 95 | <!-- 正在记录的日志文件的路径及文件名 --> | ||
| 96 | <file>${log.path}/log_warn.log</file> | ||
| 97 | <!--日志文件输出格式--> | ||
| 98 | <encoder> | ||
| 99 | <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern> | ||
| 100 | <charset>UTF-8</charset> <!-- 此处设置字符集 --> | ||
| 101 | </encoder> | ||
| 102 | <!-- 日志记录器的滚动策略,按日期,按大小记录 --> | ||
| 103 | <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> | ||
| 104 | <fileNamePattern>${log.path}/warn/log-warn-%d{yyyy-MM-dd}.%i.log</fileNamePattern> | ||
| 105 | <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> | ||
| 106 | <maxFileSize>100MB</maxFileSize> | ||
| 107 | </timeBasedFileNamingAndTriggeringPolicy> | ||
| 108 | <!--日志文件保留天数--> | ||
| 109 | <maxHistory>15</maxHistory> | ||
| 110 | </rollingPolicy> | ||
| 111 | <!-- 此日志文件只记录warn级别的 --> | ||
| 112 | <filter class="ch.qos.logback.classic.filter.LevelFilter"> | ||
| 113 | <level>warn</level> | ||
| 114 | <onMatch>ACCEPT</onMatch> | ||
| 115 | <onMismatch>DENY</onMismatch> | ||
| 116 | </filter> | ||
| 117 | </appender> | ||
| 118 | <logger name="house.platform.mapper" level="DEBUG" /> | ||
| 119 | |||
| 120 | <!-- 时间滚动输出 level为 ERROR 日志 --> | ||
| 121 | <appender name="ERROR_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> | ||
| 122 | <!-- 正在记录的日志文件的路径及文件名 --> | ||
| 123 | <file>${log.path}/log_error.log</file> | ||
| 124 | <!--日志文件输出格式--> | ||
| 125 | <encoder> | ||
| 126 | <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern> | ||
| 127 | <charset>UTF-8</charset> <!-- 此处设置字符集 --> | ||
| 128 | </encoder> | ||
| 129 | <!-- 日志记录器的滚动策略,按日期,按大小记录 --> | ||
| 130 | <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> | ||
| 131 | <fileNamePattern>${log.path}/error/log-error-%d{yyyy-MM-dd}.%i.log</fileNamePattern> | ||
| 132 | <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> | ||
| 133 | <maxFileSize>100MB</maxFileSize> | ||
| 134 | </timeBasedFileNamingAndTriggeringPolicy> | ||
| 135 | <!--日志文件保留天数--> | ||
| 136 | <maxHistory>15</maxHistory> | ||
| 137 | </rollingPolicy> | ||
| 138 | <!-- 此日志文件只记录ERROR级别的 --> | ||
| 139 | <filter class="ch.qos.logback.classic.filter.LevelFilter"> | ||
| 140 | <level>ERROR</level> | ||
| 141 | <onMatch>ACCEPT</onMatch> | ||
| 142 | <onMismatch>DENY</onMismatch> | ||
| 143 | </filter> | ||
| 144 | </appender> | ||
| 145 | |||
| 146 | <!-- | ||
| 147 | <logger>用来设置某一个包或者具体的某一个类的日志打印级别、 | ||
| 148 | 以及指定<appender>。<logger>仅有一个name属性, | ||
| 149 | 一个可选的level和一个可选的addtivity属性。 | ||
| 150 | name:用来指定受此logger约束的某一个包或者具体的某一个类。 | ||
| 151 | level:用来设置打印级别,大小写无关:TRACE, DEBUG, INFO, WARN, ERROR, ALL 和 OFF, | ||
| 152 | 还有一个特俗值INHERITED或者同义词NULL,代表强制执行上级的级别。 | ||
| 153 | 如果未设置此属性,那么当前logger将会继承上级的级别。 | ||
| 154 | addtivity:是否向上级logger传递打印信息。默认是true。 | ||
| 155 | --> | ||
| 156 | <!--<logger name="org.springframework.web" level="info"/>--> | ||
| 157 | <!--<logger name="org.springframework.scheduling.annotation.ScheduledAnnotationBeanPostProcessor" level="INFO"/>--> | ||
| 158 | <!-- | ||
| 159 | 使用mybatis的时候,sql语句是debug下才会打印,而这里我们只配置了info,所以想要查看sql语句的话,有以下两种操作: | ||
| 160 | 第一种把<root level="info">改成<root level="DEBUG">这样就会打印sql,不过这样日志那边会出现很多其他消息 | ||
| 161 | 第二种就是单独给dao下目录配置debug模式,代码如下,这样配置sql语句会打印,其他还是正常info级别: | ||
| 162 | --> | ||
| 163 | |||
| 164 | |||
| 165 | <!-- | ||
| 166 | root节点是必选节点,用来指定最基础的日志输出级别,只有一个level属性 | ||
| 167 | level:用来设置打印级别,大小写无关:TRACE, DEBUG, INFO, WARN, ERROR, ALL 和 OFF, | ||
| 168 | 不能设置为INHERITED或者同义词NULL。默认是DEBUG | ||
| 169 | 可以包含零个或多个元素,标识这个appender将会添加到这个logger。 | ||
| 170 | --> | ||
| 171 | |||
| 172 | <!--开发环境:打印控制台--> | ||
| 173 | <springProfile name="dev"> | ||
| 174 | <logger name="com.house" level="info"/> | ||
| 175 | </springProfile> | ||
| 176 | |||
| 177 | <root level="INFO"> | ||
| 178 | <appender-ref ref="CONSOLE" /> | ||
| 179 | <!-- <appender-ref ref="DEBUG_FILE" />--> | ||
| 180 | <appender-ref ref="INFO_FILE" /> | ||
| 181 | <appender-ref ref="WARN_FILE" /> | ||
| 182 | <appender-ref ref="ERROR_FILE" /> | ||
| 183 | </root> | ||
| 184 | |||
| 185 | <!--生产环境:输出到文件--> | ||
| 186 | <!--<springProfile name="pro">--> | ||
| 187 | <!--<root level="info">--> | ||
| 188 | <!--<appender-ref ref="CONSOLE" />--> | ||
| 189 | <!--<appender-ref ref="DEBUG_FILE" />--> | ||
| 190 | <!--<appender-ref ref="INFO_FILE" />--> | ||
| 191 | <!--<appender-ref ref="ERROR_FILE" />--> | ||
| 192 | <!--<appender-ref ref="WARN_FILE" />--> | ||
| 193 | <!--</root>--> | ||
| 194 | <!--</springProfile>--> | ||
| 195 | |||
| 196 | </configuration> | 
src/main/resources/mapper/SysDictMapper.xml
0 → 100644
| 1 | <?xml version="1.0" encoding="UTF-8"?> | ||
| 2 | <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> | ||
| 3 | <mapper namespace="com.pashanhoo.dictionary.dao.SysDictMapper"> | ||
| 4 | <resultMap id="BaseResultMap" type="com.pashanhoo.dictionary.model.dto.SysDict"> | ||
| 5 | <!--@mbg.generated--> | ||
| 6 | <!--@Table SYS_DICT--> | ||
| 7 | <id column="DICTID" jdbcType="VARCHAR" property="dictId"/> | ||
| 8 | <result column="PARENTID" jdbcType="VARCHAR" property="parentId"/> | ||
| 9 | <result column="DCODE" jdbcType="VARCHAR" property="dcode"/> | ||
| 10 | <result column="DNAME" jdbcType="VARCHAR" property="dname"/> | ||
| 11 | <result column="SORT" jdbcType="DECIMAL" property="sort"/> | ||
| 12 | <result column="ISTREE" jdbcType="CHAR" property="isTree"/> | ||
| 13 | <result column="TYPEID" jdbcType="VARCHAR" property="typeId"/> | ||
| 14 | </resultMap> | ||
| 15 | <sql id="Base_Column_List"> | ||
| 16 | <!--@mbg.generated--> | ||
| 17 | DICTID, PARENTID, DCODE, DNAME, SORT, ISTREE, TYPEID | ||
| 18 | </sql> | ||
| 19 | <select id="selectByPrimaryKey" parameterType="java.lang.String" resultMap="BaseResultMap"> | ||
| 20 | <!--@mbg.generated--> | ||
| 21 | select | ||
| 22 | <include refid="Base_Column_List"/> | ||
| 23 | from SYS_DICT | ||
| 24 | where DICTID = #{dictid,jdbcType=VARCHAR} | ||
| 25 | </select> | ||
| 26 | <delete id="deleteByPrimaryKey" parameterType="java.lang.String"> | ||
| 27 | <!--@mbg.generated--> | ||
| 28 | delete | ||
| 29 | from SYS_DICT | ||
| 30 | where DICTID = #{dictid,jdbcType=VARCHAR} | ||
| 31 | </delete> | ||
| 32 | <insert id="insert" parameterType="com.pashanhoo.dictionary.model.dto.SysDict"> | ||
| 33 | <!--@mbg.generated--> | ||
| 34 | insert into SYS_DICT (DICTID, PARENTID, DCODE, | ||
| 35 | DNAME, SORT, ISTREE, TYPEID) | ||
| 36 | values (#{dictId,jdbcType=VARCHAR}, #{parentId,jdbcType=VARCHAR}, #{dcode,jdbcType=VARCHAR}, | ||
| 37 | #{dname,jdbcType=VARCHAR}, #{sort,jdbcType=DECIMAL}, #{isTree,jdbcType=CHAR}, | ||
| 38 | #{typeId,jdbcType=VARCHAR}) | ||
| 39 | </insert> | ||
| 40 | <insert id="insertSelective" parameterType="com.pashanhoo.dictionary.model.dto.SysDict"> | ||
| 41 | <!--@mbg.generated--> | ||
| 42 | insert into SYS_DICT | ||
| 43 | <trim prefix="(" suffix=")" suffixOverrides=","> | ||
| 44 | <if test="dictId != null"> | ||
| 45 | DICTID, | ||
| 46 | </if> | ||
| 47 | <if test="parentId != null"> | ||
| 48 | PARENTID, | ||
| 49 | </if> | ||
| 50 | <if test="dcode != null"> | ||
| 51 | DCODE, | ||
| 52 | </if> | ||
| 53 | <if test="dname != null"> | ||
| 54 | DNAME, | ||
| 55 | </if> | ||
| 56 | <if test="sort != null"> | ||
| 57 | SORT, | ||
| 58 | </if> | ||
| 59 | <if test="isTree != null"> | ||
| 60 | ISTREE, | ||
| 61 | </if> | ||
| 62 | <if test="typeId != null"> | ||
| 63 | TYPEID, | ||
| 64 | </if> | ||
| 65 | </trim> | ||
| 66 | <trim prefix="values (" suffix=")" suffixOverrides=","> | ||
| 67 | <if test="dictId != null"> | ||
| 68 | #{dictId,jdbcType=VARCHAR}, | ||
| 69 | </if> | ||
| 70 | <if test="parentId != null"> | ||
| 71 | #{parentId,jdbcType=VARCHAR}, | ||
| 72 | </if> | ||
| 73 | <if test="dcode != null"> | ||
| 74 | #{dcode,jdbcType=VARCHAR}, | ||
| 75 | </if> | ||
| 76 | <if test="dname != null"> | ||
| 77 | #{dname,jdbcType=VARCHAR}, | ||
| 78 | </if> | ||
| 79 | <if test="sort != null"> | ||
| 80 | #{sort,jdbcType=DECIMAL}, | ||
| 81 | </if> | ||
| 82 | <if test="isTree != null"> | ||
| 83 | #{isTree,jdbcType=CHAR}, | ||
| 84 | </if> | ||
| 85 | <if test="typeId != null"> | ||
| 86 | #{typeId,jdbcType=VARCHAR}, | ||
| 87 | </if> | ||
| 88 | </trim> | ||
| 89 | </insert> | ||
| 90 | <update id="updateByPrimaryKeySelective" parameterType="com.pashanhoo.dictionary.model.dto.SysDict"> | ||
| 91 | <!--@mbg.generated--> | ||
| 92 | update SYS_DICT | ||
| 93 | <set> | ||
| 94 | <if test="parentId != null"> | ||
| 95 | PARENTID = #{parentId,jdbcType=VARCHAR}, | ||
| 96 | </if> | ||
| 97 | <if test="dcode != null"> | ||
| 98 | DCODE = #{dcode,jdbcType=VARCHAR}, | ||
| 99 | </if> | ||
| 100 | <if test="dname != null"> | ||
| 101 | DNAME = #{dname,jdbcType=VARCHAR}, | ||
| 102 | </if> | ||
| 103 | <if test="sort != null"> | ||
| 104 | SORT = #{sort,jdbcType=DECIMAL}, | ||
| 105 | </if> | ||
| 106 | <if test="isTree != null"> | ||
| 107 | ISTREE = #{isTree,jdbcType=CHAR}, | ||
| 108 | </if> | ||
| 109 | <if test="typeId != null"> | ||
| 110 | TYPEID = #{typeId,jdbcType=VARCHAR}, | ||
| 111 | </if> | ||
| 112 | </set> | ||
| 113 | where DICTID = #{dictId,jdbcType=VARCHAR} | ||
| 114 | </update> | ||
| 115 | <update id="updateByPrimaryKey" parameterType="com.pashanhoo.dictionary.model.dto.SysDict"> | ||
| 116 | <!--@mbg.generated--> | ||
| 117 | update SYS_DICT | ||
| 118 | set PARENTID = #{parentId,jdbcType=VARCHAR}, | ||
| 119 | DCODE = #{dcode,jdbcType=VARCHAR}, | ||
| 120 | DNAME = #{dname,jdbcType=VARCHAR}, | ||
| 121 | SORT = #{sort,jdbcType=DECIMAL}, | ||
| 122 | ISTREE = #{isTree,jdbcType=CHAR}, | ||
| 123 | TYPEID = #{typeId,jdbcType=VARCHAR} | ||
| 124 | where DICTID = #{dictId,jdbcType=VARCHAR} | ||
| 125 | </update> | ||
| 126 | <update id="updateBatch" parameterType="java.util.List"> | ||
| 127 | <!--@mbg.generated--> | ||
| 128 | update SYS_DICT | ||
| 129 | <trim prefix="set" suffixOverrides=","> | ||
| 130 | <trim prefix="PARENTID = case" suffix="end,"> | ||
| 131 | <foreach collection="list" index="index" item="item"> | ||
| 132 | when DICTID = #{item.dictId,jdbcType=VARCHAR} then #{item.parentId,jdbcType=VARCHAR} | ||
| 133 | </foreach> | ||
| 134 | </trim> | ||
| 135 | <trim prefix="DCODE = case" suffix="end,"> | ||
| 136 | <foreach collection="list" index="index" item="item"> | ||
| 137 | when DICTID = #{item.dictId,jdbcType=VARCHAR} then #{item.dcode,jdbcType=VARCHAR} | ||
| 138 | </foreach> | ||
| 139 | </trim> | ||
| 140 | <trim prefix="DNAME = case" suffix="end,"> | ||
| 141 | <foreach collection="list" index="index" item="item"> | ||
| 142 | when DICTID = #{item.dictId,jdbcType=VARCHAR} then #{item.dname,jdbcType=VARCHAR} | ||
| 143 | </foreach> | ||
| 144 | </trim> | ||
| 145 | <trim prefix="SORT = case" suffix="end,"> | ||
| 146 | <foreach collection="list" index="index" item="item"> | ||
| 147 | when DICTID = #{item.dictId,jdbcType=VARCHAR} then #{item.sort,jdbcType=DECIMAL} | ||
| 148 | </foreach> | ||
| 149 | </trim> | ||
| 150 | <trim prefix="ISTREE = case" suffix="end,"> | ||
| 151 | <foreach collection="list" index="index" item="item"> | ||
| 152 | when DICTID = #{item.dictId,jdbcType=VARCHAR} then #{item.isTree,jdbcType=CHAR} | ||
| 153 | </foreach> | ||
| 154 | </trim> | ||
| 155 | <trim prefix="TYPEID = case" suffix="end,"> | ||
| 156 | <foreach collection="list" index="index" item="item"> | ||
| 157 | when DICTID = #{item.dictId,jdbcType=VARCHAR} then #{item.typeId,jdbcType=VARCHAR} | ||
| 158 | </foreach> | ||
| 159 | </trim> | ||
| 160 | </trim> | ||
| 161 | where DICTID in | ||
| 162 | <foreach close=")" collection="list" item="item" open="(" separator=", "> | ||
| 163 | #{item.dictId,jdbcType=VARCHAR} | ||
| 164 | </foreach> | ||
| 165 | </update> | ||
| 166 | <update id="updateBatchSelective" parameterType="java.util.List"> | ||
| 167 | <!--@mbg.generated--> | ||
| 168 | update SYS_DICT | ||
| 169 | <trim prefix="set" suffixOverrides=","> | ||
| 170 | <trim prefix="PARENTID = case" suffix="end,"> | ||
| 171 | <foreach collection="list" index="index" item="item"> | ||
| 172 | <if test="item.parentId != null"> | ||
| 173 | when DICTID = #{item.dictId,jdbcType=VARCHAR} then #{item.parentId,jdbcType=VARCHAR} | ||
| 174 | </if> | ||
| 175 | </foreach> | ||
| 176 | </trim> | ||
| 177 | <trim prefix="DCODE = case" suffix="end,"> | ||
| 178 | <foreach collection="list" index="index" item="item"> | ||
| 179 | <if test="item.dcode != null"> | ||
| 180 | when DICTID = #{item.dictId,jdbcType=VARCHAR} then #{item.dcode,jdbcType=VARCHAR} | ||
| 181 | </if> | ||
| 182 | </foreach> | ||
| 183 | </trim> | ||
| 184 | <trim prefix="DNAME = case" suffix="end,"> | ||
| 185 | <foreach collection="list" index="index" item="item"> | ||
| 186 | <if test="item.dname != null"> | ||
| 187 | when DICTID = #{item.dictId,jdbcType=VARCHAR} then #{item.dname,jdbcType=VARCHAR} | ||
| 188 | </if> | ||
| 189 | </foreach> | ||
| 190 | </trim> | ||
| 191 | <trim prefix="SORT = case" suffix="end,"> | ||
| 192 | <foreach collection="list" index="index" item="item"> | ||
| 193 | <if test="item.sort != null"> | ||
| 194 | when DICTID = #{item.dictId,jdbcType=VARCHAR} then #{item.sort,jdbcType=DECIMAL} | ||
| 195 | </if> | ||
| 196 | </foreach> | ||
| 197 | </trim> | ||
| 198 | <trim prefix="ISTREE = case" suffix="end,"> | ||
| 199 | <foreach collection="list" index="index" item="item"> | ||
| 200 | <if test="item.isTree != null"> | ||
| 201 | when DICTID = #{item.dictId,jdbcType=VARCHAR} then #{item.isTree,jdbcType=CHAR} | ||
| 202 | </if> | ||
| 203 | </foreach> | ||
| 204 | </trim> | ||
| 205 | <trim prefix="TYPEID = case" suffix="end,"> | ||
| 206 | <foreach collection="list" index="index" item="item"> | ||
| 207 | <if test="item.typeId != null"> | ||
| 208 | when DICTID = #{item.dictId,jdbcType=VARCHAR} then #{item.typeId,jdbcType=VARCHAR} | ||
| 209 | </if> | ||
| 210 | </foreach> | ||
| 211 | </trim> | ||
| 212 | </trim> | ||
| 213 | where DICTID in | ||
| 214 | <foreach close=")" collection="list" item="item" open="(" separator=", "> | ||
| 215 | #{item.dictId,jdbcType=VARCHAR} | ||
| 216 | </foreach> | ||
| 217 | </update> | ||
| 218 | <insert id="batchInsert" parameterType="map"> | ||
| 219 | <!--@mbg.generated--> | ||
| 220 | insert into SYS_DICT | ||
| 221 | (DICTID, PARENTID, DCODE, DNAME, SORT, ISTREE, TYPEID) | ||
| 222 | |||
| 223 | <foreach collection="list" item="item" index="index" separator="union all"> | ||
| 224 | (select #{item.dictId,jdbcType=VARCHAR}, | ||
| 225 | #{item.parentId,jdbcType=VARCHAR}, | ||
| 226 | #{item.dcode,jdbcType=VARCHAR}, | ||
| 227 | #{item.dname,jdbcType=VARCHAR}, | ||
| 228 | #{item.sort,jdbcType=DECIMAL}, | ||
| 229 | #{item.isTree,jdbcType=CHAR}, | ||
| 230 | #{item.typeId,jdbcType=VARCHAR} | ||
| 231 | from dual) | ||
| 232 | </foreach> | ||
| 233 | </insert> | ||
| 234 | |||
| 235 | <select id="getSysDictParent" resultType="com.pashanhoo.dictionary.model.vo.GetSysDictParentVo"> | ||
| 236 | select rownum,SD.* | ||
| 237 | from SYS_DICT SD | ||
| 238 | <where> | ||
| 239 | PARENTID is null | ||
| 240 | <if test="request.dcode != null and request.dcode != ''"> | ||
| 241 | and DCODE like '%'||#{request.dcode,jdbcType=VARCHAR}||'%' | ||
| 242 | </if> | ||
| 243 | <if test="request.dname != null and request.dname != ''"> | ||
| 244 | and DNAME like '%'||#{request.dname,jdbcType=VARCHAR}||'%' | ||
| 245 | </if> | ||
| 246 | </where> | ||
| 247 | </select> | ||
| 248 | |||
| 249 | <select id="getSysDictByTypeId" resultMap="BaseResultMap"> | ||
| 250 | select * | ||
| 251 | from SYS_DICT | ||
| 252 | where TYPEID = #{typeId,jdbcType=VARCHAR} | ||
| 253 | and PARENTID is not null | ||
| 254 | </select> | ||
| 255 | |||
| 256 | <delete id="deleteListByPrimaryKey"> | ||
| 257 | delete | ||
| 258 | from SYS_DICT | ||
| 259 | where | ||
| 260 | DICTID in | ||
| 261 | <foreach collection="dictWithoutParent" index="index" item="item" open="(" close=")" separator=","> | ||
| 262 | #{item.dictId,jdbcType=VARCHAR} | ||
| 263 | </foreach> | ||
| 264 | </delete> | ||
| 265 | |||
| 266 | <select id="selectAll" resultMap="BaseResultMap"> | ||
| 267 | select * | ||
| 268 | from SYS_DICT | ||
| 269 | </select> | ||
| 270 | |||
| 271 | <delete id="deleteByTypeId"> | ||
| 272 | delete from SYS_DICT where TYPEID = #{typeid,jdbcType=VARCHAR} and PARENTID is not null | ||
| 273 | </delete> | ||
| 274 | </mapper> | 
- 
Please register or sign in to post a comment