db = new MdbLib();
$this->common = new CommonLib();
$this->skey = '2019';
}
//show
public function getOrders(){
if(!isset($_GET['now']) || !isset($_GET['shop']) || !isset($_GET['status']) || !isset($_GET['startDate']) || !isset($_GET['endDate'])){
return false;
}else{
$now = $this->common->my_filter_input($_GET['now']);
$shop = $this->common->my_filter_input($_GET['shop']);
$status = $this->common->my_filter_input($_GET['status']);
$startDate = $_GET['startDate'] . ' 00:00:00';
$endDate = $_GET['endDate'].' 23:59:59';
$key = $this->common->my_filter_input($_GET['key']);
$pnsn = isset($_GET['pnsn'])?$this->common->my_filter_input($_GET['pnsn']):15;
}
$shop_type = '';
switch($shop){
case 1:
$shop_type = 'AAASSS';
break;
case 2:
$shop_type = 'Alipearl';
break;
case 3:
$shop_type = 'QQ';
break;
case 4:
$shop_type = 'SuperNova';
break;
case 5:
$shop_type = 'West-Kiss';
break;
case 6:
$shop_type = 'Yolissa';
break;
default:
$shop_type = '';
}
$offset = ($now-1)*$pnsn;
$sql = 'SELECT `oid`,`order_sn`,`order_barcode`,`order_status`,`goods_no`,`goods_info`,`create_time`,`out_time`,`gir` ';
$sql .= 'FROM `orders` ';
$sql .= "WHERE `create_time` BETWEEN '{$startDate}' AND '{$endDate}' ";
if($shop != 0){
$sql .= " AND `order_barcode` LIKE '{$shop_type}%' ";
}
if($status != 0){
$sql .= " AND `order_status`='{$status}' ";
}
//$sql .= "ORDER BY `create_time` DESC, `oid` DESC LIMIT {$offset},$pnsn;";
$sql .= "ORDER BY `oid` DESC LIMIT {$offset},$pnsn;";
$query = $this->db->querySql($sql);
$line = "";
while($item = $this->db->queryRs($query)) {
if($item['order_status'] == '2'){
$order_status = "已出库";
$out_time = $item['out_time'];
$class = 'ok';
}elseif($item['order_status'] == '1'){
$order_status = "未出库";
$out_time = '暂无';
$class = 'no';
}elseif($item['order_status'] == '3'){
$order_status = "已取消";
$out_time = '暂无';
$class = 'cancel';
}
if($item['gir'] == 1){
$repeat = 'repeat';
}else{
$repeat = '';
}
$line .= '
';
$line .= "{$item['oid']}";
$line .= "{$item['order_barcode']}";
$line .= "{$item['order_sn']}";
$line .= "{$item['goods_no']}";
$line .= "{$item['goods_info']}";
$line .= "{$item['create_time']}";
$line .= "{$order_status}";
$line .= "{$out_time}";
if(!empty($key) && $key==$this->skey){
if($item['order_status'] == '1'){
$line .= "";
}else{
$line .= "暂无";
}
}
$line .= '
';
}
return $line;
}
public function searchOrders(){
if(!isset($_GET['key'])){
return false;
}else{
$key = $this->common->my_filter_input($_GET['key']);
}
$sql = 'SELECT `oid`,`order_sn`,`order_barcode`,`order_status`,`goods_no`,`goods_info`,`create_time`,`out_time`,`gir` ';
$sql .= 'FROM `orders` ';
if(isset($_GET['barcode'])){
$barcode = $this->common->my_filter_input($_GET['barcode']);
$sql .= "WHERE `order_barcode`='{$barcode}' LIMIT 1;";
}elseif(isset($_GET['sn'])){
$sn = $this->common->my_filter_input($_GET['sn']);
$sql .= "WHERE `order_sn`='{$sn}' LIMIT 1;";
}elseif(isset($_GET['gn'])){
$gn = $this->common->my_filter_input($_GET['gn']);
$sql .= "WHERE `goods_no`='{$gn}';";
}
$query = $this->db->querySql($sql);
$line = "";
while($item = $this->db->queryRs($query)) {
if($item['order_status'] == '2'){
$order_status = "已出库";
$out_time = $item['out_time'];
$class = 'ok';
}elseif($item['order_status'] == '1'){
$order_status = "未出库";
$out_time = '暂无';
$class = 'no';
}elseif($item['order_status'] == '3'){
$order_status = "已取消";
$out_time = '暂无';
$class = 'cancel';
}
if($item['gir'] == 1){
$repeat = 'repeat';
}else{
$repeat = '';
}
$line .= '';
$line .= "{$item['oid']}";
$line .= "{$item['order_barcode']}";
$line .= "{$item['order_sn']}";
$line .= "{$item['goods_no']}";
$line .= "{$item['goods_info']}";
$line .= "{$item['create_time']}";
$line .= "{$order_status}";
$line .= "{$out_time}";
if(!empty($key) && $key==$this->skey){
if($item['order_status'] == '1'){
$line .= "";
}else{
$line .= "暂无";
}
}
$line .= '
';
}
if(!empty($line)){
return $line;
}else{
return -1;
}
}
public function uploadExcel(){
$tmp = pathinfo($_FILES['excel']['name']);
if(($tmp['extension'] == 'xlsx') && ($_FILES['excel']['size'] < 5000000)){
if($_FILES['excel']['error'] > 0){
echo "error on upload file";
return -2;
}else{
$newName = 'sc_'.date('YmdHis').'.'.$tmp['extension'];
$newPath = "../public/upload/SCANNER/{$newName}";
if(!move_uploaded_file($_FILES['excel']['tmp_name'], $newPath)){
return -3;
}else{
if($this->readExcel($newPath) < 1){
return -4;
}else{
return 1;
}
}
}
} else {
return -1;
}
}
public function readExcel($file){
$PHPExcel = new \PHPExcel();
$PHPReader = new \PHPExcel_Reader_Excel2007();
if(!$PHPReader->canRead($file)){
return -1;
}
$PHPExcel = $PHPReader->load($file);
$currentSheet = $PHPExcel->getsheet(0);
$allColumn = $currentSheet->getHighestColumn();
$allRow = $currentSheet->getHighestRow();
$lastColumn = 'E';
$startRow = 2;
$startColumn = 'A';
$endColumn = 'E';
if($allColumn != $lastColumn){
return -2;
}
$insertValues = '';
for($currentRow = $startRow; $currentRow <= $allRow; $currentRow++){
$cellStr = "";
for($currentColumn = $startColumn; $currentColumn <= $endColumn; $currentColumn++){
$cellValue = $currentSheet->getCellByColumnAndRow(ord($currentColumn)-65, $currentRow)->getValue();
$cellValue = $this->common->my_filter_input($cellValue);
if(empty($cellValue)){
break;
}else{
$cellValue = trim($cellValue, chr(194).chr(160));
$cellStr .= '"' . trim($cellValue, '"') . '",';
}
}
if(!empty($cellStr)){
$cellStr .= '"' . date('Y-m-d H:i:s', time()) . '"';
$insertValues .= "({$cellStr}),";
}
}
$insertValues = trim($insertValues, ',');
$sql = "INSERT INTO `orders`(`create_time`,`order_sn`,`order_barcode`,`goods_no`,`goods_info`,`out_time`) VALUES {$insertValues};";
$this->db->querySql("SET AUTOCOMMIT=0");
$this->db->begin();
if(!($this->db->querySql($sql))){
$this->db->querySql("ROLLBACK");
return -3;
}else{
$sql_gir = "UPDATE `orders` SET `gir`=1 WHERE `goods_no` IN (";
$sql_gir .= "SELECT * FROM (SELECT `goods_no` FROM `orders` GROUP BY `goods_no` HAVING COUNT(`goods_no`)>1) AS `tmp`) AND `gir`!=1;";
if($this->db->querySql($sql_gir)){
$this->db->commit();
return 1;
}else{
$this->db->querySql("ROLLBACK");
return -4;
}
}
}
public function updateOrder(){
if(isset($_GET['order_sn']) && !empty($_GET['order_sn']) && isset($_GET['status']) && !empty($_GET['status'])){
$order_sn = $this->common->my_filter_input($_GET['order_sn']);
$order_status = $this->common->my_filter_input($_GET['status']);
} else {
return false;
}
$sql_status = "SELECT `order_status`,`out_time` FROM `orders` WHERE `order_sn`='{$order_sn}';";
$query = $this->db->querySql($sql_status);
$arr_status = $this->db->queryRsAll($query);
if(empty($arr_status)){
return json_encode(array(
'no' => '-10'
));
}
$now = date("Y-m-d H:i:s", time());
$sql = "UPDATE `orders` SET `order_status`='{$order_status}',`out_time`='{$now}' WHERE `order_sn`='{$order_sn}';";
if($arr_status[0]['order_status'] == 1 && $order_status == 2){
$this->db->querySql($sql);
if($this->db->queryAR() == 1){
return json_encode(array(
'no' => '1'
));
}else{
return json_encode(array(
'no' => '-1'
));
}
}elseif($arr_status[0]['order_status'] == 1 && $order_status == 3){
$this->db->querySql($sql);
if($this->db->queryAR() == 1){
return json_encode(array(
'no' => '2'
));
}else{
return json_encode(array(
'no' => '-2'
));
}
}elseif($arr_status[0]['order_status'] == 2 && $order_status == 2){
return json_encode(array(
'no' => '-3',
'out_time' => $arr_status[0]['out_time'],
));
}elseif($arr_status[0]['order_status'] == 2 && $order_status == 3){
return json_encode(array(
'no' => '-4',
'out_time' => $arr_status[0]['out_time'],
));
}elseif($arr_status[0]['order_status'] == 3 && $order_status == 2){
return json_encode(array(
'no' => '-5',
'out_time' => $arr_status[0]['out_time'],
));
}elseif($arr_status[0]['order_status'] == 3 && $order_status == 3){
return json_encode(array(
'no' => '-6',
'out_time' => $arr_status[0]['out_time'],
));
}else{
return json_encode(array(
'no' => '-7'
));
}
}
public function getStatistics(){
if(!isset($_GET['startDate']) || !isset($_GET['endDate'])){
return false;
} else {
$startDate = $_GET['startDate'] . ' 00:00:00';
$endDate = $_GET['endDate'].' 23:59:59';
}
$yesterday_start = date("Y-m-d", strtotime('-1 day')) . ' 00:00:00';
$yesterday_end = date("Y-m-d", strtotime('-1 day')) . ' 23:59:59';
$sql_yesterday = "SELECT COUNT(`oid`) AS `total_yesterday_out` FROM `orders`";
$sql_yesterday .= " WHERE `out_time` BETWEEN '{$yesterday_start}' AND '{$yesterday_end}' AND `order_status`='2';";
$sql_total = "SELECT COUNT(`oid`) AS `total_num` FROM `orders` ";
$sql_total .= "WHERE `create_time` BETWEEN '{$startDate}' AND '{$endDate}';";
$sql_out = "SELECT COUNT(`oid`) AS `total_out` FROM `orders` ";
$sql_out .= "WHERE `create_time` BETWEEN '{$startDate}' AND '{$endDate}' AND `order_status`='2';";
$sql_cancel = "SELECT COUNT(`oid`) AS `total_out` FROM `orders` ";
$sql_cancel .= "WHERE `create_time` BETWEEN '{$startDate}' AND '{$endDate}' AND `order_status`='3';";
$query_yesterday = $this->db->querySql($sql_yesterday);
$rs_yesterday = $this->db->queryRs($query_yesterday);
$query_total = $this->db->querySql($sql_total);
$rs_total = $this->db->queryRs($query_total);
$query_out = $this->db->querySql($sql_out);
$rs_out = $this->db->queryRs($query_out);
$query_cancel = $this->db->querySql($sql_cancel);
$rs_cancel = $this->db->queryRs($query_cancel);
$rs = array();
$rs['yesterday'] = $rs_yesterday[0];
$rs['total'] = $rs_total[0];
$rs['out'] = $rs_out[0];
$rs['cancel'] = $rs_cancel[0];
$rs['in'] = $rs['total'] - $rs['out'] - $rs['cancel'];
return json_encode($rs);
}
public function exportExcel(){
set_time_limit(120);
$PHPExcel = new \PHPExcel();
if(!isset($_GET['shop']) || !isset($_GET['status']) || !isset($_GET['startDate']) || !isset($_GET['endDate'])){
return false;
}else{
$shop = $this->common->my_filter_input($_GET['shop']);
$status = $this->common->my_filter_input($_GET['status']);
$startDate = $_GET['startDate'] . ' 00:00:00';
$endDate = $_GET['endDate'].' 23:59:59';
}
$shop_type = '';
switch($shop){
case 1:
$shop_type = 'AAASSS';
break;
case 2:
$shop_type = 'Alipearl';
break;
case 3:
$shop_type = 'QQ';
break;
case 4:
$shop_type = 'SuperNova';
break;
case 5:
$shop_type = 'West-Kiss';
break;
case 6:
$shop_type = 'Yolissa';
break;
default:
$shop_type = '';
}
$sql = 'SELECT `oid`,`order_sn`,`order_barcode`,`order_status`,`goods_no`,`goods_info`,`create_time`,`out_time` ';
$sql .= 'FROM `orders` ';
$sql .= "WHERE `out_time` BETWEEN '{$startDate}' AND '{$endDate}' ";
if($shop != 0){
$sql .= " AND `order_barcode` LIKE '{$shop_type}%' ";
}
if($status != 0){
$sql .= " AND `order_status`='{$status}' ";
}
$query = $this->db->querySql($sql);
$line = "";
$PHPExcel->setActiveSheetIndex(0)
->setCellValue('A1', '运单编号')
->setCellValue('B1', '条码编号')
->setCellValue('C1', '状态')
->setCellValue('D1', '订单编号')
->setCellValue('E1', '货物明细')
->setCellValue('F1', '创建日期')
->setCellValue('G1', '出库日期');
$k = 2;
while($item = $this->db->queryRs($query)) {
if($item['order_status'] == '2'){
$order_status = "已出库";
$out_time = $item['out_time'];
}elseif($item['order_status'] == '1'){
$order_status = "未出库";
$out_time = '暂无';
}elseif($item['order_status'] == '3'){
$order_status = "已取消";
$out_time = '暂无';
}
$PHPExcel->setActiveSheetIndex(0)
->setCellValue('A'.$k, $item['order_sn'])
->setCellValue('B'.$k, $item['order_barcode'])
->setCellValue('C'.$k, $order_status)
->setCellValue('D'.$k, $item['goods_no'])
->setCellValue('E'.$k, $item['goods_info'])
->setCellValue('F'.$k, $item['create_time'])
->setCellValue('G'.$k, $out_time);
$k++;
}
// set wdith
$PHPExcel->getActiveSheet()->getColumnDimension('A')->setWidth(15);
$PHPExcel->getActiveSheet()->getColumnDimension('B')->setWidth(25);
$PHPExcel->getActiveSheet()->getColumnDimension('C')->setWidth(10);
$PHPExcel->getActiveSheet()->getColumnDimension('D')->setWidth(25);
$PHPExcel->getActiveSheet()->getColumnDimension('E')->setWidth(40);
$PHPExcel->getActiveSheet()->getColumnDimension('F')->setWidth(20);
$PHPExcel->getActiveSheet()->getColumnDimension('G')->setWidth(20);
$filename = 'waybill.'.date('His',time()).'.xls';
$PHPExcel->getActiveSheet()->setTitle('waybill');
$PHPExcel->setActiveSheetIndex(0);
//header("Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet; charset=utf-8");
header("Content-Type: application/ms-excel; charset=utf-8");
header("Content-Disposition: attachment; filename={$filename}");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Cache-Control: private",false);
//$PHPWriter = new PHPExcel_Writer_Excel2007($PHPExcel, 'Excel2007');
$PHPWriter = new PHPExcel_Writer_Excel5($PHPExcel, 'Excel5');
$PHPWriter->save('php://output');
}
public function pagination(){
if(!isset($_GET['shop']) || !isset($_GET['status']) || !isset($_GET['startDate']) || !isset($_GET['endDate']) || !isset($_GET['wh'])){
return false;
}else {
$shop = $this->common->my_filter_input($_GET['shop']);
$status = $this->common->my_filter_input($_GET['status']);
$startDate = $_GET['startDate'] . ' 00:00:00';
$endDate = $_GET['endDate'].' 23:59:59';
$wh = $this->common->my_filter_input($_GET['wh']);
$pnsn = isset($_GET['pnsn'])?$this->common->my_filter_input($_GET['pnsn']):15;
}
$shop_type = '';
switch($shop){
case 1:
$shop_type = 'AAASSS';
break;
case 2:
$shop_type = 'Alipearl';
break;
case 3:
$shop_type = 'QQ';
break;
case 4:
$shop_type = 'SuperNova';
break;
case 5:
$shop_type = 'West-Kiss';
break;
case 6:
$shop_type = 'Yolissa';
break;
default:
$shop_type = '';
}
$sql = "SELECT `oid` FROM `orders` ";
$sql .= "WHERE `create_time` BETWEEN '{$startDate}' AND '{$endDate}'";
if($shop != 0){
$sql .= " AND `order_barcode` LIKE '{$shop_type}%'";
}
if($status != 0){
$sql .= " AND `order_status`='{$status}'";
}
$sql .= ';';
$query = $this->db->querySql($sql);
$total = $this->db->queryNum($query);
if($total == 0){
$num = '0';
}else{
$num = ceil($total/$pnsn);
$wh_max = ceil($num/10);
}
$direction = substr($wh, 0, 1);
$wh = substr($wh, 1);
if($direction == 'h'){
$whh = ($wh==0)?'0':$wh-1;
$wht = ($wh==0)?'1':$wh;
}elseif($direction == 't'){
$whh = ($wh==$wh_max)?($wh-1):$wh;
$wht = ($wh==$wh_max)?$wh:($wh+1);
}else{
$whh = '0';
$wht = '1';
}
$pagination = '共 '.$num.' 页';
if($num > 1){
$pagination .= ($num>10)?"<<":'';
$clazz = '';
for($i=1+$whh*10; $i<=10+$whh*10; $i++){
if($i > $num){
break;
}else{
if($i != 1+$whh*10){
$clazz = 'page';
}else{
$clazz = 'page pn';
}
$param = $i . '_' . $shop .'_' . $status . '_' . substr($startDate, 0, 10) . '_' . substr($endDate, 0, 10);
$pagination .= "".$i."";
}
}
$pagination .= ($num>10)?">>":'';
}
$pagination .= "展示 记录";
return $pagination;
}
public function __destruct(){
//TODO
}
}