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