From ab06f7043e4192556c4d9881b0430bcb6cc75f50 Mon Sep 17 00:00:00 2001
From: whywhyo <1511349576@qq.com>
Date: 星期三, 03 五月 2023 23:28:02 +0800
Subject: [PATCH] 完成家根网

---
 zhang-content/src/main/java/com/ruoyi/converter/BearStatusConverter.java          |   57 +++++++
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/zhang/ZMarryController.java    |   43 +++++
 ruoyi-common/pom.xml                                                              |    6 
 zhang-content/src/main/java/com/ruoyi/domain/ZInfoUser.java                       |   12 +
 zhang-content/src/main/java/com/ruoyi/service/ZInfoUserService.java               |    6 
 zhang-content/src/main/java/com/ruoyi/domain/MarryUser.java                       |   30 +++
 zhang-content/src/main/java/com/ruoyi/domain/dto/MarryInfoDto.java                |   58 ++++++
 zhang-content/src/main/java/com/ruoyi/service/impl/ZInfoUserServiceImpl.java      |   72 ++++++++
 ruoyi-common/src/main/java/com/ruoyi/common/utils/poi/ExcelUtil.java              |   36 ++++
 zhang-content/src/main/java/com/ruoyi/service/impl/ZMarryServiceImpl.java         |   55 ++++++
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/zhang/ZInfoUserController.java |   32 ++++
 zhang-content/src/main/java/com/ruoyi/domain/dto/ZUserInfoDto.java                |   18 ++
 zhang-content/src/main/java/com/ruoyi/domain/ZMarry.java                          |    9 +
 13 files changed, 416 insertions(+), 18 deletions(-)

diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/zhang/ZInfoUserController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/zhang/ZInfoUserController.java
index bcc2de2..86671ae 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/zhang/ZInfoUserController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/zhang/ZInfoUserController.java
@@ -20,6 +20,7 @@
 
 import javax.annotation.Resource;
 import javax.servlet.http.HttpServletResponse;
+import javax.websocket.server.PathParam;
 import java.util.Arrays;
 import java.util.List;
 import java.util.regex.Pattern;
@@ -181,6 +182,37 @@
         return zInfoUserService.empower(empowerDto);
     }
 
+    /**
+     * 瀹舵牴缃�
+     */
+    @GetMapping("/root")
+    public AjaxResult listAllPeopleWithTree(){
+        return zInfoUserService.listWithTree();
+    }
+
+
+    /**
+     * 鎵惧埌鎵�鏈夌殑鎴愬憳
+     */
+    @GetMapping("/all")
+    public AjaxResult listAllPeople(){
+        return zInfoUserService.listAllExceptAdmin();
+    }
+
+    /**
+     * 鏂板銆佷慨鏀圭埗瀛愬叧绯�
+     */
+
+    @PutMapping("/setParent")
+    public AjaxResult addParent(@PathParam("fatherId")Long fatherId,@PathParam("motherId")Long motherId){
+        return zInfoUserService.addParent(fatherId,motherId);
+    }
+
+
+
+
+
+
 
 }
 
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/zhang/ZMarryController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/zhang/ZMarryController.java
index 147dbf5..58aa3e0 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/zhang/ZMarryController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/zhang/ZMarryController.java
@@ -8,6 +8,7 @@
 import com.ruoyi.common.enums.BusinessType;
 import com.ruoyi.common.utils.SecurityUtils;
 import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.domain.MarryUser;
 import com.ruoyi.domain.ZMarry;
 import com.ruoyi.domain.dto.MarryInfoDto;
 import com.ruoyi.service.ZMarryService;
@@ -17,7 +18,9 @@
 import org.springframework.web.multipart.MultipartFile;
 
 import javax.servlet.http.HttpServletResponse;
+import java.util.ArrayList;
 import java.util.Arrays;
+import java.util.HashMap;
 import java.util.List;
 
 /**
@@ -78,5 +81,45 @@
     }
 
 
+//    /**
+//     * 瀵煎嚭濠氬Щ鐘跺喌
+//     */
+//    @PostMapping("/export")
+//    public void export(HttpServletResponse response)
+//    {
+//        AjaxResult marryStatus = getMarryStatus();
+//        HashMap data = (HashMap) marryStatus.get("data");
+//
+//        List<MarryUser> myInfoList = Arrays.asList((MarryUser) data.get("myInfo"));
+//        ExcelUtil<MarryUser> util1 = new ExcelUtil<>(MarryUser.class);
+//        util1.exportEasyExcel(response,myInfoList,"涓汉淇℃伅");
+//
+//        List<MarryUser> spouseInfoList = Arrays.asList((MarryUser) data.get("spouseInfo"));
+//        ExcelUtil<MarryUser> util2 = new ExcelUtil<>(MarryUser.class);
+//        util2.exportEasyExcel(response,spouseInfoList,"閰嶅伓淇℃伅");
+//
+//        List<ZMarry> marryInfoList = Arrays.asList((ZMarry) data.get("marryInfo"));
+//        ExcelUtil<ZMarry> util3 = new ExcelUtil<>(ZMarry.class);
+//        util3.exportEasyExcel(response,marryInfoList,"濠氬Щ淇℃伅");
+//
+//        List<MarryUser> oldSpouseInfoList = (List<MarryUser>) data.get("oldSpouseInfo");
+//        ExcelUtil<MarryUser> util4 = new ExcelUtil<>(MarryUser.class);
+//        util4.exportEasyExcel(response,oldSpouseInfoList,"鍓嶄换淇℃伅");
+//    }
+
+
+    /**
+     * 瀵煎嚭
+     */
+    @PostMapping("/export")
+    public void export(HttpServletResponse response){
+        AjaxResult marryStatus = getMarryStatus();
+        MarryInfoDto data = (MarryInfoDto) marryStatus.get("data");
+        List<MarryInfoDto> list = Arrays.asList(data);
+        ExcelUtil<MarryInfoDto> util1 = new ExcelUtil<>(MarryInfoDto.class);
+        util1.exportExcel(response,list,"濠氬Щ淇℃伅");
+    }
+
+
 }
 
diff --git a/ruoyi-common/pom.xml b/ruoyi-common/pom.xml
index 6866771..68dd539 100644
--- a/ruoyi-common/pom.xml
+++ b/ruoyi-common/pom.xml
@@ -137,6 +137,12 @@
             <artifactId>lombok</artifactId>
         </dependency>
 
+        <dependency>
+            <groupId>com.alibaba</groupId>
+            <artifactId>easyexcel</artifactId>
+            <version>2.2.6</version>
+        </dependency>
+
     </dependencies>
 
     <build>
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/utils/poi/ExcelUtil.java b/ruoyi-common/src/main/java/com/ruoyi/common/utils/poi/ExcelUtil.java
index 755292b..0a48f37 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/utils/poi/ExcelUtil.java
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/utils/poi/ExcelUtil.java
@@ -24,6 +24,8 @@
 import java.util.UUID;
 import java.util.stream.Collectors;
 import javax.servlet.http.HttpServletResponse;
+
+import com.alibaba.excel.EasyExcel;
 import org.apache.commons.lang3.ArrayUtils;
 import org.apache.commons.lang3.RegExUtils;
 import org.apache.commons.lang3.reflect.FieldUtils;
@@ -1731,4 +1733,38 @@
         }
         return method;
     }
+
+
+    /**
+     * 瀵筫xcel琛ㄥ崟榛樿绗竴涓储寮曞悕杞崲鎴恖ist锛圗asyExcel锛�
+     *
+     * @param is 杈撳叆娴�
+     * @return 杞崲鍚庨泦鍚�
+     */
+    public List<T> importEasyExcel(InputStream is) throws Exception
+    {
+        return EasyExcel.read(is).head(clazz).sheet().doReadSync();
+    }
+
+    /**
+     * 瀵筶ist鏁版嵁婧愬皢鍏堕噷闈㈢殑鏁版嵁瀵煎叆鍒癳xcel琛ㄥ崟锛圗asyExcel锛�
+     *
+     * @param list 瀵煎嚭鏁版嵁闆嗗悎
+     * @param sheetName 宸ヤ綔琛ㄧ殑鍚嶇О
+     * @return 缁撴灉
+     */
+    public void exportEasyExcel(HttpServletResponse response, List<T> list, String sheetName)
+    {
+        try
+        {
+            EasyExcel.write(response.getOutputStream(), clazz).sheet(sheetName).doWrite(list);
+        }
+        catch (IOException e)
+        {
+            log.error("瀵煎嚭EasyExcel寮傚父{}", e.getMessage());
+        }
+    }
+
+
+
 }
diff --git a/zhang-content/src/main/java/com/ruoyi/converter/BearStatusConverter.java b/zhang-content/src/main/java/com/ruoyi/converter/BearStatusConverter.java
new file mode 100644
index 0000000..cc034fb
--- /dev/null
+++ b/zhang-content/src/main/java/com/ruoyi/converter/BearStatusConverter.java
@@ -0,0 +1,57 @@
+package com.ruoyi.converter;
+
+import com.alibaba.excel.converters.Converter;
+import com.alibaba.excel.enums.CellDataTypeEnum;
+import com.alibaba.excel.metadata.CellData;
+import com.alibaba.excel.metadata.GlobalConfiguration;
+import com.alibaba.excel.metadata.property.ExcelContentProperty;
+
+/**
+ * @Author Jinquan_Ou
+ * @Description
+ * @Date 2023-04-26 15:09
+ * @Version 1.0.0
+ **/
+@SuppressWarnings("rawtypes")
+public class BearStatusConverter implements Converter<Integer> {
+    @Override
+    public Class supportJavaTypeKey() {
+        return Integer.class;
+    }
+
+    @Override
+    public CellDataTypeEnum supportExcelTypeKey() {
+        return CellDataTypeEnum.STRING;
+    }
+
+    @Override
+    public Integer convertToJavaData(CellData cellData, ExcelContentProperty excelContentProperty, GlobalConfiguration globalConfiguration) throws Exception {
+        Integer value = 0;
+        String str = cellData.getStringValue();
+        if ("鏈".equals(str)) {
+            value = 0;
+        } else if ("鍒濆".equals(str)) {
+            value = 1;
+        } else if ("绂诲".equals(str)) {
+            value = 2;
+        } else if ("鍐嶅".equals(str)) {
+            value = 3;
+        }
+        return value;
+    }
+
+    @Override
+    public CellData convertToExcelData(Integer value, ExcelContentProperty excelContentProperty, GlobalConfiguration globalConfiguration) throws Exception {
+        String str="鍏朵粬";
+        if(0==value){
+            str="鏈";
+        }else if (1==value){
+            str="鍒濆";
+        } else if (2==value) {
+            str="绂诲";
+        }else if (3==value){
+            str="鍐嶅";
+        }
+        return new CellData(str);
+    }
+}
diff --git a/zhang-content/src/main/java/com/ruoyi/domain/MarryUser.java b/zhang-content/src/main/java/com/ruoyi/domain/MarryUser.java
index c275941..847a3cc 100644
--- a/zhang-content/src/main/java/com/ruoyi/domain/MarryUser.java
+++ b/zhang-content/src/main/java/com/ruoyi/domain/MarryUser.java
@@ -1,9 +1,13 @@
 package com.ruoyi.domain;
 
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.excel.annotation.format.DateTimeFormat;
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
 import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.common.annotation.Excel;
+import com.ruoyi.converter.BearStatusConverter;
 import lombok.Data;
 
 import java.io.PipedReader;
@@ -24,14 +28,38 @@
     private String id;
     private Long myId;
 
+        @Excel(name = "濮撳悕")
+//    @ExcelProperty({"濮撳悕"})
     private String name;
-    @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8")
+
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+    @Excel(name = "鐢熸棩", dateFormat = "yyyy-MM-dd")
+//    @ExcelProperty({"鐢熸棩"})
+//    @DateTimeFormat("yyyy-MM-dd")
     private Date birthday;
+
+        @Excel(name = "鎴风睄鍦板潃")
+//    @ExcelProperty({"鎴风睄鍦板潃"})
     private String address;
+
+        @Excel(name = "宸ヤ綔鍦板潃")
+//    @ExcelProperty({"宸ヤ綔鍦板潃"})
     private String workAddress;
+
+        @Excel(name = "濠氬Щ鐘跺喌",readConverterExp = "0=鏈,1=鍒濆,2=绂诲,3=鍐嶅")
+//    @ExcelProperty(value = {"濠氬Щ鐘跺喌"},converter = BearStatusConverter.class)
     private Integer marryStatus;
+
+        @Excel(name = "鎬у埆",readConverterExp = "0=濂�,1=鐢�")
+//    @ExcelProperty({"鎬у埆"})
     private Integer sex;
+
+        @Excel(name = "姘戞棌")
+//    @ExcelProperty({"姘戞棌"})
     private String nation;
+
+        @Excel(name = "鎵嬫満鍙风爜")
+//    @ExcelProperty({"鎵嬫満鍙风爜"})
     private String phone;
 
 }
diff --git a/zhang-content/src/main/java/com/ruoyi/domain/ZInfoUser.java b/zhang-content/src/main/java/com/ruoyi/domain/ZInfoUser.java
index 645a115..3d8e4af 100644
--- a/zhang-content/src/main/java/com/ruoyi/domain/ZInfoUser.java
+++ b/zhang-content/src/main/java/com/ruoyi/domain/ZInfoUser.java
@@ -1,6 +1,7 @@
 package com.ruoyi.domain;
 
 import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
 import com.fasterxml.jackson.annotation.JsonFormat;
@@ -11,6 +12,7 @@
 import java.io.Serializable;
 import java.time.LocalDate;
 import java.util.Date;
+import java.util.List;
 
 /**
  * @Version 1.0
@@ -137,12 +139,12 @@
     /**
      * 鐖朵翰鐨刬d
      */
-    private Integer fatherId;
+    private Long fatherId;
 
     /**
      * 姣嶄翰鐨刬d
      */
-    private Integer momId;
+    private Long momId;
 
     /**
      * 鍑虹敓骞存湀鏃�
@@ -166,5 +168,11 @@
      */
     private String secondFamilyId;
 
+    /**
+     * 瀛愬垪琛�
+     */
+    @TableField(exist = false)
+    List<ZInfoUser> childList;
+
 
 }
diff --git a/zhang-content/src/main/java/com/ruoyi/domain/ZMarry.java b/zhang-content/src/main/java/com/ruoyi/domain/ZMarry.java
index add16f5..2942a41 100644
--- a/zhang-content/src/main/java/com/ruoyi/domain/ZMarry.java
+++ b/zhang-content/src/main/java/com/ruoyi/domain/ZMarry.java
@@ -4,6 +4,7 @@
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
 import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.common.annotation.Excel;
 import lombok.Data;
 import lombok.ToString;
 
@@ -43,25 +44,33 @@
      * 缁撳鏃堕棿
      */
     @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8")
+//    @Excel(name = "缁撳鏃堕棿", dateFormat = "yyyy-MM-dd")
     private Date marryTime;
 
     /**
      * 鐢熻偛鎯呭喌,0锛氭湭鐢熻偛銆�1锛氬湪瀛曘��2锛氬凡鐢熻偛
      */
+//    @Excel(name = "鐢熻偛鎯呭喌",readConverterExp = "0=鏈敓鑲�,1=鍦ㄥ瓡,2=宸茬敓鑲�")
     private Integer bearStatus;
 
+//    @Excel(name = "鏄惁棰嗗彇璁″垝鐢熻偛鏈嶅姟鎵嬪唽",readConverterExp = "0=鍚�,1=鏄�")
     private Integer handbookStatus;
 
     @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8")
+//    @Excel(name = "棰嗗彇璁″垝鐢熻偛鏈嶅姟鎵嬪唽鏃堕棿", dateFormat = "yyyy-MM-dd")
     private Date handbookTime;
 
+//    @Excel(name = "鏄惁棰嗗彇鐙敓瀛愬コ璇�", readConverterExp = "0=鍚�,1=鏄�")
     private Integer oneBorn;
 
     @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8")
+//    @Excel(name = "棰嗗彇鐙敓瀛愬コ璇佹椂闂�", dateFormat = "yyyy-MM-dd")
     private Date oneBornTime;
 
+//    @Excel(name = "闇�澹版槑鐨勬儏鍐�")
     private String content;
 
+//    @Excel(name = "澶囨敞")
     private String remark;
 
     private Integer deleteStatus;
diff --git a/zhang-content/src/main/java/com/ruoyi/domain/dto/MarryInfoDto.java b/zhang-content/src/main/java/com/ruoyi/domain/dto/MarryInfoDto.java
index b0c4bab..d0d1ac0 100644
--- a/zhang-content/src/main/java/com/ruoyi/domain/dto/MarryInfoDto.java
+++ b/zhang-content/src/main/java/com/ruoyi/domain/dto/MarryInfoDto.java
@@ -1,8 +1,13 @@
 package com.ruoyi.domain.dto;
 
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.excel.annotation.format.DateTimeFormat;
 import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.common.annotation.Excel;
+import com.ruoyi.converter.BearStatusConverter;
 import com.ruoyi.domain.MarryUser;
 import lombok.Data;
+import org.apache.poi.ss.usermodel.IndexedColors;
 
 import java.io.Serializable;
 import java.util.Date;
@@ -20,28 +25,60 @@
 
     //鎴戜釜浜虹殑鏁版嵁
     private String id;
+    //    @ExcelProperty({"涓汉鏁版嵁","濮撳悕"})
+    @Excel(name = "涓汉濮撳悕",headerBackgroundColor = IndexedColors.YELLOW)
     private String name;
-    @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8")
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+//    @ExcelProperty({"涓汉淇℃伅","鐢熸棩"})
+//    @DateTimeFormat("yyyy-MM-dd")
+    @Excel(name = "涓汉鐢熸棩", dateFormat = "yyyy-MM-dd",headerBackgroundColor = IndexedColors.YELLOW)
     private Date birthday;
+    //    @ExcelProperty({"涓汉淇℃伅","鎴风睄鍦板潃"})
+    @Excel(name = "涓汉鎴风睄鍦板潃",headerBackgroundColor = IndexedColors.YELLOW)
     private String address;
+    //    @ExcelProperty({"涓汉淇℃伅","宸ヤ綔鍦板潃"})
+    @Excel(name = "涓汉宸ヤ綔鍦板潃",headerBackgroundColor = IndexedColors.YELLOW)
     private String workAddress;
+    //    @ExcelProperty(value = {"涓汉淇℃伅","濠氬Щ鐘跺喌"},converter = BearStatusConverter.class)
+    @Excel(name = "涓汉濠氬Щ鐘跺喌", readConverterExp = "0=鏈,1=鍒濆,2=绂诲,3=鍐嶅",headerBackgroundColor = IndexedColors.YELLOW)
     private Integer marryStatus;
+    //    @ExcelProperty(value = {"涓汉淇℃伅","鎬у埆"})
+    @Excel(name = "涓汉鎬у埆", readConverterExp = "0=濂�,1=鐢�",headerBackgroundColor = IndexedColors.YELLOW)
     private Integer sex;
+    //    @ExcelProperty(value = {"涓汉淇℃伅","姘戞棌"})
+    @Excel(name = "涓汉姘戞棌",headerBackgroundColor = IndexedColors.YELLOW)
     private String nation;
+    //    @ExcelProperty(value = {"涓汉淇℃伅","鎵嬫満鍙风爜"})
+    @Excel(name = "涓汉鐢佃瘽鍙风爜",headerBackgroundColor = IndexedColors.YELLOW)
     private String phone;
 
     //閰嶅伓鐨勬暟鎹�
     private String spouseId;
+    //    @ExcelProperty(value = {"閰嶅伓淇℃伅","濮撳悕"})
+    @Excel(name = "閰嶅伓濮撳悕",headerBackgroundColor = IndexedColors.GREEN)
     private String spouseName;
-    @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8")
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+//    @ExcelProperty(value = {"閰嶅伓淇℃伅","鐢熸棩"})
+//    @DateTimeFormat("yyyy-MM-dd")
+    @Excel(name = "閰嶅伓鐢熸棩", dateFormat = "yyyy-MM-dd",headerBackgroundColor = IndexedColors.GREEN)
     private Date spouseBirthday;
+    //    @ExcelProperty(value = {"閰嶅伓淇℃伅","鎴风睄鍦板潃"})
+    @Excel(name = "閰嶅伓鎴风睄鍦板潃",headerBackgroundColor = IndexedColors.GREEN)
     private String spouseAddress;
+    //    @ExcelProperty(value = {"閰嶅伓淇℃伅","宸ヤ綔鍦板潃"})
+    @Excel(name = "閰嶅伓宸ヤ綔鍦板潃",headerBackgroundColor = IndexedColors.GREEN)
     private String spouseWorkAddress;
+    //    @ExcelProperty(value = {"閰嶅伓淇℃伅","濠氬Щ鐘跺喌"},converter = BearStatusConverter.class)
+    @Excel(name = "閰嶅伓濠氬Щ鐘跺喌", readConverterExp = "0=鏈,1=鍒濆,2=绂诲,3=鍐嶅",headerBackgroundColor = IndexedColors.GREEN)
     private Integer spouseMarryStatus;
+    //    @ExcelProperty(value = {"閰嶅伓淇℃伅","鎬у埆"})
+    @Excel(name = "閰嶅伓鎬у埆", readConverterExp = "0=濂�,1=鐢�",headerBackgroundColor = IndexedColors.GREEN)
     private Integer spouseSex;
+    //    @ExcelProperty(value = {"閰嶅伓淇℃伅","姘戞棌"})
+    @Excel(name = "閰嶅伓姘戞棌",headerBackgroundColor = IndexedColors.GREEN)
     private String spouseNation;
+    @Excel(name = "閰嶅伓鎵嬫満鍙风爜",headerBackgroundColor = IndexedColors.GREEN)
     private String spousePhone;
-
 
 
     //鐢熻偛鎯呭喌(涓棿琛�)
@@ -49,25 +86,34 @@
     /**
      * 缁撳鏃堕棿
      */
-    @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8")
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+    @Excel(name = "缁撳鏃堕棿", dateFormat = "yyyy-MM-dd")
     private Date marryTime;
 
     /**
      * 鐢熻偛鎯呭喌,0锛氭湭鐢熻偛銆�1锛氬湪瀛曘��2锛氬凡鐢熻偛
      */
+    @Excel(name = "鐢熻偛鎯呭喌", readConverterExp = "0=鏈敓鑲�,1=鍦ㄥ瓡,2=宸茬敓鑲�")
     private Integer bearStatus;
+    @Excel(name = "鏄惁棰嗗彇璁″垝鐢熻偛鏈嶅姟鎵嬪唽", readConverterExp = "0=鍚�,1=鏄�")
     private Integer handbookStatus;
-    @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8")
+    @Excel(name = "棰嗗彇璁″垝鐢熻偛鏈嶅姟鎵嬪唽鏃堕棿", dateFormat = "yyyy-MM-dd")
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
     private Date handbookTime;
+    @Excel(name = "鏄惁棰嗗彇鐙敓瀛愬コ璇�", readConverterExp = "0=鍚�,1=鏄�")
     private Integer oneBorn;
-    @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8")
+    @Excel(name = "棰嗗彇鐙敓瀛愬コ璇佹椂闂�", dateFormat = "yyyy-MM-dd")
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
     private Date oneBornTime;
+    @Excel(name = "闇�澹版槑鐨勬儏鍐�")
     private String content;
+    @Excel(name = "澶囨敞")
     private String remark;
 
     /**
      * 鍓嶄换淇℃伅鐨凩ist
      */
+    @Excel(name = "鍓嶄换淇℃伅",headerBackgroundColor= IndexedColors.RED)
     private List<MarryUser> oldSpouseList;
 
 }
diff --git a/zhang-content/src/main/java/com/ruoyi/domain/dto/ZUserInfoDto.java b/zhang-content/src/main/java/com/ruoyi/domain/dto/ZUserInfoDto.java
new file mode 100644
index 0000000..96e8c83
--- /dev/null
+++ b/zhang-content/src/main/java/com/ruoyi/domain/dto/ZUserInfoDto.java
@@ -0,0 +1,18 @@
+package com.ruoyi.domain.dto;
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * @Author Jinquan_Ou
+ * @Description
+ * @Date 2023-05-03 18:38
+ * @Version 1.0.0
+ **/
+@Data
+public class ZUserInfoDto implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+
+}
diff --git a/zhang-content/src/main/java/com/ruoyi/service/ZInfoUserService.java b/zhang-content/src/main/java/com/ruoyi/service/ZInfoUserService.java
index ea7a36f..9f39317 100644
--- a/zhang-content/src/main/java/com/ruoyi/service/ZInfoUserService.java
+++ b/zhang-content/src/main/java/com/ruoyi/service/ZInfoUserService.java
@@ -31,4 +31,10 @@
 
     AjaxResult empower(EmpowerDto empowerDto);
 
+    AjaxResult listWithTree();
+
+    AjaxResult addParent(Long fatherId, Long motherId);
+
+    AjaxResult listAllExceptAdmin();
+
 }
diff --git a/zhang-content/src/main/java/com/ruoyi/service/impl/ZInfoUserServiceImpl.java b/zhang-content/src/main/java/com/ruoyi/service/impl/ZInfoUserServiceImpl.java
index 93b18ec..ca62533 100644
--- a/zhang-content/src/main/java/com/ruoyi/service/impl/ZInfoUserServiceImpl.java
+++ b/zhang-content/src/main/java/com/ruoyi/service/impl/ZInfoUserServiceImpl.java
@@ -250,6 +250,7 @@
 
     }
 
+
     private void checkAuthorization(String familyId, String destinationFamilyId,boolean flag) {
         String text=null;
         if(flag){
@@ -283,8 +284,6 @@
         return familyId;
     }
 
-
-
     private String getFinalStr(String destinationFamilyId, List<String> authorityList) {
         String authorityListStr = authorityList.stream().collect(Collectors.joining(" ", "{", "}"));
         String finalStr= destinationFamilyId +authorityListStr;  //3{2007 1988 1004}
@@ -292,4 +291,73 @@
     }
 
 
+    /**
+     * 鑾峰彇瀹舵牴缃�
+     * @return
+     */
+    @Override
+    public AjaxResult listWithTree() {
+
+        List<ZInfoUser> allPeopleList = list();
+        List<ZInfoUser> result = null;
+        try {
+            result = allPeopleList.stream().filter(people -> people.getUserId()!=1&&(people.getFatherId() == 0||people.getMomId()==0))
+                    .map(people -> {
+                        people.setChildList(fillChildren(people, allPeopleList));
+                        return people;
+                    }).collect(Collectors.toList());
+        } catch (NullPointerException e) {
+            throw new RuntimeException("鎮ㄥ湪鍔犲叆鎴愬憳鐨勬椂鍊欐病鏈夋寚瀹氳鎴愬憳鐨勭埗浜叉垨鑰呮瘝浜�");
+        }
+        return AjaxResult.success(result);
+
+    }
+
+    /**
+     * 涓轰簡瀹舵牴缃戙�佹柊澧炴垨鑰呬慨鏀圭埗瀛愬叧绯�
+     * @param fatherId
+     * @param motherId
+     * @return
+     */
+    @Override
+    public AjaxResult addParent(Long fatherId, Long motherId) {
+        SysUser user = SecurityUtils.getLoginUser().getUser();
+        Long userId = user.getUserId();
+        LambdaQueryWrapper<ZInfoUser> zInfoUserLambdaQueryWrapper = new LambdaQueryWrapper<>();
+        zInfoUserLambdaQueryWrapper.eq(ZInfoUser::getUserId,userId);
+        ZInfoUser zInfoUser = getOne(zInfoUserLambdaQueryWrapper);
+
+        zInfoUser.setFatherId(fatherId);
+        zInfoUser.setMomId(motherId);
+
+        updateById(zInfoUser);
+        return AjaxResult.success();
+    }
+
+    @Override
+    public AjaxResult listAllExceptAdmin() {
+        List<ZInfoUser> collect = list().stream().filter(zInfoUser -> zInfoUser.getUserId() != 1).collect(Collectors.toList());
+        return AjaxResult.success(collect);
+
+    }
+
+    /**
+     * 閫掑綊绠楁硶
+     * @param people
+     * @param allPeopleList
+     * @return
+     */
+    private List<ZInfoUser> fillChildren(ZInfoUser people, List<ZInfoUser> allPeopleList) {
+        return allPeopleList.stream().filter(
+                one -> one.getFatherId() == people.getUserId() || one.getMomId() == people.getUserId()
+        ).map(
+                one -> {
+                    one.setChildList(fillChildren(one, allPeopleList));
+                    return one;
+                }
+        ).collect(Collectors.toList());
+
+    }
+
+
 }
diff --git a/zhang-content/src/main/java/com/ruoyi/service/impl/ZMarryServiceImpl.java b/zhang-content/src/main/java/com/ruoyi/service/impl/ZMarryServiceImpl.java
index 66f70d6..455af82 100644
--- a/zhang-content/src/main/java/com/ruoyi/service/impl/ZMarryServiceImpl.java
+++ b/zhang-content/src/main/java/com/ruoyi/service/impl/ZMarryServiceImpl.java
@@ -84,16 +84,57 @@
             oldSpouseList.add(oldSpouse);
         }
 
-        //缁熶竴灏佽杩斿洖
-        HashMap<String, Object> resultMap = new HashMap<>();
-        resultMap.put("myInfo",myself);
-        resultMap.put("spouseInfo",spouse);
-        resultMap.put("marryInfo",myMarryInfo);
-        resultMap.put("oldSpouseInfo",oldSpouseList);
+//        //缁熶竴灏佽杩斿洖
+//        HashMap<String, Object> resultMap = new HashMap<>();
+//        resultMap.put("myInfo",myself);
+//        resultMap.put("spouseInfo",spouse);
+//        resultMap.put("marryInfo",myMarryInfo);
+//        resultMap.put("oldSpouseInfo",oldSpouseList);
 
-        return AjaxResult.success(resultMap);
+        //杞垚DTO杩斿洖
+        MarryInfoDto marryInfoDto = MarryInfoToDto(myMarryInfo, oldSpouseList, myself, spouse);
+        return AjaxResult.success(marryInfoDto);
     }
 
+    private MarryInfoDto MarryInfoToDto(ZMarry myMarryInfo,List<MarryUser> oldSpouseList,MarryUser myself,MarryUser spouse){
+        MarryInfoDto marryInfoDto = new MarryInfoDto();
+        marryInfoDto.setId(myself.getId());
+        marryInfoDto.setName(myself.getName());
+        marryInfoDto.setBirthday(myself.getBirthday());
+        marryInfoDto.setAddress(myself.getAddress());
+        marryInfoDto.setWorkAddress(myself.getWorkAddress());
+        marryInfoDto.setMarryStatus(myself.getMarryStatus());
+        marryInfoDto.setSex(myself.getSex());
+        marryInfoDto.setNation(myself.getNation());
+        marryInfoDto.setPhone(myself.getPhone());
+
+        marryInfoDto.setSpouseId(spouse.getId());
+        marryInfoDto.setSpouseName(spouse.getName());
+        marryInfoDto.setSpouseBirthday(spouse.getBirthday());
+        marryInfoDto.setSpouseAddress(spouse.getAddress());
+        marryInfoDto.setSpouseWorkAddress(spouse.getWorkAddress());
+        marryInfoDto.setSpouseMarryStatus(spouse.getMarryStatus());
+        marryInfoDto.setSpouseSex(spouse.getSex());
+        marryInfoDto.setSpouseNation(spouse.getNation());
+        marryInfoDto.setSpousePhone(spouse.getPhone());
+
+        marryInfoDto.setMarryId(myMarryInfo.getId());
+        marryInfoDto.setBearStatus(myMarryInfo.getBearStatus());
+        marryInfoDto.setHandbookStatus(myMarryInfo.getHandbookStatus());
+        marryInfoDto.setHandbookTime(myMarryInfo.getHandbookTime());
+        marryInfoDto.setOneBorn(myMarryInfo.getOneBorn());
+        marryInfoDto.setOneBornTime(myMarryInfo.getOneBornTime());
+        marryInfoDto.setContent(myMarryInfo.getContent());
+        marryInfoDto.setRemark(myMarryInfo.getRemark());
+        marryInfoDto.setMarryTime(myMarryInfo.getMarryTime());
+
+        marryInfoDto.setOldSpouseList(oldSpouseList);
+        return marryInfoDto;
+    }
+
+
+
+
     @Transactional
     public AjaxResult addInfo(MarryInfoDto marryInfoDto){
         SysUser user = SecurityUtils.getLoginUser().getUser();

--
Gitblit v1.9.1