shish 4 سال پیش
والد
کامیت
e299fe8cee

+ 8 - 2
app-hd/controllers/WorkController.php

@@ -93,9 +93,15 @@ class WorkController extends BaseController
         $connection = Yii::$app->db;
         $transaction = $connection->beginTransaction();
         try {
-            WorkService::GoodsCreateFinish($post);
+            $goodsJson = $post['goods'] ?? '';
+            $goods = json_decode($goodsJson, true);
+            if (empty($goods)) {
+                util::fail('没有找到成品');
+            }
+            $post['goods'] = $goods;
+            $work = WorkClass::goodsCreateFinish($post);
             $transaction->commit();
-            util::complete();
+            util::success(['work' => $work]);
         } catch (\Exception $e) {
             $transaction->rollBack();
             Yii::error("失败原因:" . $e->getMessage());

+ 1 - 1
app-mall/controllers/OrderController.php

@@ -172,7 +172,7 @@ class OrderController extends BaseController
                 'orderSn' => $orderSn,
                 'createTime' => date("Y-m-d H:i:s"),
             ];
-            OrderGoodsClass::addData($data);
+            OrderGoodsClass::addData($data, []);
             $transaction->commit();
             util::success(['orderSn' => $orderSn, 'totalPrice' => $actPrice, 'couponId' => $couponId, 'id' => $orderId]);
         } catch (Exception $e) {

+ 21 - 3
biz-hd/goods/classes/GoodsClass.php

@@ -7,6 +7,7 @@ use biz\shop\classes\ShopCapitalClass;
 use biz\stat\classes\StatCgPlantClass;
 use biz\stat\classes\StatOutClass;
 use bizHd\goods\services\GoodsCategoryService;
+use bizHd\work\classes\WorkClass;
 use bizHd\work\classes\WorkItemClass;
 use common\components\business;
 use common\components\dict;
@@ -464,7 +465,7 @@ class GoodsClass extends BaseClass
     }
 
     //减库存
-    public static function decreaseStock($goodsId, $mainId, $num)
+    public static function decreaseStock($goodsId, $mainId, $num, $checkStock = true, $params = [])
     {
         $key = self::LOCK_STOCK_GOODS . '_' . $goodsId;
         $lock = util::lock($key);
@@ -484,8 +485,25 @@ class GoodsClass extends BaseClass
         //改库存
         $newStock = $goodsData['stock'] - $num;
         if ($newStock < 0) {
-            $goodsName = $goodsData['name'] ?? '';
-            util::fail($goodsName . '库存不足,剩余:' . $goodsData['stock']);
+
+            if ($checkStock) {
+                $goodsName = $goodsData['name'] ?? '';
+                util::fail($goodsName . '库存不足,剩余:' . $goodsData['stock']);
+            }
+
+            //缺的库存生成制作单
+            $sjId = $goodsData['sjId'] ?? 0;
+            $orderSn = $params['orderSn'] ?? '';
+            $orderId = $params['orderId'] ?? 0;
+            $params = [
+                'goods' => ['productId' => $goodsId, 'num' => abs($newStock)],
+                'remark' => '',
+                'sjId' => $sjId,
+                'mainId' => $mainId,
+                'orderSn' => $orderSn,
+                'orderId' => $orderId,
+            ];
+            WorkClass::goodsCreateFinish($params);
         }
         $data['stock'] = $newStock;
         self::updateById($goodsId, $data);

+ 16 - 20
biz-hd/order/classes/OrderGoodsClass.php

@@ -24,20 +24,6 @@ class OrderGoodsClass extends BaseClass
     const ACTION_WASTAGE = 'wastage'; //取消消耗花材
     const ACTION_WASTAGE_CANCEL = 'wastageCancel'; //取消消耗花材
 
-    public static function addData($data, $custom)
-    {
-        $orderSn = $data['orderSn'] ?? '';
-        $sjId = $data['sjId'] ?? 0;
-        $shopId = $data['shopId'] ?? 0;
-        $mainId = $data['mainId'] ?? 0;
-        $goodsId = $data['goodsId'] ?? 0;
-        $num = $data['num'] ?? 0;
-        $customName = $custom['name'] ?? '';
-        //减库存
-        self::changeStockBySellGoods($orderSn, $sjId, $shopId, $mainId, $goodsId, $num, $customName);
-        return self::add($data);
-    }
-
     //取订单 ssh 2020.1.2
     public static function getGoodsListById($id)
     {
@@ -215,11 +201,19 @@ class OrderGoodsClass extends BaseClass
         return $stockInfo;
     }
 
-    //销售成品库存变更方法(减库存)
-    public static function changeStockBySellGoods($orderSn, $sjId, $shopId, $mainId, $goodsId, $goodsNum, $customName)
+    //花店商家自主开单,库存不足则不能开单
+    public static function addData($data, $custom)
     {
-        //减成品库存
-        $respond = GoodsClass::decreaseStock($goodsId, $mainId, $goodsNum);
+        $orderSn = $data['orderSn'] ?? '';
+        $sjId = $data['sjId'] ?? 0;
+        $shopId = $data['shopId'] ?? 0;
+        $mainId = $data['mainId'] ?? 0;
+        $goodsId = $data['goodsId'] ?? 0;
+        $num = $data['num'] ?? 0;
+        $customName = $custom['name'] ?? '';
+
+        //搜索关键词GoodsStockRecordClass::sellGoods,可以找到相同的方法
+        $respond = GoodsClass::decreaseStock($goodsId, $mainId, $num);
         $oldStock = $respond['oldStock'] ?? 0;
         $newStock = $respond['newStock'] ?? 0;
         $data = [];
@@ -228,14 +222,16 @@ class OrderGoodsClass extends BaseClass
         $data['mainId'] = $mainId;
         $data['orderSn'] = $orderSn;
         $data['goodsId'] = $goodsId;
-        $data['goodsNum'] = $goodsNum;
+        $data['goodsNum'] = $num;
         $data['oldStock'] = $oldStock;
         $data['newStock'] = $newStock;
         $data['relateName'] = $customName;
         GoodsStockRecordClass::sellGoods($data);
-        return true;
+
+        return self::add($data);
     }
 
+
     //制作工单消耗花材(批量)
     //消耗花材信息:$consumeItemInfo = [{"id":12233,"num":1,"unitType":0}]
     public static function consumeItemByMakeGoodsBatch($orderSn, $sjId, $shopId, $consumeItemInfo)

+ 85 - 0
biz-hd/work/classes/WorkClass.php

@@ -2,9 +2,13 @@
 
 namespace bizHd\work\classes;
 
+use bizHd\goods\classes\CategoryClass;
+use bizHd\goods\classes\GoodsCategoryClass;
 use bizHd\goods\classes\GoodsClass;
+use bizHd\goods\classes\GoodsItemClass;
 use bizHd\order\classes\OrderGoodsClass;
 use common\components\imgUtil;
+use common\components\orderSn;
 use common\components\util;
 use bizHd\base\classes\BaseClass;
 
@@ -17,6 +21,87 @@ class WorkClass extends BaseClass
     const STATUS_COMPLETE = 1;
     const STATUS_CANCEL = 2;
 
+    public static function goodsCreateFinish($data)
+    {
+        $goods = $data['goods'] ?? '';
+        $remark = $data['remark'] ?? '';
+        $sjId = $data['sjId'] ?? 0;
+        $shopId = $data['shopId'] ?? 0;
+        $mainId = $data['mainId'] ?? 0;
+        $ids = array_column($goods, 'productId');
+        $info = GoodsClass::getByIds($ids, null, 'id');
+        foreach ($goods as $key => $val) {
+            $goodsId = $val['productId'] ?? 0;
+            $name = $info[$goodsId]['name'] ?? '';
+            $goodsSn = $info[$goodsId]['sn'] ?? '';
+            $workNum = $val['num'] ?? 0;
+            $cover = isset($info[$goodsId]['cover']) && !empty($info[$goodsId]['cover']) ? $info[$goodsId]['cover'] : 'hhb_small.png';
+            $product = [];
+            $goodsItem = GoodsItemClass::getAllByCondition(['goodsId' => $goodsId], null, '*');
+            if (!empty($goodsItem)) {
+                foreach ($goodsItem as $one) {
+                    $itemId = $one['itemId'] ?? 0;
+                    $unitType = $one['unitType'] ?? 0;
+                    $num = $one['num'] ?? 0;
+                    $product[] = [
+                        'productId' => $itemId,
+                        'num' => $num,
+                        'unitType' => $unitType,
+                    ];
+                }
+            }
+            $goodsCat = GoodsCategoryClass::getByCondition(['gId' => $goodsId], true);
+            $catId = $goodsCat->cId ?? 0;
+            $catName = '';
+            if (!empty($catId)) {
+                $cat = CategoryClass::getById($catId, true);
+                $catName = $cat->categoryName ?? '';
+            }
+            $workSn = orderSn::getWorkSn();
+            $flowerNum = $info[$goodsId]['flowerNum'] ?? 0;
+            $orderSn = $data['orderSn'] ?? '';
+            $orderId = $data['orderId'] ?? 0;
+            $current = [
+                'name' => $name,
+                'num' => $workNum,
+                'cover' => $cover,
+                'remark' => $remark,
+                'catId' => $catId,
+                'catName' => $catName,
+                'product' => $product,
+                'goodsId' => $goodsId,
+                'goodsSn' => $goodsSn,
+                'sjId' => $sjId,
+                'shopId' => $shopId,
+                'mainId' => $mainId,
+                'workSn' => $workSn,
+                'flowerNum' => $flowerNum,
+                'orderSn' => $orderSn,
+                'orderId' => $orderId,
+            ];
+            return self::createFinish($current);
+        }
+    }
+
+    public static function createFinish($data)
+    {
+        $data['flowerNum'] = isset($data['flowerNum']) && is_numeric($data['flowerNum']) ? $data['flowerNum'] : 0;
+        $work = WorkClass::add($data, true);
+        $product = $data['product'] ?? [];
+        if (!empty($product)) {
+            //修改用材
+            WorkItemClass::modifyItem($work, $product);
+            //锁定库存
+            WorkItemClass::lock($work);
+        }
+        $complete = $data['complete'] ?? 0;
+        if ($complete == 1) {
+            //直接完成
+            WorkClass::finish($work);
+        }
+        return $work;
+    }
+
     //锁定工单 ssh 20220320
     public static function lock($work)
     {

+ 0 - 91
biz-hd/work/services/WorkService.php

@@ -3,101 +3,10 @@
 namespace bizHd\work\services;
 
 use bizHd\base\services\BaseService;
-use bizHd\goods\classes\CategoryClass;
-use bizHd\goods\classes\GoodsCategoryClass;
-use bizHd\goods\classes\GoodsClass;
-use bizHd\goods\classes\GoodsItemClass;
-use bizHd\work\classes\WorkClass;
-use bizHd\work\classes\WorkItemClass;
-use common\components\orderSn;
-use common\components\util;
-use Yii;
 
 class WorkService extends BaseService
 {
 
     public static $baseFile = '\bizHd\work\classes\WorkClass';
 
-    public static function GoodsCreateFinish($data)
-    {
-        $goods = $data['goods'] ?? '';
-        $goods = json_decode($goods, true);
-        if (empty($goods)) {
-            util::fail('没有找到成品');
-        }
-        $remark = $data['remark'] ?? '';
-        $sjId = $data['sjId'] ?? 0;
-        $shopId = $data['shopId'] ?? 0;
-        $mainId = $data['mainId'] ?? 0;
-        $ids = array_column($goods, 'productId');
-        $info = GoodsClass::getByIds($ids, null, 'id');
-        foreach ($goods as $key => $val) {
-            $goodsId = $val['productId'] ?? 0;
-            $name = $info[$goodsId]['name'] ?? '';
-            $goodsSn = $info[$goodsId]['sn'] ?? '';
-            $workNum = $val['num'] ?? 0;
-            $cover = isset($info[$goodsId]['cover']) && !empty($info[$goodsId]['cover']) ? $info[$goodsId]['cover'] : 'hhb_small.png';
-            $product = [];
-            $goodsItem = GoodsItemClass::getAllByCondition(['goodsId' => $goodsId], null, '*');
-            if (!empty($goodsItem)) {
-                foreach ($goodsItem as $one) {
-                    $itemId = $one['itemId'] ?? 0;
-                    $unitType = $one['unitType'] ?? 0;
-                    $num = $one['num'] ?? 0;
-                    $product[] = [
-                        'productId' => $itemId,
-                        'num' => $num,
-                        'unitType' => $unitType,
-                    ];
-                }
-            }
-            $goodsCat = GoodsCategoryClass::getByCondition(['gId' => $goodsId], true);
-            $catId = $goodsCat->cId ?? 0;
-            $catName = '';
-            if (!empty($catId)) {
-                $cat = CategoryClass::getById($catId, true);
-                $catName = $cat->categoryName ?? '';
-            }
-            $workSn = orderSn::getWorkSn();
-            $flowerNum = $info[$goodsId]['flowerNum'] ?? 0;
-            $current = [
-                'name' => $name,
-                'num' => $workNum,
-                'cover' => $cover,
-                'remark' => $remark,
-                'catId' => $catId,
-                'catName' => $catName,
-                'product' => $product,
-                'goodsId' => $goodsId,
-                'goodsSn' => $goodsSn,
-                'sjId' => $sjId,
-                'shopId' => $shopId,
-                'mainId' => $mainId,
-                'workSn' => $workSn,
-                'flowerNum' => $flowerNum,
-            ];
-            self::createFinish($current);
-        }
-    }
-
-    public static function createFinish($data)
-    {
-        $data['flowerNum'] = isset($data['flowerNum']) && is_numeric($data['flowerNum']) ? $data['flowerNum'] : 0;
-        $work = WorkClass::add($data, true);
-        $product = $data['product'] ?? [];
-        //有花材传入的情况是花艺师制作直接完成
-        if (!empty($product)) {
-            //修改用材
-            WorkItemClass::modifyItem($work, $product);
-            //锁定库存
-            WorkItemClass::lock($work);
-        }
-        $complete = $data['complete'] ?? 0;
-        if ($complete == 1) {
-            //直接完成
-            WorkClass::finish($work);
-        }
-        return $work;
-    }
-
 }

+ 7 - 9
biz-mall/order/classes/OrderGoodsClass.php

@@ -22,14 +22,11 @@ class OrderGoodsClass extends BaseClass
         $goodsId = $data['goodsId'] ?? 0;
         $num = $data['num'] ?? 0;
         $customName = $custom->name ?? '';
-        self::changeStockBySellGoods($orderSn, $sjId, $shopId, $mainId, $goodsId, $num, $customName);
-        return self::add($data);
-    }
+        $orderId = $data['orderId'] ?? 0;
 
-    //销售成品库存变更
-    public static function changeStockBySellGoods($orderSn, $sjId, $shopId, $mainId, $goodsId, $goodsNum, $customName)
-    {
-        $respond = GoodsClass::decreaseStock($goodsId, $mainId, $goodsNum);
+        //搜索关键词GoodsStockRecordClass::sellGoods,可以找到相同的方法
+        $params = ['orderId' => $orderId, 'orderSn' => $orderSn];
+        $respond = GoodsClass::decreaseStock($goodsId, $mainId, $num, false, $params);
         $oldStock = $respond['oldStock'] ?? 0;
         $newStock = $respond['newStock'] ?? 0;
         $data = [];
@@ -38,12 +35,13 @@ class OrderGoodsClass extends BaseClass
         $data['mainId'] = $mainId;
         $data['orderSn'] = $orderSn;
         $data['goodsId'] = $goodsId;
-        $data['goodsNum'] = $goodsNum;
+        $data['goodsNum'] = $num;
         $data['oldStock'] = $oldStock;
         $data['newStock'] = $newStock;
         $data['relateName'] = $customName;
         GoodsStockRecordClass::sellGoods($data);
-        return true;
+
+        return self::add($data);
     }
 
     //取订单 ssh 2020.1.2