excle导入
2016-10-11 10:58
162 查看
public function import_upload(){ set_time_limit(900); if(!empty($_FILES ['xls_path']['name'])){ $tmp_file = $_FILES ['xls_path']['tmp_name']; $file_types = explode ( ".",$_FILES ['xls_path']['name']); $file_type = $file_types[count($file_types) - 1]; $operator = $_SESSION[C('USER_AUTH_KEY')]; $import_id = time(); /*判别是不是.xls文件,判别是不是excel文件*/ if(!in_array(strtolower($file_type),array('xls','xlsx'))){ $this->error('不是Excel文件,重新上传'); } if($_FILES['size']>2097152){ $this->error('上传文件大小不能超过2M'); } /*设置上传路径*/ $savePath = substr($_SERVER['DOCUMENT_ROOT'],0,-8) . "upload_dir/update_goods/"; /*以时间来命名上传的文件*/ $str = date('Ymdhis'); $file_name = $str . "." . $file_type; /*是否上传成功*/ if(!copy( $tmp_file, $savePath . $file_name)){ $this->error('上传失败'); } $excel_row = $this->Execlimport($savePath.$file_name,strtolower($file_type)); if($excel_row['data'][0]['Rows']>1001){ $this->error('单次上传数据不能超过1000条'); } if($excel_row['error']==1){ // echo $excel_row['data'][0]['Cols']; // var_dump($excel_row['data'][0]); // if($excel_row['data'][0]['Cols']!=22){ // exit(); // //$this->error('数据列与模板不符,上传模板格式的数据表'); // } $col_title = array( 0=>array('title'=>'序号'), 1=>array('title'=>'商品编号','name'=>'goods_bzno','required'=>1), 2=>array('title'=>'OMS编码','name'=>'goods_no','required'=>1), 3=>array('title'=>'一级分类','name'=>'cate','required'=>1,'type'=>'int'), 4=>array('title'=>'二级分类','name'=>'second_cate'), 5=>array('title'=>'三级分类','name'=>'three_cate'), 6=>array('title'=>'分类标签','name'=>'cate_tag'), 7=>array('title'=>'适合性别','name'=>'gender'), 8=>array('title'=>'商品名称','name'=>'goods_name','required'=>1), 9=>array('title'=>'尺寸','name'=>'size','required'=>0), 10=>array('title'=>'颜色','name'=>'color','required'=>0), 11=>array('title'=>'疯狂价','name'=>'crazy_price','required'=>1,'type'=>'double'), 12=>array('title'=>'柜台价','name'=>'shop_price','required'=>1,'type'=>'double'), 13=>array('title'=>'进货价','name'=>'buy_price','required'=>1,'type'=>'double'), 14=>array('title'=>'上下架','name'=>'is_putaway','required'=>1), 15=>array('title'=>'残次品','name'=>'is_defective'), 16=>array('title'=>'买手','name'=>'buyer','required'=>1), 17=>array('title'=>'供应商','name'=>'supplier_id','required'=>1), 18=>array('title'=>'批次','name'=>'bathch','required'=>0), 19=>array('title'=>'商品参数1','name'=>'param1','required'=>0), 20=>array('title'=>'商品参数2','name'=>'param2','required'=>0), 21=>array('title'=>'商品参数3','name'=>'param3','required'=>0), 22=>array('title'=>'商品参数4','name'=>'param4','required'=>0), 23=>array('title'=>'商品参数5','name'=>'param5','required'=>0), 24=>array('title'=>'商品参数6','name'=>'param6','required'=>0), 25=>array('title'=>'商品参数7','name'=>'param7','required'=>0), 26=>array('title'=>'商品参数8','name'=>'param8','required'=>0), 27=>array('title'=>'商品参数9','name'=>'param9','required'=>0), 28=>array('title'=>'商品参数10','name'=>'param10','required'=>0), 29=>array('title'=>'商品参数11','name'=>'param11','required'=>0), 30=>array('title'=>'商品参数12','name'=>'param12','required'=>0), 31=>array('title'=>'商品参数13','name'=>'param13','required'=>0), 32=>array('title'=>'商品参数14','name'=>'param14','required'=>0), 33=>array('title'=>'商品参数15','name'=>'param15','required'=>0), 34=>array('title'=>'商品参数16','name'=>'param16','required'=>0), 35=>array('title'=>'商品参数17','name'=>'param17','required'=>0), 36=>array('title'=>'商品参数18','name'=>'param18','required'=>0), 37=>array('title'=>'商品参数19','name'=>'param19','required'=>0), 38=>array('title'=>'商品参数20','name'=>'param20','required'=>0), 39=>array('title'=>'商品参数21','name'=>'param21','required'=>0), 40=>array('title'=>'商品参数22','name'=>'param22','required'=>0), 41=>array('title'=>'商品参数23','name'=>'param23','required'=>0), 42=>array('title'=>'商品参数24','name'=>'param24','required'=>0), 43=>array('title'=>'商品参数25','name'=>'param25','required'=>0), 44=>array('title'=>'商品参数26','name'=>'param26','required'=>0), 45=>array('title'=>'商品参数27','name'=>'param27','required'=>0), 46=>array('title'=>'商品参数28','name'=>'param28','required'=>0), 47=>array('title'=>'商品参数29','name'=>'param29','required'=>0), 48=>array('title'=>'商品参数30','name'=>'param30','required'=>0), 49=>array('title'=>'商品状态','name'=>'state','required'=>1) ); //供应商 $supplier_arr = $this->supper_name_id(); //买手 $user_arr = $this->user_name_id(); //分类 $cate_arr = $this->cate_title_id(); //获取一、二、三级分类 $other_cate = $this->getOtherCate(); //获取所有分类标签 $cate_tags = $this->getCateTag(); //封装性别数组 $gender = array( '男' => 1, '女' => 2, '中性' => 3, '童'=> 4 ); //上下架 $putaway_arr = array('上架'=>1,'下架'=>0); //是否残次 $defective_arr = array('是'=>1,'否'=>0); //商品状态 // $state_arr = array('首页上架'=>1,'列表页上架'=>2,'隐身上架'=>3,'下架'=>4); $state_arr = array_flip($this->state_ary); $excel_arr = array(); $goods_arr = array(); foreach($excel_row['data'][0]['Content'] as $key=>$value){ if($key==1){ foreach($value as $k=>$val){ if($col_title[$k]['title']!=$val){ $this->error('数据列与模板不符,上传失败'); } } }else{ // if(empty($value[1]) || empty($value[2])){ // continue; // } $row_arr = array(); $row_arr['goods_bzno'] = trim($value[1]); $row_arr['goods_no'] = trim($value[2]); if(empty($row_arr['goods_no'])){ $this->error('OMS编码不能为空!'); } $row_arr['goods_name'] = trim($value[8]); $row_arr['size'] = trim($value[9]); $row_arr['color'] = trim($value[10]); $row_arr['crazy_price'] = trim($value[11]); $row_arr['shop_price'] = trim($value[12]); $row_arr['buy_price'] = trim($value[13]); $row_arr['bathch'] = trim($value[18]); $i = 15; $param_arr = array(); for($i=19;$i<49;$i++){ $row_arr['param'.($i-18)] = trim($value[$i]); if(!empty($value[$i])){ $param_arr[] = trim($value[$i]); } } // $row_arr['param1'] = $value[15]; // $row_arr['param2'] = $value[16]; // $row_arr['param3'] = $value[17]; // $row_arr['param4'] = $value[18]; // $row_arr['param5'] = $value[19]; // $row_arr['param6'] = $value[20]; // $param_arr = array(); // if(!empty($value[15])){ // $param_arr[] = $value[15]; // } // if(!empty($value[16])){ // $param_arr[] = $value[16]; // } // if(!empty($value[17])){ // $param_arr[] = $value[17]; // } // if(!empty($value[18])){ // $param_arr[] = $value[18]; // } // if(!empty($value[19])){ // $param_arr[] = $value[19]; // } // if(!empty($value[20])){ // $param_arr[] = $value[20]; // } $row_arr['goods_param'] = $param_arr; $row_arr['cate_text'] = trim($value[3]); $row_arr['is_putaway_text'] = trim($value[14]); $row_arr['is_defective_text'] = trim($value[15]); $row_arr['buyer_text'] = trim($value[16]); $row_arr['supplier_id_text'] = trim($value[17]); $row_arr['state_text'] = trim($value[49]); $row_arr['cate'] = trim($other_cate[$value[3]]['id']); $row_arr['second_cate'] = trim($other_cate[$value[3]]['item'][$value[4]]['id']); $row_arr['three_cate'] = trim($other_cate[$value[3]]['item'][$value[4]]['item'][$value[5]]['id']); if(empty($row_arr['cate']) || empty($row_arr['second_cate'])){ $this->error('请确认商品编号:'.$row_arr['goods_bzno'].'的一、二级分类是否存在!'); } $row_arr['cate_tag'] = $cate_tags[$value[6]]; $row_arr['gender'] = !is_null($gender[$value[7]])?$gender[$value[7]]:0; $row_arr['is_putaway'] = trim($putaway_arr[$value[14]]); $row_arr['is_defective'] = trim($defective_arr[$value[15]]); $row_arr['buyer'] = trim($user_arr[$value[16]]); $row_arr['supplier_id'] = trim($supplier_arr[$value[17]]); $row_arr['state'] = trim($state_arr[$value[49]]); $goods_arr[] = trim($value[2]); $excel_arr[$row_arr['goods_no']] = $row_arr; } } } //判断商品的适合性别是否合法 $gender_err = rtrim($gender_err,','); if(!empty($gender_err)){ $this->error('OMS编码:'.$gender_err.' 商品适合性别不合法!'); } /* * 增加‘导入表与既存商品价格不一致时,给出提示并整张表不可导’功能 */ foreach ($excel_arr as $key => $value) { $tmp_excel_str[] = $key; } $m_spec = M('Spec'); $spec_field = 'goods_no,crazy_price,goods_id'; $spec_map['goods_no'] = array('IN',$tmp_excel_str); $s_spec_arr = $m_spec->field($spec_field)->where($spec_map)->group('goods_no')->select(); foreach ($s_spec_arr as $key => $value) { $data_price[$value['goods_id']][$value['goods_no']] = $value['crazy_price']; $check_goods_id[] = $value['goods_id']; $check_goods_no[] = $value['goods_no']; } $error_goods_no = array_diff($tmp_excel_str, $check_goods_no); if(!empty($error_goods_no)){ foreach ($error_goods_no as $key => $value) { $err_goods_no .= $value.','; } $final_err = rtrim($err_goods_no,','); $this->error('商品编码:'.$final_err.'不存在!'); } //校验商品是否属于正式运营专题 $checkRs = $this->check_special_goods(array_unique($check_goods_id)); $this->assign('checkRs',$checkRs); $e_goods = $excel_arr; $m_goods = M('goods g'); $w_goods['s.goods_no'] = array('in',$goods_arr); $j_goods = " inner join ".C('DB_PREFIX')."spec s on g.goods_id=s.goods_id "; $j_goods .= " inner join ".C('DB_PREFIX')."goodscollect gc on g.goods_id=gc.goods_id and gc.type=0 "; $f_goods = "g.goods_id,s.spec_id,g.goods_bzno,s.goods_no,g.goods_name,s.attr,s.skusize,s.color,s.crazy_price,s.shop_price,s.buy_price,g.bathch,g.goods_param,g.cate,g.second_cate,g.three_cate,g.cate_tag,g.gender,s.is_putaway,s.is_defective,g.buyer,g.supplier_id,gc.state,gc.status"; $l_goods = $m_goods->field($f_goods)->join($j_goods)->where($w_goods)->select(); $goods_excel = $msg_arr = $neq_msg_arr = $neq_price_arr = array(); $goods_price = array(); $status_arr = array(3,5); foreach($l_goods as $key=>$value){ unset($e_goods[$value['goods_no']]); //赋值 $neq_m_arr = $m_arr = $g_arr = array(); $g_arr['spec_id'] = $value['spec_id']; $g_arr['goods_id'] = $value['goods_id']; $g_arr['goods_bzno'] = $value['goods_bzno']; $g_arr['goods_no'] = $value['goods_no']; $g_arr['cate'] = $value['cate']; $g_arr['second_cate'] = $value['second_cate']; $g_arr['three_cate'] = $value['three_cate']; $g_arr['cate_tag'] = $value['cate_tag']; $g_arr['gender'] = $value['gender']; $g_arr['goods_name'] = $value['goods_name']; $g_arr['color'] = $value['color']; $g_arr['skusize'] = $value['skusize']; $g_arr['attr'] = $value['attr']; $g_arr['crazy_price'] = $value['crazy_price']; $g_arr['shop_price'] = $value['shop_price']; $g_arr['buy_price'] = $value['buy_price']; $g_arr['is_putaway'] = $value['is_putaway']; $g_arr['is_defective'] = $value['is_defective']; $g_arr['buyer'] = $value['buyer']; $g_arr['supplier_id'] = $value['supplier_id']; $g_arr['bathch'] = $value['bathch']; $g_arr['goods_param'] = $value['goods_param']; $g_arr['state'] = $value['state']; $g_arr['status'] = $value['status']; $g_arr['im_cate'] = $excel_arr[$value['goods_no']]['cate']; $g_arr['im_second_cate'] = !empty($excel_arr[$value['goods_no']]['second_cate'])?$excel_arr[$value['goods_no']]['second_cate']:0; $g_arr['im_three_cate'] = !empty($excel_arr[$value['goods_no']]['three_cate'])?$excel_arr[$value['goods_no']]['three_cate']:0; $g_arr['im_cate_tag'] = !empty($excel_arr[$value['goods_no']]['cate_tag'])?$excel_arr[$value['goods_no']]['cate_tag']:0; $g_arr['im_gender'] = $excel_arr[$value['goods_no']]['gender']; $g_arr['im_goods_name'] = $excel_arr[$value['goods_no']]['goods_name']; $g_arr['im_color'] = $excel_arr[$value['goods_no']]['color']; $g_arr['im_skusize'] = $excel_arr[$value['goods_no']]['size']; $attr2 = array(); if(empty($excel_arr[$value['goods_no']]['color'])){ if(!empty($excel_arr[$value['goods_no']]['size'])){ $attr2['skuSize'] = $excel_arr[$value['goods_no']]['size']; } }else{ $attr2['color'] = $excel_arr[$value['goods_no']]['color']; if(!empty($excel_arr[$value['goods_no']]['size'])){ $attr2['skuSize'] = $excel_arr[$value['goods_no']]['size']; } } if(!isset($goods_price[$value['goods_id']])){ $goods_price[$value['goods_id']] = $excel_arr[$value['goods_no']]['crazy_price']; } $g_arr['im_attr'] = serialize($attr2); $g_arr['im_crazy_price'] = $excel_arr[$value['goods_no']]['crazy_price']; $g_arr['im_shop_price'] = $excel_arr[$value['goods_no']]['shop_price']; $g_arr['im_buy_price'] = $excel_arr[$value['goods_no']]['buy_price']; $g_arr['im_is_putaway'] = $excel_arr[$value['goods_no']]['is_putaway']; $g_arr['im_is_defective'] = $excel_arr[$value['goods_no']]['is_defective']; $g_arr['im_buyer'] = $excel_arr[$value['goods_no']]['buyer']; $g_arr['im_supplier_id'] = $excel_arr[$value['goods_no']]['supplier_id']; $g_arr['im_bathch'] = $excel_arr[$value['goods_no']]['bathch']; $g_arr['im_goods_param'] = serialize($excel_arr[$value['goods_no']]['goods_param']); $g_arr['im_state'] = $excel_arr[$value['goods_no']]['state']; if(in_array($value['status'],$status_arr)){ $g_arr['im_status'] = 2; $g_arr['im_post_checktime'] = time(); }else{ $g_arr['im_status'] = $value['status']; $g_arr['im_post_checktime'] = 0; } $g_arr['operator'] = $operator; $g_arr['import_id'] = $import_id; //验证是否必填,验证是否已经有值 if(!empty($excel_arr[$value['goods_no']]['cate']) && !empty($excel_arr[$value['goods_no']]['cate_text'])){ //所属分类 if(!empty($value['cate'])){ $m_arr['cate']['ct'] = 1; } }else{ if(empty($value['cate'])){ $neq_m_arr['cate']['neq'] = 1; }else{ $g_arr['im_cate'] = $value['cate']; } } if(!empty($excel_arr[$value['goods_no']]['goods_name'])){ //商品名称 if(!empty($value['goods_name'])){ $m_arr['goods_name']['ct'] = 1; } }else{ if(empty($value['goods_name'])){ $neq_m_arr['goods_name']['neq'] = 1; }else{ $g_arr['im_goods_name'] = $value['goods_name']; } } $attr = unserialize($value['attr']); if(!empty($excel_arr[$value['goods_no']]['size'])){ //尺寸 if(!empty($attr['skuSize'])){ $m_arr['size']['ct'] = 1; } } if(!empty($excel_arr[$value['goods_no']]['color'])){ //颜色 if(!empty($attr['color'])){ $m_arr['color']['ct'] = 1; } } if((empty($excel_arr[$value['goods_no']]['size']) && empty($excel_arr[$value['goods_no']]['color'])) && (!empty($attr['skuSize']) || !empty($attr['color']))){ $attr1 = array(); // var_dump($attr); if(empty($attr['color'])){ if(!empty($attr['skuSize'])){ $attr1['skuSize'] = $attr['skuSize']; } }else{ $attr1['color'] = $attr['color']; if(!empty($attr['skuSize'])){ $attr1['skuSize'] = $attr['skuSize']; } } $g_arr['im_attr'] = serialize($attr1); } if(!empty($excel_arr[$value['goods_no']]['crazy_price'])){ //疯狂价 if(!empty($value['crazy_price'])){ $m_arr['crazy_price']['ct'] = 1; } if(!is_numeric($excel_arr[$value['goods_no']]['crazy_price'])){ $neq_m_arr['crazy_price']['n_int'] = 1; } if(!isset($neq_price_arr[$value['goods_bzno']])){ if($goods_price[$value['goods_id']]!=$excel_arr[$value['goods_no']]['crazy_price']){ $neq_price_arr[$value['goods_bzno']] = 1; } } //if($goods_excel[$value['spec_id']]['im_crazy_price']) }else{ if(empty($value['crazy_price'])){ $neq_m_arr['crazy_price']['neq'] = 1; }else{ $g_arr['im_crazy_price'] = $value['crazy_price']; } } if(!empty($excel_arr[$value['goods_no']]['shop_price'])){ //柜台价 if(!empty($value['shop_price'])){ $m_arr['shop_price']['ct'] = 1; } if(!is_numeric($excel_arr[$value['goods_no']]['shop_price'])){ $neq_m_arr['shop_price']['n_int'] = 1; } }else{ if(empty($value['shop_price'])){ $neq_m_arr['shop_price']['neq'] = 1; }else{ $g_arr['im_shop_price'] = $value['shop_price']; } } if(!empty($excel_arr[$value['goods_no']]['buy_price'])){ //进货价 if(!empty($value['buy_price'])){ $m_arr['buy_price']['ct'] = 1; } if(!is_numeric($excel_arr[$value['goods_no']]['buy_price'])){ $neq_m_arr['buy_price']['n_int'] = 1; } }else{ if(empty($value['buy_price'])){ $neq_m_arr['buy_price']['neq'] = 1; }else{ $g_arr['im_buy_price'] = $value['buy_price']; } } if((!empty($excel_arr[$value['goods_no']]['is_putaway']) || $excel_arr[$value['goods_no']]['is_putaway'] == 0) && !empty($excel_arr[$value['goods_no']]['is_putaway_text'])){ //上下架 if(!empty($value['is_putaway']) || $value['is_putaway'] ==0){ $m_arr['is_putaway']['ct'] = 1; } }else{ if(empty($value['is_putaway']) && $value['is_putaway'] != 0){ $neq_m_arr['is_putaway']['neq'] = 1; }else{ $g_arr['im_is_putaway'] = $value['is_putaway']; } } if((!empty($excel_arr[$value['goods_no']]['is_defective']) || $excel_arr[$value['goods_no']]['is_defective'] == 0) && !empty($excel_arr[$value['goods_no']]['is_defective_text'])){ //是否残次 if(!empty($value['is_defective']) || $value['is_defective'] ==0){ $m_arr['is_defective']['ct'] = 1; } }else{ $g_arr['im_is_defective'] = $value['is_defective']; } if(!empty($excel_arr[$value['goods_no']]['buyer']) && !empty($excel_arr[$value['goods_no']]['buyer_text'])){ //买手 if(!empty($value['buyer'])){ $m_arr['buyer']['ct'] = 1; } }else{ if(empty($value['buyer'])){ $neq_m_arr['buyer']['neq'] = 1; }else{ $g_arr['im_buyer'] = $value['buyer']; } } if(!empty($excel_arr[$value['goods_no']]['supplier_id']) && !empty($excel_arr[$value['goods_no']]['supplier_id_text'])){ //供应商 if(!empty($value['supplier_id'])){ $m_arr['supplier_id']['ct'] = 1; } }else{ if(empty($value['supplier_id'])){ $neq_m_arr['supplier_id']['neq'] = 1; }else{ $g_arr['im_supplier_id'] = $value['supplier_id']; } } if(!empty($excel_arr[$value['goods_no']]['bathch'])){ //批次 if(!empty($value['bathch'])){ $m_arr['bathch']['ct'] = 1; } }else{ if(!empty($value['bathch'])){ $g_arr['im_bathch'] = $value['bathch']; } } if(!empty($excel_arr[$value['goods_no']]['goods_param'])){ //参数 $goods_param = unserialize($value['goods_param']); if(!empty($value['goods_param'])){ $m_arr['goods_param']['ct'] = 1; } }else{ if(!empty($value['goods_param'])){ $g_arr['im_goods_param'] = $value['goods_param']; } } if(!empty($excel_arr[$value['goods_no']]['state']) && !empty($excel_arr[$value['goods_no']]['state_text'])){ //商品状态 if(!empty($value['state'])){ $m_arr['state']['ct'] = 1; } }else{ if(empty($value['state'])){ $neq_m_arr['state']['neq'] = 1; }else{ $g_arr['im_state'] = $excel_arr[$value['goods_no']]['state']; } } if(!empty($m_arr)){ $msg_arr[$value['goods_no']] = $m_arr; } if(!empty($neq_m_arr)){ $neq_msg_arr[$value['goods_no']] = $neq_m_arr; } $goods_excel[$value['spec_id']] = $g_arr; $data_excel_goods[$value['goods_id']][$value['goods_no']] = $excel_arr[$value['goods_no']]['crazy_price']; } if(!empty($msg_arr)){ $m_edit_goods = M('edit_goods'); $w_edit_goods['operator'] = $operator; if($m_edit_goods->where($w_edit_goods)->delete()!==false){ $data = $goods_excel; sort($data); //导入表与既存商品价格不一致时,给出提示并整张表不可导。 foreach ($data_excel_goods as $key => $value) { if(isset($data_price[$key])){ $price_diff[$key] = $data_excel_goods[$key]+$data_price[$key]; } } foreach ($price_diff as $k => $v) { if(count(array_unique($price_diff[$k])) > 1){ $this->error('商品ID'.$k.'所属SKU价格不一致'); } } if($m_edit_goods->addAll($data)===false){ $this->error('上传失败,创建备份失败!'); } }else{ $this->error('上传失败,清除历史备份失败!'); } } $yz_arr = array( 'ct'=>array( 'cate'=>'分类', 'goods_name'=>'商品名称', 'size'=>'尺寸', 'color'=>'颜色', 'crazy_price'=>'疯狂价', 'shop_price'=>'柜台价', 'buy_price'=>'进货价', 'is_putaway'=>'上下架', 'is_defective'=>'残次品', 'buyer'=>'买手', 'supplier_id'=>'供应商', 'bathch'=>'批次', 'goods_param'=>'商品参数', 'state'=>'商品状态' ), 'neq'=>array( 'cate'=>'分类', 'goods_name'=>'商品名称', 'crazy_price'=>'疯狂价', 'shop_price'=>'柜台价', 'buy_price'=>'进货价', 'is_putaway'=>'上下架', 'buyer'=>'买手', 'supplier_id'=>'供应商', 'state'=>'商品状态' ), 'n_int'=>array( 'crazy_price'=>'疯狂价', 'shop_price'=>'柜台价', 'buy_price'=>'进货价' ) ); $this->assign('yz_arr',$yz_arr); $this->assign('msg_arr',$msg_arr); $this->assign('neq_msg_arr',$neq_msg_arr); $this->assign('neq_price_arr',$neq_price_arr); $this->assign('goods_excel',$goods_excel); $this->assign('e_goods',$e_goods); $this->assign('import_id',$import_id); $this->display(); } }
public function Execlimport($file, $excel_type = 'xls') { // $file='E:\work\cbd\cbdroot\upload_dir\supplier_goods\20140604\538e8fee0ae11.xls'; // echo $file; if (!file_exists($file)) { return [ "error" => 0, 'message' => 'file not found!' ]; } Vendor("PHPExcel.PHPExcel"); Vendor("PHPExcel.PHPExcel.IOFactory"); Vendor("PHPExcel.PHPExcel.Reader.Excel5"); Vendor("PHPExcel.PHPExcel.Reader.Excel2007"); if ($excel_type == 'xls') { $objReader = PHPExcel_IOFactory::createReader('Excel5'); } else { $objReader = PHPExcel_IOFactory::createReader('Excel2007'); } try { $PHPReader = $objReader->load($file); } catch (Exception $e) { } if (!isset($PHPReader)) { return [ "error" => 0, 'message' => 'read error!' ]; } $allWorksheets = $PHPReader->getAllSheets(); $i = 0; foreach ($allWorksheets as $objWorksheet) { $sheetname = $objWorksheet->getTitle(); $allRow = $objWorksheet->getHighestRow();//how many rows $highestColumn = $objWorksheet->getHighestColumn();//how many columns $allColumn = PHPExcel_Cell::columnIndexFromString($highestColumn); $array[$i]["Title"] = $sheetname; $array[$i]["Cols"] = $allColumn; $array[$i]["Rows"] = $allRow; $arr = []; $isMergeCell = []; foreach ($objWorksheet->getMergeCells() as $cells) {//merge cells foreach (PHPExcel_Cell::extractAllCellReferencesInRange($cells) as $cellReference) { $isMergeCell[$cellReference] = true; } } for ($currentRow = 1; $currentRow <= $allRow; $currentRow++) { $row = []; for ($currentColumn = 0; $currentColumn < $allColumn; $currentColumn++) { ; $cell = $objWorksheet->getCellByColumnAndRow($currentColumn, $currentRow); $afCol = PHPExcel_Cell::stringFromColumnIndex($currentColumn + 1); $bfCol = PHPExcel_Cell::stringFromColumnIndex($currentColumn - 1); $col = PHPExcel_Cell::stringFromColumnIndex($currentColumn); $address = $col . $currentRow; $value = $objWorksheet->getCell($address)->getValue(); if (substr($value, 0, 1) == '=') { return [ "error" => 0, 'message' => 'can not use the formula!' ]; exit; } if ($cell->getDataType() == PHPExcel_Cell_DataType::TYPE_NUMERIC) { $cellstyleformat = $cell->getStyle($cell->getCoordinate())->getNumberFormat(); // $cellstyleformat=$cell->getParent()->getStyle( $cell->getCoordinate() )->getNumberFormat(); // var_dump($cell->getCoordinate()); // exit(); $formatcode = $cellstyleformat->getFormatCode(); if (preg_match('/^([$[A-Z]*-[0-9A-F]*])*[hmsdy]/i', $formatcode)) { $value = gmdate("Y-m-d", PHPExcel_Shared_Date::ExcelToPHP($value)); } else { $value = PHPExcel_Style_NumberFormat::toFormattedString($value, $formatcode); } } if ($isMergeCell[$col . $currentRow] && $isMergeCell[$afCol . $currentRow] && !empty($value)) { $temp = $value; } elseif ($isMergeCell[$col . $currentRow] && $isMergeCell[$col . ($currentRow - 1)] && empty($value)) { $value = $arr[$currentRow - 1][$currentColumn]; } elseif ($isMergeCell[$col . $currentRow] && $isMergeCell[$bfCol . $currentRow] && empty($value)) { $value = $temp; } $row[$currentColumn] = $value; } $arr[$currentRow] = $row; } $array[$i]["Content"] = $arr; $i++; } spl_autoload_register([ 'Think', 'autoload' ]);//must, resolve ThinkPHP and PHPExcel conflicts unset($objWorksheet); unset($PHPReader); unset($PHPExcel); unlink($file); return [ "error" => 1, "data" => $array ]; }
public function import_upload(){ set_time_limit(900); if(!empty($_FILES ['xls_path']['name'])){ $tmp_file = $_FILES ['xls_path']['tmp_name']; $file_types = explode ( ".",$_FILES ['xls_path']['name']); $file_type = $file_types[count($file_types) - 1]; $operator = $_SESSION[C('USER_AUTH_KEY')]; $import_id = time(); /*判别是不是.xls文件,判别是不是excel文件*/ if(!in_array(strtolower($file_type),array('xls','xlsx'))){ $this->error('不是Excel文件,重新上传'); } if($_FILES['size']>2097152){ $this->error('上传文件大小不能超过2M'); } /*设置上传路径*/ $savePath = substr($_SERVER['DOCUMENT_ROOT'],0,-8) . "upload_dir/update_goods/"; /*以时间来命名上传的文件*/ $str = date('Ymdhis'); $file_name = $str . "." . $file_type; /*是否上传成功*/ if(!copy( $tmp_file, $savePath . $file_name)){ $this->error('上传失败'); } $excel_row = $this->Execlimport($savePath.$file_name,strtolower($file_type)); if($excel_row['data'][0]['Rows']>1001){ $this->error('单次上传数据不能超过1000条'); } if($excel_row['error']==1){ // echo $excel_row['data'][0]['Cols']; // var_dump($excel_row['data'][0]); // if($excel_row['data'][0]['Cols']!=22){ // exit(); // //$this->error('数据列与模板不符,上传模板格式的数据表'); // } $col_title = array( 0=>array('title'=>'序号'), 1=>array('title'=>'商品编号','name'=>'goods_bzno','required'=>1), 2=>array('title'=>'OMS编码','name'=>'goods_no','required'=>1), 3=>array('title'=>'一级分类','name'=>'cate','required'=>1,'type'=>'int'), 4=>array('title'=>'二级分类','name'=>'second_cate'), 5=>array('title'=>'三级分类','name'=>'three_cate'), 6=>array('title'=>'分类标签','name'=>'cate_tag'), 7=>array('title'=>'适合性别','name'=>'gender'), 8=>array('title'=>'商品名称','name'=>'goods_name','required'=>1), 9=>array('title'=>'尺寸','name'=>'size','required'=>0), 10=>array('title'=>'颜色','name'=>'color','required'=>0), 11=>array('title'=>'疯狂价','name'=>'crazy_price','required'=>1,'type'=>'double'), 12=>array('title'=>'柜台价','name'=>'shop_price','required'=>1,'type'=>'double'), 13=>array('title'=>'进货价','name'=>'buy_price','required'=>1,'type'=>'double'), 14=>array('title'=>'上下架','name'=>'is_putaway','required'=>1), 15=>array('title'=>'残次品','name'=>'is_defective'), 16=>array('title'=>'买手','name'=>'buyer','required'=>1), 17=>array('title'=>'供应商','name'=>'supplier_id','required'=>1), 18=>array('title'=>'批次','name'=>'bathch','required'=>0), 19=>array('title'=>'商品参数1','name'=>'param1','required'=>0), 20=>array('title'=>'商品参数2','name'=>'param2','required'=>0), 21=>array('title'=>'商品参数3','name'=>'param3','required'=>0), 22=>array('title'=>'商品参数4','name'=>'param4','required'=>0), 23=>array('title'=>'商品参数5','name'=>'param5','required'=>0), 24=>array('title'=>'商品参数6','name'=>'param6','required'=>0), 25=>array('title'=>'商品参数7','name'=>'param7','required'=>0), 26=>array('title'=>'商品参数8','name'=>'param8','required'=>0), 27=>array('title'=>'商品参数9','name'=>'param9','required'=>0), 28=>array('title'=>'商品参数10','name'=>'param10','required'=>0), 29=>array('title'=>'商品参数11','name'=>'param11','required'=>0), 30=>array('title'=>'商品参数12','name'=>'param12','required'=>0), 31=>array('title'=>'商品参数13','name'=>'param13','required'=>0), 32=>array('title'=>'商品参数14','name'=>'param14','required'=>0), 33=>array('title'=>'商品参数15','name'=>'param15','required'=>0), 34=>array('title'=>'商品参数16','name'=>'param16','required'=>0), 35=>array('title'=>'商品参数17','name'=>'param17','required'=>0), 36=>array('title'=>'商品参数18','name'=>'param18','required'=>0), 37=>array('title'=>'商品参数19','name'=>'param19','required'=>0), 38=>array('title'=>'商品参数20','name'=>'param20','required'=>0), 39=>array('title'=>'商品参数21','name'=>'param21','required'=>0), 40=>array('title'=>'商品参数22','name'=>'param22','required'=>0), 41=>array('title'=>'商品参数23','name'=>'param23','required'=>0), 42=>array('title'=>'商品参数24','name'=>'param24','required'=>0), 43=>array('title'=>'商品参数25','name'=>'param25','required'=>0), 44=>array('title'=>'商品参数26','name'=>'param26','required'=>0), 45=>array('title'=>'商品参数27','name'=>'param27','required'=>0), 46=>array('title'=>'商品参数28','name'=>'param28','required'=>0), 47=>array('title'=>'商品参数29','name'=>'param29','required'=>0), 48=>array('title'=>'商品参数30','name'=>'param30','required'=>0), 49=>array('title'=>'商品状态','name'=>'state','required'=>1) ); //供应商 $supplier_arr = $this->supper_name_id(); //买手 $user_arr = $this->user_name_id(); //分类 $cate_arr = $this->cate_title_id(); //获取一、二、三级分类 $other_cate = $this->getOtherCate(); //获取所有分类标签 $cate_tags = $this->getCateTag(); //封装性别数组 $gender = array( '男' => 1, '女' => 2, '中性' => 3, '童'=> 4 ); //上下架 $putaway_arr = array('上架'=>1,'下架'=>0); //是否残次 $defective_arr = array('是'=>1,'否'=>0); //商品状态 // $state_arr = array('首页上架'=>1,'列表页上架'=>2,'隐身上架'=>3,'下架'=>4); $state_arr = array_flip($this->state_ary); $excel_arr = array(); $goods_arr = array(); foreach($excel_row['data'][0]['Content'] as $key=>$value){ if($key==1){ foreach($value as $k=>$val){ if($col_title[$k]['title']!=$val){ $this->error('数据列与模板不符,上传失败'); } } }else{ // if(empty($value[1]) || empty($value[2])){ // continue; // } $row_arr = array(); $row_arr['goods_bzno'] = trim($value[1]); $row_arr['goods_no'] = trim($value[2]); if(empty($row_arr['goods_no'])){ $this->error('OMS编码不能为空!'); } $row_arr['goods_name'] = trim($value[8]); $row_arr['size'] = trim($value[9]); $row_arr['color'] = trim($value[10]); $row_arr['crazy_price'] = trim($value[11]); $row_arr['shop_price'] = trim($value[12]); $row_arr['buy_price'] = trim($value[13]); $row_arr['bathch'] = trim($value[18]); $i = 15; $param_arr = array(); for($i=19;$i<49;$i++){ $row_arr['param'.($i-18)] = trim($value[$i]); if(!empty($value[$i])){ $param_arr[] = trim($value[$i]); } } // $row_arr['param1'] = $value[15]; // $row_arr['param2'] = $value[16]; // $row_arr['param3'] = $value[17]; // $row_arr['param4'] = $value[18]; // $row_arr['param5'] = $value[19]; // $row_arr['param6'] = $value[20]; // $param_arr = array(); // if(!empty($value[15])){ // $param_arr[] = $value[15]; // } // if(!empty($value[16])){ // $param_arr[] = $value[16]; // } // if(!empty($value[17])){ // $param_arr[] = $value[17]; // } // if(!empty($value[18])){ // $param_arr[] = $value[18]; // } // if(!empty($value[19])){ // $param_arr[] = $value[19]; // } // if(!empty($value[20])){ // $param_arr[] = $value[20]; // } $row_arr['goods_param'] = $param_arr; $row_arr['cate_text'] = trim($value[3]); $row_arr['is_putaway_text'] = trim($value[14]); $row_arr['is_defective_text'] = trim($value[15]); $row_arr['buyer_text'] = trim($value[16]); $row_arr['supplier_id_text'] = trim($value[17]); $row_arr['state_text'] = trim($value[49]); $row_arr['cate'] = trim($other_cate[$value[3]]['id']); $row_arr['second_cate'] = trim($other_cate[$value[3]]['item'][$value[4]]['id']); $row_arr['three_cate'] = trim($other_cate[$value[3]]['item'][$value[4]]['item'][$value[5]]['id']); if(empty($row_arr['cate']) || empty($row_arr['second_cate'])){ $this->error('请确认商品编号:'.$row_arr['goods_bzno'].'的一、二级分类是否存在!'); } $row_arr['cate_tag'] = $cate_tags[$value[6]]; $row_arr['gender'] = !is_null($gender[$value[7]])?$gender[$value[7]]:0; $row_arr['is_putaway'] = trim($putaway_arr[$value[14]]); $row_arr['is_defective'] = trim($defective_arr[$value[15]]); $row_arr['buyer'] = trim($user_arr[$value[16]]); $row_arr['supplier_id'] = trim($supplier_arr[$value[17]]); $row_arr['state'] = trim($state_arr[$value[49]]); $goods_arr[] = trim($value[2]); $excel_arr[$row_arr['goods_no']] = $row_arr; } } } //判断商品的适合性别是否合法 $gender_err = rtrim($gender_err,','); if(!empty($gender_err)){ $this->error('OMS编码:'.$gender_err.' 商品适合性别不合法!'); } /* * 增加‘导入表与既存商品价格不一致时,给出提示并整张表不可导’功能 */ foreach ($excel_arr as $key => $value) { $tmp_excel_str[] = $key; } $m_spec = M('Spec'); $spec_field = 'goods_no,crazy_price,goods_id'; $spec_map['goods_no'] = array('IN',$tmp_excel_str); $s_spec_arr = $m_spec->field($spec_field)->where($spec_map)->group('goods_no')->select(); foreach ($s_spec_arr as $key => $value) { $data_price[$value['goods_id']][$value['goods_no']] = $value['crazy_price']; $check_goods_id[] = $value['goods_id']; $check_goods_no[] = $value['goods_no']; } $error_goods_no = array_diff($tmp_excel_str, $check_goods_no); if(!empty($error_goods_no)){ foreach ($error_goods_no as $key => $value) { $err_goods_no .= $value.','; } $final_err = rtrim($err_goods_no,','); $this->error('商品编码:'.$final_err.'不存在!'); } //校验商品是否属于正式运营专题 $checkRs = $this->check_special_goods(array_unique($check_goods_id)); $this->assign('checkRs',$checkRs); $e_goods = $excel_arr; $m_goods = M('goods g'); $w_goods['s.goods_no'] = array('in',$goods_arr); $j_goods = " inner join ".C('DB_PREFIX')."spec s on g.goods_id=s.goods_id "; $j_goods .= " inner join ".C('DB_PREFIX')."goodscollect gc on g.goods_id=gc.goods_id and gc.type=0 "; $f_goods = "g.goods_id,s.spec_id,g.goods_bzno,s.goods_no,g.goods_name,s.attr,s.skusize,s.color,s.crazy_price,s.shop_price,s.buy_price,g.bathch,g.goods_param,g.cate,g.second_cate,g.three_cate,g.cate_tag,g.gender,s.is_putaway,s.is_defective,g.buyer,g.supplier_id,gc.state,gc.status"; $l_goods = $m_goods->field($f_goods)->join($j_goods)->where($w_goods)->select(); $goods_excel = $msg_arr = $neq_msg_arr = $neq_price_arr = array(); $goods_price = array(); $status_arr = array(3,5); foreach($l_goods as $key=>$value){ unset($e_goods[$value['goods_no']]); //赋值 $neq_m_arr = $m_arr = $g_arr = array(); $g_arr['spec_id'] = $value['spec_id']; $g_arr['goods_id'] = $value['goods_id']; $g_arr['goods_bzno'] = $value['goods_bzno']; $g_arr['goods_no'] = $value['goods_no']; $g_arr['cate'] = $value['cate']; $g_arr['second_cate'] = $value['second_cate']; $g_arr['three_cate'] = $value['three_cate']; $g_arr['cate_tag'] = $value['cate_tag']; $g_arr['gender'] = $value['gender']; $g_arr['goods_name'] = $value['goods_name']; $g_arr['color'] = $value['color']; $g_arr['skusize'] = $value['skusize']; $g_arr['attr'] = $value['attr']; $g_arr['crazy_price'] = $value['crazy_price']; $g_arr['shop_price'] = $value['shop_price']; $g_arr['buy_price'] = $value['buy_price']; $g_arr['is_putaway'] = $value['is_putaway']; $g_arr['is_defective'] = $value['is_defective']; $g_arr['buyer'] = $value['buyer']; $g_arr['supplier_id'] = $value['supplier_id']; $g_arr['bathch'] = $value['bathch']; $g_arr['goods_param'] = $value['goods_param']; $g_arr['state'] = $value['state']; $g_arr['status'] = $value['status']; $g_arr['im_cate'] = $excel_arr[$value['goods_no']]['cate']; $g_arr['im_second_cate'] = !empty($excel_arr[$value['goods_no']]['second_cate'])?$excel_arr[$value['goods_no']]['second_cate']:0; $g_arr['im_three_cate'] = !empty($excel_arr[$value['goods_no']]['three_cate'])?$excel_arr[$value['goods_no']]['three_cate']:0; $g_arr['im_cate_tag'] = !empty($excel_arr[$value['goods_no']]['cate_tag'])?$excel_arr[$value['goods_no']]['cate_tag']:0; $g_arr['im_gender'] = $excel_arr[$value['goods_no']]['gender']; $g_arr['im_goods_name'] = $excel_arr[$value['goods_no']]['goods_name']; $g_arr['im_color'] = $excel_arr[$value['goods_no']]['color']; $g_arr['im_skusize'] = $excel_arr[$value['goods_no']]['size']; $attr2 = array(); if(empty($excel_arr[$value['goods_no']]['color'])){ if(!empty($excel_arr[$value['goods_no']]['size'])){ $attr2['skuSize'] = $excel_arr[$value['goods_no']]['size']; } }else{ $attr2['color'] = $excel_arr[$value['goods_no']]['color']; if(!empty($excel_arr[$value['goods_no']]['size'])){ $attr2['skuSize'] = $excel_arr[$value['goods_no']]['size']; } } if(!isset($goods_price[$value['goods_id']])){ $goods_price[$value['goods_id']] = $excel_arr[$value['goods_no']]['crazy_price']; } $g_arr['im_attr'] = serialize($attr2); $g_arr['im_crazy_price'] = $excel_arr[$value['goods_no']]['crazy_price']; $g_arr['im_shop_price'] = $excel_arr[$value['goods_no']]['shop_price']; $g_arr['im_buy_price'] = $excel_arr[$value['goods_no']]['buy_price']; $g_arr['im_is_putaway'] = $excel_arr[$value['goods_no']]['is_putaway']; $g_arr['im_is_defective'] = $excel_arr[$value['goods_no']]['is_defective']; $g_arr['im_buyer'] = $excel_arr[$value['goods_no']]['buyer']; $g_arr['im_supplier_id'] = $excel_arr[$value['goods_no']]['supplier_id']; $g_arr['im_bathch'] = $excel_arr[$value['goods_no']]['bathch']; $g_arr['im_goods_param'] = serialize($excel_arr[$value['goods_no']]['goods_param']); $g_arr['im_state'] = $excel_arr[$value['goods_no']]['state']; if(in_array($value['status'],$status_arr)){ $g_arr['im_status'] = 2; $g_arr['im_post_checktime'] = time(); }else{ $g_arr['im_status'] = $value['status']; $g_arr['im_post_checktime'] = 0; } $g_arr['operator'] = $operator; $g_arr['import_id'] = $import_id; //验证是否必填,验证是否已经有值 if(!empty($excel_arr[$value['goods_no']]['cate']) && !empty($excel_arr[$value['goods_no']]['cate_text'])){ //所属分类 if(!empty($value['cate'])){ $m_arr['cate']['ct'] = 1; } }else{ if(empty($value['cate'])){ $neq_m_arr['cate']['neq'] = 1; }else{ $g_arr['im_cate'] = $value['cate']; } } if(!empty($excel_arr[$value['goods_no']]['goods_name'])){ //商品名称 if(!empty($value['goods_name'])){ $m_arr['goods_name']['ct'] = 1; } }else{ if(empty($value['goods_name'])){ $neq_m_arr['goods_name']['neq'] = 1; }else{ $g_arr['im_goods_name'] = $value['goods_name']; } } $attr = unserialize($value['attr']); if(!empty($excel_arr[$value['goods_no']]['size'])){ //尺寸 if(!empty($attr['skuSize'])){ $m_arr['size']['ct'] = 1; } } if(!empty($excel_arr[$value['goods_no']]['color'])){ //颜色 if(!empty($attr['color'])){ $m_arr['color']['ct'] = 1; } } if((empty($excel_arr[$value['goods_no']]['size']) && empty($excel_arr[$value['goods_no']]['color'])) && (!empty($attr['skuSize']) || !empty($attr['color']))){ $attr1 = array(); // var_dump($attr); if(empty($attr['color'])){ if(!empty($attr['skuSize'])){ $attr1['skuSize'] = $attr['skuSize']; } }else{ $attr1['color'] = $attr['color']; if(!empty($attr['skuSize'])){ $attr1['skuSize'] = $attr['skuSize']; } } $g_arr['im_attr'] = serialize($attr1); } if(!empty($excel_arr[$value['goods_no']]['crazy_price'])){ //疯狂价 if(!empty($value['crazy_price'])){ $m_arr['crazy_price']['ct'] = 1; } if(!is_numeric($excel_arr[$value['goods_no']]['crazy_price'])){ $neq_m_arr['crazy_price']['n_int'] = 1; } if(!isset($neq_price_arr[$value['goods_bzno']])){ if($goods_price[$value['goods_id']]!=$excel_arr[$value['goods_no']]['crazy_price']){ $neq_price_arr[$value['goods_bzno']] = 1; } } //if($goods_excel[$value['spec_id']]['im_crazy_price']) }else{ if(empty($value['crazy_price'])){ $neq_m_arr['crazy_price']['neq'] = 1; }else{ $g_arr['im_crazy_price'] = $value['crazy_price']; } } if(!empty($excel_arr[$value['goods_no']]['shop_price'])){ //柜台价 if(!empty($value['shop_price'])){ $m_arr['shop_price']['ct'] = 1; } if(!is_numeric($excel_arr[$value['goods_no']]['shop_price'])){ $neq_m_arr['shop_price']['n_int'] = 1; } }else{ if(empty($value['shop_price'])){ $neq_m_arr['shop_price']['neq'] = 1; }else{ $g_arr['im_shop_price'] = $value['shop_price']; } } if(!empty($excel_arr[$value['goods_no']]['buy_price'])){ //进货价 if(!empty($value['buy_price'])){ $m_arr['buy_price']['ct'] = 1; } if(!is_numeric($excel_arr[$value['goods_no']]['buy_price'])){ $neq_m_arr['buy_price']['n_int'] = 1; } }else{ if(empty($value['buy_price'])){ $neq_m_arr['buy_price']['neq'] = 1; }else{ $g_arr['im_buy_price'] = $value['buy_price']; } } if((!empty($excel_arr[$value['goods_no']]['is_putaway']) || $excel_arr[$value['goods_no']]['is_putaway'] == 0) && !empty($excel_arr[$value['goods_no']]['is_putaway_text'])){ //上下架 if(!empty($value['is_putaway']) || $value['is_putaway'] ==0){ $m_arr['is_putaway']['ct'] = 1; } }else{ if(empty($value['is_putaway']) && $value['is_putaway'] != 0){ $neq_m_arr['is_putaway']['neq'] = 1; }else{ $g_arr['im_is_putaway'] = $value['is_putaway']; } } if((!empty($excel_arr[$value['goods_no']]['is_defective']) || $excel_arr[$value['goods_no']]['is_defective'] == 0) && !empty($excel_arr[$value['goods_no']]['is_defective_text'])){ //是否残次 if(!empty($value['is_defective']) || $value['is_defective'] ==0){ $m_arr['is_defective']['ct'] = 1; } }else{ $g_arr['im_is_defective'] = $value['is_defective']; } if(!empty($excel_arr[$value['goods_no']]['buyer']) && !empty($excel_arr[$value['goods_no']]['buyer_text'])){ //买手 if(!empty($value['buyer'])){ $m_arr['buyer']['ct'] = 1; } }else{ if(empty($value['buyer'])){ $neq_m_arr['buyer']['neq'] = 1; }else{ $g_arr['im_buyer'] = $value['buyer']; } } if(!empty($excel_arr[$value['goods_no']]['supplier_id']) && !empty($excel_arr[$value['goods_no']]['supplier_id_text'])){ //供应商 if(!empty($value['supplier_id'])){ $m_arr['supplier_id']['ct'] = 1; } }else{ if(empty($value['supplier_id'])){ $neq_m_arr['supplier_id']['neq'] = 1; }else{ $g_arr['im_supplier_id'] = $value['supplier_id']; } } if(!empty($excel_arr[$value['goods_no']]['bathch'])){ //批次 if(!empty($value['bathch'])){ $m_arr['bathch']['ct'] = 1; } }else{ if(!empty($value['bathch'])){ $g_arr['im_bathch'] = $value['bathch']; } } if(!empty($excel_arr[$value['goods_no']]['goods_param'])){ //参数 $goods_param = unserialize($value['goods_param']); if(!empty($value['goods_param'])){ $m_arr['goods_param']['ct'] = 1; } }else{ if(!empty($value['goods_param'])){ $g_arr['im_goods_param'] = $value['goods_param']; } } if(!empty($excel_arr[$value['goods_no']]['state']) && !empty($excel_arr[$value['goods_no']]['state_text'])){ //商品状态 if(!empty($value['state'])){ $m_arr['state']['ct'] = 1; } }else{ if(empty($value['state'])){ $neq_m_arr['state']['neq'] = 1; }else{ $g_arr['im_state'] = $excel_arr[$value['goods_no']]['state']; } } if(!empty($m_arr)){ $msg_arr[$value['goods_no']] = $m_arr; } if(!empty($neq_m_arr)){ $neq_msg_arr[$value['goods_no']] = $neq_m_arr; } $goods_excel[$value['spec_id']] = $g_arr; $data_excel_goods[$value['goods_id']][$value['goods_no']] = $excel_arr[$value['goods_no']]['crazy_price']; } if(!empty($msg_arr)){ $m_edit_goods = M('edit_goods'); $w_edit_goods['operator'] = $operator; if($m_edit_goods->where($w_edit_goods)->delete()!==false){ $data = $goods_excel; sort($data); //导入表与既存商品价格不一致时,给出提示并整张表不可导。 foreach ($data_excel_goods as $key => $value) { if(isset($data_price[$key])){ $price_diff[$key] = $data_excel_goods[$key]+$data_price[$key]; } } foreach ($price_diff as $k => $v) { if(count(array_unique($price_diff[$k])) > 1){ $this->error('商品ID'.$k.'所属SKU价格不一致'); } } if($m_edit_goods->addAll($data)===false){ $this->error('上传失败,创建备份失败!'); } }else{ $this->error('上传失败,清除历史备份失败!'); } } $yz_arr = array( 'ct'=>array( 'cate'=>'分类', 'goods_name'=>'商品名称', 'size'=>'尺寸', 'color'=>'颜色', 'crazy_price'=>'疯狂价', 'shop_price'=>'柜台价', 'buy_price'=>'进货价', 'is_putaway'=>'上下架', 'is_defective'=>'残次品', 'buyer'=>'买手', 'supplier_id'=>'供应商', 'bathch'=>'批次', 'goods_param'=>'商品参数', 'state'=>'商品状态' ), 'neq'=>array( 'cate'=>'分类', 'goods_name'=>'商品名称', 'crazy_price'=>'疯狂价', 'shop_price'=>'柜台价', 'buy_price'=>'进货价', 'is_putaway'=>'上下架', 'buyer'=>'买手', 'supplier_id'=>'供应商', 'state'=>'商品状态' ), 'n_int'=>array( 'crazy_price'=>'疯狂价', 'shop_price'=>'柜台价', 'buy_price'=>'进货价' ) ); $this->assign('yz_arr',$yz_arr); $this->assign('msg_arr',$msg_arr); $this->assign('neq_msg_arr',$neq_msg_arr); $this->assign('neq_price_arr',$neq_price_arr); $this->assign('goods_excel',$goods_excel); $this->assign('e_goods',$e_goods); $this->assign('import_id',$import_id); $this->display(); } }
相关文章推荐
- java导入EXCLE时文件名中文乱码
- 导入Excle数据至数据库 “外部表不是预期的格式”错误信息
- SpringMVC 实现POI读取Excle文件中数据导入数据库(上传)、导出数据库中数据到Excle文件中(下载)
- phpexcle 数据导入导出
- 使用python3获取微信好友并导入到excle中
- 导入excle到DataTable
- SpringMVC文件上传 Excle文件 Poi解析 验证 去重 并批量导入 MYSQL数据
- Excle导入导出简单的封装
- 使用Poi对EXCLE的导入导出
- mysql导入到excle文件
- Excle导入到MSSql
- sqlserver 使用excle导入数据后查询出来成了org.hibernate.lob.serializablecolb@ff87db的问题。
- 导入excle读取表头添加到对应的源字段列表里
- poi-ooxml 导入Excle
- 周SIR习得技巧点 - 如何将业务数据(EXCLE)导入到ORACLE数据库中
- Excle导入
- excle导入导出
- java excle导入 导出
- 【项目】-Excle导入数据库
- SpringMVC 实现POI读取Excle文件中数据导入数据库(上传)、导出数据库中数据到Excle文件中(下载)