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(){