|
|
@@ -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)
|
|
|
{
|