<?php
namespace admin\action\pro;
use \model\carmodel;
use \model\pro\promodel;
use \model\pro\cate;
class carmodelAction  extends \action
{
	/**
	  * @method 车型 数据
	  * @author soul
	  */
	/*public function getProModelList()
	{
		$req = \mvc::$req;
        $promodel = new promodel();
        $data = $promodel->getAnyProModelList($req);
        $this->successJson($data);
	}*/


	/**
	  * @method 待进入车型
	  * @author soul
	  */
	function listTemp()
	{
		$req = \mvc::$req;
		$carmodel = new carmodel();
		\view::set('carModelFileds', $carmodel->fieldLnkCaption);
		\view::set('modelFiledVals', $carmodel->modelFiledVals);
		$data = $carmodel->getArea();
		\view::set('areas', $data);
		\view::put();
	}


	/**
	  * @method 待进入车型 数据
	  * @author soul
	  */
	public function getListTemp()
	{
		$req = \mvc::$req;
		$rules = $this->urlRulesToWhere($req);
		if(isset($req['numbers'])){
			$rules['numbers'] = explode(',', $req['numbers']);
			$rules['numlike'] = empty($req['numlike']) ? 0 : $req['numlike'];
		}
        $promodel = new promodel();
        $data = $promodel->getListTemp($req, $rules);
        $this->successJson($data);
	}



	/**
	  * @method 虚删除
	  * @author soul
	  */
	function listTempDel()
	{
		$req = \mvc::$req;
		$carmodel = new carmodel();
		\view::set('carModelFileds', $carmodel->fieldLnkCaption);
		\view::set('modelFiledVals', $carmodel->modelFiledVals);
		$data = $carmodel->getArea();
		\view::set('areas', $data);
		\view::put();
	}

	/**
	  * @method 虚删除数据
	  * @author soul
	  */
	public function getListTempDel()
	{
		$req = \mvc::$req;
		$req['pmlt_status'] = -1;
		$rules = $this->urlRulesToWhere($req);
		if(isset($req['numbers'])){
			$rules['numbers'] = formatNums($req['numbers']);
			$rules['numlike'] = empty($req['numlike']) ? 0 : $req['numlike'];
		}
        $promodel = new promodel();
        $data = $promodel->getListTemp($req, $rules);
        $this->successJson($data);
	}



	/**
	  * @method 待进入车型明细
	  * @param  pmlt_id int [必填] ID
	  * @author soul
	  */
	public function proModelTempDetail()
    {
		$req = \mvc::$req;
		$dataArr = [];
		if(!empty($req['pmlt_id']))
		{
			$promodel = new promodel();
			$dataArr = $promodel->getListTemp($req);
			$dataArr = $dataArr['rows'][0];
			if(!empty($dataArr['areas']))
				$dataArr['areas'] = array_column($dataArr['areas'], null, 'ma_id');
		}
		\view::set('dataArr', $dataArr);
		$carmodel = new carmodel();
		\view::set('modelFiledVals', $carmodel->modelFiledVals);
		$data = $carmodel->getArea();
		\view::set('areas', $data);
		\view::put($this->activeView().substr(__METHOD__,strpos(__METHOD__,':')+2));
    }

	/**
	  * @method 保存|新增 待进入车型
	  * @author soul
	  */
	public function saveProModelTempDetail()
	{
		$req = \mvc::$req;
		$setArr = ['base'=>$req['base'], 'areas'=>[], 'tags'=>$req['tags']];
		if(!empty($req['areas']))
		{	
			$carmodel = new carmodel();
			foreach($req['areas'] as $id=>$v)
			{
				if(!empty($v['checked']))
					$setArr['areas'][] = ['pmat_ma_id'=>$id, 'pmat_catalog_notes'=>$v['pmat_catalog_notes']];
			}
		}
		$promodel = new promodel();
		$data = $promodel->saveProModelTempDetail($req['pmlt_id'], $setArr);
		if(!empty($data['msg'])) exitJson($data['msg']);
		$this->successJson($data);
	}


	
	/**
	  * @method 删除待进入
	  * @param  ids string [必填] pnt_id 1,2,3...
	  * @author soul
	  */
	public function delProModelTemp()
	{
		$req = \mvc::$req;
		$promodel = new promodel();
		$data = $promodel->delProModelTemp(explode(',', $req['ids']));
		$this->successJson($data);
	}

	
	/**
	  * @method 编辑待进入单字段
	  * @param  id  int  [必填] pnt_id
	  * @param  field  string  [必填] 字段
	  * @author soul
	  */
	public function setProModelCellTemp()
	{
		$req = \mvc::$req;
		if(!empty($req['id']) && preg_match('/^\d+$/', $req['id']))
		{
			$setArr = [
				$req['field']=>$req[$req['field']]
			];
			$promodel = new promodel();
			$promodel->setProModelCellTemp($req['id'], $setArr);
		}
	}



	/**
	  * @method 初审待进入产品
	  * @param  ids array [必填] 1,2,3,...
	  * @param  ckresult1 int [必填] 结论
	  * @param  ckremark1 string [必填] 核对备注
	  * @author soul
	  */
	public function check1Temp()
	{
		$req = \mvc::$req;
		$promodel = new promodel();
		$data = $promodel->check1Temp(explode(',', $req['ids']), $req);
		$this->successJson($data);
	}
	
	/**
	  * @method 复审待进入产品
	  * @param  ids array [必填] 1,2,3,...
	  * @param  ckresult2 int [必填] 结论
	  * @param  ckremark2 string [必填] 核对备注
	  * @author soul
	  */
	public function check2Temp()
	{
		$req = \mvc::$req;
		$promodel = new promodel();
		$data = $promodel->check2Temp(explode(',', $req['ids']), $req);
		$this->successJson($data);
	}




	/**
	  * @method 正式库
	  * @author soul
	  */
	public function list()
	{
		$req = \mvc::$req;
		$carmodel = new carmodel();
		\view::set('carModelFileds', $carmodel->fieldLnkCaption);
		\view::set('modelFiledVals', $carmodel->modelFiledVals);
		$data = $carmodel->getArea();
		\view::set('areas', $data);
		\view::put();
	}

	/**
	  * @method 正式库 数据
	  * @author soul
	  */
	public function getList()
	{
		set_time_limit(90);
		$req = \mvc::$req;
		$rules = $this->urlRulesToWhere($req);
		if(isset($req['numbers'])){
			$rules['numbers'] = explode(',', $req['numbers']);
			$rules['numlike'] = empty($req['numlike']) ? 0 : $req['numlike'];
		}
		if(empty($req['p_id']) && $req['from']=='pro'){
		    exitJson(lg('参数错误'));
		}else{
            $promodel = new promodel();
            $data = $promodel->getList($req, $rules);
            $this->successJson($data);
		}
	}
	/**
	  * @method 正式库 数据 - 统计
	  * @author soul
	  */
	public function getListCount__($dbSelect,$sql,$pagesize)
	{
        $promodel = new promodel();
		$dbSelect = json_decode(base64_decode($dbSelect),true);
		$sql = base64_decode($sql);
        $data = $promodel->getListCount($dbSelect,$sql,$pagesize);
        //$data = $promodel->getListCount(base64_decode($sql),$pagesize);
        $this->successJson($data);
	}

	/**
	  * @method 正式库 数据 - 统计
	  * @author soul
	  */
	public function getListCount($sql='',$pagesize=0)
	{
        $promodel = new promodel();
        $data = $promodel->getListCount(base64_decode($sql),$pagesize);
        $this->successJson($data);
	}


	/**
	  * @method 正式车型明细
	  * @param  pmlt_id int [必填] ID
	  * @author soul
	  */
	public function proModelDetail()
    {
		$req = \mvc::$req;
		$dataArr = [];
		if(!empty($req['pml_id']))
		{
			$promodel = new promodel();
			$dataArr = $promodel->getList($req);
			$dataArr = $dataArr['rows'][0];
			if(!empty($dataArr['areas']))
				$dataArr['areas'] = array_column($dataArr['areas'], null, 'ma_id');
		}
		\view::set('dataArr', $dataArr);
		$carmodel = new carmodel();
		\view::set('modelFiledVals', $carmodel->modelFiledVals);
		$data = $carmodel->getArea();
		\view::set('areas', $data);
		\view::put($this->activeView().substr(__METHOD__,strpos(__METHOD__,':')+2));
    }

	/**
	  * @method 保存 正式车型
	  * @author soul
	  */
	public function saveProModelDetail()
	{
		$req = \mvc::$req;
		$setArr = $req['base'];
		$setArr['areas'] = [];
		$setArr['tags'] = $req['tags'];
		if(!empty($req['areas']))
		{
			$carmodel = new carmodel();
			$mlzyIds = $carmodel->getMlzyAreaIds();
			foreach($req['areas'] as $id=>$v)
			{
				if(!empty($v['checked']) && (in_array($id, $mlzyIds) || !empty($v['pma_catalog_notes'])))
				{
					$setArr['areas'][] = $id;
					$setArr['catalog_notes_'.$id] = $v['pma_catalog_notes'];
				}
			}
		}
		$promodel = new promodel();
		$data = $promodel->setProModelCell($req['pml_id'], $setArr);
		$this->successJson($data);
	}



	/**
	  * @method 编辑产品的库
	  * @param  id  int  [必填] pn_id
	  * @param  field  string  [必填] 字段
	  * @author soul
	  */
	public function setProModelCell()
	{
		$req = \mvc::$req;
		if(!empty($req['id']) && preg_match('/^\d+$/', $req['id']))
		{
			$setArr = [
				$req['field']=>$req[$req['field']]
			];
			$promodel = new promodel();
			$promodel->setProModelCell($req['id'], $setArr);
		}
	}

	/**
	  * @method 删除产品的号
	  * @param  ids  string  [必填] pml_id  多个逗号分隔
	  * @author soul
	  */
	public function delProModel()
	{
		$req = \mvc::$req;
		$promodel = new promodel();
		$data = $promodel->delProModel(explode(',', $req['ids']), $req['delremark']);
		$this->successJson($data);
	}

	/**
	  * @method 删除产品的变更记录
	  * @param  ids  string  [必填] pmc_id  多个逗号分隔
	  * @author soul
	  */
	public function delProModelChange()
	{
		$req = \mvc::$req;
		$promodel = new promodel();
		$data = $promodel->delProModelChange(explode(',', $req['ids']));
		$this->successJson($data);
	}
	

	/**
	  * @method 某产品正式库
	  * @param  p_id  int  [必填] 产品ID
	  * @author soul
	  */
	function listPro()
	{
		$req = \mvc::$req;
		$carmodel = new carmodel();
		\view::set('carModelFileds', $carmodel->fieldLnkCaption);
		\view::set('modelFiledVals', $carmodel->modelFiledVals);
		$data = $carmodel->getArea();
		\view::set('areas', $data);
		\view::put();
	}


	/**
	  * @method 变更库
	  * @author soul
	  */
	public function listChange()
	{
		$req = \mvc::$req;
		$carmodel = new carmodel();
		\view::set('carModelFileds', $carmodel->fieldLnkCaption);
		\view::set('modelFiledVals', $carmodel->modelFiledVals);
		$data = $carmodel->getArea();
		\view::set('areas', $data);
		\view::put();
	}

	/**
	  * @method 变更库 数据
	  * @author soul
	  */
	public function getListChange()
	{
		$req = \mvc::$req;
        $promodel = new promodel();
        $data = $promodel->getListChange($req);
        $this->successJson($data);
	}


	/**
	  * @method 明细
	  * @param  pmc_id int [必填] ID
	  * @author soul
	  */
	public function proModelChangeDetail()
    {
		$req = \mvc::$req;
        $promodel = new promodel();
        $data = $promodel->getListChange($req);
		$dataArr = $data['rows'][0];
		$changeArr = $dataArr['pmc_change'];
		\view::set('dataArr', $dataArr);
		\view::set('changeArr', $changeArr);
		\view::put($this->activeView().substr(__METHOD__,strpos(__METHOD__,':')+2));
    }


	/**
	  * @method 重置！提醒
	  * @author soul
	  */
	public function resetWarn()
    {
       $promodel = new promodel();
       $data = $promodel->resetWarn();
       $this->successJson($data);
    }


	/**
	  * @method 位置合并
	  * @author soul
	  */
	public function mergeProModelPos()
    {
       $promodel = new promodel();
       $data = $promodel->mergeProModelPos();
       $this->successJson($data);
    }


	/**
	  * @method 子车型库列表
	  * @author soul
	  */
	public function small()
	{
		$req = \mvc::$req;
		$carmodel = new carmodel();
		$ids = \p::areas('F200');
		$ids = empty($ids)? []: explode(',', $ids);
		$data = $carmodel->getZkArea($ids);
		//目录专用 排到最后面
		uasort($data,function($a,$b){
		    return  $a['ma_mlzy'] - $b['ma_mlzy'];
		});
		\view::set('areaArr', $data);
		\view::put();
	}


	/**
	  * @method 子车型库
	  * @author soul
	  */
	public function listSmall()
	{
		$req = \mvc::$req;
		$carmodel = new carmodel();
		\view::set('modelFiledVals', $carmodel->modelFiledVals);
		$data = $carmodel->getAreaInfo($req['ma_id']);
		\view::set('areaArr', $data);
		\view::put();
	}


	/**
	  * @method 子车型库数据
	  * @author soul
	  */
	public function getListSmall()
	{
		$req = \mvc::$req;
        $promodel = new promodel();
        $data = $promodel->getListSmall($req);
        $this->successJson($data);
	}
	


	/**
	  * @method 压缩库
	  * @author soul
	  */
	public function listSmallCate()
	{
		$req = \mvc::$req;
		$cate = new cate();
		$filedArr = $cate->getSmallModelFiled(explode(',', $req['cat_id']));
		$carmodel = new carmodel();
		\view::set('modelFiledVals', $carmodel->modelFiledVals);
		\view::set('filedArr', $filedArr);
		\view::put();
	}


	/**
	  * @method 压缩库库数据
	  * @author soul
	  */
	public function getListSmallCate()
	{
		$req = \mvc::$req;
        $promodel = new promodel();
        $data = $promodel->getListSmallCate($req);
        $this->successJson($data);
	}


	/**
	  * @method 子车型库数据 不连续年 getListSmallYear?ma_id=21
	  * @author soul
	  */
	public function getListSmallYear()
	{
		set_time_limit(0);
	    ini_set('memory_limit', \mvc::$cfg['export_memory_limit']);
		$req = \mvc::$req;
		$req['years'] = 1;
		$req['page'] = 1;
		$req['rows'] = 10000000;
        $promodel = new promodel();
        $data = $promodel->getListSmall($req);
		$newArr = [];
		foreach($data['rows'] as $k=>$v)
		{
			$fomatYm = $promodel->formatBeYearMonth($v['years']);
			if(count($fomatYm['years']) > 1)
			{
				foreach($fomatYm['years'] as $ym)
				{
					$trow = $v;
					$trow['year_from'] = $ym['bshow'];
					$trow['year_to'] = $ym['eshow'];
					$newArr[] = $trow;
				}
			}
		}
		$data['rows'] = $newArr;
		$data['total'] = count($newArr);
        $excel = new \model\excel();
		$excel->writer($newArr);
	}
}