package com.ruoyi.device.controller; import com.ruoyi.common.core.domain.Result; import com.ruoyi.device.pojo.NA7672LRequestBean; import com.ruoyi.device.pojo.NA7672LValueVO; import com.ruoyi.device.utils.NA7672LTCPClientUtils; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; import org.springframework.core.io.ClassPathResource; import org.springframework.web.bind.annotation.*; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.List; import java.util.regex.Matcher; import java.util.regex.Pattern; /** * demo 表 * * @author pig * @date 2023-07-31 14:07:58 */ @RestController @RequiredArgsConstructor @RequestMapping("tcpClient") @Api(value = "tcp", tags = "读取网分仪数据") public class NA7672LTCPController { @ApiOperation(value = "获取网分仪所有值", notes = "获取网分仪所有值") @PostMapping("/getTCPValuesNew") public Result getTCPValuesNew(@RequestBody NA7672LRequestBean requestBean) throws IOException, InterruptedException { List valueList = new ArrayList<>(); //设置默认配置,可在yml里进行配置 String serverIp = requestBean.getServerIp(); int serverPort = requestBean.getServerPort(); NA7672LTCPClientUtils tcpClient = new NA7672LTCPClientUtils(serverIp, serverPort); //设置全部通道(界面save/recall-调式2,需要本地有state02文件) tcpClient.initMemory(requestBean.getMemoryDir()); String valueUnit = this.getMemoryDirName(requestBean.getMemoryDir()); //延迟两秒再取值 try { Thread.sleep(2000); } catch (InterruptedException e) { e.printStackTrace(); } List rs = new ArrayList<>(); if (valueUnit.equals("state01")) { rs = tcpClient.getState01AllValue(requestBean); } else if (valueUnit.equals("state02")) { rs = tcpClient.getState02AllValue(requestBean); } else if (valueUnit.equals("state03")) { rs = tcpClient.getState03AllValue(requestBean); } else if (valueUnit.equals("state04")) { rs = tcpClient.getState04AllValue(requestBean); } else if (valueUnit.equals("state05")) { rs = tcpClient.getState05AllValue(requestBean); } else if (valueUnit.equals("state06")) { rs = tcpClient.getState06AllValue(requestBean); } else if (valueUnit.equals("state07")) { rs = tcpClient.getState07AllValue(requestBean); } else if (valueUnit.equals("state08")) { rs = tcpClient.getState08AllValue(requestBean); } else if (valueUnit.equals("autorec")) { rs = tcpClient.getStateAutoRecAllValue(requestBean); } else { } return Result.success(rs); } /*依照约定把前端传递的查询转化为后端接口查询*/ private String decayLabelOrg2Label(String labelOrg) { String label = "decay_0m"; Pattern pattern = Pattern.compile("(\\d*)M"); Matcher matcher = pattern.matcher(labelOrg); String valueUnit = null; if (matcher.find()) { valueUnit = matcher.group(); } if (valueUnit != null) { label = "decay_" + valueUnit.substring(0, valueUnit.length() - 1) + "m"; } return label; } /*使用memory_dir的路径解析出类别*/ private String getMemoryDirName(String pathName) { String[] splitString = pathName.split("/"); String filename_1 = splitString[splitString.length - 1]; String[] filename_2 = filename_1.split("\\."); String filename_3 = filename_2[0]; return filename_3; /*Pattern pattern = Pattern.compile("state(\\d*)"); Matcher matcher = pattern.matcher(pathName); String valueUnit = null; if (matcher.find()) { valueUnit = matcher.group(); } return valueUnit;*/ } }