<?php
namespace model\import;
use \model;
use \model\check;

/**
 * 
 */
class proSourceLink  extends model
{
	public $title = '国标码'; //固定
	public $import = null;    //固定
	public $rules = null;    //规则
	public $demoData = null;  //样例数据
	public $demoremark = null;  //样例说明

	public $pid = null;
	
	public function __construct()
	{
		parent::__construct(); //执行父类
		$this->import = new \lib\import();
		$this->rules = [
            ['key'=>'psl_code','caption'=>lg('国标码')],
            ['key'=>'psl_from_id','caption'=>lg('来源ID')],
            ['key'=>'psl_from','caption'=>lg('来源')],
		];
		$temp =['key'=>'psl_p_id','caption'=>lg('物料编码'),'must'=>true,'formatCell'=>[\model\pro\pro::class,[],'getPidByNumber',['@'],null]];

		$this->pid = \mvc::$req['p_id'];
		if(empty($this->pid) && !empty(\mvc::$req['params'])){
			$params =json_decode(\mvc::$req['params'],true);
			$this->pid =$params['p_id'];
		}
		if(!$this->pid){
			array_unshift($this->rules,$temp);
		}

		$this->demoData = [
		];

		$this->demoremark = '';
	}
	
	 /**处理导入
     * @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([
			  ['psl_p_id','psl_code','psl_from','psl_from_id']
		    ]);
		}
		
		//数据重复验证
		if($state && !empty($this->import->data))
		{
			$check = new check();
			
			foreach($this->import->data as &$dv)
			{       
				if($this->pid && !$dv['psl_p_id']){
					$dv['psl_p_id'] = $this->pid;	
				}
				$exist = $this->db->get('pro_source_link','psl_id',['psl_p_id'=>$dv['psl_p_id'],'psl_code'=>$dv['psl_code'],'psl_from'=>$dv['psl_from'],'psl_from_id'=>$dv['psl_from_id']]);
				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))
		{
            $opuser = getOpuser();
			$datetime = getNowTime();

			$this->db->Begin();
			foreach($this->import->data as $k=>$mv)
			{
				if($k > 0 && $k%1000 === 0) errorLog(__CLASS__.$this->title.':'.$k, 'import');
				$add = [
                    'psl_opuser'=>$opuser,
					'psl_create_time'=>$datetime,
					'psl_update_time'=>$datetime
                ];
				foreach($mv as $mtk=>$mtv)
				{
					if(stripos($mtk, 'psl_') === 0) 
					{
						$add[$mtk] = $mtv;
					}
				}
				
				$this->db->insert('pro_source_link', $add);
			}
			$this->db->End();
		}
        return $this->import->output(); //生成处理结果
	}
}