zhongrj
2023-08-07 50bc6ee76ffcebc0b539e0fb5698a3911e5f6c02
Merge branch 'jtdev' of https://hbsl-code.gistack.cn/hbwri/manager into jtdev
9 files modified
9 files added
709 ■■■■■ changed files
skjcmanager/skjcmanager-common/src/main/java/cn/gistack/common/utils/CommonUtil.java 17 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service-api/skjcmanager-nky-api/src/main/java/cn/gistack/nky/entity/AlarmGet.java 32 ●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service-api/skjcmanager-nky-api/src/main/java/cn/gistack/nky/requestpojo/HstPredictReqPo.java 6 ●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service-api/skjcmanager-nky-api/src/main/java/cn/gistack/nky/resultpojo/HsybGetFuturePo.java 20 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-nky/src/main/java/cn/gistack/nky/rabbitmq/MyRabbitReceiver.java 12 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-nky/src/main/java/cn/gistack/nky/service/IHsybService.java 8 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-nky/src/main/java/cn/gistack/nky/service/IZtApiService.java 1 ●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-nky/src/main/java/cn/gistack/nky/service/impl/ArimaPredictServiceImpl.java 32 ●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-nky/src/main/java/cn/gistack/nky/service/impl/HstPredictServiceImpl.java 107 ●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-nky/src/main/java/cn/gistack/nky/service/impl/HsybServiceImpl.java 69 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-nky/src/main/java/cn/gistack/nky/service/impl/ZtApiServiceImpl.java 7 ●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/damSecurity/controller/DamSecurityController.java 54 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/damSecurity/mapper/DamSecurityMapper.java 16 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/damSecurity/mapper/DamSecurityMapper.xml 189 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/damSecurity/service/IDamSecurityService.java 21 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/damSecurity/service/impl/DamSecurityServiceImpl.java 26 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/damSecurity/vo/DamSecurityStatistics.java 32 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-xxljob/src/main/java/cn/gistack/job/executor/jobhandler/NkyXxlJob.java 60 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-common/src/main/java/cn/gistack/common/utils/CommonUtil.java
@@ -16,6 +16,10 @@
 */
package cn.gistack.common.utils;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
/**
 * 通用工具类
 *
@@ -23,4 +27,17 @@
 */
public class CommonUtil {
    public static Date strToDate(String stringDate){
        //SimpleDateFormat 格式化日期所用到的类
        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm");//格式为 年-月-日 如2017-09-16
        java.util.Date date = null;
        try {
            date = format.parse(stringDate);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return date;
    }
}
skjcmanager/skjcmanager-service-api/skjcmanager-nky-api/src/main/java/cn/gistack/nky/entity/AlarmGet.java
@@ -1,16 +1,30 @@
package cn.gistack.nky.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.handlers.FastjsonTypeHandler;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;
/**
 * 南科院判定异常查询实体类
 */
@Data
@TableName( value = "NKY_ALARM_GET",autoResultMap = true)
public class AlarmGet {
    /**
     * 主键
     */
    @TableId(
        value = "id",
        type = IdType.ASSIGN_ID
    )
    private String id;
    /**
@@ -31,7 +45,13 @@
    /**
     * 数据时间
     */
    private String time;
    @DateTimeFormat(
        pattern = "yyyy-MM-dd HH:mm:ss"
    )
    @JsonFormat(
        pattern = "yyyy-MM-dd HH:mm:ss"
    )
    private Date time;
    /**
     * 测量值
@@ -41,6 +61,7 @@
    /**
     * 描述
     */
    @TableField("\"DESC\"")
    private String desc;
    /**
@@ -71,15 +92,18 @@
    /**
     * 正向阈值
     */
    private String forward;
    @TableField(value = "forward",typeHandler = FastjsonTypeHandler.class)
    private Object forward;
    /**
     * 反向阈值
     */
    private String reverse;
    @TableField(value = "\"REVERSE\"",typeHandler = FastjsonTypeHandler.class)
    private Object reverse;
    /**
     * 系数阈值
     */
    private String ratio;
    @TableField(value = "ratio",typeHandler = FastjsonTypeHandler.class)
    private Object ratio;
}
skjcmanager/skjcmanager-service-api/skjcmanager-nky-api/src/main/java/cn/gistack/nky/requestpojo/HstPredictReqPo.java
@@ -23,9 +23,9 @@
    private List<PredictWatersPo> predictWaters;
    public HstPredictReqPo(String damId, String pointId, String type, List<PredictWatersPo> predictWaters) {
        this.damId = damId;
        this.pointId = pointId;
    public HstPredictReqPo(DataResChildrenPo dataResChildrenPo, String type, List<PredictWatersPo> predictWaters) {
        this.damId = dataResChildrenPo.getRes_cd();
        this.pointId = dataResChildrenPo.getCd();
        this.type = type;
        this.predictWaters = predictWaters;
    }
skjcmanager/skjcmanager-service-api/skjcmanager-nky-api/src/main/java/cn/gistack/nky/resultpojo/HsybGetFuturePo.java
New file
@@ -0,0 +1,20 @@
package cn.gistack.nky.resultpojo;
import lombok.Data;
import java.util.List;
@Data
public class HsybGetFuturePo {
    List<List<String>> data;
    String respCode;
    String message;
    String params;
    String success;
}
skjcmanager/skjcmanager-service/skjcmanager-nky/src/main/java/cn/gistack/nky/rabbitmq/MyRabbitReceiver.java
@@ -1,5 +1,9 @@
package cn.gistack.nky.rabbitmq;
import cn.gistack.nky.entity.AlarmGet;
import cn.gistack.nky.service.IAlarmGetService;
import com.alibaba.fastjson.JSONObject;
import lombok.AllArgsConstructor;
import org.springframework.amqp.core.Message;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.stereotype.Component;
@@ -11,11 +15,17 @@
 * @DATE: 2023/8/3 15:54
 */
@Component
@AllArgsConstructor
public class MyRabbitReceiver {
    private final IAlarmGetService alarmGetService;
    @RabbitListener(queues = "alarm")
    public void processMessage(Message message) {
        System.out.println("收到消息"+new String(message.getBody()));
//        AlarmGet alarmGet = JSONObject.parseObject(new String(message.getBody()), AlarmGet.class);
//        alarmGetService.save(alarmGet);
//
//        System.out.println("收到消息"+new String(message.getBody()));
    }
}
skjcmanager/skjcmanager-service/skjcmanager-nky/src/main/java/cn/gistack/nky/service/IHsybService.java
New file
@@ -0,0 +1,8 @@
package cn.gistack.nky.service;
import java.util.List;
public interface IHsybService {
    List<List<String>> getFuture(String resCd);
}
skjcmanager/skjcmanager-service/skjcmanager-nky/src/main/java/cn/gistack/nky/service/IZtApiService.java
@@ -4,6 +4,7 @@
import cn.gistack.nky.resultpojo.DataBigResultPojo;
import cn.gistack.nky.resultpojo.DataResChildrenPo;
import cn.gistack.nky.resultpojo.DataResPo;
import com.alibaba.fastjson.JSONObject;
import java.util.List;
skjcmanager/skjcmanager-service/skjcmanager-nky/src/main/java/cn/gistack/nky/service/impl/ArimaPredictServiceImpl.java
@@ -3,6 +3,8 @@
import cn.gistack.nky.entity.ArimaPredict;
import cn.gistack.nky.mapper.ArimaPredictMapper;
import cn.gistack.nky.requestpojo.ArimaPredictReqPo;
import cn.gistack.nky.requestpojo.HstPredictReqPo;
import cn.gistack.nky.requestpojo.PredictWatersPo;
import cn.gistack.nky.requestpojo.QueryReqPo;
import cn.gistack.nky.resultpojo.DataResChildrenPo;
import cn.gistack.nky.service.IArimaPredictService;
@@ -42,11 +44,31 @@
    @Override
    public void predictData(String type) {
        List<DataResChildrenPo> cdList = getCdList(type);
        cdList.forEach(dataResChildrenPo -> {
            ArimaPredictReqPo arimaPredictReqPo = new ArimaPredictReqPo(dataResChildrenPo, type);
            //循环预测请求
            nkyService.arimaPredict(arimaPredictReqPo);
        });
        if (type.equals("1")){
            //渗压
                cdList.forEach(dataResChildrenPo -> {
                    ArimaPredictReqPo arimaPredictReqPo = new ArimaPredictReqPo(dataResChildrenPo, type);
                    //循环预测请求
                    nkyService.arimaPredict(arimaPredictReqPo);
                });
        }else if (type.equals("2")){
            //渗流
        }else if (type.equals("3") || type.equals("4") || type.equals("5")){
            cdList.forEach(dataResChildrenPo -> {
                //循环预测请求
                ArimaPredictReqPo arimaPredictReqPoX = new ArimaPredictReqPo(dataResChildrenPo, "3");
                nkyService.arimaPredict(arimaPredictReqPoX);
                ArimaPredictReqPo arimaPredictReqPoY = new ArimaPredictReqPo(dataResChildrenPo, "4");
                nkyService.arimaPredict(arimaPredictReqPoY);
                ArimaPredictReqPo arimaPredictReqPoZ = new ArimaPredictReqPo(dataResChildrenPo, "5");
                nkyService.arimaPredict(arimaPredictReqPoZ);
            });
        }
    }
    @Override
skjcmanager/skjcmanager-service/skjcmanager-nky/src/main/java/cn/gistack/nky/service/impl/HstPredictServiceImpl.java
@@ -3,56 +3,121 @@
import cn.gistack.nky.entity.HstPredict;
import cn.gistack.nky.mapper.HstPredictMapper;
import cn.gistack.nky.requestpojo.HstPredictReqPo;
import cn.gistack.nky.requestpojo.PredictWatersPo;
import cn.gistack.nky.requestpojo.QueryReqPo;
import cn.gistack.nky.resultpojo.DataResChildrenPo;
import cn.gistack.nky.service.IHstPredictService;
import cn.gistack.nky.service.IHsybService;
import cn.gistack.nky.service.INkyService;
import cn.gistack.nky.service.IZtApiService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import lombok.AllArgsConstructor;
import org.springblade.core.mp.support.Condition;
import org.springblade.core.tool.utils.ObjectUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
@AllArgsConstructor
@Service
public class HstPredictServiceImpl extends ServiceImpl<HstPredictMapper, HstPredict> implements IHstPredictService {
    @Autowired
    private  INkyService nkyService;
    @Autowired
    private  IZtApiService ztApiService;
    @Autowired
    private  IHsybService hsybService;
    private final INkyService nkyService;
    private final IZtApiService ztApiService;
    @Override
    public void getData(String type) {
        List<DataResChildrenPo> cdList = getCdList(type);
        cdList.forEach(dataResChildrenPo -> {
        List<DataResChildrenPo> collect = cdList.stream().filter(item -> item.getRes_cd().equals("42011640018") || item.getRes_cd().equals("42128140006")).collect(Collectors.toList());
        collect.forEach(dataResChildrenPo -> {
            //循环请求预测结果
            QueryReqPo queryReqPo = new QueryReqPo(dataResChildrenPo,type);
            QueryReqPo queryReqPo = new QueryReqPo(dataResChildrenPo, type);
            //请求预测结果
            HstPredict hstPredict = nkyService.hstQuery(queryReqPo);
            if (hstPredict != null){
            if (hstPredict != null) {
                //存储预测结果至数据库
                save(hstPredict);
            }
        });
    }
    private String resCd = "";
    @Override
    public void predictData(String type) {
        List<DataResChildrenPo> cdList = getCdList(type);
        cdList.forEach(dataResChildrenPo -> {
            HstPredictReqPo arimaPredictReqPo = new HstPredictReqPo(dataResChildrenPo, type);
            //循环预测请求
            nkyService.hstPredict(arimaPredictReqPo);
        });
        //暂时筛选出这两个水库的数据
        List<DataResChildrenPo> collect = cdList.stream().filter(item -> item.getRes_cd().equals("42011640018") || item.getRes_cd().equals("42128140006")).collect(Collectors.toList());
        if (type.equals("1")){
            //渗压
            collect.forEach(dataResChildrenPo -> {
                //所有水库请求预报数据
                if (!resCd.equals(dataResChildrenPo.getRes_cd())) {
                    //请求预报水位
                    List<List<String>> future = hsybService.getFuture(dataResChildrenPo.getRes_cd());
                    resCd = dataResChildrenPo.getRes_cd();
                    if (future != null && future.size() > 0) {
                        List<PredictWatersPo> po = new ArrayList<>();
                        future.forEach(item -> {
                            PredictWatersPo predictWatersPo = new PredictWatersPo();
                            //设置时间
                            predictWatersPo.setTime(item.get(0));
                            //设置预测水位
                            predictWatersPo.setValue(Double.parseDouble(item.get(2)));
                            po.add(predictWatersPo);
                        });
                        HstPredictReqPo arimaPredictReqPo = new HstPredictReqPo(dataResChildrenPo, type,po);
                        //循环预测请求
                        nkyService.hstPredict(arimaPredictReqPo);
                    }
                }
            });
        }else if (type.equals("2")){
            //渗流
        }else if (type.equals("3") || type.equals("4") || type.equals("5")){
            collect.forEach(dataResChildrenPo -> {
                //所有水库请求预报数据
                if (!resCd.equals(dataResChildrenPo.getRes_cd())) {
                    //请求预报水位
                    List<List<String>> future = hsybService.getFuture(dataResChildrenPo.getRes_cd());
                    resCd = dataResChildrenPo.getRes_cd();
                    if (future != null && future.size() > 0) {
                        List<PredictWatersPo> po = new ArrayList<>();
                        future.forEach(item -> {
                            PredictWatersPo predictWatersPo = new PredictWatersPo();
                            //设置时间
                            predictWatersPo.setTime(item.get(0));
                            //设置预测水位
                            predictWatersPo.setValue(Double.parseDouble(item.get(2)));
                            po.add(predictWatersPo);
                        });
                        //循环预测请求(位移一起请求减少请求次数)
                        HstPredictReqPo arimaPredictReqPoX = new HstPredictReqPo(dataResChildrenPo, "3",po);
                        nkyService.hstPredict(arimaPredictReqPoX);
                        HstPredictReqPo arimaPredictReqPoY= new HstPredictReqPo(dataResChildrenPo, "4",po);
                        nkyService.hstPredict(arimaPredictReqPoY);
                        HstPredictReqPo arimaPredictReqPoZ = new HstPredictReqPo(dataResChildrenPo, "5",po);
                        nkyService.hstPredict(arimaPredictReqPoZ);
                    }
                }
            });
        }
        resCd = "";
    }
    @Override
    public boolean save(HstPredict entity) {
        if (ObjectUtil.isEmpty(entity.getCreateTime())){
        if (ObjectUtil.isEmpty(entity.getCreateTime())) {
            return false;
        }
@@ -64,25 +129,25 @@
        List<HstPredict> list = list(Condition.getQueryWrapper(params));
        if (list.size()>0){
        if (list.size() > 0) {
            return false;
        }else {
        } else {
            return super.save(entity);
        }
    }
    public  List<DataResChildrenPo> getCdList(String type){
    public List<DataResChildrenPo> getCdList(String type) {
        List<DataResChildrenPo> cdList = new ArrayList<>();
        if (type.equals("1")){
        if (type.equals("1")) {
            //获取渗压测点
            cdList = ztApiService.getSy();
        }else if (type.equals("2")){
        } else if (type.equals("2")) {
            //获取渗流测点
            return null;
        }else if (type.equals("3") || type.equals("4") || type.equals("5")){
        } else if (type.equals("3") || type.equals("4") || type.equals("5")) {
            //获取位移测点
            cdList = ztApiService.getWy();
        }else {
        } else {
            return null;
        }
        return cdList;
skjcmanager/skjcmanager-service/skjcmanager-nky/src/main/java/cn/gistack/nky/service/impl/HsybServiceImpl.java
New file
@@ -0,0 +1,69 @@
package cn.gistack.nky.service.impl;
import cn.gistack.common.utils.CommonUtil;
import cn.gistack.nky.resultpojo.HsybGetFuturePo;
import cn.gistack.nky.service.IHsybService;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import lombok.AllArgsConstructor;
import org.springblade.core.tool.utils.DateUtil;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.MediaType;
import org.springframework.stereotype.Service;
import org.springframework.web.client.RestTemplate;
import java.util.List;
import java.util.stream.Collectors;
@Service
@AllArgsConstructor
public class HsybServiceImpl implements IHsybService {
    private static String GET_FUTURE = "https://sk.hubeishuiyi.cn/hsybApi/api/fh-admin/skkr/getFuture";
    private static String AUTHORIZATION = "Bearer eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX25hbWUiOiJBRE1JTiIsIlVzZXJJZCI6IjEiLCJzY29wZSI6WyJhbGwiXSwiVXNlclJlYWxOYW1lIjoi6LaF57qn566h55CG5ZGYIiwiVXNlclh6cWhkbSI6IjQyMDUiLCJleHAiOjI1MTk3NzIwMTAsImp0aSI6ImExNTcxYzk1LTBkNjMtNDkyYi1iOWEyLTE2ZTIzNTQ5ZTY1ZiIsImNsaWVudF9pZCI6InVzZXItc2VydmljZSJ9.ebNVZrw9LbhKaj2w6RR8b2wccQiDkhvBeq79SxxCK-yWiOlIFqBkotTN4TNJg8umcpyYvLILwvqXWRJhffEtgi25sX2y6MqLIWM4kMZ9d8ptdnSmTpBPhltSiQOM0KFa1kl5nSDCBwYOLn-pESJglam76cjpgZNoC88x3iNHacdiXDItY0rtY85HrQ26uyJu9UovKtmYmZRHsIbGMpDta5Q1p4vfaCIr-YUayDrCweZJiQDEEcOSpWJ7O7RMk3pRkX_4UmPHFzrOI2lMp1jQIhxnSTE7EVAz_4z8h8r46muSkpF54Ic4XSawHKqdSLHx8T05LB0MpvOzWMPS6c1uHA";
    @Override
    public List<List<String>> getFuture(String resCd) {
        HsybGetFuturePo hsybGetFuturePo  = apiRequest(GET_FUTURE, resCd);
        if (hsybGetFuturePo != null && hsybGetFuturePo.getRespCode().equals("200")){
            List<List<String>> data = hsybGetFuturePo.getData();
            //过滤空值数据,过滤过去时间
            List<List<String>> collect =
                data.stream().filter(item -> item.get(0) != null).filter(item -> CommonUtil.strToDate(item.get(0)).after(DateUtil.now())).collect(Collectors.toList());
            return collect;
        }else {
            return null;
        }
    }
    public HsybGetFuturePo apiRequest(String url, String jsonparams){
//        Long param = Long.parseLong(jsonparams);
        System.out.println("请求参数:"+ jsonparams);
        // 声明一个header变量
        HttpHeaders headers = new HttpHeaders();
        // 设置为json格式
        MediaType mediaType = MediaType.parseMediaType("application/json;charset=utf-8");
        headers.setContentType(mediaType);
        //设置请求头
        headers.set("Authorization",AUTHORIZATION);
        headers.add("Accept", MediaType.APPLICATION_JSON.toString());
        HttpEntity<String> httpEntity = new HttpEntity(jsonparams, headers);
        RestTemplate template = new RestTemplate();
        try {
            HsybGetFuturePo hsybGetFuturePo = template.postForObject(url, httpEntity, HsybGetFuturePo.class);
            System.out.println(hsybGetFuturePo.toString());
            return hsybGetFuturePo;
        }catch (Exception e){
            System.out.println(e);
        }
        return null;
    }
}
skjcmanager/skjcmanager-service/skjcmanager-nky/src/main/java/cn/gistack/nky/service/impl/ZtApiServiceImpl.java
@@ -5,6 +5,7 @@
import cn.gistack.nky.resultpojo.DataResPo;
import cn.gistack.nky.resultpojo.ZtResultPo;
import cn.gistack.nky.service.IZtApiService;
import com.alibaba.fastjson.JSONObject;
import org.springblade.core.tool.utils.ObjectUtil;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
@@ -26,6 +27,8 @@
 */
@Service
public class ZtApiServiceImpl implements IZtApiService {
    private static final String API_KEY = "F1DBECD719108635189480CF60E6553ADB3109616426BD537F25A430DFC613B491A025C4A51E77FD08C6E5B7CBE05917A461286E7B6D69F1AB1B14F946149D2065B0C675F8FEDF4B9B05C1496881BC5A";
    /**
     * 实时渗压监测
@@ -71,7 +74,7 @@
        // 声明一个header变量
        HttpHeaders headers = new HttpHeaders();
        // 设置apikey
        headers.set("apikey","F1DBECD719108635189480CF60E6553ADB3109616426BD537F25A430DFC613B491A025C4A51E77FD08C6E5B7CBE05917A461286E7B6D69F1AB1B14F946149D2065B0C675F8FEDF4B9B05C1496881BC5A");
        headers.set("apikey",API_KEY);
        HttpEntity<String> httpEntity = new HttpEntity(null, headers);
@@ -103,7 +106,7 @@
        // 声明一个header变量
        HttpHeaders headers = new HttpHeaders();
        // 设置apikey
        headers.set("apikey","F1DBECD719108635189480CF60E6553ADB3109616426BD537F25A430DFC613B491A025C4A51E77FD08C6E5B7CBE05917A461286E7B6D69F1AB1B14F946149D2065B0C675F8FEDF4B9B05C1496881BC5A");
        headers.set("apikey",API_KEY);
        HttpEntity<String> httpEntity = new HttpEntity(null, headers);
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/damSecurity/controller/DamSecurityController.java
New file
@@ -0,0 +1,54 @@
package cn.gistack.sm.damSecurity.controller;
import cn.gistack.sm.damSecurity.service.IDamSecurityService;
import cn.gistack.sm.damSecurity.vo.DamSecurityStatistics;
import cn.gistack.sm.exam.entity.ExamPlan;
import com.baomidou.mybatisplus.core.metadata.IPage;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springblade.core.boot.ctrl.BladeController;
import org.springblade.core.mp.support.Condition;
import org.springblade.core.mp.support.Query;
import org.springblade.core.tool.api.R;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
@Slf4j
@Api(tags = "大坝安全统计")
@RestController
@RequestMapping("/damSecurity/damSecurity")
@AllArgsConstructor
public class DamSecurityController extends BladeController {
    private final IDamSecurityService damSecurityService;
    /**
     * 大坝安全监测状况统计
     * @param damSecurityStatistics
     * @return
     */
    @ApiOperation(value = "大坝安全统计-大坝安全监测状况统计", notes = "大坝安全统计-大坝安全监测状况统计")
    @GetMapping(value = "/singleRegionCount")
    public R singleRegionCount(DamSecurityStatistics damSecurityStatistics) {
        DamSecurityStatistics data =  damSecurityService.getSingleRegionCount(damSecurityStatistics);
        return R.data(data);
    }
    /**
     * 大坝安全监测区域统计
     * @param damSecurityStatistics
     * @return
     */
    @ApiOperation(value = "大坝安全统计-大坝安全监测区域统计", notes = "大坝安全统计-大坝安全监测区域统计")
    @GetMapping(value = "/listRegionCount")
    public R listRegionCount(DamSecurityStatistics damSecurityStatistics) {
        List<DamSecurityStatistics> list =  damSecurityService.listRegionCount(damSecurityStatistics);
        return R.data(list);
    }
}
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/damSecurity/mapper/DamSecurityMapper.java
New file
@@ -0,0 +1,16 @@
package cn.gistack.sm.damSecurity.mapper;
import cn.gistack.sm.damSecurity.vo.DamSecurityStatistics;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;
import java.util.List;
@Repository
public interface DamSecurityMapper {
    DamSecurityStatistics getSingleRegionCount(@Param("dam") DamSecurityStatistics damSecurityStatistics);
    List<DamSecurityStatistics> listRegionCount(@Param("dam") DamSecurityStatistics damSecurityStatistics);
}
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/damSecurity/mapper/DamSecurityMapper.xml
New file
@@ -0,0 +1,189 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.gistack.sm.damSecurity.mapper.DamSecurityMapper">
    <select id="getSingleRegionCount" resultType="cn.gistack.sm.damSecurity.vo.DamSecurityStatistics">
        SELECT allNum,errorNum,AllNum-errorNum normalNum,aab."ad_name" adName,aab."guid" adCode FROM
            (
                SELECT
                    (
                        SELECT count(*) FROM
                            (
                                SELECT
                                    a."guid",
                                    a."name",
                                    a."eng_scal",
                                    case when b."ad_grad" = 4 THEN b."ad_code" ELSE NULL END AS "town_ad_code",
                                    case when b."ad_grad" = 4 THEN b."ad_name" ELSE NULL END AS "town_ad_name",
                                    case when b."ad_grad" = 4 THEN b."order_id" ELSE NULL END AS "town_order_id",
                                    case when b."ad_grad" = 3 THEN b."ad_code" when c."ad_grad" = 3 THEN c."ad_code" END AS "county_ad_code",
                                    case when b."ad_grad" = 3 THEN b."ad_name"when c."ad_grad" = 3 THEN C."ad_name" END AS "county_ad_name",
                                    case when b."ad_grad" = 3 THEN b."order_id"when c."ad_grad" = 3 THEN C."order_id" END AS "county_order_id",
                                    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 "city_ad_code",
                                    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 "city_ad_name",
                                    case when b."ad_grad" = 2 THEN b."order_id" when c."ad_grad" = 2 THEN c."order_id"ELSE d."order_id" END AS "city_order_id",
                                    case when b."ad_grad" = 1 THEN b."ad_code"when c."ad_grad" = 1 THEN c."ad_code"when d."ad_grad" = 1 THEN d."ad_code"ELSE e."ad_code" END AS "province_ad_code",
                                    case when b."ad_grad" = 1 THEN b."ad_name"when c."ad_grad" = 1 THEN c."ad_name"when d."ad_grad" = 1 THEN d."ad_name"ELSE e."ad_name" END AS "province_ad_name",
                                    case when b."ad_grad" = 1 THEN b."order_id"when c."ad_grad" = 1 THEN c."order_id" when d."ad_grad" = 1 THEN d."order_id"ELSE e."order_id" END AS "province_order_id"
                                FROM sjzt_md."att_res_base" a
                                         LEFT JOIN (
                                             SELECT "res_cd", "sys_resource"FROM
                                                        (SELECT b."guid" as "res_cd", 'sy' as "sys_resource" FROM sjzt_ods."dsm_spg_pztb" a LEFT JOIN SJZT_MD."att_res_base" b on a."rscd" = b."res_reg_code"
                                                         UNION
                                                         SELECT  b."guid" as "res_cd", 'sy' as "sys_resource" FROM  sjzt_ods."dsm_spg_spprmp" a  LEFT JOIN SJZT_MD."att_res_base" b on a."rscd" = b."res_reg_code") WHERE "res_cd" is not null) f ON a."guid" = f."res_cd"
                                         LEFT JOIN (
                                             SELECT "res_cd", "sys_resource" FROM (SELECT b."guid" as "res_cd", 'sl' as "sys_resource" FROM sjzt_ods."dsm_spg_spqnmp" a LEFT JOIN SJZT_MD."att_res_base" b on a."rscd" = b."res_reg_code" group by b."guid") WHERE "res_cd" is not null) G on a."guid" = g."res_cd"
                                         LEFT JOIN (
                                             SELECT "res_cd", "sys_resource" FROM (SELECT b."guid" as "res_cd",  'wy' as "sys_resource" FROM (SELECT "station_code" from sjzt_md."att_mqtt_calc_data" group by "station_code") a  LEFT JOIN SJZT_MD."att_res_base" b on substr(a."station_code",0,length(a."station_code")-2) = b."guid" group by b."guid") WHERE "res_cd" is not null) h ON a."guid" = h."res_cd"
                                         LEFT JOIN sjzt_md."att_ad_base" b ON a."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"
                                         LEFT JOIN sjzt_md."att_ad_base" e ON d."p_ad_code" = e."guid"
                                where (f."res_cd" is not null OR g."res_cd" is not null OR h."res_cd" is not null)
                            ) baseRes
                                LEFT JOIN SJZT_MD."att_ad_base" aab ON aab."guid" = baseRes."town_ad_code"
                                LEFT JOIN SJZT_MD."att_ad_base" aa ON aab."p_ad_code" = aa."ad_code"
                                LEFT JOIN SJZT_MD."att_ad_base" ab ON aa."p_ad_code" = ab."ad_code"
                                LEFT JOIN SJZT_MD."att_ad_base" ac ON ab."p_ad_code" = ac."ad_code"
                                where 1=1
                        <if test="dam.adCode != null and dam.adCode != '' ">
                            AND (aab."ad_code" =#{dam.adCode}  or aa."ad_code" = #{dam.adCode} or ab."ad_code" = #{dam.adCode} or ac."ad_code" = #{dam.adCode})
                        </if>
                        ) AllNum,
                    (
                        SELECT COUNT(*)
                        FROM (SELECT distinct DAM_ID FROM NKY_ALARM_GET NAG
                                        LEFT JOIN SJZT_MD."att_res_base" arb ON arb."guid" = NAG.DAM_ID
                                        LEFT JOIN SJZT_MD."att_ad_base" aab ON aab."guid" = arb."interior_ad_guid"
                                        LEFT JOIN SJZT_MD."att_ad_base" aa ON aab."p_ad_code" = aa."ad_code"
                                        LEFT JOIN SJZT_MD."att_ad_base" ab ON aa."p_ad_code" = ab."ad_code"
                                         LEFT JOIN SJZT_MD."att_ad_base" ac ON ab."p_ad_code" = ac."ad_code"
                        WHERE 1=1
                            <if test="dam.adCode != null and dam.adCode != '' ">
                                and (aab."ad_code" =#{dam.adCode}  or aa."ad_code" = #{dam.adCode} or ab."ad_code" = #{dam.adCode} or ac."ad_code" = #{dam.adCode})
                            </if>
                        )) errorNum
            ),SJZT_MD."att_ad_base" aab
            where 1=1
        <if test="dam.adCode != null and dam.adCode != '' ">
            and aab."guid" = #{dam.adCode}
        </if>
    </select>
    <select id="listRegionCount" resultType="cn.gistack.sm.damSecurity.vo.DamSecurityStatistics">
        SELECT allNum,errorNum, allNum-errorNum normalNum,adName,adCode FROM
        (
        SELECT
        (
        SELECT COUNT(*) FROM
        (
        SELECT
        a."guid",
        a."name",
        a."eng_scal",
        case when b."ad_grad" = 4 THEN b."ad_code" ELSE NULL END AS "town_ad_code",
        case when b."ad_grad" = 4 THEN b."ad_name" ELSE NULL END AS "town_ad_name",
        case when b."ad_grad" = 4 THEN b."order_id" ELSE NULL END AS "town_order_id",
        case when b."ad_grad" = 3 THEN b."ad_code"
        when c."ad_grad" = 3 THEN c."ad_code" END AS "county_ad_code",
        case when b."ad_grad" = 3 THEN b."ad_name"
        when c."ad_grad" = 3 THEN C."ad_name" END AS "county_ad_name",
        case when b."ad_grad" = 3 THEN b."order_id"
        when c."ad_grad" = 3 THEN C."order_id" END AS "county_order_id",
        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 "city_ad_code",
        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 "city_ad_name",
        case when b."ad_grad" = 2 THEN b."order_id"
        when c."ad_grad" = 2 THEN c."order_id"
        ELSE d."order_id" END AS "city_order_id",
        case when b."ad_grad" = 1 THEN b."ad_code"
        when c."ad_grad" = 1 THEN c."ad_code"
        when d."ad_grad" = 1 THEN d."ad_code"
        ELSE e."ad_code" END AS "province_ad_code",
        case when b."ad_grad" = 1 THEN b."ad_name"
        when c."ad_grad" = 1 THEN c."ad_name"
        when d."ad_grad" = 1 THEN d."ad_name"
        ELSE e."ad_name" END AS "province_ad_name",
        case when b."ad_grad" = 1 THEN b."order_id"
        when c."ad_grad" = 1 THEN c."order_id"
        when d."ad_grad" = 1 THEN d."order_id"
        ELSE e."order_id" END AS "province_order_id"
        FROM sjzt_md."att_res_base" a
        LEFT JOIN (SELECT
        "res_cd",
        "sys_resource"
        FROM
        (SELECT
        b."guid" as "res_cd",
        'sy' as "sys_resource"
        FROM
        sjzt_ods."dsm_spg_pztb" a
        LEFT JOIN SJZT_MD."att_res_base" b on a."rscd" = b."res_reg_code"
        UNION
        SELECT
        b."guid" as "res_cd",
        'sy' as "sys_resource"
        FROM
        sjzt_ods."dsm_spg_spprmp" a
        LEFT JOIN SJZT_MD."att_res_base" b on a."rscd" = b."res_reg_code") WHERE "res_cd" is not null) f ON a."guid" = f."res_cd"
        LEFT JOIN (SELECT
        "res_cd",
        "sys_resource"
        FROM
        (SELECT
        b."guid" as "res_cd",
        'sl' as "sys_resource"
        FROM
        sjzt_ods."dsm_spg_spqnmp" a
        LEFT JOIN SJZT_MD."att_res_base" b on a."rscd" = b."res_reg_code" group by b."guid") WHERE "res_cd" is not null) G on a."guid" = g."res_cd"
        LEFT JOIN (SELECT
        "res_cd",
        "sys_resource"
        FROM
        (SELECT
        b."guid" as "res_cd",
        'wy' as "sys_resource"
        FROM
        (SELECT "station_code" from sjzt_md."att_mqtt_calc_data" group by "station_code") a
        LEFT JOIN SJZT_MD."att_res_base" b on substr(a."station_code",0,length(a."station_code")-2) = b."guid" group by b."guid") WHERE "res_cd" is not null) h ON a."guid" = h."res_cd"
        LEFT JOIN sjzt_md."att_ad_base" b ON a."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"
        LEFT JOIN sjzt_md."att_ad_base" e ON d."p_ad_code" = e."guid"
        where (f."res_cd" is not null OR g."res_cd" is not null OR h."res_cd" is not null)  and (d."ad_code" = aab."guid" or c."ad_code" = aab."guid" or b."ad_code" = aab."guid" )
        )
        ) allNum,
        (
        SELECT COUNT(*)FROM (SELECT distinct DAM_ID FROM NKY_ALARM_GET NAG
        LEFT JOIN SJZT_MD."att_res_base" arb ON arb."guid" = NAG.DAM_ID
        left join SJZT_MD."att_ad_base" b on arb."interior_ad_guid" = b."ad_code"
        left join SJZT_MD."att_ad_base" c on b."p_ad_code" = c."ad_code"
        left join SJZT_MD."att_ad_base" d on c."p_ad_code" = d."ad_code"
        where (d."ad_code" = aab."guid" or c."ad_code" = aab."guid" or b."ad_code" = aab."guid" )
        )) errorNum,
        aab."ad_name" adName , aab."guid" adCode  from SJZT_MD."att_ad_base" aab
        where
        <choose>
            <when test="dam.adCode != null and dam.adCode !='' ">
                "p_ad_code" = #{dam.adCode}
            </when>
            <otherwise>
                "ad_grad" = 2
            </otherwise>
        </choose>
        )
    </select>
</mapper>
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/damSecurity/service/IDamSecurityService.java
New file
@@ -0,0 +1,21 @@
package cn.gistack.sm.damSecurity.service;
import cn.gistack.sm.damSecurity.vo.DamSecurityStatistics;
import java.util.List;
public interface IDamSecurityService {
    /**
     * 查询单行政区下的统计数据
     * @param damSecurityStatistics
     * @return
     */
    DamSecurityStatistics getSingleRegionCount(DamSecurityStatistics damSecurityStatistics);
    /**
     * 查询该行政区下的统计数据
     * @param damSecurityStatistics
     * @return
     */
    List<DamSecurityStatistics> listRegionCount(DamSecurityStatistics damSecurityStatistics);
}
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/damSecurity/service/impl/DamSecurityServiceImpl.java
New file
@@ -0,0 +1,26 @@
package cn.gistack.sm.damSecurity.service.impl;
import cn.gistack.sm.damSecurity.mapper.DamSecurityMapper;
import cn.gistack.sm.damSecurity.service.IDamSecurityService;
import cn.gistack.sm.damSecurity.vo.DamSecurityStatistics;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class DamSecurityServiceImpl implements IDamSecurityService {
    @Autowired
    private DamSecurityMapper damSecurityMapper;
    @Override
    public DamSecurityStatistics getSingleRegionCount(DamSecurityStatistics damSecurityStatistics) {
        return damSecurityMapper.getSingleRegionCount(damSecurityStatistics);
    }
    @Override
    public List<DamSecurityStatistics> listRegionCount(DamSecurityStatistics damSecurityStatistics) {
        return damSecurityMapper.listRegionCount(damSecurityStatistics);
    }
}
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/damSecurity/vo/DamSecurityStatistics.java
New file
@@ -0,0 +1,32 @@
package cn.gistack.sm.damSecurity.vo;
import lombok.Data;
@Data
public class DamSecurityStatistics {
    /**
     * 行政区划编码
     */
    private String adCode;
    /**
     * 行政区划名
     */
    private String adName;
    /**
     * 正常数量
     */
    private Integer normalNum;
    /**
     * 异常数量
     */
    private Integer errorNum;
    /**
     * 总数
     */
    private Integer allNum;
}
skjcmanager/skjcmanager-service/skjcmanager-xxljob/src/main/java/cn/gistack/job/executor/jobhandler/NkyXxlJob.java
@@ -1,8 +1,6 @@
package cn.gistack.job.executor.jobhandler;
import cn.gistack.nky.fegin.INkyClient;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.xxl.job.core.biz.model.ReturnT;
import com.xxl.job.core.handler.annotation.XxlJob;
import com.xxl.job.core.log.XxlJobLogger;
@@ -28,7 +26,7 @@
    private final INkyClient nkyClient;
    /**
     * 南科院请求预测
     * 南科院Arima请求预测
     * @param param
     * @return
     * @throws Exception
@@ -39,16 +37,43 @@
        arimaPredict();
        XxlJobLogger.log("ArimaPredict预测结束...");
        XxlJobLogger.log("开始Hst预测...");
        hstPredict();
        XxlJobLogger.log("Hst预测结束...");
        XxlJobLogger.log("结束任务...");
        return ReturnT.SUCCESS;
    }
    /**
     * 南科院请求预测结果
     * 南科院Hst请求预测
     * @param param
     * @return
     * @throws Exception
     */
    @XxlJob("predictNkyHstDataJobHandler")
    public ReturnT<String> predictNkyHstDataJobHandler(String param){
        XxlJobLogger.log("开始Hst预测...");
        hstPredict();
        XxlJobLogger.log("Hst预测结束...");
        XxlJobLogger.log("结束任务...");
        return ReturnT.SUCCESS;
    }
    /**
     * 南科院Hst请求预测结果
     * @param param
     * @return
     * @throws Exception
     */
    @XxlJob("queryNkyHstDataJobHandler")
    public ReturnT<String> queryNkyHstDataJobHandler(String param){
        XxlJobLogger.log("开始Hst预测结果请求");
        hstQuery();
        XxlJobLogger.log("Hst预测结果请求结束");
        XxlJobLogger.log("结束任务...");
        return ReturnT.SUCCESS;
    }
    /**
     * 南科院Arima请求预测结果
     * @param param
     * @return
     * @throws Exception
@@ -57,23 +82,17 @@
    public ReturnT<String> queryNkyDataJobHandler(String param){
        XxlJobLogger.log("开始Arima预测结果请求");
        arimaQuery();
        XxlJobLogger.log("Arima预测结果请求结束");
        XxlJobLogger.log("开始Hst预测结果请求");
        hstQuery();
        XxlJobLogger.log("Hst预测结果请求结束");
        XxlJobLogger.log("结束任务...");
        return ReturnT.SUCCESS;
    }
    public void arimaPredict(){
        XxlJobLogger.log("渗压预测开始");
        nkyClient.arimaPredictData(SY);
        XxlJobLogger.log("位移预测开始");
        nkyClient.arimaPredictData(X);
        nkyClient.arimaPredictData(Y);
        nkyClient.arimaPredictData(Z);
    }
    public void arimaQuery(){
@@ -83,11 +102,14 @@
        nkyClient.arimaQueryData(Z);
    }
    /**
     * hst预测
     */
    public void hstPredict(){
        XxlJobLogger.log("渗压预测开始");
        nkyClient.hstPredictData(SY);
        XxlJobLogger.log("位移预测开始");
        nkyClient.hstPredictData(X);
        nkyClient.hstPredictData(Y);
        nkyClient.hstPredictData(Z);
    }
    public void hstQuery(){