Просмотр исходного кода

Merge remote-tracking branch 'origin/master'

523096025 2 лет назад
Родитель
Сommit
c89a824701
24 измененных файлов с 1137 добавлено и 1 удалено
  1. 12 1
      huimv-eartag2-platform/huimv-eartag2-common/pom.xml
  2. 241 0
      huimv-eartag2-platform/huimv-eartag2-common/src/main/java/com/huimv/eartag2/common/dao/entity/EartagDataEntity2.java
  3. 20 0
      huimv-eartag2-platform/huimv-eartag2-common/src/main/java/com/huimv/eartag2/common/dao/repo/EartagDataRepo2.java
  4. 40 0
      huimv-eartag2-platform/huimv-eartag2-common/src/main/test/java/com.huimv.eartag2.common/EartagTest.java
  5. 6 0
      huimv-eartag2-platform/huimv-eartag2-eartag/pom.xml
  6. 54 0
      huimv-eartag2-platform/huimv-eartag2-eartag/src/main/java/com/huimv/eartag2/eartag/service/impl/EartagServiceImpl.java
  7. 44 0
      huimv-eartag2-platform/huimv-eartag2-manage2/src/main/java/com/huimv/eartag2/manage2/config/MybatisPlusConfig.java
  8. 155 0
      huimv-eartag2-platform/huimv-eartag2-manage2/src/main/java/com/huimv/eartag2/manage2/controller/BasePigpenController.java
  9. 21 0
      huimv-eartag2-platform/huimv-eartag2-manage2/src/main/java/com/huimv/eartag2/manage2/controller/BaseStageController.java
  10. 21 0
      huimv-eartag2-platform/huimv-eartag2-manage2/src/main/java/com/huimv/eartag2/manage2/controller/EartagDeviceRegisterController.java
  11. 16 0
      huimv-eartag2-platform/huimv-eartag2-manage2/src/main/java/com/huimv/eartag2/manage2/mapper/BasePigpenMapper.java
  12. 16 0
      huimv-eartag2-platform/huimv-eartag2-manage2/src/main/java/com/huimv/eartag2/manage2/mapper/BaseStageMapper.java
  13. 22 0
      huimv-eartag2-platform/huimv-eartag2-manage2/src/main/java/com/huimv/eartag2/manage2/mapper/xml/BasePigpenMapper.xml
  14. 18 0
      huimv-eartag2-platform/huimv-eartag2-manage2/src/main/java/com/huimv/eartag2/manage2/mapper/xml/BaseStageMapper.xml
  15. 40 0
      huimv-eartag2-platform/huimv-eartag2-manage2/src/main/java/com/huimv/eartag2/manage2/pojo/BasePigpen.java
  16. 34 0
      huimv-eartag2-platform/huimv-eartag2-manage2/src/main/java/com/huimv/eartag2/manage2/pojo/BaseStage.java
  17. 28 0
      huimv-eartag2-platform/huimv-eartag2-manage2/src/main/java/com/huimv/eartag2/manage2/service/BasePigpenService.java
  18. 16 0
      huimv-eartag2-platform/huimv-eartag2-manage2/src/main/java/com/huimv/eartag2/manage2/service/BaseStageService.java
  19. 16 0
      huimv-eartag2-platform/huimv-eartag2-manage2/src/main/java/com/huimv/eartag2/manage2/service/EartagDeviceRegisterService.java
  20. 192 0
      huimv-eartag2-platform/huimv-eartag2-manage2/src/main/java/com/huimv/eartag2/manage2/service/impl/BasePigpenServiceImpl.java
  21. 20 0
      huimv-eartag2-platform/huimv-eartag2-manage2/src/main/java/com/huimv/eartag2/manage2/service/impl/BaseStageServiceImpl.java
  22. 40 0
      huimv-eartag2-platform/huimv-eartag2-manage2/src/main/java/com/huimv/eartag2/manage2/utils/IDUtil.java
  23. 25 0
      huimv-eartag2-platform/huimv-eartag2-manage2/src/main/java/com/huimv/eartag2/manage2/utils/ResultUtil.java
  24. 40 0
      huimv-eartag2-platform/huimv-eartag2-manage2/src/main/java/com/huimv/eartag2/manage2/vo/TreeBasePigpen.java

+ 12 - 1
huimv-eartag2-platform/huimv-eartag2-common/pom.xml

@@ -13,7 +13,18 @@
 
     <groupId>com.huimv</groupId>
     <artifactId>huimv-eartag2-common</artifactId>
-    <version>0.0.1</version>
+    <version>0.0.3</version>
+
+    <distributionManagement>
+        <repository>
+            <id>rdc-releases</id>
+            <url>https://repo.rdc.aliyun.com/repository/136471-release-drEU5y/</url>
+        </repository>
+        <snapshotRepository>
+            <id>rdc-snapshots</id>
+            <url>https://repo.rdc.aliyun.com/repository/136471-snapshot-WhviYl/</url>
+        </snapshotRepository>
+    </distributionManagement>
 
     <dependencies>
 

+ 241 - 0
huimv-eartag2-platform/huimv-eartag2-common/src/main/java/com/huimv/eartag2/common/dao/entity/EartagDataEntity2.java

@@ -0,0 +1,241 @@
+package com.huimv.eartag2.common.dao.entity;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+
+import javax.persistence.*;
+import java.io.Serializable;
+import java.sql.Date;
+import java.sql.Timestamp;
+
+@Entity
+@Table(name = "eartag_data2")
+public class EartagDataEntity2 implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @Id
+    @GeneratedValue(strategy = GenerationType.IDENTITY)
+    @Column(name = "id", nullable = false)
+    private Integer id;
+
+    @Column(name = "cmd_header")
+    private String cmdHeader;
+
+    @Column(name = "device")
+    private String device;
+
+    @Column(name = "earmark")
+    private String earmark;
+
+    @Column(name = "bat")
+    private Integer bat;
+
+    @Column(name = "ear_temp")
+    private Integer earTemp;
+
+    @Column(name = "ear_temp1")
+    private Float earTemp1;
+
+    @Column(name = "env_temp")
+    private Integer envTemp;
+
+    @Column(name = "env_temp1")
+    private Float envTemp1;
+
+    @Column(name = "act")
+    private Integer act;
+
+    @Column(name = "act1")
+    private Integer act1;
+
+    @Column(name = "signal1")
+    private Integer signal1;
+
+    @Column(name = "ask_time")
+    private String askTime;
+
+    @Column(name = "other")
+    private String other;
+
+    @Column(name = "add_time")
+    private Timestamp addTime;
+
+    @Column(name = "create_date")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
+    private Date createDate;
+
+    @Column(name = "farm_id")
+    private String farmId;
+
+    @Column(name = "ask_date")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
+    private Date askDate;
+
+    public void setId(Integer id) {
+        this.id = id;
+    }
+
+    public Integer getId() {
+        return id;
+    }
+
+    public void setCmdHeader(String cmdHeader) {
+        this.cmdHeader = cmdHeader;
+    }
+
+    public String getCmdHeader() {
+        return cmdHeader;
+    }
+
+    public void setDevice(String device) {
+        this.device = device;
+    }
+
+    public String getDevice() {
+        return device;
+    }
+
+    public void setEarmark(String earmark) {
+        this.earmark = earmark;
+    }
+
+    public String getEarmark() {
+        return earmark;
+    }
+
+    public void setBat(Integer bat) {
+        this.bat = bat;
+    }
+
+    public Integer getBat() {
+        return bat;
+    }
+
+    public void setEarTemp(Integer earTemp) {
+        this.earTemp = earTemp;
+    }
+
+    public Integer getEarTemp() {
+        return earTemp;
+    }
+
+    public void setEarTemp1(Float earTemp1) {
+        this.earTemp1 = earTemp1;
+    }
+
+    public Float getEarTemp1() {
+        return earTemp1;
+    }
+
+    public void setEnvTemp(Integer envTemp) {
+        this.envTemp = envTemp;
+    }
+
+    public Integer getEnvTemp() {
+        return envTemp;
+    }
+
+    public void setEnvTemp1(Float envTemp1) {
+        this.envTemp1 = envTemp1;
+    }
+
+    public Float getEnvTemp1() {
+        return envTemp1;
+    }
+
+    public void setAct(Integer act) {
+        this.act = act;
+    }
+
+    public Integer getAct() {
+        return act;
+    }
+
+    public void setAct1(Integer act1) {
+        this.act1 = act1;
+    }
+
+    public Integer getAct1() {
+        return act1;
+    }
+
+    public void setSignal1(Integer signal1) {
+        this.signal1 = signal1;
+    }
+
+    public Integer getSignal1() {
+        return signal1;
+    }
+
+    public void setAskTime(String askTime) {
+        this.askTime = askTime;
+    }
+
+    public String getAskTime() {
+        return askTime;
+    }
+
+    public void setOther(String other) {
+        this.other = other;
+    }
+
+    public String getOther() {
+        return other;
+    }
+
+    public void setAddTime(Timestamp addTime) {
+        this.addTime = addTime;
+    }
+
+    public Timestamp getAddTime() {
+        return addTime;
+    }
+
+    public void setCreateDate(Date createDate) {
+        this.createDate = createDate;
+    }
+
+    public Date getCreateDate() {
+        return createDate;
+    }
+
+    public void setFarmId(String farmId) {
+        this.farmId = farmId;
+    }
+
+    public String getFarmId() {
+        return farmId;
+    }
+
+    public void setAskDate(Date askDate) {
+        this.askDate = askDate;
+    }
+
+    public Date getAskDate() {
+        return askDate;
+    }
+
+    @Override
+    public String toString() {
+        return "EartagDataEntity{" +
+                "id=" + id + '\'' +
+                "cmdHeader=" + cmdHeader + '\'' +
+                "device=" + device + '\'' +
+                "earmark=" + earmark + '\'' +
+                "bat=" + bat + '\'' +
+                "earTemp=" + earTemp + '\'' +
+                "earTemp1=" + earTemp1 + '\'' +
+                "envTemp=" + envTemp + '\'' +
+                "envTemp1=" + envTemp1 + '\'' +
+                "act=" + act + '\'' +
+                "act1=" + act1 + '\'' +
+                "signal1=" + signal1 + '\'' +
+                "askTime=" + askTime + '\'' +
+                "other=" + other + '\'' +
+                "addTime=" + addTime + '\'' +
+                "createDate=" + createDate + '\'' +
+                "farmId=" + farmId + '\'' +
+                "askDate=" + askDate + '\'' +
+                '}';
+    }
+}

+ 20 - 0
huimv-eartag2-platform/huimv-eartag2-common/src/main/java/com/huimv/eartag2/common/dao/repo/EartagDataRepo2.java

@@ -0,0 +1,20 @@
+package com.huimv.eartag2.common.dao.repo;
+
+
+import com.huimv.eartag2.common.dao.entity.EartagDataEntity2;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
+import org.springframework.data.jpa.repository.Query;
+
+/**
+ * @Description: TODO
+ * @Author: 静静
+ * @CreateTime: 2022-07-26  09:00
+ * @Version: 1.0
+ */
+public interface EartagDataRepo2 extends JpaRepository<EartagDataEntity2, Integer>, JpaSpecificationExecutor<EartagDataEntity2> {
+
+    //
+    @Query(nativeQuery = true,value = "SELECT * FROM eartag_data2 WHERE earmark=?1 AND add_time BETWEEN add_time(now(),interval - 5 minute)")
+    EartagDataEntity2 getEartagFlowByEarmark(String earmark);
+}

+ 40 - 0
huimv-eartag2-platform/huimv-eartag2-common/src/main/test/java/com.huimv.eartag2.common/EartagTest.java

@@ -0,0 +1,40 @@
+package com.huimv.eartag2.common;
+
+import com.huimv.eartag2.common.dao.entity.EartagDataEntity;
+import com.huimv.eartag2.common.dao.entity.EartagDataEntity2;
+import com.huimv.eartag2.common.dao.repo.EartagDataRepo;
+import com.huimv.eartag2.common.dao.repo.EartagDataRepo2;
+import org.junit.Test;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+
+/**
+ * @Description: TODO
+ * @Author: 静静
+ * @CreateTime: 2022-07-26  10:42
+ * @Version: 1.0
+ */
+@SpringBootTest
+public class EartagTest {
+    @Autowired
+    private EartagDataRepo2 eartagDataRepo2;
+
+    @Autowired
+    private EartagDataRepo eartagDataRepo;
+
+    @Test
+    public void test_1(){
+        EartagDataEntity2 eartagFlowByEarmark = eartagDataRepo2.getEartagFlowByEarmark("123");
+        System.out.println(eartagFlowByEarmark);
+
+    }
+
+    //122083123610011
+
+    @Test
+    public void test_2(){
+        EartagDataEntity eartagFlowByEarmark = eartagDataRepo.getLastEartagData("202007239999873");
+        System.out.println(eartagFlowByEarmark);
+
+    }
+}

+ 6 - 0
huimv-eartag2-platform/huimv-eartag2-eartag/pom.xml

@@ -50,6 +50,12 @@
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter-actuator</artifactId>
         </dependency>
+        <dependency>
+            <groupId>com.huimv</groupId>
+            <artifactId>huimv-eartag2-common</artifactId>
+            <version>0.0.2-SNAPSHOT</version>
+            <scope>compile</scope>
+        </dependency>
     </dependencies>
 
     <build>

+ 54 - 0
huimv-eartag2-platform/huimv-eartag2-eartag/src/main/java/com/huimv/eartag2/eartag/service/impl/EartagServiceImpl.java

@@ -13,6 +13,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.redis.core.RedisTemplate;
 import org.springframework.stereotype.Service;
 
+import javax.annotation.Resource;
 import java.math.BigDecimal;
 import java.sql.Time;
 import java.sql.Timestamp;
@@ -33,6 +34,8 @@ import java.util.Map;
 @Service
 @Slf4j
 public class EartagServiceImpl implements IEartagService {
+    @Resource
+    private EartagDataRepo2 eartagDataRepo2;
     @Autowired
     private RedisTemplate redisTemplate;
     @Autowired
@@ -56,6 +59,8 @@ public class EartagServiceImpl implements IEartagService {
     @Autowired
     private EartagDeviceOnlineRepo eartagDeviceOnlineRepo;
 
+
+
     @Override
     public void handleEartag(JSONObject dataJo) throws ParseException {
         //设备编码
@@ -76,6 +81,8 @@ public class EartagServiceImpl implements IEartagService {
             //{保存耳标流水}
             saveEartagFlow(dataJo, nowTimestamp, todayDate, farmId);
 
+            saveEartagFlow2(dataJo, nowTimestamp, todayDate, farmId);
+
             //{更新设备注册信息}
             updateDeviceRegister(deviceCode, nowTimestamp, todayDate, farmId);
 
@@ -634,6 +641,53 @@ public class EartagServiceImpl implements IEartagService {
         cacheService.putEartagFlowToCache(dataEntity.getEarmark(),dataEntity);
     }
 
+    public void saveEartagFlow2(JSONObject eartagJo, Timestamp nowTimestamp, java.sql.Date todayDate, String farmId) throws ParseException {
+        DateUtil dateUtil = new DateUtil();
+        //判断近五分钟内是否有耳标数据 先获取耳标号
+        String earmark = eartagJo.getString("earmark");
+        EartagDataEntity2 eartagFlowByEarmark = eartagDataRepo2.getEartagFlowByEarmark(earmark);
+        if (null == eartagFlowByEarmark){
+            //插数据到数据库里
+            EartagDataEntity2 dataEntity2 = new EartagDataEntity2();
+            dataEntity2.setCmdHeader(eartagJo.getString("cmdHeader"));
+            dataEntity2.setDevice(eartagJo.getString("device"));
+            dataEntity2.setEarmark(eartagJo.getString("earmark"));
+            dataEntity2.setBat(Integer.parseInt(eartagJo.getString("bat")));
+            dataEntity2.setEarTemp(Integer.parseInt(eartagJo.getString("earTemp")));
+            dataEntity2.setEarTemp1(eartagJo.getFloat("earTemp1"));
+            dataEntity2.setEnvTemp(Integer.parseInt(eartagJo.getString("envTemp")));
+            dataEntity2.setEnvTemp1(eartagJo.getFloat("envTemp1"));
+            dataEntity2.setAct(Integer.parseInt(eartagJo.getString("act")));
+            dataEntity2.setAct1(Integer.parseInt(eartagJo.getString("act1")));
+            dataEntity2.setSignal1(Integer.parseInt(eartagJo.getString("signal")));
+            dataEntity2.setAskTime(getAskTime(eartagJo.getString("askTime")));
+            dataEntity2.setOther(eartagJo.getString("other"));
+            dataEntity2.setAddTime(nowTimestamp);
+            dataEntity2.setCreateDate(todayDate);
+            dataEntity2.setFarmId(farmId);
+            dataEntity2.setAskDate(new java.sql.Date(dateUtil.parseDate(getAskDate(eartagJo.getString("askTime"))).getTime()));
+            eartagDataRepo2.saveAndFlush(dataEntity2);
+        }else {
+            eartagFlowByEarmark.setCmdHeader(eartagJo.getString("cmdHeader"));
+            eartagFlowByEarmark.setDevice(eartagJo.getString("device"));
+            eartagFlowByEarmark.setEarmark(eartagJo.getString("earmark"));
+            eartagFlowByEarmark.setBat(Integer.parseInt(eartagJo.getString("bat")));
+            eartagFlowByEarmark.setEarTemp(Integer.parseInt(eartagJo.getString("earTemp")));
+            eartagFlowByEarmark.setEarTemp1(eartagJo.getFloat("earTemp1"));
+            eartagFlowByEarmark.setEnvTemp(Integer.parseInt(eartagJo.getString("envTemp")));
+            eartagFlowByEarmark.setEnvTemp1(eartagJo.getFloat("envTemp1"));
+            eartagFlowByEarmark.setAct(Integer.parseInt(eartagJo.getString("act")));
+            eartagFlowByEarmark.setAct1(Integer.parseInt(eartagJo.getString("act1")));
+            eartagFlowByEarmark.setSignal1(Integer.parseInt(eartagJo.getString("signal")));
+            eartagFlowByEarmark.setAskTime(getAskTime(eartagJo.getString("askTime")));
+            eartagFlowByEarmark.setOther(eartagJo.getString("other"));
+            eartagFlowByEarmark.setCreateDate(todayDate);
+            eartagFlowByEarmark.setFarmId(farmId);
+            eartagFlowByEarmark.setAskDate(new java.sql.Date(dateUtil.parseDate(getAskDate(eartagJo.getString("askTime"))).getTime()));
+            eartagDataRepo2.saveAndFlush(eartagFlowByEarmark);
+        }
+    }
+
     //
     public String getAskTime(String askTime) {
         String newAskTime = askTime.substring(0, 4) + "-" + askTime.substring(4, 6) + "-" + askTime.substring(6, 8) + " " + askTime.substring(8, 10) + ":" + askTime.substring(10, 12) + ":" + askTime.substring(12, 14);

+ 44 - 0
huimv-eartag2-platform/huimv-eartag2-manage2/src/main/java/com/huimv/eartag2/manage2/config/MybatisPlusConfig.java

@@ -0,0 +1,44 @@
+package com.huimv.eartag2.manage2.config;
+
+import com.baomidou.mybatisplus.annotation.DbType;
+import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
+import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+/**
+ * @Project : huimv.shiwan
+ * @Package : com.huimv.biosafety.uface.controller
+ * @Description : TODO
+ * @Version : 1.0
+ * @Author : ZhuoNing
+ * @Create : 2020-12-25
+ **/
+@Configuration
+public class MybatisPlusConfig {
+    /**
+     * 注册插件
+     */
+    @Bean
+    public MybatisPlusInterceptor mybatisPlusInterceptor() {
+
+        MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
+        // 添加分页插件
+        PaginationInnerInterceptor pageInterceptor = new PaginationInnerInterceptor();
+        // 设置请求的页面大于最大页后操作,true调回到首页,false继续请求。默认false
+        pageInterceptor.setOverflow(false);
+        // 单页分页条数限制,默认无限制
+        pageInterceptor.setMaxLimit(500L);
+        // 设置数据库类型
+        pageInterceptor.setDbType(DbType.MYSQL);
+
+        interceptor.addInnerInterceptor(pageInterceptor);
+        return interceptor;
+
+//        MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
+//        interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
+//        return interceptor;
+
+
+    }
+}

+ 155 - 0
huimv-eartag2-platform/huimv-eartag2-manage2/src/main/java/com/huimv/eartag2/manage2/controller/BasePigpenController.java

@@ -0,0 +1,155 @@
+package com.huimv.eartag2.manage2.controller;
+
+
+import com.huimv.eartag2.common.utils.Result;
+import com.huimv.eartag2.manage2.service.BasePigpenService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.Map;
+
+/**
+ * <p>
+ *  前端控制器
+ * </p>
+ *
+ * @author zn
+ * @since 2022-07-22
+ */
+@RestController
+@RequestMapping("/base-pigpen")
+public class BasePigpenController {
+    @Autowired
+    private BasePigpenService basePigpenService;
+
+    @RequestMapping(value = "/list",method = RequestMethod.POST)
+    public Result list(@RequestBody Map<String, Object> paramsMap) {
+        System.out.println("paramsMap>>"+paramsMap.toString());
+        String farmCode = "";
+        if (paramsMap.get("farmCode") != null) {
+            farmCode = paramsMap.get("farmCode")+"";
+        }
+        String stageCode = "";
+        if (paramsMap.get("stageCode") != null) {
+            stageCode = paramsMap.get("stageCode")+"";
+        }
+        String pigpenName = "";
+        if (paramsMap.get("pigpenName") != null) {
+            pigpenName = paramsMap.get("pigpenName")+"";
+        }
+        return basePigpenService.list(farmCode,pigpenName,stageCode);
+    }
+
+
+
+    // 添加栋舍
+    /**
+     * @Method      : addBuilding
+     * @Description :  farmCode,buildingName,buildingCode,sort --以上必填
+     * @Params      : [paramsMap]
+     * @Return      : com.huimv.eartag2.common.utils.Result
+     *
+     * @Author      : ZhuoNing
+     * @Date        : 2022/7/23
+     * @Time        : 15:16
+     */
+    @RequestMapping(value = "/addBuilding",method = RequestMethod.POST)
+    public Result addBuilding(@RequestBody Map<String, Object> paramsMap){
+        // 牧场名称
+        String farmCode = paramsMap.get("farmCode")+"";
+        // 栋名称
+        String buildingName = paramsMap.get("buildingName")+"";
+        // 栋编码
+        String buildingCode = paramsMap.get("buildingCode")+"";
+        // 阶段
+        String stageCode = paramsMap.get("stageCode")+"";
+        // 排序
+        String sort = paramsMap.get("sort")+"";
+//        if(sort == null){
+//            sort = "1";
+//        }
+        // 类型
+        Integer type = 1;
+        //
+        return basePigpenService.addBuilding(farmCode,buildingName,buildingCode,stageCode,Integer.parseInt(sort),type);
+    }
+
+    @RequestMapping(value = "/editBuilding",method = RequestMethod.POST)
+    public Result editBuilding(@RequestBody Map<String, Object> paramsMap){
+        // id
+        String id = paramsMap.get("id")+"";
+        // 栋名称
+        String buildingName = paramsMap.get("buildingName")+"";
+        // 栋编码
+        String buildingCode = paramsMap.get("buildingCode")+"";
+        // 阶段
+        String stageCode = paramsMap.get("stageCode")+"";
+        // 排序
+        String sort = paramsMap.get("sort")+"";
+        if(sort == null){
+            sort = "1";
+        }
+        // 类型
+        Integer type = 1;
+        //
+        return basePigpenService.editBuilding(id,buildingName,buildingCode,stageCode,Integer.parseInt(sort),type);
+    }
+
+    // 删除栋舍
+    @RequestMapping(value = "/remove",method = RequestMethod.POST)
+    public Result remove(@RequestBody String ids){
+        //
+        return basePigpenService.remove(ids);
+    }
+
+    // 添加单元
+    @RequestMapping(value = "/addUnit",method = RequestMethod.POST)
+    public Result addUnit(@RequestBody Map<String, Object> paramsMap){
+        // 牧场名称
+        String farmCode = paramsMap.get("farmCode")+"";
+        // 栋
+        String parentId = paramsMap.get("parentId")+"";
+        // 单元
+        String unitCode = paramsMap.get("unitCode")+"";
+        // 单元
+        String unitName = paramsMap.get("unitName")+"";
+        // 阶段
+        String stageCode = paramsMap.get("stageCode")+"";
+        // 排序
+        String sort = paramsMap.get("sort")+"";
+        if(sort == null){
+            sort = "1";
+        }
+        // 类型
+        Integer type = 2;
+        //
+        return basePigpenService.addUnit(farmCode,parentId,unitName,unitCode,stageCode,Integer.parseInt(sort),type);
+    }
+
+    @RequestMapping(value = "/editUnit",method = RequestMethod.POST)
+    public Result editUnit(@RequestBody Map<String, Object> paramsMap){
+        // id
+        String id = paramsMap.get("id")+"";
+        // 栋
+        String parentId = paramsMap.get("parentId")+"";
+        // 单元
+        String unitCode = paramsMap.get("unitCode")+"";
+        // 单元
+        String unitName = paramsMap.get("unitName")+"";
+        // 阶段
+        String stageCode = paramsMap.get("stageCode")+"";
+        // 排序
+        String sort = paramsMap.get("sort")+"";
+        if(sort == null){
+            sort = "1";
+        }
+        // 类型
+        Integer type = 2;
+        //
+        return basePigpenService.editUnit(id,parentId,unitName,unitCode,stageCode,Integer.parseInt(sort),type);
+    }
+
+
+}
+

+ 21 - 0
huimv-eartag2-platform/huimv-eartag2-manage2/src/main/java/com/huimv/eartag2/manage2/controller/BaseStageController.java

@@ -0,0 +1,21 @@
+package com.huimv.eartag2.manage2.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * <p>
+ *  前端控制器
+ * </p>
+ *
+ * @author zn
+ * @since 2022-07-22
+ */
+@RestController
+@RequestMapping("/base-stage")
+public class BaseStageController {
+
+}
+

+ 21 - 0
huimv-eartag2-platform/huimv-eartag2-manage2/src/main/java/com/huimv/eartag2/manage2/controller/EartagDeviceRegisterController.java

@@ -0,0 +1,21 @@
+package com.huimv.eartag2.manage2.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * <p>
+ *  前端控制器
+ * </p>
+ *
+ * @author zn
+ * @since 2022-07-22
+ */
+@RestController
+@RequestMapping("/eartag-device-register")
+public class EartagDeviceRegisterController {
+
+}
+

+ 16 - 0
huimv-eartag2-platform/huimv-eartag2-manage2/src/main/java/com/huimv/eartag2/manage2/mapper/BasePigpenMapper.java

@@ -0,0 +1,16 @@
+package com.huimv.eartag2.manage2.mapper;
+
+import com.huimv.eartag2.manage2.pojo.BasePigpen;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author zn
+ * @since 2022-07-22
+ */
+public interface BasePigpenMapper extends BaseMapper<BasePigpen> {
+
+}

+ 16 - 0
huimv-eartag2-platform/huimv-eartag2-manage2/src/main/java/com/huimv/eartag2/manage2/mapper/BaseStageMapper.java

@@ -0,0 +1,16 @@
+package com.huimv.eartag2.manage2.mapper;
+
+import com.huimv.eartag2.manage2.pojo.BaseStage;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author zn
+ * @since 2022-07-22
+ */
+public interface BaseStageMapper extends BaseMapper<BaseStage> {
+
+}

+ 22 - 0
huimv-eartag2-platform/huimv-eartag2-manage2/src/main/java/com/huimv/eartag2/manage2/mapper/xml/BasePigpenMapper.xml

@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.huimv.eartag2.manage2.mapper.BasePigpenMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.huimv.eartag2.manage2.pojo.BasePigpen">
+        <id column="id" property="id" />
+        <result column="pigpen_name" property="pigpenName" />
+        <result column="pigpen_code" property="pigpenCode" />
+        <result column="parent_id" property="parentId" />
+        <result column="f_type" property="fType" />
+        <result column="farm_code" property="farmCode" />
+        <result column="sort" property="sort" />
+        <result column="stage_code" property="stageCode" />
+    </resultMap>
+
+    <!-- 通用查询结果列 -->
+    <sql id="Base_Column_List">
+        id, pigpen_name, parent_id, f_type, farm_code
+    </sql>
+
+</mapper>

+ 18 - 0
huimv-eartag2-platform/huimv-eartag2-manage2/src/main/java/com/huimv/eartag2/manage2/mapper/xml/BaseStageMapper.xml

@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.huimv.eartag2.manage2.mapper.BaseStageMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.huimv.eartag2.manage2.pojo.BaseStage">
+        <id column="id" property="id" />
+        <result column="stage_code" property="stageCode" />
+        <result column="stage_name" property="stageName" />
+        <result column="sort" property="sort" />
+    </resultMap>
+
+    <!-- 通用查询结果列 -->
+    <sql id="Base_Column_List">
+        id, stage_code, stage_name, sort
+    </sql>
+
+</mapper>

+ 40 - 0
huimv-eartag2-platform/huimv-eartag2-manage2/src/main/java/com/huimv/eartag2/manage2/pojo/BasePigpen.java

@@ -0,0 +1,40 @@
+package com.huimv.eartag2.manage2.pojo;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.Version;
+import com.baomidou.mybatisplus.annotation.TableId;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author zn
+ * @since 2022-07-22
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class BasePigpen implements Serializable {
+
+    private static final long serialVersionUID=1L;
+
+      @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    private String pigpenCode;
+
+    private String pigpenName;
+
+    private Integer parentId;
+
+    private Integer fType;
+
+    private String farmCode;
+
+    private  int sort;
+
+    private String stageCode;
+}

+ 34 - 0
huimv-eartag2-platform/huimv-eartag2-manage2/src/main/java/com/huimv/eartag2/manage2/pojo/BaseStage.java

@@ -0,0 +1,34 @@
+package com.huimv.eartag2.manage2.pojo;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.Version;
+import com.baomidou.mybatisplus.annotation.TableId;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author zn
+ * @since 2022-07-22
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class BaseStage implements Serializable {
+
+    private static final long serialVersionUID=1L;
+
+      @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    private String stageCode;
+
+    private String stageName;
+
+    private Integer sort;
+
+
+}

+ 28 - 0
huimv-eartag2-platform/huimv-eartag2-manage2/src/main/java/com/huimv/eartag2/manage2/service/BasePigpenService.java

@@ -0,0 +1,28 @@
+package com.huimv.eartag2.manage2.service;
+
+import com.huimv.eartag2.common.utils.Result;
+import com.huimv.eartag2.manage2.pojo.BasePigpen;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author zn
+ * @since 2022-07-22
+ */
+public interface BasePigpenService extends IService<BasePigpen> {
+
+    Result addBuilding(String farmCode, String buildingName, String buildingCode, String stageCode, Integer sort, Integer type);
+
+    Result addUnit(String farmCode, String buildingCode, String unitName, String unitCode, String stageCode, Integer sort, Integer type);
+
+    Result editBuilding(String id, String buildingName, String buildingCode, String stageCode, Integer sort, Integer type);
+
+    Result remove(String ids);
+
+    Result editUnit(String id, String parentId, String unitName, String unitCode, String stageCode, Integer sort, Integer type);
+
+    Result list(String farmCode, String pigpenName, String stageCode);
+}

+ 16 - 0
huimv-eartag2-platform/huimv-eartag2-manage2/src/main/java/com/huimv/eartag2/manage2/service/BaseStageService.java

@@ -0,0 +1,16 @@
+package com.huimv.eartag2.manage2.service;
+
+import com.huimv.eartag2.manage2.pojo.BaseStage;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author zn
+ * @since 2022-07-22
+ */
+public interface BaseStageService extends IService<BaseStage> {
+
+}

+ 16 - 0
huimv-eartag2-platform/huimv-eartag2-manage2/src/main/java/com/huimv/eartag2/manage2/service/EartagDeviceRegisterService.java

@@ -0,0 +1,16 @@
+package com.huimv.eartag2.manage2.service;
+
+import com.huimv.eartag2.manage2.pojo.EartagDeviceRegister;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author zn
+ * @since 2022-07-22
+ */
+public interface EartagDeviceRegisterService extends IService<EartagDeviceRegister> {
+
+}

+ 192 - 0
huimv-eartag2-platform/huimv-eartag2-manage2/src/main/java/com/huimv/eartag2/manage2/service/impl/BasePigpenServiceImpl.java

@@ -0,0 +1,192 @@
+package com.huimv.eartag2.manage2.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.huimv.eartag2.common.utils.Result;
+import com.huimv.eartag2.common.utils.ResultCode;
+import com.huimv.eartag2.manage2.pojo.BasePigpen;
+import com.huimv.eartag2.manage2.mapper.BasePigpenMapper;
+import com.huimv.eartag2.manage2.service.BasePigpenService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.huimv.eartag2.manage2.utils.IDUtil;
+import com.huimv.eartag2.manage2.utils.ResultUtil;
+import com.huimv.eartag2.manage2.vo.TreeBasePigpen;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author zn
+ * @since 2022-07-22
+ */
+@Service
+public class BasePigpenServiceImpl extends ServiceImpl<BasePigpenMapper, BasePigpen> implements BasePigpenService {
+    @Autowired
+    private BasePigpenMapper basePigpenMapper;
+    @Autowired
+    private ResultUtil resultUtil;
+    @Autowired
+    private IDUtil idUtil;
+
+    /**
+     * @Method      : addBuilding
+     * @Description :
+     * @Params      : [farmCode, buildingName, buildingCode, stageCode, sort, type]
+     * @Return      : com.huimv.eartag2.common.utils.Result
+     * 
+     * @Author      : ZhuoNing
+     * @Date        : 2022/7/23       
+     * @Time        : 15:16
+     */
+    @Override
+    public Result addBuilding(String farmCode, String buildingName, String buildingCode, String stageCode, Integer sort, Integer type) {
+        BasePigpen newBasePigpen = new BasePigpen();
+        newBasePigpen.setFarmCode(farmCode);
+        newBasePigpen.setPigpenCode(buildingCode);
+        newBasePigpen.setPigpenName(buildingName);
+        newBasePigpen.setStageCode(stageCode);
+        newBasePigpen.setSort(sort);
+        newBasePigpen.setFType(type);
+        return resultUtil.result(basePigpenMapper.insert(newBasePigpen));
+    }
+
+    @Override
+    public Result editBuilding(String id, String buildingName, String buildingCode, String stageCode, Integer sort, Integer type) {
+        BasePigpen basePigpen = basePigpenMapper.selectById(id);
+        if(basePigpen == null){
+            return new Result(ResultCode.FAIL,"该记录不存在.");
+        }else{
+            basePigpen.setPigpenName(buildingName);
+            basePigpen.setStageCode(stageCode);
+            basePigpen.setSort(sort);
+            return resultUtil.result(basePigpenMapper.updateById(basePigpen));
+        }
+    }
+
+    @Override
+    public Result remove(String ids) {
+        //如果删除的节点是父节点,需要将其字节点全部删除掉
+//       QueryWrapper<BasePigpen> queryWrapper = new QueryWrapper<>();
+//        queryWrapper.eq("parent_id",ids);
+//        //查寻到所有的子数据
+//        List<BasePigpen> basePigpens = basePigpenMapper.selectList(queryWrapper);
+//        List<Integer> childIdList = basePigpens.stream().map(BasePigpen::getId).collect(Collectors.toList());
+//        //删除子数据
+//        basePigpenMapper.deleteBatchIds(childIdList);
+
+        List<Integer> idList = idUtil.convert(ids);
+        List<BasePigpen> basePigpens1 = new ArrayList<>();
+        for (Integer integer : idList) {
+            QueryWrapper<BasePigpen> queryWrapper = new QueryWrapper<>();
+            queryWrapper.eq("parent_id",integer);
+            List<BasePigpen> basePigpens = basePigpenMapper.selectList(queryWrapper);
+            basePigpens1.addAll(basePigpens);
+        }
+        List<Integer> childIdList = basePigpens1.stream().map(BasePigpen::getId).collect(Collectors.toList());
+        System.out.println("___________________"+childIdList);
+
+        //childIdList如果是空的、就说明直接删除单元吧
+        if (null == childIdList || childIdList.size() == 0){
+            basePigpenMapper.deleteBatchIds(idList);
+        }else {
+            //删除子数据
+            basePigpenMapper.deleteBatchIds(childIdList);
+            basePigpenMapper.deleteBatchIds(idList);
+        }
+        //删除当前id的数据
+        return resultUtil.result(1);
+    }
+
+    @Override
+    public Result addUnit(String farmCode, String parentId, String unitName, String unitCode, String stageCode, Integer sort, Integer type) {
+        BasePigpen newBasePigpen = new BasePigpen();
+        newBasePigpen.setFarmCode(farmCode);
+        newBasePigpen.setPigpenCode(unitCode);
+        newBasePigpen.setPigpenName(unitName);
+        newBasePigpen.setParentId(Integer.parseInt(parentId));
+        newBasePigpen.setSort(sort);
+        newBasePigpen.setFType(type);
+        newBasePigpen.setStageCode(stageCode);
+        return resultUtil.result(basePigpenMapper.insert(newBasePigpen));
+    }
+
+    @Override
+    public Result editUnit(String id, String parentId, String unitName, String unitCode, String stageCode, Integer sort, Integer type) {
+        BasePigpen basePigpen = basePigpenMapper.selectById(id);
+        if(basePigpen == null){
+            return new Result(ResultCode.FAIL,"该记录不存在.");
+        }else{
+            basePigpen.setPigpenCode(unitCode);
+            basePigpen.setPigpenName(unitName);
+            basePigpen.setParentId(Integer.parseInt(parentId));
+            basePigpen.setSort(sort);
+            basePigpen.setFType(type);
+            basePigpen.setStageCode(stageCode);
+            return resultUtil.result(basePigpenMapper.updateById(basePigpen));
+        }
+    }
+
+    @Override
+    public Result list(String farmCode, String pigpenName, String stageCode) {
+        QueryWrapper<BasePigpen> queryWrapper = new QueryWrapper<>();
+        queryWrapper.like(StringUtils.isNotBlank(pigpenName),"pigpen_name", pigpenName);
+        queryWrapper.like(StringUtils.isNotBlank(stageCode),"stage_code", stageCode);
+        queryWrapper.eq(StringUtils.isNotBlank(farmCode),"farm_code", farmCode);
+        //创建排序
+//        queryWrapper.orderByAsc("sort");
+        List<BasePigpen> basePigpens = basePigpenMapper.selectList(queryWrapper);
+        //Page<BasePigpen> pageBasePigpen = basePigpenMapper.selectPage(page, queryWrapper);
+
+        //将结果List改为树
+        List<TreeBasePigpen> treeBasePigpens = parseBizBaseArea(basePigpens);
+        return new Result(ResultCode.SUCCESS,treeBasePigpens);
+    }
+
+
+
+    /**
+     * 查询结果 转换成树形结构
+     * @param bizBaseAreas 原始数据
+     * @return 树
+     */
+    private List<TreeBasePigpen> parseBizBaseArea(List<BasePigpen> bizBaseAreas){
+        //构建需要展示的树形节点结构
+        Map<String, TreeBasePigpen> nodeMap = bizBaseAreas.stream().map(basePigpen -> {
+            TreeBasePigpen  baseVo = new TreeBasePigpen();
+            baseVo.setId(basePigpen.getId()+"");
+            baseVo.setFarmCode(basePigpen.getFarmCode());
+            baseVo.setPigpenCode(basePigpen.getPigpenCode());
+            baseVo.setParentId(basePigpen.getParentId());
+            baseVo.setSort(basePigpen.getSort());
+            baseVo.setPigpenName(basePigpen.getPigpenName());
+            baseVo.setStageCode(basePigpen.getStageCode());
+            baseVo.setType(basePigpen.getFType());
+            baseVo.setChildNode(new ArrayList<>());
+            return baseVo;
+        }).collect(Collectors.toMap(TreeBasePigpen::getId, b -> b,(k1, k2)->k1));
+        //创建数组存父亲节点
+        ArrayList<TreeBasePigpen> roots = new ArrayList<>();
+        //构建树形
+        nodeMap.values().forEach(item->{
+            String parentCode = item.getParentId()+"";
+            if (nodeMap.get(parentCode) == null){
+                //父节点为空,说明当前节点就已经是父节点了 将该节点存起来
+                roots.add(item);
+            }else {
+                //父节点 不为空,说明有父节点,拿到该节点的父节点的孩子节点(就是我自己),将该节点存起来
+                nodeMap.get(parentCode).getChildNode().add(item);
+            }
+        });
+        return roots;
+    }
+}

+ 20 - 0
huimv-eartag2-platform/huimv-eartag2-manage2/src/main/java/com/huimv/eartag2/manage2/service/impl/BaseStageServiceImpl.java

@@ -0,0 +1,20 @@
+package com.huimv.eartag2.manage2.service.impl;
+
+import com.huimv.eartag2.manage2.pojo.BaseStage;
+import com.huimv.eartag2.manage2.mapper.BaseStageMapper;
+import com.huimv.eartag2.manage2.service.BaseStageService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author zn
+ * @since 2022-07-22
+ */
+@Service
+public class BaseStageServiceImpl extends ServiceImpl<BaseStageMapper, BaseStage> implements BaseStageService {
+
+}

+ 40 - 0
huimv-eartag2-platform/huimv-eartag2-manage2/src/main/java/com/huimv/eartag2/manage2/utils/IDUtil.java

@@ -0,0 +1,40 @@
+package com.huimv.eartag2.manage2.utils;
+
+import com.alibaba.fastjson.JSONObject;
+import org.springframework.stereotype.Component;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @Project : huimv.shiwan
+ * @Package : com.huimv.biosafety.uface.controller
+ * @Description : TODO
+ * @Version : 1.0
+ * @Author : ZhuoNing
+ * @Create : 2020-12-25
+ **/
+@Component
+public class IDUtil {
+
+    /**
+     * @Method      : convertToList
+     * @Description : 
+     * @Params      : [idSet]
+     * @Return      : java.util.List<java.lang.Integer>
+     * 
+     * @Author      : ZhuoNing
+     * @Date        : 2022/6/28       
+     * @Time        : 11:21
+     */
+    public List<Integer> convert(String idSet){
+        JSONObject idsJo = JSONObject.parseObject(idSet);
+        String ids = idsJo.getString("ids");
+        List<Integer> idList = new ArrayList<>();
+        String[] idsArray = ids.split(",");
+        for(String id:idsArray){
+            idList.add(Integer.parseInt(id));
+        }
+        return idList;
+    }
+}

+ 25 - 0
huimv-eartag2-platform/huimv-eartag2-manage2/src/main/java/com/huimv/eartag2/manage2/utils/ResultUtil.java

@@ -0,0 +1,25 @@
+package com.huimv.eartag2.manage2.utils;
+
+import com.huimv.eartag2.common.utils.Result;
+import com.huimv.eartag2.common.utils.ResultCode;
+import org.springframework.stereotype.Component;
+
+/**
+ * @Project : huimv.shiwan
+ * @Package : com.huimv.biosafety.uface.controller
+ * @Description : TODO
+ * @Version : 1.0
+ * @Author : ZhuoNing
+ * @Create : 2020-12-25
+ **/
+@Component
+public class ResultUtil {
+
+    public Result result(int rows){
+        if(rows == 0){
+            return new Result(ResultCode.FAIL,"处理失败.");
+        }else{
+            return new Result(ResultCode.SUCCESS,"处理成功.");
+        }
+    }
+}

+ 40 - 0
huimv-eartag2-platform/huimv-eartag2-manage2/src/main/java/com/huimv/eartag2/manage2/vo/TreeBasePigpen.java

@@ -0,0 +1,40 @@
+package com.huimv.eartag2.manage2.vo;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * @Description: TODO
+ * @Author: 静静
+ * @CreateTime: 2022-07-25  09:33
+ * @Version: 1.0
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class TreeBasePigpen  implements Serializable {
+
+    private static final long serialVersionUID=1L;
+
+    private String id;
+
+    private String pigpenCode;
+
+    private String pigpenName;
+
+    private Integer parentId;
+
+    private Integer type;
+
+    private String farmCode;
+
+    private  int sort;
+
+    private String stageCode;
+
+    private List<TreeBasePigpen> childNode;
+}