浏览代码

牧场树形结构

Newspaper 2 年之前
父节点
当前提交
d72e5dd5e7

+ 13 - 1
huimv-cattle/src/main/java/com/huimv/cattle/controller/SysFarmController.java

@@ -1,8 +1,11 @@
 package com.huimv.cattle.controller;
 
 
+import com.huimv.cattle.pojo.DataSource;
+import com.huimv.cattle.service.DataSourceService;
 import com.huimv.cattle.service.SysFarmService;
 import com.huimv.common.utils.Result;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
 import javax.annotation.Resource;
@@ -23,6 +26,8 @@ import java.util.Map;
 public class SysFarmController {
     @Resource
     private SysFarmService sysFarmService;
+    @Autowired
+    private DataSourceService dataSourceService;
 
     /**
      * @Method      : initFarm
@@ -41,7 +46,14 @@ public class SysFarmController {
 
     @PostMapping("/list")
     public Result listFarm(HttpServletRequest request, @RequestBody Map<String, String> paramsMap){
-        return sysFarmService.listFarm(request,paramsMap);
+        DataSource dataSource = dataSourceService.getDataSourceStatus();
+        if (dataSource.getDsStatus() == 1 && dataSource.getViewType() == 2){
+            return sysFarmService.listTownFarm(request,paramsMap);
+        }else if (dataSource.getDsStatus() == 1 && dataSource.getViewType() == 3){
+            return sysFarmService.listVillageFarm(request,paramsMap);
+        }else {
+            return sysFarmService.listFarm(request,paramsMap);
+        }
     }
 
     @PostMapping("/getAllFarmId")

+ 2 - 0
huimv-cattle/src/main/java/com/huimv/cattle/pojo/SysFarm.java

@@ -40,5 +40,7 @@ public class SysFarm implements Serializable {
 
     private String adcode;
 
+    private String parentCode;
+
 
 }

+ 41 - 0
huimv-cattle/src/main/java/com/huimv/cattle/pojo/vo/TreeFarm.java

@@ -0,0 +1,41 @@
+package com.huimv.cattle.pojo.vo;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.huimv.cattle.pojo.SysFarm;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+import java.util.List;
+
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class TreeFarm implements Serializable {
+    private static final long serialVersionUID=1L;
+
+    private Integer id;
+
+    private String farmName;
+
+    private String farmCode;
+
+    private String linkman;
+
+    private String phone;
+
+    private String address;
+
+    private Integer farmStatus;
+
+    private String remark;
+
+    private String adcode;
+
+    private String parentCode;
+
+    private List<TreeFarm> childNode;
+
+}

+ 4 - 0
huimv-cattle/src/main/java/com/huimv/cattle/service/SysFarmService.java

@@ -32,4 +32,8 @@ public interface SysFarmService extends IService<SysFarm> {
     Result getAllFarmId(HttpServletRequest request, Map<String, String> paramsMap);
 
     Result listAllTownsCount(HttpServletRequest request);
+
+    Result listTownFarm(HttpServletRequest request, Map<String, String> paramsMap);
+
+    Result listVillageFarm(HttpServletRequest request, Map<String, String> paramsMap);
 }

+ 69 - 4
huimv-cattle/src/main/java/com/huimv/cattle/service/impl/SysFarmServiceImpl.java

@@ -13,9 +13,11 @@ import com.huimv.cattle.mapper.SysUserAccountMapper;
 import com.huimv.cattle.pojo.DataSource;
 import com.huimv.cattle.pojo.SysFarm;
 import com.huimv.cattle.pojo.SysUserAccount;
+import com.huimv.cattle.pojo.vo.TreeFarm;
 import com.huimv.cattle.service.DataSourceService;
 import com.huimv.cattle.service.StockService;
 import com.huimv.cattle.service.SysFarmService;
+import com.huimv.cattle.token.TokenSign;
 import com.huimv.cattle.utils.ResultUtil;
 import com.huimv.common.utils.Result;
 import com.huimv.common.utils.ResultCode;
@@ -36,10 +38,8 @@ import org.springframework.web.client.RestTemplate;
 
 import javax.annotation.Resource;
 import javax.servlet.http.HttpServletRequest;
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
+import java.util.stream.Collectors;
 
 /**
  * <p>
@@ -207,6 +207,38 @@ public class SysFarmServiceImpl extends ServiceImpl<SysFarmMapper, SysFarm> impl
         }
     }
 
+    @Override
+    public Result listTownFarm(HttpServletRequest request, Map<String, String> paramsMap) {
+        String farmCode = paramsMap.get("farmCode");
+        if (farmCode == null) {
+            farmCode = TokenSign.getFarmCode(request);
+        }
+        if (farmCode == null || farmCode.equals("0")){
+            List<SysFarm> sysFarmList = sysFarmMapper.selectList(new QueryWrapper<SysFarm>().eq("parent_code",farmCode));
+            return new Result(ResultCode.SUCCESS,sysFarmList);
+        }else {
+            List<SysFarm> sysFarmList = sysFarmMapper.selectList(new QueryWrapper<SysFarm>().eq("farm_code",farmCode));
+            return new Result(ResultCode.SUCCESS,sysFarmList);
+        }
+    }
+
+    @Override
+    public Result listVillageFarm(HttpServletRequest request, Map<String, String> paramsMap) {
+        String farmCode = paramsMap.get("farmCode");
+        if (farmCode == null) {
+            farmCode = TokenSign.getFarmCode(request);
+        }
+        if (farmCode == null || farmCode.equals("0")){
+            List<SysFarm> farms = sysFarmMapper.selectList(null);
+            List<TreeFarm> treeFarms = parseBizBaseArea(farms);
+            return new Result(ResultCode.SUCCESS,treeFarms);
+        }else {
+            List<SysFarm> farms = sysFarmMapper.selectList(new QueryWrapper<SysFarm>().eq("farm_code", farmCode).or().eq("parent_code", farmCode));
+            List<TreeFarm> treeFarms = parseBizBaseArea(farms);
+            return new Result(ResultCode.SUCCESS,treeFarms);
+        }
+    }
+
     //获取所有乡镇信息
     private JSONArray getAllTowns() {
         QueryWrapper<SysFarm> queryWrapper = new QueryWrapper<>();
@@ -246,4 +278,37 @@ public class SysFarmServiceImpl extends ServiceImpl<SysFarmMapper, SysFarm> impl
             return new Result(ResultCode.FAIL, "调取远程数据出错.");
         }
     }
+
+    private List<TreeFarm> parseBizBaseArea(List<SysFarm> bizBaseAreas){
+        //构建需要展示的树形节点结构
+        Map<String, TreeFarm> nodeMap =bizBaseAreas.stream().map(farm -> {
+            TreeFarm treeFarm = new TreeFarm();
+            treeFarm.setId(farm.getId());
+            treeFarm.setAdcode(farm.getAdcode());
+            treeFarm.setAddress(farm.getAddress());
+            treeFarm.setFarmCode(farm.getFarmCode());
+            treeFarm.setFarmName(farm.getFarmName());
+            treeFarm.setFarmStatus(farm.getFarmStatus());
+            treeFarm.setLinkman(farm.getLinkman());
+            treeFarm.setParentCode(farm.getParentCode());
+            treeFarm.setChildNode(new ArrayList<>());
+            treeFarm.setPhone(farm.getPhone());
+            treeFarm.setRemark(farm.getRemark());
+            return treeFarm;
+        }).collect(Collectors.toMap(TreeFarm::getFarmCode, b -> b,(k1, k2)->k1));
+        //创建数组存父亲节点
+        ArrayList<TreeFarm> roots = new ArrayList<>();
+        //构建树形
+        nodeMap.values().forEach(item->{
+            String parentCode = item.getParentCode()+"";
+            //父节点为空,说明当前节点就已经是父节点了 将该节点存起来
+            if (nodeMap.get(parentCode) == null){
+                roots.add(item);
+            }else {
+                //父节点 不为空,说明有父节点,拿到该节点的父节点的孩子节点(就是我自己),将该节点存起来
+                nodeMap.get(parentCode).getChildNode().add(item);
+            }
+        });
+        return roots;
+    }
 }