orderSn ?? '';
if (!empty($orderSn)) {
$order = OrderClass::getByCondition(['orderSn' => $orderSn], true);
if (empty($order)) {
util::fail('没有找到订单');
}
OrderClass::onlinePrint($order, $mustPrint, 'make');
} else {
$shopId = $shop->id ?? 0;
$ext = ShopExtClass::getByCondition(['shopId' => $shopId], true);
$printLabelSn = $work->fromType == 4 ? $ext->mtPrintLabelSn : $ext->makePrintLabelSn;
if (empty($printLabelSn)) {
if ($mustPrint) {
util::fail('请设置标签打印机');
}
} else {
$p = new printUtil($printLabelSn);
$workSn = $work->workSn ?? '';
$workItemList = WorkClass::getAllByCondition(['workSn' => $workSn], null, '*', null, true);
if (!empty($workItemList)) {
foreach ($workItemList as $item) {
$goodsSn = $item->goodsSn ?? '';
if (empty($goodsSn)) {
continue;
}
$flag = [];
if ($item->fromType == 2) {
$flag[] = '商城';
} elseif ($item->fromType == 4) {
$flag[] = '美团';
} elseif ($item->fromType == 1) {
$flag[] = '门店';
} else {
if (isset($item->staffName) && !empty($item->staffName)) {
$flag[] = $item->staffName;
}
}
if (isset($item->bookName) && !empty($item->bookName)) {
$flag[] = $item->bookName;
}
if (isset($item->sn) && !empty($item->sn)) {
$flag[] = $item->sn;
}
$flagString = implode(" ", $flag);
$num = $item->num ?? 1;
$name = $item->name ?? '';
$content = '' . $name . '';
$content .= '' . $goodsSn . '';
$content .= '' . $flagString . '';
$p->times = $num;
$p->printLabelMsg($content);
}
}
}
}
}
public static function goodsCreateFinish($data, $main)
{
$goods = $data['goods'] ?? [];
$remark = $data['remark'] ?? '';
$sjId = $data['sjId'] ?? 0;
$shopId = $data['shopId'] ?? 0;
$mainId = $data['mainId'] ?? 0;
$hasReachTime = $data['hasReachTime'] ?? 0;
$reachPeriod = $data['reachPeriod'] ?? 0;
$reachDate = $data['reachDate'] ?? '0000-00-00';
$bookName = $data['bookName'] ?? '';
$staffName = $data['staffName'] ?? '';
$staffId = $data['staffId'] ?? 0;
$orderPrice = $data['orderPrice'] ?? 0;
$orderDebtPrice = $data['orderDebtPrice'] ?? 0;
$sendType = $data['sendType'] ?? 0;
$fromType = $data['fromType'] ?? 1;
$thirdSn = $data['thirdSn'] ?? '';
$cardInfo = $data['cardInfo'] ?? '';
$anonymity = $data['anonymity'] ?? 0;
$sh = $data['sh'] ?? 0;
$manyType = $data['manyType'] ?? 0;
$sendNum = $data['sendNum'] ?? '';
$ids = array_column($goods, 'productId');
$info = GoodsClass::getByIds($ids, null, 'id');
foreach ($goods as $val) {
$goodsId = $val['productId'] ?? 0;
$currentInfo = $info[$goodsId] ?? [];
if (empty($currentInfo)) {
util::fail('商品没有找到,编号3990,id:' . $goodsId);
}
$name = $currentInfo['name'] ?? '';
$goodsSn = $currentInfo['sn'] ?? '';
$kindId = $currentInfo['kindId'] ?? 0;
$kindName = $currentInfo['kindName'] ?? '';
$setItemNum = $currentInfo['setItemNum'] ?? 0;
$workNum = $val['num'] ?? 0;
$cover = !empty($currentInfo['cover']) ? $currentInfo['cover'] : 'hhb_small.png';
$goodsCat = GoodsCategoryClass::getByCondition(['gId' => $goodsId], true);
$catId = $goodsCat->cId ?? 0;
if (empty($catId)) {
util::fail('没有找到商品的分类呢,编号6225');
}
$catName = '';
if (!empty($catId)) {
$cat = CategoryClass::getById($catId, true);
$catName = $cat->categoryName ?? '';
}
$workSn = orderSn::getWorkSn();
$flowerNum = $info[$goodsId]['flowerNum'] ?? 0;
$orderSn = $data['orderSn'] ?? '';
$orderId = $data['orderId'] ?? 0;
$current = [
'name' => $name,
'num' => $workNum,
'cover' => $cover,
'remark' => $remark,
'catId' => $catId,
'catName' => $catName,
'goodsId' => $goodsId,
'goodsSn' => $goodsSn,
'sjId' => $sjId,
'shopId' => $shopId,
'mainId' => $mainId,
'workSn' => $workSn,
'flowerNum' => $flowerNum,
'orderSn' => $orderSn,
'orderId' => $orderId,
'hasReachTime' => $hasReachTime,
'reachDate' => $reachDate,
'reachPeriod' => $reachPeriod,
'setItemNum' => $setItemNum,
'bookName' => $bookName,
'staffName' => $staffName,
'staffId' => $staffId,
'orderPrice' => $orderPrice,
'orderDebtPrice' => $orderDebtPrice,
'fromType' => $fromType,
'sendType' => $sendType,
'thirdSn' => $thirdSn,
'cardInfo' => $cardInfo,
'anonymity' => $anonymity,
'sh' => $sh,
'manyType' => $manyType,
'sendNum' => $sendNum,
'kindId' => $kindId,
'kindName' => $kindName,
];
self::createFinish($current, $main);
}
}
public static function createFinish($data, $main)
{
unset($data['setItemNum']);
$data['flowerNum'] = isset($data['flowerNum']) && is_numeric($data['flowerNum']) ? $data['flowerNum'] : 0;
$data['sn'] = StatWorkCountClass::addOrder($main);
$work = WorkClass::addWork($data, $main);
$complete = $data['complete'] ?? 0;
if ($complete == 1) {
//直接完成
WorkClass::finish($work);
}
return $work;
}
//美团取消订单同时取消制作单 ssh 20220925
public static function removeWork($work, $num)
{
if (empty($work)) {
return false;
}
if ($work->status != 0) {
return false;
}
if ($work->num <= $num) {
$work->status = 2;
$work->save();
} else {
$work->num = bcsub($work->num, $num);
$work->save();
}
}
//取消制作单
public static function cancel($work)
{
if ($work->status == self::STATUS_COMPLETE) {
util::fail('制作单已完成');
}
if ($work->status == self::STATUS_CANCEL) {
util::fail('制作单已取消');
}
if (isset($work->orderSn) && !empty($work->orderSn)) {
util::fail('请通过订单取消');
}
//取消锁定,释放库存
WorkItemClass::cancelLock($work);
$work->status = self::STATUS_CANCEL;
$work->save();
}
//完成制作单 ssh 20220320
public static function finish($work, $staff = null)
{
$work->status = self::STATUS_COMPLETE;
$work->finishTime = date("Y-m-d H:i:s");
if (!empty($staff)) {
$currentStaffId = $staff['staffId'] ?? 0;
$currentStaffName = $staff['staffName'] ?? '';
} else {
$currentStaffId = $work->staffId ?? 0;
$currentStaffName = $work->staffName ?? '';
}
$work->finishStaffId = $currentStaffId;
$work->finishStaffName = $currentStaffName;
$work->save();
WorkItemClass::wastage($work);
$fromType = $work->fromType ?? 0;
if ($fromType == dict::getDict('fromType', 'mt')) {
$currentTime = time();
$addTime = $work->addTime;
$createTime = strtotime($addTime);
$diffTime = bcsub($currentTime, $createTime);
if ($diffTime < 60) {
util::fail('美团单请1分钟后开始制作');
}
}
$num = $work->num ?? 0;
$mainId = $work->mainId ?? 0;
$workSn = $work->workSn ?? '';
$workId = $work->id ?? 0;
$sjId = $work->sjId ?? 0;
$shopId = $work->shopId ?? 0;
$goodsId = $work->goodsId ?? 0;
$bigNum = $work->bigNum ?? 0;
$smallNum = $work->smallNum ?? 0;
$flowerNum = $work->flowerNum ?? 0;
//没有商品生成商品
if (empty($goodsId)) {
$name = $work->name ?? '';
$catId = $work->catId ?? 0;
$cover = $work->cover ?? '';
$shopImg = [$cover];
$date = date("Y-m-d H:i:s");
$goodsData = [
'shopImg' => $shopImg,
'mainId' => $mainId,
'cover' => $cover,
'name' => $name,
'content' => '',
'createTime' => $date,
'sjId' => $sjId,
'shopId' => $shopId,
'bigNum' => $bigNum,
'smallNum' => $smallNum,
'workId' => $workId,
'workSn' => $workSn,
'flower' => 1,
'flowerNum' => $flowerNum,
'status' => 0,
];
if (!empty($catId)) {
$goodsData['catIds'] = [$catId];
}
$goods = GoodsClass::addGoods($goodsData, $work);
$goodsId = $goods->id ?? 0;
$sn = $goods->sn ?? '';
$work->goodsSn = $sn;
$work->goodsId = $goodsId;
$work->save();
}
//库存增加
$staffName = $work->staffName ?? '';
OrderGoodsClass::addGoodsStockByMakeGoods($workSn, $sjId, $shopId, $mainId, $goodsId, $num, $staffName);
}
//验证制作单 ssh 20220319
public static function valid($work, $mainId)
{
if (empty($work)) {
util::fail('没有找到制作单');
}
if (isset($work->mainId) == false || $work->mainId != $mainId) {
util::fail('没有权限');
}
return true;
}
//工单列表 ssh 20220606
public static function getWorkList($where)
{
$order = 'addTime DESC';
if (isset($where['status'])) {
if ($where['status'] == 0) {
$order = 'hasReachTime DESC,reachDate ASC,reachPeriod ASC,addTime ASC';
}
if ($where['status'] == 1) {
$order = 'hasReachTime DESC,reachDate DESC,reachPeriod DESC,addTime ASC';
}
}
$data = self::getList('*', $where, $order);
$list = isset($data['list']) && !empty($data['list']) ? $data['list'] : [];
if (empty($list)) {
return $data;
}
$data['list'] = self::groupBaseInfo($list);
return $data;
}
public static function groupBaseInfo($list)
{
if (empty($list)) {
return $list;
}
$today = date("Y-m-d");
$tomorrow = date("Y-m-d", strtotime('+1 day'));
foreach ($list as $key => $val) {
$shortCover = $val['cover'] ?? '';
$cover = imgUtil::getPrefix() . 'hhb_small.png';
$bigCover = imgUtil::getPrefix() . 'hhb_small.png';
if (!empty($shortCover)) {
$parse = parse_url(self::groupImg($shortCover));
if (empty($parse['query'])) {
$cover = self::groupImg($shortCover) . "?x-oss-process=image/resize,m_fill,h_110,w_110";
} else {
$cover = self::groupImg($shortCover);
}
$bigCover = imgUtil::groupImg($shortCover) . "?x-oss-process=image/resize,m_fill,h_700,w_700";
}
$list[$key]['cover'] = $cover;
$list[$key]['bigCover'] = $bigCover;
$list[$key]['shortCover'] = $shortCover;
$list[$key]['today'] = $today;
$list[$key]['tomorrow'] = $tomorrow;
}
return $list;
}
public static function needWork($order, $main, $params = [])
{
$mainId = $main->id;
$sjId = $order->sjId ?? 0;
$orderSn = $order->orderSn ?? '';
$orderId = $order->id ?? 0;
$shopId = $order->shopId ?? 0;
$orderPrice = $order->orderPrice ?? 0;
$fromType = $order->fromType ?? 1;
$remark = $order->remark ?? '';
$orderDebtPrice = $order->orderDebtPrice ?? 0;
$sendType = $order->sendType ?? 0;
$thirdSn = $order->thirdSn ?? '';
$cardInfo = $order->cardInfo ?? '';
$anonymity = $order->anonymity ?? 0;
$manyType = $order->manyType ?? 0;
$sendNum = $order->sendNum ?? '';
$hasReachTime = 0;
$reachDate = $order->reachDate ?? '';
if (!empty($reachDate) && $reachDate != '0000-00-00') {
$hasReachTime = 1;
}
$reachPeriod = $order->reachPeriod ?? 0;
$staffName = $order->shopAdminName ?? '';
$staffId = $order->shopAdminId ?? '';
$bookName = $order->bookName ?? '';
$list = OrderGoodsClass::getAllByCondition(['orderSn' => $orderSn], null, '*', null, true);
if (!empty($list)) {
foreach ($list as $goodsInfo) {
$goodsId = $goodsInfo->goodsId ?? 0;
$num = $goodsInfo->num ?? 0;
$params = [
'goods' => [['productId' => $goodsId, 'num' => abs($num)]],
'sjId' => $sjId,
'mainId' => $mainId,
'orderSn' => $orderSn,
'orderId' => $orderId,
'hasReachTime' => $hasReachTime,
'reachPeriod' => $reachPeriod,
'reachDate' => $reachDate,
'shopId' => $shopId,
'staffName' => $staffName,
'staffId' => $staffId,
'bookName' => $bookName,
'orderPrice' => $orderPrice,
'orderDebtPrice' => $orderDebtPrice,
'fromType' => $fromType,
'sendType' => $sendType,
'remark' => $remark,
'thirdSn' => $thirdSn,
'cardInfo' => $cardInfo,
'anonymity' => $anonymity,
'sh' => 0,//是否散花作品
'manyType' => $manyType,
'sendNum' => $sendNum,
];
WorkClass::goodsCreateFinish($params, $main);
}
}
}
}