model = new \app\admin\model\Matter; } /** * 默认生成的控制器所继承的父类中有index/add/edit/del/multi五个基础方法、destroy/restore/recyclebin三个回收站方法 * 因此在当前控制器中可不用编写增删改查的代码,除非需要自己控制这部分逻辑 * 需要将application/admin/library/traits/Backend.php中对应的方法复制到当前控制器,然后进行修改 */ /** * 添加 */ public function add(){ if ($this->request->isPost()){ $params = input('row/a'); $params = $this->preExcludeFields($params); $params['weight'] = $params['weight'] * 1000; $isNew = Db::name('matter')->where('code',$params['code'])->find(); if ($isNew){//库存已在,更新重量 $result = Db::name('matter_detail')->insert($params); $weight = $params['weight'] + $isNew['weight']; $res = Db::name('matter')->where('code',$params['code'])->setField('weight',$weight); Db::name('matter')->where('code',$params['code'])->setField('create',date('Y-m-d H:i:s',time())); if ($res && $result){ $this->success('库存增加成功'); }else{ $this->error('库存增加失败'); } }else{//库存没有,新增库存 $res = Db::name('matter_detail')->insert($params); if ($res){ $matter['code'] = $params['code']; $matter['name'] = $params['name']; $matter['weight'] = $params['weight']; $matter['create'] = $params['create']; Db::name('matter')->insert($matter); $this->success('库存增加成功'); }else{ $this->error('库存增加失败'); } } } return $this->view->fetch(); } //查看库存信息 public function read(){ //设置过滤方法 $this->request->filter(['strip_tags']); if ($this->request->isAjax()) { $params = $this->request->request(); $filter = json_decode($params['filter'],true); $id = $filter['id']; $limit = $params['limit']; $offset = $params['offset']; $code = Db::name('matter')->where('id',$id)->value('code'); $total = Db::name('matter_detail') ->where('code',$code) ->count(); $list = Db::name('matter_detail') ->where('code',$code) ->where('weight','>',0) ->limit($offset, $limit) ->field('id,code,name,weight,bach,create') ->select(); $result = array("total" => $total, "rows" => $list); return json($result); } return $this->view->fetch(); } //获取打印数据 public function getData(){ $params = input(''); if (empty($params['id'])){ return array('status'=>0,'msg'=>'请选中打印数据'); } $res = Db::name('matter')->where('id',$params['id'])->field('code,name,weight,create')->find(); if (!empty($res)){ return array('status'=>1,'data'=>$res); }else{ return array('status'=>0,'msg'=>'数据错误'); } } //油墨入库单导入 public function import(){ $file = $this->request->request('file'); if (!$file) { $this->error(__('Parameter %s can not be empty', 'file')); } $filePath = ROOT_PATH . DS . 'public' . DS .$file; if (!is_file($filePath)) { $this->error(__('No results were found')); } $extension = substr($file,stripos($file,'.')+1); vendor("PHPExcel.PHPExcel"); //实例化PHPExcel类(注意:实例化的时候前面需要加'\') if ($extension == 'xlsx'){ $objReader = new \PHPExcel_Reader_Excel2007(); }else if($extension == 'xls'){ $objReader=new \PHPExcel_Reader_Excel5(); }else{ $objReader = new \PHPExcel_Reader_CSV(); } $objPHPExcel = $objReader->load($filePath,$encode='utf-8');//获取excel文件 $sheet = $objPHPExcel->getSheet(0); //激活当前的表 $highestRow = $sheet->getHighestRow(); // 取得总行数 $a=0; //将表格里面的数据循环到数组中 // for($i=2;$i<=$highestRow;$i++) // { // //*为什么$i=2? (从第二行开始,才是我们要的数据。) // $data[$a]['create'] = $objPHPExcel->getActiveSheet()->getCell("C".$i)->getValue();//日期 // $data[$a]['bach'] = $objPHPExcel->getActiveSheet()->getCell("D".$i)->getValue();//单据号 // $data[$a]['code'] = $objPHPExcel->getActiveSheet()->getCell("N".$i)->getValue();//存货编码 // $data[$a]['name'] = $objPHPExcel->getActiveSheet()->getCell("O".$i)->getValue();//存货名称 // $data[$a]['weight'] = $objPHPExcel->getActiveSheet()->getCell("R".$i)->getValue() * 1000;//数量 // // 这里的数据根据自己表格里面有多少个字段自行决定 // $a++; // } //导入excel中存货编码 for($i=4;$i<=$highestRow;$i++) { //*为什么$i=2? (从第二行开始,才是我们要的数据。) $weight = $objPHPExcel->getActiveSheet()->getCell("D".$i)->getValue(); if (!empty($weight)){ $data[$a]['code'] = $objPHPExcel->getActiveSheet()->getCell("A".$i)->getValue(); $data[$a]['name']= $objPHPExcel->getActiveSheet()->getCell("B".$i)->getValue(); $data[$a]['weight']= $weight * 1000; $data[$a]['create']= date('Y-m-d H:i:s'); } $a++; } // print_r($data);die; //往数据库添加数据 Db::startTrans(); try{ Db::name('matter_detail')->insertAll($data); foreach ($data as $key=>$value){ $list = Db::name('matter')->where('code',$value['code'])->find(); if ($list){ $weight = $value['weight']+$list['weight']; Db::name('matter')->where('code',$value['code'])->setField('weight',$weight); Db::name('matter')->where('code',$value['code'])->setField('create',date('Y-m-d H:i:s',time())); }else{ $matter['code'] = $value['code']; $matter['name'] = $value['name']; $matter['weight'] = $value['weight']; $matter['create'] = $value['create']; Db::name('matter')->insert($matter); } } Db::commit(); $this->success('导入成功'); }catch (\think\Exception\DbException $exception){ Db::rollback(); $this->error($exception->getMessage()); } } // public function export(){ // //1.从数据库中取出数据 // $list = Db::name('formula_consume')->field('id,formula_name,ink,code')->select(); // $res = Db::name('formula')->column('color'); // foreach ($list as $key=>$value){ // if (in_array($value['ink'],$res)){ // unset($list[$key]); // } // } // //2.加载PHPExcle类库 // vendor('PHPExcel.PHPExcel'); // //3.实例化PHPExcel类 // $objPHPExcel = new \PHPExcel(); // //4.激活当前的sheet表 // $objPHPExcel->setActiveSheetIndex(0); // //5.设置表格头(即excel表格的第一行) // $objPHPExcel->setActiveSheetIndex(0) // ->setCellValue('A1', '序号') // ->setCellValue('B1', 'ID') // ->setCellValue('C1', '配方名称') // ->setCellValue('D1', '油墨名称') // ->setCellValue('E1', '存货编码'); // //设置F列水平居中 // $objPHPExcel->setActiveSheetIndex(0)->getStyle('C')->getAlignment() // ->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER); // //设置单元格宽度 // $objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('C')->setWidth(30); // $objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('D')->setWidth(30); // //6.循环刚取出来的数组,将数据逐一添加到excel表格。 // $i = 0; // foreach ($list as $k=>$v){ // $objPHPExcel->getActiveSheet()->setCellValue('A'.($i+2),$i);//添加ID // $objPHPExcel->getActiveSheet()->setCellValue('B'.($i+2),$v['id']);//添加姓名 // $objPHPExcel->getActiveSheet()->setCellValue('C'.($i+2),$v['formula_name']);//添加姓名 // $objPHPExcel->getActiveSheet()->setCellValue('D'.($i+2),$v['ink']);//添加年龄 // $objPHPExcel->getActiveSheet()->setCellValue('E'.($i+2),$v['code']);//添加班级 // $i++; // } // //7.设置保存的Excel表格名称 // $filename = '大小盒'.date('ymd',time()).'.xls'; // //8.设置当前激活的sheet表格名称; // $objPHPExcel->getActiveSheet()->setTitle('大小盒对应存货编码'); // //9.设置浏览器窗口下载表格 // header("Content-Type: application/force-download"); // header("Content-Type: application/octet-stream"); // header("Content-Type: application/download"); // header('Content-Disposition:inline;filename="'.$filename.'"'); // //生成excel文件 // $objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); // //下载文件在浏览器窗口 // $objWriter->save('php://output'); // exit; // } }