From 1cbc3456ff88a4a2a3c41cdc969f8a2d738b654c Mon Sep 17 00:00:00 2001
From: linwei <872216696@qq.com>
Date: Mon, 02 Feb 2026 14:03:12 +0800
Subject: [PATCH] 机构详情优化

---
 drone-service/drone-system/src/main/java/org/sxkj/system/controller/DeptController.java |  100 +++++++++++++++++++++++++++++++++++++++++++++-----
 1 files changed, 90 insertions(+), 10 deletions(-)

diff --git a/drone-service/drone-system/src/main/java/org/sxkj/system/controller/DeptController.java b/drone-service/drone-system/src/main/java/org/sxkj/system/controller/DeptController.java
index e3a262d..616a110 100644
--- a/drone-service/drone-system/src/main/java/org/sxkj/system/controller/DeptController.java
+++ b/drone-service/drone-system/src/main/java/org/sxkj/system/controller/DeptController.java
@@ -16,8 +16,10 @@
  */
 package org.sxkj.system.controller;
 
+import com.alibaba.excel.EasyExcel;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
 import io.swagger.annotations.*;
@@ -25,8 +27,10 @@
 import org.apache.commons.lang3.StringUtils;
 import org.springblade.core.boot.ctrl.BladeController;
 import org.springblade.core.cache.utils.CacheUtil;
+import org.springblade.core.excel.util.ExcelUtil;
 import org.springblade.core.log.annotation.ApiLog;
 import org.springblade.core.mp.support.Condition;
+import org.springblade.core.mp.support.Query;
 import org.springblade.core.secure.BladeUser;
 import org.springblade.core.secure.annotation.PreAuth;
 import org.springblade.core.tenant.annotation.NonDS;
@@ -34,26 +38,41 @@
 import org.springblade.core.tool.constant.BladeConstant;
 import org.springblade.core.tool.constant.RoleConstant;
 import org.springblade.core.tool.support.Kv;
+import org.springblade.core.tool.utils.BeanUtil;
+import org.springblade.core.tool.utils.DateUtil;
 import org.springblade.core.tool.utils.Func;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.multipart.MultipartFile;
+import org.sxkj.common.constant.WordOrderConstant;
 import org.sxkj.common.node.TreeStringNode;
 import org.sxkj.common.utils.HeaderUtils;
+import org.sxkj.common.utils.OrderNumUtils;
 import org.sxkj.system.cache.DictCache;
 import org.sxkj.system.cache.UserCache;
 import org.sxkj.system.entity.Dept;
+import org.sxkj.system.entity.Region;
 import org.sxkj.system.entity.User;
 import org.sxkj.system.enums.DictEnum;
+import org.sxkj.system.excel.*;
 import org.sxkj.system.mapper.DeptMapper;
 import org.sxkj.system.mapper.UserMapper;
+import org.sxkj.system.param.DeptAddParam;
+import org.sxkj.system.param.DeptExportParam;
+import org.sxkj.system.param.DeptPageParam;
 import org.sxkj.system.service.IDeptService;
+import org.sxkj.system.util.excel.DeptSheetWriteHandler;
+import org.sxkj.system.util.excel.RegionSheetWriteHandler;
 import org.sxkj.system.vo.DeptVO;
 import org.sxkj.system.wrapper.DeptWrapper;
 import org.springframework.web.bind.annotation.*;
 import springfox.documentation.annotations.ApiIgnore;
 
+import javax.servlet.http.HttpServletResponse;
 import javax.validation.Valid;
-import java.util.List;
-import java.util.Map;
+import java.io.IOException;
+import java.net.URLEncoder;
+import java.nio.charset.StandardCharsets;
+import java.util.*;
 import java.util.stream.Collectors;
 
 import static org.springblade.core.cache.constant.CacheConstant.SYS_CACHE;
@@ -83,10 +102,20 @@
 	@ApiOperationSupport(order = 1)
 	@ApiOperation(value = "详情", notes = "传入dept")
 	public R<DeptVO> detail(Dept dept) {
-		Dept detail = deptService.getOne(Condition.getQueryWrapper(dept));
-		return R.data(DeptWrapper.build().entityVO(detail));
+		DeptVO detail = deptService.getDetailWithAreaName(dept);
+		return R.data(detail);
 	}
 
+	/**
+	 * 机构 自定义分页
+	 */
+	@GetMapping("/page")
+	@ApiOperationSupport(order = 3)
+	@ApiOperation(value = "分页", notes = " ")
+	public R<IPage<DeptVO>> page(DeptPageParam deptPageParam, Query query) {
+		IPage<DeptVO> pages = deptService.selectDeptPage(Condition.getPage(query), deptPageParam);
+		return R.data(pages);
+	}
 	/**
 	 * 列表
 	 */
@@ -168,13 +197,18 @@
 	/**
 	 * 新增或修改
 	 */
-//	@PreAuth(RoleConstant.HAS_ROLE_ADMIN)
 	@PostMapping("/submit")
 	@ApiOperationSupport(order = 6)
 	@ApiOperation(value = "新增或修改", notes = "传入dept")
 	@ApiLog("组织机构信息新增或修改")
-	public R submit(@Valid @RequestBody Dept dept) {
-		if (deptService.submit(dept)) {
+	public R submit(@Valid @RequestBody DeptAddParam dept) {
+		Dept deptEntity = Objects.requireNonNull(BeanUtil.copy(dept, Dept.class));
+		String times = OrderNumUtils.initOrderNum2(WordOrderConstant.ORG_CODE);
+		String deptCode = WordOrderConstant.ORG_PREFIX + times;
+		deptEntity.setDeptCode(deptCode);
+		deptEntity.setCreateTime(new Date());
+		deptEntity.setUpdateTime(new Date());
+		if (deptService.submit(deptEntity)) {
 			CacheUtil.clear(SYS_CACHE);
 			CacheUtil.clear(SYS_CACHE, Boolean.FALSE);
 			List<User> userList = userMapper.selectList(new LambdaQueryWrapper<User>().eq(User::getDeptId, dept.getId()));
@@ -271,7 +305,7 @@
 	 */
 	@GetMapping("/getParentDeptInfo")
 	@ApiOperationSupport(order = 12)
-	@ApiOperation(value = "下拉数据源", notes = "传入id集合")
+	@ApiOperation(value = "通过id查询", notes = "传入id集合")
 	public R getParentDeptInfo(String deptId) {
 		DeptVO list = deptService.getParentDeptInfo(deptId);
 		return R.data(list);
@@ -302,11 +336,57 @@
 	@ApiOperation(value = "查询机构树(根据区域)")
 	public R deptsByAreaCode(@RequestParam(required = false) String areaCode) {
 		String areaCodez = HeaderUtils.getAreaCode();
-		if(StringUtils.isNotBlank(areaCode)) {
-			areaCodez=areaCode;
+		if (StringUtils.isNotBlank(areaCode)) {
+			areaCodez = areaCode;
 		}
 		List<DeptVO> list = deptService.deptsByAreaCode(areaCodez);
 		return R.data(list);
 	}
 
+	/**
+	 * 导入机构数据
+	 */
+	@PostMapping("import-region")
+	@ApiOperationSupport(order = 14)
+	@ApiOperation(value = "导入机构", notes = "传入excel")
+	public R importRegion(MultipartFile file, Integer isCovered) {
+		DeptImporter deptImporter = new DeptImporter(deptService, isCovered == 1);
+		ExcelUtil.save(file, deptImporter, DeptImportExcel.class);
+		return R.success("操作成功");
+	}
+
+	/**
+	 * 导出机构数据
+	 */
+	@GetMapping("export-region")
+	@ApiOperationSupport(order = 15)
+	@ApiOperation(value = "导出机构", notes = "传入user")
+	public void exportRegion(DeptExportParam dept, HttpServletResponse response) {
+ 		List<DeptExcel> list = deptService.exportDept(dept);
+		ExcelUtil.export(response, "机构数据" + DateUtil.time(), "机构数据表", list, DeptExcel.class);
+	}
+
+	/**
+	 * 导出模板
+	 */
+	@GetMapping("export-template")
+	@ApiOperationSupport(order = 16)
+	@ApiOperation(value = "导出模板")
+	public void exportUser(HttpServletResponse response) throws IOException {
+		// 设置响应头
+		response.setContentType("application/vnd.ms-excel");
+		response.setCharacterEncoding(StandardCharsets.UTF_8.name());
+		String fileName = URLEncoder.encode("机构模板", StandardCharsets.UTF_8.name());
+		response.setHeader("Content-disposition", "attachment;filename=" + fileName + ".xlsx");
+
+		// 准备空数据列表
+		List<DeptImportExcel> list = new ArrayList<>();
+
+		// 使用EasyExcel导出,并注册RegionSheetWriteHandler
+		EasyExcel.write(response.getOutputStream(), DeptImportExcel.class)
+				.registerWriteHandler(new DeptSheetWriteHandler())
+				.sheet("机构表")
+				.doWrite(list);
+	}
+
 }

--
Gitblit v1.9.3