From 90cc59400715f3ece6384eddf01cefd8eff449ea Mon Sep 17 00:00:00 2001
From: guoshilong <123456>
Date: Sun, 28 Apr 2024 14:53:27 +0800
Subject: [PATCH] 视频站点设置,南科院初始化

---
 skjcmanager/skjcmanager-service/skjcmanager-nky/src/main/java/cn/gistack/nky/service/INkyService.java                      |   10 
 skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/mapper/AttWmstBaseMapper.java            |   18 +
 skjcmanager/skjcmanager-service-api/skjcmanager-nky-api/src/main/java/cn/gistack/nky/fegin/INkyClientFallback.java         |    5 
 skjcmanager/skjcmanager-service-api/skjcmanager-nky-api/src/main/java/cn/gistack/nky/resultpojo/ZtResult.java              |   16 +
 skjcmanager/skjcmanager-service/skjcmanager-xxljob/src/main/java/cn/gistack/job/executor/jobhandler/NkyXxlJob.java         |   31 ++
 skjcmanager/skjcmanager-auth/src/main/java/cn/gistack/auth/granter/BladeTokenGranter.java                                  |    3 
 skjcmanager/skjcmanager-service/skjcmanager-nky/src/main/java/cn/gistack/nky/service/impl/ZtApiServiceImpl.java            |   86 +++++++
 skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/service/IAttWmstBaseService.java         |   11 +
 skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/vo/AttWmstBaseVO.java                    |    8 
 skjcmanager/skjcmanager-service-api/skjcmanager-nky-api/src/main/java/cn/gistack/nky/resultpojo/ZtResultPo2.java           |   22 ++
 skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/controller/AttWmstBaseController.java    |   39 +++
 skjcmanager/skjcmanager-service-api/skjcmanager-nky-api/src/main/java/cn/gistack/nky/resultpojo/NkyBindDetailResult.java   |   21 +
 skjcmanager/skjcmanager-auth/src/main/java/cn/gistack/auth/granter/AccountPhoneTokenGranter.java                           |   74 ++++++
 skjcmanager/skjcmanager-service-api/skjcmanager-nky-api/src/main/java/cn/gistack/nky/fegin/INkyClient.java                 |    5 
 skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/entity/AttWmstBase.java                  |   93 ++++++++
 skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/mapper/AttWmstBaseMapper.xml             |   11 +
 skjcmanager/skjcmanager-service-api/skjcmanager-nky-api/src/main/java/cn/gistack/nky/resultpojo/ResDamMonitorResult.java   |   24 ++
 skjcmanager/skjcmanager-service-api/skjcmanager-nky-api/src/main/java/cn/gistack/nky/resultpojo/BaseCd.java                |   12 +
 skjcmanager/skjcmanager-service/skjcmanager-nky/src/main/java/cn/gistack/nky/service/IZtApiService.java                    |    8 
 skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/service/impl/AttWmstBaseServiceImpl.java |   22 ++
 skjcmanager/skjcmanager-service/skjcmanager-nky/src/main/java/cn/gistack/nky/service/impl/NkyServiceImpl.java              |   44 +++
 skjcmanager/skjcmanager-service/skjcmanager-nky/src/main/java/cn/gistack/nky/feign/NkyClientImpl.java                      |   93 +++++++-
 22 files changed, 634 insertions(+), 22 deletions(-)

diff --git a/skjcmanager/skjcmanager-auth/src/main/java/cn/gistack/auth/granter/AccountPhoneTokenGranter.java b/skjcmanager/skjcmanager-auth/src/main/java/cn/gistack/auth/granter/AccountPhoneTokenGranter.java
new file mode 100644
index 0000000..4571346
--- /dev/null
+++ b/skjcmanager/skjcmanager-auth/src/main/java/cn/gistack/auth/granter/AccountPhoneTokenGranter.java
@@ -0,0 +1,74 @@
+package cn.gistack.auth.granter;
+
+import cn.gistack.auth.utils.TokenUtil;
+import cn.gistack.common.cache.CacheNames;
+import org.springblade.core.redis.cache.BladeRedis;
+import org.springblade.core.tool.utils.StringUtil;
+import org.springframework.security.authentication.*;
+import org.springframework.security.core.Authentication;
+import org.springframework.security.oauth2.common.exceptions.InvalidGrantException;
+import org.springframework.security.oauth2.common.exceptions.UserDeniedAuthorizationException;
+import org.springframework.security.oauth2.provider.*;
+import org.springframework.security.oauth2.provider.token.AbstractTokenGranter;
+import org.springframework.security.oauth2.provider.token.AuthorizationServerTokenServices;
+
+import java.util.LinkedHashMap;
+import java.util.Map;
+
+/**
+ * 验证码TokenGranter
+ *
+ * @author Chill
+ */
+public class AccountPhoneTokenGranter extends AbstractTokenGranter {
+
+	private static final String GRANT_TYPE = "accountPhone";
+
+	private final AuthenticationManager authenticationManager;
+
+	private BladeRedis bladeRedis;
+
+	public AccountPhoneTokenGranter(AuthenticationManager authenticationManager,
+                                    AuthorizationServerTokenServices tokenServices, ClientDetailsService clientDetailsService, OAuth2RequestFactory requestFactory, BladeRedis bladeRedis) {
+		this(authenticationManager, tokenServices, clientDetailsService, requestFactory, GRANT_TYPE);
+		this.bladeRedis = bladeRedis;
+	}
+
+	protected AccountPhoneTokenGranter(AuthenticationManager authenticationManager, AuthorizationServerTokenServices tokenServices,
+                                       ClientDetailsService clientDetailsService, OAuth2RequestFactory requestFactory, String grantType) {
+		super(tokenServices, clientDetailsService, requestFactory, grantType);
+		this.authenticationManager = authenticationManager;
+	}
+
+	@Override
+	protected OAuth2Authentication getOAuth2Authentication(ClientDetails client, TokenRequest tokenRequest) {
+		Map<String, String> parameters = new LinkedHashMap<String, String>(tokenRequest.getRequestParameters());
+		String phone = parameters.get("username");
+		String password = parameters.get("password");
+		String code = parameters.get("code");
+		// 获取验证码
+		String redisCode = bladeRedis.get(CacheNames.PHONE_KEY + phone);
+		// 判断验证码
+		if (code == null || !StringUtil.equalsIgnoreCase(redisCode, code)) {
+			throw new UserDeniedAuthorizationException(TokenUtil.CAPTCHA_NOT_CORRECT);
+		}
+		// 通过手机号查询用户
+		Authentication userAuth = new UsernamePasswordAuthenticationToken(phone, "CUSTOM_LOGIN_SMS");
+		((AbstractAuthenticationToken) userAuth).setDetails(parameters);
+		try {
+			userAuth = authenticationManager.authenticate(userAuth);
+		}
+		catch (AccountStatusException | BadCredentialsException ase) {
+			//covers expired, locked, disabled cases (mentioned in section 5.2, draft 31)
+			throw new InvalidGrantException(ase.getMessage());
+		}
+		// If the username/password are wrong the spec says we should send 400/invalid grant
+
+		if (userAuth == null || !userAuth.isAuthenticated()) {
+			throw new InvalidGrantException("Could not authenticate user: " + phone);
+		}
+
+		OAuth2Request storedOAuth2Request = getRequestFactory().createOAuth2Request(client, tokenRequest);
+		return new OAuth2Authentication(storedOAuth2Request, userAuth);
+	}
+}
diff --git a/skjcmanager/skjcmanager-auth/src/main/java/cn/gistack/auth/granter/BladeTokenGranter.java b/skjcmanager/skjcmanager-auth/src/main/java/cn/gistack/auth/granter/BladeTokenGranter.java
index a56bce6..6680894 100644
--- a/skjcmanager/skjcmanager-auth/src/main/java/cn/gistack/auth/granter/BladeTokenGranter.java
+++ b/skjcmanager/skjcmanager-auth/src/main/java/cn/gistack/auth/granter/BladeTokenGranter.java
@@ -51,7 +51,8 @@
 		granters.add(new SocialTokenGranter(endpoints.getTokenServices(), endpoints.getClientDetailsService(), endpoints.getOAuth2RequestFactory(), userClient, socialProperties));
 		//单点登录授权模式
 		granters.add(new OAuthTokenGranter(authenticationManager, endpoints.getTokenServices(), endpoints.getClientDetailsService(), endpoints.getOAuth2RequestFactory(), bladeRedis));
-
+		//账户验证码模式
+		granters.add(new AccountPhoneTokenGranter(authenticationManager, endpoints.getTokenServices(), endpoints.getClientDetailsService(), endpoints.getOAuth2RequestFactory(), bladeRedis ));
 		// 组合tokenGranter集合
 		return new CompositeTokenGranter(granters);
 	}
diff --git a/skjcmanager/skjcmanager-service-api/skjcmanager-nky-api/src/main/java/cn/gistack/nky/fegin/INkyClient.java b/skjcmanager/skjcmanager-service-api/skjcmanager-nky-api/src/main/java/cn/gistack/nky/fegin/INkyClient.java
index 216ef02..7c66f27 100644
--- a/skjcmanager/skjcmanager-service-api/skjcmanager-nky-api/src/main/java/cn/gistack/nky/fegin/INkyClient.java
+++ b/skjcmanager/skjcmanager-service-api/skjcmanager-nky-api/src/main/java/cn/gistack/nky/fegin/INkyClient.java
@@ -44,6 +44,8 @@
 
 	String FINISH_TASK = API_PREFIX + "finishTask";
 
+	String INIT_ALGORITHM = API_PREFIX + "initAlgorithm";
+
 	/**
 	 * 获取arima预测结果
 	 * @param type
@@ -101,4 +103,7 @@
 
 	@GetMapping(FINISH_TASK)
 	Boolean finishTask(@RequestParam("taskId") String taskId);
+
+	@PostMapping(INIT_ALGORITHM)
+	void initAlgorithm(@RequestBody List<String> resList);
 }
diff --git a/skjcmanager/skjcmanager-service-api/skjcmanager-nky-api/src/main/java/cn/gistack/nky/fegin/INkyClientFallback.java b/skjcmanager/skjcmanager-service-api/skjcmanager-nky-api/src/main/java/cn/gistack/nky/fegin/INkyClientFallback.java
index 54b8233..2c30a51 100644
--- a/skjcmanager/skjcmanager-service-api/skjcmanager-nky-api/src/main/java/cn/gistack/nky/fegin/INkyClientFallback.java
+++ b/skjcmanager/skjcmanager-service-api/skjcmanager-nky-api/src/main/java/cn/gistack/nky/fegin/INkyClientFallback.java
@@ -69,5 +69,10 @@
 		return null;
 	}
 
+	@Override
+	public void initAlgorithm(List<String> resList) {
+
+	}
+
 
 }
diff --git a/skjcmanager/skjcmanager-service-api/skjcmanager-nky-api/src/main/java/cn/gistack/nky/resultpojo/BaseCd.java b/skjcmanager/skjcmanager-service-api/skjcmanager-nky-api/src/main/java/cn/gistack/nky/resultpojo/BaseCd.java
new file mode 100644
index 0000000..c100395
--- /dev/null
+++ b/skjcmanager/skjcmanager-service-api/skjcmanager-nky-api/src/main/java/cn/gistack/nky/resultpojo/BaseCd.java
@@ -0,0 +1,12 @@
+package cn.gistack.nky.resultpojo;
+
+import lombok.Data;
+
+@Data
+public class BaseCd {
+	private String cd;
+	private String cd_nm;
+	private String ch;
+	private String res_cd;
+	private String cd_type;
+}
diff --git a/skjcmanager/skjcmanager-service-api/skjcmanager-nky-api/src/main/java/cn/gistack/nky/resultpojo/NkyBindDetailResult.java b/skjcmanager/skjcmanager-service-api/skjcmanager-nky-api/src/main/java/cn/gistack/nky/resultpojo/NkyBindDetailResult.java
new file mode 100644
index 0000000..113ede6
--- /dev/null
+++ b/skjcmanager/skjcmanager-service-api/skjcmanager-nky-api/src/main/java/cn/gistack/nky/resultpojo/NkyBindDetailResult.java
@@ -0,0 +1,21 @@
+package cn.gistack.nky.resultpojo;
+
+import lombok.Data;
+
+@Data
+public class NkyBindDetailResult {
+	private String damId;
+	private String pointId;
+	private String type;
+	private String algorithmCategory;
+	private String status;
+	private String forward;
+	private String reverse;
+	private String alarmType;
+	private String reserve1;
+	private String monitoringFrequency;
+	private String canchaNumber;
+	private String firstWater;
+
+
+}
diff --git a/skjcmanager/skjcmanager-service-api/skjcmanager-nky-api/src/main/java/cn/gistack/nky/resultpojo/ResDamMonitorResult.java b/skjcmanager/skjcmanager-service-api/skjcmanager-nky-api/src/main/java/cn/gistack/nky/resultpojo/ResDamMonitorResult.java
new file mode 100644
index 0000000..923b199
--- /dev/null
+++ b/skjcmanager/skjcmanager-service-api/skjcmanager-nky-api/src/main/java/cn/gistack/nky/resultpojo/ResDamMonitorResult.java
@@ -0,0 +1,24 @@
+package cn.gistack.nky.resultpojo;
+
+import lombok.Data;
+
+@Data
+public class ResDamMonitorResult {
+
+	private String code;
+	private String name;
+
+	private String town_ad_code;
+	private String town_ad_name;
+	private String county_ad_code;
+	private String county_ad_name;
+	private String city_ad_code;
+	private String city_ad_name;
+	private String province_ad_code;
+	private String province_ad_name;
+	private String is_sy;
+	private String is_sl;
+	private String is_wy;
+
+
+}
diff --git a/skjcmanager/skjcmanager-service-api/skjcmanager-nky-api/src/main/java/cn/gistack/nky/resultpojo/ZtResult.java b/skjcmanager/skjcmanager-service-api/skjcmanager-nky-api/src/main/java/cn/gistack/nky/resultpojo/ZtResult.java
new file mode 100644
index 0000000..cb37731
--- /dev/null
+++ b/skjcmanager/skjcmanager-service-api/skjcmanager-nky-api/src/main/java/cn/gistack/nky/resultpojo/ZtResult.java
@@ -0,0 +1,16 @@
+package cn.gistack.nky.resultpojo;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class ZtResult {
+
+	private int pageNo;
+	private int pageSize;
+	private int totalCount;
+	private List<ResDamMonitorResult> resultList;
+
+}
diff --git a/skjcmanager/skjcmanager-service-api/skjcmanager-nky-api/src/main/java/cn/gistack/nky/resultpojo/ZtResultPo2.java b/skjcmanager/skjcmanager-service-api/skjcmanager-nky-api/src/main/java/cn/gistack/nky/resultpojo/ZtResultPo2.java
new file mode 100644
index 0000000..8d23fb4
--- /dev/null
+++ b/skjcmanager/skjcmanager-service-api/skjcmanager-nky-api/src/main/java/cn/gistack/nky/resultpojo/ZtResultPo2.java
@@ -0,0 +1,22 @@
+package cn.gistack.nky.resultpojo;
+
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * @PROJECT_NAME: skjcmanager
+ * @DESCRIPTION: 中台返回resultpojo
+ * @USER: aix
+ * @DATE: 2023/7/28 17:21
+ */
+@Data
+public class ZtResultPo2 {
+
+	private List<BaseCd> data;
+
+	private Integer code;
+
+	private String msg;
+
+}
diff --git a/skjcmanager/skjcmanager-service/skjcmanager-nky/src/main/java/cn/gistack/nky/feign/NkyClientImpl.java b/skjcmanager/skjcmanager-service/skjcmanager-nky/src/main/java/cn/gistack/nky/feign/NkyClientImpl.java
index 92bec2c..888a06b 100644
--- a/skjcmanager/skjcmanager-service/skjcmanager-nky/src/main/java/cn/gistack/nky/feign/NkyClientImpl.java
+++ b/skjcmanager/skjcmanager-service/skjcmanager-nky/src/main/java/cn/gistack/nky/feign/NkyClientImpl.java
@@ -2,13 +2,14 @@
 
 import cn.gistack.nky.entity.AlarmGet;
 import cn.gistack.nky.fegin.INkyClient;
-import cn.gistack.nky.service.IAlarmGetService;
-import cn.gistack.nky.service.IArimaPredictService;
-import cn.gistack.nky.service.IHstPredictService;
-import cn.gistack.nky.service.INkyService;
+import cn.gistack.nky.resultpojo.BaseCd;
+import cn.gistack.nky.resultpojo.NkyBindDetailResult;
+import cn.gistack.nky.resultpojo.ResDamMonitorResult;
+import cn.gistack.nky.service.*;
 import cn.gistack.nky.vo.AlarmGetVO;
 import cn.gistack.nky.vo.PageVO;
 import cn.gistack.sm.patrol.feign.PatrolTaskClient;
+import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import lombok.AllArgsConstructor;
@@ -24,7 +25,9 @@
 import org.springframework.web.bind.annotation.RestController;
 import springfox.documentation.annotations.ApiIgnore;
 
+import java.util.Arrays;
 import java.util.List;
+import java.util.stream.Collectors;
 
 @NonDS
 @ApiIgnore
@@ -38,6 +41,7 @@
 	private final IHstPredictService hstPredictService;
 	private final IAlarmGetService alarmGetService;
 	private final PatrolTaskClient patrolTaskClient;
+	private final IZtApiService ztApiService;
 
 
 	@Override
@@ -117,23 +121,23 @@
 		String taskType = "1641037874390999041";
 
 		//杨树堰水库大坝预警巡查
-		String title = StringUtil.format("{}大坝预警巡查",byId.getReservoirName());
+		String title = StringUtil.format("{}大坝预警巡查", byId.getReservoirName());
 
 		//杨树堰水库在2023-11-29 17:41:19时监测到位移GN1测点,测点值为2.37,预警等级为三级
 
 		String resNm = byId.getReservoirName();
-		String tm = DateUtil.format(byId.getTime(),"MM月dd日HH时mm分");
+		String tm = DateUtil.format(byId.getTime(), "MM月dd日HH时mm分");
 		String typeName = byId.getTypeName();
 		String cdNm = byId.getCdName();
 		String value = byId.getValue();
-		String level =String.valueOf( byId.getLevel());
+		String level = String.valueOf(byId.getLevel());
 
-		String content=StringUtil.format("{}在{}时监测到{}{}测点值为{},预警等级为{}级",
-			resNm,tm,typeName,cdNm,value,level);
+		String content = StringUtil.format("{}在{}时监测到{}{}测点值为{},预警等级为{}级",
+			resNm, tm, typeName, cdNm, value, level);
 		String resCd = byId.getDamId();
 
 		//创建巡查任务
-		String taskId = patrolTaskClient.createTask(processDefinitionId,taskType,title,content,resCd);
+		String taskId = patrolTaskClient.createTask(processDefinitionId, taskType, title, content, resCd);
 		alarmGet.setTaskId(taskId);
 		return alarmGetService.updateById(alarmGet);
 	}
@@ -150,12 +154,77 @@
 
 		AlarmGet alarmGet = alarmGetService.getOne(new QueryWrapper<AlarmGet>().eq("TASK_ID", taskId));
 
-		if (alarmGet != null){
+		if (alarmGet != null) {
 			//设置预警为已处理
 			alarmGet.setStatus("1");
 			Boolean aBoolean = updateStatus(alarmGet);
-			return  aBoolean;
+			return aBoolean;
 		}
 		return false;
 	}
+
+	@Override
+	@PostMapping(INIT_ALGORITHM)
+	public void initAlgorithm(List<String> resList) {
+		List<ResDamMonitorResult> resDamMonitorResultList = ztApiService.getResDamMonitor();
+		//获取水库之后,根据标识是否有监测站请求测点
+		resDamMonitorResultList.forEach(resDamMonitorResult -> {
+			String resGuid = resDamMonitorResult.getCode();
+			if (resDamMonitorResult.getIs_sy().equals("1")){
+				activeAlgorithm(resGuid,"sy","1");
+			}
+			if (resDamMonitorResult.getIs_sl().equals("1")){
+				activeAlgorithm(resGuid,"sl","2");
+			}
+			if (resDamMonitorResult.getIs_wy().equals("1")){
+				activeAlgorithm(resGuid,"wy","3,4,5");
+			}
+		});
+	}
+
+	private void activeAlgorithm(String resGuid,String type,String nkyType){
+		String taskCategory = "2107";
+		List<BaseCd> cdList = ztApiService.getBaseCd(resGuid,type);
+		List<String> nkyTypeList = Arrays.asList(nkyType.split(","));
+
+
+		cdList.forEach(baseCd -> {
+			String pointId = baseCd.getCd();
+
+			nkyTypeList.forEach(nkyTypeFlag->{
+
+				//请求测点之后,循环测点,判断算法绑定情况
+				List<NkyBindDetailResult> nkyBindDetailResultList = nkyService.getBindDetail(baseCd.getRes_cd(),baseCd.getCd(),nkyTypeFlag);
+				//过滤出   多元线性回归预测模型异常判定  algorithmCategory: 2107
+				List<NkyBindDetailResult> filterCollect = nkyBindDetailResultList.stream().filter(nkyBindDetailResult -> nkyBindDetailResult.getAlgorithmCategory().equals(taskCategory)).collect(Collectors.toList());
+
+				if (filterCollect.size() == 0){
+					//如果是空的,说明没有启用该算法;先启用该算法
+//					JSONObject bindEnableParams = new JSONObject();
+//
+//					bindEnableParams.put("status",1);
+//					bindEnableParams.put("taskCategory",taskCategory);
+//					bindEnableParams.put("damId",resGuid);
+//					bindEnableParams.put("pointId",pointId);
+//					bindEnableParams.put("type",nkyTypeFlag);
+//					boolean bindEnableRes = nkyService.bindEnable(bindEnableParams);
+//					//成功启用,设置值
+//					if (bindEnableRes){
+//
+//						JSONObject bindParamParams = new JSONObject();
+//
+//						bindParamParams.put("damId",resGuid);
+//						bindParamParams.put("pointId",pointId);
+//						bindParamParams.put("type",nkyTypeFlag);
+//						bindParamParams.put("algorithmCategory",taskCategory);
+//						bindParamParams.put("reserve1","4,3.3,2.7,2");
+//
+//						boolean bindParamRes = nkyService.bindParam(bindParamParams);
+//					}
+
+				}
+			});
+		});
+	}
+
 }
diff --git a/skjcmanager/skjcmanager-service/skjcmanager-nky/src/main/java/cn/gistack/nky/service/INkyService.java b/skjcmanager/skjcmanager-service/skjcmanager-nky/src/main/java/cn/gistack/nky/service/INkyService.java
index 09ae2ad..e9bf05e 100644
--- a/skjcmanager/skjcmanager-service/skjcmanager-nky/src/main/java/cn/gistack/nky/service/INkyService.java
+++ b/skjcmanager/skjcmanager-service/skjcmanager-nky/src/main/java/cn/gistack/nky/service/INkyService.java
@@ -4,6 +4,10 @@
 import cn.gistack.nky.entity.ArimaPredict;
 import cn.gistack.nky.entity.HstPredict;
 import cn.gistack.nky.requestpojo.*;
+import cn.gistack.nky.resultpojo.NkyBindDetailResult;
+import com.alibaba.fastjson.JSONObject;
+
+import java.util.List;
 
 /**
  * @PROJECT_NAME: skjcmanager
@@ -50,4 +54,10 @@
 	 * @param alarmGetPo
 	 */
 	AlarmGet alarmGetData(AlarmGetPo alarmGetPo);
+
+    List<NkyBindDetailResult> getBindDetail(String resCd, String cd, String s);
+
+	boolean bindEnable(JSONObject params);
+
+	boolean bindParam(JSONObject bindParamParams);
 }
diff --git a/skjcmanager/skjcmanager-service/skjcmanager-nky/src/main/java/cn/gistack/nky/service/IZtApiService.java b/skjcmanager/skjcmanager-service/skjcmanager-nky/src/main/java/cn/gistack/nky/service/IZtApiService.java
index a0e57c2..5eed9f2 100644
--- a/skjcmanager/skjcmanager-service/skjcmanager-nky/src/main/java/cn/gistack/nky/service/IZtApiService.java
+++ b/skjcmanager/skjcmanager-service/skjcmanager-nky/src/main/java/cn/gistack/nky/service/IZtApiService.java
@@ -1,9 +1,7 @@
 package cn.gistack.nky.service;
 
 
-import cn.gistack.nky.resultpojo.DataBigResultPojo;
-import cn.gistack.nky.resultpojo.DataResChildrenPo;
-import cn.gistack.nky.resultpojo.DataResPo;
+import cn.gistack.nky.resultpojo.*;
 import com.alibaba.fastjson.JSONObject;
 
 import java.util.List;
@@ -47,4 +45,8 @@
 	List<DataResPo> getResSl();
 
 	List<DataResChildrenPo> getSl();
+
+    List<ResDamMonitorResult> getResDamMonitor();
+
+	List<BaseCd> getBaseCd(String code, String sy);
 }
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 e45dfac..b1b9aa2 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
@@ -6,6 +6,7 @@
 import cn.gistack.nky.entity.HstPredict;
 import cn.gistack.nky.entity.RequestRecord;
 import cn.gistack.nky.requestpojo.*;
+import cn.gistack.nky.resultpojo.NkyBindDetailResult;
 import cn.gistack.nky.service.INkyService;
 import cn.gistack.nky.service.IRequestRecordService;
 import com.alibaba.fastjson.JSON;
@@ -49,6 +50,10 @@
 
 	//判定异常
 	private static final String ALARM_GET = "alarm/get";
+
+	private static final String BIND_DETAIL = "bind/detail";
+	private static final String BIND_ENABLE = "bind/enable";
+	private static final String BIND_PARAM = "bind/param";
 
 	@Override
 	public Boolean arimaPredict(ArimaPredictReqPo po) {
@@ -148,6 +153,43 @@
 		return alarmGet;
 	}
 
+	@Override
+	public List<NkyBindDetailResult> getBindDetail(String resCd, String cd, String type) {
+
+		JSONObject params = new JSONObject();
+		params.put("damId",resCd);
+		params.put("pointId",cd);
+		params.put("type",type);
+
+		JSONObject result = requestNkyApi(BIND_DETAIL, JSON.toJSONString(params));
+
+		JSONArray dataList = result.getJSONArray("data");
+		List<NkyBindDetailResult> nkyBindDetailResultList = dataList.toJavaList(NkyBindDetailResult.class);
+		return nkyBindDetailResultList;
+	}
+
+	@Override
+	public boolean bindEnable(JSONObject params) {
+		JSONObject jsonObject = requestNkyApi(BIND_ENABLE, JSON.toJSONString(params));
+
+		if (jsonObject.get("status").equals("200")) {
+			return true;
+		}else {
+			return false;
+		}
+	}
+
+	@Override
+	public boolean bindParam(JSONObject bindParamParams) {
+		JSONObject jsonObject = requestNkyApi(BIND_PARAM, JSON.toJSONString(bindParamParams));
+
+		if (jsonObject.get("status").equals("200")) {
+			return true;
+		}else {
+			return false;
+		}
+	}
+
 	/**
 	 * 请求南科院接口
 	 * @param url
@@ -183,7 +225,5 @@
 		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 d2aa000..e6491f5 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,14 +1,12 @@
 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.resultpojo.*;
 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.springblade.core.tool.utils.StringUtil;
 import org.springframework.http.HttpEntity;
 import org.springframework.http.HttpHeaders;
 import org.springframework.http.HttpMethod;
@@ -53,6 +51,9 @@
 	 * 渗流监测
 	 */
 	private static final String SL_API ="/services/1234567890ABCDEFGHIJKLMN/monitor/sl/api?res_nm=&cd=&city_cd=&county_cd=&pageNo=1&pageSize=9999";
+
+	private static final String RES_DAM_MONITOR ="/services/1234567890ABCDEFGHIJKLMN/res_dam_monitor/api?province_cd=420000000000&res_nm=";
+	private static final String BASE_CD ="/services/1234567890ABCDEFGHIJKLMN/base/cd/api";
 
 
 	int getSyCount = 0;
@@ -119,6 +120,46 @@
 	public List<DataResChildrenPo> getSl() {
 		Map<String, Object> params = new LinkedHashMap<>();
 		return getData(SL_API, "get", params);
+	}
+
+	@Override
+	public List<ResDamMonitorResult> getResDamMonitor() {
+		Map<String, Object> params = new LinkedHashMap<>();
+		return getResDamMonitorResult(RES_DAM_MONITOR, "get", params);
+	}
+
+	@Override
+	public List<BaseCd> getBaseCd(String resGuid, String type) {
+		Map<String, Object> params = new LinkedHashMap<>();
+		String url = BASE_CD + StringUtil.format("?res_cd={}&type={}",resGuid,type);
+		// 获取环境
+		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;
+			method = HttpMethod.GET;
+		// 声明一个header变量
+		HttpHeaders headers = new HttpHeaders();
+		// 设置apikey
+		headers.set("apikey",API_KEY);
+
+		HttpEntity<String> httpEntity = new HttpEntity(null, headers);
+		log.info("中台请求地址:{}", url);
+		RestTemplate template = new RestTemplate();
+		ResponseEntity<ZtResultPo2> ztResultPojoResponseEntity = template.exchange(url, method,httpEntity, ZtResultPo2.class,params);
+		List<BaseCd> returnResult = new ArrayList<>();
+		if (ztResultPojoResponseEntity.getStatusCodeValue() == 200) {
+			returnResult = ztResultPojoResponseEntity.getBody().getData();
+		}
+		return returnResult;
 	}
 
 	private List<DataResChildrenPo> getData(String url, String type, Map<String, Object> params) {
@@ -203,4 +244,41 @@
 		return null;
 	}
 
+	private List<ResDamMonitorResult> getResDamMonitorResult(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;
+		} else {
+			method = HttpMethod.POST;
+		}
+		// 声明一个header变量
+		HttpHeaders headers = new HttpHeaders();
+		// 设置apikey
+		headers.set("apikey",API_KEY);
+
+		HttpEntity<String> httpEntity = new HttpEntity(null, headers);
+		log.info("中台请求地址:{}", url);
+		RestTemplate template = new RestTemplate();
+		ResponseEntity<ZtResult> ztResultPojoResponseEntity = template.exchange(url, method,httpEntity, ZtResult.class,params);
+		if (ztResultPojoResponseEntity.getStatusCodeValue() == 200) {
+			List<ResDamMonitorResult> resDamMonitorResultList = ztResultPojoResponseEntity.getBody().getResultList();
+			return resDamMonitorResultList;
+		}
+		return null;
+	}
+
 }
diff --git a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/controller/AttWmstBaseController.java b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/controller/AttWmstBaseController.java
new file mode 100644
index 0000000..9acf341
--- /dev/null
+++ b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/controller/AttWmstBaseController.java
@@ -0,0 +1,39 @@
+package cn.gistack.sm.sjztmd.controller;
+
+import cn.gistack.sm.sjztmd.entity.AttWmstBase;
+import cn.gistack.sm.sjztmd.service.IAttWmstBaseService;
+import cn.gistack.sm.sjztmd.vo.AttWmstBaseVO;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import io.swagger.annotations.Api;
+import lombok.AllArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+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.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+
+@Slf4j
+@Api(tags = "视频")
+@RestController
+@RequestMapping("/sjztmd/attWmstBase")
+@AllArgsConstructor
+public class AttWmstBaseController {
+	private final IAttWmstBaseService attWmstBaseService;
+
+	@GetMapping("/getPage")
+	public R getPage(Query query , AttWmstBaseVO attWmstBaseVO){
+		IPage<AttWmstBaseVO> page = attWmstBaseService.getPage(Condition.getPage(query),attWmstBaseVO);
+		return R.data(page);
+	}
+
+	@PostMapping("/update")
+	public R update(AttWmstBase attWmstBase){
+		boolean res = attWmstBaseService.customizeUpdate(attWmstBase);
+		return R.data(res);
+	}
+
+}
diff --git a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/entity/AttWmstBase.java b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/entity/AttWmstBase.java
new file mode 100644
index 0000000..c530271
--- /dev/null
+++ b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/entity/AttWmstBase.java
@@ -0,0 +1,93 @@
+package cn.gistack.sm.sjztmd.entity;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+/**
+ * 视频(中台表)
+ */
+@Data
+@TableName("\"att_wmst_base\"")
+public class AttWmstBase {
+
+
+	private static final long serialVersionUID = 1L;
+
+	/**
+	 * 主键
+	 */
+	@JsonSerialize(using = ToStringSerializer.class)
+	@ApiModelProperty(value = "主键")
+	@TableField("\"guid\"")
+	@TableId("\"guid\"")
+	private String guid;
+
+	/**
+	 * 水库id
+	 */
+	@ApiModelProperty(value = "水库id")
+	@TableField("\"res_guid\"")
+	private String resGuid;
+
+	/**
+	 * 视频id
+	 */
+	@ApiModelProperty(value = "视频id")
+	@TableField("\"video_guid\"")
+	private String videoGuid;
+
+	/**
+	 * 视频点名称
+	 */
+	@ApiModelProperty(value = "视频点名称")
+	@TableField("\"video_name\"")
+	private String videoName;
+
+	/**
+	 * 在线状态(0离线,1在线)
+	 */
+	@ApiModelProperty(value = "在线状态(0离线,1在线)")
+	@TableField("\"online\"")
+	private String online;
+
+	/**
+	 * 在线状态(1海康老平台,2海康楚天云平台)
+	 */
+	@ApiModelProperty(value = "来源")
+	@TableField("\"sys_resource\"")
+	private String sysResource;
+
+	/**
+	 * 建站时间
+	 */
+	@ApiModelProperty(value = "建站时间")
+	@TableField("\"comp_time\"")
+	private String compTime;
+
+
+	/**
+	 * 厂商
+	 */
+	@ApiModelProperty(value = "厂商")
+	@TableField("\"factory\"")
+	private String factory;
+
+
+	/**
+	 * 采集时间
+	 */
+	@ApiModelProperty(value = "采集时间")
+	@TableField("\"collect_time\"")
+	@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+	private String collectTime;
+
+
+}
diff --git a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/mapper/AttWmstBaseMapper.java b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/mapper/AttWmstBaseMapper.java
new file mode 100644
index 0000000..ba1d23c
--- /dev/null
+++ b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/mapper/AttWmstBaseMapper.java
@@ -0,0 +1,18 @@
+package cn.gistack.sm.sjztmd.mapper;
+
+import cn.gistack.sm.sjztmd.entity.AttWmstBase;
+import cn.gistack.sm.sjztmd.entity.YwTermitesTask;
+import cn.gistack.sm.sjztmd.vo.AttWmstBaseVO;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+
+public interface AttWmstBaseMapper extends BaseMapper<AttWmstBase> {
+
+	List<AttWmstBaseVO> getPage(IPage<AttWmstBaseVO> page, AttWmstBaseVO attWmstBaseVO);
+
+	boolean customizeUpdate(@Param("attWmstBase") AttWmstBase attWmstBase);
+}
diff --git a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/mapper/AttWmstBaseMapper.xml b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/mapper/AttWmstBaseMapper.xml
new file mode 100644
index 0000000..32a8d5c
--- /dev/null
+++ b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/mapper/AttWmstBaseMapper.xml
@@ -0,0 +1,11 @@
+<?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.sjztmd.mapper.AttWmstBaseMapper">
+
+
+    <update id="customizeUpdate">
+        UPDATE SJZT_MD."att_wmst_base"
+        SET "res_guid" = #{attWmstBase.resGuid}
+        where "guid" = #{attWmstBase.guid}
+    </update>
+</mapper>
diff --git a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/service/IAttWmstBaseService.java b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/service/IAttWmstBaseService.java
new file mode 100644
index 0000000..7e84a8f
--- /dev/null
+++ b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/service/IAttWmstBaseService.java
@@ -0,0 +1,11 @@
+package cn.gistack.sm.sjztmd.service;
+
+import cn.gistack.sm.sjztmd.entity.AttWmstBase;
+import cn.gistack.sm.sjztmd.vo.AttWmstBaseVO;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+
+public interface IAttWmstBaseService {
+	IPage<AttWmstBaseVO> getPage(IPage<AttWmstBaseVO> page, AttWmstBaseVO videoClassVO);
+
+	boolean customizeUpdate(AttWmstBase attWmstBase);
+}
diff --git a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/service/impl/AttWmstBaseServiceImpl.java b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/service/impl/AttWmstBaseServiceImpl.java
new file mode 100644
index 0000000..1612e47
--- /dev/null
+++ b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/service/impl/AttWmstBaseServiceImpl.java
@@ -0,0 +1,22 @@
+package cn.gistack.sm.sjztmd.service.impl;
+
+import cn.gistack.sm.sjztmd.entity.AttWmstBase;
+import cn.gistack.sm.sjztmd.mapper.AttWmstBaseMapper;
+import cn.gistack.sm.sjztmd.service.IAttWmstBaseService;
+import cn.gistack.sm.sjztmd.vo.AttWmstBaseVO;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+@Service
+public class AttWmstBaseServiceImpl extends ServiceImpl<AttWmstBaseMapper,AttWmstBase> implements IAttWmstBaseService {
+	@Override
+	public IPage<AttWmstBaseVO> getPage(IPage<AttWmstBaseVO> page, AttWmstBaseVO attWmstBaseVO) {
+		return page.setRecords(baseMapper.getPage(page,attWmstBaseVO));
+	}
+
+	@Override
+	public boolean customizeUpdate(AttWmstBase attWmstBase) {
+		return baseMapper.customizeUpdate(attWmstBase);
+	}
+}
diff --git a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/vo/AttWmstBaseVO.java b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/vo/AttWmstBaseVO.java
new file mode 100644
index 0000000..ee8012f
--- /dev/null
+++ b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/vo/AttWmstBaseVO.java
@@ -0,0 +1,8 @@
+package cn.gistack.sm.sjztmd.vo;
+
+import cn.gistack.sm.sjztmd.entity.AttWmstBase;
+import lombok.Data;
+
+@Data
+public class AttWmstBaseVO extends AttWmstBase {
+}
diff --git a/skjcmanager/skjcmanager-service/skjcmanager-xxljob/src/main/java/cn/gistack/job/executor/jobhandler/NkyXxlJob.java b/skjcmanager/skjcmanager-service/skjcmanager-xxljob/src/main/java/cn/gistack/job/executor/jobhandler/NkyXxlJob.java
index 8a96fb2..9ae441a 100644
--- a/skjcmanager/skjcmanager-service/skjcmanager-xxljob/src/main/java/cn/gistack/job/executor/jobhandler/NkyXxlJob.java
+++ b/skjcmanager/skjcmanager-service/skjcmanager-xxljob/src/main/java/cn/gistack/job/executor/jobhandler/NkyXxlJob.java
@@ -2,12 +2,19 @@
 
 import cn.gistack.job.executor.thread.MyThread;
 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;
 import lombok.AllArgsConstructor;
 import org.springblade.core.tool.utils.DateUtil;
 import org.springframework.stereotype.Component;
+
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
 
 /**
  * 南科院预测数据定时器
@@ -212,4 +219,28 @@
 		return ReturnT.SUCCESS;
 	}
 
+
+
+
+	@XxlJob("initAlgorithmHandler")
+	public ReturnT<String> initAlgorithmHandler(String param) {
+		XxlJobLogger.log("定时器执行时间:" + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(DateUtil.now()));
+
+		JSONObject jsonParam = JSON.parseObject(param);
+		List<String> resList = new ArrayList<>();
+		if (jsonParam != null){
+			String resGuids = jsonParam.getString("resGuids");
+			resList = Arrays.asList(resGuids.split(","));
+		}
+
+		nkyClient.initAlgorithm(resList);
+
+
+		XxlJobLogger.log("定时器执行结束时间:" + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(DateUtil.now()));
+
+		return ReturnT.SUCCESS;
+	}
+
+
+
 }

--
Gitblit v1.9.3