load->_model('Model_whlabel','whlabel'); $this->load->_model('Model_warehouse','warehouse'); $this->load->_model('Model_excel','excel'); $this->load->_model('Model_whlabeltransport','whlabeltransport'); } //定义方法的调用规则 获取URI第二段值 public function _remap($arg,$arg_array) { if($arg == 'add')//添加 { $this->_add(); } else if($arg == 'edit')//修改 { $this->_edit($arg_array); } else if($arg == 'del')//修改 { $this->_del(); } else if($arg == 'zj')//修改 { $this->_zj(); } else if($arg == 'list')//修改 { $this->_list(); } else if($arg == 'presetou')//修改 { $this->_presetout($arg_array); } else if($arg == 'excel') { $this->_excel(); } else if($arg == 'excelzh') { $this->_excelzh();//整合数据 } else { $this->_index(); } } //管理 public function _index() { $post = $this->input->post(NULL, TRUE); if(isset($post['page'])) { $page = $this->input->post('page',true); $perpage = $this->input->post('perpage',true); $warehouse = $this->input->post('warehouse',true); $sku = $this->input->post('sku',true); $text = $this->input->post('text',true); $cz = $this->input->post('cz',true); $xztime = $this->input->post('xztime',true); $timetk = $this->input->post('timetk',true); $timetj = $this->input->post('timetj',true); $timetk = strtotime($timetk); $timetj = strtotime($timetj); $where = "1=1 "; if($warehouse) { $where .= " and warehouse = '$warehouse'"; } if($sku) { $where .= " and sku = '$sku'"; } if($text) { $where .= " and text like '%$text%'"; } if($cz != '') { $where .= " and cz = '$cz'"; } if($timetk && $timetj) { $where .= " and ".$xztime." > '$timetk' and ".$xztime." < '$timetj'"; } //数据排序 $order_str = $xztime." desc"; if(empty($page)) { $start = 0; $perpage = 1; } else { $start = ($page - 1)*$perpage; } $info_list = $this->whlabeltransport->find_all($where,'id,warehouse,sku,title,num,enter,stime,time,text,cz',$order_str,$start,$perpage); foreach ($info_list as $key=>$value) { $warehouse = $this->warehouse->read($value['warehouse']); $info_list[$key]['warehouse'] = $warehouse['title']; $info_list[$key]['enter'] = date('Y-m-d H:i:s',$value['enter']); $info_list[$key]['stime'] = date('Y-m-d',$value['stime']); if($value['time'] > 0) { $info_list[$key]['time'] = date('Y-m-d H:i:s',$value['time']); } else { $info_list[$key]['time'] = "

"; } if($value['cz'] == '0') { $info_list[$key]['cz'] = "

点击完成

"; } else if($value['cz'] == '1') { $info_list[$key]['cz'] = "

已完成

"; } } $total = $this->whlabeltransport->find_count($where); $pagenum = ceil($total/$perpage); $over = $total-($start+$perpage); $rows = array('total'=>$total,'over'=>$over,'pagenum'=>$pagenum,'rows'=>($info_list)); echo json_encode($rows);exit; } $this->_Template('whlabeltransport',$this->data); } //添加 public function _add() { $dir = '/data/excel/'.date('Ymd',time()).'/'; $config['upload_path'] = '.'.$dir ; $config['file_name'] = date('Ymd_His_',time()).rand(1000,9999); $config['allowed_types'] = 'xls|xlsx|csv'; $config['max_size'] = 10240; $this->load->library('upload', $config); $this->upload->initialize($config); if ($this->upload->do_upload('userfile')) { $full_path = $dir.$this->upload->data('file_name'); $fileName = '.' . $full_path; if (!file_exists($fileName)) { echo json_encode(array('msg'=>"上传失败,请重试",'success'=>false));exit; } else { libxml_use_internal_errors(true); require_once "./data/excel/PHPExcel/IOFactory.php"; $phpExcel = PHPExcel_IOFactory::load($fileName);// 载入当前文件 $phpExcel->setActiveSheetIndex(0);// 设置为默认表 $sheetCount = $phpExcel->getSheetCount();// 获取表格数量 $row = $phpExcel->getActiveSheet()->getHighestRow();// 获取行数 $column = $phpExcel->getActiveSheet()->getHighestColumn();// 获取列数 ++$column;//如果列数大于26行 $list = array(); for ($i = 2; $i <= $row; $i++) // 行数循环 { $data = array(); for ($c = 'A'; $c != $column; $c++) // 列数循环 { $data[] = $phpExcel->getActiveSheet()->getCell($c . $i)->getValue(); } $list[] = $data; } } $i = 0;$j = 0;$ed = array(); foreach ($list as $key=>$value) { $time = time(); if($value['0'] == "") { continue; } $warehouse = $this->warehouse->get_title($value['0']); //$d = $this->whlabel->get_sku($value['1']);//针对各个仓库 $d = $this->whlabel->get_warehousesku(5,$value['1']);//针对各个仓库 if($value['2'] =='' || $value['2'] < 1) { continue; } if(!$d)//如果没有这个SKU { $ed[] = array($value['1'].'-库存中不存在此SKU'); $j++; continue; } if(!isset($warehouse['id'])) { $ed[] = array($value['1'].'-仓库名错误!'); $j++; continue; } if($value['3'] == '') { $ed[] = array($value['1'].'-没有填写预达日期!'); $j++; continue; } $post['sku'] = $value['1']; $post['num'] = $value['2'];//数量 $post['stime'] = strtotime($value['3']);//预计到达日期 $post['text'] = $value['4'];//备注 $post['enter'] = $time;//添加时间 $post['shop'] = $d['shop']; $post['warehouse'] = $warehouse['id']; $post['purchase'] = $d['purchase']; $post['title'] = $d['title']; $post['number'] = $d['number']; $post['features'] = $d['features']; $post['retreatwarehouse'] = $d['retreatwarehouse']; $this->whlabeltransport->insert($post); } if($j > 0) { $tt = date('Ymd',time()); $title = '导入错误信息-'.$tt; $titlename = "
错误详情
"; $tail = "\n"; $filename = $title.".xls"; $ecl = $this->excel->get_fz3($ed,$titlename,$filename,$tail); $dir = '/data/excel/'.$time.'/'; $file_name = 'error_'.$time.rand(1000,9999); if(!is_dir('.'.$dir))mkdir('.'.$dir,0777); $myfile = fopen(".".$dir.$file_name.".xls", "w") or die(); fwrite($myfile,$ecl); fclose($myfile); $error = $dir.$file_name.'.xls'; echo json_encode(array('msg'=>'导入成功,'.$j.'条异常,','error'=>$error,'success'=>true));exit; } else { echo json_encode(array('msg'=>'导入成功!','error'=>1,'success'=>true));exit; } } } //修改 public function _edit($arg_array) { $post = $this->input->post(NULL, TRUE); if(isset($post['id'])) { $id = $this->input->post('id',true); $data = $this->whlabeltransport->read($id); if($data['cz'] == '1') { echo json_encode(array('msg'=>'已完成的数据无法修改!','success'=>false));exit; } $post['num'] = $this->input->post('num',true); $post['text'] = $this->input->post('text',true); $stime = $this->input->post('stime',true); $post['stime'] = strtotime($stime); $post['edit'] = time(); if($this->whlabeltransport->save($post,$id)) { echo json_encode(array('msg'=>'修改成功','success'=>true));exit; } else { echo json_encode(array('msg'=>'修改失败,请重试','success'=>false));exit; } } $arg_array = $arg_array[0]; $whlabeltransport = $this->whlabeltransport->read($arg_array); $this->data['whlabeltransport'] = $whlabeltransport; $this->_Template('whlabeltransport_edit',$this->data); } public function _zj() { $post = $this->input->post(NULL, TRUE); if(isset($post['id'])) { $id = $this->input->post('id',true); $data = $this->whlabeltransport->read($id); if($data['cz'] == '0') { $list = array();$num = "";$title = "";$features = ""; $order = $this->input->post('order',true); $shop = $this->input->post('shop',true); $label['shop'] = $data['shop']; $label['sku'] = $data['sku']; $label['warehouse'] = $data['warehouse']; $label['purchase'] = $data['purchase']; $label['retreatwarehouse'] = $data['retreatwarehouse']; $label['state'] = 0; $time = time(); $label['title'] = $data['title']; $label['number'] = $data['number']; $label['features'] = $data['features']; $label['enter'] = $time; $label['time'] = $time;//操作时间 if($label['warehouse'] == '5') { $yza = $this->whlabel->find_all("sku = '".$label['sku']."' and warehouse = '".$label['warehouse']."'",'*','id desc'); if($yza) { if($label['features'] != $yza[0]['features']) { echo json_encode(array('msg'=>'此SKU的产品信息和现有不一致!- 1','success'=>false));exit; } } /** $yzb = $this->whlabel->find_all("features = '".$label['features']."' and warehouse = '".$label['warehouse']."'",'*','id desc'); if($yzb) { if($label['sku'] != $yzb[0]['sku']) { echo json_encode(array('msg'=>'此产品信息的SKU和现有不一致! - 2','success'=>false));exit; } } **/ } $this->db->trans_begin(); for($i=0;$i<$data['num'];$i++) { $label['label'] = time().rand(100,999).$i;//产品标签 辨别各个产品,暂不使用 $label['cs'] = $id;//前期增加这个是在途库存添加的数据 $label['rktype'] = 1; $this->whlabel->insert($label); } $this->whlabeltransport->save(array('time'=>$time,'cz'=>1),$data['id']); if ($this->db->trans_status() === TRUE) { $this->db->trans_commit(); echo json_encode(array('msg'=>'入库成功!','id'=>$id,'time'=>date('Y-m-d H:i:s',$time),'success'=>true));exit; } else { $this->db->trans_rollback(); echo json_encode(array('msg'=>'入库失败,请重试!','success'=>false));exit; } } else { echo json_encode(array('msg'=>'错误!已操作入库','success'=>false));exit; } } } //导出模板 public function _presetout() { if(isset($_GET['excel'])) { $where = "sku != 'Preset'"; //数据排序 $order_str = "id desc"; if(empty($page)) { $start = 0; $perpage = 1; } else { $start = ($page - 1)*$perpage; } $warehouse = $this->input->get('warehouse',true); if($warehouse) { $where .= " and warehouse = '".$warehouse."'"; } //取得信息列表 $info_list = $this->whlabel->find_pc($where,'warehouse,sku','*'); $rows = array();$list = array(); foreach ($info_list as $value) { $warehouse = $this->warehouse->read($value['warehouse']); $number = $value['number'];$ftime = time()-15*24*3600; $list[] = array($warehouse['title'],$value['sku'],'0','',''); } $title = "在途模板"; $titlename = "
仓库 SKU 数量 预达日期(格式:2022-01-01) 备注
"; $filename = $title.".xls"; $tail = ""; $this->excel->get_fz2($list,$titlename,$filename,$tail); } } public function _excel() { if(isset($_GET['excel'])) { $warehouse = $this->input->get('warehouse',true); $sku = $this->input->get('sku',true); $cz = $this->input->get('cz',true); $text = $this->input->post('text',true); $xztime = $this->input->get('xztime',true); $timetk = $this->input->get('timetk',true); $timetj = $this->input->get('timetj',true); $timetk = strtotime($timetk); $timetj = strtotime($timetj); $where = "1=1 "; if($warehouse) { $where .= " and warehouse = '$warehouse'"; } if($sku) { $where .= " and sku = '$sku'"; } if($text) { $where .= " and text like '%$text%'"; } if($cz != '') { $where .= " and cz = '$cz'"; } if($timetk && $timetj) { $where .= " and ".$xztime." > '$timetk' and ".$xztime." < '$timetj'"; } //数据排序 $order_str = $xztime." desc"; //取得信息列表 $info_list = $this->whlabeltransport->find_all($where,'warehouse,sku,title,num,enter,stime,time,text'); foreach ($info_list as $key=>$value) { $warehouse = $this->warehouse->read($value['warehouse']); $info_list[$key]['warehouse'] = $warehouse['title']; $info_list[$key]['enter'] = date('Y-m-d H:i:s',$value['enter']); $info_list[$key]['stime'] = date('Y-m-d',$value['stime']); if($value['time'] > 0) { $info_list[$key]['time'] = date('Y-m-d H:i:s',$value['time']); } else { $info_list[$key]['time'] = "

"; } } $title = "在途数据".date('Y-m-d',time()); $titlename = "
仓库 SKU 名称 数量 添加日期 预达日期 完成日期 备注
"; $filename = $title.".xls"; $tail = ""; $this->excel->get_fz2($info_list,$titlename,$filename,$tail); } } public function _excelzh() { if(isset($_GET['excel'])) { $warehouse = $this->input->get('warehouse',true); $sku = $this->input->get('sku',true); $cz = $this->input->get('cz',true); $text = $this->input->post('text',true); $xztime = $this->input->get('xztime',true); $timetk = $this->input->get('timetk',true); $timetj = $this->input->get('timetj',true); $timetk = strtotime($timetk); $timetj = strtotime($timetj); $where = "time = '0' "; if($warehouse) { $where .= " and warehouse = '$warehouse'"; } if($sku) { $where .= " and sku = '$sku'"; } if($text) { $where .= " and text like '%$text%'"; } if($cz != '') { $where .= " and cz = '$cz'"; } if($timetk && $timetj) { $where .= " and ".$xztime." > '$timetk' and ".$xztime." < '$timetj'"; } //数据排序 $order_str = $xztime." desc"; //取得信息列表 $zh = array(); $info_list = $this->whlabeltransport->find_all($where,'warehouse,sku,title,num,features,enter,stime,text'); foreach ($info_list as $v) { $c = $this->whlabel->find_count('state = 0 and warehouse = "'.$v['warehouse'].'" and features = "'.$v['features'].'"'); $warehouse = $this->warehouse->read($v['warehouse']); $v['warehouse'] = $warehouse['title']; $v['enter'] = date('Y-m-d H:i:s',$v['enter']); $v['stime'] = date('Y-m-d',$v['stime']); if(isset($zh[$v['features']])) { $zh[$v['features']]['num'] += $v['num']; } else { $zh[$v['features']] = $v; } $zh[$v['features']]['features'] = $c; } $title = "在途数据".date('Y-m-d',time()); $titlename = "
仓库 SKU 名称 在途数量 库存数量 添加在途日期 预达日期 备注
"; $filename = $title.".xls"; $tail = ""; $this->excel->get_fz2($zh,$titlename,$filename,$tail); } } //批量完成 public function _list() { $post = $this->input->post(NULL, TRUE); if(isset($post['s'])) { $cw = '';$i = 0; $id_arr = $this->input->post('s'); $id_arr = explode(',',$id_arr); if(!$id_arr) { echo json_encode(array('msg'=>'参数错误!','success'=>false));exit; } //循环删除记录 foreach ($id_arr as $v) { $id = $v; $data = $this->whlabeltransport->read($id); if($data['cz'] == '0') { $list = array();$num = "";$title = "";$features = ""; $order = $this->input->post('order',true); $shop = $this->input->post('shop',true); $label['shop'] = $data['shop']; $label['sku'] = $data['sku']; $label['warehouse'] = $data['warehouse']; $label['purchase'] = $data['purchase']; $label['retreatwarehouse'] = $data['retreatwarehouse']; $label['state'] = 0; $time = time(); $label['title'] = $data['title']; $label['number'] = $data['number']; $label['features'] = $data['features']; $label['enter'] = $time; $label['time'] = $time;//操作时间 if($label['warehouse'] == '5') { $yza = $this->whlabel->find_all("sku = '".$label['sku']."' and warehouse = '".$label['warehouse']."'"); if($yza) { if($label['features'] != $yza[0]['features']) { echo json_encode(array('msg'=>'此SKU的产品信息和现有不一致!','success'=>false));exit; } } $yzb = $this->whlabel->find_all("features = '".$label['features']."' and warehouse = '".$label['warehouse']."'"); if($yzb) { if($label['sku'] != $yzb[0]['sku']) { echo json_encode(array('msg'=>'此产品信息的SKU和现有不一致!','success'=>false));exit; } } } $this->db->trans_begin(); for($i=0;$i<$data['num'];$i++) { $label['label'] = time().rand(100,999).$i;//产品标签 辨别各个产品,暂不使用 $label['cs'] = 1;//前期增加这个是在途库存添加的数据 $label['rktype'] = 1; $this->whlabel->insert($label); } $this->whlabeltransport->save(array('time'=>$time,'cz'=>1),$data['id']); if ($this->db->trans_status() === TRUE) { $this->db->trans_commit(); $i++; } else { $this->db->trans_rollback(); $cw .= $data['sku'].' | '; } } } if(count($id_arr) == $i) { echo json_encode(array('msg'=>'入库成功!','success'=>true));exit; } else { echo json_encode(array('msg'=>'有入库失败数据:'.$cw,'success'=>false));exit; } } } //删除 public function _del() { $post = $this->input->post(NULL, TRUE); if(isset($post['s'])) { $id_arr = $this->input->post('s'); $id_arr = explode(',',$id_arr); if(!$id_arr) { echo json_encode(array('msg'=>'参数错误!','success'=>false));exit; } //循环删除记录 foreach ($id_arr as $v) { $data = $this->whlabeltransport->read($v); if($data['cz'] == '0') { $this->whlabeltransport->remove($v); } else { echo json_encode(array('msg'=>'有已完成数据!无法继续删除','success'=>false));exit; } } echo json_encode(array('del'=>$id_arr,'msg'=>'删除记录成功!','success'=>true)); } } }