GenerrateInvoice.php 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. <?php
  2. declare (strict_types = 1);
  3. namespace app\admin\command;
  4. use think\console\Command;
  5. use think\console\Input;
  6. use think\console\input\Argument;
  7. use think\console\input\Option;
  8. use think\console\Output;
  9. use TaxInvoice;
  10. use think\facade\Cache;
  11. use think\facade\Config;use think\facade\Db;
  12. class GenerrateInvoice extends Command
  13. {
  14. protected function configure()
  15. {
  16. // 指令配置
  17. $this->setName('generrateinvoice')
  18. ->setDescription('the generrateinvoice command');
  19. }
  20. protected function execute(Input $input, Output $output)
  21. {
  22. // 指令输出
  23. try {
  24. $data =$this->GetAll();
  25. if(empty($data)){
  26. return '暂无数据处理';
  27. }
  28. $seller_code =$this->isTicket();
  29. $fail=[];
  30. $interface =[];
  31. foreach ($data as $value){
  32. if(!in_array($value['XHFSBH'],$seller_code)){
  33. Db::name("invoice_interface")->where(['invNo'=>$value['invNo']])->update(["status"=>3,"remark"=>"不支持金税","updatetime"=>date("Y-m-d H:i:s")]);
  34. $fail[]=$value['invNo'];
  35. }
  36. $fplxdm= $value['FPLXDM'];
  37. if (!key_exists($value['XHFSBH']."-".$value['FPLXDM'],$interface)){
  38. $pch =randomkeys(26).date("YmdHis");
  39. $interface[$value['XHFSBH']."-".$value['FPLXDM']]['DDZXX']=[];
  40. $interface[$value['XHFSBH']."-".$value['FPLXDM']]['DDPCXX']=['DDQQPCH'=>$pch,'KPFS'=>"0",'NSRSBH'=>$value['XHFSBH'],"FPLXDM"=>$value['FPLXDM']];
  41. }else{
  42. $pch =$interface[$value['XHFSBH']."-".$value['FPLXDM']]['DDPCXX']['DDQQPCH'];
  43. }
  44. Db::name("invoice_interface")->where(['invNo'=>$value['invNo']])->update(['DDQQPCH'=>$pch,'DDQQLSH'=>$value['DDQQLSH'],"updatetime"=>date("Y-m-d H:i:s")]);
  45. $temp=[];
  46. unset($value['invNo']);
  47. unset($value['KPFS']);
  48. unset($value['FPLXDM']);
  49. unset($value['DDQQPCH']);
  50. // unset($value['YFPDM']);
  51. // unset($value['YFPHM']);
  52. // unset($value['YFPLX']);
  53. // unset($value['YFPKPRQ']);
  54. // unset($value['CHYY']);
  55. // unset($value['TSCHBZ']);
  56. // unset($value['BZ']);
  57. // unset($value['GMFSJH']);
  58. // unset($value['GMFBM']);
  59. $temp["DDMXXX"]=$value['DDMXXX'];
  60. unset($value['DDMXXX']);
  61. $temp["DDTXX"]=$value;
  62. $interface[$value['XHFSBH']."-".$fplxdm]['DDZXX'][]=$temp;
  63. }
  64. $this->CheckInvoice($interface);
  65. }catch (\Exception $e){
  66. return $e->getMessage();
  67. }
  68. $output->writeln('generrateinvoice');
  69. }
  70. protected function GetAll(){
  71. $data=Cache::pull("invoiceList");
  72. $list =Db::name("invoice_interface")->json(["DDMXXX"])->withoutField("id,status,is_check,result,remark,addtime,updatetime")->limit(1)->where(["status"=>0])->select();
  73. return $list;
  74. }
  75. protected function isTicket(){
  76. $company =Db::name("company_info")->where(["out_ticket"=>1,'is_del'=>0])->column("company_license");
  77. return $company;
  78. }
  79. protected function CheckInvoice($data){
  80. if(empty($data)){
  81. return '';
  82. }
  83. $invoice=Config::get("invoice");
  84. $tax =new TaxInvoice($invoice['appKey'],$invoice['appSecret'],$invoice['entCode']);
  85. foreach ($data AS $value){
  86. $result = $tax->GenerateInvoice($OrderBatchArr=$value['DDPCXX'],$OrderInvList=$value['DDZXX']);
  87. if(isset($result['ZTDM'])&&$result['ZTDM']=='010000'){
  88. Db::name("invoice_interface")->where(['DDQQPCH'=>$result['DDQQPCH']])->update(['status'=>1,
  89. "remark"=>$result['ZTXX'],"updatetime"=>date("Y-m-d H:i:s")]);
  90. Cache::push("DDQQPCH",$result['DDQQPCH']);
  91. }else{
  92. 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")]);
  93. }
  94. }
  95. }
  96. }