StockInController.php 6.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188
  1. <?php
  2. namespace ghs\controllers;
  3. use bizGhs\order\classes\StockInOrderClass;
  4. use bizGhs\order\classes\StockInOrderItemClass;
  5. use bizGhs\product\classes\ProductClass;
  6. use bizGhs\shop\classes\ShopClass;
  7. use bizGhs\stock\classes\StockInDayClass;
  8. use common\components\dateUtil;
  9. use common\components\util;
  10. use Yii;
  11. //入库 lqh 2021.1.25
  12. class StockInController extends BaseController
  13. {
  14. //入库单盘点,生成需要盘点的花材 ssh 20221208
  15. public function actionCreatePdItem()
  16. {
  17. $post = Yii::$app->request->post();
  18. $ids = $post['ids'] ?? '';
  19. $arr = json_decode($ids, true);
  20. if (is_array($arr) == false) {
  21. util::fail('没有盘点单');
  22. }
  23. $idData = array_column($arr, 'id');
  24. if (empty($idData) || is_array($idData) == false) {
  25. util::fail('没有盘点单哦');
  26. }
  27. $idData = array_filter(array_unique($idData));
  28. $list = StockInOrderClass::getByIds($idData);
  29. if (empty($list)) {
  30. util::fail('没有找到盘点单');
  31. }
  32. $use = [];
  33. $inMainId = 0;
  34. foreach ($list as $item) {
  35. $inMainId = $item['inMainId'] ?? 0;
  36. if ($inMainId != $this->mainId) {
  37. util::fail('入库单有问题');
  38. }
  39. $orderSn = $item['orderSn'] ?? '';
  40. $itemList = StockInOrderItemClass::getAllByCondition(['orderSn' => $orderSn], null, '*');
  41. if (!empty($itemList)) {
  42. foreach ($itemList as $it) {
  43. $itemId = $it['productId'] ?? 0;
  44. $ptItemId = $it['itemId'] ?? 0;
  45. $use[$itemId] = [
  46. 'mainId' => $inMainId,
  47. 'itemId' => $itemId,
  48. 'ptItemId' => $ptItemId,
  49. ];
  50. }
  51. }
  52. $id = $item['id'] ?? 0;
  53. StockInOrderClass::updateById($id, ['check' => 1]);
  54. }
  55. if (empty($use)) {
  56. util::fail('没有找到需要盘点的花材');
  57. }
  58. StockInDayClass::deleteByCondition(['mainId' => $inMainId]);
  59. foreach ($use as $info) {
  60. StockInDayClass::add($info);
  61. }
  62. util::complete();
  63. }
  64. //入库列表 lqh 2021.1.25
  65. public function actionList()
  66. {
  67. $get = Yii::$app->request->get();
  68. $orderStatus = isset($get['status']) ? $get['status'] : '';
  69. $where = [];
  70. $where['inShopId'] = $this->shopId;
  71. if (!empty($orderStatus)) {
  72. $where['status'] = $orderStatus;
  73. }
  74. $searchTime = $get['searchTime'] ?? '';
  75. //惠雅鲜花搜索BUG兼容
  76. if (in_array($this->shopId, [2167, 2164])) {
  77. $searchTime = $get['searchTime'] ?? 'today';
  78. }
  79. if (!empty($searchTime)) {
  80. $startTime = $get['startTime'] ?? '';
  81. $endTime = $get['endTime'] ?? '';
  82. $period = dateUtil::formatTime($searchTime, $startTime, $endTime);
  83. $where['addTime'] = ['between', [$period['startTime'], $period['endTime']]];
  84. }
  85. $list = StockInOrderClass::getOrderList($where);
  86. util::success($list);
  87. }
  88. //入库详情 lqh 2021.1.25
  89. public function actionDetail()
  90. {
  91. $orderSn = Yii::$app->request->get('orderSn', '');
  92. $orderData = StockInOrderClass::getOrderDetail($orderSn, $this->shopId);
  93. util::success($orderData);
  94. }
  95. //获取完成入库信息和入库花材的实时库存 ssh 20250317
  96. public function actionGetFullInfo()
  97. {
  98. $orderSn = Yii::$app->request->get('orderSn', '');
  99. $in = StockInOrderClass::getByCondition(['orderSn' => $orderSn]);
  100. if (empty($in)) {
  101. util::fail('没有找到入库记录');
  102. }
  103. if ($in['inMainId'] != $this->mainId) {
  104. util::fail('不是你的入库记录');
  105. }
  106. $outShopId = $in['outShopId'];
  107. $outShop = ShopClass::getById($outShopId, true);
  108. $outShopName = $outShop->shopName ?? '';
  109. $in['outShopName'] = $outShopName;
  110. $list = StockInOrderItemClass::getAllByCondition(['orderSn' => $orderSn], null, '*', null, null);
  111. $productInfo = [];
  112. if (!empty($list)) {
  113. $productIds = array_column($list, 'productId');
  114. $productInfo = ProductClass::getAllByCondition(['id' => ['in', $productIds]], null, '*', 'id');
  115. }
  116. foreach ($list as $key => $item) {
  117. $productId = $item['productId'];
  118. $current = $productInfo[$productId] ?? [];
  119. $currentStock = $current['stock'] ?? 0;
  120. $currentStock = floatval($currentStock);
  121. $list[$key]['currentStock'] = $currentStock;
  122. $itemNum = $item['itemNum'] ?? 0;
  123. $itemNum = floatval($itemNum);
  124. $list[$key]['itemNum'] = $itemNum;
  125. $itemInfo = $item['itemInfo'];
  126. $itemExt = json_decode($itemInfo, true);
  127. $itemName = $itemExt['itemName'] ?? '';
  128. $list[$key]['itemName'] = $itemName;
  129. //前端使用,勿删
  130. if ($currentStock >= $itemNum) {
  131. $actPutNum = $itemNum;
  132. } else {
  133. $actPutNum = $currentStock;
  134. }
  135. $list[$key]['actPutNum'] = $actPutNum;
  136. $changeNum = $actPutNum - $itemNum;
  137. $list[$key]['changeNum'] = $changeNum;
  138. }
  139. $respond = ['info' => $in, 'list' => $list];
  140. util::success($respond);
  141. }
  142. //确认入库 lqh 2021.1.24
  143. public function actionConfirmOrder()
  144. {
  145. $get = Yii::$app->request->get();
  146. $orderSn = $get['orderSn'];
  147. $connection = Yii::$app->db;
  148. $transaction = $connection->beginTransaction();
  149. try {
  150. StockInOrderClass::confirmOrder($orderSn, $this->shop, $this->adminId);
  151. $transaction->commit();
  152. util::complete("入库成功");
  153. } catch (\Exception $exception) {
  154. Yii::info("确认入库报错:" . $exception->getMessage());
  155. $transaction->rollBack();
  156. util::fail();
  157. }
  158. }
  159. //取消入库 lqh 2021.1.24
  160. public function actionCancelOrder()
  161. {
  162. $get = Yii::$app->request->get();
  163. $orderSn = $get['orderSn'] ?? '';
  164. $order = StockInOrderClass::getByCondition(['orderSn' => $orderSn], true);
  165. if (empty($order)) {
  166. util::fail('订单不存在');
  167. }
  168. if (isset($order->inShopId) == false || $order->inShopId != $this->shopId) {
  169. util::fail('没有权限');
  170. }
  171. $id = $order->id ?? 0;
  172. $info = StockInOrderClass::getLockById($id);
  173. StockInOrderClass::cancelOrder($info, $this->adminId);
  174. util::complete("取消成功");
  175. }
  176. }