<?php 
namespace model\import;
use \model;

/**
 * 
 */
class pdmApplications extends model
{
	 /**
     * 标题 (用于消息提醒)
     */
	public $title = '车型导入'; //固定
	public $import = null;    //固定
	public $rules = null;    //规则
	public $demoData = null;  //样例数据
	public $demoremark = null;  //样例说明
	public $dataBrand = 'DRJN';
    public $dataSource = '';
	public function __construct()
	{
		parent::__construct(); //执行父类
		$this->import = new \lib\import();
		$this->rules = [
            ['key'=>'app_id',            'caption'=>lg('App ID')],
            ['key'=>'brand', 'caption'=>lg('Brand')],
			['key'=>'part_number',            'caption'=>lg('型号')],
            ['key'=>'part_type','caption'=>lg('北美小类')],
            ['key'=>'make','caption'=>lg('Make')],
            ['key'=>'model','caption'=>lg('Model')],
            ['key'=>'sub_model','caption'=>lg('Submodel')],
            ['key'=>'year_from','caption'=>lg('Year from')],
            ['key'=>'year_to','caption'=>lg('Year to')],
            ['key'=>'drive','caption'=>lg('Drive')],
            ['key'=>'position','caption'=>lg('适用国家')],
            ['key'=>'region','caption'=>lg('适用国家')],
            ['key'=>'body_type','caption'=>lg('Body')],
            ['key'=>'engine_aspiration','caption'=>lg('Aspiration')],
            ['key'=>'engine_base_block_type','caption'=>lg('Block')],
            ['key'=>'engine_base_cylinder','caption'=>lg('Cylinder')],
            ['key'=>'engine_base_liter','caption'=>lg('Liters')],
            ['key'=>'engine_designation','caption'=>lg('Engine Code')],
            ['key'=>'engine_fuel_type','caption'=>lg('Fuel')],
            ['key'=>'transmission_base_control_type','caption'=>lg('Transmission')],
            ['key'=>'transmission_mfr_code','caption'=>lg('Transmission Code')],
            ['key'=>'notes','caption'=>lg('Remark')],
		];

		$this->demoData = [
			
		];

		$this->demoremark = '';
		//source
		$this->dataSource = urldecode(\mvc::$req['source']);
		if (empty($this->dataSource) && !empty(\mvc::$req['params'])) {
			$params = json_decode(\mvc::$req['params'], true);
			$this->dataSource = urldecode($params['source']);
		}
		if($this->dataSource=='mxg'){
			$this->dataBrand = 'JVFW';
		}

	}
	
	 /**处理导入
     * @param array|string $src 数组或者文件名
     * @param isInit 是否是初始化
     * @return 可返回任意值(string|array|bool)，都会到前端
     */
    public function import($src,$isInit=false) //固定
    {
		$state = $this->import->execute($src, $this->rules);
		//数据重复验证 - 自己

		if($state && !empty($this->import->data))
		{
			$state = !$this->import->checkRepeat([
			    ['part_number','part_type','make','model','sub_model','year_from','year_to',
                'drive','position','region','body_type','engine_aspiration','engine_base_block_type',
                'engine_base_cylinder','engine_base_liter','engine_designation','engine_fuel_type','transmission_base_control_type',
                'transmission_mfr_code','notes'
                ]
		    ]);
		}
        if($state && !empty($this->import->data))
		{
			
			foreach($this->import->data as &$dv)
			{
                $checkArr = $dv;
                if(empty($dv['brand'])) $dv['brand'] = $this->dataBrand;
                $checkArr = array_filter($checkArr);
              
                // $itemLinkArr = [
                //     'ppi_brand'=>$this->dataBrand,'ppi_pdm_gspna'=>$checkArr['part_number'],'ppi_pdc_gsp'=>$checkArr['ppi_pdc_gsp']
                // ];
                // $exist =  $this->db->get('pdm_pdc_itemlink',['ppi_pdm_gspna','ppi_pdc_gsp'],$itemLinkArr);
                // if(empty($exist))
				// {
				// 	$state = false;
				// 	$dv['excelInfo']['error'] = 'GSP型号关联不存在,请先导入';
				// 	$this->import->lineNum = $dv['excelInfo']['line'];
				// 	$this->import->lastError = $dv['excelInfo']['error'];
				// 	continue;
				// }
                unset($checkArr['excelInfo']);
               
				$exist = $this->db->get('copy_smt_api_pdm_applications',['app_id'],$checkArr);
				if(!empty($exist))
				{
					$state = false;
					$dv['excelInfo']['error'] = '记录已存在';
					$this->import->lineNum = $dv['excelInfo']['line'];
					$this->import->lastError = $dv['excelInfo']['error'];
					continue;
				}
			}
		}
		//入库
		if($state && !empty($this->import->data))
		{
			$this->db->Begin();
			foreach($this->import->data as $k=>$mv)
			{   
                if($k > 0 && $k%1000 === 0) errorLog(__CLASS__.$this->title.':'.$k, 'import');
                // $itemLinkArr = [
                //     'ppi_brand'=>$this->dataBrand,'ppi_pdm_gspna'=>$mv['part_number'],'ppi_pdc_gsp'=>$mv['ppi_pdc_gsp']
                // ];
                unset($mv['excelInfo']);
                $this->db->insert('copy_smt_api_pdm_applications', $mv);

			}
			$this->db->End();
		}
        return $this->import->output(); //生成处理结果
	}
}