Ver Fonte

【ADD】增加级联查询接口

ZhaoMn há 4 anos atrás
pai
commit
7d9e5bcd11
15 ficheiros alterados com 349 adições e 5 exclusões
  1. 89 3
      railway-admin/src/main/java/com/railway/web/controller/business/baseinfo/BusStationController.java
  2. 1 1
      railway-business/src/main/java/com/railway/business/baseinfo/domain/BusLine.java
  3. 1 1
      railway-business/src/main/java/com/railway/business/baseinfo/domain/BusStation.java
  4. 32 0
      railway-business/src/main/java/com/railway/business/baseinfo/domain/enums/CascadeEnum.java
  5. 40 0
      railway-business/src/main/java/com/railway/business/baseinfo/domain/enums/XingbieEnum.java
  6. 33 0
      railway-business/src/main/java/com/railway/business/baseinfo/domain/vo/CascadeDeptVo.java
  7. 18 0
      railway-business/src/main/java/com/railway/business/baseinfo/domain/vo/CascadeLineVo.java
  8. 15 0
      railway-business/src/main/java/com/railway/business/baseinfo/domain/vo/CascadeStationVo.java
  9. 18 0
      railway-business/src/main/java/com/railway/business/baseinfo/domain/vo/CascadeXingbieVo.java
  10. 5 0
      railway-business/src/main/java/com/railway/business/baseinfo/service/IBusLineService.java
  11. 22 0
      railway-business/src/main/java/com/railway/business/baseinfo/service/IBusStationService.java
  12. 9 0
      railway-business/src/main/java/com/railway/business/baseinfo/service/impl/BusLineServiceImpl.java
  13. 47 0
      railway-business/src/main/java/com/railway/business/baseinfo/service/impl/BusStationServiceImpl.java
  14. 7 0
      railway-system/src/main/java/com/railway/system/service/ISysDeptService.java
  15. 12 0
      railway-system/src/main/java/com/railway/system/service/impl/SysDeptServiceImpl.java

+ 89 - 3
railway-admin/src/main/java/com/railway/web/controller/business/baseinfo/BusStationController.java

@@ -1,13 +1,26 @@
 package com.railway.web.controller.business.baseinfo;
 
+import com.railway.business.baseinfo.domain.BusLine;
+import com.railway.business.baseinfo.domain.BusStation;
+import com.railway.business.baseinfo.domain.enums.XingbieEnum;
+import com.railway.business.baseinfo.domain.vo.CascadeDeptVo;
+import com.railway.business.baseinfo.domain.vo.CascadeLineVo;
+import com.railway.business.baseinfo.domain.vo.CascadeStationVo;
+import com.railway.business.baseinfo.domain.vo.CascadeXingbieVo;
+import com.railway.business.baseinfo.service.IBusLineService;
+import com.railway.business.baseinfo.service.IBusStationService;
 import com.railway.common.core.controller.BaseController;
 import com.railway.common.core.domain.AjaxResult;
+import com.railway.common.core.domain.entity.SysDept;
 import com.railway.common.core.page.TableDataInfo;
-import com.railway.business.baseinfo.domain.BusStation;
-import com.railway.business.baseinfo.service.IBusStationService;
+import com.railway.common.utils.StringUtils;
+import com.railway.system.service.ISysDeptService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
+import java.util.ArrayList;
+import java.util.LinkedHashMap;
 import java.util.List;
+import java.util.Map;
 import javax.validation.Valid;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.DeleteMapping;
@@ -29,9 +42,15 @@ import org.springframework.web.bind.annotation.RestController;
 public class BusStationController extends BaseController {
 
   private final IBusStationService busStationService;
+  private final ISysDeptService deptService;
+  private final IBusLineService busLineService;
 
-  public BusStationController(IBusStationService busStationService) {
+  public BusStationController(IBusStationService busStationService,
+      ISysDeptService deptService,
+      IBusLineService busLineService) {
     this.busStationService = busStationService;
+    this.deptService = deptService;
+    this.busLineService = busLineService;
   }
 
   @ApiOperation(value = "新增")
@@ -69,4 +88,71 @@ public class BusStationController extends BaseController {
     return getDataTable(list);
   }
 
+  @ApiOperation(value = "基础数据级联")
+  @GetMapping(value = "cascade")
+  public TableDataInfo cascade() {
+    // 构建机构树
+    List<SysDept> depts = deptService.selectDeptList();
+    List<SysDept> deptTrees = deptService.buildDeptTree(depts);
+    List<CascadeDeptVo> cascadeDeptList = busStationService.buildCascadeDept(deptTrees);
+    Map<Long, CascadeDeptVo> cascadeDeptVoMap = new LinkedHashMap<>();
+    busStationService.cascadeDeptMap(cascadeDeptList, cascadeDeptVoMap);
+    //
+    List<BusLine> lines = busLineService.getList();
+    Map<Long, CascadeLineVo> cascadeLineMap = new LinkedHashMap<>();
+    for(BusLine line : lines){
+      CascadeDeptVo cascadeDept = cascadeDeptVoMap.get(line.getDeptId());
+      if(null == cascadeDept){
+        continue;
+      }
+      List<CascadeLineVo> lineList = cascadeDept.getLineList();
+      if(null == lineList){
+        lineList = new ArrayList<>();
+        cascadeDept.setLineList(lineList);
+      }
+      CascadeLineVo cascadeLine = new CascadeLineVo();
+      cascadeLine.setLineId(line.getLineId());
+      cascadeLine.setLabel(line.getLineName());
+      List<CascadeXingbieVo> xingbieList = new ArrayList<>();
+      for (XingbieEnum investor : XingbieEnum.values()) {
+        CascadeXingbieVo xingbieVo = new CascadeXingbieVo();
+        xingbieVo.setXingbie(investor.getCode());
+        xingbieVo.setLabel(investor.getInfo());
+        xingbieList.add(xingbieVo);
+      }
+      cascadeLine.setXingbieList(xingbieList);
+      lineList.add(cascadeLine);
+      cascadeLineMap.put(line.getLineId(), cascadeLine);
+    }
+
+    List<BusStation> stations = busStationService.getList();
+    for(BusStation station : stations){
+      CascadeLineVo cascadeLine = cascadeLineMap.get(station.getLineId());
+      if(null == cascadeLine){
+        continue;
+      }
+      String xingbie = station.getXingbie();
+      if(StringUtils.isEmpty(xingbie)){
+        continue;
+      }
+      List<CascadeXingbieVo> xingbieList = cascadeLine.getXingbieList();
+      Map<String, CascadeXingbieVo> xingbieVoMap = new LinkedHashMap<>();
+      for(CascadeXingbieVo xingbieVo : xingbieList){
+        xingbieVoMap.put(xingbieVo.getXingbie(), xingbieVo);
+      }
+      CascadeXingbieVo cascadeXingbie = xingbieVoMap.get(xingbie);
+      List<CascadeStationVo> stationList = cascadeXingbie.getStationList();
+      if(null == stationList){
+        stationList = new ArrayList<>();
+        cascadeXingbie.setStationList(stationList);
+      }
+      CascadeStationVo stationVo = new CascadeStationVo();
+      stationVo.setStationId(station.getStationId());
+      stationVo.setLabel(station.getStationName());
+      stationList.add(stationVo);
+    }
+
+    return getDataTable(cascadeDeptList);
+  }
+
 }

+ 1 - 1
railway-business/src/main/java/com/railway/business/baseinfo/domain/BusLine.java

@@ -16,7 +16,7 @@ import org.hibernate.validator.constraints.Length;
 public class BusLine extends BaseEntity {
 
   @ApiModelProperty(value = "主键", hidden = true)
-  private String lineId;
+  private Long lineId;
 
   @ApiModelProperty(value = "车间名称(冗余)")
   private String deptParentName;

+ 1 - 1
railway-business/src/main/java/com/railway/business/baseinfo/domain/BusStation.java

@@ -16,7 +16,7 @@ import org.hibernate.validator.constraints.Length;
 public class BusStation extends BaseEntity {
 
   @ApiModelProperty(value = "主键", hidden = true)
-  private String stationId;
+  private Long stationId;
 
   @ApiModelProperty(value = "车间id")
   private Long deptId;

+ 32 - 0
railway-business/src/main/java/com/railway/business/baseinfo/domain/enums/CascadeEnum.java

@@ -0,0 +1,32 @@
+package com.railway.business.baseinfo.domain.enums;
+
+/**
+ * 级联类型
+ *
+ * @author zhaomn
+ */
+public enum CascadeEnum {
+
+  /** 级联类型 */
+  DEPT("dept", "车间"),
+  LINE("line", "线路"),
+  XINGBIE("xingbie", "行别"),
+  STATION("station", "区间/站场"),
+  ;
+
+  private final String code;
+  private final String info;
+
+  CascadeEnum(String code, String info) {
+    this.code = code;
+    this.info = info;
+  }
+
+  public String getCode() {
+    return code;
+  }
+
+  public String getInfo() {
+    return info;
+  }
+}

+ 40 - 0
railway-business/src/main/java/com/railway/business/baseinfo/domain/enums/XingbieEnum.java

@@ -0,0 +1,40 @@
+package com.railway.business.baseinfo.domain.enums;
+
+/**
+ * 行别
+ *
+ * @author zhaomn
+ */
+public enum XingbieEnum {
+
+  /** 行别 */
+  SX("sx", "上行"),
+  XX("xx", "下行"),
+  DX("dx", "单线"),
+  ;
+
+  private final String code;
+  private final String info;
+
+  XingbieEnum(String code, String info) {
+    this.code = code;
+    this.info = info;
+  }
+
+  public String getCode() {
+    return code;
+  }
+
+  public String getInfo() {
+    return info;
+  }
+
+  public static XingbieEnum ofValue(String code) {
+    for (XingbieEnum investor : XingbieEnum.values()) {
+      if (investor.getCode().equals(code)) {
+        return investor;
+      }
+    }
+    return DX;
+  }
+}

+ 33 - 0
railway-business/src/main/java/com/railway/business/baseinfo/domain/vo/CascadeDeptVo.java

@@ -0,0 +1,33 @@
+package com.railway.business.baseinfo.domain.vo;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.railway.common.core.domain.entity.SysDept;
+import java.util.List;
+import java.util.stream.Collectors;
+import lombok.Data;
+
+/**
+ * @author zhaomn
+ */
+@Data
+public class CascadeDeptVo {
+
+  private Long id;
+
+  private String label;
+
+  /**
+   * 子节点
+   */
+  @JsonInclude(JsonInclude.Include.NON_EMPTY)
+  private List<CascadeDeptVo> children;
+
+  private List<CascadeLineVo> lineList;
+
+  public CascadeDeptVo(SysDept dept) {
+    this.id = dept.getDeptId();
+    this.label = dept.getDeptName();
+    this.children = dept.getChildren().stream().map(CascadeDeptVo::new).collect(Collectors.toList());
+  }
+
+}

+ 18 - 0
railway-business/src/main/java/com/railway/business/baseinfo/domain/vo/CascadeLineVo.java

@@ -0,0 +1,18 @@
+package com.railway.business.baseinfo.domain.vo;
+
+import java.util.List;
+import lombok.Data;
+
+/**
+ * @author zhaomn
+ */
+@Data
+public class CascadeLineVo {
+
+  private Long lineId;
+
+  private String label;
+
+  private List<CascadeXingbieVo> xingbieList;
+
+}

+ 15 - 0
railway-business/src/main/java/com/railway/business/baseinfo/domain/vo/CascadeStationVo.java

@@ -0,0 +1,15 @@
+package com.railway.business.baseinfo.domain.vo;
+
+import lombok.Data;
+
+/**
+ * @author zhaomn
+ */
+@Data
+public class CascadeStationVo {
+
+  private Long stationId;
+
+  private String label;
+
+}

+ 18 - 0
railway-business/src/main/java/com/railway/business/baseinfo/domain/vo/CascadeXingbieVo.java

@@ -0,0 +1,18 @@
+package com.railway.business.baseinfo.domain.vo;
+
+import java.util.List;
+import lombok.Data;
+
+/**
+ * @author zhaomn
+ */
+@Data
+public class CascadeXingbieVo {
+
+  private String xingbie;
+
+  private String label;
+
+  private List<CascadeStationVo> stationList;
+
+}

+ 5 - 0
railway-business/src/main/java/com/railway/business/baseinfo/service/IBusLineService.java

@@ -36,4 +36,9 @@ public interface IBusLineService {
    */
   List<BusLine> getList(BusLine busLine);
 
+  /**
+   * 查询列表
+   */
+  List<BusLine> getList();
+
 }

+ 22 - 0
railway-business/src/main/java/com/railway/business/baseinfo/service/IBusStationService.java

@@ -1,7 +1,10 @@
 package com.railway.business.baseinfo.service;
 
 import com.railway.business.baseinfo.domain.BusStation;
+import com.railway.business.baseinfo.domain.vo.CascadeDeptVo;
+import com.railway.common.core.domain.entity.SysDept;
 import java.util.List;
+import java.util.Map;
 
 /**
  * primary key (station_id) using
@@ -36,4 +39,23 @@ public interface IBusStationService {
    */
   List<BusStation> getList(BusStation busStation);
 
+  /**
+   * 查询列表
+   */
+  List<BusStation> getList();
+
+  /**
+   * 部门树形结构
+   * @param deptTrees 构建好的树型结构
+   * @return 下拉选项
+   */
+  List<CascadeDeptVo> buildCascadeDept(List<SysDept> deptTrees);
+
+  /**
+   * 部门树形结构
+   * @param cascadeDeptVos 构建好的树型结构
+   * @param cascadeDeptMap Map
+   */
+  void cascadeDeptMap(List<CascadeDeptVo> cascadeDeptVos, Map<Long, CascadeDeptVo> cascadeDeptMap);
+
 }

+ 9 - 0
railway-business/src/main/java/com/railway/business/baseinfo/service/impl/BusLineServiceImpl.java

@@ -76,4 +76,13 @@ public class BusLineServiceImpl implements IBusLineService {
   public List<BusLine> getList(BusLine busLine) {
     return busLineMapper.getList(busLine);
   }
+
+  /**
+   *  查询列表
+   */
+  @Override
+  public List<BusLine> getList() {
+    return busLineMapper.getList(null);
+  }
+
 }

+ 47 - 0
railway-business/src/main/java/com/railway/business/baseinfo/service/impl/BusStationServiceImpl.java

@@ -1,11 +1,16 @@
 package com.railway.business.baseinfo.service.impl;
 
 import com.railway.business.baseinfo.domain.BusStation;
+import com.railway.business.baseinfo.domain.vo.CascadeDeptVo;
 import com.railway.business.baseinfo.mapper.BusStationMapper;
 import com.railway.business.baseinfo.service.IBusStationService;
+import com.railway.common.core.domain.entity.SysDept;
 import com.railway.common.utils.SecurityUtils;
 import java.util.Date;
 import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+import org.apache.commons.collections4.CollectionUtils;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
@@ -76,4 +81,46 @@ public class BusStationServiceImpl implements IBusStationService {
   public List<BusStation> getList(BusStation busStation) {
     return busStationMapper.getList(busStation);
   }
+
+  /**
+   * 查询列表
+   */
+  @Override
+  public List<BusStation> getList() {
+    return busStationMapper.getList(null);
+  }
+
+  @Override
+  public List<CascadeDeptVo> buildCascadeDept(List<SysDept> deptTrees) {
+    List<CascadeDeptVo> tree = deptTrees.stream().map(CascadeDeptVo::new).collect(Collectors.toList());
+    setTreeSelect(tree);
+    return tree;
+  }
+
+  /**
+   * 部门树形结构
+   *
+   * @param cascadeDeptVos 构建好的树型结构
+   */
+  @Override
+  public void cascadeDeptMap(List<CascadeDeptVo> cascadeDeptVos,
+      Map<Long, CascadeDeptVo> cascadeDeptMap) {
+    for(CascadeDeptVo cascadeDept : cascadeDeptVos){
+      cascadeDeptMap.put(cascadeDept.getId(), cascadeDept);
+      if(null != cascadeDept.getChildren() && cascadeDept.getChildren().size() > 0){
+        cascadeDeptMap(cascadeDept.getChildren(), cascadeDeptMap);
+      }
+    }
+  }
+
+  private void setTreeSelect(List<CascadeDeptVo> treeSelects) {
+    for (CascadeDeptVo tree : treeSelects) {
+      if (CollectionUtils.isEmpty(tree.getChildren())) {
+        tree.setChildren(null);
+      } else {
+        setTreeSelect(tree.getChildren());
+      }
+    }
+  }
+
 }

+ 7 - 0
railway-system/src/main/java/com/railway/system/service/ISysDeptService.java

@@ -11,6 +11,13 @@ import java.util.List;
  */
 public interface ISysDeptService {
 
+  /**
+   * 查询部门管理数据
+   *
+   * @return 部门信息集合
+   */
+  List<SysDept> selectDeptList();
+
   /**
    * 查询部门管理数据
    *

+ 12 - 0
railway-system/src/main/java/com/railway/system/service/impl/SysDeptServiceImpl.java

@@ -37,6 +37,18 @@ public class SysDeptServiceImpl implements ISysDeptService {
     this.roleMapper = roleMapper;
   }
 
+  /**
+   * 查询部门管理数据
+   *
+   * @return 部门信息集合
+   */
+  @Override
+  public List<SysDept> selectDeptList() {
+    SysDept dept = new SysDept();
+    dept.setStatus(UserConstants.DEPT_NORMAL);
+    return selectDeptList(dept);
+  }
+
   /**
    * 查询部门管理数据
    *