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;
|
|
/**
|
* @ClassName XsfsQktjServiceImpl
|
* @author zhongrj
|
* @date 2023-10-19
|
*/
|
@Service
|
@DS("ztznwh")
|
public class XsfsQktjServiceImpl extends ServiceImpl<XsfsQktjMapper, XsfsQktj> implements IXsfsQktjService {
|
|
@Autowired
|
private RestTemplate restTemplate;
|
|
/**
|
* 上报
|
* @param xsfsQktj
|
* @return
|
*/
|
@Override
|
@DS("ztznwh")
|
public boolean exportXsfsQktj(XsfsQktj xsfsQktj) {
|
// 查询库中是否包含当前日期,当前行政区的数据,如果有,则更新,没有则新增
|
QueryWrapper<XsfsQktj> wrapper = new QueryWrapper<>();
|
wrapper.eq("\"statistic_time\"",xsfsQktj.getStatisticTime())
|
.eq("\"ad_code\"",xsfsQktj.getAdCode());
|
XsfsQktj qkTj = baseMapper.selectOne(wrapper);
|
// 设置更新人员,更新时间,来源信息
|
xsfsQktj.setUpdateTime(new Date());
|
xsfsQktj.setUpdateUser(AuthUtil.getUserId());
|
xsfsQktj.setSysResource("sb");
|
if (null!= qkTj){
|
xsfsQktj.setGuid(qkTj.getGuid());
|
// 更新并返回
|
return updateById(xsfsQktj);
|
}
|
// 设置创建人员,时间信息
|
xsfsQktj.setCreateUser(AuthUtil.getUserId());
|
xsfsQktj.setCreateTime(new Date());
|
// 保存并返回
|
return save(xsfsQktj);
|
}
|
|
/**
|
* 分页列表数据查询
|
* @param xsfsQktj
|
* @param page
|
* @return
|
*/
|
@Override
|
public Object selectXsfsQktjPage(IPage<XsfsQktjVO> page, XsfsQktjVO xsfsQktj) {
|
if (null!=xsfsQktj.getIsExport()){
|
// 导出,查询所有数据
|
return baseMapper.selectXsfsQktjPage(null,xsfsQktj);
|
}
|
return page.setRecords(baseMapper.selectXsfsQktjPage(page,xsfsQktj));
|
}
|
|
/**
|
* 按行政区统计
|
* @param xsfsQktj
|
* @return
|
*/
|
@Override
|
public Object getStatisticList(XsfsQktjVO xsfsQktj) {
|
return baseMapper.getStatisticList(xsfsQktj);
|
}
|
|
/**
|
* 导入统计上报数据
|
* @param data
|
*/
|
@Override
|
public void importXsfsQktjData(List<XsfsQktjExcel> data) {
|
if (data.size()>0){
|
// 遍历
|
data.forEach(xsfsQktjExcel -> {
|
XsfsQktj xsfsQktj = Objects.requireNonNull(BeanUtil.copy(xsfsQktjExcel, XsfsQktj.class));
|
// 查询库中是否包含当前日期,当前行政区的数据,如果有,则更新,没有则新增
|
XsfsQktj qkTj = baseMapper.selectXsfsQktj(xsfsQktjExcel);
|
// 设置更新人员,更新时间,来源信息
|
try {
|
xsfsQktj.setStatisticTime(new SimpleDateFormat("yyyy-MM-dd").parse(xsfsQktjExcel.getStatisticTime()));
|
} catch (ParseException e) {
|
e.printStackTrace();
|
}
|
xsfsQktj.setUpdateTime(new Date());
|
xsfsQktj.setUpdateUser(AuthUtil.getUserId());
|
xsfsQktj.setSysResource("sb");
|
if (null!= qkTj){
|
xsfsQktj.setGuid(qkTj.getGuid());
|
// 更新并返回
|
updateById(xsfsQktj);
|
return;
|
}
|
// 设置创建人员,时间信息
|
xsfsQktj.setCreateUser(AuthUtil.getUserId());
|
xsfsQktj.setCreateTime(new Date());
|
// 保存并返回
|
save(xsfsQktj);
|
return;
|
});
|
}
|
}
|
|
/**
|
* 查询导出数据
|
* @param xsfsQktj
|
* @return
|
*/
|
@Override
|
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;
|
}
|
}
|