StockInController.php 6.5 KB

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