| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238 |
- <?php
- namespace app\admin\controller;
- use app\common\controller\Backend;
- use think\Db;
- /**
- * 物料库存管理
- *
- * @icon fa fa-circle-o
- */
- class Matter extends Backend
- {
-
- /**
- * Matter模型对象
- * @var \app\admin\model\Matter
- */
- protected $model = null;
- public function _initialize()
- {
- parent::_initialize();
- $this->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;
- // }
- }
|