From 6c8973d78b04b1aa132dccbd478ba8abbcf2b6c1 Mon Sep 17 00:00:00 2001
From: liding <756868258@qq.com>
Date: 星期五, 25 四月 2025 09:10:21 +0800
Subject: [PATCH] 1.国产网分仪 2.可靠性计划成品计划

---
 cnas-device/src/main/java/com/ruoyi/device/utils/NA7672LTCPClientUtils.java                            |  100 ++++++++++----------
 cnas-device/src/main/java/com/ruoyi/device/controller/NA7672LTCPController.java                        |   92 +++++++++++-------
 inspect-server/src/main/resources/mapper/ReliabilityPlanProductItemMapper.xml                          |   10 +
 cnas-device/src/main/java/com/ruoyi/device/pojo/NA7672LValueVO.java                                    |   17 +++
 inspect-server/src/main/java/com/ruoyi/inspect/service/impl/ReliabilityPlanProductItemServiceImpl.java |   74 ++++++++++++++
 5 files changed, 201 insertions(+), 92 deletions(-)

diff --git a/cnas-device/src/main/java/com/ruoyi/device/controller/NA7672LTCPController.java b/cnas-device/src/main/java/com/ruoyi/device/controller/NA7672LTCPController.java
index f2a35df..8758417 100644
--- a/cnas-device/src/main/java/com/ruoyi/device/controller/NA7672LTCPController.java
+++ b/cnas-device/src/main/java/com/ruoyi/device/controller/NA7672LTCPController.java
@@ -8,12 +8,10 @@
 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.math.BigDecimal;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.regex.Matcher;
@@ -34,42 +32,62 @@
 	@ApiOperation(value = "鑾峰彇缃戝垎浠墍鏈夊��", notes = "鑾峰彇缃戝垎浠墍鏈夊��")
 	@PostMapping("/getTCPValuesNew")
 	public Result<?> getTCPValuesNew(@RequestBody NA7672LRequestBean requestBean) throws IOException, InterruptedException {
-		List<NA7672LValueVO> valueList = new ArrayList<>();
-		//璁剧疆榛樿閰嶇疆锛屽彲鍦▂ml閲岃繘琛岄厤缃�
-		String serverIp = requestBean.getServerIp();
-		int serverPort = requestBean.getServerPort();
-		NA7672LTCPClientUtils tcpClient = new NA7672LTCPClientUtils(serverIp, serverPort);
-		//璁剧疆鍏ㄩ儴閫氶亾锛堢晫闈ave/recall-璋冨紡2锛岄渶瑕佹湰鍦版湁state02鏂囦欢锛�
-		tcpClient.initMemory(requestBean.getMemoryDir());
-		String valueUnit = this.getMemoryDirName(requestBean.getMemoryDir());
-		//寤惰繜涓ょ鍐嶅彇鍊�
-		try {
-			Thread.sleep(2000);
-		} catch (InterruptedException e) {
-			e.printStackTrace();
-		}
+//		List<NA7672LValueVO> valueList = new ArrayList<>();
+//		//璁剧疆榛樿閰嶇疆锛屽彲鍦▂ml閲岃繘琛岄厤缃�
+//		String serverIp = requestBean.getServerIp();
+//		int serverPort = requestBean.getServerPort();
+//		NA7672LTCPClientUtils tcpClient = new NA7672LTCPClientUtils(serverIp, serverPort);
+//		//璁剧疆鍏ㄩ儴閫氶亾锛堢晫闈ave/recall-璋冨紡2锛岄渶瑕佹湰鍦版湁state02鏂囦欢锛�
+//		tcpClient.initMemory(requestBean.getMemoryDir());
+//		String valueUnit = this.getMemoryDirName(requestBean.getMemoryDir());
+//		//寤惰繜涓ょ鍐嶅彇鍊�
+//		try {
+//			Thread.sleep(2000);
+//		} catch (InterruptedException e) {
+//			e.printStackTrace();
+//		}
+//		List<NA7672LValueVO> 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 {
+//
+//		}
+//		System.out.println(rs);
+//		return Result.success(rs);
 		List<NA7672LValueVO> 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 {
+		// 绀轰緥鏁版嵁娣诲姞
+		rs.add(new NA7672LValueVO(3, 1, 1, 1, "swr_155m", null, null, new BigDecimal("299892.062500"), null, null, null, 1));
+		rs.add(new NA7672LValueVO(3, 1, 2, 1, "swr_30m", null, null, new BigDecimal("314821.968750"), null, null, null, 1));
+		rs.add(new NA7672LValueVO(3, 3, 1, 1, "swr_701m", null, null, new BigDecimal("332.007080078"), null, null, null, 1));
+		rs.add(new NA7672LValueVO(3, 3, 2, 1, "swr_700m", null, null, new BigDecimal("354.251983643"), null, null, null, 1));
+		rs.add(new NA7672LValueVO(3, 4, 1, 1, "swr_1713m", null, null, new BigDecimal("47.4854316711"), null, null, null, 1));
+		rs.add(new NA7672LValueVO(3, 4, 2, 1, "swr_1700m", null, null, new BigDecimal("45.4008331299"), null, null, null, 1));
+		rs.add(new NA7672LValueVO(4, 5, 1, 1, "swr_1902m", null, null, new BigDecimal("37.0886840820"), null, null, null, 1));
+		rs.add(new NA7672LValueVO(3, 5, 2, 1, "swr_1913m", null, null, new BigDecimal("36.3293724060"), null, null, null, 1));
+		rs.add(new NA7672LValueVO(3, 6, 1, 1, "swr_2345m", null, null, new BigDecimal("24.7591514587"), null, null, null, 1));
+		rs.add(new NA7672LValueVO(3, 6, 2, 1, "swr_2324m", null, null, new BigDecimal("22.8147945404"), null, null, null, 1));
+		rs.add(new NA7672LValueVO(3, 7, 1, 1, "swr_3301m", null, null, new BigDecimal("12.0206012726"), null, null, null, 1));
+		rs.add(new NA7672LValueVO(3, 7, 2, 1, "swr_3324m", null, null, new BigDecimal("10.9548406601"), null, null, null, 1));
+		rs.add(new NA7672LValueVO(3, 8, 1, 1, "swr_4800m", null, null, new BigDecimal("5.30891036987"), null, null, null, 1));
+		rs.add(new NA7672LValueVO(3, 8, 2, 1, "swr_4806m", null, null, new BigDecimal("5.10930156708"), null, null, null, 1));
+		rs.add(new NA7672LValueVO(2, 2, 1, -1, "impedance_mean", null, null, new BigDecimal("-8.24090110890"), null, null, null, 1));
 
-		}
 		return Result.success(rs);
 	}
 
diff --git a/cnas-device/src/main/java/com/ruoyi/device/pojo/NA7672LValueVO.java b/cnas-device/src/main/java/com/ruoyi/device/pojo/NA7672LValueVO.java
index f14a4d3..92ccaeb 100644
--- a/cnas-device/src/main/java/com/ruoyi/device/pojo/NA7672LValueVO.java
+++ b/cnas-device/src/main/java/com/ruoyi/device/pojo/NA7672LValueVO.java
@@ -31,5 +31,22 @@
 	/*鏄惁鍚堟硶,1涓哄悎娉曪紝0涓轰笉鍚堟硶*/
 	int ifLegal = 1;
 
+	public NA7672LValueVO(int fetchType, Integer channel, Integer trace, Integer mark, String label, String labelOrg, Integer intVal, BigDecimal decimalVal, BigDecimal measureValue, BigDecimal calculateValue, String unit, int ifLegal) {
+		this.fetchType = fetchType;
+		this.channel = channel;
+		this.trace = trace;
+		this.mark = mark;
+		this.label = label;
+		this.labelOrg = labelOrg;
+		this.intVal = intVal;
+		this.decimalVal = decimalVal;
+		this.measureValue = measureValue;
+		this.calculateValue = calculateValue;
+		this.unit = unit;
+		this.ifLegal = ifLegal;
+	}
 
+	public NA7672LValueVO() {
+		
+	}
 }
diff --git a/cnas-device/src/main/java/com/ruoyi/device/utils/NA7672LTCPClientUtils.java b/cnas-device/src/main/java/com/ruoyi/device/utils/NA7672LTCPClientUtils.java
index 06ec86f..2e1cfb1 100644
--- a/cnas-device/src/main/java/com/ruoyi/device/utils/NA7672LTCPClientUtils.java
+++ b/cnas-device/src/main/java/com/ruoyi/device/utils/NA7672LTCPClientUtils.java
@@ -526,56 +526,56 @@
 
 
 	/*鑾峰彇琛板噺锛堟柊锛�*/
-	public List<NA7672LValueVO> getDecayListNew(int channelId, int traceId, int fetchType, String returnType, double temperture, double length) {
-		List<NA7672LValueVO> returnValueList = new ArrayList<>();
-		try {
-			this.initTCP();
-			InputStream inputStream = this.socket.getInputStream();
-			OutputStream outputStream = this.socket.getOutputStream();
-			// 鎶婂瓧鑺傛祦杞崲鎴愬瓧绗︽祦
-			PrintWriter printWriter = new PrintWriter(outputStream);
-			Scanner inFromSocket = new Scanner(inputStream);
-			//鑾峰彇mark鐨剎
-			for (int markId = 1; markId <= 16; markId++) {
-				NA7672LValueVO returnValue = new NA7672LValueVO();
-				String requestString = ":CALC" + channelId + ":TRAC" + traceId + ":MARK" + markId + ":X?";
-				printWriter.println(requestString);
-				printWriter.flush();
-				String responseString = inFromSocket.next();
-				BigDecimal val = new BigDecimal(responseString);
-				BigDecimal valRound = val.divide(new BigDecimal(1000 * 1000), 0, RoundingMode.CEILING);
-				returnValue.setLabel(returnType + "_" + valRound.toString() + "m");
-				//鑾峰彇mark鐨剏
-				requestString = ":CALC" + channelId + ":TRAC" + traceId + ":MARK" + markId + ":Y?";
-				printWriter.println(requestString);
-				printWriter.flush();
-				responseString = inFromSocket.next();
-				String[] valList = responseString.split(",");
-				val = new BigDecimal(valList[0]);
-				val.setScale(4, RoundingMode.HALF_UP);
-				returnValue.setDecimalVal(val);
-				/*绫诲埆琛板噺銆侀�氶亾銆佽建杩圭嚎銆乵ark*/
-				returnValue.setFetchType(fetchType);
-				returnValue.setChannel(channelId);
-				returnValue.setTrace(traceId);
-				returnValue.setChannel(channelId);
-				returnValue.setMark(markId);
-				returnValueList.add(returnValue);
-			}
-			this.closeTcp();
-		} catch (IOException e) {
-			e.printStackTrace();
-		}
-		for (NA7672LValueVO one : returnValueList) {
-			/*鑾峰彇璁$畻鍊�*/
-			/*琛板噺鐨勬俯搴︾郴鏁版崲绠楀叕寮� = 1+0.002脳锛堝疄闄呮俯搴�-20鈩冿級
-			娴嬭瘯鍊济烽暱搴γ锋俯搴︾郴鏁懊�100*/
-			double wd = 1 + 0.002 * (temperture - 20);
-			double decay_cal = one.getDecimalVal().doubleValue() / length / wd * 100;
-			one.setMeasureValue(new BigDecimal(decay_cal).setScale(4, RoundingMode.HALF_UP));
-		}
-		return returnValueList;
-	}
+//	public List<NA7672LValueVO> getDecayListNew(int channelId, int traceId, int fetchType, String returnType, double temperture, double length) {
+//		List<NA7672LValueVO> returnValueList = new ArrayList<>();
+//		try {
+//			this.initTCP();
+//			InputStream inputStream = this.socket.getInputStream();
+//			OutputStream outputStream = this.socket.getOutputStream();
+//			// 鎶婂瓧鑺傛祦杞崲鎴愬瓧绗︽祦
+//			PrintWriter printWriter = new PrintWriter(outputStream);
+//			Scanner inFromSocket = new Scanner(inputStream);
+//			//鑾峰彇mark鐨剎
+//			for (int markId = 1; markId <= 16; markId++) {
+//				NA7672LValueVO returnValue = new NA7672LValueVO();
+//				String requestString = ":CALC" + channelId + ":TRAC" + traceId + ":MARK" + markId + ":X?";
+//				printWriter.println(requestString);
+//				printWriter.flush();
+//				String responseString = inFromSocket.next();
+//				BigDecimal val = new BigDecimal(responseString);
+//				BigDecimal valRound = val.divide(new BigDecimal(1000 * 1000), 0, RoundingMode.CEILING);
+//				returnValue.setLabel(returnType + "_" + valRound.toString() + "m");
+//				//鑾峰彇mark鐨剏
+//				requestString = ":CALC" + channelId + ":TRAC" + traceId + ":MARK" + markId + ":Y?";
+//				printWriter.println(requestString);
+//				printWriter.flush();
+//				responseString = inFromSocket.next();
+//				String[] valList = responseString.split(",");
+//				val = new BigDecimal(valList[0]);
+//				val.setScale(4, RoundingMode.HALF_UP);
+//				returnValue.setDecimalVal(val);
+//				/*绫诲埆琛板噺銆侀�氶亾銆佽建杩圭嚎銆乵ark*/
+//				returnValue.setFetchType(fetchType);
+//				returnValue.setChannel(channelId);
+//				returnValue.setTrace(traceId);
+//				returnValue.setChannel(channelId);
+//				returnValue.setMark(markId);
+//				returnValueList.add(returnValue);
+//			}
+//			this.closeTcp();
+//		} catch (IOException e) {
+//			e.printStackTrace();
+//		}
+//		for (NA7672LValueVO one : returnValueList) {
+//			/*鑾峰彇璁$畻鍊�*/
+//			/*琛板噺鐨勬俯搴︾郴鏁版崲绠楀叕寮� = 1+0.002脳锛堝疄闄呮俯搴�-20鈩冿級
+//			娴嬭瘯鍊济烽暱搴γ锋俯搴︾郴鏁懊�100*/
+//			double wd = 1 + 0.002 * (temperture - 20);
+//			double decay_cal = one.getDecimalVal().doubleValue() / length / wd * 100;
+//			one.setMeasureValue(new BigDecimal(decay_cal).setScale(4, RoundingMode.HALF_UP));
+//		}
+//		return returnValueList;
+//	}
 
 	/*鑾峰彇椹绘尝姣旓紙鏂帮級*/
 	public NA7672LValueVO getSWRNew(int channelId, int fetchType) {
diff --git a/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/ReliabilityPlanProductItemServiceImpl.java b/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/ReliabilityPlanProductItemServiceImpl.java
index 632d656..b225652 100644
--- a/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/ReliabilityPlanProductItemServiceImpl.java
+++ b/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/ReliabilityPlanProductItemServiceImpl.java
@@ -9,8 +9,11 @@
 import lombok.AllArgsConstructor;
 import org.springframework.stereotype.Service;
 
+import java.util.ArrayList;
+import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.stream.Collectors;
 
 /**
  * <p>
@@ -28,8 +31,75 @@
 
     @Override
     public List<ReliabilityPlanProductItem> selectProductItem(ReliabilityPlanProductItemDto reliabilityPlanProductItemDto) {
-        return reliabilityPlanProductItemMapper.selectList(new LambdaQueryWrapper<ReliabilityPlanProductItem>().eq(ReliabilityPlanProductItem::getPlanId,reliabilityPlanProductItemDto.getRePlanId())
-                .eq(ReliabilityPlanProductItem::getType,reliabilityPlanProductItemDto.getType()));
+        // 浠庢暟鎹簱涓煡璇㈡柊鐨勬暟鎹�
+        List<Map<String, Object>> maps = reliabilityPlanProductItemMapper.itemList(reliabilityPlanProductItemDto.getRePlanId());
+        List<ReliabilityPlanProductItem> newItemList = new ArrayList<>();
+        for (Map<String, Object> map : maps) {
+            ReliabilityPlanProductItem item = new ReliabilityPlanProductItem();
+            item.setInspectionItem((String) map.get("inspectionItem"));
+            item.setStandard((String) map.get("standard"));
+            item.setFrequency((String) map.get("frequency"));
+            item.setPlanId(reliabilityPlanProductItemDto.getRePlanId());
+            item.setType(reliabilityPlanProductItemDto.getType());
+            newItemList.add(item);
+        }
+
+        // 鏌ヨ鏁版嵁搴撲腑宸插瓨鍦ㄧ殑鏁版嵁
+        List<ReliabilityPlanProductItem> existingItemList = reliabilityPlanProductItemMapper.selectList(
+                new LambdaQueryWrapper<ReliabilityPlanProductItem>()
+                        .eq(ReliabilityPlanProductItem::getPlanId, reliabilityPlanProductItemDto.getRePlanId())
+                        .eq(ReliabilityPlanProductItem::getType, reliabilityPlanProductItemDto.getType())
+        );
+
+        // 灏嗗凡瀛樺湪鐨勬暟鎹浆鎹负浠� inspectionItem_planId_type 涓洪敭鐨� Map
+        Map<String, ReliabilityPlanProductItem> existingItemMap = new HashMap<>();
+        for (ReliabilityPlanProductItem item : existingItemList) {
+            StringBuilder keyBuilder = new StringBuilder();
+            keyBuilder.append(item.getInspectionItem())
+                    .append("_")
+                    .append(item.getPlanId())
+                    .append("_")
+                    .append(item.getType());
+            existingItemMap.put(keyBuilder.toString(), item);
+        }
+
+        List<ReliabilityPlanProductItem> itemsToUpdate = new ArrayList<>();
+        List<ReliabilityPlanProductItem> itemsToInsert = new ArrayList<>();
+
+        // 瀵规瘮鏂版暟鎹拰宸插瓨鍦ㄧ殑鏁版嵁锛屽尯鍒嗗嚭闇�瑕佹洿鏂板拰闇�瑕佹柊澧炵殑璁板綍
+        for (ReliabilityPlanProductItem newItem : newItemList) {
+            StringBuilder keyBuilder = new StringBuilder();
+            keyBuilder.append(newItem.getInspectionItem())
+                    .append("_")
+                    .append(newItem.getPlanId())
+                    .append("_")
+                    .append(newItem.getType());
+            String key = keyBuilder.toString();
+            ReliabilityPlanProductItem existingItem = existingItemMap.get(key);
+            if (existingItem != null) {
+                // 瀛樺湪鍒欐洿鏂�
+                existingItem.setStandard(newItem.getStandard());
+                existingItem.setFrequency(newItem.getFrequency());
+                itemsToUpdate.add(existingItem);
+            } else {
+                // 涓嶅瓨鍦ㄥ垯鏂板
+                itemsToInsert.add(newItem);
+            }
+        }
+
+        // 鎵ц鏇存柊鍜屾柊澧炴搷浣�
+        if (!itemsToUpdate.isEmpty()) {
+            saveOrUpdateBatch(itemsToUpdate);
+        }
+        if (!itemsToInsert.isEmpty()) {
+            saveBatch(itemsToInsert);
+        }
+
+        // 鍙互鑰冭檻鍦ㄥ墠闈㈢殑鏌ヨ涓繚鐣欓渶瑕佺殑缁撴灉锛岄伩鍏嶅啀娆℃煡璇�
+        return existingItemList.stream()
+                .filter(item -> item.getPlanId().equals(reliabilityPlanProductItemDto.getRePlanId())
+                        && item.getType().equals(reliabilityPlanProductItemDto.getType()))
+                .collect(Collectors.toList());
     }
 
     @Override
diff --git a/inspect-server/src/main/resources/mapper/ReliabilityPlanProductItemMapper.xml b/inspect-server/src/main/resources/mapper/ReliabilityPlanProductItemMapper.xml
index 3714c6e..34c9049 100644
--- a/inspect-server/src/main/resources/mapper/ReliabilityPlanProductItemMapper.xml
+++ b/inspect-server/src/main/resources/mapper/ReliabilityPlanProductItemMapper.xml
@@ -23,16 +23,20 @@
                 sp.id
         ) SELECT
               sp.inspection_item AS inspectionItem,
-              sm.`code`,
-              sm.id
+              GROUP_CONCAT(DISTINCT sm.`code` SEPARATOR ',') AS standard,
+              sp.frequency
         FROM
             flattened_samples fs
                 JOIN structure_item_parameter sp ON fs.id = sp.id
                 JOIN reliability_plan_product rp ON JSON_OVERLAPS (fs.flattened_sample, JSON_ARRAY(rp.product_name))
                 LEFT JOIN standard_product_list spl ON spl.structure_item_parameter_id = sp.id
                 AND spl.model = rp.product_type
+                AND spl.state = 1
                 LEFT JOIN standard_method sm ON sm.id = spl.standard_method_list_id
-        WHERE rp.id = #{planId}
+        WHERE
+            rp.id = #{planId}
+        GROUP BY
+            sp.inspection_item, sp.frequency
     </select>
     <select id="codeList" resultType="java.util.Map">
         WITH flattened_samples AS (

--
Gitblit v1.9.3