瀏覽代碼

学校功能

TRX 1 年之前
父節點
當前提交
676c4b646e

+ 14 - 1
FullCardClient/src/main/java/com/zhongshu/card/client/model/org/RegionModel.java

@@ -1,14 +1,21 @@
 package com.zhongshu.card.client.model.org;
 
+import com.zhongshu.card.client.utils.ITree;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.AllArgsConstructor;
 import lombok.Data;
 import lombok.NoArgsConstructor;
 
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.List;
+
 @Data
 @NoArgsConstructor
 @AllArgsConstructor
-public class RegionModel {
+public class RegionModel implements ITree<RegionModel>, Serializable {
+
+    private String id;
 
     /**
      * 编号
@@ -26,4 +33,10 @@ public class RegionModel {
     @Schema(description = "省市区province、市city、村county")
     private String type;
 
+    @Schema(description = "上级ID")
+    private String parentId;
+
+    @Schema(description = "子层级")
+    private List<RegionModel> children = new ArrayList<>();
+
 }

+ 10 - 2
FullCardServer/src/main/java/com/zhongshu/card/server/core/controller/org/RegionController.java

@@ -1,10 +1,11 @@
 package com.zhongshu.card.server.core.controller.org;
 
 import com.github.microservice.auth.client.constant.AuthConstant;
-import com.github.microservice.auth.client.content.ResultContent;
 import com.github.microservice.auth.security.annotations.ResourceAuth;
 import com.github.microservice.auth.security.type.AuthType;
+import com.zhongshu.card.client.model.base.OidModel;
 import com.zhongshu.card.client.model.org.RegionModel;
+import com.zhongshu.card.client.ret.ResultContent;
 import com.zhongshu.card.server.core.service.org.RegionService;
 import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.tags.Tag;
@@ -27,11 +28,18 @@ public class RegionController {
     @Autowired
     RegionService regionService;
 
-    @Operation( summary = "获取地区数据")
+    @Operation(summary = "获取地区数据")
     @RequestMapping(value = "getRegion", method = RequestMethod.POST)
     @ResourceAuth(value = AuthConstant.User, type = AuthType.User)
     public ResultContent<List<RegionModel>> getRegion(@RequestBody @Validated RegionModel regionModel) {
         return regionService.getRegion(regionModel);
     }
 
+    @ResourceAuth(value = "user", type = AuthType.User)
+    @Operation(summary = "地区树形结构-通用", description = "得到机构部门树")
+    @RequestMapping(value = "getAllTree", method = {RequestMethod.GET})
+    public ResultContent getAllTree() {
+        return this.regionService.getAllTree();
+    }
+
 }

+ 4 - 0
FullCardServer/src/main/java/com/zhongshu/card/server/core/domain/org/Region.java

@@ -36,4 +36,8 @@ public class Region extends SuperEntity {
      * 删除
      */
     private String isDelete;
+
+    private String parentId;
+
+    private Long index = 0L;
 }

+ 55 - 2
FullCardServer/src/main/java/com/zhongshu/card/server/core/service/org/RegionService.java

@@ -1,13 +1,21 @@
 package com.zhongshu.card.server.core.service.org;
 
-import com.github.microservice.auth.client.content.ResultContent;
 import com.zhongshu.card.client.model.org.RegionModel;
+import com.zhongshu.card.client.ret.ResultContent;
+import com.zhongshu.card.client.utils.ITree;
+import com.zhongshu.card.client.utils.TreeUtil;
 import com.zhongshu.card.server.core.dao.org.RegionDao;
+import com.zhongshu.card.server.core.domain.org.Region;
+import com.zhongshu.card.server.core.util.BeanUtils;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.ObjectUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.domain.Sort;
 import org.springframework.stereotype.Service;
 
 import java.util.List;
+import java.util.stream.Collectors;
 
 @Slf4j
 @Service
@@ -16,9 +24,54 @@ public class RegionService {
     @Autowired
     RegionDao regionDao;
 
-    public ResultContent<List<RegionModel>> getRegion(RegionModel regionModel){
+    public ResultContent<List<RegionModel>> getRegion(RegionModel regionModel) {
         List<RegionModel> byCodeStartingWithAndTypeAndName = regionDao.findByCodeStartingWithAndTypeAndName(regionModel);
         return ResultContent.buildContent(byCodeStartingWithAndTypeAndName);
     }
 
+    public ResultContent<List<ITree>> getAllTree() {
+        fixData();
+        List<Region> list = regionDao.findAll(Sort.by(Sort.Order.asc("index")));
+        List<ITree> models = list.parallelStream().map(this::toModel).collect(Collectors.toList());
+        List<ITree> iTrees = TreeUtil.buildTree(models, ITree.ROOT_ID);
+        return ResultContent.buildSuccess(iTrees);
+    }
+
+    public void fixData() {
+        Region region = regionDao.findByCode("11");
+        if (region != null) {
+            log.info("修复数据");
+            if (StringUtils.isEmpty(region.getParentId())) {
+                List<Region> list = regionDao.findAll();
+                list.stream().forEach(it -> {
+                    String code = it.getCode();
+                    String parentId = ITree.ROOT_ID;
+                    if (code != null && code.length() > 2) {
+                        parentId = code.substring(0, code.length() - 2);
+                    }
+                    it.setIndex(Long.parseLong(code));
+                    it.setParentId(parentId);
+                });
+                regionDao.saveAll(list);
+            }
+
+            if (region.getIndex() == null || region.getIndex() == 0) {
+                List<Region> list = regionDao.findAll();
+                list.stream().forEach(it -> {
+                    String code = it.getCode();
+                    it.setIndex(Long.parseLong(code));
+                });
+                regionDao.saveAll(list);
+            }
+        }
+    }
+
+    public RegionModel toModel(Region entity) {
+        RegionModel model = new RegionModel();
+        if (ObjectUtils.isNotEmpty(entity)) {
+            BeanUtils.copyProperties(entity, model);
+            model.setId(entity.getCode());
+        }
+        return model;
+    }
 }