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;
}
}