<?php
namespace model\import;
use \model;
use \model\check;
use \model\pbrand;
use model\pro\pro;

/**
 * 
 */
class proRule  extends model
{
	 /**
     * 标题 (用于消息提醒)
     */
	public $title = '编码规则'; //固定
	public $import = null;    //固定
	public $rules = null;    //规则
	public $demoData = null;  //样例数据
	public $demoremark = null;  //样例说明
	public $params = null; 
	public $type = null;
	
	public function __construct()
	{
		parent::__construct(); //执行父类
		$this->import = new \lib\import();

		$this->rules = [];
		$pro = new pro();
		$this->type = \mvc::$req['prl_type'];
		if(empty($this->type) && !empty(\mvc::$req['params'])){
			$params =json_decode(\mvc::$req['params'],true);
			$this->type =$params['prl_type'];
		}
        if ($this->type == 'cate') {
            $this->rules[] = ['key' => 'prl_val_id', 'caption' => lg('名称'), 'must' => true];
            $allBrand = $pro->getProBrand(['pb_id'=>1]);
            foreach ($allBrand as $k => $v) {
                $this->rules[] = ['key' => 'pb_name_' . $v['pb_id'], 'caption' => $v['pb_name']];
            }
        }
        elseif ($this->type == 'brand') 
        {
            $this->rules[] = ['key' => 'prl_val_id', 'caption' => lg('名称'), 'must' => true];
            $allBrand = $pro->getProBrand(['pb_id'=>1]);
            foreach ($allBrand as $k => $v) {
                $this->rules[] = ['key' => 'pb_name_' . $v['pb_id'], 'caption' => $v['pb_name']];
                // $this->rules[] = ['key' => 'pb_bname_' . $v['pb_id'], 'caption' => $v['pb_name'] . '半成品编码'];
            }
        }
		
		$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);
		$opuser = getOpuser();
		$datetime = getNowTime();
	
		//数据重复验证
		if($state && !empty($this->import->data)){

			foreach ($this->import->data as $k=>&$mv) {
                
                if($this->type == 'cate'){
                    $prl_val_id = $this->db->get('pro_cate','id',['OR'=>[
                        'cn_name'=>$mv['prl_val_id'],
                        'en_name'=>$mv['prl_val_id'],
                        'py_name'=>$mv['prl_val_id'],
    
                    ]]);
                    if(!$prl_val_id){
                        $state = false;
                        $dv['excelInfo']['error'] = '不存在此分类【'.$mv['prl_val_id'].'】';
                        $this->import->lineNum = $dv['excelInfo']['line'];
                        $this->import->lastError = $dv['excelInfo']['error'];
                        continue;
                    }
                    $mv['prl_val_id'] = $prl_val_id;
                }
                if($this->type == 'brand'){
                    $prl_val_id = $this->db->get('tag_brand','tb_id',['OR'=>[
                        'tb_cn_name'=>$mv['prl_val_id'],
                        'tb_en_name'=>$mv['prl_val_id'],
                        'tb_py_name'=>$mv['prl_val_id'],
    
                    ]]);
                    if(!$prl_val_id){
                        $state = false;
                        $dv['excelInfo']['error'] = '不存在此汽车品牌【'.$mv['prl_val_id'].'】';
                        $this->import->lineNum = $dv['excelInfo']['line'];
                        $this->import->lastError = $dv['excelInfo']['error'];
                        continue;
                    }
                    $mv['prl_val_id'] = $prl_val_id;
                }
			}
			unset($mv);
		}

		
		//入库
		if($state && !empty($this->import->data)){
			$this->db->Begin();
			foreach($this->import->data as $k=>$mv){
                foreach ($mv as $key => $val) {
                    if(strpos($key, 'pb_name_') !== false){
                        $pb_id = str_replace('pb_name_', '', $key);
                        $exists = $this->db->get('pro_rule_link', 'prl_id', ['prl_pb_id'=>$pb_id, 'prl_type'=>$this->type, 'prl_val_id'=>$mv['prl_val_id']]);
                        if(!empty($exists)){
                            $this->db->update('pro_rule_link', ['prl_code_a'=>$val,'prl_code_b'=>$mv['pb_bname_'.$pb_id]??''], ['prl_id'=>$exists]);
                        }else{
                            // if(!$val) continue;
                            $this->db->insert('pro_rule_link', [
                                'prl_pb_id'=>$pb_id,
                                'prl_type'=>$this->type,
                                'prl_val_id'=>$mv['prl_val_id'],
                                'prl_code_a'=>$val,
                                'prl_code_b'=>$mv['pb_bname_'.$pb_id]??'',
                                'prl_opuser'=>$opuser,	
                                'prl_create_time'=>$datetime,	
                                'prl_update_time'=>$datetime,
                            ]);
                        }
                    }
                }
			}
			$this->db->End();
		}
        return $this->import->output(); //生成处理结果
	}
}