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