From 46ab6223f090af6072e88252e67c9e057114a2be Mon Sep 17 00:00:00 2001
From: chen.lin <1442464845@qq.com>
Date: 星期一, 02 二月 2026 14:41:52 +0800
Subject: [PATCH] 对比数量

---
 src/main/java/com/zy/asrs/controller/SaleOrderController.java |   60 +++++++++++++++++++++++++++++++++++++++++++++++++++++++-----
 1 files changed, 55 insertions(+), 5 deletions(-)

diff --git a/src/main/java/com/zy/asrs/controller/SaleOrderController.java b/src/main/java/com/zy/asrs/controller/SaleOrderController.java
index f9906f7..63dd356 100644
--- a/src/main/java/com/zy/asrs/controller/SaleOrderController.java
+++ b/src/main/java/com/zy/asrs/controller/SaleOrderController.java
@@ -234,6 +234,7 @@
         }
         int successCount = 0;
         int updateCount = 0;
+        int skipCount = 0;
         for (Map<String, Object> data : dataList) {
             try {
                 // 妫�鏌ユ槸鍚﹀凡瀛樺湪锛堟牴鎹鍗曞彿鍜岀墿鏂欑紪鐮侊級
@@ -242,11 +243,39 @@
                 
                 SaleOrder saleOrder;
                 boolean isUpdate = false;
+                boolean hasQtyChange = false;
+                
                 if (existOrder != null) {
-                    // 宸插瓨鍦紝鏇存柊鏁版嵁
-                    saleOrder = existOrder;
-                    isUpdate = true;
-                    updateCount++;
+                    // 宸插瓨鍦紝妫�鏌ユ暟閲忓瓧娈垫槸鍚︽湁鍙樺寲
+                    Double newOrderQty = parseDoubleSafely(data.get("orderQty"));
+                    Double newProductQty = parseDoubleSafely(data.get("productQty"));
+                    Double newInQty = parseDoubleSafely(data.get("inQty"));
+                    Double newOutQty = parseDoubleSafely(data.get("outQty"));
+                    Double newOutAmount = parseDoubleSafely(data.get("outAmount"));
+                    Double newOutPrice = parseDoubleSafely(data.get("outPrice"));
+                    Double newIcsbeqty = parseDoubleSafely(data.get("icsbeqty"));
+                    Double newSeoseqty = parseDoubleSafely(data.get("seoseqty"));
+                    
+                    // 姣旇緝鏁伴噺瀛楁鏄惁鏈夊彉鍖�
+                    hasQtyChange = !isDoubleEqual(existOrder.getOrderQty(), newOrderQty)
+                            || !isDoubleEqual(existOrder.getProductQty(), newProductQty)
+                            || !isDoubleEqual(existOrder.getInQty(), newInQty)
+                            || !isDoubleEqual(existOrder.getOutQty(), newOutQty)
+                            || !isDoubleEqual(existOrder.getOutAmount(), newOutAmount)
+                            || !isDoubleEqual(existOrder.getOutPrice(), newOutPrice)
+                            || !isDoubleEqual(existOrder.getIcsbeqty(), newIcsbeqty)
+                            || !isDoubleEqual(existOrder.getSeoseqty(), newSeoseqty);
+                    
+                    // 鍙湁褰撴暟閲忔湁鍙樺寲鏃舵墠鏇存柊
+                    if (hasQtyChange) {
+                        saleOrder = existOrder;
+                        isUpdate = true;
+                        updateCount++;
+                    } else {
+                        // 鏁伴噺娌℃湁鍙樺寲锛岃烦杩囨洿鏂�
+                        skipCount++;
+                        continue;
+                    }
                 } else {
                     // 涓嶅瓨鍦紝鍒涘缓鏂拌褰�
                     saleOrder = new SaleOrder();
@@ -293,7 +322,28 @@
                 e.printStackTrace();
             }
         }
-        return R.ok("鎴愬姛淇濆瓨 " + successCount + " 鏉℃柊鏁版嵁锛屾洿鏂� " + updateCount + " 鏉″凡瀛樺湪鏁版嵁");
+        String message = "鎴愬姛淇濆瓨 " + successCount + " 鏉℃柊鏁版嵁锛屾洿鏂� " + updateCount + " 鏉″凡瀛樺湪鏁版嵁";
+        if (skipCount > 0) {
+            message += "锛岃烦杩� " + skipCount + " 鏉℃暟閲忔湭鍙樺寲鐨勬暟鎹�";
+        }
+        return R.ok(message);
+    }
+    
+    /**
+     * 姣旇緝涓や釜Double鍊兼槸鍚︾浉绛夛紙澶勭悊null鍊硷級
+     * @param d1 绗竴涓狣ouble鍊�
+     * @param d2 绗簩涓狣ouble鍊�
+     * @return true-鐩哥瓑锛宖alse-涓嶇浉绛�
+     */
+    private boolean isDoubleEqual(Double d1, Double d2) {
+        if (d1 == null && d2 == null) {
+            return true;
+        }
+        if (d1 == null || d2 == null) {
+            return false;
+        }
+        // 浣跨敤璇樊鑼冨洿姣旇緝锛岄伩鍏嶆诞鐐规暟绮惧害闂
+        return Math.abs(d1 - d2) < 0.0001;
     }
 
     @RequestMapping(value = "/saleOrder/update/auth")

--
Gitblit v1.9.1