From e78cc56f04556a1d3d54f0db830ba9f16eb28a58 Mon Sep 17 00:00:00 2001
From: zss <zss@example.com>
Date: 星期六, 03 八月 2024 21:40:53 +0800
Subject: [PATCH] 检验下单待检撤销+删除检验值结论还在
---
cnas-server/src/main/java/com/yuanchu/mom/utils/DataAcquisition.java | 365 ++++++++++++++++++++++++++++++++++++++++++----------
1 files changed, 294 insertions(+), 71 deletions(-)
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/utils/DataAcquisition.java b/cnas-server/src/main/java/com/yuanchu/mom/utils/DataAcquisition.java
index 5a2126d..4f341f4 100644
--- a/cnas-server/src/main/java/com/yuanchu/mom/utils/DataAcquisition.java
+++ b/cnas-server/src/main/java/com/yuanchu/mom/utils/DataAcquisition.java
@@ -10,7 +10,9 @@
import com.yuanchu.mom.pojo.DataConfig;
import com.yuanchu.mom.pojo.Device;
+import javax.servlet.http.HttpServletRequest;
import java.util.*;
+import java.util.concurrent.atomic.AtomicInteger;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.stream.Collectors;
@@ -26,6 +28,7 @@
private static final String splitIdentifier = "@-@"; // 鑷畾涔夊敮涓�鏍囪瘑鍒嗗壊绗�
public static final String frequency = "frequency";
+
/**
* 鏁伴噰鍏ュ彛
*
@@ -33,12 +36,23 @@
* @param device
* @return
*/
- public static Map<String, String> dataAcquisitionEntrance(List<DataConfig> dataConfig, Device device, String entrustCode, String sampleCode, String ip) {
+ public static Map<String, Object> dataAcquisitionEntrance(List<DataConfig> dataConfig, Device device, String entrustCode, String sampleCode, String ip) {
+ /**
+ * filePath 鏂囦欢閲囬泦璺緞
+ * fileExtension 鏂囦欢鍚庣紑
+ * entrustCode 濮旀墭缂栧彿
+ * sampleCode 鏍峰搧缂栧彿
+ * mdbEntrustCode mdb鏂囦欢闇�瑕侊細濮旀墭缂栧彿瀛楁 涓轰粈涔堟病鏈夊幓杩欎釜mdb鍓嶇紑鍛紵鍥犱负宸茬粡缁欏鎴风殑閮ㄥ垎鐢佃剳涓婂畨瑁呬簡閲囬泦鍣紝鑰岀敤鎴蜂笉鎺ュ彈閲嶆柊瀹夎閲囬泦鍣紝鎵�浠ュ氨娌℃湁鍘婚櫎
+ * mdbSampleCode mdb鏂囦欢闇�瑕侊細鏍峰搧缂栧彿瀛楁
+ */
String http = HTTP + ip + GETFILE +
"?filePath=" + device.getCollectUrl() +
"&fileExtension=" + device.getFileType() +
"&entrustCode=" + entrustCode +
- "&sampleCode=" + sampleCode;
+ "&sampleCode=" + sampleCode +
+ "&mdbEntrustCode=" + device.getEntrustCode() +
+ "&mdbSampleCode=" + device.getSampleCode() +
+ "&dbFileName=" + device.getDbFileName();
String result = null;
try {
result = HttpUtil.get(http);
@@ -47,42 +61,37 @@
}
JSONObject jsonObject = JSON.parseObject(result);
if (Objects.equals(jsonObject.get("code"), 1)) {
- if (ObjectUtils.isEmpty(jsonObject.get("msg"))) {
- throw new ErrorException("鏈煡璇㈠埌鏁版嵁锛屽彲鑳芥枃浠惰矾寰勯厤缃敊璇紒");
- } else {
- System.out.println(jsonObject);
- throw new ErrorException("鏈煡閿欒锛岃鑱旂郴绠$悊鍛橈紒");
- }
+ throw new ErrorException(jsonObject.get("msg") + "");
} else {
- String data = jsonObject.get("data").toString();
+ String data = jsonObject.get("data") + "";
// 鑰冭檻鍒颁竴涓娴嬮」鍙兘浼氬瓨鍦ㄥ涓暟閲囬厤缃紝鎵�浠ラ渶瑕佽繘琛屽垎缁�
Map<String, List<DataConfig>> userMap = dataConfig.stream()
.peek(i -> i.setInsProductItem(
i.getInspectionItem().equals(i.getInspectionItemSubclass()) ? i.getInspectionItem() + "," : i.getInspectionItem() + "," + i.getInspectionItemSubclass()
))
.collect(Collectors.groupingBy(DataConfig::getInsProductItem));
- Map<String, String> map;
+ Map<String, Object> map;
switch (device.getFileType()) {
case ".docx":
- map = analysisString(data, userMap);
+ map = analysisString(data, userMap, device, entrustCode, sampleCode);
break;
case ".xlsx":
- map = analysisList(data, userMap);
+ map = analysisList(data, userMap, device, entrustCode, sampleCode);
break;
case ".txt":
- map = analysisTxt(data, userMap);
+ map = analysisTxt(data, userMap, device, entrustCode, sampleCode);
break;
case ".csv":
- map = analysisList(data, userMap);
+ map = analysisList(data, userMap, device, entrustCode, sampleCode);
break;
case ".mdb":
- map = analysisMdb(data, userMap, entrustCode, sampleCode);
+ map = analysisMdb(data, userMap);
break;
case ".db":
- map = analysisDb(data, userMap, entrustCode, sampleCode);
+ map = analysisDb(data, userMap);
break;
case ".png":
- map = readPngString(data, userMap);
+ map = readPngString(data, userMap, device);
break;
default:
map = null;
@@ -91,15 +100,45 @@
// 濡傛灉瀛樺湪瀛樺偍鍦板潃锛屽垯绉诲姩鍦板潃
if (ObjectUtils.isNotEmpty(device.getStorageUrl())) {
String s = HTTP + ip + MOVEFILE + "?startFilePath=" + device.getCollectUrl() + "&endFilePath=" + device.getStorageUrl() + "&fileType=" + device.getFileType();
- String storageUrlResult = HttpUtil.get(s);
- JSONObject storageUrlResultJson = JSON.parseObject(storageUrlResult);
+ HttpUtil.get(s);
}
return map;
}
}
- public static String createFrequency(String entrustCode, String sampleCode) {
- String key = frequency + ":" + entrustCode + ":" + sampleCode;
+ public static Map<String, Object> createFrequency(String entrustCode, String sampleCode, Map<String, Object> map) {
+ HashSet<String> set = new HashSet<>();
+ map.forEach((key, value) -> {
+ String[] split = key.split(",");
+ String inspectionItem = split[0];
+ // 鍙鏈変竴涓笉涓虹┖灏眘et杩涘幓
+ if (ObjectUtils.isNotEmpty(value)) {
+ set.add(inspectionItem);
+ }
+ });
+ Map<String, Object> result = new HashMap<>();
+ for (String inspectionItemKey : set) {
+ Map<String, Object> hashMap = new HashMap<>();
+ map.forEach((key, value) -> {
+ String[] split = key.split(",");
+ String inspectionItem = split[0];
+ if (inspectionItemKey.equals(inspectionItem)) {
+ if (split.length > 1) {
+ hashMap.put(split[1], value);
+ } else {
+ hashMap.put(split[0], value);
+ }
+ }
+ });
+ String frequency = createKey(entrustCode, sampleCode, inspectionItemKey);
+ hashMap.put("frequency", frequency);
+ result.put(inspectionItemKey, hashMap);
+ }
+ return result;
+ }
+
+ public static String createKey(String entrustCode, String sampleCode, String inspectionItemKey) {
+ String key = frequency + ":" + entrustCode + ":" + sampleCode + ":" + inspectionItemKey;
boolean b = RedisUtil.hasKey(key);
String frequencyValue;
if (b) {
@@ -119,58 +158,104 @@
* @param dataConfig
* @return
*/
- private static Map<String, String> analysisDb(String data, Map<String, List<DataConfig>> dataConfig, String entrustCode, String sampleCode) {
+ private static Map<String, Object> analysisDb(String data, Map<String, List<DataConfig>> dataConfig) {
JSONObject jsonObject = JSON.parseObject(data);
+ Map<String, Object> map = new HashMap<>();
+ if (jsonObject.isEmpty()) {
+ return map;
+ }
JSONArray dataList = JSONArray.parseArray(jsonObject.get("data").toString());
- Map<String, String> map = new HashMap<>();
dataConfig.forEach((k, v) -> {
+ AtomicInteger numberOfDataEntries = new AtomicInteger();
List<Object> list = new ArrayList<>();
for (int config = 0; config < v.size(); config++) {
- String referx = getRefer(v.get(config).getReferx());
+ String refery = getRefer(v.get(config).getRefery());
for (int i = 0; i < dataList.size(); i++) {
JSONObject jsonObject1 = JSON.parseObject(dataList.get(i).toString());
- if (entrustCode.equals(jsonObject1.get("ExtInfo_Value1"))) {
- Object o = jsonObject1.get(referx);
- if (ObjectUtils.isNotEmpty(o)) {
+ Object o = jsonObject1.get(refery);
+ if (ObjectUtils.isNotEmpty(o)) {
+ numberOfDataEntries.addAndGet(1);
+ // 灏忔暟鐐硅繘涓変綅
+ double v1 = 0;
+ try {
+ v1 = Double.parseDouble(o.toString());
+ double v2 = v1 / 1000;
+ list.add(v2);
+ } catch (NumberFormatException e) {
list.add(o);
}
}
}
}
+ // 鎷兼帴鏁伴噰閰嶇疆
+ List<Object> result = new ArrayList<>();
+ for (int i = 0; i < numberOfDataEntries.get(); i++) {
+ String aggregate = "";
+ for (int j = 0; j < v.size(); j++) {
+ int index;
+ if (j == 0) {
+ index = i;
+ } else {
+ index = numberOfDataEntries.get() + i;
+ }
+ aggregate += list.get(index).toString() + ",";
+ }
+ int lastIndex = aggregate.lastIndexOf(",");
+ String substring = aggregate.substring(0, lastIndex);
+ result.add(substring);
+ }
// 杩涜鍏紡璁$畻
- String resultValue = calculationFormula(list, v.get(0), k);
+ Object resultValue = calculationFormula(result, v.get(0), k);
map.put(k, resultValue);
});
return map;
}
/**
- * 闇�瑕侀�氳繃X,Y杞村畾浣�
- *
* @param data
* @param dataConfig
* @return
*/
- private static Map<String, String> analysisMdb(String data, Map<String, List<DataConfig>> dataConfig, String entrustCode, String sampleCode) {
+ private static Map<String, Object> analysisMdb(String data, Map<String, List<DataConfig>> dataConfig) {
JSONObject jsonObject = JSON.parseObject(data);
+ Map<String, Object> map = new HashMap<>();
+ if (jsonObject.isEmpty()) {
+ return map;
+ }
JSONArray dataList = JSONArray.parseArray(jsonObject.get("data").toString());
- Map<String, String> map = new HashMap<>();
dataConfig.forEach((k, v) -> {
+ AtomicInteger numberOfDataEntries = new AtomicInteger();
List<Object> list = new ArrayList<>();
for (int config = 0; config < v.size(); config++) {
- String referx = getRefer(v.get(config).getReferx());
+ String refery = getRefer(v.get(config).getRefery());
for (int i = 0; i < dataList.size(); i++) {
JSONObject jsonObject1 = JSON.parseObject(dataList.get(i).toString());
- if (entrustCode.equals(jsonObject1.get("OrderNumber")) && sampleCode.equals(jsonObject1.get("SampleNumber"))) {
- Object o = jsonObject1.get(referx);
- if (ObjectUtils.isNotEmpty(o)) {
- list.add(o);
- }
+ Object o = jsonObject1.get(refery);
+ if (ObjectUtils.isNotEmpty(o)) {
+ numberOfDataEntries.addAndGet(1);
+ list.add(o);
}
}
}
+ // 鎷兼帴鏁伴噰閰嶇疆
+ List<Object> result = new ArrayList<>();
+ for (int i = 0; i < numberOfDataEntries.get(); i++) {
+ String aggregate = "";
+ for (int j = 0; j < v.size(); j++) {
+ int index;
+ if (j == 0) {
+ index = i;
+ } else {
+ index = numberOfDataEntries.get() + i;
+ }
+ aggregate += list.get(index).toString() + ",";
+ }
+ int lastIndex = aggregate.lastIndexOf(",");
+ String substring = aggregate.substring(0, lastIndex);
+ result.add(substring);
+ }
// 杩涜鍏紡璁$畻
- String resultValue = calculationFormula(list, v.get(0), k);
+ Object resultValue = calculationFormula(result, v.get(0), k);
map.put(k, resultValue);
});
return map;
@@ -185,8 +270,8 @@
* @param dataConfig 鐢ㄦ埛閰嶇疆濂界殑x,y杞村畾浣嶆暟鎹笌鍙傜収鐗�
* @return
*/
- private static Map<String, String> readPngString(String data, Map<String, List<DataConfig>> dataConfig) {
- Map<String, String> map = new HashMap<>();
+ private static Map<String, Object> readPngString(String data, Map<String, List<DataConfig>> dataConfig, Device device) {
+ Map<String, Object> map = new HashMap<>();
dataConfig.forEach((k, v) -> {
List<Object> list = new ArrayList<>();
for (int config = 0; config < v.size(); config++) {
@@ -215,7 +300,7 @@
}
}
// 杩涜鍏紡璁$畻
- String resultValue = calculationFormula(list, v.get(0), k);
+ Object resultValue = calculationFormula(list, v.get(0), k);
map.put(k, resultValue);
});
return map;
@@ -228,23 +313,26 @@
* @param dataConfig 瀛樺偍鍏紡鐨勫璞�
* @return
*/
- private static String calculationFormula(List<Object> list, DataConfig dataConfig, String insProductItem) {
+ private static Object calculationFormula(List<Object> list, DataConfig dataConfig, String insProductItem) {
if (list.size() == 0) {
return null;
}
+ Map<String, Object> hashMap = new HashMap<>();
// 濡傛灉涓嶄负绌猴紝杩涜鍏紡璁$畻
if (ObjectUtils.isNotEmpty(dataConfig.getFormula())) {
-
- return null;
+ hashMap.put("isCalculation", true);
+ hashMap.put("formula", dataConfig.getFormula());
// 鍚﹀垯锛氭病鏈夊叕寮忎唬琛ㄤ笉闇�瑕佽绠楋紝鐩存帴鎻愬彇List閲岄潰鐨勬暟鎹�
} else {
- // 杩欓噷鍙細鍙栧垪琛ㄧ涓�涓暟鎹�
- if (list.size() > 1) {
- throw new ErrorException("鏈粰锛�" + insProductItem + " 閰嶇疆鍏紡锛屽彲鏄嵈閲囬泦鍒颁簡" + list.size() + "涓�硷紒鍒嗗埆涓猴細" + list);
- } else {
- return list.get(0).toString();
- }
+ hashMap.put("isCalculation", false);
}
+ // 涓轰簡缁欏墠绔仛鏁版嵁鍖哄垎
+ if (list.size() > 1) {
+ hashMap.put("result", list);
+ } else {
+ hashMap.put("result", list.get(0).toString());
+ }
+ return hashMap;
}
/**
@@ -254,12 +342,20 @@
* @param dataConfig 鐢ㄦ埛閰嶇疆濂界殑x,y杞村畾浣嶆暟鎹笌鍙傜収鐗�
* @return
*/
- private static Map<String, String> analysisTxt(String data, Map<String, List<DataConfig>> dataConfig) {
- Map<String, String> map = new HashMap<>();
+ private static Map<String, Object> analysisTxt(String data, Map<String, List<DataConfig>> dataConfig,
+ Device device, String entrustCode, String sampleCode) {
+ Map<String, Object> map = new HashMap<>();
dataConfig.forEach((k, v) -> {
- List<Object> list = analyzeData(data, v, k, ",");
+ List<Object> list = new ArrayList<>();
+ // 濮旀墭缂栧彿涓庢牱鍝佺紪鍙蜂笉瀛樺湪锛屽畾锛�1銆乊瀹氳寖鍥达紝X瀹氭í鍧愭爣锛�2銆佸彧瀛樺湪Y锛�3銆佸彧瀛樺湪X
+ if (ObjectUtils.isEmpty(device.getEntrustCode()) && ObjectUtils.isEmpty(device.getSampleCode())) {
+ list = analyzeData(data, v, k, ",");
+ // 濮旀墭缂栧彿涓庢牱鍝佺紪鍙峰瓨鍦�
+ } else if (ObjectUtils.isNotEmpty(device.getEntrustCode()) && ObjectUtils.isNotEmpty(device.getSampleCode())) {
+ list = analyzeDataEntrustCodAndSampleCode(data, v, k, ",", device, entrustCode, sampleCode);
+ }
// 杩涜鍏紡璁$畻
- String resultValue = calculationFormula(list, v.get(0), k);
+ Object resultValue = calculationFormula(list, v.get(0), k);
map.put(k, resultValue);
});
return map;
@@ -270,16 +366,24 @@
* @param dataConfig 鐢ㄦ埛閰嶇疆濂界殑x,y杞村畾浣嶆暟鎹笌鍙傜収鐗�
* @return
*/
- private static Map<String, String> analysisString(String data, Map<String, List<DataConfig>> dataConfig) {
+ private static Map<String, Object> analysisString(String data, Map<String, List<DataConfig>> dataConfig, Device device,
+ String entrustCode, String sampleCode) {
String processingDataAfterSpaces = data
.replaceAll(" +", splitIdentifier)
.replaceAll("\r", "")
.replaceAll(" ", "");
- Map<String, String> map = new HashMap<>();
+ Map<String, Object> map = new HashMap<>();
dataConfig.forEach((k, v) -> {
- List<Object> list = analyzeData(processingDataAfterSpaces, v, k, splitIdentifier);
+ List<Object> list = new ArrayList<>();
+ // 濮旀墭缂栧彿涓庢牱鍝佺紪鍙蜂笉瀛樺湪锛屽畾锛�1銆乊瀹氳寖鍥达紝X瀹氭í鍧愭爣锛�2銆佸彧瀛樺湪Y锛�3銆佸彧瀛樺湪X
+ if (ObjectUtils.isEmpty(device.getEntrustCode()) && ObjectUtils.isEmpty(device.getSampleCode())) {
+ list = analyzeData(processingDataAfterSpaces, v, k, splitIdentifier);
+ // 濮旀墭缂栧彿涓庢牱鍝佺紪鍙峰瓨鍦�
+ } else if (ObjectUtils.isNotEmpty(device.getEntrustCode()) && ObjectUtils.isNotEmpty(device.getSampleCode())) {
+ list = analyzeDataEntrustCodAndSampleCode(processingDataAfterSpaces, v, k, splitIdentifier, device, entrustCode, sampleCode);
+ }
// 杩涜鍏紡璁$畻
- String resultValue = calculationFormula(list, v.get(0), k);
+ Object resultValue = calculationFormula(list, v.get(0), k);
map.put(k, resultValue);
});
return map;
@@ -292,16 +396,95 @@
* @param dataConfig 鐢ㄦ埛閰嶇疆濂界殑x,y杞村畾浣嶆暟鎹笌鍙傜収鐗�
* @return
*/
- public static Map<String, String> analysisList(String data, Map<String, List<DataConfig>> dataConfig) {
- Map<String, String> map = new HashMap<>();
+ public static Map<String, Object> analysisList(String data, Map<String, List<DataConfig>> dataConfig,
+ Device device, String entrustCode, String sampleCode) {
+ Map<String, Object> map = new HashMap<>();
dataConfig.forEach((k, v) -> {
- // 鐢ㄦ埛鍙兘缁欎竴涓瓙椤圭洰閰嶇疆浜嗗涓厤缃紝鍗充竴涓」鐩彇澶氫釜鍊硷紝鎵�浠ラ渶瑕佸惊鐜�
- List<Object> list = analyzeData(data, v, k, splitIdentifier);
+ List<Object> list = new ArrayList<>();
+ // 濮旀墭缂栧彿涓庢牱鍝佺紪鍙蜂笉瀛樺湪锛屽畾锛�1銆乊瀹氳寖鍥达紝X瀹氭í鍧愭爣锛�2銆佸彧瀛樺湪Y锛�3銆佸彧瀛樺湪X
+ if (ObjectUtils.isEmpty(device.getEntrustCode()) && ObjectUtils.isEmpty(device.getSampleCode())) {
+ list = analyzeData(data, v, k, splitIdentifier);
+ // 濮旀墭缂栧彿涓庢牱鍝佺紪鍙峰瓨鍦�
+ } else if (ObjectUtils.isNotEmpty(device.getEntrustCode()) && ObjectUtils.isNotEmpty(device.getSampleCode())) {
+ list = analyzeDataEntrustCodAndSampleCode(data, v, k, splitIdentifier, device, entrustCode, sampleCode);
+ }
// 杩涜鍏紡璁$畻
- String resultValue = calculationFormula(list, v.get(0), k);
+ Object resultValue = calculationFormula(list, v.get(0), k);
map.put(k, resultValue);
});
return map;
+ }
+
+ private static List<Object> analyzeDataEntrustCodAndSampleCode(String data, List<DataConfig> v, String k, String splitIdentifier,
+ Device device, String entrustCodeValue, String sampleCodeValue) {
+ entrustCodeValue = entrustCodeValue.replaceAll(" ", "");
+ sampleCodeValue = sampleCodeValue.replaceAll(" ", "");
+ // 鏈�缁堢粨鏋�
+ List<Object> list = new ArrayList<>();
+ int numberOfDataEntries = 0;
+ // 鍙杄ntrustCode涓巗ampleCode鎵�鍦ㄤ綅
+ for (int config = 0; config < v.size(); config++) {
+ numberOfDataEntries = 0;
+ Integer entrustCodeY = null;
+ Integer sampleCodeY = null;
+ Integer referYCoordinate = null;
+ String refery = getRefer(v.get(config).getRefery());
+ String entrustCode = getRefer(device.getEntrustCode()); // 濮旀墭缂栧彿瀛楁
+ String sampleCode = getRefer(device.getSampleCode()); // 鏍峰搧缂栧彿瀛楁
+ if (ObjectUtils.isEmpty(refery)) {
+ continue;
+ }
+ // 鍘婚櫎鎵�鏈夌殑绌烘牸锛岄�氳繃\n灏嗗瓧绗︿覆鍒嗗壊涓鸿
+ String[] aColumnY = data.replaceAll(" ", "").split("\n");
+ for (int i = 0; i < aColumnY.length; i++) {
+ // 濡傛灉閫氳繃鍒ゆ柇锛屽畾浣嶅埌Y杞�
+ if (aColumnY[i].contains(entrustCode) && aColumnY[i].contains(sampleCode)) {
+ String[] aLine = aColumnY[i].split(splitIdentifier);
+ for (int j = 0; j < aLine.length; j++) {
+ if (aLine[j].contains(entrustCode)) {
+ entrustCodeY = j;
+ }
+ if (aLine[j].contains(sampleCode) ) {
+ sampleCodeY = j;
+ }
+ if (aLine[j].contains(refery)) {
+ referYCoordinate = j;
+ }
+ }
+ }
+ if (ObjectUtils.isNotEmpty(entrustCodeY) && ObjectUtils.isNotEmpty(sampleCodeY) && ObjectUtils.isNotEmpty(referYCoordinate)) {
+ String[] aLine = aColumnY[i].split(splitIdentifier);
+ try {
+ if (aLine[entrustCodeY].contains(entrustCodeValue) && aLine[sampleCodeY].contains(sampleCodeValue)) {
+ String result = aLine[referYCoordinate];
+ // 闃叉璁$畻鍏紡鐨勬椂鍊欏嚭鐜帮細[null] 杩欑鏁版嵁
+ if (ObjectUtils.isNotEmpty(result)) {
+ numberOfDataEntries += 1;
+ list.add(result);
+ }
+ }
+ } catch (Exception e) {}
+ }
+ }
+ }
+ // 鎷兼帴鏁伴噰閰嶇疆
+ List<Object> result = new ArrayList<>();
+ for (int i = 0; i < numberOfDataEntries; i++) {
+ String aggregate = "";
+ for (int j = 0; j < v.size(); j++) {
+ int index;
+ if (j == 0) {
+ index = i;
+ } else {
+ index = numberOfDataEntries + i;
+ }
+ aggregate += list.get(index).toString() + ",";
+ }
+ int lastIndex = aggregate.lastIndexOf(",");
+ String substring = aggregate.substring(0, lastIndex);
+ result.add(substring);
+ }
+ return result;
}
// 鐢变簬鍦ㄦ柟娉曚腑浼氬ぇ閲忕殑鍒ゆ柇锛屾墍浠ュ仛涓�涓柟娉�
@@ -318,12 +501,24 @@
return ObjectUtils.isNotEmpty(refer) ? refer.replaceAll(" ", "") : "";
}
+ /**
+ * 濮旀墭缂栧彿涓庢牱鍝佺紪鍙烽兘涓虹┖鎵ц
+ *
+ * @param data
+ * @param v
+ * @param k
+ * @param split
+ * @return
+ */
public static List<Object> analyzeData(String data, List<DataConfig> v, String k, String split) {
List<Object> list = new ArrayList<>();
for (int config = 0; config < v.size(); config++) {
// 鍙栦袱涓敤鎴烽厤缃殑鍙傜収鐗�
String referx = getRefer(v.get(config).getReferx());
String refery = getRefer(v.get(config).getRefery());
+ if (ObjectUtils.isEmpty(refery) && ObjectUtils.isEmpty(referx)) {
+ continue;
+ }
// 鏈�缁堢粨鏋�
String result = null;
// 閫氳繃\n灏嗗瓧绗︿覆鍒嗗壊涓鸿
@@ -331,10 +526,30 @@
Integer end = null;
// 閲囬泦鏁版嵁锛歒杞�
for (int i = 0; i < aColumnY.length; i++) {
- // 鍙杧鐨勫�硷紝闃叉鎶ラ敊
- int x = getXOrY(v.get(config).getX(), k, "X");
- // 濡傛灉Y涓嶺鐢ㄦ埛閮介厤缃簡鍒欐墽琛�
- if (ObjectUtils.isNotEmpty(refery)) {
+ // 濡傛灉Y鍙傜収涓嶄负绌轰笌X鍙傜収涓虹┖鍒欐墽琛岋紝鍚屾椂璇ヨ鍖呭惈Y鍙傜収
+ if (ObjectUtils.isNotEmpty(refery) && ObjectUtils.isEmpty(referx) && aColumnY[i].contains(refery)) {
+ // 鍙朰鍧愭爣鍊�
+ int y = getXOrY(v.get(config).getY(), k, "Y");
+ String[] aLineX = aColumnY[i].split(split);
+ for (int j = 0; j < aLineX.length; j++) {
+ if (aLineX[j].contains(refery)) {
+ String[] split1 = new String[0];
+ try {
+ split1 = aColumnY[i + y].split(split);
+ } catch (Exception e) {
+ throw new ErrorException(k + "锛歒杞村畾浣嶈秴鍑猴紒");
+ }
+ try {
+ result = split1[j];
+ } catch (Exception e) {
+ throw new ErrorException(k + "锛歑杞村畾浣嶈秴鍑猴紒");
+ }
+ }
+ }
+ // 濡傛灉Y鍙傜収涓嶄负绌轰笌X鍙傜収涓嶄负绌哄垯鎵ц,姝ゅY瀹氬尯鍩�
+ } else if (ObjectUtils.isNotEmpty(refery) && ObjectUtils.isNotEmpty(referx)) {
+ // 鍙杧鐨勫�硷紝闃叉鎶ラ敊
+ int x = getXOrY(v.get(config).getX(), k, "X");
// 鍙朰鍧愭爣鍊�
int y = getXOrY(v.get(config).getY(), k, "Y");
// 缂撳瓨Y鐨勭粨鏉熷��
@@ -355,9 +570,11 @@
}
}
}
- // 濡傛灉鍙厤缃簡X锛屽垯鎵ц涓嬮潰鐨勪唬鐮�
+ // 濡傛灉X鍙傜収涓嶄负绌哄悓鏃惰琛屽寘鍚玐鍙傜収锛屽垯鎵ц涓嬮潰鐨勪唬鐮�
} else if (aColumnY[i].contains(referx) && ObjectUtils.isEmpty(refery)) {
String[] aLineX = aColumnY[i].split(split);
+ // 鍙杧鐨勫�硷紝闃叉鎶ラ敊
+ int x = getXOrY(v.get(config).getX(), k, "X");
for (int j = 0; j < aLineX.length; j++) {
if (aLineX[j].contains(referx)) {
try {
@@ -380,14 +597,20 @@
public static String getFormatProcessing(String value) {
value = value.replaceAll("%", "");
- if(value.contains("=")){
+ if (value.contains("=")) {
String[] split = value.split("=");
return split[split.length - 1];
- } else if(value.contains(":")) {
+ } else if (value.contains(":")) {
String[] split = value.split(":");
return split[split.length - 1];
} else {
return value;
}
}
+
+ public static String getIp(HttpServletRequest request) {
+ String ipAddress = request.getRemoteAddr();
+ // 闃叉鍥炵幆鍦板潃鍙樹负IPv6
+ return ipAddress.equals("0:0:0:0:0:0:0:1") ? "127.0.0.1" : ipAddress;
+ }
}
--
Gitblit v1.9.3