skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztods/constant/ZtApiUrlConstant.java
New file @@ -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"; } skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztods/constant/ZtConfigConstant.java
New file @@ -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"; } 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); } } 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); } } 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); } 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> 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); } 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> 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); } 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); } 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; } } 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; } } 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; }