From 01964e6852e3e52ffc2cc7b45cccf583fee93927 Mon Sep 17 00:00:00 2001
From: guoshilong <123456>
Date: Wed, 17 Apr 2024 14:07:35 +0800
Subject: [PATCH] 填报水位库容导入接口

---
 skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/excel/TbResStagCapDiscImport.java             |   28 +++++++
 skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/service/ITbResStagCapDiscService.java         |    7 +
 skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/controller/TbResStagCapDiscController.java    |   31 +++++++
 skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/service/impl/TbResStagCapDiscServiceImpl.java |   60 ++++++++++++++
 skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/excel/TbResStagCapDiscImportExcel.java        |   42 ++++++++++
 skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/excel/TbResStagCapDiscExportExcel.java        |   46 +++++++++++
 6 files changed, 209 insertions(+), 5 deletions(-)

diff --git a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/controller/TbResStagCapDiscController.java b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/controller/TbResStagCapDiscController.java
index f3f354d..cfd85c0 100644
--- a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/controller/TbResStagCapDiscController.java
+++ b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/controller/TbResStagCapDiscController.java
@@ -1,17 +1,21 @@
 package cn.gistack.sm.sjztmd.controller;
 
-import cn.gistack.sm.sjztmd.entity.TbAttResBase;
-import cn.gistack.sm.sjztmd.entity.TbFileStorageLocation;
 import cn.gistack.sm.sjztmd.entity.TbResStagCapDisc;
+import cn.gistack.sm.sjztmd.excel.TbResStagCapDiscImport;
+import cn.gistack.sm.sjztmd.excel.TbResStagCapDiscImportExcel;
 import cn.gistack.sm.sjztmd.service.ITbResStagCapDiscService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.AllArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
+import org.springblade.core.excel.util.ExcelUtil;
 import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.utils.StringUtil;
 import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
 
+import javax.servlet.http.HttpServletResponse;
+import java.util.ArrayList;
 import java.util.List;
 
 @Slf4j
@@ -61,6 +65,29 @@
 		return R.status(tbResStagCapDiscService.auditByGuid(list));
 	}
 
+	/**
+	 * 导入模板
+	 */
+	@GetMapping("export-template")
+	@ApiOperation(value = "导入模板")
+	public void exportUser(HttpServletResponse response) {
+		List<TbResStagCapDiscImportExcel> list = new ArrayList<>();
+		ExcelUtil.export(response, "水位库容导入模板", "水位库容数据表", list, TbResStagCapDiscImportExcel.class);
+	}
+
+	/**
+	 * 导入数据(返回数据给前端,由前端进行真正的保存)
+	 */
+	@PostMapping("import-tbResStagCapDisc")
+	@ApiOperation(value = "导入用户", notes = "传入excel")
+	public R importUser(MultipartFile file,String resGuid) {
+
+		List<TbResStagCapDisc> list = tbResStagCapDiscService.readExcel(file);
+
+		return R.data(list);
+	}
+
+
 
 
 }
diff --git a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/excel/TbResStagCapDiscExportExcel.java b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/excel/TbResStagCapDiscExportExcel.java
new file mode 100644
index 0000000..17a2882
--- /dev/null
+++ b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/excel/TbResStagCapDiscExportExcel.java
@@ -0,0 +1,46 @@
+package cn.gistack.sm.sjztmd.excel;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.excel.annotation.write.style.ColumnWidth;
+import com.alibaba.excel.annotation.write.style.ContentRowHeight;
+import com.alibaba.excel.annotation.write.style.HeadRowHeight;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * 水位库容曲线填报导入excel
+ */
+@Data
+@ColumnWidth(25)
+@HeadRowHeight(20)
+@ContentRowHeight(18)
+public class TbResStagCapDiscExportExcel implements Serializable {
+
+	private static final long serialVersionUID = 1L;
+
+	@ColumnWidth(20)
+	@ExcelProperty(value = "水位")
+	private double stag;
+
+
+	@ColumnWidth(20)
+	@ExcelProperty(value = "库容(万m³)")
+	private double area;
+
+	@ColumnWidth(20)
+	@ExcelProperty(value = "库面面积(km²)")
+	private double cap;
+
+	@ColumnWidth(20)
+	@ExcelProperty({"泄水建筑物泄量(m³/s)", "溢洪道(泄洪洞)"})
+	private double spillway;
+
+	@ColumnWidth(20)
+	@ExcelProperty({"泄水建筑物泄量(m³/s)", "非常溢洪道"})
+	private double emergencySpillway;
+
+	@ColumnWidth(20)
+	@ExcelProperty({"泄水建筑物泄量(m³/s)", "总泄量"})
+	private double totalDischarge;
+}
diff --git a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/excel/TbResStagCapDiscImport.java b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/excel/TbResStagCapDiscImport.java
new file mode 100644
index 0000000..92167ae
--- /dev/null
+++ b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/excel/TbResStagCapDiscImport.java
@@ -0,0 +1,28 @@
+package cn.gistack.sm.sjztmd.excel;
+
+import cn.gistack.sm.sjztmd.service.ITbRelResUserService;
+import cn.gistack.sm.sjztmd.service.ITbResStagCapDiscService;
+import lombok.RequiredArgsConstructor;
+import org.springblade.core.excel.support.ExcelImporter;
+
+import java.util.List;
+
+/**
+ * @PROJECT_NAME: skjcmanager
+ * @DESCRIPTION: 导入水库责任人数据
+ * @USER: aix
+ * @DATE: 2023/10/26 10:27
+ */
+@RequiredArgsConstructor
+public class TbResStagCapDiscImport implements ExcelImporter<TbResStagCapDiscImportExcel> {
+
+	private final ITbResStagCapDiscService tbResStagCapDiscService;
+
+	private final String resGuid;
+
+	@Override
+	public void save(List<TbResStagCapDiscImportExcel> data) {
+		tbResStagCapDiscService.importTbResStagCapDisc(data,resGuid);
+	}
+
+}
diff --git a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/excel/TbResStagCapDiscImportExcel.java b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/excel/TbResStagCapDiscImportExcel.java
new file mode 100644
index 0000000..c8c7238
--- /dev/null
+++ b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/excel/TbResStagCapDiscImportExcel.java
@@ -0,0 +1,42 @@
+package cn.gistack.sm.sjztmd.excel;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.excel.annotation.write.style.ColumnWidth;
+import com.alibaba.excel.annotation.write.style.ContentRowHeight;
+import com.alibaba.excel.annotation.write.style.HeadRowHeight;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * 水位库容曲线填报导入excel
+ */
+@Data
+@ColumnWidth(25)
+@HeadRowHeight(20)
+@ContentRowHeight(18)
+public class TbResStagCapDiscImportExcel implements Serializable {
+
+	private static final long serialVersionUID = 1L;
+
+	@ColumnWidth(20)
+	@ExcelProperty(value = "水位(m)")
+	private double stag;
+
+
+	@ColumnWidth(20)
+	@ExcelProperty(value = "库容(万m³)")
+	private double area;
+
+	@ColumnWidth(20)
+	@ExcelProperty(value = "库面面积(km²)")
+	private double cap;
+
+	@ColumnWidth(20)
+	@ExcelProperty({"泄水建筑物泄量(m³/s)", "溢洪道(泄洪洞)"})
+	private double spillway;
+
+	@ColumnWidth(20)
+	@ExcelProperty({"泄水建筑物泄量(m³/s)", "非常溢洪道"})
+	private double emergencySpillway;
+}
diff --git a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/service/ITbResStagCapDiscService.java b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/service/ITbResStagCapDiscService.java
index 6279569..65510c0 100644
--- a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/service/ITbResStagCapDiscService.java
+++ b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/service/ITbResStagCapDiscService.java
@@ -3,7 +3,10 @@
 import cn.gistack.sm.sjztmd.entity.TbAttResRsbVerspi;
 import cn.gistack.sm.sjztmd.entity.TbRelResUser;
 import cn.gistack.sm.sjztmd.entity.TbResStagCapDisc;
+import cn.gistack.sm.sjztmd.excel.TbRelResUserExcel;
+import cn.gistack.sm.sjztmd.excel.TbResStagCapDiscImportExcel;
 import com.baomidou.mybatisplus.extension.service.IService;
+import org.springframework.web.multipart.MultipartFile;
 
 import java.util.List;
 
@@ -15,4 +18,8 @@
     Boolean auditByGuid(List<TbResStagCapDisc> list);
 
 	List<TbResStagCapDisc> getDetailByResGuid(String ResGuid);
+
+    void importTbResStagCapDisc(List<TbResStagCapDiscImportExcel> data,String resGuid);
+
+	List<TbResStagCapDisc> readExcel(MultipartFile file);
 }
diff --git a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/service/impl/TbResStagCapDiscServiceImpl.java b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/service/impl/TbResStagCapDiscServiceImpl.java
index 1de14d8..f19db44 100644
--- a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/service/impl/TbResStagCapDiscServiceImpl.java
+++ b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/service/impl/TbResStagCapDiscServiceImpl.java
@@ -4,26 +4,35 @@
 import cn.gistack.sm.sjztmd.entity.TbFileStorageLocation;
 import cn.gistack.sm.sjztmd.entity.TbRelResUser;
 import cn.gistack.sm.sjztmd.entity.TbResStagCapDisc;
+import cn.gistack.sm.sjztmd.excel.TbRelResUserExcel;
+import cn.gistack.sm.sjztmd.excel.TbResStagCapDiscImportExcel;
 import cn.gistack.sm.sjztmd.mapper.TbRelResUserMapper;
 import cn.gistack.sm.sjztmd.mapper.TbResStagCapDiscMapper;
 import cn.gistack.sm.sjztmd.service.ITbAttResBaseService;
 import cn.gistack.sm.sjztmd.service.ITbResStagCapDiscService;
+import cn.gistack.sm.sjztmd.util.CalculateUtils;
 import cn.gistack.system.user.feign.IUserClient;
+import com.alibaba.excel.EasyExcel;
+import com.alibaba.excel.context.AnalysisContext;
+import com.alibaba.excel.event.AnalysisEventListener;
 import com.baomidou.dynamic.datasource.annotation.DS;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import org.springblade.core.mp.support.Condition;
 import org.springblade.core.secure.utils.AuthUtil;
+import org.springblade.core.tool.utils.BeanUtil;
 import org.springblade.core.tool.utils.DateUtil;
+import org.springblade.core.tool.utils.ObjectUtil;
 import org.springblade.core.tool.utils.StringUtil;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
+import org.springframework.web.multipart.MultipartFile;
 
+import java.io.InputStream;
+import java.math.BigDecimal;
 import java.text.SimpleDateFormat;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.List;
+import java.util.*;
 import java.util.stream.Collectors;
 
 @Service
@@ -73,6 +82,51 @@
 	}
 
 	@Override
+	public void importTbResStagCapDisc(List<TbResStagCapDiscImportExcel> data,String resGuid) {
+
+		for (int i = 0; i < data.size(); i++) {
+			TbResStagCapDiscImportExcel excel = data.get(0);
+			TbResStagCapDisc tbResStagCapDisc = Objects.requireNonNull(BeanUtil.copy(excel, TbResStagCapDisc.class));
+			tbResStagCapDisc.setResGuid(resGuid);
+			double order = (double) i + 1;
+			tbResStagCapDisc.setOrderId(order);
+		}
+
+	}
+
+	@Override
+	public List<TbResStagCapDisc> readExcel(MultipartFile file) {
+		List<TbResStagCapDiscImportExcel> excelList = new ArrayList<>();
+		try (InputStream inputStream = file.getInputStream()) {
+			EasyExcel.read(inputStream, TbResStagCapDiscImportExcel.class, new AnalysisEventListener<TbResStagCapDiscImportExcel>() {
+				@Override
+				public void invoke(TbResStagCapDiscImportExcel excelData, AnalysisContext analysisContext) {
+					excelList.add(excelData);
+				}
+				@Override
+				public void doAfterAllAnalysed(AnalysisContext analysisContext) {
+					// 所有数据解析完成后的回调
+				}
+			}).sheet().doRead();
+		} catch (Exception e) {
+			e.printStackTrace();
+			// 处理异常,例如返回错误消息给前端
+		}
+
+		List<TbResStagCapDisc> resultList = new ArrayList<>();
+		for (int i = 0; i < excelList.size(); i++) {
+			TbResStagCapDiscImportExcel excel = excelList.get(0);
+			TbResStagCapDisc tbResStagCapDisc = Objects.requireNonNull(BeanUtil.copy(excel, TbResStagCapDisc.class));
+			double order = (double) i + 1;
+			tbResStagCapDisc.setOrderId(order);
+			resultList.add(tbResStagCapDisc);
+		}
+
+
+		return resultList;
+	}
+
+	@Override
 	public List<TbResStagCapDisc> getAll(TbResStagCapDisc tbResStagCapDisc) {
 		List<TbResStagCapDisc> list = list(Condition.getQueryWrapper(tbResStagCapDisc)
 			.orderByAsc("order_id")

--
Gitblit v1.9.3