From bb7971ee1b8dbfaa0e1ceb0d60daee974da77671 Mon Sep 17 00:00:00 2001
From: zhongrj <646384940@qq.com>
Date: Fri, 20 Oct 2023 17:57:31 +0800
Subject: [PATCH] 新增从中台读取数据(按水库和按行政区)

---
 skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztods/service/IXsfsQktjService.java         |    6 
 skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztods/service/impl/XsfsQktjServiceImpl.java |  144 ++++++++++++++++++++
 skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztods/controller/SkxsQkTjController.java    |    9 +
 skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztods/service/ISkxsQkTjService.java         |    6 
 skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztods/mapper/XsfsQktjMapper.xml             |   14 +
 skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztods/mapper/SkxsQkTjMapper.java            |   10 +
 skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztods/service/impl/SkxsQkTjServiceImpl.java |  133 ++++++++++++++++++
 skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztods/controller/XsfsQktjController.java    |   10 +
 skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztods/mapper/SkxsQkTjMapper.xml             |   10 +
 skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztods/constant/ZtApiUrlConstant.java        |   35 +++++
 skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztods/mapper/XsfsQktjMapper.java            |    9 +
 skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztods/vo/XsfsQktjVO.java                    |   10 +
 skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztods/constant/ZtConfigConstant.java        |   20 ++
 13 files changed, 408 insertions(+), 8 deletions(-)

diff --git a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztods/constant/ZtApiUrlConstant.java b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztods/constant/ZtApiUrlConstant.java
new file mode 100644
index 0000000..6c6b597
--- /dev/null
+++ b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztods/constant/ZtApiUrlConstant.java
@@ -0,0 +1,35 @@
+package cn.gistack.sm.sjztods.constant;
+
+/**
+ * 中台接口请求信息常量
+ * @author zhongrj
+ * @since 2023-04-21
+ */
+public class ZtApiUrlConstant {
+
+	/**
+	 * 请求头url 前缀(dev)
+	 */
+	public static final String url_prefix_dev = "http://10.10.2.192";
+
+	/**
+	 * 请求头url 前缀(prod)
+	 */
+	public static final String url_prefix_prod = "http://10.42.6.192";
+
+	/**
+	 * 请求头url 前缀(prod)
+	 */
+	public static final String url_prefix_test = "http://10.42.6.192";
+
+	/**
+	 *  水库库容统计情况
+	 */
+	public static final String cap_water_detail = "/services/1234567890ABCDEFGHIJKLMN/cap_water_detail";
+
+	/**
+	 * 库容按行政区统计情况
+	 */
+	public static final String cap_tot_status = "/services/1234567890ABCDEFGHIJKLMN/cap_tot_status";
+
+}
diff --git a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztods/constant/ZtConfigConstant.java b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztods/constant/ZtConfigConstant.java
new file mode 100644
index 0000000..0b5f7bd
--- /dev/null
+++ b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztods/constant/ZtConfigConstant.java
@@ -0,0 +1,20 @@
+package cn.gistack.sm.sjztods.constant;
+
+/**
+ * 中台接口请求信息常量
+ * @author zhongrj
+ * @since 2023-04-21
+ */
+public class ZtConfigConstant {
+
+	/**
+	 * 请求头 key
+	 */
+	public static final String header_key = "apiKey";
+
+	/**
+	 * 请求头 value
+	 */
+	public static final String header_value = "F1DBECD719108635189480CF60E6553ADB3109616426BD537F25A430DFC613B491A025C4A51E77FD08C6E5B7CBE05917A461286E7B6D69F1AB1B14F946149D2065B0C675F8FEDF4B9B05C1496881BC5A";
+
+}
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 80b8753..0a734c8 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
@@ -96,4 +96,13 @@
 		ExcelUtil.export(response, "水库统计数据" + DateUtil.time(), "水库统计数据表", list, SkxsQkTjExcel.class);
 	}
 
+	/**
+	 * 中台接口数据调用,数据入库
+	 * @param skxsQkTj
+	 */
+	@GetMapping("/saveOrUpdateData")
+	public void saveOrUpdateData(SkxsQkTjVO skxsQkTj) {
+		skxsQkTjService.saveOrUpdateData(skxsQkTj);
+	}
+
 }
diff --git a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztods/controller/XsfsQktjController.java b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztods/controller/XsfsQktjController.java
index a0cdf50..c4692db 100644
--- a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztods/controller/XsfsQktjController.java
+++ b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztods/controller/XsfsQktjController.java
@@ -91,4 +91,14 @@
 		ExcelUtil.export(response, "水库统计数据" + DateUtil.time(), "水库统计数据表", list, XsfsQktjExcel.class);
 	}
 
+
+	/**
+	 * 中台接口数据调用,数据入库
+	 * @param xsfsQktj
+	 */
+	@GetMapping("/saveOrUpdateData")
+	public void saveOrUpdateData(XsfsQktjVO xsfsQktj) {
+		xsfsQktjService.saveOrUpdateData(xsfsQktj);
+	}
+
 }
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 a1f240a..87a8c7f 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
@@ -57,4 +57,14 @@
 	 * @return
 	 */
 	SkxsQkTj selectSkxsQkTj(@Param("skxsQkTjExcel") SkxsQkTjExcel skxsQkTjExcel);
+
+	/**
+	 * 查询详情数据
+	 * @param res_cd
+	 * @param queryTime
+	 * @return
+	 */
+	SkxsQkTj selectSkxsQkTjBy(@Param("resCd") String res_cd,
+							  @Param("resNm") String res_nm,
+							  @Param("queryTime")  String queryTime);
 }
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 d04e509..884540b 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
@@ -147,5 +147,15 @@
         where 1=1
         and date_format("statistic_time",'%Y-%m-%d') = #{skxsQkTjExcel.statisticTime}
         and "res_code" = #{skxsQkTjExcel.resCode}
+        and "res_name" = #{skxsQkTjExcel.resName}
+    </select>
+
+    <!--查询详情数据-->
+    <select id="selectSkxsQkTjBy" resultType="cn.gistack.sm.sjztods.entity.SkxsQkTj">
+        select * from SJZT_ODS."skxs_qk_tj"
+        where 1=1
+        and date_format("statistic_time",'%Y-%m-%d') = #{queryTime}
+        and "res_code" = #{resCd}
+        and "res_name" = #{resNm}
     </select>
 </mapper>
diff --git a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztods/mapper/XsfsQktjMapper.java b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztods/mapper/XsfsQktjMapper.java
index 2b943b1..9fb7b76 100644
--- a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztods/mapper/XsfsQktjMapper.java
+++ b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztods/mapper/XsfsQktjMapper.java
@@ -1,5 +1,6 @@
 package cn.gistack.sm.sjztods.mapper;
 
+import cn.gistack.sm.sjztods.entity.SkxsQkTj;
 import cn.gistack.sm.sjztods.entity.XsfsQktj;
 import cn.gistack.sm.sjztods.excel.XsfsQktjExcel;
 import cn.gistack.sm.sjztods.vo.XsfsQktjVO;
@@ -48,4 +49,12 @@
 	 * @return
 	 */
 	XsfsQktj selectXsfsQktj(@Param("xsfsQktjExcel") XsfsQktjExcel xsfsQktjExcel);
+
+	/**
+	 * 查询详情信息
+	 * @param ad_nm 区域名称
+	 * @param queryTime
+	 * @return
+	 */
+	XsfsQktj selectXsfsQktjBy(@Param("adName") String ad_nm,@Param("queryTime") String queryTime);
 }
diff --git a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztods/mapper/XsfsQktjMapper.xml b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztods/mapper/XsfsQktjMapper.xml
index 181e1b9..4a0e1e8 100644
--- a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztods/mapper/XsfsQktjMapper.xml
+++ b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztods/mapper/XsfsQktjMapper.xml
@@ -61,8 +61,8 @@
         <if test="xsfsQktj.statisticTime!=null">
             and date_format(xq."statistic_time",'%Y-%m-%d') = #{xsfsQktj.statisticTime}
         </if>
-        <if test="xsfsQktj.adCode!=null and xsfsQktj.adCode!=''">
-            and xq."ad_code" = #{xsfsQktj.adCode}
+        <if test="xsfsQktj.adName!=null and xsfsQktj.adName!=''">
+            and xq."ad_name" = #{xsfsQktj.adName}
         </if>
     </select>
 
@@ -71,6 +71,14 @@
         select * from SJZT_ODS."skxs_qk_tj"
         where 1=1
         and date_format("statistic_time",'%Y-%m-%d') = #{xsfsQktjExcel.statisticTime}
-        and "ad_code" = #{xsfsQktjExcel.adCode}
+        and "ad_name" = #{xsfsQktjExcel.adName}
+    </select>
+
+    <!--查询详情数据-->
+    <select id="selectXsfsQktjBy" resultType="cn.gistack.sm.sjztods.entity.XsfsQktj">
+        select * from SJZT_ODS."skxs_qk_tj"
+        where 1=1
+        and date_format("statistic_time",'%Y-%m-%d') = #{statisticTime}
+        and "ad_name" = #{adName}
     </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 7de9859..2298aac 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
@@ -49,4 +49,10 @@
 	 * @return
 	 */
 	List<SkxsQkTjExcel> exportSkxsQkTjList(SkxsQkTjVO skxsQkTj);
+
+	/**
+	 * 中台接口数据调用,数据入库
+	 * @param skxsQkTj
+	 */
+    void saveOrUpdateData(SkxsQkTjVO skxsQkTj);
 }
diff --git a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztods/service/IXsfsQktjService.java b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztods/service/IXsfsQktjService.java
index da885ac..2e0b722 100644
--- a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztods/service/IXsfsQktjService.java
+++ b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztods/service/IXsfsQktjService.java
@@ -49,4 +49,10 @@
      * @return
      */
 	List<XsfsQktjExcel> exportXsfsQktjList(XsfsQktjVO xsfsQktj);
+
+	/**
+	 * 中台接口数据调用,数据入库
+	 * @param xsfsQktj
+	 */
+    void saveOrUpdateData(XsfsQktjVO xsfsQktj);
 }
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 06d221a..8fd9b53 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,24 +1,34 @@
 package cn.gistack.sm.sjztods.service.impl;
 
+import cn.gistack.common.utils.SpringContextUtil;
+import cn.gistack.sm.sjztods.constant.ZtApiUrlConstant;
+import cn.gistack.sm.sjztods.constant.ZtConfigConstant;
 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.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.alibaba.fastjson.parser.Feature;
 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.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpEntity;
+import org.springframework.http.HttpHeaders;
+import org.springframework.http.HttpMethod;
+import org.springframework.http.ResponseEntity;
 import org.springframework.stereotype.Service;
-
+import org.springframework.util.MultiValueMap;
+import org.springframework.web.client.RestTemplate;
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
-import java.util.Date;
-import java.util.List;
-import java.util.Objects;
+import java.util.*;
 
 /**
  * @ClassName SkxsQkTjServiceImpl
@@ -28,6 +38,9 @@
 @Service
 @DS("ztznwh")
 public class SkxsQkTjServiceImpl extends ServiceImpl<SkxsQkTjMapper, SkxsQkTj> implements ISkxsQkTjService {
+
+	@Autowired
+	private RestTemplate restTemplate;
 
 	/**
 	 * 上报
@@ -134,5 +147,115 @@
 	public List<SkxsQkTjExcel> exportSkxsQkTjList(SkxsQkTjVO skxsQkTj) {
 		return baseMapper.exportSkxsQkTjList(skxsQkTj);
 	}
+
+	/**
+	 * 中台接口数据调用,数据入库
+	 * @param skxsQkTj
+	 */
+	@Override
+	public void saveOrUpdateData(SkxsQkTjVO skxsQkTj) {
+		// 参数拼接
+		StringBuilder builder = new StringBuilder("?");
+		builder.append("pageNo=1").append("&pageSize=1000");
+		// 拼接日期,必传
+		builder.append("&dt=").append(skxsQkTj.getQueryTime());
+		String params = builder.toString();
+		// 查询
+		JSONObject jsonObject = getZtData(params, ZtApiUrlConstant.cap_water_detail);
+		// 保留 null值
+		JSONObject jsonData = jsonObject.getJSONObject("data");
+		JSONArray jsonArray = jsonData.getJSONArray("data");
+		List<SkxsQkTj> list = new ArrayList<>();
+		// 遍历,写入数据
+		for (int i = 0; i < jsonArray.size(); i++) {
+			String res_cd = jsonArray.getJSONObject(i).getString("res_cd");
+			// 查询库里是否已存在数据
+			SkxsQkTj skxs = baseMapper.selectSkxsQkTjBy(res_cd,jsonArray.getJSONObject(i).getString("res_nm"),skxsQkTj.getQueryTime());
+			if (null!=skxs){
+				// 跳出本次循环
+				continue;
+			}
+			SkxsQkTj qkTj = new SkxsQkTj();
+			// 设置各项值
+			setSkxsQkTjInfo(qkTj,jsonArray,i,skxsQkTj.getQueryTime());
+			// 加入集合
+			list.add(qkTj);
+		}
+		// 批量插入
+		saveBatch(list);
+	}
+
+	/**
+	 * 设置水库库容统计值
+	 * @param skxs
+	 * @param jsonArray
+	 * @param i 第几个
+	 * @param time 统计日期
+	 */
+	private void setSkxsQkTjInfo(SkxsQkTj skxs,JSONArray jsonArray,int i,String time) {
+		try {
+			skxs.setStatisticTime(new SimpleDateFormat("yyyy-MM-dd").parse(time));
+		} catch (ParseException e) {
+			e.printStackTrace();
+		}
+		skxs.setCreateUser(AuthUtil.getUserId());
+		skxs.setUpdateUser(AuthUtil.getUserId());
+		skxs.setCreateTime(new Date());
+		skxs.setUpdateTime(new Date());
+		skxs.setSysResource("zt");
+
+		skxs.setDeadCap(jsonArray.getJSONObject(i).getDouble("dead_cap"));
+		skxs.setResCode(jsonArray.getJSONObject(i).getString("res_cd"));
+		skxs.setResName(jsonArray.getJSONObject(i).getString("res_nm"));
+		skxs.setTotalCap(jsonArray.getJSONObject(i).getDouble("tot_cap"));
+		skxs.setRz(jsonArray.getJSONObject(i).getDouble("rz"));
+		skxs.setWs(jsonArray.getJSONObject(i).getDouble("now_cap"));
+		skxs.setBenResCap(jsonArray.getJSONObject(i).getDouble("ben_res_cap"));
+		skxs.setLastYearWs(jsonArray.getJSONObject(i).getDouble("last_year_cap"));
+		skxs.setHisWs(jsonArray.getJSONObject(i).getDouble("avg_cap"));
+		skxs.setUpMonthWs(jsonArray.getJSONObject(i).getDouble("last_month_cap"));
+		skxs.setTotalWsDif(jsonArray.getJSONObject(i).getString("diff_his"));
+	}
+
+	/**
+	 * 调用中台接口查询数据
+	 *
+	 * @param params
+	 * @param url
+	 * @return
+	 */
+	public JSONObject getZtData(String params, String url) {
+		// 获取环境
+		String activeProfile = SpringContextUtil.getActiveProfile();
+		if (activeProfile.equals("dev")){
+			url = ZtApiUrlConstant.url_prefix_dev + url;
+		}
+		if (activeProfile.equals("prod")){
+			url = ZtApiUrlConstant.url_prefix_prod + url;
+		}
+		if (activeProfile.equals("test")){
+			url = ZtApiUrlConstant.url_prefix_test + url;
+		}
+		//设置请求头
+		HttpHeaders headers = new HttpHeaders();
+		headers.add(ZtConfigConstant.header_key, ZtConfigConstant.header_value);
+		//封装请求头
+		HttpEntity<MultiValueMap<String, Object>> formEntity = new HttpEntity<MultiValueMap<String, Object>>(headers);
+		try {
+			//有请求头,有参数请求
+			ResponseEntity<String> responseEntity =
+				restTemplate.exchange(url + params,
+					HttpMethod.GET,
+					formEntity,
+					String.class);
+			// Feature.IgnoreNotMatch 保留null值的属性
+			JSONObject jsonObject = JSON.parseObject(responseEntity.getBody(),Feature.IgnoreNotMatch);
+			// 返回
+			return jsonObject;
+		} catch (Exception e) {
+			e.printStackTrace();
+		}
+		return null;
+	}
 }
 
diff --git a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztods/service/impl/XsfsQktjServiceImpl.java b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztods/service/impl/XsfsQktjServiceImpl.java
index 89eeab8..e610a01 100644
--- a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztods/service/impl/XsfsQktjServiceImpl.java
+++ b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztods/service/impl/XsfsQktjServiceImpl.java
@@ -1,20 +1,36 @@
 package cn.gistack.sm.sjztods.service.impl;
 
+import cn.gistack.common.utils.SpringContextUtil;
+import cn.gistack.sm.sjztods.constant.ZtApiUrlConstant;
+import cn.gistack.sm.sjztods.constant.ZtConfigConstant;
+import cn.gistack.sm.sjztods.entity.SkxsQkTj;
 import cn.gistack.sm.sjztods.entity.XsfsQktj;
 import cn.gistack.sm.sjztods.excel.XsfsQktjExcel;
 import cn.gistack.sm.sjztods.mapper.XsfsQktjMapper;
 import cn.gistack.sm.sjztods.service.IXsfsQktjService;
 import cn.gistack.sm.sjztods.vo.XsfsQktjVO;
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.alibaba.fastjson.parser.Feature;
 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.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpEntity;
+import org.springframework.http.HttpHeaders;
+import org.springframework.http.HttpMethod;
+import org.springframework.http.ResponseEntity;
 import org.springframework.stereotype.Service;
+import org.springframework.util.MultiValueMap;
+import org.springframework.web.client.RestTemplate;
 
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
+import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
 import java.util.Objects;
@@ -27,6 +43,9 @@
 @Service
 @DS("ztznwh")
 public class XsfsQktjServiceImpl extends ServiceImpl<XsfsQktjMapper, XsfsQktj> implements IXsfsQktjService {
+
+	@Autowired
+	private RestTemplate restTemplate;
 
 	/**
 	 * 上报
@@ -128,5 +147,130 @@
 	public List<XsfsQktjExcel> exportXsfsQktjList(XsfsQktjVO xsfsQktj) {
 		return baseMapper.exportXsfsQktjList(xsfsQktj);
 	}
+
+	/**
+	 * 中台接口数据调用,数据入库
+	 * @param xsfsQktj
+	 */
+	@Override
+	public void saveOrUpdateData(XsfsQktjVO xsfsQktj) {
+		// 参数拼接
+		StringBuilder builder = new StringBuilder("?");
+		// 拼接日期,必传
+		builder.append("?dt=").append(xsfsQktj.getQueryTime());
+		if (null!=xsfsQktj.getType() && !xsfsQktj.getType().equals("")) {
+			builder.append("&").append(xsfsQktj.getType()).append("=").append(xsfsQktj.getTypeValue());
+		}
+		String params = builder.toString();
+		// 查询
+		JSONObject jsonObject = getZtData(params, ZtApiUrlConstant.cap_tot_status);
+		// 解析数据
+		JSONArray jsonArray = jsonObject.getJSONArray("data");
+		List<XsfsQktj> list = new ArrayList<>();
+		// 遍历,写入数据
+		for (int i = 0; i < jsonArray.size(); i++) {
+			String ad_nm = "";
+			if (xsfsQktj.getType().equals("city_cd")){
+				ad_nm = jsonArray.getJSONObject(i).getString("county_nm");
+			}else if (xsfsQktj.getType().equals("county_cd")){
+				ad_nm = jsonArray.getJSONObject(i).getString("town_nm");
+			}else {
+				ad_nm = jsonArray.getJSONObject(i).getString("city_nm");
+			}
+			// 查询库里是否已存在数据
+			XsfsQktj xsfsQktjBy = baseMapper.selectXsfsQktjBy(ad_nm,xsfsQktj.getQueryTime());
+			if (null!=xsfsQktjBy){
+				// 跳出本次循环
+				continue;
+			}
+			XsfsQktj qkTj = new XsfsQktj();
+			qkTj.setAdName(ad_nm);
+			// 设置各项值
+			setXsfsQktjInfo(qkTj,jsonArray,i,xsfsQktj.getQueryTime());
+			// 加入集合
+			list.add(qkTj);
+		}
+		// 批量插入
+		saveBatch(list);
+	}
+
+
+	/**
+	 * 设置水库库容统计值
+	 * @param skxs
+	 * @param jsonArray
+	 * @param i 第几个
+	 * @param time 统计日期
+	 */
+	private void setXsfsQktjInfo(XsfsQktj skxs,JSONArray jsonArray,int i,String time) {
+		try {
+			skxs.setStatisticTime(new SimpleDateFormat("yyyy-MM-dd").parse(time));
+		} catch (ParseException e) {
+			e.printStackTrace();
+		}
+		skxs.setCreateUser(AuthUtil.getUserId());
+		skxs.setUpdateUser(AuthUtil.getUserId());
+		skxs.setCreateTime(new Date());
+		skxs.setUpdateTime(new Date());
+		skxs.setSysResource("zt");
+		// 总
+		skxs.setZxsTotal(jsonArray.getJSONObject(i).getDouble("tot_cap"));
+		skxs.setZxsSc(jsonArray.getJSONObject(i).getString("diff_last_day"));
+		skxs.setZxsLastYearTq(jsonArray.getJSONObject(i).getString("rate_last_year_cap"));
+		skxs.setZxsLastYearTqzj(jsonArray.getJSONObject(i).getString("diff_last_year"));
+		skxs.setZxsHisTq(jsonArray.getJSONObject(i).getString("diff_his_cap"));
+		skxs.setZxsHisTqzj(jsonArray.getJSONObject(i).getString("rate_avg_cap"));
+		// 大型
+		skxs.setDxskXsTotal(jsonArray.getJSONObject(i).getDouble("big_tot_cap"));
+		skxs.setDxskXsHis(jsonArray.getJSONObject(i).getString("big_diff_his"));
+		skxs.setDxskXsLastYear(jsonArray.getJSONObject(i).getString("big_diff_last_year"));
+		// 中型
+		skxs.setZxskXsTotal(jsonArray.getJSONObject(i).getDouble("mid_tot_cap"));
+		skxs.setZxskXsHis(jsonArray.getJSONObject(i).getString("mid_diff_his"));
+		skxs.setZxskXsLastYear(jsonArray.getJSONObject(i).getString("mid_diff_last_year"));
+		// 小型
+		skxs.setXxskXsTotal(jsonArray.getJSONObject(i).getDouble("small_tot_cap"));
+	}
+
+	/**
+	 * 调用中台接口查询数据
+	 *
+	 * @param params
+	 * @param url
+	 * @return
+	 */
+	public JSONObject getZtData(String params, String url) {
+		// 获取环境
+		String activeProfile = SpringContextUtil.getActiveProfile();
+		if (activeProfile.equals("dev")){
+			url = ZtApiUrlConstant.url_prefix_dev + url;
+		}
+		if (activeProfile.equals("prod")){
+			url = ZtApiUrlConstant.url_prefix_prod + url;
+		}
+		if (activeProfile.equals("test")){
+			url = ZtApiUrlConstant.url_prefix_test + url;
+		}
+		//设置请求头
+		HttpHeaders headers = new HttpHeaders();
+		headers.add(ZtConfigConstant.header_key, ZtConfigConstant.header_value);
+		//封装请求头
+		HttpEntity<MultiValueMap<String, Object>> formEntity = new HttpEntity<MultiValueMap<String, Object>>(headers);
+		try {
+			//有请求头,有参数请求
+			ResponseEntity<String> responseEntity =
+				restTemplate.exchange(url + params,
+					HttpMethod.GET,
+					formEntity,
+					String.class);
+			// Feature.IgnoreNotMatch 保留null值的属性
+			JSONObject jsonObject = JSON.parseObject(responseEntity.getBody(), Feature.IgnoreNotMatch);
+			// 返回
+			return jsonObject;
+		} catch (Exception e) {
+			e.printStackTrace();
+		}
+		return null;
+	}
 }
 
diff --git a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztods/vo/XsfsQktjVO.java b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztods/vo/XsfsQktjVO.java
index 762ecb1..a293a87 100644
--- a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztods/vo/XsfsQktjVO.java
+++ b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztods/vo/XsfsQktjVO.java
@@ -15,4 +15,14 @@
 	 * 查询时间
 	 */
 	private String queryTime;
+
+	/**
+	 * 行政区类型 如 cityCode
+	 */
+	private String type;
+
+	/**
+	 * 行政区名称 值如 420100000000
+	 */
+	private String typeValue;
 }

--
Gitblit v1.9.3