<?php
namespace homepro\action;
use \model\homepro;
use model\homepro\projectItem;
use model\pro\cate;


class indexAction extends baseAction
{
    public function index()
    {
		$req = \mvc::$req;
		//先默认指定保时捷项目
		if(!$req['pr_id']) $req['pr_id'] = 1;
        \view::set('req',$req);
        //获取保时捷的国际车型数据
        $projectItem = new projectItem();
        $seriesList = $projectItem->getSeriesList(799);
		$seriesGroup = [];
		if($seriesList){
			foreach($seriesList as $series){
				$arr = explode(' ',$series['ms_name']);
				if($arr[0]){
					$seriesGroup[$arr[0]][] = $series;
				}
			}
		}
        \view::set('seriesGroup',$seriesGroup);
        //获取列表
        $data = $projectItem->getList($req);
		// dd($data);
        \view::set('dataArr',$data['list']);
		\view::set('pageTpl',$this->showPages($data['recordCount'],$data['pagesize'],1));

		$partTree  = $projectItem->getProjectCateTree();
		\view::set('partTree',$partTree);
        $pistatusArr = ['-1'=>'无法供应',0=>'待处理', 1=>'开发中',2=>'可供应',3=>'商品'];
		$statusArr = ['-1'=>'有异议',0=>'未定价', 1=>'待确认',2=>'已确认'];
        \view::set('pistatusArr',$pistatusArr);
        \view::set('statusArr',$statusArr);
        \view::set('active','projectitem');
		\view::set('status',$req['status']?:'');
		\view::set('title', \mvc::$cfg['siteTitle']);
		\view::put();
	}

    /**
     * @method 获取车系
     * @author zhengweihua 
     * @copyright 2025-08-07
     */
    public function getSeriesList()
    {
        $req = \mvc::$req;
        $mkid = isset($req['mkid']) ? intval($req['mkid']) : 0;
        if(!$mkid) {
            exitJson(['code' => -1, 'msg' => '品牌不能为空']);
        }
        $projectItem = new projectItem();
        $seriesList = $projectItem->getSeriesList($mkid);
        $this->successJson($seriesList);
    }


    public function checkout()
    {
       $this->mustLogin();
        \view::set('user', $_SESSION['user']);
        \view::set('title', \mvc::$cfg['siteTitle']);
        \view::put();
    }

    public function select()
    {   
        $req = \mvc::$req;
		$style = !empty($req['style']) && $req['style'] == 'anychk'? 'anychk': '';

		$projectItem = new projectItem();
		$cateIds = $projectItem->getProjectCate();

		if($cateIds)
		{
			$cate = new cate();
			$allPart = $cate->lrtree->getChilds(0);
			$allPart = array_column($allPart, null, 'id');
			//指定产品线
			$rulecate = null;

			// 处理指定的小类ID（多个）
			if(!empty($cateIds)) {
				$rulecate = $cateIds;
				// 获取这些分类的所有父级分类
				foreach($cateIds as $cateId) {
					if(isset($allPart[$cateId])) {
						// 获取当前分类的所有父级
						$parents = $cate->lrtree->getParents($cateId, false); // 不包含自己
						foreach($parents as $parent) {
							if(!in_array($parent['id'], $rulecate)) {
								$rulecate[] = $parent['id'];
							}
						}
					}
				}
			}
			else if(!empty($req['pcateid']))
			{
				$rulecate = [];
				foreach(explode(',', $req['pcateid']) as $id)
				{
					$rows = $cate->lrtree->getChilds($id);
					$rulecate = array_merge($rulecate, array_column($rows, 'id'));
				}
				if($rulecate)
				{
					foreach($rulecate as $cid)
					{
						$pcatid = $allPart[$cid]['parent_id'];
						$rulecate[] = $pcatid;
						if(!empty($allPart[$pcatid]))
						$rulecate[] = $allPart[$pcatid]['parent_id'];
					}
				}
			}
		
			if(isset($req['cfg']))
			{
				$cfg = json_decode(base64_decode($req['cfg']),true);
				if($req['cfg']){
					$hascate = $cate->getCatesByCfg($cfg);	

					if($rulecate !== null)
						$rulecate = array_intersect($rulecate, $hascate);
					else
						$rulecate = $hascate;
				}
			}

			if($rulecate !== null)
			{
				foreach($allPart as $k=>$v)
				{
					if(!in_array($v['id'], $rulecate))
						unset($allPart[$k]);
				}
				\view::set('ispwcode', 1);
			}
			
			//拼装零件树
			$partTree = [];
			foreach($allPart as $k=>$v)
			{
				if(empty($partTree[$v['parent_id']]))
					$partTree[$v['parent_id']] = [$v['id']];
				else
					$partTree[$v['parent_id']][] = $v['id'];
			}
		}
		
		\view::set('req', $req);
		\view::set('allPart', $allPart);
		\view::set('style', $style);
		\view::set('partTree', $partTree);
		\view::put();
    }

	public function item()
	{
		// $this->mustLogin();
        $req = \mvc::$req; 
        if(!$req['id']&& !$req['type']) exitJson(0, '参数错误');
		$req['pr_id'] = isset($req['pr_id']) ? intval($req['pr_id']) : 1;
        $projectItem = new projectItem();
        if($req['type']=='oe')
        {
            $dataArr = $projectItem->getOeInfo($req['id'],$req);
        }
        else
        {   
            $dataArr = $projectItem->getProInfo($req['id'],$req);
        }

        \view::set('dataArr', $dataArr);
        \view::set('req', $req);
        \view::set('title', '产品详情-'.\mvc::$cfg['siteTitle']);
		\view::put();
	}


	/**
	 * @method 变更状态
	 * @author zhengweihua 
	 * @copyright 2025-11-25
	 */
	public function updateCheckStatus() 
	{	
		if($_SERVER['REQUEST_METHOD'] != 'POST') exitJson(-1, '请求方式错误');
		$params = \mvc::$req;
		$status = (int)$params['status']; // 2=确认, -1=驳回
		$remark = trim($params['remark']);
		$remark2 = trim($params['remark2']);
		$price2 = isset($params['price2']) ? floatval($params['price2']) : 0;
		$price3 = isset($params['price3']) ? floatval($params['price3']) : 0;
		$datetime = getNowTime();
		$projectItem = new projectItem();


		//拿有编辑价格权限的用户
		$sql = sprintf("
		SELECT DISTINCT ault_au_id FROM `power_role_link`
		JOIN `adm_user_link_role` ON ault_ar_id = prl_ar_id
		WHERE `prl_power_code` = '%s' AND FIND_IN_SET('pi_price',prl_fields)",'P100');
		$st = $projectItem->db->query($sql);
		$rows = $st->fetchAll();
		$auId = ['admin'];
		foreach($rows as $row){
			$auId[] = $row['ault_au_id'];
		}
		//消息标题
		$title = '项目审核结果：' . ($status == 2 ? '通过' : '驳回');	
		if (isset($params['pi_ids'])) {
			// 批量操作
			$pi_ids = $params['pi_ids'];
			if (!is_array($pi_ids)) {
				$pi_ids = explode(',', $pi_ids);
			}
			
			// 确保都是整数
			$pi_ids = array_map('intval', $pi_ids);
			//找不等于未报价的项目	
			$currentItem = $projectItem->db->select('project_item', ['pi_id', 'pi_chk_status','pi_oe_id','pi_number'], ['pi_chk_status[!]'=>0,'pi_id' => $pi_ids]);
			if(!$currentItem){
				exitJson(-1, '项目未报价，不可操作');
			}
			$pi_ids = array_column($currentItem, 'pi_id');
			// 更新状态
			$updateData = [
				'pi_price2'=> $price2,
				'pi_price3'=> $price3,
				'pi_chk_status' => $status,
				'pi_u_remark' => $remark,
				'pi_chk_remark' => $remark2,
				'pi_chk_u_id' => $_SESSION['cnuser']['u_id'],
				'pi_chk_time' => $datetime
			];
			
			$projectItem->db->update('project_item', $updateData, ['pi_id' => $pi_ids]);
			//发送系统消息 带上编辑的号码
			$oe_ids = array_column($currentItem, 'pi_oe_id');
			if($oe_ids){ 
				$oe_oes = $projectItem->db->select('oe_item', ['oe_id','oe_oe'], ['oe_id' => $oe_ids]);
				$oe_oes = array_column($oe_oes,'oe_oe','oe_id');
			}
			$body = '';
			foreach ($currentItem as $citem) {
				$body .=sprintf(" 号码：%s  零件库：%s",$citem['pi_number'],$oe_oes[$citem['pi_oe_id']]);
			}
			$msg = [
				'amsg_title'=> $title,
				'amsg_body'=> $title.$body,
			];
			
			makeOne(\model\message::class)->send($auId,$msg);
			socketSendMsg($auId,$msg);

			exitJson(0, '操作成功');
		} else {
			exitJson(-1, '参数错误');
		}
		
		
	}

	/**
	 * @method 修改备注
	 * @author zhengweihua 
	 * @copyright 2026-03-23
	 */
	public function editRemark()
	{
		if($_SERVER['REQUEST_METHOD'] != 'POST') exitJson(-1, '请求方式错误');
		$params = \mvc::$req;
		$pi_id = isset($params['pi_id']) ? intval($params['pi_id']) : 0;
		$remark = trim($params['remark']);
		if(!$pi_id){
			exitJson(-1, '参数不正确');
		}
		$datetime = getNowTime();
		$updateData = [
			'pi_u_remark' => $remark,
			'pi_chk_u_id' => $_SESSION['cnuser']['u_id'],
			'pi_chk_time' => $datetime
		];
		$projectItem = new projectItem();
		$projectItem->db->update('project_item', $updateData, ['pi_id' => $pi_id]);
		exitJson(0, '操作成功');
	}
    
}