不动产登记档案系统
0 parents
Showing
24 changed files
with
1330 additions
and
0 deletions
.gitignore
0 → 100644
pom.xml
0 → 100644
This diff is collapsed.
Click to expand it.
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 | } |
This diff is collapsed.
Click to expand it.
| 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
This diff is collapsed.
Click to expand it.
src/main/resources/mapper/SysDictMapper.xml
0 → 100644
This diff is collapsed.
Click to expand it.
-
Please register or sign in to post a comment