From 7ead7b67a4b55ddf3f8b2227863faba0a9fbcabe Mon Sep 17 00:00:00 2001 From: zhang chengzhi <3144712872@qq.com> Date: Tue, 10 Sep 2024 15:09:15 +0800 Subject: [PATCH] 544245 --- .../common/engine/ENGINE_DataSet_asdf_S1.java | 27 +++--- .../common/engine/ENGINE_ROW_HANG_R1.java | 2 + .../com/muyu/rule/common/utils/ArrayUtil.java | 91 ++++++++++++++++++ .../muyu/rule/common/utils/ArrayUtil.class | Bin 0 -> 1699 bytes 4 files changed, 108 insertions(+), 12 deletions(-) create mode 100644 cloud-rule-common/src/main/java/com/muyu/rule/common/utils/ArrayUtil.java create mode 100644 lib/com/muyu/rule/common/utils/ArrayUtil.class diff --git a/cloud-rule-common/src/main/java/com/muyu/rule/common/engine/ENGINE_DataSet_asdf_S1.java b/cloud-rule-common/src/main/java/com/muyu/rule/common/engine/ENGINE_DataSet_asdf_S1.java index 8216422..2ee3de7 100644 --- a/cloud-rule-common/src/main/java/com/muyu/rule/common/engine/ENGINE_DataSet_asdf_S1.java +++ b/cloud-rule-common/src/main/java/com/muyu/rule/common/engine/ENGINE_DataSet_asdf_S1.java @@ -1,11 +1,12 @@ package com.muyu.rule.common.engine; -import com.alibaba.fastjson2.JSON; -import com.alibaba.fastjson2.JSONObject; import com.muyu.etl.domain.DataValue; import com.muyu.rule.common.basic.abstracts.DataEngineDataSetActuator; import com.muyu.rule.common.domain.DataValueRows; -import com.muyu.rule.common.exception.DeliteException; +import com.muyu.rule.common.utils.ArrayUtil; + +import java.util.Arrays; +import java.util.List; /** @@ -20,16 +21,18 @@ public class ENGINE_DataSet_asdf_S1 extends DataEngineDataSetActuator { @Override public void run() { - DataValueRows dataValueRows = get(); - DataValue[][] dataValues = dataValueRows.getDataValue(); - String key = dataValueRows.getKey(); - JSONObject jsonObject = JSON.parseObject(key); - String o = (String) jsonObject.get(key); - if (dataValues == null || "".equals(dataValues) || "null".equals(dataValues)) { - throw new DeliteException(); - }else { - System.out.println("数据检测无异常"); + DataValue[][] dataValue = dataValueRows.getDataValue(); + ArrayUtil arrayUtil = new ArrayUtil<>(dataValue); + while (arrayUtil.hasNext()) { + DataValue[] dataStructures = arrayUtil.next(); + List dataStructureList = Arrays.stream(dataStructures).filter(dataStructure -> dataStructure.getKey().equals("name") && dataStructure.getValue() == null).toList(); + if (dataStructureList.size() > 0) { + arrayUtil.remove(); + } } + DataValue[][] currentArray = arrayUtil.getCurrentArray(); + dataValueRows.setDataValue(currentArray); + set(dataValueRows); } } diff --git a/cloud-rule-common/src/main/java/com/muyu/rule/common/engine/ENGINE_ROW_HANG_R1.java b/cloud-rule-common/src/main/java/com/muyu/rule/common/engine/ENGINE_ROW_HANG_R1.java index 646b14a..34160d5 100644 --- a/cloud-rule-common/src/main/java/com/muyu/rule/common/engine/ENGINE_ROW_HANG_R1.java +++ b/cloud-rule-common/src/main/java/com/muyu/rule/common/engine/ENGINE_ROW_HANG_R1.java @@ -25,6 +25,8 @@ public class ENGINE_ROW_HANG_R1 extends DataEngineRowActuator { DataValueRow dataValueRow = get(); + + } } diff --git a/cloud-rule-common/src/main/java/com/muyu/rule/common/utils/ArrayUtil.java b/cloud-rule-common/src/main/java/com/muyu/rule/common/utils/ArrayUtil.java new file mode 100644 index 0000000..6d8cdc3 --- /dev/null +++ b/cloud-rule-common/src/main/java/com/muyu/rule/common/utils/ArrayUtil.java @@ -0,0 +1,91 @@ +package com.muyu.rule.common.utils; + +import com.alibaba.fastjson2.JSONObject; +import com.muyu.etl.domain.DataValue; +import com.muyu.etl.enums.DataType; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.extern.log4j.Log4j2; + +import java.util.Arrays; +import java.util.Iterator; + +/** + * @Author:张承志 + * @Package:com.muyu.rule.common.utils + * @Project:cloud-etl-rule + * @name: 数组压栈工具 + * @Date:2024/9/10 14:46 + */ +@Data +@Builder +@AllArgsConstructor +@Log4j2 +public class ArrayUtil implements Iterator { + + + private final T[] originalArray; // 原始数组 + private T[] currentArray; // 当前数组,用于迭代 + private int currentIndex; // 当前索引 + private int lastReturnedIndex; // 上一次调用next()方法时返回的索引 + private boolean canRemove = false; // 标记是否可以移除元素 + + public ArrayUtil(T[] array) { + this.originalArray = array; + this.currentArray = Arrays.copyOf(array, array.length); + this.currentIndex = 0; + } + + @Override + public boolean hasNext() { + return currentIndex < currentArray.length; + } + + @Override + public T next() { + if (!hasNext()) { + throw new IllegalStateException("No more elements"); + } + lastReturnedIndex = currentIndex; + canRemove = true; // 调用next()后可以调用remove() + return currentArray[currentIndex++]; + } + + @Override + public void remove() { + if (!canRemove) { + throw new IllegalStateException("Cannot call remove() without calling next()"); + } + // 删除元素并更新数组 + System.arraycopy(currentArray, lastReturnedIndex + 1, currentArray, lastReturnedIndex, currentArray.length - lastReturnedIndex - 1); + currentArray = Arrays.copyOf(currentArray, currentArray.length - 1); // 缩小数组大小 + currentIndex--; // 因为我们移除了当前元素,所以索引应该减一 + canRemove = false; + } + + public static void main(String[] args) { + DataValue[] dataStructures = new DataValue[6]; + dataStructures[0] = DataValue.builder().value("aaa1").key("name").type(DataType.VARCHAR).label("姓名").build(); + dataStructures[1] = DataValue.builder().value("aaa2").key("name").type(DataType.VARCHAR).label("姓名").build(); + dataStructures[2] = DataValue.builder().value("aaa3").key("name").type(DataType.VARCHAR).label("姓名").build(); + dataStructures[3] = DataValue.builder().value("aaa4").key("name").type(DataType.VARCHAR).label("姓名").build(); + dataStructures[4] = DataValue.builder().value("aaa5").key("name").type(DataType.VARCHAR).label("姓名").build(); + dataStructures[5] = DataValue.builder().value("aaa6").key("name").type(DataType.VARCHAR).label("姓名").build(); + + ArrayUtil dataStructureArrayUtil = new ArrayUtil<>(dataStructures); + log.info(dataStructureArrayUtil.originalArray.length); + log.info(JSONObject.toJSONString(dataStructureArrayUtil.originalArray)); + while (dataStructureArrayUtil.hasNext()){ + DataValue next = dataStructureArrayUtil.next(); + if (next.getValue().equals("aaa3")){ + dataStructureArrayUtil.remove(); + } + } + log.info(dataStructureArrayUtil.currentArray.length); + log.info(Arrays.toString(dataStructureArrayUtil.currentArray)); + + } + + +} diff --git a/lib/com/muyu/rule/common/utils/ArrayUtil.class b/lib/com/muyu/rule/common/utils/ArrayUtil.class new file mode 100644 index 0000000000000000000000000000000000000000..e324a6de2b435d7fabb17248da06b96104e4f4ad GIT binary patch literal 1699 zcma)+!E@V06vn@`l_)Vvnz(7w25{Xrq?Sx0noKtm1q}{ix_kQntZ}sngfAs)-j&CwZA+19* zFotn~nWxS($M&6|X+PY5>egd{@ii~-;&p*^!Q7d|1SWN447>wFV5uIq>{h4Sv7?Uf z+MKn*!0yDJ-?lfR$mxE^p}=I_2_Ctv@R=(h_N0$#1LrU!Fcn5#(+eD5?G`xyc{fc>pQ9@iaa7jWK^-dJIL97_$!n+3E z!}})-m7w7s5xtV(;$;JQToKR@oc6YRM1?5Ko{nn*mrvL$zV9|2zZyHSd;h5J9>!i6 zOyC3ZZ-@C-7`b`ZcUz3w&fqGpOZ^K17Yal9SL4VFnx#Z_%Ro^w&H7F|e&oiTC~zAJ zYyvj~iknUlgmJ#^_Cwqv)& zf;qByQdI$K7%6FrQe}v8V5*oqI&KSOl?bXnmDr7(IE?79>NNw0(Ch&1ajjMom_Msl z<__04!v?pV+wuZ;yVKftqnfkt(~{i^ncj{Qd2-%2YVm=`7FgbTn^t7lF_jv_pLW(g z95^h#m8Ui4uugY+L1rVdr&#Oy58pb6128GJz+Ax`6^j@JQ>ieX)JkAut#)^Gm`JhK89`;k1=Hxi@jHvJ;s8xEk5UtH16`gh;iQM z>17U+Sim$c@_&gD7Ew|w${W`BVUoWb))mzkr`F1HNv+*^O}xPo4<+xCYnN1l&#d(V zi@X+kze3l3gO>iCR!y;ts~tHN*GP8vGrp!+OHgT_?{?9bZFt+t4 za=&2eZ(QBYF1^I^Kb8!94Aau2CIql{Y1q@AP>$6<_)5YsPY1v?=vcxmmZ`*b=2aMC zvPYPtrOdY^QyOBnU&8w&c|ds+0iLT7P-AR;K=z>`lQ1t}YEKjvNAlT|riRvdg%yb| zcP#YeR25OOYYn2S63cQX_&I_DH+Wwm{!M;NR;kS`Y_r9xxIL6cZ6pn8Df8{uX{7pz Le1)%RPNDKY)bwbt literal 0 HcmV?d00001