<?php 
namespace model\import;
use model\smart\smart;
/**
 * 
 */
class skip  extends smart
{
	 /**
     * 标题 (用于消息提醒)
     */
	public $title = '锁定表'; //固定
	public $import = null;    //固定
	public $rules = null;    //规则
	public $demoData = null;  //样例数据
	public $demoremark = null;  //样例说明
	
	public function __construct()
	{
		parent::__construct(); //执行父类
		$this->import = new \lib\import();
		
		$this->rules = [
			['key' => 'skip_pid', 'caption' => lg('GSP型号'), 'formatCell' => 'pc_id', 'must' => true],
			['key' => 'skip_cid', 'caption' => lg('CRM客户编码'), 'formatCell' => 'getCid'],
			['key' => 'skip_area', 'caption' => lg('区域'), 'formatCell' => 'getArea'],
			['key' => 'skip_remark','caption'=>lg('锁定原因')],
			['key' => 'skip_islock','caption'=>lg('是否锁定'),'must'=>true],
		];

		$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([
			    ['skip_cid','skip_pid']
		    ]);
		}
		//数据重复验证
		if($state && !empty($this->import->data))
		{
			foreach($this->import->data as &$dv)
			{
				if($dv['skip_cid'] === false){
					$state = false;
					$dv['excelInfo']['error'] = '[客户名称]系统未找到匹配项';
					$this->import->lineNum = $dv['excelInfo']['line'];
					$this->import->lastError = $dv['excelInfo']['error'];
					continue;
				}
				if($dv['skip_area'] === false){
					$state = false;
					$dv['excelInfo']['error'] = '[区域]系统未找到匹配项';
					$this->import->lineNum = $dv['excelInfo']['line'];
					$this->import->lastError = $dv['excelInfo']['error'];
					continue;
				}
				if(!in_array($dv['skip_islock'],['锁定','解锁'])){
					$state = false;
					$dv['excelInfo']['error'] = '选择锁定或者解锁';
					$this->import->lineNum = $dv['excelInfo']['line'];
					$this->import->lastError = $dv['excelInfo']['error'];
					continue;
				}
				if($dv['skip_islock']=='锁定' && !$dv['skip_remark']){
					$state = false;
					$dv['excelInfo']['error'] = '锁定原因不可为空';
					$this->import->lineNum = $dv['excelInfo']['line'];
					$this->import->lastError = $dv['excelInfo']['error'];
					continue;
				}
				if($dv['skip_remark']){
					$slt_id = $this->db->get('smt_lock_type','slt_id',['slt_name'=>$dv['skip_remark']]);
					if(empty($slt_id)){
						$state = false;
						$dv['excelInfo']['error'] = '需与锁定原因库保持一致';
						$this->import->lineNum = $dv['excelInfo']['line'];
						$this->import->lastError = $dv['excelInfo']['error'];
						continue;
					}
				}
				
				$dv['skip_slt_id'] = $slt_id;
				
			}
			unset($dv);
		}
		//入库
		if($state && !empty($this->import->data))
		{
			$this->db->Begin();
			$tempArr = [];
			foreach($this->import->data as $k=>$mv)
			{
				$skip_islock=$mv['skip_islock']=='解锁'? 0 : 1;
				$set = [
					'skip_pid'=>$mv['skip_pid'],
					'skip_user'=>getOpuser(),
					'skip_islock' => $skip_islock,
					'skip_remark'=>$mv['skip_remark'],
					'skip_slt_id'=>$mv['skip_slt_id']
				];
				if(!$skip_islock){
					$set['skip_unlocktime'] = getNowTime();
				}else{
					$set['skip_locktime'] = getNowTime();
				}
				if(!empty($mv['skip_area']) && !empty($mv['skip_cid']))
				{
					foreach ($mv['skip_cid'] as $cid) {
						foreach ($mv['skip_area'] as $area) {
							$set['skip_area'] = $area;
							$set['skip_cid'] = $cid;
							$tempArr[] = $set;
						}
					}
				}else{
					if(!empty($mv['skip_area'])){
						foreach ($mv['skip_area'] as $area) {
							$set['skip_area'] = $area;
							$tempArr[] = $set;
						}
					}
					if(!empty($mv['skip_cid'])){
						foreach ($mv['skip_cid'] as $cid) {
							$set['skip_cid'] = $cid;
							$tempArr[] = $set;
						}
					}
				}
			}
			if($tempArr){
				foreach ($tempArr as $val) {
					$exist = $this->db->get('smt_skip', 'skip_id', ['skip_cid'=>$val['skip_cid']??'','skip_pid'=>$val['skip_pid']]);
					if(!empty($exist)){
						$this->db->update('smt_skip', $val,['skip_id'=>$exist]);	
					}else{
						$this->db->insert('smt_skip', $val);
					}
				}
			}
			$this->db->End();
		}
        return $this->import->output(); //生成处理结果
	}
}