Browse Source

修改花材分类同步问题

shish 2 năm trước cách đây
mục cha
commit
47943d9f35

+ 15 - 5
biz-ghs/product/classes/ProductClass.php

@@ -1529,6 +1529,11 @@ class ProductClass extends BaseClass
         if (isset($data["classId"])) {
             $classId = $data['classId'];
             $upData['classId'] = $classId;
+            if (isset($product->classId) && $product->classId == $classId) {
+                //如果有修改分类,则在多个订单表中同步修改,如需修改,多个地方要同步修改,请搜索关键词item_class_modify_sync
+                $itemClassKey = 'item_class_modify_sync';
+                Yii::$app->redis->executeCommand('LPUSH', [$itemClassKey, $id]);
+            }
         }
 
         if (isset($data["scanNum"]) && is_numeric($data["scanNum"])) {
@@ -1693,6 +1698,11 @@ class ProductClass extends BaseClass
                 $staffName = $staff->name ?? '';
                 $changeParams2 = ['staffId' => $staffId, 'staffName' => $staffName];
 
+                $chainProduct = ProductClass::getByCondition(['mainId' => $chainMainId, 'itemId' => $ptItemId], true);
+                if (empty($chainProduct)) {
+                    continue;
+                }
+
                 //如果有同步分类则移动,没有则不移动
                 if (isset($params['classId'])) {
                     $masterClassId = $params['classId'];
@@ -1704,16 +1714,16 @@ class ProductClass extends BaseClass
                         foreach ($classList as $currentClass) {
                             if ($currentClass->name == $masterClassName) {
                                 $params['classId'] = $currentClass->id ?? 0;
+                                if (isset($chainProduct->classId) && $chainProduct->classId != $params['classId']) {
+                                    //如果有修改分类,则在多个订单表中同步修改,如需修改,多个地方要同步修改,请搜索关键词item_class_modify_sync
+                                    $itemClassKey = 'item_class_modify_sync';
+                                    Yii::$app->redis->executeCommand('LPUSH', [$itemClassKey, $chainProduct->id]);
+                                }
                             }
                         }
                     }
                 }
 
-                $chainProduct = ProductClass::getByCondition(['mainId' => $chainMainId, 'itemId' => $ptItemId], true);
-                if (empty($chainProduct)) {
-                    continue;
-                }
-
                 /***************产品模块*****************/
                 if (!empty($ptCpIds)) {
                     $chainProductId = $chainProduct->id ?? 0;

+ 31 - 0
console/controllers/ItemController.php

@@ -21,6 +21,7 @@ use bizHd\saas\models\Apply;
 use bizHd\saas\services\ApplyService;
 use common\components\dict;
 use common\components\imgUtil;
+use common\components\noticeUtil;
 use common\components\stringUtil;
 use common\components\util;
 use yii\console\Controller;
@@ -51,6 +52,36 @@ class ItemController extends Controller
         }
     }
 
+    //花材修改分类同步 ssh 20240523
+    public function actionModifyItemClassSync()
+    {
+        ini_set('memory_limit', '5045M');
+        set_time_limit(0);
+        $productIdCachedKey = 'item_class_modify_sync';
+        $idList = [];
+        while ($count = Yii::$app->redis->executeCommand('LLEN', [$productIdCachedKey])) {
+            if (count($idList) > 20) {
+                break;
+            }
+            $currentId = Yii::$app->redis->executeCommand('RPOP', [$productIdCachedKey]);
+            $idList[] = $currentId;
+        }
+        if (empty($idList)) {
+            return false;
+        }
+        noticeUtil::push(implode(',', $idList) . ' 这些花材ID修改了分类,在处理中', '15280215347');
+        $list = ProductClass::getAllByCondition(['id' => ['in', $idList]], null, '*', null, true);
+        if (!empty($list)) {
+            foreach ($list as $info) {
+                $classId = $info->classId ?? 0;
+                $productId = $info->id ?? 0;
+                OrderItemClass::updateByCondition(['productId' => $productId], ['classId' => $classId]);
+                \bizHd\order\classes\OrderItemClass::updateByCondition(['itemId' => $productId], ['classId' => $classId]);
+                PurchaseOrderItemClass::updateByCondition(['productId' => $productId], ['classId' => $classId]);
+            }
+        }
+    }
+
     //【重要】将花材的分类id同步到批发销售单、批发采购单和零售销售单【小丽优先】
     public function actionSyncClass()
     {