From d5aef2e06c79541ed003af44e621df7c57fcf2e7 Mon Sep 17 00:00:00 2001
From: xieb <vip_xiaobin810@163.com>
Date: Mon, 29 Jan 2024 16:02:21 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/jtdev' into jtdev

---
 skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/resDataCheck/service/impl/QualityManageDetailServiceImpl.java |   38 ++
 skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/resDataCheck/feign/RulesClient.java                           |    7 
 skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/resDataCheck/controller/QualityManageDetailController.java    |   93 ++++++
 skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/resDataCheck/vo/QualityManageDetailVO.java                    |   15 +
 skjcmanager/skjcmanager-service/skjcmanager-nky/src/main/java/cn/gistack/nky/service/impl/HstPredictServiceImpl.java                     |  271 ++++++++++++------
 skjcmanager/skjcmanager-service-api/skjcmanager-sm-api/src/main/java/cn/gistack/sm/resDataCheck/entity/RulesCondition.java               |    2 
 skjcmanager/skjcmanager-service/skjcmanager-nky/src/main/java/cn/gistack/nky/service/impl/ZtApiServiceImpl.java                          |   36 ++
 skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/resDataCheck/service/IQualityManageDetailService.java         |   15 +
 skjcmanager/skjcmanager-service/skjcmanager-nky/src/main/java/cn/gistack/nky/service/impl/HsybServiceImpl.java                           |   23 +
 skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/resDataCheck/entity/QualityManageDetail.java                  |  100 +++++++
 skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/resDataCheck/mapper/QualityManageMapper.xml                   |    2 
 skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/resDataCheck/service/impl/QualityManageServiceImpl.java       |   11 
 skjcmanager/skjcmanager-service/skjcmanager-nky/src/main/java/cn/gistack/nky/service/impl/NkyServiceImpl.java                            |   33 +
 skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/resDataCheck/mapper/QualityManageDetailMapper.java            |   23 +
 skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/resDataCheck/mapper/QualityManageDetailMapper.xml             |  137 +++++++++
 15 files changed, 697 insertions(+), 109 deletions(-)

diff --git a/skjcmanager/skjcmanager-service-api/skjcmanager-sm-api/src/main/java/cn/gistack/sm/resDataCheck/entity/RulesCondition.java b/skjcmanager/skjcmanager-service-api/skjcmanager-sm-api/src/main/java/cn/gistack/sm/resDataCheck/entity/RulesCondition.java
index c3aac95..533b423 100644
--- a/skjcmanager/skjcmanager-service-api/skjcmanager-sm-api/src/main/java/cn/gistack/sm/resDataCheck/entity/RulesCondition.java
+++ b/skjcmanager/skjcmanager-service-api/skjcmanager-sm-api/src/main/java/cn/gistack/sm/resDataCheck/entity/RulesCondition.java
@@ -64,5 +64,5 @@
 	 * 固定值
 	 */
 	@ApiModelProperty("固定值")
-	private Double fixValue;
+	private String fixValue;
 }
diff --git a/skjcmanager/skjcmanager-service/skjcmanager-nky/src/main/java/cn/gistack/nky/service/impl/HstPredictServiceImpl.java b/skjcmanager/skjcmanager-service/skjcmanager-nky/src/main/java/cn/gistack/nky/service/impl/HstPredictServiceImpl.java
index e57dc68..5979ff0 100644
--- a/skjcmanager/skjcmanager-service/skjcmanager-nky/src/main/java/cn/gistack/nky/service/impl/HstPredictServiceImpl.java
+++ b/skjcmanager/skjcmanager-service/skjcmanager-nky/src/main/java/cn/gistack/nky/service/impl/HstPredictServiceImpl.java
@@ -26,11 +26,11 @@
 @Service
 public class HstPredictServiceImpl extends ServiceImpl<HstPredictMapper, HstPredict> implements IHstPredictService {
 	@Autowired
-	private  INkyService nkyService;
+	private INkyService nkyService;
 	@Autowired
-	private  IZtApiService ztApiService;
+	private IZtApiService ztApiService;
 	@Autowired
-	private  IHsybService hsybService;
+	private IHsybService hsybService;
 
 
 	@Override
@@ -49,7 +49,7 @@
 		});
 	}
 
-	private String resCd = "";
+//	private String resCd = "";
 
 	@Override
 	public void predictData(String type) {
@@ -57,105 +57,196 @@
 		//暂时筛选出这两个水库的数据
 		List<DataResChildrenPo> collect = cdList.stream().filter(item -> item.getRes_cd().equals("42011640018") || item.getRes_cd().equals("42128140006")).collect(Collectors.toList());
 
+		predict(collect,type);
 
-		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")){
-			//渗流
-			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);
-					}
-				}
-			});
+
+//
+//		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")) {
+//			//渗流
+//			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("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);
+//				}
+////				}
+//			});
 
 
 
-		}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);
+//		}
+//		resCd = "";
+	}
 
-						HstPredictReqPo arimaPredictReqPoY= new HstPredictReqPo(dataResChildrenPo, "4",po);
-						nkyService.hstPredict(arimaPredictReqPoY);
-
-						HstPredictReqPo arimaPredictReqPoZ = new HstPredictReqPo(dataResChildrenPo, "5",po);
-						nkyService.hstPredict(arimaPredictReqPoZ);
-					}
-				}
-			});
+	private void predict(List<DataResChildrenPo> collect, String type) {
+		String resCd = "";
+		//无数据直接返回
+		if (collect.size() == 0){
+			return;
 		}
-		resCd = "";
+		List<List<String>> future = new ArrayList<>();
+		if (type.equals("1") || type.equals("2")){
+
+			for (int i = 0; i < collect.size(); i++) {
+				DataResChildrenPo dataResChildrenPo = collect.get(i);
+				String currentResCd = dataResChildrenPo.getRes_cd();
+
+				//第一个水库
+				if (future.size() == 0 && resCd.equals("")){
+					future = hsybService.getFuture(currentResCd);
+					//当前水库
+					resCd = currentResCd;
+				} else if (!resCd.equals(currentResCd)) {
+					//其他水库,获取新的预测数据
+					future = hsybService.getFuture(currentResCd);
+					//更换为新水库
+					resCd = currentResCd;
+				}
+
+				//预测数据构造请求数据
+				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("3") || type.equals("4") || type.equals("5")){
+
+			for (int i = 0; i < collect.size(); i++) {
+				DataResChildrenPo dataResChildrenPo = collect.get(i);
+				String currentResCd = dataResChildrenPo.getRes_cd();
+
+				//第一个水库
+				if (future.size() == 0 && resCd.equals("")){
+					future = hsybService.getFuture(currentResCd);
+					//当前水库
+					resCd = currentResCd;
+				} else if (!resCd.equals(currentResCd)) {
+					//其他水库,获取新的预测数据
+					future = hsybService.getFuture(currentResCd);
+					//更换为新水库
+					resCd = currentResCd;
+				}
+
+				//预测数据构造请求数据
+				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);
+				}
+			}
+		}
 	}
 
 	@Override
 	public List<HstPredictVO> getFutureData(String resCd, String type) {
 		List<HstPredictVO> list = new ArrayList<>();
-		if (type.equals("3")){
-			list = baseMapper.getFutureDataWy(resCd,type);
-		}else {
-			 list = baseMapper.getFutureData(resCd,type);
+		if (type.equals("3")) {
+			list = baseMapper.getFutureDataWy(resCd, type);
+		} else {
+			list = baseMapper.getFutureData(resCd, type);
 		}
 
 
 		list.forEach(hstPredict -> {
-			if (hstPredict.getPredictList() != null){
+			if (hstPredict.getPredictList() != null) {
 				hstPredict.setPredictList(JSON.parse(hstPredict.getPredictList().toString()));
-			}else {
+			} else {
 				hstPredict.setPredictList("[]");
 			}
 			hstPredict.setPreWaterList(JSON.parse(hstPredict.getPreWaterList().toString()));
@@ -173,12 +264,12 @@
 
 		List<HstPredict> list = baseMapper.selectTodayData(entity);
 
-		if (list.size()>0){
+		if (list.size() > 0) {
 			//删除该数据,添加最新数据
 //			baseMapper.deleteById(list.get(0));
 //			return super.save(entity);
-				return false;
-		}else {
+			return false;
+		} else {
 			return super.save(entity);
 		}
 	}
diff --git a/skjcmanager/skjcmanager-service/skjcmanager-nky/src/main/java/cn/gistack/nky/service/impl/HsybServiceImpl.java b/skjcmanager/skjcmanager-service/skjcmanager-nky/src/main/java/cn/gistack/nky/service/impl/HsybServiceImpl.java
index 47c9d08..9500fd4 100644
--- a/skjcmanager/skjcmanager-service/skjcmanager-nky/src/main/java/cn/gistack/nky/service/impl/HsybServiceImpl.java
+++ b/skjcmanager/skjcmanager-service/skjcmanager-nky/src/main/java/cn/gistack/nky/service/impl/HsybServiceImpl.java
@@ -1,9 +1,11 @@
 package cn.gistack.nky.service.impl;
 
 import cn.gistack.common.utils.CommonUtil;
+import cn.gistack.common.utils.SpringContextUtil;
 import cn.gistack.nky.resultpojo.HsybGetFuturePo;
 import cn.gistack.nky.service.IHsybService;
 import lombok.AllArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
 import org.springblade.core.tool.utils.DateUtil;
 import org.springframework.http.HttpEntity;
 import org.springframework.http.HttpHeaders;
@@ -18,11 +20,12 @@
 
 @Service
 @AllArgsConstructor
+@Slf4j
 public class HsybServiceImpl implements IHsybService {
 
 	private static String ONLINE = "http://10.42.7.148:50001";
 	private static String LOCAL = "https://sk.hubeishuiyi.cn";
-	private static String GET_FUTURE = ONLINE + "/hsybApi/api/fh-admin/skkr/getFuture";
+	private static String GET_FUTURE =  "/hsybApi/api/fh-admin/skkr/getFuture";
 
 	private static String AUTHORIZATION = "Bearer eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX25hbWUiOiJBRE1JTiIsIlVzZXJJZCI6IjEiLCJzY29wZSI6WyJhbGwiXSwiVXNlclJlYWxOYW1lIjoi6LaF57qn566h55CG5ZGYIiwiVXNlclh6cWhkbSI6IjQyMDUiLCJleHAiOjI1MTk3NzIwMTAsImp0aSI6ImExNTcxYzk1LTBkNjMtNDkyYi1iOWEyLTE2ZTIzNTQ5ZTY1ZiIsImNsaWVudF9pZCI6InVzZXItc2VydmljZSJ9.ebNVZrw9LbhKaj2w6RR8b2wccQiDkhvBeq79SxxCK-yWiOlIFqBkotTN4TNJg8umcpyYvLILwvqXWRJhffEtgi25sX2y6MqLIWM4kMZ9d8ptdnSmTpBPhltSiQOM0KFa1kl5nSDCBwYOLn-pESJglam76cjpgZNoC88x3iNHacdiXDItY0rtY85HrQ26uyJu9UovKtmYmZRHsIbGMpDta5Q1p4vfaCIr-YUayDrCweZJiQDEEcOSpWJ7O7RMk3pRkX_4UmPHFzrOI2lMp1jQIhxnSTE7EVAz_4z8h8r46muSkpF54Ic4XSawHKqdSLHx8T05LB0MpvOzWMPS6c1uHA";
 
@@ -43,8 +46,20 @@
 
 	public HsybGetFuturePo apiRequest(String url, String jsonparams) {
 
-//		Long param = Long.parseLong(jsonparams);
-		System.out.println("请求参数:" + jsonparams);
+		// 获取环境
+		String activeProfile = SpringContextUtil.getActiveProfile();
+		if (activeProfile.equals("dev")) {
+			url = LOCAL+ url ;
+		}
+		if (activeProfile.equals("prod")) {
+			url = ONLINE+ url ;
+		}
+		if (activeProfile.equals("test")) {
+			url = ONLINE + url;
+		}
+
+
+		log.info("预测水位请求参数:" + jsonparams);
 		// 声明一个header变量
 		HttpHeaders headers = new HttpHeaders();
 		// 设置为json格式
@@ -58,7 +73,7 @@
 		RestTemplate template = new RestTemplate();
 		try {
 			HsybGetFuturePo hsybGetFuturePo = template.postForObject(url, httpEntity, HsybGetFuturePo.class);
-			System.out.println(hsybGetFuturePo.toString());
+			log.info("预测水位返回结果:" + hsybGetFuturePo.toString());
 			return hsybGetFuturePo;
 		} catch (Exception e) {
 			System.out.println(e);
diff --git a/skjcmanager/skjcmanager-service/skjcmanager-nky/src/main/java/cn/gistack/nky/service/impl/NkyServiceImpl.java b/skjcmanager/skjcmanager-service/skjcmanager-nky/src/main/java/cn/gistack/nky/service/impl/NkyServiceImpl.java
index 31a155d..4b43aa8 100644
--- a/skjcmanager/skjcmanager-service/skjcmanager-nky/src/main/java/cn/gistack/nky/service/impl/NkyServiceImpl.java
+++ b/skjcmanager/skjcmanager-service/skjcmanager-nky/src/main/java/cn/gistack/nky/service/impl/NkyServiceImpl.java
@@ -1,5 +1,6 @@
 package cn.gistack.nky.service.impl;
 
+import cn.gistack.common.utils.SpringContextUtil;
 import cn.gistack.nky.entity.AlarmGet;
 import cn.gistack.nky.entity.ArimaPredict;
 import cn.gistack.nky.entity.HstPredict;
@@ -9,6 +10,7 @@
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import lombok.AllArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
 import org.springframework.http.*;
 import org.springframework.stereotype.Service;
 import org.springframework.web.client.RestTemplate;
@@ -24,25 +26,26 @@
  */
 @Service
 @AllArgsConstructor
+@Slf4j
 public class NkyServiceImpl implements INkyService {
 
 
 	private static final String API_PREFIX = "http://10.42.7.146:9503/";
 	private static final String LOCAL_API_PREFIX = "https://sk.hubeishuiyi.cn/warnIp/";
 	// ARIMA预测接口URL
-	private static final String ARIMA_PREDICT = API_PREFIX + "predict/arimaPredict";
+	private static final String ARIMA_PREDICT =  "predict/arimaPredict";
 	// ARIMA预测结果接口
-	private static final String ARIMA_QUERY = API_PREFIX+"predict/arimaQuery";
+	private static final String ARIMA_QUERY = "predict/arimaQuery";
 	// HST预测接口URL
-	private static final String HST_PREDICT =API_PREFIX+ "predict/hstPredict";
+	private static final String HST_PREDICT = "predict/hstPredict";
 	// HST预测结果接口
-	private static final String HST_QUERY =API_PREFIX+ "predict/hstQuery";
+	private static final String HST_QUERY = "predict/hstQuery";
 
 	//按库传输数据接口
-	private static final String ORIGIN_BATCHDATA = API_PREFIX + "origin/batchData";
+	private static final String ORIGIN_BATCHDATA = "origin/batchData";
 
 	//判定异常
-	private static final String ALARM_GET = API_PREFIX+"alarm/get";
+	private static final String ALARM_GET = "alarm/get";
 
 	@Override
 	public Boolean arimaPredict(ArimaPredictReqPo po) {
@@ -106,6 +109,19 @@
 	 * @return
 	 */
 	private JSONObject requestNkyApi(String url, String jsonparams) {
+
+		// 获取环境
+		String activeProfile = SpringContextUtil.getActiveProfile();
+		if (activeProfile.equals("dev")) {
+			url = LOCAL_API_PREFIX+ url ;
+		}
+		if (activeProfile.equals("prod")) {
+			url = API_PREFIX+ url ;
+		}
+		if (activeProfile.equals("test")) {
+			url = API_PREFIX + url;
+		}
+
 		// 声明一个header变量
 		HttpHeaders headers = new HttpHeaders();
 		// 设置为json格式
@@ -114,10 +130,11 @@
 		headers.add("Accept", MediaType.APPLICATION_JSON.toString());
 
 		HttpEntity<String> httpEntity = new HttpEntity(jsonparams, headers);
-		System.out.println("请求参数:"+ jsonparams);
+		log.info("请求地址:"+ url);
+		log.info("请求参数:"+ jsonparams);
 		RestTemplate template = new RestTemplate();
 		String resultStr = template.postForObject(url, httpEntity, String.class);
-		System.out.println(resultStr);
+		log.info("请求结果:"+ resultStr);
 		JSONObject jsonObject = JSONObject.parseObject(resultStr);
 		return jsonObject;
 	}
diff --git a/skjcmanager/skjcmanager-service/skjcmanager-nky/src/main/java/cn/gistack/nky/service/impl/ZtApiServiceImpl.java b/skjcmanager/skjcmanager-service/skjcmanager-nky/src/main/java/cn/gistack/nky/service/impl/ZtApiServiceImpl.java
index b4961a1..b50814f 100644
--- a/skjcmanager/skjcmanager-service/skjcmanager-nky/src/main/java/cn/gistack/nky/service/impl/ZtApiServiceImpl.java
+++ b/skjcmanager/skjcmanager-service/skjcmanager-nky/src/main/java/cn/gistack/nky/service/impl/ZtApiServiceImpl.java
@@ -1,11 +1,13 @@
 package cn.gistack.nky.service.impl;
 
+import cn.gistack.common.utils.SpringContextUtil;
 import cn.gistack.nky.resultpojo.DataBigResultPojo;
 import cn.gistack.nky.resultpojo.DataResChildrenPo;
 import cn.gistack.nky.resultpojo.DataResPo;
 import cn.gistack.nky.resultpojo.ZtResultPo;
 import cn.gistack.nky.service.IZtApiService;
 import com.alibaba.fastjson.JSONObject;
+import lombok.extern.slf4j.Slf4j;
 import org.springblade.core.tool.utils.ObjectUtil;
 import org.springframework.http.HttpEntity;
 import org.springframework.http.HttpHeaders;
@@ -26,6 +28,7 @@
  * @DATE: 2023/7/28 17:16
  */
 @Service
+@Slf4j
 public class ZtApiServiceImpl implements IZtApiService {
 
 	//本地测试
@@ -39,17 +42,17 @@
 	/**
 	 * 实时渗压监测
 	 */
-	private static final String LASTEST_OSMOTIC_PRESSURE =ONLINE +  "/services/1234567890ABCDEFGHIJKLMN/monitor/lastest_osmotic_pressure/api?res_nm=&cd=&city_cd=&county_cd=&pageNo=1&pageSize=9999";
+	private static final String LASTEST_OSMOTIC_PRESSURE = "/services/1234567890ABCDEFGHIJKLMN/monitor/lastest_osmotic_pressure/api?res_nm=&cd=&city_cd=&county_cd=&pageNo=1&pageSize=9999";
 
 	/**
 	 * 位移监测
 	 */
-	private static final String WY_API =ONLINE+ "/services/1234567890ABCDEFGHIJKLMN/monitor/wy/api?res_nm=&cd=&city_cd=&county_cd=&pageNo=1&pageSize=9999";
+	private static final String WY_API ="/services/1234567890ABCDEFGHIJKLMN/monitor/wy/api?res_nm=&cd=&city_cd=&county_cd=&pageNo=1&pageSize=9999";
 
 	/**
 	 * 渗流监测
 	 */
-	private static final String SL_API =ONLINE +  "/services/1234567890ABCDEFGHIJKLMN/monitor/sl/api?res_nm=&cd=&city_cd=&county_cd=&pageNo=1&pageSize=9999";
+	private static final String SL_API ="/services/1234567890ABCDEFGHIJKLMN/monitor/sl/api?res_nm=&cd=&city_cd=&county_cd=&pageNo=1&pageSize=9999";
 
 
 	@Override
@@ -83,6 +86,18 @@
 	}
 
 	private List<DataResChildrenPo> getData(String url, String type, Map<String, Object> params) {
+		// 获取环境
+		String activeProfile = SpringContextUtil.getActiveProfile();
+		if (activeProfile.equals("dev")) {
+			url = LOCAL+ url ;
+		}
+		if (activeProfile.equals("prod")) {
+			url = ONLINE+ url ;
+		}
+		if (activeProfile.equals("test")) {
+			url = ONLINE + url;
+		}
+
 		HttpMethod method;
 		if (type.toLowerCase().equals("get".toLowerCase())) {
 			method = HttpMethod.GET;
@@ -97,6 +112,7 @@
 		HttpEntity<String> httpEntity = new HttpEntity(null, headers);
 
 		RestTemplate template = new RestTemplate();
+		log.info("请求的url为:{}", url);
 		ResponseEntity<ZtResultPo> ztResultPojoResponseEntity = template.exchange(url, method,httpEntity, ZtResultPo.class,params);
 		if (ztResultPojoResponseEntity.getStatusCodeValue() == 200) {
 			List<DataResChildrenPo> children = new ArrayList<>();
@@ -115,6 +131,20 @@
 	}
 
 	private List<DataResPo> getResData(String url, String type, Map<String, Object> params){
+
+		// 获取环境
+		String activeProfile = SpringContextUtil.getActiveProfile();
+		if (activeProfile.equals("dev")) {
+			url = LOCAL+ url ;
+		}
+		if (activeProfile.equals("prod")) {
+			url = ONLINE+ url ;
+		}
+		if (activeProfile.equals("test")) {
+			url = ONLINE + url;
+		}
+
+
 		HttpMethod method;
 		if (type.toLowerCase().equals("get".toLowerCase())) {
 			method = HttpMethod.GET;
diff --git a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/resDataCheck/controller/QualityManageDetailController.java b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/resDataCheck/controller/QualityManageDetailController.java
new file mode 100644
index 0000000..6bb9449
--- /dev/null
+++ b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/resDataCheck/controller/QualityManageDetailController.java
@@ -0,0 +1,93 @@
+package cn.gistack.sm.resDataCheck.controller;
+
+import cn.gistack.sm.resDataCheck.entity.QualityManage;
+import cn.gistack.sm.resDataCheck.entity.QualityManageDetail;
+import cn.gistack.sm.resDataCheck.service.IQualityManageDetailService;
+import cn.gistack.sm.resDataCheck.vo.QualityManageDetailVO;
+import cn.gistack.sm.resDataCheck.vo.QualityManageVO;
+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.*;
+
+import java.util.Arrays;
+
+/**
+ * @Description: 数据规则校验
+ */
+@Slf4j
+@Api(tags = "数据质量管理明细")
+@RestController
+@RequestMapping("/resDataCheck/qualityManageDetail")
+@AllArgsConstructor
+public class QualityManageDetailController extends BladeController {
+
+	private IQualityManageDetailService qualityManageDetailService;
+
+	/**
+	 * 分页列表查询
+	 */
+	@ApiOperation(value = "数据规则校验-分页列表查询", notes = "数据规则校验-分页列表查询")
+	@GetMapping(value = "/list")
+	public R queryPageList(Query query, QualityManageDetailVO qualityManageDetailVO) {
+		Object pageList = qualityManageDetailService.selectCustomizePage(Condition.getPage(query), qualityManageDetailVO);
+		return R.data(pageList);
+	}
+
+	/**
+	 * 添加
+	 *
+	 * @param qualityManageDetail
+	 * @return
+	 */
+	@ApiOperation(value = "数据规则校验-添加", notes = "数据规则校验-添加")
+	@PostMapping(value = "/add")
+	public R add(@RequestBody QualityManageDetail qualityManageDetail) {
+		return R.data(qualityManageDetailService.save(qualityManageDetail));
+	}
+
+	/**
+	 * 编辑
+	 *
+	 * @param QualityManageVO
+	 * @return
+	 */
+	@ApiOperation(value = "数据规则校验-编辑", notes = "数据规则校验-编辑")
+	@RequestMapping(value = "/edit", method = {RequestMethod.PUT, RequestMethod.POST})
+	public R edit(@RequestBody QualityManageDetail QualityManageVO) {
+		return R.data(qualityManageDetailService.updateById(QualityManageVO));
+	}
+
+	/**
+	 * 通过id删除
+	 *
+	 * @param id
+	 * @return
+	 */
+	@ApiOperation(value = "数据规则校验-通过id删除", notes = "数据规则校验-通过id删除")
+	@PostMapping(value = "/delete")
+	public R delete(@RequestParam(name = "id", required = true) String id) {
+		return R.data(qualityManageDetailService.removeById(id));
+	}
+
+	/**
+	 * 批量删除
+	 *
+	 * @param ids
+	 * @return
+	 */
+	@ApiOperation(value = "数据规则校验-批量删除", notes = "数据规则校验-批量删除")
+	@PostMapping(value = "/deleteBatch")
+	public R deleteBatch(@RequestParam(name = "ids", required = true) String ids) {
+		return R.data(qualityManageDetailService.removeByIds(Arrays.asList(ids.split(","))));
+	}
+
+
+
+}
diff --git a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/resDataCheck/entity/QualityManageDetail.java b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/resDataCheck/entity/QualityManageDetail.java
new file mode 100644
index 0000000..a426e4a
--- /dev/null
+++ b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/resDataCheck/entity/QualityManageDetail.java
@@ -0,0 +1,100 @@
+package cn.gistack.sm.resDataCheck.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+import org.springblade.core.mp.base.BaseEntity;
+
+/**
+ * @Description: 水库数据质量管理明细表
+ */
+@Data
+@TableName("SM_RES_DATA_QUALITY_MANAGE_DETAIL")
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@ApiModel(value="SM_RES_DATA_QUALITY_MANAGE_DETAIL对象", description="水库数据质量管理明细表")
+public class QualityManageDetail extends BaseEntity {
+
+	/**
+	 * 水库id
+	 */
+	@ApiModelProperty("水库id")
+	private String resId;
+
+	//水库名称
+	private String resName;
+
+	/**
+	 * 规则id
+	 */
+	@ApiModelProperty("规则id")
+	private String ruleId;
+
+	//规则名称
+	private String ruleName;
+
+	//规则描述
+	private String ruleDescription;
+	/**
+	 * 值
+	 */
+	@ApiModelProperty("值")
+	private String val;
+
+	//是否有闸
+	private String isGate;
+
+	//水库规模
+	private String engScal;
+
+	//是否病险
+	private String isDanger;
+
+	//市编码
+	private String cityCode;
+	private String cityName;
+	private String countyCode;
+	private String countyName;
+	private String townCode;
+	private String townName;
+
+	//注册登记号
+	private String resRegCode;
+
+	//实时水位
+	private String rz;
+
+	//堰顶高程
+	private String tbWeirTopElevation;
+
+	//主汛期限制水位
+	private String tbFlseLimStag;
+
+	//正常蓄水位
+	private String tbNormPoolStag;
+
+
+	//控制运行水位
+	private String tbControlZ;
+
+
+	//设计洪水位
+	private String tbDesFlStag;
+
+
+	//校核洪水位
+	private String tbCheckFlStag;
+
+
+	//坝顶高程
+	private String tbDamTopElevation;
+
+	//死水位
+	private String tbDeadStag;
+
+	//备注
+	private String remark;
+}
diff --git a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/resDataCheck/feign/RulesClient.java b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/resDataCheck/feign/RulesClient.java
index b2533db..e9cef93 100644
--- a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/resDataCheck/feign/RulesClient.java
+++ b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/resDataCheck/feign/RulesClient.java
@@ -50,7 +50,7 @@
 		String retStr = "-1";
 		switch (key) {
 			case "EQUAL": //等于
-				retStr = " is null OR = '' ";
+				retStr = " is null";
 				break;
 			case "UNEQUAL": //不等于
 				retStr = " is not null ";
@@ -273,7 +273,10 @@
 		varStr = "concat(" + varStr +") AS val";
 
 		if (StringUtil.isNotBlank(rules.getIsGate())) {
-			sqlStr += " and a.\"is_gate\" = " + rules.getIsGate();
+
+			String gateStr = rules.getIsGate().equals("1") ?"'有闸水库'":"'无闸水库'";
+
+			sqlStr += " and a.\"is_gate\" = " + gateStr;
 		}
 
 		// 拼接条件有问题,不操作
diff --git a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/resDataCheck/mapper/QualityManageDetailMapper.java b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/resDataCheck/mapper/QualityManageDetailMapper.java
new file mode 100644
index 0000000..03a6103
--- /dev/null
+++ b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/resDataCheck/mapper/QualityManageDetailMapper.java
@@ -0,0 +1,23 @@
+package cn.gistack.sm.resDataCheck.mapper;
+
+import cn.gistack.sm.resDataCheck.entity.QualityManage;
+import cn.gistack.sm.resDataCheck.entity.QualityManageDetail;
+import cn.gistack.sm.resDataCheck.entity.Rules;
+import cn.gistack.sm.resDataCheck.vo.QualityManageDetailVO;
+import cn.gistack.sm.resDataCheck.vo.QualityManageVO;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * @Description: 数据校验规则
+ */
+public interface QualityManageDetailMapper extends BaseMapper<QualityManageDetail> {
+
+	List<QualityManageDetailVO> selectCustomizePage(IPage<QualityManageDetailVO> page, @Param("vo") QualityManageDetailVO qualityManageDetailVO);
+
+
+	Integer saveQualityManageDetail(@Param("rule")Rules rules, @Param("varStr") String varStr, @Param("whereStr") String whereStr);
+}
diff --git a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/resDataCheck/mapper/QualityManageDetailMapper.xml b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/resDataCheck/mapper/QualityManageDetailMapper.xml
new file mode 100644
index 0000000..b4197c6
--- /dev/null
+++ b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/resDataCheck/mapper/QualityManageDetailMapper.xml
@@ -0,0 +1,137 @@
+<?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.resDataCheck.mapper.QualityManageDetailMapper">
+
+
+    <insert id="saveQualityManageDetail">
+
+        insert into
+            SM_RES_DATA_QUALITY_MANAGE_DETAIL
+            (
+                res_id,rule_id,rule_name,rule_description,create_time,update_time,val,
+                is_gate,eng_scal,is_danger,town_code,town_name,county_code,county_name,city_code,city_name,
+                res_reg_code,res_name,rz,tb_weir_top_elevation,tb_flse_lim_stag,tb_norm_pool_stag,tb_control_z,tb_des_fl_stag,tb_dam_top_elevation,tb_dead_stag,remark
+            )
+        select
+            distinct
+            a."guid" as res_id,
+            ${rule.id} AS rule_id,
+            ${rule.name}AS rule_name,
+            ${rule.description}AS rule_description,
+            NOW() AS create_time,
+            NOW() AS update_time,
+            ${varStr},
+            a."is_gate" AS is_gate,
+            a."eng_scal" AS eng_scal,
+            dria."is_danger_res" AS is_danger,
+
+            case when town."ad_grad" = 4 THEN town."ad_code" ELSE NULL END AS town_code,
+            case when town."ad_grad" = 4 THEN town."ad_name" ELSE NULL END AS town_name,
+
+            case when town."ad_grad" = 3 THEN town."ad_code"
+                 when county."ad_grad" = 3 THEN county."ad_code" END AS county_code,
+
+            case when town."ad_grad" = 3 THEN town."ad_name"
+                 when county."ad_grad" = 3 THEN county."ad_name" END AS county_name,
+
+            case when town."ad_grad" = 2 THEN town."ad_code"
+                 when county."ad_grad" = 2 THEN county."ad_code"
+                 ELSE city."ad_code" END AS city_code,
+
+            case when town."ad_grad" = 2 THEN town."ad_name"
+                 when county."ad_grad" = 2 THEN county."ad_name"
+                 ELSE city."ad_name" END AS city_name,
+
+            a."res_reg_code" as res_reg_code,
+            a."name" as res_name,
+            f."rz" as rz,
+            g."tb_weir_top_elevation",
+            d2."tb_flse_lim_stag",
+            c."tb_norm_pool_stag",
+            b."tb_control_z",
+            c."tb_des_fl_stag",
+            h."tb_dam_top_elevation",
+            c."tb_dead_stag",
+            ${rule.description} as remark
+
+            from SJZT_MD."att_res_base" a
+
+                 LEFT JOIN SJZT_MD."att_ad_base" town ON town."guid" = a."interior_ad_guid"
+                 LEFT JOIN SJZT_MD."att_ad_base" county ON county."guid" = town."p_ad_code"
+                 LEFT JOIN SJZT_MD."att_ad_base" city ON city."guid" = county."p_ad_code"
+
+                 left join SJZT_DW."dim_res_info_a" dria ON (dria."guid" = a."guid")
+                 left join SJZT_MD."att_res_danger_manage_special" b on (a."guid" = b."res_guid")
+                 left join SJZT_MD."att_res_stag_char" c on (a."guid" = c."res_guid")
+                 left join SJZT_MD."att_res_flse_lim" d1 on (a."guid" = d1."res_guid" and d1."flood_season_name" = '前汛期')
+                 left join SJZT_MD."att_res_flse_lim" d2 on (a."guid" = d2."res_guid" and d2."flood_season_name" = '中汛期')
+                 left join SJZT_MD."att_res_flse_lim" d3 on (a."guid" = d3."res_guid" and d3."flood_season_name" = '后汛期')
+                 left join SJZT_MD."att_st_base" e on (a."guid" = e."res_guid" and e."is_main_rsvr" = '1')
+                 left join SJZT_MD."st_rsvr_r_last" f on (e."code" = f."stcd")
+                 left join (select tmp."res_guid",max(tmp."tb_weir_top_elevation") "tb_weir_top_elevation" from SJZT_MD."att_res_rsb_norspi" tmp group by tmp."res_guid") g on (a."guid" = g."res_guid")
+                 left join (select tmp2."res_guid",max(tmp2."tb_dam_top_elevation") "tb_dam_top_elevation" from SJZT_MD."att_res_water_block" tmp2 group by tmp2."res_guid") h on (a."guid" = h."res_guid")
+            ${whereStr}
+    </insert>
+
+
+
+
+    <select id="selectCustomizePage" resultType="cn.gistack.sm.resDataCheck.vo.QualityManageDetailVO">
+        SELECT
+            MAX(id) id,
+            RES_ID,
+            MAX(is_gate) is_gate,
+            MAX(eng_scal) eng_scal,
+            MAX(is_danger) is_danger,
+            MAX(town_code) town_code,
+            MAX(town_name) town_name,
+            MAX(county_code)county_code,
+            MAX(county_name)county_name,
+            MAX(city_code) city_code,
+            MAX(city_name) city_name,
+            MAX(res_reg_code) res_reg_code,
+            MAX(res_name) res_name,
+            MAX(rz) rz,
+            MAX(tb_flse_lim_stag) tb_flse_lim_stag,
+            MAX(tb_weir_top_elevation) tb_weir_top_elevation,
+            MAX(tb_norm_pool_stag) tb_norm_pool_stag,
+            MAX(tb_control_z) tb_control_z,
+            MAX(tb_des_fl_stag) tb_des_fl_stag,
+            MAX(tb_dam_top_elevation) tb_dam_top_elevation,
+            MAX(tb_dead_stag) tb_dead_stag,
+            replace(wm_concat(remark),',',';') as remark,
+            MAX(create_time) create_time
+        from YWXT.SM_RES_DATA_QUALITY_MANAGE_DETAIL
+        where
+            1=1
+        <if test="vo.resId != null and vo.resId != ''">
+            AND res_id = #{vo.resId}
+        </if>
+        <if test="vo.resName != null and vo.resName != ''">
+            AND res_name LIKE CONCAT('%', #{vo.resName},'%')
+        </if>
+        <if test="vo.startTime != null and vo.startTime != ''">
+            AND DATE_FORMAT(create_time,'%Y-%m-%d')  &gt;= #{vo.startTime}
+        </if>
+        <if test="vo.endTime != null and vo.endTime !='' ">
+            AND DATE_FORMAT(create_time,'%Y-%m-%d') &lt;= #{vo.endTime}
+        </if>
+        <if test="vo.engScal != null and vo.engScal != ''">
+            and eng_scal = #{vo.engScal}
+        </if>
+        <if test="vo.isDanger != null and vo.isDanger != ''">
+            and is_danger = #{vo.isDanger}
+        </if>
+        <if test="vo.cityCode != null and vo.cityCode != ''">
+            and city_code = #{vo.cityCode}
+        </if>
+        <if test="vo.countyCode != null and vo.countyCode != ''">
+           and county_code = #{vo.countyCode}
+        </if>
+        <if test="vo.townCode != null and vo.townCode != ''">
+            and town_code= #{vo.townCode}
+        </if>
+        GROUP BY
+            RES_ID
+    </select>
+</mapper>
diff --git a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/resDataCheck/mapper/QualityManageMapper.xml b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/resDataCheck/mapper/QualityManageMapper.xml
index 3808f4e..d7bd469 100644
--- a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/resDataCheck/mapper/QualityManageMapper.xml
+++ b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/resDataCheck/mapper/QualityManageMapper.xml
@@ -76,7 +76,7 @@
 
     <insert id="addQualityManage">
         insert into SM_RES_DATA_QUALITY_MANAGE (res_id,rule_id,create_time,update_time,val)
-        select a."guid" as res_id,${ruleId} AS rule_id,NOW() AS create_time,NOW() AS update_time, ${varStr}
+        select distinct a."guid" as res_id,${ruleId} AS rule_id,NOW() AS create_time,NOW() AS update_time, ${varStr}
         from SJZT_MD."att_res_base" a
                  left join SJZT_MD."att_res_danger_manage_special" b on (a."guid" = b."res_guid")
                  left join SJZT_MD."att_res_stag_char" c on (a."guid" = c."res_guid")
diff --git a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/resDataCheck/service/IQualityManageDetailService.java b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/resDataCheck/service/IQualityManageDetailService.java
new file mode 100644
index 0000000..c535fb0
--- /dev/null
+++ b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/resDataCheck/service/IQualityManageDetailService.java
@@ -0,0 +1,15 @@
+package cn.gistack.sm.resDataCheck.service;
+
+import cn.gistack.sm.resDataCheck.entity.QualityManage;
+import cn.gistack.sm.resDataCheck.entity.QualityManageDetail;
+import cn.gistack.sm.resDataCheck.vo.QualityManageDetailVO;
+import cn.gistack.sm.resDataCheck.vo.QualityManageVO;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import org.springblade.core.mp.base.BaseService;
+
+public interface IQualityManageDetailService extends BaseService<QualityManageDetail> {
+	Object selectCustomizePage(IPage<QualityManageDetailVO> page, QualityManageDetailVO qualityManageDetailVO);
+
+
+	Integer saveQualityManageDetail(Long ruleId, String varStr, String whereStr);
+}
diff --git a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/resDataCheck/service/impl/QualityManageDetailServiceImpl.java b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/resDataCheck/service/impl/QualityManageDetailServiceImpl.java
new file mode 100644
index 0000000..1fb8887
--- /dev/null
+++ b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/resDataCheck/service/impl/QualityManageDetailServiceImpl.java
@@ -0,0 +1,38 @@
+package cn.gistack.sm.resDataCheck.service.impl;
+
+import cn.gistack.sm.resDataCheck.entity.QualityManageDetail;
+import cn.gistack.sm.resDataCheck.entity.Rules;
+import cn.gistack.sm.resDataCheck.mapper.QualityManageDetailMapper;
+import cn.gistack.sm.resDataCheck.service.IQualityManageDetailService;
+import cn.gistack.sm.resDataCheck.service.IRulesService;
+import cn.gistack.sm.resDataCheck.vo.QualityManageDetailVO;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import lombok.AllArgsConstructor;
+import org.springblade.core.mp.base.BaseServiceImpl;
+import org.springblade.core.tool.utils.StringUtil;
+import org.springframework.stereotype.Service;
+
+@Service
+@AllArgsConstructor
+public class QualityManageDetailServiceImpl extends BaseServiceImpl<QualityManageDetailMapper, QualityManageDetail> implements IQualityManageDetailService {
+	private final IRulesService rulesService;
+
+	@Override
+	public Object selectCustomizePage(IPage<QualityManageDetailVO> page, QualityManageDetailVO qualityManageDetailVO) {
+
+		if (qualityManageDetailVO.getIsExport() != null && qualityManageDetailVO.getIsExport().equals("1")){
+			return baseMapper.selectCustomizePage(null,qualityManageDetailVO);
+		}
+		return page.setRecords(baseMapper.selectCustomizePage(page, qualityManageDetailVO));
+	}
+
+	@Override
+	public Integer saveQualityManageDetail(Long ruleId, String varStr, String whereStr) {
+		Rules rule = rulesService.getById(ruleId);
+		rule.setName(StringUtil.format("'{}'",rule.getName()));
+		rule.setDescription(StringUtil.format("'{}'",rule.getDescription()));
+
+		return baseMapper.saveQualityManageDetail(rule, varStr, whereStr);
+	}
+}
diff --git a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/resDataCheck/service/impl/QualityManageServiceImpl.java b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/resDataCheck/service/impl/QualityManageServiceImpl.java
index 8ca35b6..7310147 100644
--- a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/resDataCheck/service/impl/QualityManageServiceImpl.java
+++ b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/resDataCheck/service/impl/QualityManageServiceImpl.java
@@ -2,14 +2,21 @@
 
 import cn.gistack.sm.resDataCheck.entity.QualityManage;
 import cn.gistack.sm.resDataCheck.mapper.QualityManageMapper;
+import cn.gistack.sm.resDataCheck.service.IQualityManageDetailService;
 import cn.gistack.sm.resDataCheck.service.IQualityManageService;
 import cn.gistack.sm.resDataCheck.vo.QualityManageVO;
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import lombok.AllArgsConstructor;
 import org.springblade.core.mp.base.BaseServiceImpl;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
 @Service
+@AllArgsConstructor
 public class QualityManageServiceImpl extends BaseServiceImpl<QualityManageMapper, QualityManage> implements IQualityManageService {
+
+	private final IQualityManageDetailService qualityManageDetailService;
+
 	@Override
 	public IPage<QualityManageVO> selectCustomizePage(IPage<QualityManageVO> page, QualityManageVO qualityManageVO) {
 		return page.setRecords(baseMapper.selectCustomizePage(page,qualityManageVO));
@@ -21,7 +28,11 @@
 	}
 
 	@Override
+	@Transactional(rollbackFor = Exception.class)
 	public Integer addQualityManage(Long ruleId, String varStr, String whereStr) {
+
+		qualityManageDetailService.saveQualityManageDetail(ruleId,varStr,whereStr);
+
 		return baseMapper.addQualityManage(ruleId, varStr, whereStr);
 	}
 }
diff --git a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/resDataCheck/vo/QualityManageDetailVO.java b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/resDataCheck/vo/QualityManageDetailVO.java
new file mode 100644
index 0000000..ca1cb2c
--- /dev/null
+++ b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/resDataCheck/vo/QualityManageDetailVO.java
@@ -0,0 +1,15 @@
+package cn.gistack.sm.resDataCheck.vo;
+
+import cn.gistack.sm.resDataCheck.entity.QualityManage;
+import cn.gistack.sm.resDataCheck.entity.QualityManageDetail;
+import lombok.Data;
+import org.bouncycastle.cms.PasswordRecipientId;
+
+@Data
+public class QualityManageDetailVO extends QualityManageDetail {
+	private String startTime;
+	private String endTime;
+
+	private String isExport;
+
+}

--
Gitblit v1.9.3