瀏覽代碼

合并订单数量

shish 2 月之前
父節點
當前提交
0d4d2b0697
共有 2 個文件被更改,包括 60 次插入4 次删除
  1. 30 2
      biz-ghs/order/classes/OrderClass.php
  2. 30 2
      biz-hd/purchase/classes/PurchaseClass.php

+ 30 - 2
biz-ghs/order/classes/OrderClass.php

@@ -3202,6 +3202,7 @@ XL;
                 $order->mergeId = $hasMergeId;
                 $order->save();
                 OrderMergeClass::add(['mergeId' => $hasMergeId, 'orderId' => $orderId, 'mergeDate' => $date, 'customId' => $customId, 'mainId' => $mainId]);
+                self::syncOrderMergeNumForMergeId($hasMergeId);
             } else {
                 self::rebuildOrderMergeGroupForDay($ids, $date, $customId, $mainId);
             }
@@ -3213,6 +3214,7 @@ XL;
                 if (empty($oldMergeSn)) {
                     // 订单仍挂着 mergeId,但主档已不存在,避免后续报错并清理脏数据
                     $order->mergeId = 0;
+                    $order->mergeNum = 0;
                     $order->save();
                 } else {
                     $oldDate = $oldMergeSn->mergeDate ?? '';
@@ -3229,11 +3231,13 @@ XL;
                             $del[] = $mergeRow->orderId;
                             $mergeRow->delete();
                         }
-                        self::updateByIds($del, ['mergeId' => 0]);
+                        self::updateByIds($del, ['mergeId' => 0, 'mergeNum' => 0]);
                     } else {
                         $order->mergeId = 0;
+                        $order->mergeNum = 0;
                         $order->save();
                         OrderMergeClass::deleteByCondition(['mergeId' => $oldMergeId, 'orderId' => $orderId]);
+                        self::syncOrderMergeNumForMergeId($oldMergeId);
                     }
                 }
             }
@@ -3243,6 +3247,7 @@ XL;
                 $order->mergeId = $newMergeId;
                 $order->save();
                 OrderMergeClass::add(['mergeId' => $newMergeId, 'orderId' => $orderId, 'mergeDate' => $date, 'customId' => $customId, 'mainId' => $mainId]);
+                self::syncOrderMergeNumForMergeId($newMergeId);
             } else {
                 self::rebuildOrderMergeGroupForDay($ids, $date, $customId, $mainId);
             }
@@ -3260,7 +3265,8 @@ XL;
     {
         $mergeData = ['mergeDate' => $date, 'customId' => $customId, 'mainId' => $mainId];
         $mergeId = orderSn::getGhsOrderMergeId($mergeData);
-        self::updateByIds($ids, ['mergeId' => $mergeId]);
+        $mergeNum = count($ids);
+        self::updateByIds($ids, ['mergeId' => $mergeId, 'mergeNum' => $mergeNum]);
         $addData = [];
         foreach ($ids as $currentId) {
             $addData[] = ['mergeId' => $mergeId, 'orderId' => $currentId, 'mergeDate' => $date, 'customId' => $customId, 'mainId' => $mainId];
@@ -3268,6 +3274,28 @@ XL;
         OrderMergeClass::batchAdd($addData);
     }
 
+    /** 按 xhGhsOrderMerge 明细数量,回写该合并组内所有订单的 mergeNum */
+    private static function syncOrderMergeNumForMergeId($mergeId)
+    {
+        $mergeId = (int)$mergeId;
+        if ($mergeId <= 0) {
+            return;
+        }
+        $rows = OrderMergeClass::getAllByCondition(['mergeId' => $mergeId], null, 'orderId', null, true);
+        $mergeNum = count($rows);
+        if ($mergeNum === 0) {
+            return;
+        }
+        $orderIds = [];
+        foreach ($rows as $row) {
+            $orderIds[] = (int)(is_object($row) ? ($row->orderId ?? 0) : ($row['orderId'] ?? 0));
+        }
+        $orderIds = array_values(array_filter($orderIds));
+        if (!empty($orderIds)) {
+            self::updateByIds($orderIds, ['mergeNum' => $mergeNum]);
+        }
+    }
+
     // 更新同天内的所有订单的 sameTimeIds
     public static function updateSameTimeIds($order, $date)
     {

+ 30 - 2
biz-hd/purchase/classes/PurchaseClass.php

@@ -99,6 +99,7 @@ class PurchaseClass extends BaseClass
                 $cg->mergeId = $hasMergeId;
                 $cg->save();
                 CgMergeClass::add(['mergeId' => $hasMergeId, 'cgId' => $cgId, 'mergeDate' => $date, 'ghsId' => $ghsId, 'mainId' => $mainId]);
+                self::syncCgMergeNumForMergeId($hasMergeId);
             } else {
                 self::rebuildCgMergeGroupForDay($ids, $date, $ghsId, $mainId);
             }
@@ -109,6 +110,7 @@ class PurchaseClass extends BaseClass
                 $oldMergeSn = CgMergeSnClass::getById($oldMergeId, true);
                 if (empty($oldMergeSn)) {
                     $cg->mergeId = 0;
+                    $cg->mergeNum = 0;
                     $cg->save();
                 } else {
                     $oldDate = $oldMergeSn->mergeDate ?? '';
@@ -123,11 +125,13 @@ class PurchaseClass extends BaseClass
                             $del[] = $mergeRow->cgId;
                             $mergeRow->delete();
                         }
-                        self::updateByIds($del, ['mergeId' => 0]);
+                        self::updateByIds($del, ['mergeId' => 0, 'mergeNum' => 0]);
                     } else {
                         $cg->mergeId = 0;
+                        $cg->mergeNum = 0;
                         $cg->save();
                         CgMergeClass::deleteByCondition(['mergeId' => $oldMergeId, 'cgId' => $cgId]);
+                        self::syncCgMergeNumForMergeId($oldMergeId);
                     }
                 }
             }
@@ -137,6 +141,7 @@ class PurchaseClass extends BaseClass
                 $cg->mergeId = $newMergeId;
                 $cg->save();
                 CgMergeClass::add(['mergeId' => $newMergeId, 'cgId' => $cgId, 'mergeDate' => $date, 'ghsId' => $ghsId, 'mainId' => $mainId]);
+                self::syncCgMergeNumForMergeId($newMergeId);
             } else {
                 self::rebuildCgMergeGroupForDay($ids, $date, $ghsId, $mainId);
             }
@@ -157,7 +162,8 @@ class PurchaseClass extends BaseClass
         }
         $mergeData = ['mergeDate' => $date, 'ghsId' => $ghsId, 'mainId' => $mainId];
         $mergeId = orderSn::getCgMergeId($mergeData);
-        self::updateByIds($ids, ['mergeId' => $mergeId]);
+        $mergeNum = count($ids);
+        self::updateByIds($ids, ['mergeId' => $mergeId, 'mergeNum' => $mergeNum]);
         $addData = [];
         foreach ($ids as $currentId) {
             $addData[] = ['mergeId' => $mergeId, 'cgId' => $currentId, 'mergeDate' => $date, 'ghsId' => $ghsId, 'mainId' => $mainId];
@@ -165,6 +171,28 @@ class PurchaseClass extends BaseClass
         CgMergeClass::batchAdd($addData);
     }
 
+    /** 按 xhCgMerge 明细数量,回写该合并组内所有采购单的 mergeNum */
+    private static function syncCgMergeNumForMergeId($mergeId)
+    {
+        $mergeId = (int)$mergeId;
+        if ($mergeId <= 0) {
+            return;
+        }
+        $rows = CgMergeClass::getAllByCondition(['mergeId' => $mergeId], null, 'cgId', null, true);
+        $mergeNum = count($rows);
+        if ($mergeNum === 0) {
+            return;
+        }
+        $cgIds = [];
+        foreach ($rows as $row) {
+            $cgIds[] = (int)(is_object($row) ? ($row->cgId ?? 0) : ($row['cgId'] ?? 0));
+        }
+        $cgIds = array_values(array_filter($cgIds));
+        if (!empty($cgIds)) {
+            self::updateByIds($cgIds, ['mergeNum' => $mergeNum]);
+        }
+    }
+
     //获取打包费
     public static function getKmPackCost($mainId)
     {