123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106 |
- <?php
- declare (strict_types = 1);
- namespace app\admin\command;
- use think\console\Command;
- use think\console\Input;
- use think\console\input\Argument;
- use think\console\input\Option;
- use think\console\Output;
- use TaxInvoice;
- use think\facade\Cache;
- use think\facade\Config;use think\facade\Db;
- class GenerrateInvoice extends Command
- {
- protected function configure()
- {
- // 指令配置
- $this->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")]);
- }
- }
- }
- }
|