setName('generrateinvoice') ->setDescription('the generrateinvoice command'); } protected function execute(Input $input, Output $output) { // 指令输出 try { $data =$this->GetAll(); if(empty($data)){ return '暂无数据处理'; } $seller_code =$this->isTicket(); $fail=[]; $interface =[]; foreach ($data as $value){ if(!in_array($value['XHFSBH'],$seller_code)){ Db::name("invoice_interface")->where(['invNo'=>$value['invNo']])->update(["status"=>3,"remark"=>"不支持金税","updatetime"=>date("Y-m-d H:i:s")]); $fail[]=$value['invNo']; } $fplxdm= $value['FPLXDM']; if (!key_exists($value['XHFSBH']."-".$value['FPLXDM'],$interface)){ $pch =randomkeys(26).date("YmdHis"); $interface[$value['XHFSBH']."-".$value['FPLXDM']]['DDZXX']=[]; $interface[$value['XHFSBH']."-".$value['FPLXDM']]['DDPCXX']=['DDQQPCH'=>$pch,'KPFS'=>"0",'NSRSBH'=>$value['XHFSBH'],"FPLXDM"=>$value['FPLXDM']]; }else{ $pch =$interface[$value['XHFSBH']."-".$value['FPLXDM']]['DDPCXX']['DDQQPCH']; } Db::name("invoice_interface")->where(['invNo'=>$value['invNo']])->update(['DDQQPCH'=>$pch,'DDQQLSH'=>$value['DDQQLSH'],"updatetime"=>date("Y-m-d H:i:s")]); $temp=[]; unset($value['invNo']); unset($value['KPFS']); unset($value['FPLXDM']); unset($value['DDQQPCH']); // unset($value['YFPDM']); // unset($value['YFPHM']); // unset($value['YFPLX']); // unset($value['YFPKPRQ']); // unset($value['CHYY']); // unset($value['TSCHBZ']); // unset($value['BZ']); // unset($value['GMFSJH']); // unset($value['GMFBM']); $temp["DDMXXX"]=$value['DDMXXX']; unset($value['DDMXXX']); $temp["DDTXX"]=$value; $interface[$value['XHFSBH']."-".$fplxdm]['DDZXX'][]=$temp; } $this->CheckInvoice($interface); }catch (\Exception $e){ return $e->getMessage(); } $output->writeln('generrateinvoice'); } protected function GetAll(){ $data=Cache::pull("invoiceList"); $list =Db::name("invoice_interface")->json(["DDMXXX"])->withoutField("id,status,is_check,result,remark,addtime,updatetime")->limit(1)->where(["status"=>0])->select(); return $list; } protected function isTicket(){ $company =Db::name("company_info")->where(["out_ticket"=>1,'is_del'=>0])->column("company_license"); return $company; } protected function CheckInvoice($data){ if(empty($data)){ return ''; } $invoice=Config::get("invoice"); $tax =new TaxInvoice($invoice['appKey'],$invoice['appSecret'],$invoice['entCode']); foreach ($data AS $value){ $result = $tax->GenerateInvoice($OrderBatchArr=$value['DDPCXX'],$OrderInvList=$value['DDZXX']); if(isset($result['ZTDM'])&&$result['ZTDM']=='010000'){ Db::name("invoice_interface")->where(['DDQQPCH'=>$result['DDQQPCH']])->update(['status'=>1, "remark"=>$result['ZTXX'],"updatetime"=>date("Y-m-d H:i:s")]); Cache::push("DDQQPCH",$result['DDQQPCH']); }else{ Db::name("invoice_interface")->where(['DDQQPCH'=>$value['DDPCXX']['DDQQPCH']])->update(['status'=>4,"remark"=>$result['ZTXX']??$result['message'],"updatetime"=>date("Y-m-d H:i:s")]); } } } }