From 8f94583e916ffcc1c21007181e46a6e376f279c2 Mon Sep 17 00:00:00 2001 From: qianhy Date: Mon, 3 Apr 2023 09:51:52 +0800 Subject: [PATCH] business add import and undisplay price_coplus --- admin/controllers/auto/Business.php | 175 ++++++++++++++++++++++++++++ admin/views/auto/business/get.php | 2 +- admin/views/auto/business/lists.php | 69 +++++++++++ www/admin/temp/business.xlsx | Bin 0 -> 10396 bytes 4 files changed, 245 insertions(+), 1 deletion(-) create mode 100644 www/admin/temp/business.xlsx diff --git a/admin/controllers/auto/Business.php b/admin/controllers/auto/Business.php index e123e628..86f252ce 100644 --- a/admin/controllers/auto/Business.php +++ b/admin/controllers/auto/Business.php @@ -274,6 +274,181 @@ class Business extends HD_Controller{ return $this->show_json(SYS_CODE_SUCCESS, '添加成功'); } + function add_excel() + { + require_once COMMPATH . '/third_party/PHPExcel/IOFactory.php'; + $res = $this->upload(); + if (!$res['code']) { + return $this->show_json(0, $res['message']); + } + $file = $res['path']; + if ($res['file_ext'] == '.xls') { + $reader = \PHPExcel_IOFactory::createReader('Excel5'); // 读取 excel 文档 + } elseif ($res['file_ext'] == '.xlsx') { + $reader = \PHPExcel_IOFactory::createReader('Excel2007'); // 读取 excel 文档 + } else { + return $this->show_json(SYS_CODE_FAIL, '文件无法识别'); + } + $PHPExcel = $reader->load($file); // 文档名称 + $objWorksheet = $PHPExcel->getActiveSheet(); + $rowCnt = $objWorksheet->getHighestRow(); //获取总行数 + if ($rowCnt > 800) { + @unlink($file); + return $this->show_json(0, '数据大于800请拆分多个表格导入'); + } + $data = array(); + $yearary = $this->auto_business_model->year(); + $monthary = $this->auto_business_model->month(); + $c_time = time(); + $count = $rowCnt - 1; + $count_ignore = 0; + $msg_debug = "file: {$file};count: {$count};"; + for ($_row = 2; $_row <= $rowCnt; $_row++) { //读取内容 + $brand_name = $objWorksheet->getCell('A' . $_row)->getValue(); + $res = $this->auto_brand_model->get(array('status'=>1, 'name'=>$brand_name), 'id'); + if (!$res){ + $count_ignore += 1; + $msg_debug .= 'no brand_id;'; + continue; + } + $brand_id = $res['id']; + + $s_name = $objWorksheet->getCell('B' . $_row)->getValue(); + $res = $this->auto_series_model->get(array('status'=>1, 'brand_id'=> $brand_id, 'name'=>$s_name), 'id'); + if (!$res){ + $count_ignore += 1; + $msg_debug .= 'no s_id;'; + continue; + } + $s_id = $res['id']; + + $v_name = $objWorksheet->getCell('C' . $_row)->getValue(); + $res = $this->auto_attr_model->get(array('status'=>1, 's_id'=> $s_id, 'title'=>$v_name), 'id'); + if (!$res){ + $count_ignore += 1; + $msg_debug .= 'no v_id;'; + continue; + } + $v_id = $res['id']; + + $city_name = $objWorksheet->getCell('D' . $_row)->getValue(); + if (!$city_name){ + $count_ignore += 1; + $msg_debug .= 'no city_name;'; + continue; + } + $res = $this->sys_city_model->get(array('status'=>1, "name like '%{$city_name}%'"=>null), 'city_id'); + if (!$res){ + $count_ignore += 1; + $sql = $this->sys_city_model->db->last_query(); + $msg_debug .= "no city_id: {$sql};"; + continue; + } + $city_id = $res['city_id']; + + $s_effect_date = $objWorksheet->getCell('E' . $_row)->getValue(); # 此处得到是距离1900-01-01天数 + $s_effect_date && $s_effect_date = gmdate("Y-m-d", \PHPExcel_Shared_Date::ExcelToPHP($s_effect_date)); + $s_effect_time = 0; + $if_effect = 0; + if ($s_effect_date) { + $s_effect_time = strtotime($s_effect_date); + if($c_time>$s_effect_time){ + $if_effect = 1; + } + } + $msg_debug .= "s_effect_date:{$s_effect_date};s_effect_time:{$s_effect_time};if_effect:{$if_effect};"; + + $year = $objWorksheet->getCell('F' . $_row)->getValue(); + $month = $objWorksheet->getCell('G' . $_row)->getValue(); + $year = intval($year); + $month = intval($month); + if (!in_array($year, $yearary) || !in_array($month, $monthary)){ + $count_ignore += 1; + $msg_debug .= 'year or month exception;'; + continue; + } + + $where = [ + 'brand_id' => $brand_id, + 's_id' => $s_id, + 'v_id' => $v_id, + 'city_id' => $city_id, + 'year' => $year, + 'month' => $month, + 'status' => 1, + ]; + if($this->auto_business_model->get($where)){ + $count_ignore += 1; + $sql = $this->auto_business_model->db->last_query(); + $msg_debug .= "exists business: {$sql};"; + continue; + } + + $price_car = $objWorksheet->getCell('H' . $_row)->getValue(); + $price_floor = $objWorksheet->getCell('I' . $_row)->getValue(); + $delivery_day = $objWorksheet->getCell('J' . $_row)->getValue(); + $delivery_day = intval($delivery_day); + $delivery_day = $delivery_day < 0 ? 0 : $delivery_day; + $price_color = $objWorksheet->getCell('K' . $_row)->getValue(); + $proxy_name = $objWorksheet->getCell('L' . $_row)->getValue(); + $proxy_type = $proxy_name == '票折' ? 1 : 0; + + $proxy_profix_car = $objWorksheet->getCell('M' . $_row)->getValue(); + $profix_car = $objWorksheet->getCell('N' . $_row)->getValue(); + $profix_cardno = $objWorksheet->getCell('O' . $_row)->getValue(); + $profix_insure = $objWorksheet->getCell('P' . $_row)->getValue(); + $profix_loan = $objWorksheet->getCell('Q' . $_row)->getValue(); + + $info = [ + 'brand_id' => $brand_id, + 's_id' => $s_id, + 'v_id' => $v_id, + 'city_id' => $city_id, + 'year' => $year, + 'month' => $month, + 'status' => 1, + 'c_time' => $c_time, + ]; + + $info['price_car'] = $price_car; + $info['price_floor'] = $price_floor; + $info['price_color'] = $price_color; + $info['proxy_type'] = $proxy_type; + $info['proxy_profix_car'] = $proxy_profix_car; + $info['profix_car'] = $profix_car; + $info['profix_carno'] = $profix_cardno; + $info['profix_insure'] = $profix_insure; + $info['profix_loan'] = $profix_loan; + $info['s_effect_time'] = $s_effect_time; + $info['if_effect'] = $if_effect; + $info['delivery_day'] = $delivery_day; + $data[] = $info; + } + $msg_debug .= "count_ignore:{$count_ignore}"; + $done = 0; + $data && $done = $this->auto_business_model->add_batch($data); + @unlink($file); + $this->data['load_num'] = count($data); + $this->data['done'] = $done; + #$this->data['msg_debug'] = $msg_debug; + return $this->show_json(SYS_CODE_SUCCESS, "共{$count}条,成功导入{$done}条"); + } + + private function upload() + { + $config['upload_path'] = $_SERVER['DOCUMENT_ROOT'] . '/temp/'; + $config['allowed_types'] = 'xls|xlsx'; + $config['max_size'] = 5120; + $config['file_name'] = 'receiver_clues' . time() . rand(1, 99999); + $this->load->library('upload', $config); + if (!$this->upload->do_upload('file')) { + return array('code' => SYS_CODE_FAIL, 'message' => $this->upload->display_errors('', '')); + } else { + $data = $this->upload->data(); + return array('code' => SYS_CODE_SUCCESS, 'path' => $data['full_path'], 'file_ext' => $data['file_ext']); + } + } + public function edit() { $info = $this->input->post('info'); diff --git a/admin/views/auto/business/get.php b/admin/views/auto/business/get.php index e8d33f40..ab212639 100644 --- a/admin/views/auto/business/get.php +++ b/admin/views/auto/business/get.php @@ -72,7 +72,7 @@ -
+
+ + + diff --git a/www/admin/temp/business.xlsx b/www/admin/temp/business.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..010444d53bc96c16bca03966afe26ee1797cb22c GIT binary patch literal 10396 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