<?php
/*
 [
    'key'=>'rule1',                             //键名
    'caption'=>'编码规则',                      //字段名
    'must'=> true,                              //是否必须,默认false
    'mustCols'=> ['ruleA','ruleB']              //当此列存在时，必须有的其他列 ，默认空
    'minlen'=>0,                                //最小长度 默认0不判断
    'maxlen'=>50,                               //最大长度 默认0不判断
    'type'=>'number',                           //类型 number,string 默认 string
    //自定义检测
    'checkfunction'=>function($arr, $k, $v, $obj){
        $obj->lastError = '[line:'.$obj->lineNum.'] ['.$obj->rules[$k]['caption'].'] 自定义检测, 当前值为[ '.$v.' ]';
        return false;
    }
     //格式化单元格的值 [
        类, 
        类的创建参数, 默认[]
        方法, 
        参数,  ['@innum','@outnum',123,true] @表示使用导入数据中的列中的值 ,'@'表示自己 
        如果结果是数组指定返回哪个键 默认null
     ]
    'formatCell'=> [\model\collocation::class,'getRowByKey',['@'],null],   或者 config/import.php 中的配置
],
 */
 
namespace model\import;
use \model;

/**
 * 
 */
class promodelTempZyk  extends model
{
	 /**
     * 标题 (用于消息提醒)
     */
	public $title = '待进入车型库'; //固定
	public $import = null;    //固定
	public $rules = null;    //规则
	public $demoData = null;  //样例数据
	public $demoremark = null;  //样例说明
	public $areaArr = null;  
	public $carmodel = null;  
	public $promodel = null;  
	public $tag = null;  
	
	
	public function __construct()
	{
		parent::__construct(); //执行父类
		$req = \mvc::$req;
		$this->tag = $req['tag'];
		$this->import = new \lib\import();
		$this->carmodel = new \model\carmodel();
		$this->promodel = new \model\pro\promodel();
		$this->areaArr = $this->carmodel->getArea();
		$modelFiledVals = $this->carmodel->modelFiledVals;
		$this->rules = [
		     ['key'=>'id', 'caption'=>lg('ID'),'must'=>true],
		     ['key'=>'a', 'caption'=>lg('状态'),'must'=>false],
		     ['key'=>'kn_type', 'caption'=>lg('KTYPE'),'must'=>true],
			 ['key'=>'pmlt_pos0','caption'=>$modelFiledVals['pos0']['name']],
			 ['key'=>'pmlt_pos1','caption'=>$modelFiledVals['pos1']['name']],
			 ['key'=>'pmlt_pos6','caption'=>$modelFiledVals['pos6']['name']],
			 ['key'=>'pmlt_pos2','caption'=>$modelFiledVals['pos2']['name']],
			 ['key'=>'pmlt_pos3','caption'=>$modelFiledVals['pos3']['name']],
			 ['key'=>'pmlt_pos4','caption'=>$modelFiledVals['pos4']['name']],
			 ['key'=>'pmlt_pos5','caption'=>lg('综合')],
			 ['key'=>'gsp_no','caption'=>lg('GSP型号'),'must'=>true],
			 ['key'=>'pmlt_node1','caption'=>lg('其他车型备注')],
			 ['key'=>'pmlt_quote_pf_id', 'caption'=>lg('引用品牌'),'must'=>true,'formatCell'=>'pf_id'],
		     ['key'=>'pmlt_quote_number','caption'=>lg('引用号码'),'must'=>true]
		];

		if($this->tag == 'difm')
		{
			$this->rules = [
				 ['key'=>'id', 'caption'=>lg('ID'),'must'=>true],
				 ['key'=>'ktype', 'caption'=>lg('KTYPE'),'must'=>true],
				 ['key'=>'tecdoc02', 'caption'=>lg('Tecdoc02')],
				 ['key'=>'tecdoc03', 'caption'=>lg('Tecdoc03')],
				 ['key'=>'tecdoc04', 'caption'=>lg('Tecdoc04')],
				 ['key'=>'pmlt_pos0','caption'=>$modelFiledVals['pos0']['name']],
				 ['key'=>'pmlt_pos1','caption'=>$modelFiledVals['pos1']['name']],
				 ['key'=>'pmlt_pos6','caption'=>$modelFiledVals['pos6']['name']],
				 ['key'=>'pmlt_pos2','caption'=>$modelFiledVals['pos2']['name']],
				 ['key'=>'pmlt_pos3','caption'=>$modelFiledVals['pos3']['name']],
				 ['key'=>'pmlt_pos4','caption'=>$modelFiledVals['pos4']['name']],
				 ['key'=>'pmlt_pos5','caption'=>lg('综合')],
				 ['key'=>'pmlt_node1','caption'=>lg('其他车型备注')],
				 ['key'=>'oe_reference','caption'=>lg('OE Reference'),'must'=>true],
				 ['key'=>'gspno_oe', 'caption'=>lg('GSP NO.--OE')],
				 ['key'=>'gspno_ktype', 'caption'=>lg('GSP NO.--KTYPE')],
			];
		}
	}
	
	 /**处理导入
     * @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))
		{
			$modelFiledVals = $this->carmodel->modelFiledVals;
			foreach($this->import->data as $k=>&$dv)
			{
				foreach($modelFiledVals as $fk=>$fv)
				{
					if(isset($dv['pmlt_'.$fk]))
					{
						$vals = explode('/', $dv['pmlt_'.$fk]);
						foreach($vals as $tvv)
						{
							if(!empty($tvv) && !in_array($tvv, $fv['gd']))
							{
								$state = false;
								$dv['excelInfo']['error'] = '['.$tvv.']不存在';
								$this->import->lineNum = $dv['excelInfo']['line'];
								$this->import->lastError = $dv['excelInfo']['error'];
								break;
							}
						}
					}
					if(!$state) break;
				}
			}
		}

		//入库
		if($state && !empty($this->import->data))
		{
			$this->db->Begin();
			$zykmodel = new \model\zyk\carmodel();
			foreach($this->import->data as $k=>&$dv)
			{
				$res = $zykmodel->addProModelTempByAny($this->tag, [$dv]);
				if(!empty($res['msg']))
				{
					$state = false;
					$dv['excelInfo']['error'] = $res['msg'];
					$this->import->lineNum = $dv['excelInfo']['line'];
					$this->import->lastError = $dv['excelInfo']['error'];
					break;
				}
			}
			$this->db->End();
		}
        return $this->import->output(); //生成处理结果
	}
}