<?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;
use \model\check;
use \model\work;

/**
 * 
 */
class workoe  extends model
{
	 /**
     * 标题 (用于消息提醒)
     */
	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'=>'woi_oe',          'caption'=>lg('OE'),'must'=>true],
		     ['key'=>'woi_item_type',    'caption'=>lg('物料类型'),'must'=>true,'formatCell'=>'coll1'],
		     ['key'=>'woi_cn_name',        'caption'=>lg('产品名称'),'must'=>true,'minlen'=>3],
		     ['key'=>'woi_en_name',        'caption'=>lg('英文名称')],
		     ['key'=>'woi_py_name',        'caption'=>lg('俄文名称')],
		     ['key'=>'woi_cn_model',        'caption'=>lg('车型')],
		     ['key'=>'woi_en_model',        'caption'=>lg('车型(英文)')],
		     ['key'=>'woi_py_model',        'caption'=>lg('车型(俄文)')],
		     ['key'=>'woi_en_guige',        'caption'=>lg('规格(英文)')],
		     ['key'=>'woi_py_guige',        'caption'=>lg('规格(俄文)')],
			 ['key'=>'woi_cate_id',         'caption'=>lg('品名'),'must'=>true,'formatCell'=>'cate'],
			 ['key'=>'woi_mk_id',         'caption'=>lg('汽车商'),'must'=>true,'formatCell'=>'mk_id'],
		     ['key'=>'woi_unit',    'caption'=>lg('基本单位'),'must'=>true,'formatCell'=>'coll2'],
			 ['key'=>'woi_engine',        'caption'=>lg('发动机')],
			 ['key'=>'woi_model_year_range',        'caption'=>lg('年限')],
			 ['key'=>'woi_cc',        'caption'=>lg('排量')],
			 ['key'=>'woi_fuel',        'caption'=>lg('燃油类型'),'formatCell'=>'coll5'],
			 ['key'=>'woi_chassis',        'caption'=>lg('底盘')],
			 ['key'=>'woi_purc_warn',        'caption'=>lg('采购提醒')],
			 ['key'=>'woi_purc_org',        'caption'=>lg('产品组'),'formatCell'=>'coll6'],
			 ['key'=>'woi_inter_develop',        'caption'=>lg('内部研发')],
			 ['key'=>'woi_auto_assign',        'caption'=>lg('自动分配'),'must'=>true],
			 ['key'=>'woi_develop_no',        'caption'=>lg('开发号')],
			 ['key'=>'woi_idx_nums',        'caption'=>lg('对照号')]
		];

		$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)){
			$check = new check();
			foreach($this->import->data as &$dv){
				$dv['woi_opuser'] = $opuser;
				$dv['woi_oe_format'] = formatNum($dv['woi_oe']);
				$exists = $check->checkExist('uniwork', $dv);
				if(!empty($exists)){
					$state = false;
					$dv['excelInfo']['error'] = '记录已存在';
					$this->import->lineNum = $dv['excelInfo']['line'];
					$this->import->lastError = $dv['excelInfo']['error'];
					continue;
				}
			}
		}

		//数据重复验证 - 自己
		if($state && !empty($this->import->data)){
			$state = !$this->import->checkRepeat([
			    ['woi_oe_format']
		    ]);
		}

		//入库
		if($state && !empty($this->import->data)){
			$work = new work();
			
			$this->db->Begin();
			$add = [
				'woe_opuser'=>$opuser,	
				'woe_create_time'=>$datetime,	
				'woe_update_time'=>$datetime,	
			];
			$this->db->insert('work_oe', $add);
			$woe_id = $this->db->id();
			foreach($this->import->data as $k=>$mv){
				$set = [
					'woi_woe_id'=>$woe_id,
					'woi_create_time'=>$datetime,
					'woi_update_time'=>$datetime,
					'woi_opuser'=>$opuser
				];
				foreach($mv as $filed=>$val){
					if(stripos($filed, 'woi_') === 0){
						$set[$filed] = $val;
					}
				}
				$this->db->insert('work_data_item', $set);
			}
			$this->db->End();
		}
	
        return $this->import->output(); //生成处理结果
	}
}