| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156 |
- <?php
- namespace app\admin\controller;
- use app\common\model\AdminModel;
- use app\common\model\CompanyModel;
- use app\common\model\OrderProductModel;
- use app\common\model\PaymentChannelModel;
- use app\common\model\ProductModel;
- use app\Request;
- use think\App;
- use think\facade\View;
- class StockReport extends \app\BaseController
- {
- private $orderProductModel;
- private $companyModel;
- private $channelModel;
- private $adminModel;
- private $productModel;
- public function __construct(App $app)
- {
- $this->orderProductModel = new OrderProductModel();
- $this->companyModel = new CompanyModel();
- $this->channelModel = new PaymentChannelModel();
- $this->adminModel = new AdminModel();
- $this->productModel = new ProductModel();
- parent::__construct($app);
- }
- public function index(Request $request)
- {
- $params = $request->param();
- $fmt_params = [
- "date_range" => format_string($params['date_range'] ?? null),
- ];
- $list = $this->productModel->fetchByStock($fmt_params);
- View::assign([
- 'params' => $fmt_params,
- 'list' => $list,
- 'companys' => $this->companyModel->findAll(),
- 'admins' => $this->adminModel->findAll(),
- 'channels' => $this->channelModel->findAll(),
- ]);
- return view();
- }
- public function report(Request $request)
- {
- $params = $request->param();
- $list = $this->orderProductModel->report([
- 'order_no' => format_string($params['order_no'] ?? null),
- 'bar_code' => format_string($params['bar_code'] ?? null),
- 'product_name' => format_string($params['product_name'] ?? null),
- "company_id" => format_string($params['company_id'] ?? null),
- "adviser_id" => format_string($params['adviser_id'] ?? null),
- "teacher_id" => format_string($params['teacher_id'] ?? null),
- "date_range" => format_string($params['date_range'] ?? null),
- "channel_id" => format_string($params['channel_id'] ?? null),
- ])->toArray();
- $objPHPExcel = new \PHPExcel();
- try {
- $objSheet = $objPHPExcel->getActiveSheet();
- //工作表标题
- $objSheet->setTitle("main");
- //第一行内容,放列标题
- $objSheet->setCellValue("A1", lang('Invoice No'));
- $objSheet->setCellValue("B1", lang('Store') . lang('Abbr'));
- $objSheet->setCellValue("C1", lang("Date"));
- $objSheet->setCellValue("D1", lang("Bar code"));
- $objSheet->setCellValue("E1", lang('Product') . lang('Name'));
- $objSheet->setCellValue("F1", lang("Belong Company"));
- $objSheet->setCellValue("G1", lang("Sale price"));
- $objSheet->setCellValue("H1", lang("Consumption tax"));
- $objSheet->setCellValue("I1", lang("Quantity"));
- $objSheet->setCellValue("J1", lang("Real Price"));
- $objSheet->setCellValue("K1", lang("Adviser") . '1');
- $objSheet->setCellValue("L1", lang("Adviser") . '2');
- $objSheet->setCellValue("M1", lang("Teacher") . '1');
- $objSheet->setCellValue("N1", lang("Teacher") . '2');
- //设置第一行的背景颜色
- $objPHPExcel->getActiveSheet()
- ->getStyle('A1:N1')
- ->getFill()
- ->setFillType(\PHPExcel_Style_Fill::FILL_SOLID)
- ->getStartColor()
- ->setRGB('FFFF00');
- //后面行循环放内容
- for ($i = 0; $i < count($list); $i++) {
- $item = $list[$i];
- $objSheet->setCellValue("A" . ($i + 2), fmtN_A($item['order_no']));
- $objSheet->setCellValue("B" . ($i + 2), fmtN_A(preg_replace("/\\d+/", '', $item['order_no'])));
- $objSheet->setCellValue("C" . ($i + 2), fmtN_A($item['create_time']));
- $objSheet->setCellValue("D" . ($i + 2), fmtN_A($item['product']['bar_code']));
- $objSheet->setCellValue("E" . ($i + 2), fmtN_A($item['product_name']));
- $objSheet->setCellValue("F" . ($i + 2), fmtN_A($item['product']['company']['name']));
- $objSheet->setCellValue("G" . ($i + 2), fmtN_A($item['product']['real_price']));
- $objSheet->setCellValue("H" . ($i + 2), fmtN_A($item['sales_tax']));
- $objSheet->setCellValue("I" . ($i + 2), 1);
- $objSheet->setCellValue("J" . ($i + 2), fmtN_A($item['transaction_price']));
- $objSheet->setCellValue("K" . ($i + 2), fmtN_A($item['adviser_1_name']));
- $objSheet->setCellValue("L" . ($i + 2), fmtN_A($item['adviser_2_name']));
- $objSheet->setCellValue("M" . ($i + 2), fmtN_A($item["teacher_1_name"]));
- $objSheet->setCellValue("N" . ($i + 2), fmtN_A($item["teacher_2_name"]));
- }
- $objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
- $fileName = time();
- header('Content-Disposition: attachment;filename="' . $fileName . '.xlsx"'); //设置excel文件名称
- header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
- return json($objWriter->save("php://output"));
- } catch (\PHPExcel_Exception $e) {
- }
- }
- }
|