From 75f7bbb31181096988b4310ca84654b880f50604 Mon Sep 17 00:00:00 2001
From: baizonghao <1719256278@qq.com>
Date: 星期五, 17 三月 2023 21:51:21 +0800
Subject: [PATCH] 部门管理的导入导出

---
 ycl-common/src/main/java/com/ycl/service/depart/impl/UmsDepartServiceImpl.java |   23 +++++++
 ycl-common/src/main/java/com/ycl/controller/depart/DepartController.java       |   20 ++++++
 ycl-common/src/main/java/com/ycl/utils/listener/DepartListener.java            |   58 +++++++++++++++++++
 ycl-common/src/main/java/com/ycl/dto/UmsDepartDto.java                         |   29 +++++++++
 ycl-common/src/main/java/com/ycl/utils/EasyExcelUtils.java                     |   12 ++++
 ycl-common/src/main/java/com/ycl/service/depart/UmsDepartService.java          |    5 +
 6 files changed, 145 insertions(+), 2 deletions(-)

diff --git a/ycl-common/src/main/java/com/ycl/controller/depart/DepartController.java b/ycl-common/src/main/java/com/ycl/controller/depart/DepartController.java
index 2d9f68f..8485e5f 100644
--- a/ycl-common/src/main/java/com/ycl/controller/depart/DepartController.java
+++ b/ycl-common/src/main/java/com/ycl/controller/depart/DepartController.java
@@ -9,9 +9,11 @@
 import com.ycl.api.BasePageVO;
 import com.ycl.api.CommonResult;
 import com.ycl.controller.BaseController;
+import com.ycl.dto.UmsDepartDto;
 import com.ycl.entity.depart.UmsDepart;
 import com.ycl.service.depart.UmsDepartService;
 import com.ycl.service.user.UmsDepartManageService;
+import com.ycl.utils.EasyExcelUtils;
 import com.ycl.utils.auth.UserAuthUtil;
 import com.ycl.vo.depart.DepartVO;
 import com.ycl.vo.depart.UmsDepartVO;
@@ -20,8 +22,11 @@
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
 
 import javax.annotation.Resource;
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
 import java.util.List;
 
 /**
@@ -124,6 +129,21 @@
         return CommonResult.success(page);
     }
 
+    @ApiOperation("閮ㄩ棬瀵煎嚭")
+    @PostMapping("/export")
+    public void exportDpt(HttpServletResponse response) {
+        List<UmsDepartDto> umsDepartDtos = departService.departExp();
+        String sheetName = "閮ㄩ棬瀵煎嚭";
+        EasyExcelUtils.export(response, sheetName, UmsDepartDto.class, umsDepartDtos);
+    }
+
+    @ApiOperation("閮ㄩ棬瀵煎叆")
+    @PostMapping("/import")
+    public CommonResult importDpt(MultipartFile file) throws IOException {
+        EasyExcelUtils.importDepartFile(file);
+        return CommonResult.success(true, "瀵煎叆鎴愬姛");
+    }
+
     @ApiOperation("鏌ヨ鎴戠殑閮ㄩ棬")
     @GetMapping(value = "/belongDepart")
     public CommonResult<BasePageDTO> belongDepart(BasePageVO params) {
diff --git a/ycl-common/src/main/java/com/ycl/dto/UmsDepartDto.java b/ycl-common/src/main/java/com/ycl/dto/UmsDepartDto.java
new file mode 100644
index 0000000..55c8098
--- /dev/null
+++ b/ycl-common/src/main/java/com/ycl/dto/UmsDepartDto.java
@@ -0,0 +1,29 @@
+package com.ycl.dto;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+@Builder
+public class UmsDepartDto {
+
+    @ExcelProperty(value = "閮ㄩ棬ID", index = 0)
+    private Long id;
+
+    @ExcelProperty(value = "閮ㄩ棬鍚嶇О", index = 1)
+    private String departTypeName;
+
+    @ExcelProperty(value = "閮ㄩ棬绫诲瀷", index = 2)
+    private Integer departType;
+
+    @ExcelProperty(value = "涓婄骇閮ㄩ棬", index = 3)
+    private String parentDepartName;
+
+    @ExcelProperty(value = "閮ㄩ棬鎻忚堪", index = 4)
+    private String departDes;
+}
diff --git a/ycl-common/src/main/java/com/ycl/service/depart/UmsDepartService.java b/ycl-common/src/main/java/com/ycl/service/depart/UmsDepartService.java
index 90dd3aa..1d33fdc 100644
--- a/ycl-common/src/main/java/com/ycl/service/depart/UmsDepartService.java
+++ b/ycl-common/src/main/java/com/ycl/service/depart/UmsDepartService.java
@@ -1,13 +1,12 @@
 package com.ycl.service.depart;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.ycl.dto.UmsDepartDto;
 import com.ycl.entity.depart.UmsDepart;
 import com.ycl.entity.user.UmsAdmin;
 import com.ycl.vo.depart.DepartVO;
 import com.ycl.vo.depart.UmsDepartVO;
-import org.springframework.web.bind.annotation.RequestParam;
 
 import java.util.List;
 
@@ -64,6 +63,8 @@
      */
     IPage<UmsDepartVO> pageDepart(String departName, IPage<UmsDepartVO> page);
 
+    List<UmsDepartDto> departExp();
+
     /**
      * 淇敼鐘舵��
      *
diff --git a/ycl-common/src/main/java/com/ycl/service/depart/impl/UmsDepartServiceImpl.java b/ycl-common/src/main/java/com/ycl/service/depart/impl/UmsDepartServiceImpl.java
index 7a04233..37c074b 100644
--- a/ycl-common/src/main/java/com/ycl/service/depart/impl/UmsDepartServiceImpl.java
+++ b/ycl-common/src/main/java/com/ycl/service/depart/impl/UmsDepartServiceImpl.java
@@ -3,6 +3,7 @@
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ycl.dto.UmsDepartDto;
 import com.ycl.entity.depart.UmsDepart;
 import com.ycl.entity.user.UmsAdmin;
 import com.ycl.enums.common.ResultCode;
@@ -23,6 +24,7 @@
 import javax.annotation.Resource;
 import java.time.LocalDateTime;
 import java.util.List;
+import java.util.Objects;
 import java.util.stream.Collectors;
 
 /**
@@ -139,6 +141,27 @@
     }
 
     @Override
+    public List<UmsDepartDto> departExp() {
+        List<UmsDepart> umsDeparts = sccgDepartMapper.selectDepartList();
+        List<UmsDepartDto> res = umsDeparts
+                .stream()
+                .map(umsDepart -> {
+                    UmsDepartDto umsDepartDto = new UmsDepartDto();
+                    umsDepartDto.setId(umsDepart.getId());
+                    umsDepartDto.setDepartType(umsDepart.getDepartType());
+                    UmsDepart umsDepartFather = sccgDepartMapper.selectOne(new LambdaQueryWrapper<UmsDepart>().eq(UmsDepart::getDepartName, umsDepart.getId()));
+                    if (Objects.isNull(umsDepartFather)){
+                        umsDepartDto.setParentDepartName("");
+                    }else {
+                        umsDepartDto.setParentDepartName(umsDepartFather.getDepartName());
+                    }
+                    umsDepartDto.setDepartDes(umsDepart.getDepartDes());
+                    return umsDepartDto;
+                }).collect(Collectors.toList());
+        return res;
+    }
+
+    @Override
     public void updateStatus(DepartVO.StatusDepartVO params) {
         UmsDepart sccgDepart = this.loadDepartById(params.getId());
         BeanUtils.copyProperties(params, sccgDepart);
diff --git a/ycl-common/src/main/java/com/ycl/utils/EasyExcelUtils.java b/ycl-common/src/main/java/com/ycl/utils/EasyExcelUtils.java
index 05e51c3..d479f54 100644
--- a/ycl-common/src/main/java/com/ycl/utils/EasyExcelUtils.java
+++ b/ycl-common/src/main/java/com/ycl/utils/EasyExcelUtils.java
@@ -1,9 +1,13 @@
 package com.ycl.utils;
 
 import com.alibaba.excel.EasyExcel;
+import com.ycl.dto.UmsDepartDto;
+import com.ycl.utils.listener.DepartListener;
 import lombok.SneakyThrows;
+import org.springframework.web.multipart.MultipartFile;
 
 import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
 import java.time.LocalDateTime;
 import java.time.format.DateTimeFormatter;
 import java.util.Collection;
@@ -25,4 +29,12 @@
                 .sheet(sheetName)
                 .doWrite(collection);
     }
+
+    @SneakyThrows
+    public static void importDepartFile(MultipartFile file) throws IOException {
+        EasyExcel.read(file.getInputStream())
+                .head(UmsDepartDto.class)
+                .registerReadListener(new DepartListener()).sheet().doRead();
+    }
+
 }
diff --git a/ycl-common/src/main/java/com/ycl/utils/listener/DepartListener.java b/ycl-common/src/main/java/com/ycl/utils/listener/DepartListener.java
new file mode 100644
index 0000000..267d9a7
--- /dev/null
+++ b/ycl-common/src/main/java/com/ycl/utils/listener/DepartListener.java
@@ -0,0 +1,58 @@
+package com.ycl.utils.listener;
+
+import com.alibaba.excel.context.AnalysisContext;
+import com.alibaba.excel.read.listener.ReadListener;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.ycl.dto.UmsDepartDto;
+import com.ycl.entity.depart.UmsDepart;
+import com.ycl.mapper.depart.UmsDepartMapper;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.Resource;
+import java.util.Objects;
+
+@Component
+public class DepartListener implements ReadListener<UmsDepartDto> {
+
+    @Resource
+    private UmsDepartMapper sccgDepartMapper;
+
+
+    @Override
+    public void invoke(UmsDepartDto umsDepartDto, AnalysisContext analysisContext) {
+        //  涓嶈兘閲嶅鎻掑叆
+        String departTypeName = umsDepartDto.getDepartTypeName();
+        UmsDepart one = sccgDepartMapper.selectOne(new LambdaQueryWrapper<UmsDepart>().eq(UmsDepart::getDepartName, departTypeName));
+        if (Objects.nonNull(one)){
+            throw new RuntimeException("璇ラ儴闂ㄥ凡缁忓瓨鍦�");
+        }
+
+        UmsDepart umsDepart = new UmsDepart();
+
+        //  璁剧疆閮ㄩ棬鍚嶅瓧
+        umsDepart.setDepartName(umsDepart.getDepartName());
+
+        //  璁剧疆閮ㄩ棬鎻忚堪
+        umsDepart.setDepartDes(umsDepartDto.getDepartDes());
+
+        //  璁剧疆閮ㄩ棬绫诲瀷
+        umsDepart.setDepartType(umsDepartDto.getDepartType());
+
+        //  璁剧疆鐖秈d
+        UmsDepart two = sccgDepartMapper.selectOne(new LambdaQueryWrapper<UmsDepart>().eq(UmsDepart::getDepartName, umsDepartDto.getParentDepartName()));
+        if (Objects.nonNull(two)){
+            umsDepart.setParentId(two.getParentId());
+        }
+
+        int insert = sccgDepartMapper.insert(umsDepart);
+        if (insert < 1){
+            throw new RuntimeException("鎻掑叆澶辫触");
+        }
+
+    }
+
+    @Override
+    public void doAfterAllAnalysed(AnalysisContext analysisContext) {
+
+    }
+}

--
Gitblit v1.8.0