request->post(); $ids = $post['ids'] ?? ''; $arr = json_decode($ids, true); if (is_array($arr) == false) { util::fail('没有盘点单'); } $idData = array_column($arr, 'id'); if (empty($idData) || is_array($idData) == false) { util::fail('没有盘点单哦'); } $idData = array_filter(array_unique($idData)); $list = StockInOrderClass::getByIds($idData); if (empty($list)) { util::fail('没有找到盘点单'); } $use = []; $inMainId = 0; foreach ($list as $item) { $inMainId = $item['inMainId'] ?? 0; if ($inMainId != $this->mainId) { util::fail('入库单有问题'); } $orderSn = $item['orderSn'] ?? ''; $itemList = StockInOrderItemClass::getAllByCondition(['orderSn' => $orderSn], null, '*'); if (!empty($itemList)) { foreach ($itemList as $it) { $itemId = $it['productId'] ?? 0; $ptItemId = $it['itemId'] ?? 0; $use[$itemId] = [ 'mainId' => $inMainId, 'itemId' => $itemId, 'ptItemId' => $ptItemId, ]; } } $id = $item['id'] ?? 0; StockInOrderClass::updateById($id, ['check' => 1]); } if (empty($use)) { util::fail('没有找到需要盘点的花材'); } StockInDayClass::deleteByCondition(['mainId' => $inMainId]); foreach ($use as $info) { StockInDayClass::add($info); } util::complete(); } //入库列表 lqh 2021.1.25 public function actionList() { $get = Yii::$app->request->get(); $orderStatus = isset($get['status']) ? $get['status'] : ''; $where = []; $where['inShopId'] = $this->shopId; if (!empty($orderStatus)) { $where['status'] = $orderStatus; } $searchTime = $get['searchTime'] ?? ''; //惠雅鲜花搜索BUG兼容 if (in_array($this->shopId, [2167, 2164])) { $searchTime = $get['searchTime'] ?? 'today'; } if (!empty($searchTime)) { $startTime = $get['startTime'] ?? ''; $endTime = $get['endTime'] ?? ''; $period = dateUtil::formatTime($searchTime, $startTime, $endTime); $where['addTime'] = ['between', [$period['startTime'], $period['endTime']]]; } $list = StockInOrderClass::getOrderList($where); util::success($list); } //入库详情 lqh 2021.1.25 public function actionDetail() { $orderSn = Yii::$app->request->get('orderSn', ''); $orderData = StockInOrderClass::getOrderDetail($orderSn, $this->shopId); util::success($orderData); } //获取完成入库信息和入库花材的实时库存 ssh 20250317 public function actionGetFullInfo() { $orderSn = Yii::$app->request->get('orderSn', ''); $in = StockInOrderClass::getByCondition(['orderSn' => $orderSn]); if (empty($in)) { util::fail('没有找到入库记录'); } if ($in['inMainId'] != $this->mainId) { util::fail('不是你的入库记录'); } $outShopId = $in['outShopId']; $outShop = ShopClass::getById($outShopId, true); $outShopName = $outShop->shopName ?? ''; $in['outShopName'] = $outShopName; $list = StockInOrderItemClass::getAllByCondition(['orderSn' => $orderSn], null, '*', null, null); $productInfo = []; if (!empty($list)) { $productIds = array_column($list, 'productId'); $productInfo = ProductClass::getAllByCondition(['id' => ['in', $productIds]], null, '*', 'id'); } foreach ($list as $key => $item) { $productId = $item['productId']; $current = $productInfo[$productId] ?? []; $currentStock = $current['stock'] ?? 0; $currentStock = floatval($currentStock); $list[$key]['currentStock'] = $currentStock; $itemNum = $item['itemNum'] ?? 0; $itemNum = floatval($itemNum); $list[$key]['itemNum'] = $itemNum; $itemInfo = $item['itemInfo']; $itemExt = json_decode($itemInfo, true); $itemName = $itemExt['itemName'] ?? ''; $list[$key]['itemName'] = $itemName; //前端使用,勿删 if ($currentStock >= $itemNum) { $actPutNum = $itemNum; } else { $actPutNum = $currentStock; } $list[$key]['actPutNum'] = $actPutNum; $changeNum = $actPutNum - $itemNum; $list[$key]['changeNum'] = $changeNum; } $respond = ['info' => $in, 'list' => $list]; util::success($respond); } //确认入库 lqh 2021.1.24 public function actionConfirmOrder() { $get = Yii::$app->request->get(); $orderSn = $get['orderSn']; try { util::runWithDbConcurrencyRetry(function () use ($orderSn) { $connection = Yii::$app->db; $transaction = $connection->beginTransaction(); try { StockInOrderClass::confirmOrder($orderSn, $this->shop, $this->adminId); $transaction->commit(); } catch (\Exception $exception) { if ($transaction->isActive) { $transaction->rollBack(); } throw $exception; } }); util::complete("入库成功"); } catch (\Exception $exception) { Yii::info("确认入库报错:" . $exception->getMessage()); if (util::isDbConcurrencyException($exception)) { util::fail('系统繁忙中,请稍后再试'); } else { util::fail(); } } } //取消入库 lqh 2021.1.24 public function actionCancelOrder() { $get = Yii::$app->request->get(); $orderSn = $get['orderSn'] ?? ''; $order = StockInOrderClass::getByCondition(['orderSn' => $orderSn], true); if (empty($order)) { util::fail('订单不存在'); } if (isset($order->inShopId) == false || $order->inShopId != $this->shopId) { util::fail('没有权限'); } try { util::runWithDbConcurrencyRetry(function () use ($order) { $connection = Yii::$app->db; $transaction = $connection->beginTransaction(); try { $id = $order->id ?? 0; $info = StockInOrderClass::getLockById($id); StockInOrderClass::cancelOrder($info, $this->adminId); $transaction->commit(); } catch (\Exception $exception) { if ($transaction->isActive) { $transaction->rollBack(); } throw $exception; } }); util::complete("取消成功"); } catch (\Exception $exception) { if (util::isDbConcurrencyException($exception)) { util::fail('系统繁忙中,请稍后再试'); } else { util::fail('取消失败'); } } } }