123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151 |
- <?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 think\facade\Config;use think\facade\Db;
- class GetOrderInfoAndInvoiceInfo extends Command
- {
- protected function configure()
- {
- // 指令配置
- $this->setName('getorderinfoandinvoiceinfo')
- ->setDescription('the getorderinfoandinvoiceinfo command');
- }
- protected function execute(Input $input, Output $output)
- {
- // 指令输出
- $data = $this->GetData();
- foreach ($data as $value){
- if($value['status']==1){
- $res=$this->GetOrderInfo($value);
- }
- if($value['status']==2){
- if($value['KPLX']==1){
- $red=Db::name("invoice_red")->where(["invRed"=>$value['invNo'],"is_del"=>0])->find();
- if($red){
- $invNo=$red['invNo'];
- Db::name("invoice_return")->where(["returnCode"=>$red['returnCode'],"status"=>1])->update
- (["status"=>2,"updatetime"=>date("Y-m-d H:i:s")]);
- Db::name("invoice_red")->where(["invRed"=>$value['invNo'],"is_del"=>0])->update(["status"=>4,"updatetime"=>date("Y-m-d H:i:s")]);
- Db::name("invoice_pool")->where(["invNo"=>$red['invNo'],"is_del"=>0])->update(["status"=>6,"updatetime"=>date("Y-m-d H:i:s")]);
- }
- }else{
- $invNo=$value['invNo'];
- if($value['FPLXDM']=='026'||$value['FPLXDM']=='028') $status=8; else $status=2;
- Db::name("invoice_pool")->where(["invNo"=>$value['invNo'],"is_del"=>0])->update(["status"=>$status,"updatetime"=>date("Y-m-d H:i:s")]);
- }
- $this->insertTicket($value['result'],$invNo);
- Db::name("invoice_interface")->where($value)->update(["is_check"=>1,"updatetime"=>date("Y-m-d H:i:s")]);
- }
- if($value['status']==3 || $value['status']==4){
- if($value['KPLX']==1){
- Db::name("invoice_red")->where(["invRed"=>$value['invNo'],"is_del"=>0])->update(["status"=>6,"updatetime"=>date("Y-m-d H:i:s")]);
- }else{
- Db::name("invoice_pool")->where(["invNo"=>$value['invNo'],"is_del"=>0])->update(["status"=>4,"updatetime"=>date("Y-m-d H:i:s")]);
- }
- Db::name("invoice_interface")->where($value)->update(["is_check"=>1,"updatetime"=>date("Y-m-d H:i:s")]);
- }
- }
- $output->writeln('getorderinfoandinvoiceinfo');
- }
- protected function GetData(){
- $list=Db::name("invoice_interface")->where([["status",">=",1],["is_check","=",0],["updatetime","<=",date("Y-m-d
- H:i:s")]])->cursor();
- foreach ($list as $value){
- yield $value;
- }
- }
- protected function GetOrderInfo($order){
- $invoice=Config::get("invoice");
- $tax =new \TaxInvoice($invoice['appKey'],$invoice['appSecret'],'911101050628285328');
- $result=$tax->GetOrderInfoAndInvoiceInfo($order['XHFSBH'],$order['DDQQLSH']);
- if($result['ZTDM'] && $result['ZTDM']=='000000'){
- foreach ($result['DDFPZXX'] as $value){
- $zt=$value['DDFPXX']['DDZT'];
- $ztxx=$value['DDFPXX']['DDZTXX'];
- if($zt=='030000'){
- $data= $value['DDFPXX'];
- $data['itemlist'] = $value['DDMXXX'];
- if($data['KPLX']==0)$this->updateGood($value['DDMXXX'],$order['invNo']);
- $exit= json_encode($data,JSON_UNESCAPED_UNICODE);
- Db::name("invoice_interface")->where(["DDQQLSH"=>$value['DDFPXX']['DDQQLSH']])->update(["status"=>2,"result"=>$exit,"remark"=>$ztxx,"updatetime"=>date("Y-m-d H:i:s")]);
- }
- if($zt=='031999' ||$zt=='032997'||$zt=='032999'||$zt=='032998' ){
- Db::name("invoice_interface")->where(["DDQQLSH"=>$value['DDFPXX']['DDQQLSH']])->update
- (["status"=>4,"is_check"=>1,"remark"=>$ztxx,"updatetime"=>date("Y-m-d H:i:s")]);
- }
- if($zt=='031000' ||$zt=='032000'){
- Db::name("invoice_interface")->where(["DDQQLSH"=>$value['DDFPXX']['DDQQLSH']])->update(["remark"=>$ztxx,"updatetime"=>date("Y-m-d H:i:s")]);
- // Db::name("invoice_red")->where(["DDQQLSH"=>$value['DDFPXX']['DDQQLSH']])->update(["remark"=>$ztxx,"updatetime"=>date("Y-m-d H:i:s")]);
- }
- }
- }
- }
- protected function insertTicket($data,$invNo=''){
- $invinfo =Db::name("invoice_ticket")->where(["invNo"=>$invNo,'is_del'=>0])->findOrEmpty();
- $json= json_decode($data,true);
- if(is_array($json)&&!empty($json)){
- if(empty($invinfo)){
- $invinfo["invNo"]=$invNo;
- $invinfo["status"]=1;
- $invinfo["addtime"]=date("Y-m-d H:i:s");
- }
- $invinfo["inv_type"]=$json['FPLXDM'];
- $invinfo["type"]=$json['KPLX'];
- $invinfo["inv_code"]=$json['FPDM'];
- $invinfo["inv_number"]=$json['FPHM'];
- $invinfo["inv_total"]=$json['JSHJ'];
- $invinfo["inv_subtotal"]=$json['HJJE'];
- $invinfo["open_date"]=$json['KPRQ'];
- $invinfo["seller_id"]=$json['XHFSBH'];
- $invinfo["seller_title"]=$json['XHFMC'];
- $invinfo["seller_addr"]=$json['XHFDZ'];
- $invinfo["seller_mobile"]=$json['XHFDH'];
- $invinfo["seller_bank"]=$json['XHFYH'];
- $invinfo["seller_bankNo"]=$json['XHFZH'];
- $invinfo["buyer_id"]=$json['GMFSBH'];
- $invinfo["buyer_title"]=$json['GMFMC'];
- $invinfo["buyer_addr"]=$json['GMFDZ'];
- $invinfo["buyer_mobile"]=$json['GMFDH'];
- $invinfo["buyer_bank"]=$json['GMFYH'];
- $invinfo["buyer_bankNo"]=$json['GMFZH'];
- $invinfo["tax_fee"]=$json['HJSE'];
- $invinfo["remark"]=$json['BZ']??$json['CHBZ'];
- $invinfo["issuer"]=$json['KPR'];
- $invinfo["reciver"]=$json['SKR'];
- $invinfo["reviewer"]=$json['FHR'];
- $invinfo["check_code"]=$json['JYM'];
- $invinfo["pdfstream"]=$json['PDFZJL'];
- $invinfo["item"]=json_encode($json['itemlist'],JSON_UNESCAPED_UNICODE);
- Db::name("invoice_ticket")->save($invinfo);
- }
- }
- private function updateGood($data,$invNo){
- if(empty($data))return;
- foreach ($data as $value){
- if($value['ZXBM']!=''){
- $invinfo =Db::name("invoice_good")->where(["invNo"=>$invNo,"id"=>$value['ZXBM'],'is_del'=>0])->findOrEmpty();
- if(empty($invinfo)) continue;
- $invinfo['goodPrice'] = $value['DJ'];
- $invinfo['totalPrice'] = $value['JE'];
- $invinfo['taxPrice'] = $value['SE'];
- Db::name("invoice_good")->save($invinfo);
- }
- }
- }
- }
|