package com.dy.pipIrrRemote.valve;
|
|
import com.alibaba.fastjson2.JSON;
|
import com.alibaba.fastjson2.JSONObject;
|
import com.dy.common.aop.SsoAop;
|
import com.dy.common.webUtil.BaseResponse;
|
import com.dy.common.webUtil.BaseResponseUtils;
|
import com.dy.common.webUtil.ResultCodeMsg;
|
import com.dy.pipIrrRemote.utils.RestTemplateUtils;
|
import com.dy.pipIrrRemote.valve.dto.DTOValve;
|
import io.swagger.v3.oas.annotations.Operation;
|
import io.swagger.v3.oas.annotations.media.Content;
|
import io.swagger.v3.oas.annotations.media.Schema;
|
import io.swagger.v3.oas.annotations.responses.ApiResponse;
|
import io.swagger.v3.oas.annotations.responses.ApiResponses;
|
import io.swagger.v3.oas.annotations.tags.Tag;
|
import jakarta.validation.Valid;
|
import lombok.RequiredArgsConstructor;
|
import lombok.extern.slf4j.Slf4j;
|
import org.springframework.http.MediaType;
|
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.validation.BindingResult;
|
import org.springframework.web.bind.annotation.*;
|
|
import java.util.HashMap;
|
import java.util.Map;
|
import java.util.Objects;
|
import java.util.concurrent.CompletableFuture;
|
import java.util.concurrent.ExecutionException;
|
import java.util.concurrent.TimeUnit;
|
import java.util.concurrent.TimeoutException;
|
|
/**
|
* @author ZhuBaoMin
|
* @date 2024-05-07 14:59
|
* @LastEditTime 2024-05-07 14:59
|
* @Description
|
*/
|
|
@Slf4j
|
@Tag(name = "分水房管理", description = "分水房操作")
|
@RestController
|
@RequestMapping(path="valve")
|
@RequiredArgsConstructor
|
public class ValveCtrl {
|
private final RestTemplateUtils restTemplateUtils;
|
|
private CompletableFuture<String> futureValue = new CompletableFuture<>();
|
|
/**
|
* 远程开关阀
|
* @param po 开关阀传入对象
|
* @param bindingResult
|
* @return
|
*/
|
@Operation(summary = "远程开关阀", description = "远程开关阀")
|
@ApiResponses(value = {
|
@ApiResponse(
|
responseCode = ResultCodeMsg.RsCode.SUCCESS_CODE,
|
description = "操作结果:true:成功,false:失败(BaseResponse.content)",
|
content = {@Content(mediaType = MediaType.APPLICATION_JSON_VALUE,
|
schema = @Schema(implementation = Boolean.class))}
|
)
|
})
|
@PostMapping(path = "operate", consumes = MediaType.APPLICATION_JSON_VALUE)
|
@Transactional(rollbackFor = Exception.class)
|
@SsoAop()
|
public BaseResponse<Boolean> open(@RequestBody @Valid DTOValve po, BindingResult bindingResult) throws ExecutionException, InterruptedException {
|
if(bindingResult != null && bindingResult.hasErrors()){
|
return BaseResponseUtils.buildFail(Objects.requireNonNull(bindingResult.getFieldError()).getDefaultMessage());
|
}
|
|
String a = null;
|
try {
|
a = futureValue.get(10, TimeUnit.SECONDS);
|
} catch (TimeoutException e) {
|
return BaseResponseUtils.buildFail("1分钟后去查看结果");
|
}
|
futureValue = new CompletableFuture<>();
|
|
Map<String, Object> param = new HashMap<>();
|
param.put("controllerType", "01");
|
param.put("projectNo", 100);
|
param.put("rtuNewAddr", "202405061656120001");
|
|
Map<String, Object> postParams = new HashMap<>();
|
postParams.put("id", 2024050616450001L);
|
postParams.put("protocol", "p1");
|
postParams.put("rtuAddr", "20001");
|
postParams.put("type", "outerCommand");
|
postParams.put("code", "10");
|
postParams.put("noRtMwDealRes", false);
|
postParams.put("rtuResultSendWebUrl", "127.0.0.1/remote/");
|
postParams.put("param", param);
|
|
Map<String, String> headerParams = new HashMap<>();
|
|
JSONObject job_result = restTemplateUtils.post("http://localhost:8070/accMw/com/send", JSON.toJSONString(postParams), headerParams);
|
|
return BaseResponseUtils.buildSuccess(a) ;
|
}
|
|
@GetMapping("/setValue")
|
public String setValue(String name) {
|
futureValue.complete(name);
|
return "Value set";
|
}
|
}
|