| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214 |
- <?php
- /**
- * Created by PhpStorm.
- * User: Administrator
- * Date: 2018/1/3/003
- * Time: 14:30
- */
- namespace backend\models\searches;
- use backend\models\RemitApi;
- use common\helpers\ExcelHelper;
- use common\helpers\UserAgentHelper;
- use yii\data\ArrayDataProvider;
- use yii\data\Pagination;
- use yii\helpers\Url;
- class RemitSearch extends DataTable
- {
- public $status;
- public $batch_no;
- public $start_time;
- public $end_time;
- /**
- * @return array
- */
- public function rules()
- {
- $rules = parent::rules();
- $rules[] = [['status', 'batch_no', 'start_time', 'end_time'], 'safe'];
- return $rules;
- }
- /**
- * @param array $params
- * @return ArrayDataProvider
- */
- public function search($params)
- {
- $this->setAttributes($params);
- $this->initSearchParams();
-
- $pagination = new Pagination();
- $pagination->setPageSize($this->pageSize);
- $data['page'] = $this->page;
- $data['pageSize'] = $pagination->getPageSize();
- if ($this->orderBy) {
- $data['orderBy'] = $this->orderBy;
- }
- if (!empty($this->search['value']) && trim($this->search['value']) !== '') {
- $data['search'] = trim($this->search['value']);
- }
- if ($this->start_time && ($inStartTime = strtotime($this->start_time))) {
- $data['inStartTime'] = $inStartTime;
- }
- if ($this->end_time && ($inEndTime = strtotime($this->end_time))) {
- $data['inEndTime'] = $inEndTime;
- }
- $data['status'] = $this->status;
- $data['batch_no'] = $this->batch_no;
- if ($this->pageSize > 1000) {
- if (\Yii::$app->getRequest()->isAjax) {
- \Yii::$app->getResponse()->redirect(Url::current(), UserAgentHelper::isIE() ? 200 : 302);
- } else {
- $this->exportXls($data);
- }
- \Yii::$app->end();
- }
-
- $api = new RemitApi();
- $result = $api->getFinanceRemitList($data);
- // $result = $this->multiQuery($api, 'getFinanceRemitList', $data);
- $models = [];
- if ($result['code'] == 1) {
- $models = (array)$result['data']['dataList'];
- $pagination->totalCount = (int)$result['data']['totalCount'];
- }
- $dataProvider = new ArrayDataProvider([
- 'models' => $models,
- 'pagination' => $pagination,
- 'totalCount' => $pagination->totalCount,
- ]);
- return $dataProvider;
- }
- /**
- * @param array $params
- */
- protected function exportXls($params)
- {
- ExcelHelper::init();
- $attachmentName = "财务打款审核记录_" . date('Y-m-d') . '.xls';
- $header = ['打款批次号', '打款笔数', '打款总额(CNY)', '创建时间', '审核状态', '初审时间', '初审不通过原因', '初审人员', '复审时间', '复审不通过原因', '复审人员'];
- $source = [];
- $api = new RemitApi();
- $leftSize = $this->pageSize;
- while ($leftSize > 0) {
- // 重新计算页数和分页大小 start
- $pageSize = $leftSize > 1000 ? 1000 : $leftSize;
- $params['pageSize'] = $pageSize;
- $params['page'] = ceil($this->start / $pageSize) + 1;
- $result = $api->getFinanceRemitList($params);
- if ($result['code'] == 1 && !empty($result['data']['dataList'])) {
- foreach ((array)$result['data']['dataList'] as $key => $row) {
- $arr = [];
- $arr[] = ' '.$row['batch_no'];
- $arr[] = $row['batch_count'];
- $arr[] = $row['cny_amount'];
- $arr[] = !empty($row['create_time']) ? date('Y-m-d H:i:s', intval($row['create_time'])) : '';
- $audit_status = '';
- if (isset($row['audit_status']) && (int)$row['audit_status'] == 0) {
- $audit_status = '未审核';
- } elseif ((int)$row['audit_status'] == 1) {
- $audit_status = '初审通过';
- } elseif ((int)$row['audit_status'] == 2) {
- $audit_status = '复审通过';
- } elseif ((int)$row['audit_status'] == 3) {
- $audit_status = '初审未通过';
- } elseif ((int)$row['audit_status'] == 4) {
- $audit_status = '复审未通过';
- }
- $arr[] = $audit_status;
- $arr[] = !empty($row['audit_time']) ? date('Y-m-d H:i:s', intval($row['audit_time'])) : '';
- $arr[] = $row['audit_reason'];
- $arr[] = $row['audit_name'];
- $arr[] = !empty($row['reaudit_time']) ? date('Y-m-d H:i:s', intval($row['reaudit_time'])) : '';
- $arr[] = $row['reaudit_reason'];
- $arr[] = $row['reaudit_name'];
- $source[] = $arr;
- }
- } else {
- break;
- }
- $this->start += $pageSize;
- $leftSize -= $pageSize;
- if ($this->start >= $result['data']['totalCount']) {
- break;
- }
- }
- ExcelHelper::output($source, $header, $attachmentName);
- }
- /**
- * @param $data
- */
- private function exportXlsx($data)
- {
- \Yii::$app->getResponse()->setDownloadHeaders("财务打款审核记录_" . date('Y-m-d') . '.xls')->send();
- if (!ob_get_level()) {
- ob_start();
- }
- echo '<style>.num{mso-number-format:General;} .text{mso-number-format:"\@";/*force text*/}</style>';
- echo '<table border="1" cellpadding="0" cellspacing="0">';
- echo '<tr><th>打款批次号</th><th>打款笔数</th><th>打款总额(CNY)</th><th>创建时间</th><th>审核状态</th><th>初审时间</th><th>初审不通过原因</th><th>初审人员</th><th>复审时间</th><th>复审不通过原因</th><th>复审人员</th></tr>';
- $api = new RemitApi();
- $leftSize = $this->pageSize;
- while ($leftSize > 0) {
- // 重新计算页数和分页大小 start
- $pageSize = $leftSize > 1000 ? 1000 : $leftSize;
- $data['pageSize'] = $pageSize;
- $data['page'] = ceil($this->start / $pageSize) + 1;
- // 重新计算页数和分页大小 end
- $result = $api->getFinanceRemitList($data);
- if ($result['code'] == 1 && $result['data']['dataList']) {
- foreach ((array)$result['data']['dataList'] as $key => $row) {
- $str = '<tr>';
- $str .= "<td class='text'>{$row['batch_no']}</td>";
- $str .= "<td class='text'>{$row['batch_count']}</td>";
- $str .= "<td class='text'>{$row['cny_amount']}</td>";
- $str .= "<td class='text'>".date('Y-m-d H:i:s', intval($row['create_time']))."</td>";
- if ((int)$row['audit_status'] == 0) {
- $str .= "<td class='text'>未审核</td>";
- } elseif ((int)$row['audit_status'] == 1) {
- $str .= "<td class='text'>初审通过</td>";
- } elseif ((int)$row['audit_status'] == 2) {
- $str .= "<td class='text'>复审通过</td>";
- } elseif ((int)$row['audit_status'] == 3) {
- $str .= "<td class='text'>初审未通过</td>";
- } elseif ((int)$row['audit_status'] == 4) {
- $str .= "<td class='text'>复审未通过</td>";
- }
- $str .= "<td class='text'>".date('Y-m-d H:i:s', intval($row['audit_time']))."</td>";
- $str .= "<td class='text'>{$row['audit_reason']}</td>";
- $str .= "<td class='text'>{$row['audit_name']}</td>";
- $str .= "<td class='text'>".date('Y-m-d H:i:s', intval($row['reaudit_time']))."</td>";
- $str .= "<td class='text'>{$row['reaudit_reason']}</td>";
- $str .= "<td class='text'>{$row['reaudit_name']}</td>";
- $str .= "</tr>";
- echo $str;
- }
- ob_flush();
- flush();
- } else {
- break;
- }
- $this->start += $pageSize;
- $leftSize -= $pageSize;
- if ($this->start >= $result['data']['totalCount']) {
- break;
- }
- }
- echo "</table>";
- if (ob_get_level()) {
- ob_end_flush();
- }
- }
- }
|