ItemClass.php 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649
  1. <?php
  2. namespace bizHd\item\classes;
  3. use biz\item\classes\PtItemCatClass;
  4. use biz\item\classes\PtItemCatRelateClass;
  5. use biz\item\classes\PtItemClass;
  6. use biz\item\classes\PtItemClassClass;
  7. use bizGhs\order\classes\CheckOrderClass;
  8. use bizGhs\order\classes\CheckOrderItemClass;
  9. use bizGhs\stock\classes\StockRecordClass;
  10. use bizHd\base\classes\BaseClass;
  11. use bizHd\product\classes\ProductClass;
  12. use bizHd\shop\classes\ShopClass;
  13. use common\components\imgUtil;
  14. use common\components\orderSn;
  15. use common\components\stringUtil;
  16. use common\components\util;
  17. use common\services\xhItemService;
  18. use Yii;
  19. class ItemClass extends BaseClass
  20. {
  21. public static $baseFile = '\bizHd\item\models\Item';
  22. //修改product
  23. public static function updateProduct($data, $shop)
  24. {
  25. $id = $data['id'] ?? 0;
  26. $sjId = $shop->sjId ?? 0;
  27. $shopId = $shop->id ?? 0;
  28. $mainId = $shop->mainId ?? 0;
  29. $product = self::getLockById($id);
  30. if (empty($product)) {
  31. util::fail("该花材不存在");
  32. }
  33. $upData = [];
  34. //库存可以修改
  35. if (isset($data['stock']) && is_numeric($data['stock'])) {
  36. $preStock = $product->stock ?? 0;
  37. if ($data['stock'] != $preStock) {
  38. if ($data['stock'] < 0) {
  39. util::fail("库存不能小于0");
  40. }
  41. if (floor($data['stock']) != $data['stock']) {
  42. util::fail('库存请填写整数');
  43. }
  44. //增加盘点记录 2021.7.27
  45. $ratio = $product->ratio ?? 0;
  46. $formNum = self::formatStock($data['stock'], $ratio);
  47. $ghsItemInfo = [['productId' => $product->id, 'bigNum' => $formNum['bigNum'], 'smallNum' => $formNum['smallNum'],]];
  48. $pdData = [];
  49. $pdData['itemInfo'] = $ghsItemInfo;
  50. $pdData['sjId'] = $sjId;
  51. $pdData['shopId'] = $shopId;
  52. $pdData['adminId'] = $data['adminId'];
  53. $pdData['mainId'] = $mainId;
  54. $pdData['staffName'] = $data['staffName'] ?? '';
  55. CheckOrderClass::opOrder($pdData, false, false);
  56. }
  57. unset($data['stock']);
  58. }
  59. unset($data['adminId']);
  60. if (isset($data['name'])) {
  61. if (empty($data['name'])) {
  62. util::fail("请输入花材名称");
  63. }
  64. $upData['name'] = $data['name'];
  65. }
  66. if (isset($data['py']) && !empty($data['py'])) {
  67. $upData['py'] = $data['py'];
  68. }
  69. if (isset($data['cover']) && !empty($data['cover'])) {
  70. $upData['cover'] = $data['cover'];
  71. }
  72. if (isset($data['discountPrice']) && is_numeric($data['discountPrice'])) {
  73. $discountPrice = $data['discountPrice'] ?? 0;
  74. $currentPrice = $data['price'] ?? 0;
  75. if ($discountPrice >= $currentPrice) {
  76. util::fail('今日特价要小于售价');
  77. }
  78. $upData['discountPrice'] = $discountPrice;
  79. }
  80. //加价
  81. $upData['skAddPrice'] = $data['skAddPrice'] ?? 0;
  82. //价格
  83. $price = $data['skPrice'] ?? 0;
  84. if (is_numeric($price) == false || $price < 0) {
  85. util::fail('请填写价格');
  86. }
  87. $upData['skPrice'] = $price;
  88. if (isset($data['stockWarning'])) {
  89. $upData['stockWarning'] = $data['stockWarning'];
  90. }
  91. if (isset($data['inTurn'])) {
  92. $upData['inTurn'] = $data['inTurn'];
  93. }
  94. if (isset($data['delStatus'])) {
  95. $upData['delStatus'] = $data['delStatus'];
  96. }
  97. //分类ID
  98. if (isset($data["classId"])) {
  99. $classId = $data['classId'];
  100. $upData['classId'] = $classId;
  101. }
  102. $paramsBack = $upData;
  103. $ptItemId = $product->itemId ?? 0;
  104. //修改价格
  105. if ($price != $product->price) {
  106. self::changeSinglePrice($shop, $ptItemId, $price);
  107. unset($upData['skPrice']);
  108. }
  109. //修改其它
  110. self::updateById($id, $upData);
  111. if (isset($shop->default) && $shop->default == 1) {
  112. //首店修改同步到所有直营店
  113. $chainShopList = ShopClass::getAllByCondition(['sjId' => $sjId], null, '*', null, true);
  114. foreach ($chainShopList as $chainShop) {
  115. $chainShopId = $chainShop->id ?? 0;
  116. if (isset($chainShop->join) && $chainShop->join == 1) {
  117. continue;
  118. }
  119. if ($chainShopId == $shop->id) {
  120. //前面已经添加过了
  121. continue;
  122. }
  123. $params = $paramsBack;
  124. //所有直营店的分类、上下架、启用停用不同步
  125. unset($params['classId']);
  126. unset($params['status']);
  127. unset($params['delStatus']);
  128. $chainMainId = $chainShop->mainId ?? 0;
  129. $chainProduct = ProductClass::getByCondition(['mainId' => $chainMainId, 'itemId' => $ptItemId], true);
  130. if (empty($chainProduct)) {
  131. continue;
  132. }
  133. if ($price != $chainProduct->price) {
  134. self::changeSinglePrice($chainShop, $ptItemId, $price);
  135. unset($params['skPrice']);
  136. }
  137. self::updateById($chainProduct->id, $params);
  138. }
  139. }
  140. }
  141. //单个价格修改 ssh 20220503
  142. public static function changeSinglePrice($shop, $ptItemId, $price)
  143. {
  144. $mainId = $shop->mainId ?? 0;
  145. $productInfo = ProductClass::getByCondition(['itemId' => $ptItemId, 'mainId' => $mainId], true);
  146. if (empty($productInfo)) {
  147. return false;
  148. }
  149. $productInfo->skPrice = $price;
  150. $productInfo->save();
  151. }
  152. //新增花材
  153. public static function addItem($data, $currentShop)
  154. {
  155. $currentMainId = $currentShop->mainId ?? 0;
  156. $classId = $data['classId'] ?? 0;
  157. $mainId = $data['mainId'] ?? 0;
  158. $stockWarning = $data['stockWarning'] ?? false;
  159. $data['py'] = stringUtil::py($data['name']);
  160. $name = $data['name'] ?? false;
  161. $data['alias'] = $data['alias'] ?? '';
  162. $data['cover'] = isset($data['cover']) && !empty($data['cover']) ? $data['cover'] : '';
  163. $ratio = $data['ratio'] ?? false;
  164. $weight = $data['weight'] ?? false;
  165. $data['bigUnit'] = $data['bigUnit'] ?? '扎';
  166. $data['smallUnit'] = $data['smallUnit'] ?? '支';
  167. $data['shopId'] = $data['shopId'] ?? 0;
  168. $currentShopId = $data['shopId'];
  169. $data['sjId'] = $data['sjId'] ?? 0;
  170. if (!$data['sjId']) {
  171. util::fail("参数错误");
  172. }
  173. $stock = 0;
  174. if (isset($data['stock']) && is_numeric($data['stock'])) {
  175. if ($data['stock'] < 0) {
  176. util::fail("库存数不能小于0");
  177. }
  178. $stock = $data['stock'];
  179. }
  180. //没有库存则下架
  181. $data['status'] = $stock == 0 ? 2 : 1;
  182. if (!$classId) {
  183. util::fail("请选择分类");
  184. }
  185. if (isset($data['skPrice']) == false || is_numeric($data['skPrice']) == false || $data['skPrice'] < 0) {
  186. util::fail("请输入价格");
  187. }
  188. if (isset($data['skAddPrice']) == false || is_numeric($data['skAddPrice']) == false) {
  189. util::fail("请输入加价");
  190. }
  191. if ($stockWarning === false) {
  192. util::fail("请输入库存预警值");
  193. }
  194. if ($name === false) {
  195. util::fail("请输入花材名称");
  196. }
  197. if ($ratio === false) {
  198. util::fail("请输入花材比例");
  199. }
  200. if ($weight === false) {
  201. util::fail("请输入花材重量");
  202. }
  203. $cat = ItemClassClass::getById($classId, true);
  204. if (empty($cat)) {
  205. util::fail("花材分类不存在");
  206. }
  207. if ($cat->mainId != $mainId) {
  208. util::fail('不是您的分类');
  209. }
  210. $connection = Yii::$app->db;
  211. $transaction = $connection->beginTransaction();
  212. try {
  213. if (isset($data['itemId']) == false || empty($data['itemId'])) {
  214. //添加新品种先在平台新增花材
  215. $defaultInfo = PtItemClassClass::getByCondition(['isDefault' => 1]);
  216. $defaultClassId = $defaultInfo['id'] ?? 0;
  217. if (empty($defaultClassId)) {
  218. Yii::info('添加花材时没有找到默认分类');
  219. util::fail('添加失败');
  220. }
  221. $itemData = $data;
  222. $itemData['classId'] = $defaultClassId;
  223. $itemData['skAddPrice'] = $itemData['skAddPrice'] ?? 3;
  224. $itemData['hjAddPrice'] = $itemData['hjAddPrice'] ?? 2;
  225. $itemData['zsAddPrice'] = $itemData['zsAddPrice'] ?? 1;
  226. $ptItemInfo = PtItemClass::addItem($itemData);
  227. $data['itemId'] = $ptItemInfo['id'];
  228. } else {
  229. //从平台导入花材
  230. $has = self::getByCondition(['mainId' => $mainId, 'itemId' => $data['itemId']], true);
  231. if (!empty($has)) {
  232. util::fail('已经导入过了哈');
  233. }
  234. }
  235. $ptItemId = $data['itemId'] ?? 0;
  236. $res = self::add($data, true);
  237. if ($stock > 0) {
  238. //有库存数量,增加盘盈记录 2021.7.9 lqh
  239. //增加盘点订单
  240. $pdOrderSn = orderSn::getGhsCheckSn();
  241. $pdOrderData = [];
  242. $pdOrderData['orderSn'] = $pdOrderSn;
  243. $pdOrderData['sjId'] = $data['sjId'];
  244. $pdOrderData['shopId'] = $data['shopId'];
  245. $pdOrderData['status'] = CheckOrderClass::STATUS_COMPLETE;
  246. $pdOrderData['bigNum'] = $stock;
  247. $pdOrderData['adminId'] = $data['adminId'];
  248. $pdOrderData['smallNum'] = 0;
  249. $pdOrderData['price'] = $data['price'];
  250. $pdOrderData['remark'] = '添加花材时初始化库存';
  251. CheckOrderClass::add($pdOrderData);
  252. $pdOrderItemData = [];
  253. $pdOrderItemData['orderSn'] = $pdOrderSn;
  254. $pdOrderItemData['productId'] = $res->id;
  255. $pdOrderItemData['itemId'] = $data['itemId'];
  256. $pdOrderItemData['itemId'] = $data['itemId'];
  257. $pdOrderItemData['itemNum'] = $stock;
  258. $pdOrderItemData['itemStock'] = 0;
  259. $pdOrderItemData['profitLostNum'] = $stock;
  260. $itemInfo = [
  261. 'itemName' => $name,
  262. 'itemCover' => $data['cover'],
  263. 'bigNum' => $stock,
  264. 'smallNum' => 0,
  265. 'bigNumStock' => 0,
  266. 'smallNumStock' => 0,
  267. 'bigNumProfitLoss' => $stock,
  268. 'smallNumProfitLoss' => 0,
  269. 'itemUnit' => 0,
  270. 'ratio' => $ratio,
  271. 'rank' => 'A',
  272. 'bigUnit' => $data['bigUnit'],
  273. 'smallUnit' => $data['smallUnit'],
  274. ];
  275. $pdOrderItemData['itemInfo'] = json_encode($itemInfo);
  276. $pdOrderItemData['itemPrice'] = $data['price'];
  277. $pdOrderItemData['itemCost'] = $data['cost'];
  278. CheckOrderItemClass::add($pdOrderItemData);
  279. $record = [];
  280. $record['sjId'] = $data['sjId'];
  281. $record['shopId'] = $data['shopId'];
  282. //增加中央ID
  283. $record['mainId'] = $currentMainId;
  284. $record['orderSn'] = $pdOrderSn;
  285. $record['itemId'] = $data['itemId'];
  286. $record['productId'] = $res->id;
  287. $record['itemNum'] = $stock;//盈亏数
  288. $record['oldStock'] = 0;
  289. $record['newStock'] = $stock; //新库存直接等于盘点的数量
  290. StockRecordClass::addCheckOrderRecord($record);
  291. }
  292. if (isset($currentShop->default) && $currentShop->default == 1) {
  293. //找到父级sj下的所有直营店,添加花材
  294. $shopList = ShopClass::getAllByCondition(['sjId' => $data['sjId']], null, '*', null, true);
  295. foreach ($shopList as $shop) {
  296. if (isset($shop->join) && $shop->join == 1) {
  297. continue;
  298. }
  299. $shopId = $shop->id ?? 0;
  300. if ($shopId == $currentShop->id) {
  301. //前面已经添加过了
  302. continue;
  303. }
  304. $thisMainId = $shop->mainId ?? 0;
  305. $data['shopId'] = $shopId;
  306. $data['mainId'] = $thisMainId;
  307. //不是当前门店,库存默认为0并且是下架状态
  308. //不是当前门店,花材分类放在默认分类下
  309. if ($currentShopId != $shopId) {
  310. $data['stock'] = 0;
  311. $data['status'] = 2;
  312. $defaultCat = ItemClassClass::getByCondition(['mainId' => $thisMainId, 'isDefault' => 1], true);
  313. $defaultCatId = $defaultCat->id ?? 0;
  314. if (empty($defaultCatId)) {
  315. util::fail($shop->shopName . "没有默认分类");
  316. }
  317. $data['classId'] = $defaultCatId;
  318. }
  319. //已经有了不再添加
  320. $chainHas = self::getByCondition(['mainId' => $thisMainId, 'itemId' => $ptItemId], true);
  321. if (!empty($chainHas)) {
  322. continue;
  323. }
  324. self::add($data);
  325. }
  326. }
  327. $transaction->commit();
  328. } catch (\Exception $exception) {
  329. $transaction->rollBack();
  330. Yii::info('失败原因:' . $exception->getMessage());
  331. util::fail('添加失败');
  332. }
  333. }
  334. //初始化花材 lqh 2021.4.12 modify ssh 20210711
  335. public static function initItem($mainId)
  336. {
  337. $ptClass = PtItemCatClass::getAllList("*", ['type' => 1], 'inTurn desc');
  338. if (empty($ptClass)) {
  339. return false;
  340. }
  341. $hasClassIds = array_column($ptClass, 'id');
  342. $relate = PtItemCatRelateClass::getAllByCondition(['catId' => ['in', $hasClassIds]], null, '*');
  343. $relateInfo = [];
  344. $hasItemIds = [];
  345. if (!empty($relate)) {
  346. foreach ($relate as $key => $val) {
  347. $catId = $val['catId'] ?? 0;
  348. $itemId = $val['itemId'] ?? 0;
  349. $relateInfo[$catId][] = $itemId;
  350. $hasItemIds[] = $itemId;
  351. }
  352. $hasItemIds = array_unique(array_filter($hasItemIds));
  353. }
  354. $itemInfo = PtItemClass::getAllByCondition(['id' => ['in', $hasItemIds]], null, '*', 'id');
  355. foreach ($ptClass as $v) {
  356. $classId = $v['id'];
  357. $className = $v['name'];
  358. $inTurn = $v['inTurn'];
  359. $classData = [
  360. 'mainId' => $mainId,
  361. 'name' => $className,
  362. 'inTurn' => $inTurn,
  363. ];
  364. //初始化花材分类
  365. $addClassRespond = ItemClassClass::add($classData);
  366. $ghsClassId = $addClassRespond['id'];
  367. if (isset($relateInfo[$classId]) == false) {
  368. continue;
  369. }
  370. $itemAddData = [];
  371. $productAddData = [];
  372. foreach ($relateInfo[$classId] as $currentId) {
  373. if (isset($itemInfo[$currentId]) == false) {
  374. continue;
  375. }
  376. $currentItem = $itemInfo[$currentId] ?? [];
  377. unset($currentItem['addTime']);
  378. unset($currentItem['updateTime']);
  379. $itemData = $currentItem;
  380. $itemData['classId'] = $ghsClassId;
  381. $itemData['itemId'] = $currentItem['id'];
  382. unset($itemData['id']);
  383. $itemData['rank'] = 'A';
  384. $itemAddData[] = $itemData;
  385. $productData = $currentItem;
  386. $productData['mainId'] = $mainId;
  387. $productData['itemId'] = $currentItem['id'];
  388. $productData['classId'] = $ghsClassId;
  389. unset($productData['id']);
  390. $productData['rank'] = 'B';
  391. $productData['price'] = bcadd($currentItem['cost'], $currentItem['addPrice'], 2);
  392. //花材默认是下架状态
  393. $productData['status'] = 2;
  394. $productAddData[] = $productData;
  395. }
  396. if (empty($itemAddData)) {
  397. continue;
  398. }
  399. ProductClass::batchAdd($productAddData);
  400. }
  401. //增加默认分类
  402. $classData = ['mainId' => $mainId, 'name' => '默认分类', 'inTurn' => -1, 'isDefault' => 1,];
  403. ItemClassClass::add($classData);
  404. }
  405. //从首店复制花材和分类 ssh 20220522
  406. public static function copyItem($oldMainId, $newMainId)
  407. {
  408. $classList = ItemClassClass::getAllByCondition(['mainId' => $oldMainId], null, '*');
  409. $classMap = [];
  410. if (!empty($classList)) {
  411. foreach ($classList as $class) {
  412. $preId = $class['id'] ?? 0;
  413. $class['mainId'] = $newMainId;
  414. $class['shopId'] = 0;
  415. unset($class['addTime']);
  416. unset($class['updateTime']);
  417. unset($class['id']);
  418. $ret = ItemClassClass::add($class, true);
  419. $newId = $ret->id ?? 0;
  420. $classMap[$preId] = $newId;
  421. }
  422. }
  423. $itemList = self::getAllByCondition(['mainId' => $oldMainId], null, '*');
  424. if (!empty($itemList)) {
  425. foreach ($itemList as $item) {
  426. unset($item['stock']);
  427. unset($item['addTime']);
  428. unset($item['updateTime']);
  429. unset($item['id']);
  430. $preId = $item['classId'] ?? 0;
  431. $newId = $classMap[$preId] ?? 0;
  432. $item['classId'] = $newId;
  433. $item['mainId'] = $newMainId;
  434. $item['shopId'] = 0;
  435. self::add($item);
  436. }
  437. }
  438. }
  439. public static function getShowList($where)
  440. {
  441. $level = 0;
  442. $list = self::getAllByCondition($where, ['inTurn' => SORT_DESC, 'actualSold' => SORT_DESC], "*");
  443. if (empty($list)) {
  444. return $list;
  445. }
  446. $list = self::groupProductInfo($list, $level);
  447. $data = [];
  448. $data[ItemClassClass::TJ_CLASS_ID] = [];
  449. foreach ($list as $it) {
  450. $classId = $it['classId'] ?? 0;
  451. $data[$classId][] = $it;
  452. if (isset($it['discountPrice']) && $it['discountPrice'] > 0) {
  453. $data[ItemClassClass::TJ_CLASS_ID][] = $it;
  454. }
  455. }
  456. return $data;
  457. }
  458. //花材图片,名称,大小单位,小单位价格
  459. public static function groupProductInfo($list, $level = 0)
  460. {
  461. foreach ($list as $k => $v) {
  462. $shortCover = $v['cover'] ?? '';
  463. $cover = imgUtil::getPrefix() . 'hhb_small.png';
  464. $bigCover = imgUtil::getPrefix() . 'hhb_small.png';
  465. if (!empty($shortCover)) {
  466. $parse = parse_url(self::groupImg($shortCover));
  467. if (empty($parse['query'])) {
  468. $cover = self::groupImg($shortCover) . "?x-oss-process=image/resize,m_fill,h_110,w_110";
  469. } else {
  470. $cover = self::groupImg($shortCover);
  471. }
  472. $bigCover = imgUtil::groupImg($shortCover) . "?x-oss-process=image/resize,m_fill,h_700,w_700";
  473. }
  474. $ratio = isset($v['ratio']) && $v['ratio'] > 0 ? $v['ratio'] : 1;
  475. $stockInfo = self::formatStock($v['stock'], $ratio);
  476. $list[$k]['cover'] = $cover;
  477. $list[$k]['bigCover'] = $bigCover;
  478. $list[$k]['shortCover'] = $shortCover;
  479. $list[$k]['bigNum'] = $stockInfo['bigNum'];
  480. $list[$k]['smallNum'] = $stockInfo['smallNum'];
  481. $list[$k]['itemName'] = $v['name'] ?? '';
  482. $skPrice = $v['skPrice'] ?? 0;
  483. $list[$k]['prePrice'] = $skPrice;
  484. $list[$k]['price'] = $skPrice;
  485. $list[$k]['bigPrice'] = $skPrice;
  486. $smallRatio = $v['smallRatio'] ?? 0;
  487. $div = bcdiv($skPrice, $ratio, 2);
  488. $smallPrice = bcmul($div, $smallRatio, 2);
  489. $list[$k]['smallPrice'] = $smallPrice;
  490. }
  491. return $list;
  492. }
  493. //花材的库存转换: 库存是小数,根据各个花材的unitNum, 计算出多少扎,多少支
  494. public static function formatStock($stock, $unitNum)
  495. {
  496. $pn = true; //正数
  497. if ($stock < 0) {
  498. $pn = false;
  499. $stock = abs($stock);
  500. }
  501. $bigNum = floor($stock); // 扎
  502. $stockArr = explode('.', $stock);
  503. $smallNum = 0; //支
  504. if (count($stockArr) === 2) {
  505. $smallNum = bcmul(($stock - $bigNum), $unitNum);
  506. }
  507. if (!$pn) {
  508. $bigNum *= -1;
  509. $smallNum *= -1;
  510. }
  511. return [
  512. 'bigNum' => $bigNum,
  513. 'smallNum' => $smallNum,
  514. ];
  515. }
  516. //列表数据
  517. public static function getItemList($where)
  518. {
  519. $data = self::getList('*', $where, 'inTurn DESC');
  520. $list = isset($data['list']) && !empty($data['list']) ? $data['list'] : [];
  521. if (empty($list)) {
  522. return $data;
  523. }
  524. $itemIds = array_column($list, 'itemId');
  525. $itemData = xhItemService::getByIds($itemIds);
  526. $itemData = array_column($itemData, null, 'id');
  527. foreach ($list as $k => $v) {
  528. $list[$k]['itemName'] = $itemData[$v['itemId']]['name'] ?? '';
  529. }
  530. $data['list'] = $list;
  531. return $data;
  532. }
  533. //批量新增花材(初始化使用)
  534. public static function batchAddItem($data)
  535. {
  536. return true;
  537. }
  538. //修改花材的信息(库存预警、每扎加价、每扎重量)
  539. public static function updateItem($id, $stockWarning, $addPrice, $weight, $cost)
  540. {
  541. $model = self::getById($id);
  542. if (!$model) {
  543. util::fail("该花材不存在");
  544. }
  545. $data['stockWarning'] = $stockWarning;
  546. $data['addPrice'] = $addPrice;
  547. $data['weight'] = $weight;
  548. $data['cost'] = $cost;
  549. self::updateById($id, $data);
  550. return true;
  551. }
  552. //删除花材
  553. public static function deleteItem($id)
  554. {
  555. self::deleteById($id);
  556. return true;
  557. }
  558. //根据花材分类ID,获取itemIds
  559. public static function getItemIdsByClassId($classId)
  560. {
  561. $data = self::getAllList("itemId", ['classId' => $classId]);
  562. if ($data) {
  563. $data = array_column($data, 'itemId');
  564. }
  565. return $data;
  566. }
  567. //获取当前供货商下的所有item
  568. public static function getItemAll($sjId, $select = "*")
  569. {
  570. $where = [
  571. 'sjId' => $sjId
  572. ];
  573. $data = self::getAllList($select, $where);
  574. return $data;
  575. }
  576. //根据拼音名称,获取itemIds
  577. public static function getItemIdsByPyName($pyName)
  578. {
  579. //统一转小写
  580. $pyName = strtolower($pyName);
  581. $where = ['py' => $pyName];
  582. $data = xhItemService::getAllByCondition($where, null, 'id');
  583. if ($data) {
  584. $data = array_column($data, 'id');
  585. }
  586. return $data;
  587. }
  588. //获取某个花材的信息 lqh 2021.1.28
  589. public static function getItemData($itemId, $sjId)
  590. {
  591. return self::getByCondition(['itemId' => $itemId, 'sjId' => $sjId]);
  592. }
  593. //修改某个花材的成本价(采购之后要用到) lqh 2021.1.28
  594. public static function changeCost($itemId, $sjId, $cost)
  595. {
  596. return self::updateByCondition(['itemId' => $itemId, 'sjId' => $sjId], ['cost' => $cost]);
  597. }
  598. }