diff --git a/common/libraries/receiver/Orders_v2_entity.php b/common/libraries/receiver/Orders_v2_entity.php index 056ca640..059e88a6 100644 --- a/common/libraries/receiver/Orders_v2_entity.php +++ b/common/libraries/receiver/Orders_v2_entity.php @@ -1080,11 +1080,12 @@ class Orders_v2_entity{ }*/ $arr1 = array_merge($arr1, array('doc_ding'=>$title_ding)); foreach ($series_names as $k => $v){ - foreach ($v as $k1 => $v1){ - $arr1[$k.'_'.$v1.'_ding'] = $k.'_'.$v1; - } - $arr1[$k.'_ding'] = $k; $indexs_total[] = $k.'_ding'; + $arr1[$k.'_ding'] = $k; # 品牌在系列前 + foreach ($v as $k1 => $v1){ + #$arr1[$k.'_'.$v1.'_ding'] = $k.'_'.$v1; + $arr1[$k.'_'.$v1.'_ding'] = ' '.$v1; # 系列简写 + } } $arr3 = array('doc_piao_today'=>$title_piao_today); /*foreach ($brand_names as $k => $v){ @@ -1095,11 +1096,12 @@ class Orders_v2_entity{ }*/ $arr3 = array_merge($arr3, array('doc_piao'=>$title_piao)); foreach ($series_names as $k => $v){ - foreach ($v as $k1 => $v1){ - $arr3[$k.'_'.$v1.'_piao'] = $k.'_'.$v1; - } - $arr3[$k.'_piao'] = $k; $indexs_total[] = $k.'_piao'; + $arr3[$k.'_piao'] = $k; # 品牌在系列前 + foreach ($v as $k1 => $v1){ + #$arr3[$k.'_'.$v1.'_piao'] = $k.'_'.$v1; + $arr3[$k.'_'.$v1.'_piao'] = ' '.$v1; # 系列简写 + } } $indexs = array_merge($arr1, $arr3); #var_dump($indexs); @@ -1154,29 +1156,29 @@ class Orders_v2_entity{ $doc_piao_ += $v1['doc_piao'] ? $v1['doc_piao'] : 0; if ($biz_type <> $v1['biz_type']){ - $biz_type_ary = $this->ci->biz_model->type_ary(); - $biz_type_name = $biz_type_ary[$biz_type] ? '('.$biz_type_ary[$biz_type].')' : ''; - $arr1 = array('biz_type'=>$biz_type, 'biz_id'=>'', 'biz_name'=>$biz_type_name.'小计', 'doc_ding_today'=>$doc_ding_today ? $doc_ding_today : '', 'doc_ding'=>$doc_ding ? $doc_ding : ''); + #$biz_type_ary = $this->ci->biz_model->type_ary(); + #$biz_type_name = $biz_type_ary[$biz_type] ? '('.$biz_type_ary[$biz_type].')' : ''; # 'biz_name'=>$biz_type_name.'小计' + $arr1 = array('biz_type'=>$biz_type, 'biz_id'=>'', 'biz_name'=>'小计', 'doc_ding_today'=>$doc_ding_today ? $doc_ding_today : '', 'doc_ding'=>$doc_ding ? $doc_ding : ''); foreach ($brand_names as $k2 => $v2){ + # 生成车型列 + $key_ding_xj = $biz_type.'_'.$v2.'_doc_ding'; + $arr1[$v2.'_ding'] = $kv[$key_ding_xj] ? $kv[$key_ding_xj] : ''; + # 生成车系列 foreach ($series_names[$v2] as $ks => $vs){ $key_ding_series_xj = $biz_type.'_'.$v2.'_'.$vs.'_doc_ding'; $arr1[$v2.'_'.$vs.'_ding'] = $kv[$key_ding_series_xj] ? $kv[$key_ding_series_xj] : ''; } - - # 生成车型列 - $key_ding_xj = $biz_type.'_'.$v2.'_doc_ding'; - $arr1[$v2.'_ding'] = $kv[$key_ding_xj] ? $kv[$key_ding_xj] : ''; } $arr3 = array('doc_piao_today'=>$doc_piao_today ? $doc_piao_today : '', 'doc_piao'=>$doc_piao ? $doc_piao : ''); foreach ($brand_names as $k2 => $v2){ + $key_piao_xj = $biz_type.'_'.$v2.'_doc_piao'; + $arr3[$v2.'_piao'] = $kv[$key_piao_xj] ? $kv[$key_piao_xj] : ''; + foreach ($series_names[$v2] as $ks => $vs){ $key_piao_series_xj = $biz_type.'_'.$v2.'_'.$vs.'_doc_piao'; $arr3[$v2.'_'.$vs.'_piao'] = $kv[$key_piao_series_xj] ? $kv[$key_piao_series_xj] : ''; } - - $key_piao_xj = $biz_type.'_'.$v2.'_doc_piao'; - $arr3[$v2.'_piao'] = $kv[$key_piao_xj] ? $kv[$key_piao_xj] : ''; } $biz_aggs[] = array_merge($arr1, $arr3); @@ -1191,72 +1193,72 @@ class Orders_v2_entity{ $arr1 = array('biz_type'=>$biz_type, 'biz_id'=>$biz_id, 'biz_name'=>$biz_name, 'doc_ding_today'=>$v1['doc_ding_today'] ? $v1['doc_ding_today'] : '', 'doc_ding'=>$v1['doc_ding'] ? $v1['doc_ding'] : ''); foreach ($brand_names as $k2 => $v2){ + $key_ding = $v1['biz_type'].'_'.$v1['biz_id'].'_'.$v2.'_doc_ding'; + $arr1[$v2.'_ding'] = $kv[$key_ding] ? $kv[$key_ding] : ''; + foreach ($series_names[$v2] as $ks => $vs){ $key_ding_series = $v1['biz_type'].'_'.$v1['biz_id'].'_'.$v2.'_'.$vs.'_doc_ding'; $arr1[$v2.'_'.$vs.'_ding'] = $kv[$key_ding_series] ? $kv[$key_ding_series] : ''; } - - $key_ding = $v1['biz_type'].'_'.$v1['biz_id'].'_'.$v2.'_doc_ding'; - $arr1[$v2.'_ding'] = $kv[$key_ding] ? $kv[$key_ding] : ''; } $arr3 = array('doc_piao_today'=>$v1['doc_piao_today'] ? $v1['doc_piao_today'] : '', 'doc_piao'=>$v1['doc_piao'] ? $v1['doc_piao'] : ''); foreach ($brand_names as $k2 => $v2){ + $key_piao = $v1['biz_type'].'_'.$v1['biz_id'].'_'.$v2.'_doc_piao'; + $arr3[$v2.'_piao'] = $kv[$key_piao] ? $kv[$key_piao] : ''; + foreach ($series_names[$v2] as $ks => $vs){ $key_piao_series = $v1['biz_type'].'_'.$v1['biz_id'].'_'.$v2.'_'.$vs.'_doc_piao'; $arr3[$v2.'_'.$vs.'_piao'] = $kv[$key_piao_series] ? $kv[$key_piao_series] : ''; } - - $key_piao = $v1['biz_type'].'_'.$v1['biz_id'].'_'.$v2.'_doc_piao'; - $arr3[$v2.'_piao'] = $kv[$key_piao] ? $kv[$key_piao] : ''; } $biz_aggs[] = array_merge($arr1, $arr3); } # 最后一个小计 - $biz_type_ary = $this->ci->biz_model->type_ary(); - $biz_type_name = $biz_type_ary[$biz_type] ? '('.$biz_type_ary[$biz_type].')' : ''; - $arr1 = array('biz_type'=>$biz_type, 'biz_id'=>'', 'biz_name'=>$biz_type_name.'小计', 'doc_ding_today'=>$doc_ding_today ? $doc_ding_today : '', 'doc_ding'=>$doc_ding ? $doc_ding : ''); + #$biz_type_ary = $this->ci->biz_model->type_ary(); + #$biz_type_name = $biz_type_ary[$biz_type] ? '('.$biz_type_ary[$biz_type].')' : ''; # 'biz_name'=>$biz_type_name.'小计' + $arr1 = array('biz_type'=>$biz_type, 'biz_id'=>'', 'biz_name'=>'小计', 'doc_ding_today'=>$doc_ding_today ? $doc_ding_today : '', 'doc_ding'=>$doc_ding ? $doc_ding : ''); foreach ($brand_names as $k2 => $v2){ + $key_ding_xj = $biz_type.'_'.$v2.'_doc_ding'; + $arr1[$v2.'_ding'] = $kv[$key_ding_xj] ? $kv[$key_ding_xj] : ''; + foreach ($series_names[$v2] as $ks => $vs){ $key_ding_series_xj = $biz_type.'_'.$v2.'_'.$vs.'_doc_ding'; $arr1[$v2.'_'.$vs.'_ding'] = $kv[$key_ding_series_xj] ? $kv[$key_ding_series_xj] : ''; } - - $key_ding_xj = $biz_type.'_'.$v2.'_doc_ding'; - $arr1[$v2.'_ding'] = $kv[$key_ding_xj] ? $kv[$key_ding_xj] : ''; } $arr3 = array('doc_piao_today'=>$doc_piao_today ? $doc_piao_today : '', 'doc_piao'=>$doc_piao ? $doc_piao : ''); foreach ($brand_names as $k2 => $v2){ + $key_piao_xj = $biz_type.'_'.$v2.'_doc_piao'; + $arr3[$v2.'_piao'] = $kv[$key_piao_xj] ? $kv[$key_piao_xj] : ''; + foreach ($series_names[$v2] as $ks => $vs){ $key_piao_series_xj = $biz_type.'_'.$v2.'_'.$vs.'_doc_piao'; $arr3[$v2.'_'.$vs.'_piao'] = $kv[$key_piao_series_xj] ? $kv[$key_piao_series_xj] : ''; } - - $key_piao_xj = $biz_type.'_'.$v2.'_doc_piao'; - $arr3[$v2.'_piao'] = $kv[$key_piao_xj] ? $kv[$key_piao_xj] : ''; } $biz_aggs[] = array_merge($arr1, $arr3); # 合计 $arr1 = array('biz_type'=>'', 'biz_id'=>'', 'biz_name'=>'合计', 'doc_ding_today'=>$doc_ding_today_ ? $doc_ding_today_ : '', 'doc_ding'=>$doc_ding_ ? $doc_ding_ : ''); foreach ($brand_names as $k2 => $v2){ + $key_ding_hj = $v2.'_doc_ding'; + $arr1[$v2.'_ding'] = $kv[$key_ding_hj] ? $kv[$key_ding_hj] : ''; + foreach ($series_names[$v2] as $ks => $vs){ $key_ding_series_hj = $v2.'_'.$vs.'_doc_ding'; $arr1[$v2.'_'.$vs.'_ding'] = $kv[$key_ding_series_hj] ? $kv[$key_ding_series_hj] : ''; } - - $key_ding_hj = $v2.'_doc_ding'; - $arr1[$v2.'_ding'] = $kv[$key_ding_hj] ? $kv[$key_ding_hj] : ''; } $arr3 = array('doc_piao_today'=>$doc_piao_today_ ? $doc_piao_today_ : '', 'doc_piao'=>$doc_piao_ ? $doc_piao_ : ''); foreach ($brand_names as $k2 => $v2){ + $key_piao_hj = $v2.'_doc_piao'; + $arr3[$v2.'_piao'] = $kv[$key_piao_hj] ? $kv[$key_piao_hj] : ''; + foreach ($series_names[$v2] as $ks => $vs){ $key_ding_series_hj = $v2.'_'.$vs.'_doc_piao'; $arr3[$v2.'_'.$vs.'_piao'] = $kv[$key_ding_series_hj] ? $kv[$key_ding_series_hj] : ''; } - - $key_piao_hj = $v2.'_doc_piao'; - $arr3[$v2.'_piao'] = $kv[$key_piao_hj] ? $kv[$key_piao_hj] : ''; } $biz_aggs[] = array_merge($arr1, $arr3);#var_dump($indexs);var_dump($biz_aggs); @@ -1289,12 +1291,13 @@ class Orders_v2_entity{ foreach ($index_img as $k => $v){ #$k != 'biz_name' && $index_img[$k] = mb_strlen ($v) > 8 ? mb_substr($v, -8, 8) : $v; if ($k != 'biz_name'){ - if (strpos($k,'_') !== false){ + /*if (strpos($k,'_') !== false){ $index_img[$k] = mb_strlen ($v) > 8 ? mb_substr($v, 0, 2).'..'.mb_substr(array_slice(explode('_', $v), -1)[0], -5, 5) : str_replace('_', ' ', $v); } else{ $index_img[$k] = mb_strlen ($v) > 5 ? mb_substr($v, 0, 5) : $v; - } + }*/ + $index_img[$k] = $v; # 讲话车系后直接显示全部 } if (strpos($k,'_ding') !== false){ $index_img_ding[$k] = $index_img[$k]; @@ -1307,10 +1310,18 @@ class Orders_v2_entity{ $index_img_piao[$k] = $index_img[$k]; } } + + # 去掉空列与空行 + $this->clear_null_column_line($biz_aggs, $indexs); + $this->clear_null_column_line($data, $index_img); + $this->clear_null_column_line($data_ding, $index_img_ding); + $this->clear_null_column_line($data_piao, $index_img_piao); + #var_dump($data_piao);var_dump('
');var_dump($index_img_piao);var_dump('
');var_dump($indexs_total); + #var_dump($biz_aggs[0]);var_dump($data[0]);var_dump($index_img);var_dump($data_ding[0]);var_dump($index_img_ding);var_dump($data_piao[0]);var_dump($index_img_piao);; $img_path = $this->create_table_image($data, $index_img, $indexs_total, '小狸播报', 'aggs_biz_rpt.png'); - $img_path_ding = $this->create_table_image($data_ding, $index_img_ding, $indexs_total, '小狸播报-订单', 'aggs_biz_rpt_ding.png'); - $img_path_piao = $this->create_table_image($data_piao, $index_img_piao, $indexs_total, '小狸播报-开票', 'aggs_biz_rpt_piao.png'); + $img_path_ding = $this->create_table_image($data_ding, $index_img_ding, $indexs_total, '小狸播报 - 订单', 'aggs_biz_rpt_ding.png'); + $img_path_piao = $this->create_table_image($data_piao, $index_img_piao, $indexs_total, '小狸播报 - 开票', 'aggs_biz_rpt_piao.png'); } return array('biz_aggs'=>$biz_aggs, 'indexs'=>$indexs, 'img_path'=>$img_path, 'img_path_ding'=>$img_path_ding, 'img_path_piao'=>$img_path_piao); } @@ -1464,6 +1475,49 @@ class Orders_v2_entity{ return array('biz_aggs'=>$biz_aggs, 'indexs'=>$indexs, 'img_path'=>$img_path); } + private function clear_null_column_line(&$data, &$indexs, $index_ignore_column=array('biz_type', 'biz_id', 'biz_name', 'doc_ding_today', 'doc_ding', 'doc_piao_today', 'doc_piao'), + $index_ignore_line=array('biz_type', 'biz_id', 'biz_name')){ + # $biz_aggs去掉除列(biz_type, biz_id, biz_name, doc_ding_today, doc_ding, doc_piao_today, doc_piao)外为空的空列 + $indexs 去掉列名 + $columns = array(); + foreach ($data as $k => $v){ + foreach ($v as $kd => $vd){ + if (in_array($kd, $index_ignore_column)){ + continue; + } + if ($columns[$kd]){ + continue; + } + !$columns[$kd] && $columns[$kd] = $vd ? 1 : 0; + } + } + #var_dump($data[0]);var_dump('
');var_dump($indexs);var_dump('
');var_dump($columns); + foreach ($columns as $k => $v){ + if ($v){ + continue; + } + foreach ($data as $kd => $vd){ + unset($data[$kd][$k]); + } + unset($indexs[$k]); + } + # $biz_aggs去掉除列(biz_type, biz_id, biz_name)外为空的空行 + foreach ($data as $k => $v){ + $null_flag = true; + foreach ($v as $kd => $kv){ + if (in_array($kd, $index_ignore_line)){ + continue; + } + if ($kv){ + $null_flag = false; + break; + } + } + if ($null_flag){ + unset($data[$k]); + } + } + } + private function create_table_image($data=array(), $indexs=array(), $indexs_total=array(), $title='', $file_name='aggs_biz_rpt.png'){ # https://blog.csdn.net/mao__ge/article/details/107414956 if (!$data){ @@ -1558,7 +1612,7 @@ class Orders_v2_entity{ //画表格纵线 及 写入表头文字 foreach ($base['column_x_arr'] as $key => $x) { imageline($img, $x, $border_top, $x, $border_bottom, $border_coler);//画纵线 - $x = $x - $base['column_text_offset_arr'][$key] + 1; + $x = $x - $base['column_text_offset_arr'][$key] + 1; $y = $border_top + $base['row_hight'] - 8; $text = $base['table_header'][$key]; #imagettftext($img, $base['text_size'], 0, $x,$y , $text_coler, $base['font_ulr'],$text );//写入表头文字 @@ -1566,15 +1620,18 @@ class Orders_v2_entity{ if (in_array($text.'_ding', $indexs_total) || in_array($text.'_piao', $indexs_total) || $text == $indexs['doc_ding'] || $text == $indexs['doc_piao']){ $color = $blue_coler; } - imagettftext($img, $base['text_size'], 0, $x,$y , $color, $base['font_ulr'],$text );//写入表头文字 + $offset_ext = in_array($text, array('序号')) || mb_strlen($text) > 4 ? 0 : 10 * (5 - mb_strlen($text)); + imagettftext($img, $base['text_size'], 0, $x + $offset_ext, $y, $color, $base['font_ulr'], $text );//写入表头文字 } //画表格横线 + $text = 0; foreach ($params['data'] as $key => $item) { $border_top += $base['row_hight']; imageline($img, $base['border'], $border_top, $base['img_width'] - $base['border'], $border_top, $border_coler); - $x = $base['column_x_arr'][0] - $base['row_text_offset_arr'][0]; + $x = $base['column_x_arr'][0] - $base['row_text_offset_arr'][0]; $y = $border_top + $base['row_hight'] - 10; - $text = $key + 1; + #$text = $key + 1; + $text ++; # 防止$key跳空 imagettftext($img, $base['text_size'], 0, $x, $y, $text_coler, $base['font_ulr'], $text);//写入序号 $sub = 0; /*foreach ($item as $value) {