request->get(); $export = 1; $search = $get['search'] ?? ''; $where['shopId'] = 23580; $ghsId = $get['ghsId'] ?? 0; if (!empty($ghsId)) { $where['ghsId'] = $ghsId; } if (!empty($search)) { if (is_numeric($search) && strlen($search) == 4) { $where['orderSn'] = ['like', $search]; } else { $where['ghsName'] = ['like', $search]; } } $name = $get['name'] ?? ''; if (!empty($name)) { $re = strstr($name, 'PH'); if (!empty($re)) { $where['orderSn'] = $name; } else { $where['ghsName'] = ['like', $name]; } } $searchTime = 'custom'; $startTime = '2024-07-01'; $endTime = '2024-07-31'; $period = dateUtil::formatTime($searchTime, $startTime, $endTime); $where['entryTime'] = ['between', [$period['startTime'], $period['endTime']]]; $cgStaffId = $get['cgStaffId'] ?? 0; if (!empty($cgStaffId)) { $where['cgStaffId'] = $cgStaffId; } if ($export == 1) { ini_set('memory_limit', '2045M'); set_time_limit(0); if (isset($where['entryTime']) == false) { util::fail('请选时间段'); } $start = $where['entryTime'][1][0]; $end = $where['entryTime'][1][1]; $monthTime = bcmul(31, 86400); $startArea = strtotime($start); $endArea = strtotime($end); $diff = bcsub($endArea, $startArea); if ($diff > $monthTime) { util::fail('最长可导出一个月'); } } $data = PurchaseOrderClass::getOrderList($where); if ($export == 1) { $this->exportOrderData($data, 23390); util::stop(''); } //状态统计,很慢,暂时隐藏 //$statData = PurchaseOrderClass::statNum($this->shopId); $statData = [ 'allNum' => 0, 'unPayNum' => 0, 'unSendNum' => 0, 'sendingNum' => 0, 'finishNum' => 0, ]; $data = array_merge($data, $statData); echo "
";
        print_r($data);
        util::stop('');
    }


    public function exportOrderData($respond, $mainId)
    {
        $orderList = $respond['list'] ?? [];
        if (empty($orderList)) {
            util::fail('没有数据需要导出');
        }
        $orderSnList = array_column($orderList, 'orderSn');
        $orderItemData = PurchaseOrderItemClass::getAllByCondition(['orderSn' => ['in', $orderSnList]], null, '*');
        $orderItemList = [];
        if (!empty($orderItemData)) {
            foreach ($orderItemData as $itemInfo) {
                $orderSn = $itemInfo['orderSn'] ?? '';
                $orderItemList[$orderSn][] = $itemInfo;
            }
        }
        $totalActPrice = 0;
        $totalTkPrice = 0;
        $totalOnlyTkPrice = 0;
        $totalOrderPrice = 0;
        foreach ($orderList as $key => $orderInfo) {
            $orderSn = $orderInfo['orderSn'] ?? '';
            $status = $orderInfo['status'] ?? 0;
            $entryTime = $orderInfo['entryTime'] ?? '';
            //增加项
            $actPrice = $orderInfo['actPrice'] ?? 0;
            $tkPrice = $orderInfo['tkPrice'] ?? 0;
            $orderPrice = $orderInfo['orderPrice'] ?? 0;
            $discountAmount = $orderInfo['discountAmount'] ?? 0;
            $packingCharge = $orderInfo['packingCharge'] ?? 0;
            $shortCharge = $orderInfo['shortCharge'] ?? 0;
            $longCharge = $orderInfo['longCharge'] ?? 0;
            $pickCharge = $orderInfo['pickCharge'] ?? 0;
            $localCharge = $orderInfo['localCharge'] ?? 0;
            if ($status != 4) {
                unset($orderList[$key]);
                continue;
            }
            //增加项
            if ($actPrice <= 0) {
                unset($orderList[$key]);
                continue;
            }

            if ($discountAmount > 0 || $packingCharge > 0 || $shortCharge > 0 || $longCharge > 0 || $pickCharge > 0 || $localCharge > 0) {
                echo $orderSn . ' ' . $discountAmount . ' ' . $packingCharge . ' ' . $shortCharge . ' ' . $longCharge . ' ' . $pickCharge . ' ' . $localCharge . "
\n"; } $totalActPrice = bcadd($totalActPrice, $actPrice, 2); $totalTkPrice = bcadd($totalTkPrice, $tkPrice, 2); $totalOrderPrice = bcadd($totalOrderPrice, $orderPrice, 2); $itemList = $orderItemList[$orderSn] ?? []; $orderList[$key]['itemList'] = $itemList; //增加项 if ($tkPrice > 0) { $refundList = CgRefundClass::getAllByCondition(['relateOrderSn' => $orderSn], null, '*', null, true); if (!empty($refundList)) { foreach ($refundList as $refundInfo) { if (isset($refundInfo->refundType) && $refundInfo->refundType == 2) { $refundPrice = $refundInfo->refundPrice ?? 0; $totalOnlyTkPrice = bcadd($totalOnlyTkPrice, $refundPrice, 2); } } } } $currentItemPrice = 0; if (!empty($itemList)) { foreach ($itemList as $itemData) { $bigPrice = $itemData['bigPrice'] ?? 0; $itemNum = $itemData['itemNum'] ?? 0; $total = bcmul($bigPrice, $itemNum, 2); $currentItemPrice = bcadd($currentItemPrice, $total, 2); } } $add1 = bcadd($currentItemPrice, $packingCharge, 2); $add2 = bcadd($add1, $shortCharge, 2); $add3 = bcadd($add2, $longCharge, 2); $last = bcsub($add3, $tkPrice, 2); // if (floatval($last) != floatval($actPrice)) { // echo $currentItemPrice . ' 优惠:' . $discountAmount . ' 打包:' . $packingCharge . ' 短途:' . $shortCharge . ' 长途:' . $longCharge . ' 提:' . $pickCharge . ' 本:' . $localCharge . ' 实:' . $actPrice . $entryTime . "
\n"; // echo $orderSn . " 不同
\n"; // die; // } } echo "
";
        echo '订单金额:' . $totalOrderPrice . ' 实际金额:' . $totalActPrice . ' 退款金额:' . $totalTkPrice . ' 仅退款:' . $totalOnlyTkPrice;
    }

}