<?php
/*
可操作内容
$pd = model\pdflib\pdfData

$cateStyle,$cateTitle,$cateRemark,$cateList,$cateArea,$cateVer,
$type,$typeName,$cols,
$id,$code,$key,$name,$title,$remark,$tplCates,$jsonArr,$hasIndex

*/
//ABS传感器
$sql = <<<EOF
SELECT
p_id,
p_seq seq,
p_cate,
p_outnum outnum,
cate.en_name catename,
m_make.name make,
m_series.name series,
m_model.name model,
mm_serie,
mm_chassis,
mm_kw,
mm_year_from,
mm_month_from,
mm_year_to,
mm_month_to,
mm_disp,
MIN(CONCAT(mm_year_from,'.',LPAD(mm_month_from,2,'0'))) year_from,
IF(MIN(mm_year_to)=0,0,MAX(CONCAT(mm_year_to,'.',LPAD(mm_month_to,2,'0')))) year_to,
mm_body,
mm_engine,
mm_drive_type,
drive.en_name drive,
pml_pos0 transm,
pml_pos1 frAxle,
pml_pos2 lr,
pml_pos3 ico,
pml_pos4 ucl,
pml_pos6 fr
%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
LEFT OUTER JOIN `object` drive ON mm_drive_type = 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) %s AND mms_source<>11469
%s
%s
EOF;

/** 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_serie,
mm_chassis,
mm_kw,
mm_year_from,
mm_month_from,
mm_year_to,
mm_month_to,
mm_disp,
MIN(CONCAT(mm_year_from,'.',LPAD(mm_month_from,2,'0'))) year_from,
IF(MIN(mm_year_to)=0,0,MAX(CONCAT(mm_year_to,'.',LPAD(mm_month_to,2,'0')))) year_to,
mm_body,
mm_engine,
mm_drive_type,
drive.en_name drive,
pml_pos0 transm,
pml_pos1 frAxle,
pml_pos2 lr,
pml_pos3 ico,
pml_pos4 ucl,
pml_pos6 fr
%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_type = 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) %s AND mms_source<>11469
%s
%s
EOF;
}//G 品牌


/***********************************************************/
$fileds = '';
$join = '';
$where = '';
//$group = "GROUP BY make,series,mm_serie,mm_chassis,mm_disp,mm_kw,mm_body,mm_drive_type,mm_engine,mm_year_from,mm_month_from,mm_year_to,mm_month_to,pml_pos0,pml_pos1,pml_pos2,pml_pos3,pml_pos4,pml_pos5";
$group = "GROUP BY make,model,mm_disp,mm_kw,mm_body,mm_drive_type,mm_engine,mm_year_from,mm_month_from,mm_year_to,mm_month_to,pml_pos0,pml_pos1,pml_pos2,pml_pos3,pml_pos4,pml_pos5";
//$order = "ORDER BY make,series,mm_serie,mm_chassis,mm_disp,mm_kw,year_from,year_to,FIELD(p_cate,".$cateList."),FIELD(fr,'F','R','F/R',''),FIELD(lr,'L','R','L/R',''),pml_pos0,outnum";
$order = "ORDER BY make,model,mm_disp,CONVERT(mm_kw,SIGNED),year_from,year_to,FIELD(p_cate,".$cateList."),FIELD(fr,'F','R','F/R',''),FIELD(lr,'L','R','L/R',''),pml_pos0,outnum";

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;
	$group .= ',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';
	$group .= ',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;
	}
}
$group .= ',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_drive_typeArr = array_column($findRows, null, 'o_id');

$items = [];
$rows  = $pd->db->query($sql)->fetchAll(PDO::FETCH_ASSOC);
foreach($rows as $row){
	//$uid = md5($row['make'].$row['series'].$row['mm_serie'].$row['mm_chassis'].$row['mm_disp'].$row['mm_kw']);
	$uid = md5($row['make'].$row['model'].$row['mm_disp'].$row['mm_kw']);
	$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 = '';
	//$row['mm_drive_type'] = ($row['mm_drive_type'] && isset($mm_drive_typeArr[$row['mm_drive_type']])) ? $mm_drive_typeArr[$row['mm_drive_type']]['name'] : '';
	
	//DRIVE TYPE & ENGINE
	$driveEngine = '';
	if($row['mm_body'] !='') $driveEngine = $row['mm_body'];
	if($row['drive'] !='') $driveEngine .= ' '.$row['drive'];
	if($row['mm_engine'] !='') $driveEngine .= ' '.$row['mm_engine'];

	if(!isset($items[$uid])){
	    $model1 = '';
	    $model1 .= $row['model'];
	    /*
	    $model1 .= $row['series'] ? $row['series'].' ' : '';
	    $model1 .= $row['mm_serie'] ? $row['mm_serie'].' ' : '';
	    $model1 .= $row['mm_chassis'] ? '('.$row['mm_chassis'].') ' : '';
	    */
	    $model2 = trim($row['mm_disp'].$row['mm_kw']!='') ? sprintf("%s (%s kw)",$row['mm_disp'],$row['mm_kw']) : '';
		$items[$uid] = [
			'make'=> $row['make'],
			'model1'=> $model1,
			'model2'=> $model2,
			'value'=> []
		];
	}
	
	//$params = $pd->getProParamValue($row['p_cate'],$row['p_id'],$code,['ABS']);
	$params = $pd->getProParamValue($row['p_cate'],$row['p_id'],$code,[
	    'USE TYPE','LENGTH'
	]);
	
	$useType = $params['USE TYPE'];
	switch($useType){
		case '主动式':
			$useType = 'Active Type';
			break;
		case '被动式':
			$useType = 'Passive Type';
			break;
		case '智能式':
			$useType = 'Hall Type';
			break;
	}
	array_push($items[$uid]['value'],[
		'col1'=> $year,
		'col2'=> sprintf("%s",$this->getFittingPositionWithFr($row['frAxle'],$row['fr'],$row['lr'],$row['ucl'],$row['ico'])),
		'col3'=> sprintf("%s",$driveEngine),
		'col4'=> sprintf("%s",!empty($row['remark']) ? $row['remark']: ''),
		'col5'=> sprintf("%s",$useType),
		'col6'=> sprintf("%s",$row['outnum']),
		'col7'=> sprintf("%s",$this->formartDecimal1($params['LENGTH'])),
	]);
	if(!in_array($row['outnum'], $numbers)) $numbers[] = $row['outnum'];
}
$items = array_column($items,null);

$data = [
	'style' => 'modelGuideBySensor',
	'title' => $title,
	'remark' => $remark,
	'compute' => $hasIndex, // 是否需要计算页码
	'type' => 'model',
	'value' => $items
];
return !empty($items) ? $data : [];