123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235 |
- package task
- import (
- "bytes"
- "context"
- "encoding/json"
- "fmt"
- "git.listensoft.net/tool/jspkit/common"
- "git.listensoft.net/tool/jspkit/common/lxhttp"
- "git.listensoft.net/tool/jspkit/common/models"
- "git.listensoft.net/tool/jspkit/common/variable"
- "git.listensoft.net/tool/jspkit/logger"
- "git.listensoft.net/tool/jspkit/taxerr"
- "github.com/spf13/viper"
- "github.com/tidwall/gjson"
- "os"
- "path/filepath"
- "strconv"
- "strings"
- "time"
- )
- const taxMaxTime = 20 * time.Minute
- func GetContent(childCtx context.Context, address string, pdfTel string, ticker *time.Ticker) (childCtx1 context.Context) {
- if address == "shandong" || address == "neimenggu" || address == "jiangsu" {
- childCtx1, _ = context.WithTimeout(childCtx, 30*time.Minute)
- } else if address == "sichuan" || address == "chongqing" || address == "shanxi" || (address == "anhui") {
- childCtx1, _ = context.WithTimeout(childCtx, 40*time.Minute)
- } else if address == "fujian" || address == "beijing" || address == "qinghai" || address == "xiamen" {
- childCtx1, _ = context.WithTimeout(childCtx, 40*time.Minute)
- } else {
- childCtx1, _ = context.WithTimeout(childCtx, taxMaxTime)
- }
- if pdfTel != "" {
-
- ticker = time.NewTicker(4 * time.Minute)
- go func() {
- for t := range ticker.C {
- common.AddTelLockerX2(pdfTel, "300")
- logger.Info("Tick at:", t)
- }
- }()
- }
- return
- }
- func GetTaxTask(robotName string) (list []models.TaxTask, err error) {
- client := lxhttp.NewHttpClient()
- defer client.CloseIdleConnections()
- param := map[string]string{
- "robotName": robotName,
- }
- bys, err2 := lxhttp.POSTJson(client, variable.TaxTaskURL+"/api/v1/getRobotQueue", param, map[string]string{})
- if err2 != nil {
- return
- }
- data := gjson.GetBytes(bys, "data").String()
- list = []models.TaxTask{}
- err = json.Unmarshal([]byte(data), &list)
- return
- }
- func EndQueue(robotName string) {
- client := lxhttp.NewHttpClient()
- defer client.CloseIdleConnections()
- param := map[string]string{
- "robotName": robotName,
- }
- bys, err2 := lxhttp.POSTJson(client, variable.TaxTaskURL+"/api/v1/endQueue", param, map[string]string{})
- if err2 != nil {
- return
- }
- logger.Info("endQueue - ", string(bys))
- }
- func GetRobotName() string {
-
- envRobotName := os.Getenv("robotName")
- logger.Info("envRobotName:", envRobotName)
- if envRobotName != "" {
- return envRobotName
- }
-
- confRobotName := viper.GetString("robotName")
- logger.Info("confRobotName:", confRobotName)
- if confRobotName != "" {
- return confRobotName
- }
-
- dir, _ := os.Getwd()
- _, file := filepath.Split(dir)
- logger.Info("fileDIrRobotName:", file)
- return file
- }
- func EndTask(ctx context.Context, tasks []models.TaxTask) {
- clientURL := variable.TaxTaskURL + "/api/v1/endTaskTax"
- for k, v := range tasks {
- symbolToRemove := ","
-
- tasks[k].Result.BusinessImg = strings.Trim(v.Result.BusinessImg, symbolToRemove)
- }
- for _, task := range tasks {
-
- if task.TaskName == variable.TaxJcShenBao &&
- (task.Result.BusinessStatus != variable.TaxSuccessdOmit && task.Result.BusinessStatus != variable.TaxFail) &&
- strings.Contains(task.Result.BusinessImg, "申报清册_有遗漏") {
- task.Result.BusinessStatus = variable.TaxSuccessdOmit
- task.Result.BusinessLog = "申报清册有遗漏,请看截图" + task.Result.BusinessLog
- }
- if task.ReqNo == "" {
- logger.Info("跳过用于解锁的空任务:", task)
- continue
- }
- task.Result.ReqNo = task.ReqNo
- if task.Result.Status == 0 {
- task.Result.Status = variable.TaxSuccess
- }
- if !task.Result.BusinessStatus.Check() {
- task.Result.BusinessStatus = variable.TaxFail
- task.Result.BusinessLog = common.HandleError(ctx, taxerr.NewWebStuckTitle(false)).Error()
- }
-
-
-
-
-
-
- if strings.Contains(string(task.TaskName), `kk`) && task.Result.BusinessStatus != variable.TaxTiJiaoJinSan {
- if task.Result.BusinessStatus != variable.TaxSuccessPaid && task.Result.BusinessStatus != variable.TaxSuccessdPaid {
- task.Result.BusinessStatus = variable.TaxFail
- } else {
- if task.TaskName != variable.TaxKkShebao {
- task.Result.BusinessStatus = variable.TaxSuccess
- }
- }
- }
- bys, _ := json.Marshal(task.Result)
- logger.Info("结束任务:", string(bys))
- for i := 0; i < 6; i++ {
- logger.Info(time.Now(), fmt.Sprintf("-----------第%s次尝试endTaskTax", strconv.Itoa(i)))
- res, err := lxhttp.HttpClientPost(lxhttp.NewHttpClient(), clientURL, "application/json", bytes.NewReader(bys))
- if err != nil || strings.Contains(string(res), "Sorry") {
- logger.Error("任务结束请求错误:" + err.Error())
- time.Sleep(time.Second * 10)
- continue
- } else {
- logger.Info(time.Now(), fmt.Sprintf("-----------第%s次endTaskTax成功", strconv.Itoa(i)))
- logger.Info("任务结束发送到服务器返回结果:", string(res))
- break
- }
- }
- }
- }
- func CheckSubjectCodes(midSubjects []models.HisSubject, Vouchers []models.HisVoucher) bool {
- var Map1 map[string]bool
- Map1 = make(map[string]bool, len(midSubjects))
- var Map2 map[string]bool
- Map2 = make(map[string]bool, len(midSubjects))
- for _, v1 := range Vouchers {
- for _, v2 := range v1.Items {
- if !Map1[v2.SubjectCode] {
- Map1[v2.SubjectCode] = true
- }
- }
- }
- for _, v := range midSubjects {
- if !Map2[v.SubjectCode] {
- Map2[v.SubjectCode] = true
- }
- }
- for v := range Map1 {
- if !Map2[v] {
- for _, v1 := range Vouchers {
- for _, v2 := range v1.Items {
- if v == v2.SubjectCode {
- logger.Info(v1.VoucherNo, v1.Period)
- break
- }
- }
- }
- logger.Info(v)
- return false
- }
- }
- return true
- }
- func CheckSubjectCodesError(midSubjects []models.HisSubject, Vouchers []models.HisVoucher) (bool, string) {
- var Map1 map[string]bool
- Map1 = make(map[string]bool, len(midSubjects))
- var Map2 map[string]bool
- Map2 = make(map[string]bool, len(midSubjects))
- for _, v1 := range Vouchers {
- for _, v2 := range v1.Items {
- if !Map1[v2.SubjectCode] {
- Map1[v2.SubjectCode] = true
- }
- }
- }
- for _, v := range midSubjects {
- if !Map2[v.SubjectCode] {
- Map2[v.SubjectCode] = true
- }
- }
- for v := range Map1 {
- if !Map2[v] {
- msg := ""
- for _, v1 := range Vouchers {
- for _, v2 := range v1.Items {
- if v == v2.SubjectCode {
- msg = fmt.Sprintf("%s期%s凭证出现缺失%s科目", v1.Period, v1.VoucherNo, v)
- logger.Info(v1.VoucherNo, v1.Period)
- break
- }
- }
- }
- logger.Info(v)
- return false, msg
- }
- }
- return true, ""
- }
|