From 62791e3a8fb4ee4cfd06c3d01f163bf4f652fcc9 Mon Sep 17 00:00:00 2001
From: zhongrj <646384940@qq.com>
Date: Thu, 19 Oct 2023 14:20:42 +0800
Subject: [PATCH] 新增大中型水库统计数据导出和导入接口

---
 skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztods/mapper/SkxsQkTjMapper.xml             |   36 ++++++
 skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztods/controller/SkxsQkTjController.java    |   32 +++++
 skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztods/service/ISkxsQkTjService.java         |   16 ++
 skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztods/mapper/SkxsQkTjMapper.java            |    8 +
 skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztods/service/impl/SkxsQkTjServiceImpl.java |   50 ++++++++
 skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztods/excel/SkxsQkTjExcel.java              |  188 +++++++++++++++++++++++++++++++
 skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztods/excel/SkxsQkTjImport.java             |   24 ++++
 7 files changed, 354 insertions(+), 0 deletions(-)

diff --git a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztods/controller/SkxsQkTjController.java b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztods/controller/SkxsQkTjController.java
index 9f0d542..80b8753 100644
--- a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztods/controller/SkxsQkTjController.java
+++ b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztods/controller/SkxsQkTjController.java
@@ -1,19 +1,29 @@
 package cn.gistack.sm.sjztods.controller;
 
+import cn.gistack.sm.sjztmd.excel.AttResStagCapDiscExcel;
+import cn.gistack.sm.sjztmd.excel.AttResStagCapDiscImport;
 import cn.gistack.sm.sjztods.entity.SkxsQkTj;
+import cn.gistack.sm.sjztods.excel.SkxsQkTjExcel;
+import cn.gistack.sm.sjztods.excel.SkxsQkTjImport;
 import cn.gistack.sm.sjztods.service.ISkxsQkTjService;
 import cn.gistack.sm.sjztods.vo.SkxsQkTjVO;
 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.mp.support.Condition;
 import org.springblade.core.mp.support.Query;
 import org.springblade.core.secure.utils.AuthUtil;
 import org.springblade.core.tool.api.R;
+import org.springblade.core.tool.utils.DateUtil;
 import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
 
+import javax.servlet.http.HttpServletResponse;
+import java.util.ArrayList;
 import java.util.Date;
+import java.util.List;
 
 
 /**
@@ -64,4 +74,26 @@
 		return R.data(skxsQkTjService.getStatisticList(skxsQkTj));
 	}
 
+	/**
+	 * 导入
+	 * @param file
+	 * @return
+	 */
+	@PostMapping("/import-skxsQkTj")
+	public R importSkxsQkTj(MultipartFile file) {
+		SkxsQkTjImport skxsQkTjImport = new SkxsQkTjImport(skxsQkTjService);
+		ExcelUtil.save(file, skxsQkTjImport, SkxsQkTjExcel.class);
+		return R.success("操作成功");
+	}
+
+	/**
+	 * 导出
+	 * @param skxsQkTj
+	 */
+	@GetMapping("/export-skxsQkTj")
+	public void exportSkxsQkTj(HttpServletResponse response,SkxsQkTjVO skxsQkTj) {
+		List<SkxsQkTjExcel> list = skxsQkTjService.exportSkxsQkTjList(skxsQkTj);
+		ExcelUtil.export(response, "水库统计数据" + DateUtil.time(), "水库统计数据表", list, SkxsQkTjExcel.class);
+	}
+
 }
diff --git a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztods/excel/SkxsQkTjExcel.java b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztods/excel/SkxsQkTjExcel.java
new file mode 100644
index 0000000..220854e
--- /dev/null
+++ b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztods/excel/SkxsQkTjExcel.java
@@ -0,0 +1,188 @@
+package cn.gistack.sm.sjztods.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 com.baomidou.mybatisplus.annotation.TableField;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+@Data
+@ColumnWidth(25)
+@HeadRowHeight(20)
+@ContentRowHeight(18)
+public class SkxsQkTjExcel implements Serializable {
+	private static final long serialVersionUID = 1L;
+
+	/**
+	 * 水库编号
+	 */
+	@ColumnWidth(15)
+	@ExcelProperty("水库编号")
+	private String resCode;
+
+	/**
+	 * 水库名称
+	 */
+	@ColumnWidth(15)
+	@ExcelProperty("水库名称")
+	private String resName;
+
+	/**
+	 * 市州名称
+	 */
+	@ColumnWidth(15)
+	@ExcelProperty("市州名称")
+	private String cityName;
+
+	/**
+	 * 区县名称
+	 */
+	@ColumnWidth(15)
+	@ExcelProperty("区县名称")
+	private String countyName;
+
+	/**
+	 * 乡镇名称
+	 */
+	@ColumnWidth(15)
+	@ExcelProperty("乡镇名称")
+	private String townName;
+
+	/**
+	 * 总库容
+	 */
+	@ColumnWidth(15)
+	@ExcelProperty("总库容")
+	private Double totalCap;
+
+	/**
+	 * 当前水位
+	 */
+	@ColumnWidth(15)
+	@ExcelProperty("当前水位")
+	private Double rz;
+
+	/**
+	 * 当日蓄水量
+	 */
+	@ColumnWidth(15)
+	@ExcelProperty("当日蓄水量")
+	private Double ws;
+
+	/**
+	 * 上月
+	 */
+	@ColumnWidth(15)
+	@ExcelProperty("上月")
+	private Double upMonthWs;
+
+	/**
+	 * 去年同期蓄水量
+	 */
+	@ColumnWidth(15)
+	@ExcelProperty("去年同期蓄水量")
+	private Double lastYearWs;
+
+	/**
+	 * 历史同期蓄水量
+	 */
+	@ColumnWidth(15)
+	@ExcelProperty("历史同期蓄水量")
+	private Double hisWs;
+
+	/**
+	 * 今年以来灌溉放水量
+	 */
+	@ColumnWidth(15)
+	@ExcelProperty("今年以来灌溉放水量")
+	private Double nowYearIrrDw;
+
+	/**
+	 * 今年以来生活放水量
+	 */
+	@ColumnWidth(15)
+	@ExcelProperty("今年以来生活放水量")
+	private Double nowYearLiveDw;
+
+	/**
+	 * 今年以来生态放水量
+	 */
+	@ColumnWidth(15)
+	@ExcelProperty("今年以来生态放水量")
+	private Double nowYearZooDw;
+
+	/**
+	 * 总蓄水现有-历史
+	 */
+	@ColumnWidth(15)
+	@ExcelProperty("总蓄水现有-历史")
+	private String totalWsDif;
+
+	/**
+	 * 总蓄水较历史同期(%)
+	 */
+	@ColumnWidth(15)
+	@ExcelProperty("总蓄水较历史同期(%)")
+	private String totalWsHisPro;
+
+	/**
+	 * 死库容
+	 */
+	@ColumnWidth(15)
+	@ExcelProperty("死库容")
+	private Double deadCap;
+
+	/**
+	 * 当前有效蓄水
+	 */
+	@ColumnWidth(15)
+	@ExcelProperty("当前有效蓄水")
+	private Double nowValidWs;
+
+	/**
+	 * 兴利库容
+	 */
+	@ColumnWidth(15)
+	@ExcelProperty("兴利库容")
+	private Double benResCap;
+
+	/**
+	 * 有效蓄水/兴利(%)
+	 */
+	@ColumnWidth(15)
+	@ExcelProperty("有效蓄水/兴利(%)")
+	private String validWsBenPro;
+
+	/**
+	 * 历史同期有效蓄水
+	 */
+	@ColumnWidth(15)
+	@ExcelProperty("历史同期有效蓄水")
+	private Double hisValidWs;
+
+	/**
+	 * 当前有效比历史同期(%)
+	 */
+	@ColumnWidth(15)
+	@ExcelProperty("当前有效比历史同期(%)")
+	private String nowValidHisPro;
+
+	/**
+	 * 去年有效蓄水
+	 */
+	@ColumnWidth(15)
+	@ExcelProperty("去年有效蓄水")
+	private Double lastYearValidWs;
+
+	/**
+	 * 当前有效比去年同期(%)
+	 */
+	@ColumnWidth(15)
+	@ExcelProperty("当前有效比去年同期(%)")
+	private String nowValidLastPro;
+
+}
diff --git a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztods/excel/SkxsQkTjImport.java b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztods/excel/SkxsQkTjImport.java
new file mode 100644
index 0000000..6ceb4cc
--- /dev/null
+++ b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztods/excel/SkxsQkTjImport.java
@@ -0,0 +1,24 @@
+package cn.gistack.sm.sjztods.excel;
+
+import cn.gistack.sm.sjztmd.service.IAttResStagCapDicsService;
+import cn.gistack.sm.sjztods.service.ISkxsQkTjService;
+import lombok.RequiredArgsConstructor;
+import org.springblade.core.excel.support.ExcelImporter;
+
+import java.util.List;
+
+/**
+ * 导入水库库容数据
+ * @author zhongrj
+ * @date 2023-09-04
+ */
+@RequiredArgsConstructor
+public class SkxsQkTjImport implements ExcelImporter<SkxsQkTjExcel> {
+
+	private final ISkxsQkTjService service;
+
+	@Override
+	public void save(List<SkxsQkTjExcel> data) {
+		service.importSkxsQkTjData(data);
+	}
+}
diff --git a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztods/mapper/SkxsQkTjMapper.java b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztods/mapper/SkxsQkTjMapper.java
index c1c50ff..7d5d6e2 100644
--- a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztods/mapper/SkxsQkTjMapper.java
+++ b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztods/mapper/SkxsQkTjMapper.java
@@ -1,6 +1,7 @@
 package cn.gistack.sm.sjztods.mapper;
 
 import cn.gistack.sm.sjztods.entity.SkxsQkTj;
+import cn.gistack.sm.sjztods.excel.SkxsQkTjExcel;
 import cn.gistack.sm.sjztods.vo.SkxsQkTjVO;
 import com.baomidou.dynamic.datasource.annotation.DS;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
@@ -33,4 +34,11 @@
 	 * @return
 	 */
 	Object getStatisticList(@Param("skxsQkTj") SkxsQkTjVO skxsQkTj);
+
+	/**
+	 * 查询导出数据
+	 * @param skxsQkTj
+	 * @return
+	 */
+	List<SkxsQkTjExcel> exportSkxsQkTjList(@Param("skxsQkTj") SkxsQkTjVO skxsQkTj);
 }
diff --git a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztods/mapper/SkxsQkTjMapper.xml b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztods/mapper/SkxsQkTjMapper.xml
index dbd770b..83521ba 100644
--- a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztods/mapper/SkxsQkTjMapper.xml
+++ b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztods/mapper/SkxsQkTjMapper.xml
@@ -43,4 +43,40 @@
 
     </select>
 
+
+    <!--查询导出数据-->
+    <select id="exportSkxsQkTjList" resultType="cn.gistack.sm.sjztods.excel.SkxsQkTjExcel">
+        select * from (
+            select
+            sqt.*,
+            arb."res_reg_code" resRegCode,arb."eng_scal" engScal,
+            case when b."ad_grad" = 4 THEN b."ad_name" ELSE NULL END AS townName,
+            case when b."ad_grad" = 4 THEN b."ad_code" ELSE NULL END AS townCode,
+            case when b."ad_grad" = 3 THEN b."ad_name"
+            when c."ad_grad" = 3 THEN c."ad_name" END AS countyName,
+            case when b."ad_grad" = 3 THEN b."ad_code"
+            when c."ad_grad" = 3 THEN c."ad_code" END AS countyCode,
+            case when b."ad_grad" = 2 THEN b."ad_code"
+            when c."ad_grad" = 2 THEN c."ad_code"
+            ELSE d."ad_code" END AS cityCode,
+            case when b."ad_grad" = 2 THEN b."ad_name"
+            when c."ad_grad" = 2 THEN c."ad_name"
+            ELSE d."ad_name" END AS cityName
+            from SJZT_ODS."skxs_qk_tj" sqt
+            left join SJZT_MD."att_res_base" arb on arb."guid" = sqt."res_code"
+            left join SJZT_MD."att_ad_base" b ON arb."interior_ad_guid" = b."guid"
+            left join SJZT_MD."att_ad_base" c ON b."p_ad_code" = c."guid"
+            left join SJZT_MD."att_ad_base" d ON c."p_ad_code" = d."guid"
+            where 1=1
+            <if test="skxsQkTj.statisticTime!=null">
+                and date_format(sqt."statistic_time","%Y-%m-%d") = #{skxsQkTj.statisticTime}
+            </if>
+            <if test="skxsQkTj.resName!=null and skxsQkTj.resName!=''">
+                and sqt."res_name" like concat('%',#{skxsQkTj.resName},'%')
+            </if>
+        ) x
+        <if test="skxsQkTj.adCode!=null and skxsQkTj.adCode!=''">
+            and (townCode = #{skxsQkTj.adCode} or countyCode = #{skxsQkTj.adCode} or cityCode = #{skxsQkTj.adCode})
+        </if>
+    </select>
 </mapper>
diff --git a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztods/service/ISkxsQkTjService.java b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztods/service/ISkxsQkTjService.java
index e141274..7de9859 100644
--- a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztods/service/ISkxsQkTjService.java
+++ b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztods/service/ISkxsQkTjService.java
@@ -1,9 +1,12 @@
 package cn.gistack.sm.sjztods.service;
 
 import cn.gistack.sm.sjztods.entity.SkxsQkTj;
+import cn.gistack.sm.sjztods.excel.SkxsQkTjExcel;
 import cn.gistack.sm.sjztods.vo.SkxsQkTjVO;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.IService;
+
+import java.util.List;
 
 /**
  * @ClassName ISkxsQkTjService
@@ -33,4 +36,17 @@
 	 * @return
 	 */
 	Object getStatisticList(SkxsQkTjVO skxsQkTj);
+
+	/**
+	 * 导入统计上报数据
+	 * @param data
+	 */
+	void importSkxsQkTjData(List<SkxsQkTjExcel> data);
+
+	/**
+	 * 查询导出数据
+	 * @param skxsQkTj
+	 * @return
+	 */
+	List<SkxsQkTjExcel> exportSkxsQkTjList(SkxsQkTjVO skxsQkTj);
 }
diff --git a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztods/service/impl/SkxsQkTjServiceImpl.java b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztods/service/impl/SkxsQkTjServiceImpl.java
index b8fa2ec..1923420 100644
--- a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztods/service/impl/SkxsQkTjServiceImpl.java
+++ b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztods/service/impl/SkxsQkTjServiceImpl.java
@@ -1,17 +1,22 @@
 package cn.gistack.sm.sjztods.service.impl;
 
 import cn.gistack.sm.sjztods.entity.SkxsQkTj;
+import cn.gistack.sm.sjztods.excel.SkxsQkTjExcel;
 import cn.gistack.sm.sjztods.mapper.SkxsQkTjMapper;
 import cn.gistack.sm.sjztods.service.ISkxsQkTjService;
 import cn.gistack.sm.sjztods.vo.SkxsQkTjVO;
+import cn.gistack.system.user.entity.User;
 import com.baomidou.dynamic.datasource.annotation.DS;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import org.springblade.core.secure.utils.AuthUtil;
+import org.springblade.core.tool.utils.BeanUtil;
 import org.springframework.stereotype.Service;
 
 import java.util.Date;
+import java.util.List;
+import java.util.Objects;
 
 /**
  * @ClassName SkxsQkTjServiceImpl
@@ -75,5 +80,50 @@
 	public Object getStatisticList(SkxsQkTjVO skxsQkTj) {
 		return baseMapper.getStatisticList(skxsQkTj);
 	}
+
+	/**
+	 * 导入统计上报数据
+	 * @param data
+	 */
+	@Override
+	public void importSkxsQkTjData(List<SkxsQkTjExcel> data) {
+		if (data.size()>0){
+			// 遍历
+			data.forEach(skxsQkTjExcel -> {
+				SkxsQkTj skxsQkTj = Objects.requireNonNull(BeanUtil.copy(skxsQkTjExcel, SkxsQkTj.class));
+				// 查询库中是否包含当前日期,当前行政区的数据,如果有,则更新,没有则新增
+				QueryWrapper<SkxsQkTj> wrapper = new QueryWrapper<>();
+				wrapper.eq("\"statistic_time\"",skxsQkTj.getStatisticTime())
+					.eq("\"res_code\"",skxsQkTj.getResCode());
+				SkxsQkTj qkTj = baseMapper.selectOne(wrapper);
+				// 设置更新人员,更新时间,来源信息
+				skxsQkTj.setUpdateTime(new Date());
+				skxsQkTj.setUpdateUser(AuthUtil.getUserId());
+				skxsQkTj.setSysResource("sb");
+				if (null!= qkTj){
+					skxsQkTj.setGuid(qkTj.getGuid());
+					// 更新并返回
+					updateById(skxsQkTj);
+					return;
+				}
+				// 设置创建人员,时间信息
+				skxsQkTj.setCreateUser(AuthUtil.getUserId());
+				skxsQkTj.setCreateTime(new Date());
+				// 保存并返回
+				save(skxsQkTj);
+				return;
+			});
+		}
+	}
+
+	/**
+	 * 查询导出数据
+	 * @param skxsQkTj
+	 * @return
+	 */
+	@Override
+	public List<SkxsQkTjExcel> exportSkxsQkTjList(SkxsQkTjVO skxsQkTj) {
+		return baseMapper.exportSkxsQkTjList(skxsQkTj);
+	}
 }
 

--
Gitblit v1.9.3