invoiceManager.go 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. package service
  2. import (
  3. "context"
  4. "github.com/gogf/gf/v2/frame/g"
  5. "github.com/gogf/gf/v2/os/gcron"
  6. "time"
  7. )
  8. var (
  9. jyInvoiceManager *InvoiceManager
  10. )
  11. type InvoiceManager struct {
  12. Auth *TripartiteAuth
  13. runPool chan bool
  14. }
  15. func init() {
  16. jyInvoiceManager = createInvoiceManager()
  17. _, err := gcron.Add(context.Background(), "", jyInvoiceManager.RunJob, "invoiceJob")
  18. if err != nil {
  19. panic(err)
  20. }
  21. }
  22. func createInvoiceManager() *InvoiceManager {
  23. return &InvoiceManager{
  24. Auth: createTripartite(),
  25. runPool: make(chan bool, 1),
  26. }
  27. }
  28. func (im *InvoiceManager) ReleasePool() {
  29. <-im.runPool
  30. }
  31. // RunJob 开票定时任务
  32. func (im *InvoiceManager) RunJob(ctx context.Context) {
  33. if g.Cfg().MustGet(ctx, "invoiceJob.stop", false).Bool() {
  34. g.Log().Infof(ctx, "RunJob-开票程序任务已暂停,开启请删除 config.json > invoiceJob.stop")
  35. return
  36. }
  37. //查询需要开票的数据
  38. res, err := g.DB().Query(ctx, "SELECT * FROM invoice WHERE invoice_status=0 AND invoice_variety='电子普通发票'")
  39. if err != nil {
  40. g.Log().Errorf(ctx, "RunJob-查询待开票异常 %s", err)
  41. }
  42. g.Log().Infof(ctx, "RunJob-本次共加载%d条开票记录", res.Len())
  43. for i, m := range res.List() {
  44. select {
  45. case im.runPool <- true:
  46. case <-time.After(time.Minute):
  47. g.Log().Errorf(ctx, "RunJob-开票等待异常,结束此次任务 %s", err)
  48. return
  49. }
  50. g.Dump(i, m)
  51. //isEnt := gconv.String(m["invoice_type"]) == "单位" // 个人
  52. //orderCode:=
  53. c := MakeInvoiceData{
  54. Type: "2",
  55. Gmfmc: "北京拓普丰联信息科技股份有限公司",
  56. Gmfnsrsbh: "91110105756025873C",
  57. Id: "123321",
  58. Gmfdz: "北京市朝阳区安定路5号院13号楼B座12层1201室",
  59. Lxdh: "010-58772571",
  60. Yhyywdmc: "郑州交通银行总行",
  61. Yhzh: "6320123123000121",
  62. InvoiceArr: []MakeInvoiceItems{{
  63. Xmmc: "0fccdac71c36a8552ba662e7a2f42726",
  64. WhStatus: 1,
  65. Je: "2",
  66. Sl: "1",
  67. }},
  68. }
  69. err := im.Auth.MakeSingleInvoice(c)
  70. if err != nil {
  71. im.ReleasePool()
  72. g.Log().Errorf(ctx, "RunJob-开票接口调用异常 %v", err)
  73. continue
  74. }
  75. }
  76. g.Log().Infof(ctx, "RunJob-开票任务完成")
  77. }