<?php
/*
可操作内容
$pd = model\pdflib\pdfData

$cateStyle,$cateTitle,$cateRemark,$cateList,$cateArea,$cateVer,
$type,$typeName,$cols,
$id,$code,$key,$name,$title,$remark,$tplCates,$jsonArr,$hasIndex

*/
//减震器
$sql = <<<EOF
SELECT
p_id,
p_cate,
p_comnum outnum,
cate.en_name catename,
m_make.mk_en_name make,
m_series.ms_name series,
m_model.mm_name model,
mm_kw,
mm_year_from,
mm_month_from,
mm_year_to,
mm_month_to,
mm_cc,
CONCAT(mm_year_from,'.',LPAD(mm_month_from,2,'0')) year_from,
IF(mm_year_to=0,0,CONCAT(mm_year_to,'.',LPAD(mm_month_to,2,'0'))) year_to,
mm_body,
mm_engine,
mm_drive,
pml_id,
p_pos1 fr,
p_pos3 lr,
(
    SELECT pv1.ppv_val_string
    FROM pro_param_val pv1
    JOIN part_param p1 ON pv1.ppv_ptpa_id = p1.ptpa_id AND p1.en_name = 'fuel'
    WHERE pv1.ppv_p_id = p_id
    LIMIT 1
) fuel,
(
    SELECT pv2.ppv_val_string
    FROM pro_param_val pv2
    JOIN part_param p2 ON pv2.ppv_ptpa_id = p2.ptpa_id AND p2.en_name = 'image'
    WHERE pv2.ppv_p_id = p_id
    LIMIT 1
) image
%s
FROM pro
JOIN pro_cate cate ON p_cate = cate.id
JOIN pro_model_link ON p_id = pml_p_id
JOIN m_model ON pml_mm_id = mm_id
JOIN m_series ON mm_ms_id = ms_id
JOIN m_make ON mm_mk_id = mk_id
%s
WHERE p_state_main IN ($dataVer) AND p_cate IN ($cateList) AND p_pos1 IN('F','R') %s
%s
%s
EOF;
//WHERE p_state_main IN ($dataVer) AND p_cate IN ($cateList) AND p_pos1 IN('F','R')  AND p_pos3<>'' %s
/** G 品牌*/
if($gspband=='g'){
$sql = <<<EOF
SELECT
p_id,
p_seq seq,
p_cate,
num.pn_number outnum,
cate.en_name catename,
m_make.name make,
m_series.name series,
m_model.name model,
mm_kw,
mm_year_from,
mm_month_from,
mm_year_to,
mm_month_to,
mm_cc,
CONCAT(mm_year_from,'.',LPAD(mm_month_from,2,'0')) year_from,
IF(mm_year_to=0,0,CONCAT(mm_year_to,'.',LPAD(mm_month_to,2,'0'))) year_to,
mm_body,
mm_engine,
mm_drive,
pml_id,
pml_pos1 fr,
pml_pos2 lr,
pml_node1
%s
FROM pro
JOIN pro_numidx num ON num.pn_p_id = p_id AND num.pn_pf_id = $g_brand_id
JOIN pro_cate cate ON p_cate = cate.id
JOIN pro_model_link ON p_id = pml_p_id
JOIN m_model ON pml_mm_id = mm_id
JOIN m_series ON mm_ms_id = ms_id
JOIN m_make ON mm_mk_id = mk_id
LEFT OUTER JOIN `object` drive ON mm_drive = o_id
LEFT OUTER JOIN m_model_source source ON mm_id = mms_mm_id
%s
WHERE p_state_main IN ($dataVer) AND p_cate IN ($cateList) AND pml_pos1 IN('F','R')  AND pml_pos2<>'' %s AND mms_source<>11469
%s
%s
EOF;
}//G 品牌


/***********************************************************/
$fileds = '';
$join = '';
$where = '';
//$group = "GROUP BY make,series,model,mm_body,mm_drive,mm_engine,pml_pos1,pml_pos2";
$order = "ORDER BY make,series,model,year_from
,FIELD(p_cate,".$cateList. ")
,FIELD(fr,'F','R','F/R'),FIELD(lr,'L','R','L/R')
,FIELD(pml_pos3, 'I','C','O')
,pml_pos0,outnum";

//$groupArr = ['make','series','mm_serie','p_chassis','mm_cc','mm_kw','mm_body','mm_drive','mm_engine','year_from','mm_month_from','year_to','mm_month_to'];
$groupArr = ['make','model','mm_cc','mm_kw','mm_body','mm_drive','mm_engine','mm_year_from','mm_month_from','mm_year_to','mm_month_to'];

if(!empty($cateVer)){
	$join  .= " JOIN tags_link tl1 ON p_id=tl1.tl_value_id AND tl1.tl_type='pro'";
	$join  .= " JOIN tags_link tl2 ON pml_id=tl2.tl_value_id AND tl2.tl_type='promodel'";
	if($cateVer=="2") $join .= "JOIN p_code ON pc_p_id = p_id AND (pc_release_vers='' OR CONCAT(',',pc_release_vers,',') like '%,".$newVerName.",%')";
	$where .= sprintf(" AND tl1.tl_t_id > tl1.tl_t_id ^ %d",$cateVer);
	$where .= sprintf(" AND tl2.tl_t_id > tl2.tl_t_id ^ %d",$cateVer);
}
if($cateArea){
	$fileds = ',sal_name alias,pma_catalog_notes remark';
	$join  .= " JOIN pro_model_area_link ON pml_id=pma_pml_id AND pma_ma_id=".$cateArea;
	$join  .= " LEFT OUTER JOIN m_series_area_link ON ms_id=sal_ms_id AND sal_ma_id=".$cateArea;
	$groupArr[] = 'pma_catalog_notes';
	
	$maInfo = (new \model\carmodel())->getAreaInfo($cateArea);
	$arr = [];
	foreach($maInfo['ma_fileds'] as $k=>$v){
		if($k=='mk_name') $arr[] = 'make';
		else if($k=='ms_name') $arr[] = 'series';
		else if($k=='mm_name') $arr[] = 'model';
		else if($k=='year_from');
		else if($k=='year_to');
		else if($k=='pcat_name');
		else if($k=='cat_name');
		else if($k=='pma_catalog_notes');
		else $arr[] = $k;
	}
}else{
	// $fileds = ',pml_node3 remark';
	// $groupArr[] = 'pml_node3';
	// $arr = explode(',',$cateList);
	// $cateOne = $arr[0];
	// $arr=[];
	// $cateFiledArr = (new \model\pro\cate())->getSmallModelFiled($cateOne);
	// foreach($cateFiledArr as $k=>$v){
	// 	if($k=='mk_name') $arr[] = 'make';
	// 	else if($k=='ms_name') $arr[] = 'series';
	// 	else if($k=='mm_name') $arr[] = 'model';
	// 	else if($k=='year_from');
	// 	else if($k=='year_to');
	// 	else if($k=='pcat_name');
	// 	else if($k=='cat_name');
	// 	else if($k=='pma_catalog_notes');
	// 	else $arr[] = $k;
	// }
}

$groupArr[] = 'outnum';
$group = 'GROUP BY '. implode(',',$groupArr);
$order = "ORDER BY make,model,year_from,year_to,mm_cc,mm_kw,mm_body,mm_drive,mm_engine,remark,FIELD(p_cate,".$cateList."),FIELD(fr,'F','R','F/R'),FIELD(lr,'L','L/R','R'),outnum";
$sql = sprintf($sql,$fileds,$join,$where,$group,$order);
/***********************************************************/
//$findRows  = $pd->db->query('SELECT o_id,en_name name FROM `object` WHERE o_parent_id=16')->fetchAll(PDO::FETCH_ASSOC);
//$mm_driveArr = array_column($findRows, null, 'o_id');
//dd($sql);
$items = [];
$itemsSubCounts = [];
$rows  = $pd->db->query($sql)->fetchAll(PDO::FETCH_ASSOC);
foreach($rows as $row){
    foreach($row as $rk=>$rv){
        if(is_string($rv)){
            $rv = trim($rv);
            if($rv!=='' && !mb_check_encoding($rv,'UTF-8')){
                $rv = mb_convert_encoding($rv,'UTF-8','UTF-8,GBK,GB2312,BIG5');
            }
        }
        $row[$rk] = $rv;
    }
	$minYear = $row['year_from'];
	$maxYear = !empty($row['year_to']) ? $row['year_to']: '';
	$minYear = str_replace('.00','',$minYear);
	$maxYear = str_replace('.00','',$maxYear);
	if($minYear=='0') $minYear = '';
	if($maxYear=='0') $maxYear = '';
	$year =sprintf("%s-%s",$minYear,$maxYear);
	if($year=='-') $year = '';
	$fr = $row['fr'];
	$lr = trim((string)$row['lr']);
	if($lr==='') $lr = 'L/R';
	//$lr = ($row['lr']=='L/R') ? '' : $row['lr'];
	$oilgas = $row['fuel'] == 'OIL' ? 'OIL' : 'GAS';
	if($gspband=='g'){
	    $oilgas = (substr($row['outnum'],2,1)=='1') ? 'OIL' : 'GAS';
	}
	
	$row['mm_kw'] = $row['mm_kw'] ? '('.$row['mm_kw'].' kw)' : '';
	//$row['mm_drive'] = ($row['mm_drive'] && isset($mm_driveArr[$row['mm_drive']])) ? $mm_driveArr[$row['mm_drive']]['name'] : '';
	
	$remark1 = '';
    $remark1 .= $row['mm_cc'] ? $row['mm_cc'].' ' : '';
    $remark1 .= $row['mm_kw'] ? $row['mm_kw'].' ' : '';
    $remark1 .= $row['mm_body'] ? $row['mm_body'].' ' : '';
    $remark1 .= $row['drive'] ? $row['drive'].' ' : '';
    $remark1 .= $row['mm_engine'] ? $row['mm_engine'].' ' : '';
    $remark1 .=  $row['remark'] ? $row['remark'].' ' : '';
    /*
    if($row['remark']){
        $remark1 .= ($remark1) ?  "\r\n" : '';
        $remark1 .= $row['remark'];
    }*/
	// $params = $pd->getProParamValue($row['p_cate'],$row['p_id'],$code,[
	//     'image'
	// ]);
	$params['image'] = $row['image'];
	$png = '';
	if($params['image']){
	    $png = \mvc::$cfg['dir']['static'].'/images/pdf/shock_absorber/' . strtolower(formatNum($params['image'])).'.png';
	    if(!file_exists($png)){
	        $png = '';
	    }
	}
	$key = md5($row['make'].$row['series'].$row['model'].$row['mm_cc'].$row['mm_kw'].$row['mm_body'].$row['drive'].$row['mm_engine'].$year.$row['remark']);
	if(!isset($itemsSubCounts[$key])){
	    $itemsSubCounts[$key] = [
	        'F'=>[
	            'L'=>   ['OIL'=>1,'GAS'=>1],
	            'L/R'=> ['OIL'=>1,'GAS'=>1],
	            'R'=>   ['OIL'=>1,'GAS'=>1]
	        ],
			'R' => [
				'L' =>   ['OIL' => 1, 'GAS' => 1],
				'L/R' => ['OIL' => 1, 'GAS' => 1],
				'R' =>   ['OIL' => 1, 'GAS' => 1]
			],
			'L' => [
				'L' =>   ['OIL' => 1, 'GAS' => 1],
				'L/R' => ['OIL' => 1, 'GAS' => 1],
				'R' =>   ['OIL' => 1, 'GAS' => 1]
			]
		];
	}
	//落盘控制
	$type = sprintf("%s.%s.%s",$fr,$lr,$oilgas);
	switch($type){
	    case 'F.L.OIL':
            $uid = $key .'_'. $itemsSubCounts[$key]['F']['L']['OIL'];   
            $itemsSubCounts[$key]['F']['L']['OIL']++;
        break;
	    case 'F.L/R.OIL':
	        if($itemsSubCounts[$key]['F']['L/R']['OIL']==1) 
	            $itemsSubCounts[$key]['F']['L/R']['OIL'] = $itemsSubCounts[$key]['F']['L']['OIL'];
            $uid = $key .'_'. $itemsSubCounts[$key]['F']['L/R']['OIL'];   
            $itemsSubCounts[$key]['F']['L/R']['OIL']++;
        break;
	    case 'F.R.OIL':
            $uid = $key .'_'. $itemsSubCounts[$key]['F']['R']['OIL'];   
            $itemsSubCounts[$key]['F']['R']['OIL']++;
        break;
	    case 'F.L.GAS':
            $uid = $key .'_'. $itemsSubCounts[$key]['F']['L']['GAS'];   
            $itemsSubCounts[$key]['F']['L']['GAS']++;
        break;
	    case 'F.L/R.GAS':
	        if($itemsSubCounts[$key]['F']['L/R']['GAS']==1) 
	            $itemsSubCounts[$key]['F']['L/R']['GAS'] = $itemsSubCounts[$key]['F']['L']['GAS'];
            $uid = $key .'_'. $itemsSubCounts[$key]['F']['L/R']['GAS'];   
            $itemsSubCounts[$key]['F']['L/R']['GAS']++;
        break;
	    case 'F.R.GAS':
            $uid = $key .'_'. $itemsSubCounts[$key]['F']['R']['GAS'];   
            $itemsSubCounts[$key]['F']['R']['GAS']++;
        break;
        
	    case 'R.L.OIL':
            $uid = $key .'_'. $itemsSubCounts[$key]['R']['L']['OIL'];   
            $itemsSubCounts[$key]['R']['L']['OIL']++;
        break;
	    case 'R.L/R.OIL':
	        if($itemsSubCounts[$key]['R']['L/R']['OIL']==1) 
	            $itemsSubCounts[$key]['R']['L/R']['OIL'] = $itemsSubCounts[$key]['R']['L']['OIL'];
            $uid = $key .'_'. $itemsSubCounts[$key]['R']['L/R']['OIL'];   
            $itemsSubCounts[$key]['R']['L/R']['OIL']++;
        break;
	    case 'R.R.OIL':
            $uid = $key .'_'. $itemsSubCounts[$key]['R']['R']['OIL'];   
            $itemsSubCounts[$key]['R']['R']['OIL']++;
        break;
	    case 'R.L.GAS':
            $uid = $key .'_'. $itemsSubCounts[$key]['R']['L']['GAS'];   
            $itemsSubCounts[$key]['R']['L']['GAS']++;
        break;
	    case 'R.L/R.GAS':
	        if($itemsSubCounts[$key]['R']['L/R']['GAS']==1) 
	            $itemsSubCounts[$key]['R']['L/R']['GAS'] = $itemsSubCounts[$key]['R']['L']['GAS'];
            $uid = $key .'_'. $itemsSubCounts[$key]['R']['L/R']['GAS'];   
            $itemsSubCounts[$key]['R']['L/R']['GAS']++;
        break;
		case 'R.R.GAS':
			$uid = $key . '_' . $itemsSubCounts[$key]['R']['R']['GAS'];
			$itemsSubCounts[$key]['R']['R']['GAS']++;
			break;
		case 'U.C.GAS':
			$uid = $key . '_' . $itemsSubCounts[$key]['U']['C']['GAS'];
			$itemsSubCounts[$key]['U']['C']['GAS']++;
			break;
		case 'C.C.GAS':
			$uid = $key . '_' . $itemsSubCounts[$key]['U']['C']['GAS'];
			$itemsSubCounts[$key]['U']['C']['GAS']++;
			break;

			//Upper、Centre、Lower，Inner、Centre、Outer
		default:
			$uid = $key .'_'. md5($type.$row['outnum'].$row['pml_id']);
			break;
	}
	if(!isset($items[$uid])){
	    /*2022/8/30 还是之前的排版逻辑：modelrange&serie&modelcode，我们现在的逻辑是只取值Model
		$model1 = '';
	    $model1 .= $row['series'] ? $row['series'].' ' : '';
	    $model1 .= $row['mm_serie'] ? $row['mm_serie'].' ' : '';
	    $model1 .= $row['p_chassis'] ? '('.$row['p_chassis'].') ' : '';*/
		$model1 = $row['model'];
		$items[$uid] = [
			'make'=> $row['make'],
			'model1'=> $model1,
			'model2'=> $year,
			'remark'=> $remark1,
			'value'=> [
			    ['col1'=> '','col2'=> '','col3'=> '','col4'=> '','col5'=> '','col6'=> '','col7'=> '','col8'=> ''],
			    ['col1'=> '','col2'=> '','col3'=> '','col4'=> '','col5'=> '','col6'=> '','col7'=> '','col8'=> '']
			]
		];
	}
	if($fr=='F'){
	    $col2 = '';
	    $col3 = '';
	    if($oilgas=='OIL'){
    	    $col2 = $row['outnum'];
	    }else{
    	    $col3 = $row['outnum'];
	    }
	    $vi = 0;
	    if($lr=='R'){
	        $vi = 1;
	    }
        $items[$uid]['value'][$vi]['col1'] = ($lr=='L/R') ? '' : $lr;
        if($col2!='') $items[$uid]['value'][$vi]['col2'] = $col2;
        if($col3!='') $items[$uid]['value'][$vi]['col3'] = $col3;
        $items[$uid]['value'][$vi]['col4'] = $png;
	}else if($fr=='R'){
	    $col6 = '';
	    $col7 = '';
	    if($oilgas=='OIL'){
    	    $col6 = $row['outnum'];
		} else {
			$col7 = $row['outnum'];
		}
	    $vi = 0;
	    if($lr=='R'){
	        $vi = 1;
	    }
        $items[$uid]['value'][$vi]['col5'] = ($lr=='L/R') ? '' : $lr;
        if($col6!='') $items[$uid]['value'][$vi]['col6'] = $col6;
        if($col7!='') $items[$uid]['value'][$vi]['col7'] = $col7;
        $items[$uid]['value'][$vi]['col8'] = $png;
	}
	//if ($row['outnum'] == '35000018') {
		//dd($type, $fr, $lr, $oilgas, $items[$uid]);
	//}
	if(!in_array($row['outnum'], $numbers)) $numbers[] = $row['outnum'];
}
$items = array_column($items,null);
//dd($items);
$data = [
	'style' => 'modelGuideByShockAbsorber',
	'title' => $title,
	'remark' => $remark,
	'compute' => $hasIndex, // 是否需要计算页码
	'type' => 'model',
	'value' => $items
];
//dd($data);
return !empty($items) ? $data : [];
