From 9052fef232f56eb878d7cf8360a09a11e6a0fe2f Mon Sep 17 00:00:00 2001 From: lty <876263681@qq.com> Date: 星期五, 06 六月 2025 10:48:54 +0800 Subject: [PATCH] # --- src/main/java/com/zy/asrs/utils/MatCompareUtils.java | 51 +++++++++++++++++++++++++++++++++++++++++---------- 1 files changed, 41 insertions(+), 10 deletions(-) diff --git a/src/main/java/com/zy/asrs/utils/MatCompareUtils.java b/src/main/java/com/zy/asrs/utils/MatCompareUtils.java index 5b26158..192f4af 100644 --- a/src/main/java/com/zy/asrs/utils/MatCompareUtils.java +++ b/src/main/java/com/zy/asrs/utils/MatCompareUtils.java @@ -1,12 +1,16 @@ package com.zy.asrs.utils; import com.core.common.Cools; +import com.zy.asrs.entity.LocDetl; import com.zy.asrs.entity.OrderDetl; import com.zy.common.model.LocDto; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.lang.reflect.Field; +import java.util.ArrayList; +import java.util.List; +import java.util.Objects; /** * 鐢ㄦ埛鐗╂枡淇℃伅姣斿锛屽垽鏂槸鍚︿负鍚屼竴鐗╂枡 @@ -15,7 +19,7 @@ private static final Logger log = LoggerFactory.getLogger(MatCompareUtils.class); - private static final String[] sameFields = {"matnr", "batch", "outOrderNo", "luHao", "packing", "sPgNO", "proType"}; + private static final String[] sameFields = {"matnr", "batch", "outOrderNo", "luHao", "packing", "sPgNO", "proType","color"}; public static boolean compare(Object object1, Object object2) { @@ -25,13 +29,42 @@ for (String fieldName : sameFields) { Object fieldValue1 = getFieldValue(object1, fieldName); Object fieldValue2 = getFieldValue(object2, fieldName); - if (isSame(fieldValue1, fieldValue2)) { - log.info("瀛楁{}淇℃伅涓�鑷达紝{}-{}", fieldName, fieldValue1, fieldValue2); - }else { + if (!isSame(fieldValue1, fieldValue2)) { + log.info("瀛楁{}淇℃伅涓嶄竴鑷达紝{}_{}-{}_{}", fieldName, object1.getClass(), fieldValue1, object2.getClass(), fieldValue2); return false; } } return true; + } + + /** + * 姣旇緝涓や釜闆嗗悎鐨勭被鐨勫睘鎬э紝鐩稿悓鍒欐姷娑堬紝鏈�鍚庡垽鏂袱涓泦鍚堟槸鍚﹀畬鍏ㄦ姷娑� + */ + public static boolean compareAndCheckCancellation(List<LocDetl> list1, List<OrderDetl> list2) { + if (list1.size() != list2.size()) { + return false; // If lists are not of the same size, cancellation is not possible + } + + List<OrderDetl> remainingList2 = new ArrayList<>(list2); + + // Compare and cancel out elements + for (LocDetl p1 : list1) { + boolean cancelled = false; + for (OrderDetl p2 : remainingList2) { + if (Objects.equals(p1.getMatnr(),p2.getMatnr()) && Objects.equals(p1.getBatch(),p2.getBatch()) && Objects.equals(p1.getOutOrderNo(),p2.getOutOrderNo()) && + Objects.equals(p1.getLuHao(),p2.getLuHao()) && Objects.equals(p1.getPacking(),p2.getPacking()) && Objects.equals(p1.getSPgNO(),p2.getSPgNO()) && + Objects.equals(p1.getProType(),p2.getProType()) && Objects.equals(p1.getColor(),p2.getColor())) { + remainingList2.remove(p2); + cancelled = true; + break; + } + } + if (!cancelled) { + return false; // If any element in list1 cannot be cancelled, return false + } + } + + return remainingList2.isEmpty(); // Return true if all elements in list1 were cancelled out } private static boolean isSame(Object fieldValue1, Object fieldValue2) { @@ -49,13 +82,11 @@ Field field = null; try { field = aClass.getDeclaredField(fieldName); - } catch (NoSuchFieldException e) { - return null; - } - field.setAccessible(true); // 璁剧疆涓哄彲璁块棶 - try { + // 璁剧疆涓哄彲璁块棶 + field.setAccessible(true); return field.get(object); - } catch (IllegalAccessException e) { + } catch (NoSuchFieldException | IllegalAccessException e) { + log.error("瀛楁{}缂哄け,瀵硅薄{}", fieldName, object); return null; } } -- Gitblit v1.9.1