<?php
namespace model\import;
use \model;
use \model\tags;
use \model\check;

/**
 * 
 */
class workAskItem  extends model
{
	 /**
     * 标题 (用于消息提醒)
     */
	public $title = '询源单明细'; //固定
	public $import = null;    //固定
	public $rules = null;    //规则
	public $rulesUpdate = null;    //更新规则
	public $rulesDelete = null;    //删除规则
	
	public function __construct()
	{
		parent::__construct(); //执行父类
		$this->import = new \lib\import();

		$this->rulesUpdate = [
            ['key'=>'wai_id',           'caption'=>lg('ID'),'must'=>true],
            ['key'=>'wai_oe',           'caption'=>lg('OE'),'must'=>true,'update'=>true],   
            ['key'=>'wai_cate_id',            'caption'=>lg('小类'),'formatCell'=>'cate','update'=>true],
            ['key'=>'wai_sup_id',           'caption'=>lg('供应商编码'),'update'=>true],
            ['key'=>'wai_brand',         'caption'=>lg('产品品牌'),'update'=>true],
            ['key'=>'wai_material',           'caption'=>lg('属性'),'update'=>true],
            ['key'=>'wai_price',           'caption'=>lg('含税单价'),'update'=>true],
            ['key'=>'wai_minbuy',           'caption'=>lg('起订量'),'update'=>true],
            ['key'=>'wai_delivery',           'caption'=>lg('交期(天)'),'update'=>true],
            ['key'=>'wai_price_btime',           'caption'=>lg('工厂报价时间'),'type'=>'date','update'=>true],
            ['key'=>'wai_price_etime',           'caption'=>lg('价格失效时间'),'type'=>'date','update'=>true],
            ['key'=>'wai_purin_time',           'caption'=>lg('采购入库时间'),'type'=>'date','update'=>true],
            ['key'=>'wai_price_status','caption'=>lg('价格状态')],
            ['key'=>'wai_has',          'caption'=>lg('是否现货'),'update'=>true],
            ['key'=>'wai_hasample',     'caption'=>lg('提供样品'),'update'=>true],
            ['key'=>'wai_from',           'caption'=>lg('数据来源'),'update'=>true],
            ['key'=>'wai_remark',   'caption'=>lg('备注'),'update'=>true]

		];
	}
	
	 /**批量更新
     * @param array|string $src 数组或者文件名
     * @return 可返回任意值(string|array|bool)，都会到前端
     */
    public function importUpdate($src) //固定
    {
		$state = $this->import->execute($src, $this->rulesUpdate);
		//数据重复验证 - 自己
		if($state && !empty($this->import->data))
		{
			$state = !$this->import->checkRepeat([
			    ['wai_oe']
		    ]);
		}
		//数据重复验证 - 数据库
		if($state && !empty($this->import->data))
		{
            $opuser = getOpuser();

            $waiidArr = array_column($this->import->data,'wai_id');
            $wdiidArr = $this->db->select('work_ask_item',['wai_id','wai_wdi_id'],['wai_id'=>$waiidArr]);
            $wdiidArr = array_column($wdiidArr,'wai_wdi_id','wai_id');
           
            $nums = [];
            $join = [
                "[>]pro_factory(fac)" => ["wdif_pf_id" =>"pf_id"]
            ];
            $rows = $this->db->select('work_data_item_format', $join,['wdif_wdi_id','wdif_val'], ['wdif_type'=>'Number', 'pf_type'=>'OE','wdif_wdi_id'=>$wdiidArr]);
            foreach($rows as $rv){
				$nums[$rv['wdif_wdi_id']][] = $rv['wdif_val'];  
			}

			foreach($this->import->data as &$item)
			{   
                if(isset($wdiidArr[$item['wai_id']]) && isset($nums[$wdiidArr[$item['wai_id']]]) && in_array($item['wai_oe'],$nums[$wdiidArr[$item['wai_id']]])){
                    $item['wai_oe_format'] = formatNum($item['wai_oe']);
                }else{
                    $state = false;
					$item['excelInfo']['error'] = '该OE号不存在，请填写号码列表中的OE号';
					$this->import->lineNum = $item['excelInfo']['line'];
					$this->import->lastError = $item['excelInfo']['error'];
					continue;
                }

                $exits = $this->db->get('work_ask_item','*',['wai_id[!]'=>$item['wai_id'],'wai_oe_format'=>$item['wai_oe_format'],'wai_opuser'=>$opuser]);

				if($exits)
				{
					$state = false;
					$item['excelInfo']['error'] = '数据库中已存在相同OE[wa_oe]';
					$this->import->lineNum = $item['excelInfo']['line'];
					$this->import->lastError = $item['excelInfo']['error'];
					continue;
				}

                if($item['wai_sup_id'])
                {
                    $supid = $this->db->get('supplier','sup_id',['sup_code'=>$item['wai_sup_id']]);
                    if(!$supid)
                    {
                        $state = false;
                        $item['excelInfo']['error'] = '未找到该供应商'.$item['wai_sup_id'];
                        $this->import->lineNum = $item['excelInfo']['line'];
                        $this->import->lastError = $item['excelInfo']['error'];
                        continue;
                    }else{
                        $item['wai_sup_id'] = $supid;
                    }
                }
                
                if(isset($item['wai_has']))
				{
					if(in_array($item['wai_has'], ['是', 'Y','1'])) $item['wai_has'] = 'Y';
					if(empty($mv['wai_has']) || in_array($item['wai_has'], ['否', 'N'])) $item['wai_has'] = 'N';
				}

                //价格状态
                if(isset($mv['wai_price_status']))
                {
                    if(in_array($mv['wai_price_status'], ['有效', 'Y','1'])) $mv['wai_price_status'] = 'Y';
                    if(empty($mv['wai_price_status']) || in_array($mv['wai_price_status'], ['无效','N'])) $mv['wai_price_status'] = 'N';

                }
                //提供样品
                if(isset($mv['wai_hasample']))
                {
                    if(in_array($mv['wai_hasample'], ['是', 'Y','1'])) $mv['wai_hasample'] = 'Y';
                    if(empty($mv['wai_hasample']) ||in_array($mv['wai_hasample'], ['否', 'N'])) $mv['wai_hasample'] = 'N';
                
                }
			}

            unset($item);
		}
		
		//更新
		if($state && !empty($this->import->data))
		{   
            $opuser = getOpuser();
            $time = getNowTime();
			$this->db->begin();
			foreach($this->import->data as $k=>&$item)
			{
			    $findId = $this->db->get(
			        'work_ask_item',
			        'wai_id',
			        ['wai_id'=>$item['wai_id']]
			     );
			    if($findId){
                   
		            $data=[
                        'wai_opuser'=>$opuser,
                        'wai_update_time'=>$time,
                        'wai_oe_format'=>formatNum($item['wai_oe'])
                    ];
			        foreach($this->rulesUpdate as $rule){
			            if($item[$rule['key']]!='!' && $item[$rule['key']]!='！' && isset($rule['update']) && $rule['update']){
			                $data[$rule['key']] = $item[$rule['key']];
			            }
			        }

    			    $this->db->update('work_ask_item',$data, ['wai_id'=>$findId]);
					
			    }else{
					$item['excelInfo']['error'] = lg('没有找到');
					$this->import->lineNum = $item['excelInfo']['line'];
					$this->import->lastError = $item['excelInfo']['error'];
			    }
			}
			$this->db->End();
		}
        return $this->import->output(); //生成处理结果
    }

}