sjId; $mainId = $shop->mainId; $adminId = $params['adminId'] ?? 0; $staffName = $params['staffName'] ?? ''; $remark = $params['remark'] ?? ''; $shopId = $shop->id; $ext = ShopExtClass::getByCondition(['shopId' => $shopId], true); $getItemId = $ext->losingItem ?? 0; if (empty($getItemId)) { util::fail('没有设置处理区花材'); } $getItem = ItemClass::getById($getItemId, true); if (empty($getItem)) { util::fail('没有设置处理区花材哈'); } //出口 $outStock = bcsub($outItem->stock, $num, 2); if ($outStock < 0) { util::fail('剩余' . $outItem->stock . '可挪动'); } $outRatio = $outItem->ratio ?? 0; $formNum = ProductClass::formatStock($outStock, $outRatio); $ghsItemInfo = [['productId' => $outItem->id, 'bigNum' => $formNum['bigNum'], 'smallNum' => $formNum['smallNum']]]; $pdData = []; $pdData['itemInfo'] = $ghsItemInfo; $pdData['sjId'] = $sjId; $pdData['shopId'] = $shopId; $pdData['adminId'] = $adminId; $pdData['mainId'] = $mainId; $pdData['staffName'] = $staffName; $pdData['remark'] = $remark; CheckOrderClass::opOrder($pdData, false, false); //进口 $inRatio = $getItem->ratio ?? 0; $inStock = bcadd($getItem->stock, $num, 2); $format = ProductClass::formatStock($inStock, $inRatio); $ghsItemInfo = [['productId' => $getItem->id, 'bigNum' => $format['bigNum'], 'smallNum' => $format['smallNum']]]; $pdData = []; $pdData['itemInfo'] = $ghsItemInfo; $pdData['sjId'] = $sjId; $pdData['shopId'] = $shopId; $pdData['adminId'] = $adminId; $pdData['mainId'] = $mainId; $pdData['staffName'] = $staffName; $pdData['remark'] = $remark; CheckOrderClass::opOrder($pdData, false, false); } //增加和减少半扎 ssh 20250417 public static function modifyHalf($shop, $product, $params, $add) { $stock = $product->stock; if ($add == 0) { $newStock = bcsub($stock, 0.5, 2); } else { $newStock = bcadd($stock, 0.5, 2); } if ($newStock < 0) { util::fail('库存不足'); } $mainId = $shop->mainId; $shopId = $shop->id; $sjId = $shop->sjId; $adminId = $params['adminId'] ?? 0; $staffName = $params['staffName'] ?? ''; $remark = $params['remark'] ?? ''; $ratio = $product->ratio ?? 0; $formNum = ProductClass::formatStock($newStock, $ratio); $ghsItemInfo = [['productId' => $product->id, 'bigNum' => $formNum['bigNum'], 'smallNum' => $formNum['smallNum']]]; $pdData = []; $pdData['itemInfo'] = $ghsItemInfo; $pdData['sjId'] = $sjId; $pdData['shopId'] = $shopId; $pdData['adminId'] = $adminId; $pdData['mainId'] = $mainId; $pdData['staffName'] = $staffName; $pdData['remark'] = $remark; CheckOrderClass::opOrder($pdData, false, false); } public static function getLoanList($where, $shop) { $bookSn = $shop->bookSn ?? 0; $bookData = []; if (!empty($bookSn)) { $booList = BookItemClass::getAllByCondition(['bookSn' => $bookSn], null, '*', null, true); if (!empty($booList)) { foreach ($booList as $book) { $onNum = $book->onNum ?? 0; $bookNum = $book->bookNum ?? 0; $roadNum = $book->roadNum ?? 0; $itemId = $book->itemId ?? 0; $needCgNum = $book->needCgNum ?? 0; $bookData[$itemId] = ['onNum' => $onNum, 'bookNum' => $bookNum, 'roadNum' => $roadNum, 'needCgNum' => $needCgNum]; } } } $data = self::getList('*', $where); if (isset($data['list']) && !empty($data['list'])) { foreach ($data['list'] as $key => $val) { $data['list'][$key]['bigCount'] = ''; $data['list'][$key]['smallCount'] = ''; $shortCover = $val['cover'] ?? ''; $smallCover = imgUtil::groupImg($shortCover) . "?x-oss-process=image/resize,m_fill,h_130,w_130"; $bigCover = imgUtil::groupImg($shortCover) . "?x-oss-process=image/resize,m_fill,h_700,w_700"; $data['list'][$key]['shortCover'] = $shortCover; $data['list'][$key]['cover'] = $smallCover; $data['list'][$key]['smallCover'] = $smallCover; $data['list'][$key]['bigCover'] = $bigCover; //前端使用字段 $data['list'][$key]['showUsePrice'] = ''; $productId = $val['id'] ?? 0; $stock = $val['stock'] ?? 0; $couldLoan = 0; if (isset($bookData[$productId])) { $bookNum = $bookData[$productId] && $bookData[$productId]['bookNum'] ? $bookData[$productId]['bookNum'] : 0; if ($bookNum > 0) { $roadNum = $bookData[$productId] && $bookData[$productId]['roadNum'] ? $bookData[$productId]['roadNum'] : 0; $needCgNum = $bookData[$productId] && $bookData[$productId]['needCgNum'] ? $bookData[$productId]['needCgNum'] : 0; $unReachNum = bcadd($roadNum, $needCgNum, 2); $useStock = bcsub($bookNum, $unReachNum, 2); if ($stock > $useStock) { $couldLoan = bcsub($stock, $useStock, 2); } } else { $couldLoan = $stock; } } else { $couldLoan = $stock; } $data['list'][$key]['stock'] = $couldLoan; } } return $data; } public static function getSimpleList($where, $num) { $data = self::getList('id,name,price,stock,frontHide,cover', $where); if (isset($data['list']) && !empty($data['list'])) { foreach ($data['list'] as $key => $val) { $data['list'][$key]['bigCount'] = ''; if ($num > 0) { $data['list'][$key]['bigCount'] = $num; } $data['list'][$key]['smallCount'] = ''; $shortCover = $val['cover'] ?? ''; $smallCover = imgUtil::groupImg($shortCover) . "?x-oss-process=image/resize,m_fill,h_130,w_130"; $bigCover = imgUtil::groupImg($shortCover) . "?x-oss-process=image/resize,m_fill,h_700,w_700"; $data['list'][$key]['shortCover'] = $shortCover; $data['list'][$key]['cover'] = $smallCover; $data['list'][$key]['smallCover'] = $smallCover; $data['list'][$key]['bigCover'] = $bigCover; //前端使用字段 $data['list'][$key]['showUsePrice'] = ''; } } return $data; } public static function errorPrice($shop) { $mainId = $shop->mainId ?? 0; $itemList = ItemClass::getAllByCondition(['mainId' => $mainId, 'delStatus' => 0, 'status' => 1], null, 'id,name,price,skPrice,hjPrice'); $arr = []; $map = []; if (!empty($itemList)) { foreach ($itemList as $item) { $name = $item['name'] ?? ''; $productId = $item['id'] ?? 0; $price = $item['price'] ?? 0; $skPrice = $item['skPrice'] ?? 0; $hjPrice = $item['hjPrice'] ?? 0; $name = trim(strtolower($name)); $name = str_replace(" ", "", $name); $hasLevel = true; $pfKeyName = ''; $lsKeyName = ''; $dkKeyName = ''; $keyLevel = ''; if (strstr($name, "a级")) { $pfKeyName = str_replace("a级", "-批发", $name); $lsKeyName = str_replace("a级", "-零售", $name); $dkKeyName = str_replace("a级", "-大客", $name); $keyLevel = 'a'; $map[$pfKeyName . $keyLevel] = $productId; $map[$lsKeyName . $keyLevel] = $productId; $map[$dkKeyName . $keyLevel] = $productId; } elseif (strstr($name, "b级")) { $pfKeyName = str_replace("b级", "-批发", $name); $lsKeyName = str_replace("b级", "-零售", $name); $dkKeyName = str_replace("b级", "-大客", $name); $keyLevel = 'b'; $map[$pfKeyName . $keyLevel] = $productId; $map[$lsKeyName . $keyLevel] = $productId; $map[$dkKeyName . $keyLevel] = $productId; } elseif (strstr($name, "c级")) { $pfKeyName = str_replace("c级", "-批发", $name); $lsKeyName = str_replace("c级", "-零售", $name); $dkKeyName = str_replace("c级", "-大客", $name); $keyLevel = 'c'; $map[$pfKeyName . $keyLevel] = $productId; $map[$lsKeyName . $keyLevel] = $productId; $map[$dkKeyName . $keyLevel] = $productId; } elseif (strstr($name, "d级")) { $pfKeyName = str_replace("d级", "-批发", $name); $lsKeyName = str_replace("d级", "-零售", $name); $dkKeyName = str_replace("d级", "-大客", $name); $keyLevel = 'd'; $map[$pfKeyName . $keyLevel] = $productId; $map[$lsKeyName . $keyLevel] = $productId; $map[$dkKeyName . $keyLevel] = $productId; } elseif (strstr($name, "a")) { $pfKeyName = str_replace("a", "-批发", $name); $lsKeyName = str_replace("a", "-零售", $name); $dkKeyName = str_replace("a", "-大客", $name); $keyLevel = 'a'; $map[$pfKeyName . $keyLevel] = $productId; $map[$lsKeyName . $keyLevel] = $productId; $map[$dkKeyName . $keyLevel] = $productId; } elseif (strstr($name, "b")) { $pfKeyName = str_replace("b", "-批发", $name); $lsKeyName = str_replace("b", "-零售", $name); $dkKeyName = str_replace("b", "-大客", $name); $keyLevel = 'b'; $map[$pfKeyName . $keyLevel] = $productId; $map[$lsKeyName . $keyLevel] = $productId; $map[$dkKeyName . $keyLevel] = $productId; } elseif (strstr($name, "c")) { $pfKeyName = str_replace("c", "-批发", $name); $lsKeyName = str_replace("c", "-零售", $name); $dkKeyName = str_replace("c", "-大客", $name); $keyLevel = 'c'; $map[$pfKeyName . $keyLevel] = $productId; $map[$lsKeyName . $keyLevel] = $productId; $map[$dkKeyName . $keyLevel] = $productId; } elseif (strstr($name, "d")) { $pfKeyName = str_replace("d", "-批发", $name); $lsKeyName = str_replace("d", "-零售", $name); $dkKeyName = str_replace("d", "-大客", $name); $keyLevel = 'd'; $map[$pfKeyName . $keyLevel] = $productId; $map[$lsKeyName . $keyLevel] = $productId; $map[$dkKeyName . $keyLevel] = $productId; } else { $hasLevel = false; } if ($hasLevel) { $arr[$pfKeyName][$keyLevel] = $price; $arr[$lsKeyName][$keyLevel] = $skPrice; $arr[$dkKeyName][$keyLevel] = $hjPrice; } } } $error = []; if (!empty($arr)) { foreach ($arr as $key => $it) { if (isset($it['a']) && isset($it['b']) && $it['b'] > $it['a']) { $error[$key] = $it; } if (isset($it['b']) && isset($it['c']) && $it['c'] > $it['b']) { $error[$key] = $it; } if (isset($it['c']) && isset($it['d']) && $it['d'] > $it['c']) { $error[$key] = $it; } if (isset($it['a']) && isset($it['c']) && $it['c'] > $it['a']) { $error[$key] = $it; } } } $data = []; if (!empty($error)) { foreach ($error as $name => $val) { $data[] = array_merge(['name' => $name], $val); } } return ['data' => $data, 'map' => $map]; } //初始化花材 lqh 2021.4.12 modify ssh 20210711 public static function initUpdateItem($mainId) { //删除原有分类 ItemClassClass::updateByCondition(['mainId' => $mainId], ['mainId' => 0]); //增加默认分类 $classData = ['mainId' => $mainId, 'name' => '默认分类', 'inTurn' => -1, 'isDefault' => 1,]; $default = ItemClassClass::add($classData, true); $defaultId = $default->id ?? 0; //将原花材分类设置为默认分类 ProductClass::updateByCondition(['mainId' => $mainId], ['classId' => $defaultId]); $hasExistsProduct = ProductClass::getAllByCondition(['mainId' => $mainId], null, '*', 'itemId', true); $ptClass = PtItemCatClass::getAllList("*", ['type' => 0], 'inTurn desc'); if (empty($ptClass)) { return false; } $hasClassIds = array_column($ptClass, 'id'); $relate = PtItemCatRelateClass::getAllByCondition(['catId' => ['in', $hasClassIds]], null, '*'); $relateInfo = []; $hasItemIds = []; if (!empty($relate)) { foreach ($relate as $key => $val) { $catId = $val['catId'] ?? 0; $itemId = $val['itemId'] ?? 0; $relateInfo[$catId][] = $itemId; $hasItemIds[] = $itemId; } $hasItemIds = array_unique(array_filter($hasItemIds)); } $itemInfo = PtItemClass::getAllByCondition(['id' => ['in', $hasItemIds]], null, '*', 'id'); foreach ($ptClass as $v) { $classId = $v['id']; $className = $v['name']; $inTurn = $v['inTurn']; $cover = $v['cover'] ?? ''; $classData = [ 'mainId' => $mainId, 'name' => $className, 'inTurn' => $inTurn, 'cover' => $cover, ]; //初始化花材分类 $addClassRespond = ItemClassClass::add($classData); $ghsClassId = $addClassRespond['id']; if (isset($relateInfo[$classId]) == false) { continue; } $itemAddData = []; $productAddData = []; foreach ($relateInfo[$classId] as $currentId) { if (isset($itemInfo[$currentId]) == false) { continue; } $currentItem = $itemInfo[$currentId] ?? []; $ptItemId = $currentItem['id']; //零售开批发店,已经存在的花材,不需要重复新建,只要修改分类 if (isset($hasExistsProduct[$ptItemId])) { $hasExists = $hasExistsProduct[$ptItemId]; $hasExists->classId = $ghsClassId; $hasExists->save(); continue; } unset($currentItem['addTime']); unset($currentItem['updateTime']); $itemData = $currentItem; $itemData['classId'] = $ghsClassId; $itemData['itemId'] = $currentItem['id']; unset($itemData['id']); $itemData['rank'] = 'A'; $itemAddData[] = $itemData; $productData = $currentItem; $productData['mainId'] = $mainId; $productData['itemId'] = $currentItem['id']; $productData['classId'] = $ghsClassId; unset($productData['id']); $productData['rank'] = 'B'; $productData['price'] = bcadd($currentItem['cost'], $currentItem['addPrice'], 2); //花材默认是下架状态 $productData['status'] = 2; $productData['property'] = 1; $productAddData[] = $productData; } if (empty($itemAddData)) { continue; } ProductClass::batchAdd($productAddData); } } //从首店复制花材和分类 ssh 20220522 public static function copyItem($oldMainId, $newMainId) { $classList = ItemClassClass::getAllByCondition(['mainId' => $oldMainId], null, '*'); $classMap = []; if (!empty($classList)) { foreach ($classList as $class) { $preId = $class['id'] ?? 0; $class['mainId'] = $newMainId; $class['shopId'] = 0; unset($class['addTime']); unset($class['updateTime']); unset($class['id']); $ret = ItemClassClass::add($class, true); $newId = $ret->id ?? 0; $classMap[$preId] = $newId; } } $itemList = self::getAllByCondition(['mainId' => $oldMainId], null, '*'); if (!empty($itemList)) { foreach ($itemList as $item) { unset($item['stock']); unset($item['addTime']); unset($item['updateTime']); unset($item['id']); $preId = $item['classId'] ?? 0; $newId = $classMap[$preId] ?? 0; $item['classId'] = $newId; $item['mainId'] = $newMainId; $item['shopId'] = 0; $item['status'] = 2; self::add($item); } } } public static function getShowList($where, $custom) { $level = $custom->level ?? 1; $field = 'id,cover,name,cost,itemId,classId,py,property,skPrice,variety,price,hjPrice,discountPrice,skDiscountPrice,hjDiscountPrice,stock,stockWarning,presell,reachNum,reachNumDiscount,ratioType,smallRatio,smallUnit,bigUnit,ratio,hjAddPrice,addPrice,limitBuy'; $list = self::getAllByCondition($where, ['inTurn' => SORT_DESC, 'actualSold' => SORT_DESC], $field); if (empty($list)) { return $list; } $list = ProductClass::groupProductInfo($list, $level, $custom); $data = []; $data['-1'] = []; foreach ($list as $it) { $classId = $it['classId'] ?? 0; $data[$classId][] = $it; //特价,今日推荐 if (isset($it['discountPrice']) && $it['discountPrice'] > 0) { $data['-1'][] = $it; } //预售 if (isset($it['presell']) && $it['presell'] == 1) { $data['-3'][] = $it; } //满减 $reachNum = $it['reachNum'] ?? 0; $reachNumDiscount = $it['reachNumDiscount'] ?? 0; if ($reachNum > 0 && $reachNumDiscount > 0) { $data['-2'][] = $it; } } return $data; } //列表数据 public static function getGhsItemList($where) { $data = self::getList('*', $where, 'addTime DESC'); $list = isset($data['list']) && !empty($data['list']) ? $data['list'] : []; if (empty($list)) { return $data; } foreach ($list as $k => $v) { $list[$k]['itemName'] = $list[$k]['name'] ?? ''; $cover = $list[$k]['cover'] ?? ''; $list[$k]['cover'] = imgUtil::groupImg($cover); } $data['list'] = $list; if (isset($where['classId'])) { $class = ItemClassClass::getById($where['classId']); $data['className'] = $class['name'] ?? ''; } return $data; } //批量新增花材(初始化使用) public static function batchAddGhsItem($data) { return true; } //修改花材的信息(库存预警、每扎加价、每扎重量) public static function updateGshItem($id, $stockWarning, $addPrice, $weight, $cost) { $data['stockWarning'] = $stockWarning; $data['addPrice'] = $addPrice; $data['weight'] = $weight; $data['cost'] = $cost; self::updateById($id, $data); return true; } //删除花材 public static function deleteGhsItem($id) { self::deleteById($id); return true; } //根据花材分类ID,获取itemIds public static function getItemIdsByClassId($sjId, $classId) { $where = [ 'classId' => $classId, 'sjId' => $sjId, ]; $data = self::getAllList("itemId", $where); if ($data) { $data = array_column($data, 'itemId'); } return $data; } //获取当前供货商下的所有item public static function getGhsItemAll($sjId, $select = "*") { $where = [ 'sjId' => $sjId ]; $data = self::getAllList($select, $where); return $data; } //根据拼音名称,获取itemIds public static function getItemIdsByPyName($pyName) { //统一转小写 $pyName = strtolower($pyName); $where = ['py' => $pyName]; $data = xhItemService::getAllByCondition($where, null, 'id'); if ($data) { $data = array_column($data, 'id'); } return $data; } //获取某个花材的信息 lqh 2021.1.28 public static function getItemData($itemId, $sjId) { return self::getByCondition(['itemId' => $itemId, 'sjId' => $sjId]); } //修改某个花材的成本价(采购之后要用到) lqh 2021.1.28 (废弃不用,更新product) public static function changeCost($itemId, $sjId, $cost) { return self::updateByCondition(['itemId' => $itemId, 'sjId' => $sjId], ['cost' => $cost]); } }