service = new StockOrdersService(); } /** * 列表页数据格式化 * * @param array $data * @return array */ protected function indexFormat($data) { if (isset($data['created_at'])) $data['created_at'] = date('Y-m-d H:i:s', $data['created_at']); if (isset($data['updated_at'])) $data['updated_at'] = date('Y-m-d H:i:s', $data['updated_at']); if (isset($data['eta_ship_date'])) $data['eta_ship_date'] = date('Y-m-d', $data['eta_ship_date']); if (isset($data['biz_date'])) $data['biz_date'] = date('Y-m-d', $data['biz_date']); if (isset($data['latest_arrival_date'])) $data['latest_arrival_date'] = date('Y-m-d', $data['latest_arrival_date']); if (isset($data['id'])) { $appro = new \app\common\utils\approval\service\ApprovalFlowService(); $appro = $appro->getBriefStatusByBiz($data['id'], null, 'name'); $map = ['processing'=>'审批中','pending'=>'审批中','approved'=>'已通过','rejected'=>'已拒绝','revoked'=>'已撤回','voided'=>'已作废']; if ($appro) { $data['appro_status'] = [ 'status' => $appro['status'], 'status_desc' => $map[$appro['status']], 'name' => isset($appro['step'])?$appro['step']['name']:'' ]; } } return $data; } protected function showFormat($data) { if (isset($data['created_at'])) $data['created_at'] = date('Y-m-d H:i:s', $data['created_at']); if (isset($data['updated_at'])) $data['updated_at'] = date('Y-m-d H:i:s', $data['updated_at']); if (isset($data['eta_ship_date'])) $data['eta_ship_date'] = date('Y-m-d', $data['eta_ship_date']); if (isset($data['biz_date']) && $data['biz_date'] > 0) $data['biz_date'] = date('Y-m-d', $data['biz_date']); if (isset($data['latest_arrival_date']) && $data['latest_arrival_date'] > 0) $data['latest_arrival_date'] = date('Y-m-d', $data['latest_arrival_date']); if (isset($data['pick_up_date']) && $data['pick_up_date'] > 0) $data['pick_up_date'] = date('Y-m-d', $data['pick_up_date']); if (isset($data['collect_all_date']) && $data['collect_all_date'] > 0) $data['collect_all_date'] = date('Y-m-d', $data['collect_all_date']); // 处理文件附件 $fileTypes = [ 'contract' => \app\common\model\StockOrdersFiles::CONTRACT, 'transaction_slip' => \app\common\model\StockOrdersFiles::TRANSACTION_SLIP, 'pi_doc' => \app\common\model\StockOrdersFiles::PI_DOC ]; // 初始化文件字段 foreach (array_keys($fileTypes) as $field) { $data[$field] = []; $data[$field . '_url'] = []; } // 按file_code分组文件 if (!empty($data['files'])) { $groupedFiles = []; foreach ($data['files'] as $file) { if (!isset($groupedFiles[$file['file_code']])) { $groupedFiles[$file['file_code']] = []; } $groupedFiles[$file['file_code']][] = $file['file_url']; } // 映射到对应字段 foreach ($fileTypes as $field => $fileCode) { if (isset($groupedFiles[$fileCode])) { // 原始URL数组 $data[$field] = $groupedFiles[$fileCode]; // 完整URL数组 $fullUrls = []; foreach ($groupedFiles[$fileCode] as $url) { $fullUrls[] = (new \app\common\service\OssService)->generatePrivateUrl($url); } $data[$field . '_url'] = $fullUrls; } } unset($data['files']); } if (count($data['moneyValues']) > 0) { foreach ($data['moneyValues'] as $mvs) { $data[$mvs['field']] = [ 'exchange_rate' => $mvs['exchange_rate'], 'amount' => $mvs['amount'], 'currency' => $mvs['currency'], 'id' => $mvs['id'] ]; } } foreach ($data['items'] as &$item) { foreach ($item['moneyValues'] as $mv) { $item[$mv['field']] = [ 'exchange_rate' => $mv['exchange_rate'], 'amount' => $mv['amount'], 'currency' => $mv['currency'], 'id' => $mv['id'] ]; } unset($item['moneyValues']); foreach ($item['options'] as $opt) { $item['modify_list'][] = [ "id" => $opt['id'], "order_item_id" => $opt['order_item_id'], "option_id" => $opt['option_id'], "option_name_snapshot" => $opt['option_name_snapshot'], "option_price" => $opt['option_price'] ]; } unset($item['options']); } unset($item); foreach ($data['accounts'] as $acc) { $data['account_list'][] = [ "id" => $acc['id'], "order_id" => $acc['order_id'], "seq_no" => $acc['seq_no'], "remit_country_id" => $acc['remit_country_id'], "remit_country_name_snapshot" => $acc['remit_country_name_snapshot'], "remit_date" => date('Y-m-d', $acc['remit_date']), "currency_code" => $acc['currency_code'], "currency_name_snapshot" => $acc['currency_name_snapshot'], "account_id" => $acc['account_id'], "account_name_snapshot" => $acc['account_name_snapshot'], "remitter_name" => $acc['remitter_name'], "amount" => $acc['amount'] ]; } unset($data['accounts']); $data['veh_list'] = $data['items']; unset($data['items']); return $data; } protected function printFormat($data) { $data['file_url_full'] = (!empty($data['file_url'])) ? (new \app\common\service\OssService)->generatePrivateUrl($data['file_url']) : ''; return $data; } public function print(Request $request) { try { $raw = $this->service->servicePrint($request); $data = $this->transformData($raw, method_exists($this, 'printFormat') ? [$this, 'printFormat'] : null); return $this->success($data); } catch (\Throwable $e) { return $this->error($e->getMessage()); } } public function detail(Request $request) { try { $raw = $this->service->serviceDetail($request); $data = $this->transformData($raw, method_exists($this, 'detailFormat') ? [$this, 'detailFormat'] : null); return $this->success($data); } catch (\Throwable $e) { return $this->error($e->getMessage()); } } }