|
@@ -14,6 +14,7 @@ import (
|
|
"strconv"
|
|
"strconv"
|
|
"strings"
|
|
"strings"
|
|
"time"
|
|
"time"
|
|
|
|
+
|
|
"util"
|
|
"util"
|
|
)
|
|
)
|
|
|
|
|
|
@@ -24,10 +25,14 @@ var (
|
|
)
|
|
)
|
|
|
|
|
|
// 发票开具
|
|
// 发票开具
|
|
-func (u *InvoiceService) InvoiceAdd(solgan *entity.Invoice) (string, int, interface{}) {
|
|
|
|
|
|
+func (u *InvoiceService) InvoiceAdd(solgan *entity.Invoice, resType string, isLoop int, isRed string) (string, int, interface{}) {
|
|
|
|
+ util.Loger.Println("流水号:", solgan.Swno)
|
|
rand.Seed(time.Now().Unix())
|
|
rand.Seed(time.Now().Unix())
|
|
solgan.InvoMemo = solgan.Swno
|
|
solgan.InvoMemo = solgan.Swno
|
|
- solgan.Swno = strings.Replace(fmt.Sprintln(solgan.Swno+fmt.Sprintf("%06v", rand.New(rand.NewSource(time.Now().UnixNano())).Int31n(1000000))), "\n", "", -1)
|
|
|
|
|
|
+ solgan.OrderCode=solgan.Swno
|
|
|
|
+ if isLoop == 0 {
|
|
|
|
+ solgan.Swno = strings.Replace(fmt.Sprintln(solgan.Swno+fmt.Sprintf("%06v", rand.New(rand.NewSource(time.Now().UnixNano())).Int31n(1000000))), "\n", "", -1)
|
|
|
|
+ }
|
|
solgan.SaleTax = entity.SaleTax
|
|
solgan.SaleTax = entity.SaleTax
|
|
solgan.InvType = entity.InvType
|
|
solgan.InvType = entity.InvType
|
|
solgan.BillType = entity.BillType
|
|
solgan.BillType = entity.BillType
|
|
@@ -35,27 +40,51 @@ func (u *InvoiceService) InvoiceAdd(solgan *entity.Invoice) (string, int, interf
|
|
solgan.SpecialRedFlag = entity.SpecialRedFlag
|
|
solgan.SpecialRedFlag = entity.SpecialRedFlag
|
|
solgan.OperationCode = entity.OperationCode
|
|
solgan.OperationCode = entity.OperationCode
|
|
solgan.Verified = entity.Verified
|
|
solgan.Verified = entity.Verified
|
|
|
|
+ solgan.Fhr = entity.Fhr
|
|
|
|
+ solgan.Sky = entity.Sky
|
|
|
|
+
|
|
now := time.Now()
|
|
now := time.Now()
|
|
solgan.BillDate = now.Format("2006-01-02 15:04:05")
|
|
solgan.BillDate = now.Format("2006-01-02 15:04:05")
|
|
|
|
+
|
|
url := entity.Url + "?build_invoice"
|
|
url := entity.Url + "?build_invoice"
|
|
|
|
+ //url := "http://218.249.166.2:8113/eisp-zk/jsonToBillEntityController.do"+ "?build_invoice"
|
|
|
|
+ util.Loger.Println("流水号:", solgan.Swno, "开具发票:数据", solgan)
|
|
bytesData, _ := json.Marshal(solgan)
|
|
bytesData, _ := json.Marshal(solgan)
|
|
reader := bytes.NewReader(bytesData)
|
|
reader := bytes.NewReader(bytesData)
|
|
request, _ := http.NewRequest("POST", url, reader)
|
|
request, _ := http.NewRequest("POST", url, reader)
|
|
request.Header.Set("Content-Type", "application/json;charset=UTF-8")
|
|
request.Header.Set("Content-Type", "application/json;charset=UTF-8")
|
|
client := http.Client{}
|
|
client := http.Client{}
|
|
-
|
|
|
|
resp, err := client.Do(request)
|
|
resp, err := client.Do(request)
|
|
|
|
+ if (err != nil) {
|
|
|
|
+ util.Loger.Println("开票服有问题",err)
|
|
|
|
+ if isLoop == 0 {
|
|
|
|
+ arr := strings.Split(entity.WarningEmail, ",")
|
|
|
|
+ for _, value := range arr {
|
|
|
|
+ util.SendPdf(value, true, solgan.OrderCode)
|
|
|
|
+ }
|
|
|
|
+ solgan.ResType = resType
|
|
|
|
+ solgan.IsRed = isRed
|
|
|
|
+ u.OpeningTimer(solgan)
|
|
|
|
+ }
|
|
|
|
+ data1 := make(map[string]interface{})
|
|
|
|
+ data1["fpdm"] = ""
|
|
|
|
+ data1["fphm"] = ""
|
|
|
|
+ data1["swno"] = solgan.Swno
|
|
|
|
+ data1["path"] = ""
|
|
|
|
+ return "剑鱼标讯订开票服务预警", 3, data1
|
|
|
|
+ }
|
|
respBytes, err := ioutil.ReadAll(resp.Body)
|
|
respBytes, err := ioutil.ReadAll(resp.Body)
|
|
fmt.Sprint(err)
|
|
fmt.Sprint(err)
|
|
data := make(map[string]interface{})
|
|
data := make(map[string]interface{})
|
|
if err := json.Unmarshal([]byte(respBytes), &data); err == nil {
|
|
if err := json.Unmarshal([]byte(respBytes), &data); err == nil {
|
|
- fmt.Println("==============json str 转map=======================", data)
|
|
|
|
|
|
+ fmt.Println(solgan.Swno, "开票返回值:", data)
|
|
}
|
|
}
|
|
- util.Loger.Println("开具发票:数据", string(bytesData))
|
|
|
|
- util.Loger.Println("开具发票:结果", data)
|
|
|
|
|
|
+
|
|
|
|
+ util.Loger.Println("流水号:", solgan.Swno, "开具发票:结果", data)
|
|
//开票正常时
|
|
//开票正常时
|
|
|
|
+ //data["returnCode"] = entity.LineUpCode
|
|
if (data["returnCode"] == entity.LineUpCode || data["returnCode"] == entity.SealCode || data["returnCode"] == entity.SuccessCode) {
|
|
if (data["returnCode"] == entity.LineUpCode || data["returnCode"] == entity.SealCode || data["returnCode"] == entity.SuccessCode) {
|
|
- pdfData, code, msg := u.InvoiceDownload(solgan.Swno, solgan.SaleTax, 0, 0, 0,solgan.Changed)
|
|
|
|
|
|
+ pdfData, code, msg := u.InvoiceDownload(solgan.Swno, solgan.SaleTax, isRed, 0, 0, solgan.Changed, resType,solgan.OrderCode)
|
|
if (fmt.Sprint(code) == entity.SuccessCode) {
|
|
if (fmt.Sprint(code) == entity.SuccessCode) {
|
|
data1 := make(map[string]interface{})
|
|
data1 := make(map[string]interface{})
|
|
data1["fpdm"] = pdfData["fpdm"]
|
|
data1["fpdm"] = pdfData["fpdm"]
|
|
@@ -77,7 +106,7 @@ func (u *InvoiceService) InvoiceAdd(solgan *entity.Invoice) (string, int, interf
|
|
}
|
|
}
|
|
|
|
|
|
// 发票下载
|
|
// 发票下载
|
|
-func (u *InvoiceService) InvoiceDownload(swno string, saleTax string, model int, isLoop int, isfeedback int,changed string) (map[string]interface{}, int, string) {
|
|
|
|
|
|
+func (u *InvoiceService) InvoiceDownload(swno string, saleTax string, isRed string, isLoop int, isfeedback int, changed string, resType string,orderCode string) (map[string]interface{}, int, string) {
|
|
url := entity.Url + "?get_invoice"
|
|
url := entity.Url + "?get_invoice"
|
|
song := make(map[string]interface{})
|
|
song := make(map[string]interface{})
|
|
song["swno"] = swno
|
|
song["swno"] = swno
|
|
@@ -90,15 +119,40 @@ func (u *InvoiceService) InvoiceDownload(swno string, saleTax string, model int,
|
|
request.Header.Set("Content-Type", "application/json;charset=UTF-8")
|
|
request.Header.Set("Content-Type", "application/json;charset=UTF-8")
|
|
client := http.Client{}
|
|
client := http.Client{}
|
|
resp, err := client.Do(request)
|
|
resp, err := client.Do(request)
|
|
|
|
+ if (err != nil) {
|
|
|
|
+ data1 := make(map[string]interface{})
|
|
|
|
+ data1["fpdm"] = ""
|
|
|
|
+ data1["fphm"] = ""
|
|
|
|
+ data1["swno"] = ""
|
|
|
|
+ data1["path"] = ""
|
|
|
|
+ if isLoop == 0 {
|
|
|
|
+ arr := strings.Split(entity.WarningEmail, ",")
|
|
|
|
+ for _, value := range arr {
|
|
|
|
+ util.SendPdf(value, true, orderCode)
|
|
|
|
+ }
|
|
|
|
+ solgan := entity.Invoice{
|
|
|
|
+ Swno: swno,
|
|
|
|
+ SaleTax: saleTax,
|
|
|
|
+ IsRed: isRed,
|
|
|
|
+ Changed: changed,
|
|
|
|
+ ResType: resType,
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ u.OpeningTimer(&solgan)
|
|
|
|
+ }
|
|
|
|
+ return data1, 1, "剑鱼标讯订开票服务预警"
|
|
|
|
+ }
|
|
respBytes, err := ioutil.ReadAll(resp.Body)
|
|
respBytes, err := ioutil.ReadAll(resp.Body)
|
|
var dat *entity.GetInvoice
|
|
var dat *entity.GetInvoice
|
|
|
|
+ util.Loger.Println("发票下载:", "流水号:", swno, "结果:", respBytes)
|
|
if err := json.Unmarshal([]byte(respBytes), &dat); err == nil {
|
|
if err := json.Unmarshal([]byte(respBytes), &dat); err == nil {
|
|
- fmt.Println("==============json str 转map=======================")
|
|
|
|
|
|
+ fmt.Println(swno, "发票下载返回值:", dat)
|
|
}
|
|
}
|
|
- util.Loger.Println("发票下载:", "流水号:", swno, "发票开具方税号:", saleTax, "结果:", dat)
|
|
|
|
|
|
+ util.Loger.Println("发票下载:", "流水号:", swno, "结果:", dat)
|
|
|
|
+ //dat.ReturnMsg.MsgCode = entity.LineUpCode
|
|
if (dat.ReturnMsg.MsgCode == entity.SuccessCode) {
|
|
if (dat.ReturnMsg.MsgCode == entity.SuccessCode) {
|
|
var swno1 string
|
|
var swno1 string
|
|
- if (model == 1) {
|
|
|
|
|
|
+ if (isRed == "true") {
|
|
swno1 = swno[4:len(swno)]
|
|
swno1 = swno[4:len(swno)]
|
|
} else {
|
|
} else {
|
|
swno1 = swno
|
|
swno1 = swno
|
|
@@ -111,23 +165,8 @@ func (u *InvoiceService) InvoiceDownload(swno string, saleTax string, model int,
|
|
pdfData["swno"] = swno
|
|
pdfData["swno"] = swno
|
|
return pdfData, 0, dat.ReturnMsg.Msg
|
|
return pdfData, 0, dat.ReturnMsg.Msg
|
|
} else if (dat.ReturnMsg.MsgCode == entity.LineUpCode || dat.ReturnMsg.MsgCode == entity.SealCode) {
|
|
} else if (dat.ReturnMsg.MsgCode == entity.LineUpCode || dat.ReturnMsg.MsgCode == entity.SealCode) {
|
|
- /*swnoMap := make(map[string]interface{}, 0)
|
|
|
|
- swnoMap["swno"] = swno
|
|
|
|
- swnoMap["saleTax"] = saleTax
|
|
|
|
- swnoMap["model"] = model
|
|
|
|
- swnoMap["isfeedback"] = isfeedback
|
|
|
|
- swnoMap["isLoop"] = isLoop
|
|
|
|
- valueInface := redis.Get(core.GetConfiguration().Redis.Modules, "fp_"+swno)
|
|
|
|
- if (valueInface == nil) {
|
|
|
|
- swnoMap["Frequency"] = 0
|
|
|
|
- } else {
|
|
|
|
- _rdsVal := valueInface.(map[string]interface{})
|
|
|
|
- model, _ := strconv.Atoi(fmt.Sprint(_rdsVal["Frequency"]))
|
|
|
|
- swnoMap["Frequency"] = model + 1
|
|
|
|
- }
|
|
|
|
- redis.PutKV("fp_"+swno, swnoMap)*/
|
|
|
|
if isLoop == 0 {
|
|
if isLoop == 0 {
|
|
- u.Timer(swno, saleTax, model, isfeedback,changed)
|
|
|
|
|
|
+ u.Timer(swno, saleTax, isRed, isfeedback, changed, resType,orderCode)
|
|
}
|
|
}
|
|
return nil, 2, dat.ReturnMsg.Msg
|
|
return nil, 2, dat.ReturnMsg.Msg
|
|
} else {
|
|
} else {
|
|
@@ -137,9 +176,9 @@ func (u *InvoiceService) InvoiceDownload(swno string, saleTax string, model int,
|
|
|
|
|
|
// 发票是否存在
|
|
// 发票是否存在
|
|
//noinspection ALL
|
|
//noinspection ALL
|
|
-func (u *InvoiceService) InvoiceSee(swno string, saleTax string, model string,) (int, interface{}, string) {
|
|
|
|
|
|
+func (u *InvoiceService) InvoiceSee(swno string, saleTax string, model string) (int, interface{}, string) {
|
|
var swno1 string
|
|
var swno1 string
|
|
- if (model == "1") {
|
|
|
|
|
|
+ if (model == "true") {
|
|
swno1 = "RED_" + swno
|
|
swno1 = "RED_" + swno
|
|
} else {
|
|
} else {
|
|
swno1 = swno
|
|
swno1 = swno
|
|
@@ -152,22 +191,34 @@ func (u *InvoiceService) InvoiceSee(swno string, saleTax string, model string,)
|
|
pdfData["path"] = entity.PdfUrl + "/static/res/" + saleTax + "/" + swno + "/" + swno1 + ".pdf"
|
|
pdfData["path"] = entity.PdfUrl + "/static/res/" + saleTax + "/" + swno + "/" + swno1 + ".pdf"
|
|
pdfData["fpdm"] = ""
|
|
pdfData["fpdm"] = ""
|
|
pdfData["fphm"] = ""
|
|
pdfData["fphm"] = ""
|
|
- return 0, pdfData, msg
|
|
|
|
|
|
+
|
|
} else {
|
|
} else {
|
|
- modelInt, _ := strconv.Atoi(model)
|
|
|
|
- path, numb, _ := u.InvoiceDownload(swno1, saleTax, modelInt, 0, 0,"0")
|
|
|
|
- return numb, path, msg
|
|
|
|
|
|
+
|
|
|
|
+ return 1, "path", msg
|
|
}
|
|
}
|
|
|
|
+ return 0, "", msg
|
|
}
|
|
}
|
|
|
|
|
|
// 退票
|
|
// 退票
|
|
//noinspection ALL
|
|
//noinspection ALL
|
|
-func (u *InvoiceService) InvoiceRedSubmit(fpdm string, fphm string) (string, int, interface{}) {
|
|
|
|
|
|
+func (u *InvoiceService) InvoiceRedSubmit(fpdm string, fphm string,orderCode string, resType string, changed string, isLoop int,solgan *entity.Invoice) (string, int, interface{}) {
|
|
url := entity.Url + "?redSubmitEInvoiceInfo"
|
|
url := entity.Url + "?redSubmitEInvoiceInfo"
|
|
|
|
+ model := "1"
|
|
|
|
+ if (changed == "1") {
|
|
|
|
+ model = "2"
|
|
|
|
+ }
|
|
song := make(map[string]interface{})
|
|
song := make(map[string]interface{})
|
|
song["fpdm"] = fpdm
|
|
song["fpdm"] = fpdm
|
|
song["fphm"] = fphm
|
|
song["fphm"] = fphm
|
|
|
|
+ solgan.Yfphm= fphm
|
|
|
|
+ solgan.Yfpdm= fpdm
|
|
|
|
+ solgan.IsRed= "true"
|
|
|
|
+ solgan.Changed= changed
|
|
|
|
+ solgan.ResType= resType
|
|
|
|
+ solgan.Model= model
|
|
|
|
+ solgan.OrderCode=orderCode
|
|
bytesData, _ := json.Marshal(song)
|
|
bytesData, _ := json.Marshal(song)
|
|
|
|
+
|
|
fmt.Println("json", string(bytesData))
|
|
fmt.Println("json", string(bytesData))
|
|
reader := bytes.NewReader(bytesData)
|
|
reader := bytes.NewReader(bytesData)
|
|
request, err := http.NewRequest("POST", url, reader)
|
|
request, err := http.NewRequest("POST", url, reader)
|
|
@@ -175,29 +226,55 @@ func (u *InvoiceService) InvoiceRedSubmit(fpdm string, fphm string) (string, int
|
|
request.Header.Set("Content-Type", "application/json;charset=UTF-8")
|
|
request.Header.Set("Content-Type", "application/json;charset=UTF-8")
|
|
client := http.Client{}
|
|
client := http.Client{}
|
|
resp, err := client.Do(request)
|
|
resp, err := client.Do(request)
|
|
|
|
+ if (err != nil) {
|
|
|
|
+ data1 := make(map[string]interface{})
|
|
|
|
+ data1["fpdm"] = ""
|
|
|
|
+ data1["fphm"] = ""
|
|
|
|
+ data1["swno"] = ""
|
|
|
|
+ data1["path"] = ""
|
|
|
|
+
|
|
|
|
+ if isLoop == 0 {
|
|
|
|
+ arr := strings.Split(entity.WarningEmail, ",")
|
|
|
|
+ for _, value := range arr {
|
|
|
|
+ util.SendPdf(value, true,solgan.OrderCode)
|
|
|
|
+ }
|
|
|
|
+ u.OpeningTimer(solgan)
|
|
|
|
+ }
|
|
|
|
+ if (model == "2") {
|
|
|
|
+ return "剑鱼标讯订开票服务预警", 3, data1
|
|
|
|
+ } else {
|
|
|
|
+ return "剑鱼标讯订开票服务预警", 2, data1
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ }
|
|
respBytes, err := ioutil.ReadAll(resp.Body)
|
|
respBytes, err := ioutil.ReadAll(resp.Body)
|
|
data := make(map[string]interface{})
|
|
data := make(map[string]interface{})
|
|
if err := json.Unmarshal([]byte(respBytes), &data); err == nil {
|
|
if err := json.Unmarshal([]byte(respBytes), &data); err == nil {
|
|
- fmt.Println("==============json str 转map=======================")
|
|
|
|
|
|
+ fmt.Println(fphm, "冲红返回值:", data)
|
|
}
|
|
}
|
|
util.Loger.Println("冲红:", "发票单号:", fpdm, "发票号码:", fphm, "结果:", data)
|
|
util.Loger.Println("冲红:", "发票单号:", fpdm, "发票号码:", fphm, "结果:", data)
|
|
|
|
+ //data["returnCode"] = entity.LineUpCode
|
|
if (data["returnCode"] == entity.LineUpCode || data["returnCode"] == entity.SealCode || data["returnCode"] == entity.SuccessCode) {
|
|
if (data["returnCode"] == entity.LineUpCode || data["returnCode"] == entity.SealCode || data["returnCode"] == entity.SuccessCode) {
|
|
- pdfData, code, msg := u.InvoiceDownload(data["redSwno"].(string), data["saleTax"].(string), int(1), int(0), int(0),"0")
|
|
|
|
- if (fmt.Sprint(code) == entity.SuccessCode) {
|
|
|
|
- data1 := make(map[string]interface{})
|
|
|
|
- data1["fpdm"] = pdfData["fpdm"]
|
|
|
|
- data1["fphm"] = pdfData["fphm"]
|
|
|
|
- data1["swno"] = data["redSwno"]
|
|
|
|
- data1["path"] = pdfData["path"]
|
|
|
|
|
|
+ pdfData, code, msg := u.InvoiceDownload(data["redSwno"].(string), data["saleTax"].(string), "true", int(0), int(0), changed, resType,orderCode)
|
|
|
|
+ if (fmt.Sprint(code) == "0") {
|
|
|
|
+ data1 := map[string]interface{}{
|
|
|
|
+ "fpdm": pdfData["fpdm"],
|
|
|
|
+ "fphm": pdfData["fphm"],
|
|
|
|
+ "swno": data["redSwno"],
|
|
|
|
+ "path": pdfData["path"],
|
|
|
|
+ }
|
|
return msg, 0, data1
|
|
return msg, 0, data1
|
|
} else {
|
|
} else {
|
|
- data1 := make(map[string]interface{})
|
|
|
|
- data1["fpdm"] = pdfData["fpdm"]
|
|
|
|
- data1["fphm"] = pdfData["fphm"]
|
|
|
|
- data1["swno"] = data["redSwno"]
|
|
|
|
- data1["path"] = pdfData["path"]
|
|
|
|
|
|
+ data1 := map[string]interface{}{
|
|
|
|
+ "fpdm": pdfData["fpdm"],
|
|
|
|
+ "fphm": pdfData["fphm"],
|
|
|
|
+ "swno": data["redSwno"],
|
|
|
|
+ "path": pdfData["path"],
|
|
|
|
+ }
|
|
return msg, code, data1
|
|
return msg, code, data1
|
|
}
|
|
}
|
|
|
|
+ } else if (data["returnCode"] == "3002") {
|
|
|
|
+ return "已经冲红", 4, data
|
|
} else {
|
|
} else {
|
|
return fmt.Sprintln(data["returnMsg"]), 1, data
|
|
return fmt.Sprintln(data["returnMsg"]), 1, data
|
|
}
|
|
}
|
|
@@ -205,100 +282,119 @@ func (u *InvoiceService) InvoiceRedSubmit(fpdm string, fphm string) (string, int
|
|
|
|
|
|
// 换票
|
|
// 换票
|
|
//noinspection ALL
|
|
//noinspection ALL
|
|
-func (u *InvoiceService) InvoiceReplace(solgan *entity.Invoice) (string, int, interface{}) {
|
|
|
|
- msg, code1, dataMap := invoiceService.InvoiceRedSubmit(solgan.Yfpdm, solgan.Yfphm)
|
|
|
|
|
|
+func (u *InvoiceService) InvoiceReplace(solgan *entity.Invoice, resType string) (string, int, interface{}) {
|
|
|
|
+ solgan.Model = "2"
|
|
|
|
+ solgan.OrderCode=solgan.Swno
|
|
|
|
+ msg, code1, dataMap := invoiceService.InvoiceRedSubmit(solgan.Yfpdm, solgan.Yfphm, solgan.Swno,resType, solgan.Changed, 0,solgan)
|
|
util.Loger.Println("换票:", "发票单号:", solgan.Yfpdm, "发票号码:", solgan.Yfphm)
|
|
util.Loger.Println("换票:", "发票单号:", solgan.Yfpdm, "发票号码:", solgan.Yfphm)
|
|
if (code1 == 1) {
|
|
if (code1 == 1) {
|
|
return msg, code1, dataMap
|
|
return msg, code1, dataMap
|
|
}
|
|
}
|
|
|
|
+ if (code1 == 3) {
|
|
|
|
+ return msg, 2, dataMap
|
|
|
|
+ }
|
|
solgan.Yfphm = ""
|
|
solgan.Yfphm = ""
|
|
solgan.Yfpdm = ""
|
|
solgan.Yfpdm = ""
|
|
- msg, code, datamap := u.InvoiceAdd(solgan)
|
|
|
|
|
|
+ solgan.Model = "0"
|
|
|
|
+ msg, code, datamap := u.InvoiceAdd(solgan, resType, 0, "false")
|
|
_rdsVal := datamap.(map[string]interface{})
|
|
_rdsVal := datamap.(map[string]interface{})
|
|
_dataMap := dataMap.(map[string]interface{})
|
|
_dataMap := dataMap.(map[string]interface{})
|
|
- _rdsVal["chcode"]=code1
|
|
|
|
- _rdsVal["chfpdm"] = _dataMap["fpdm"]
|
|
|
|
- _rdsVal["chfphm"] = _dataMap["fphm"]
|
|
|
|
- _rdsVal["chswno"] = _dataMap["swno"]
|
|
|
|
- _rdsVal["chpath"] = _dataMap["path"]
|
|
|
|
|
|
+ if (code1 == 4) {
|
|
|
|
+ _rdsVal["chcode"] = 0
|
|
|
|
+ _rdsVal["isch"] = true
|
|
|
|
+ } else {
|
|
|
|
+ _rdsVal["chcode"] = code1
|
|
|
|
+ _rdsVal["isch"] = false
|
|
|
|
+ _rdsVal["chfpdm"] = _dataMap["fpdm"]
|
|
|
|
+ _rdsVal["chfphm"] = _dataMap["fphm"]
|
|
|
|
+ _rdsVal["chswno"] = _dataMap["swno"]
|
|
|
|
+ _rdsVal["chpath"] = _dataMap["path"]
|
|
|
|
+ }
|
|
|
|
+ if (code1 == 3) {
|
|
|
|
+ code=2
|
|
|
|
+ }
|
|
return msg, code, _rdsVal
|
|
return msg, code, _rdsVal
|
|
-}
|
|
|
|
|
|
|
|
-func (u *InvoiceService) Timer(swno string, saleTax string, model int, isfeedback int,changed string) {
|
|
|
|
|
|
+}
|
|
|
|
|
|
- swnoMap := make(map[string]interface{}, 0)
|
|
|
|
- swnoMap["swno"] = swno
|
|
|
|
- swnoMap["saleTax"] = saleTax
|
|
|
|
- swnoMap["model"] = model
|
|
|
|
- swnoMap["isfeedback"] = isfeedback
|
|
|
|
- swnoMap["isLoop"] = 1
|
|
|
|
- swnoMap["changed"]=changed
|
|
|
|
|
|
+//排队中签章失败定时任务
|
|
|
|
+func (u *InvoiceService) Timer(swno string, saleTax string, isRed string, isfeedback int, changed string, resType string,orderCode string) {
|
|
|
|
+ util.Loger.Print("定时任务重启", swno, saleTax, isRed, isfeedback, changed, resType)
|
|
valueInface := redis.Get(core.GetConfiguration().Redis.Modules, "fp_"+swno)
|
|
valueInface := redis.Get(core.GetConfiguration().Redis.Modules, "fp_"+swno)
|
|
if (valueInface == nil) {
|
|
if (valueInface == nil) {
|
|
|
|
+ swnoMap := make(map[string]interface{}, 0)
|
|
|
|
+ swnoMap["swno"] = swno
|
|
|
|
+ swnoMap["saleTax"] = saleTax
|
|
|
|
+ swnoMap["isfeedback"] = isfeedback
|
|
|
|
+ swnoMap["isLoop"] = 1
|
|
|
|
+ swnoMap["changed"] = changed
|
|
|
|
+ swnoMap["isRed"] = isRed
|
|
|
|
+ swnoMap["resType"] = resType
|
|
swnoMap["Frequency"] = 0
|
|
swnoMap["Frequency"] = 0
|
|
|
|
+ swnoMap["creatTime"] = fmt.Sprint(time.Now().Unix())
|
|
|
|
+ swnoMap["orderCode"] = orderCode
|
|
redis.PutKV("fp_"+swno, swnoMap)
|
|
redis.PutKV("fp_"+swno, swnoMap)
|
|
}
|
|
}
|
|
c := cron.New()
|
|
c := cron.New()
|
|
spec := entity.TimingCron
|
|
spec := entity.TimingCron
|
|
c.AddFunc(spec, func() { // AddFunc 是添加任务的地方,此函数接收两个参数,第一个为表示定时任务的字符串,第二个为真正的真正的任务。
|
|
c.AddFunc(spec, func() { // AddFunc 是添加任务的地方,此函数接收两个参数,第一个为表示定时任务的字符串,第二个为真正的真正的任务。
|
|
- util.Loger.Println("定时任务开始:", "流水号:", swno, "发票开具方税号:", saleTax, )
|
|
|
|
|
|
+ util.Loger.Println("定时任务开始:", "流水号:", swno)
|
|
valueInface := redis.Get(core.GetConfiguration().Redis.Modules, "fp_"+swno)
|
|
valueInface := redis.Get(core.GetConfiguration().Redis.Modules, "fp_"+swno)
|
|
swnoMap := make(map[string]interface{}, 0)
|
|
swnoMap := make(map[string]interface{}, 0)
|
|
if (valueInface == nil) {
|
|
if (valueInface == nil) {
|
|
swnoMap["swno"] = swno
|
|
swnoMap["swno"] = swno
|
|
- swnoMap["saleTax"] =saleTax
|
|
|
|
- swnoMap["model"] =model
|
|
|
|
|
|
+ swnoMap["saleTax"] = saleTax
|
|
swnoMap["isfeedback"] = isfeedback
|
|
swnoMap["isfeedback"] = isfeedback
|
|
swnoMap["Frequency"] = 0
|
|
swnoMap["Frequency"] = 0
|
|
- swnoMap["changed"]=changed
|
|
|
|
|
|
+ swnoMap["changed"] = changed
|
|
|
|
+ swnoMap["isRed"] = isRed
|
|
|
|
+ swnoMap["resType"] = resType
|
|
|
|
+ swnoMap["creatTime"] = fmt.Sprint(time.Now().Unix())
|
|
|
|
+ swnoMap["orderCode"] = orderCode
|
|
redis.PutKV("fp_"+swno, swnoMap)
|
|
redis.PutKV("fp_"+swno, swnoMap)
|
|
} else {
|
|
} else {
|
|
_rdsVal := valueInface.(map[string]interface{})
|
|
_rdsVal := valueInface.(map[string]interface{})
|
|
swnoMap["swno"] = _rdsVal["swno"]
|
|
swnoMap["swno"] = _rdsVal["swno"]
|
|
swnoMap["saleTax"] = _rdsVal["saleTax"]
|
|
swnoMap["saleTax"] = _rdsVal["saleTax"]
|
|
- swnoMap["model"] = _rdsVal["model"]
|
|
|
|
swnoMap["isfeedback"] = _rdsVal["isfeedback"]
|
|
swnoMap["isfeedback"] = _rdsVal["isfeedback"]
|
|
swnoMap["isLoop"] = _rdsVal["isLoop"]
|
|
swnoMap["isLoop"] = _rdsVal["isLoop"]
|
|
- swnoMap["changed"]=changed
|
|
|
|
|
|
+ swnoMap["changed"] = changed
|
|
|
|
+ swnoMap["isRed"] = isRed
|
|
|
|
+ swnoMap["resType"] = resType
|
|
|
|
+ swnoMap["creatTime"] = _rdsVal["creatTime"]
|
|
|
|
+ swnoMap["orderCode"] = orderCode
|
|
numb, _ := strconv.Atoi(fmt.Sprint(_rdsVal["Frequency"]))
|
|
numb, _ := strconv.Atoi(fmt.Sprint(_rdsVal["Frequency"]))
|
|
- fmt.Sprint("numb","执行次数")
|
|
|
|
- if numb < entity.Frequency {
|
|
|
|
- util.Loger.Println("第:", numb, "次执行", "流水号:", swno, "发票开具方税号:", saleTax)
|
|
|
|
|
|
+ fmt.Sprint("numb", "执行次数")
|
|
|
|
+ if numb == entity.Frequency {
|
|
|
|
+ arr := strings.Split(entity.WarningEmail, ",")
|
|
|
|
+ for _, value := range arr {
|
|
|
|
+ util.SendPdf(value, false,orderCode)
|
|
|
|
+ }
|
|
numb++
|
|
numb++
|
|
- swnoMap["Frequency"] = numb
|
|
|
|
- redis.PutKV("fp_"+swno, swnoMap)
|
|
|
|
- } else {
|
|
|
|
- redis.Del(core.GetConfiguration().Redis.Modules, "fp_"+swno)
|
|
|
|
- c.Stop()
|
|
|
|
}
|
|
}
|
|
- }
|
|
|
|
|
|
+ util.Loger.Println("第:", numb, "次执行", "流水号:", swno)
|
|
|
|
+ numb++
|
|
|
|
+ swnoMap["Frequency"] = numb
|
|
|
|
+ redis.PutKV("fp_"+swno, swnoMap)
|
|
|
|
+ creatTime, _ := strconv.ParseInt(fmt.Sprint(_rdsVal["creatTime"]), 10, 64)
|
|
|
|
+ fmt.Println(creatTime - time.Now().Unix())
|
|
|
|
|
|
- pdfData, numb, _ := u.InvoiceDownload(swno, saleTax, model, 1, 0,changed)
|
|
|
|
|
|
+ }
|
|
|
|
+ pdfData, numb, _ := u.InvoiceDownload(swno, saleTax, isRed, 1, 0, changed, resType,orderCode)
|
|
fmt.Println(pdfData)
|
|
fmt.Println(pdfData)
|
|
if (numb == 0) {
|
|
if (numb == 0) {
|
|
- util.Loger.Println("定时开票成功:", "流水号:", swno, "发票开具方税号:", saleTax)
|
|
|
|
|
|
+ util.Loger.Println("定时开票成功:", "流水号:", swno)
|
|
if (isfeedback == 0) {
|
|
if (isfeedback == 0) {
|
|
//修改发票中状态
|
|
//修改发票中状态
|
|
- if (model == 1) {
|
|
|
|
- swno = swno[4:len(swno)]
|
|
|
|
|
|
+ dat := util.Callback(swno, saleTax, pdfData["fpdm"].(string), pdfData["fphm"].(string), pdfData["path"].(string), changed, isRed, resType, "","3",orderCode)
|
|
|
|
+ util.Loger.Println("下载成功更改发票结果:", "流水号:", swno, dat)
|
|
|
|
+ util.Loger.Println("下载成功定时任务结束:", "流水号:", swno, )
|
|
|
|
+ if (dat) {
|
|
|
|
+ redis.Del(core.GetConfiguration().Redis.Modules, "fp_"+swno)
|
|
|
|
+ util.Loger.Println("删除:", "流水号:", "fp_"+swno)
|
|
|
|
+ c.Stop()
|
|
}
|
|
}
|
|
- url:=entity.JyUrl+"?order_code="+swno[0 : len(swno)-6]+"&code=1&pfdm="+pdfData["fpdm"].(string)+"&fphm="+pdfData["fphm"].(string)+"&path="+pdfData["path"].(string)+"&swno="+swno+"&changed="+changed
|
|
|
|
- util.Loger.Println("更改发票状态:", "流水号:",swno, "发票开具方税号:",saleTax,url)
|
|
|
|
- req, _ := http.NewRequest("GET", url, nil)
|
|
|
|
- res, _ := http.DefaultClient.Do(req)
|
|
|
|
- defer res.Body.Close()
|
|
|
|
- body, _ := ioutil.ReadAll(res.Body)
|
|
|
|
- dat := make(map[string]interface{})
|
|
|
|
- err := json.Unmarshal([]byte(body), &dat)
|
|
|
|
- fmt.Println(err)
|
|
|
|
- util.Loger.Println("更改发票结果:","流水号:",swno, "发票开具方税号:",saleTax,dat)
|
|
|
|
- util.Loger.Println("定时任务结束:", "流水号:",swno, "发票开具方税号:",saleTax)
|
|
|
|
- if(dat["status"]=="success"){
|
|
|
|
- redis.Del(core.GetConfiguration().Redis.Modules, "fp_"+swno)
|
|
|
|
- c.Stop()
|
|
|
|
- }
|
|
|
|
- /*redis.Del(core.GetConfiguration().Redis.Modules, "fp_"+swno)
|
|
|
|
- c.Stop()*/
|
|
|
|
|
|
+
|
|
} else {
|
|
} else {
|
|
redis.Del(core.GetConfiguration().Redis.Modules, "fp_"+swno)
|
|
redis.Del(core.GetConfiguration().Redis.Modules, "fp_"+swno)
|
|
c.Stop()
|
|
c.Stop()
|
|
@@ -309,3 +405,141 @@ func (u *InvoiceService) Timer(swno string, saleTax string, model int, isfeedbac
|
|
})
|
|
})
|
|
c.Start()
|
|
c.Start()
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+//服务断开重新开票定时任务
|
|
|
|
+//开具、重开
|
|
|
|
+//model 0开票 1 冲红 2冲红开票
|
|
|
|
+func (u *InvoiceService) OpeningTimer(solgan *entity.Invoice) {
|
|
|
|
+ util.Loger.Println("发票开具服务有问题")
|
|
|
|
+ valueInface := redis.Get(core.GetConfiguration().Redis.Modules, "xx_"+solgan.Swno)
|
|
|
|
+ if (valueInface == nil) {
|
|
|
|
+ solgan.Numb = 0
|
|
|
|
+ if solgan.Model == "1" || solgan.Model == "2" {
|
|
|
|
+ redis.PutKV("xx_"+solgan.Yfphm, solgan)
|
|
|
|
+ } else {
|
|
|
|
+ redis.PutKV("xx_"+solgan.Swno, solgan)
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+ c := cron.New()
|
|
|
|
+ spec := entity.OpenTimingCron
|
|
|
|
+ c.AddFunc(spec, func() { // AddFunc 是添加任务的地方,此函数接收两个参数,第一个为表示定时任务的字符串,第二个为真正的真正的任务。
|
|
|
|
+ //util.Loger.Println("定时任务重新开票开始:", "流水号:", solgan.Swno)
|
|
|
|
+ swno := ""
|
|
|
|
+ if solgan.Model == "1" || solgan.Model == "2" {
|
|
|
|
+ util.Loger.Println("定时任务重新开票开始:", "发票号码:", solgan.Yfphm)
|
|
|
|
+ swno = solgan.Yfphm
|
|
|
|
+ } else {
|
|
|
|
+ util.Loger.Println("定时任务重新开票开始:", "流水号:", solgan.Swno)
|
|
|
|
+ swno = solgan.Swno
|
|
|
|
+ }
|
|
|
|
+ valueInface := redis.Get(core.GetConfiguration().Redis.Modules, "xx_"+swno)
|
|
|
|
+ if (valueInface == nil) {
|
|
|
|
+ solgan.Numb = 0
|
|
|
|
+ if solgan.Model == "1" || solgan.Model == "2" {
|
|
|
|
+ redis.PutKV("xx_"+solgan.Yfphm, solgan)
|
|
|
|
+ } else {
|
|
|
|
+ redis.PutKV("xx_"+solgan.Swno, solgan)
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ swnoMap := valueInface.(map[string]interface{})
|
|
|
|
+ numb, _ := strconv.Atoi(fmt.Sprint(swnoMap["numb"]))
|
|
|
|
+ if numb < entity.OpenFrequency {
|
|
|
|
+ if solgan.Model == "1" || solgan.Model == "2" {
|
|
|
|
+ util.Loger.Println("第:", numb, "次执行重新开票", "发票号码:", solgan.Yfphm)
|
|
|
|
+ } else {
|
|
|
|
+ util.Loger.Println("第:", numb, "次执行重新开票", "流水号:", solgan.Swno)
|
|
|
|
+ }
|
|
|
|
+ numb++
|
|
|
|
+ solgan.Numb = numb
|
|
|
|
+ redis.PutKV("xx_"+swno, solgan)
|
|
|
|
+ } else if (numb == entity.OpenFrequency) {
|
|
|
|
+ fmt.Println(numb)
|
|
|
|
+ util.Callback(solgan.Swno, solgan.SaleTax, solgan.Yfpdm, solgan.Yfphm, "", solgan.Changed, solgan.IsRed, solgan.ResType, "true",solgan.Model,solgan.OrderCode)
|
|
|
|
+ if solgan.Model == "1" || solgan.Model == "2" {
|
|
|
|
+ redis.Del(core.GetConfiguration().Redis.Modules, "xx_"+solgan.Yfphm)
|
|
|
|
+ util.Loger.Println("删除:", "发票号码:", solgan.Yfphm)
|
|
|
|
+ } else {
|
|
|
|
+ redis.Del(core.GetConfiguration().Redis.Modules, "xx_"+solgan.Swno)
|
|
|
|
+ util.Loger.Println("删除:", "流水号:", solgan.Swno)
|
|
|
|
+ }
|
|
|
|
+ c.Stop()
|
|
|
|
+ } else {
|
|
|
|
+ fmt.Println(numb)
|
|
|
|
+ util.Callback(solgan.Swno, solgan.SaleTax, solgan.Yfpdm, solgan.Yfphm, "", solgan.Changed, solgan.IsRed, solgan.ResType, "true",solgan.Model,solgan.OrderCode)
|
|
|
|
+ if solgan.Model == "1" || solgan.Model == "2" {
|
|
|
|
+ redis.Del(core.GetConfiguration().Redis.Modules, "xx_"+solgan.Yfphm)
|
|
|
|
+ util.Loger.Println("删除1:", "发票号码:", solgan.Yfphm)
|
|
|
|
+ } else {
|
|
|
|
+ redis.Del(core.GetConfiguration().Redis.Modules, "xx_"+solgan.Swno)
|
|
|
|
+ util.Loger.Println("删除1:", "流水号:", solgan.Swno)
|
|
|
|
+ }
|
|
|
|
+ c.Stop()
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ //是否重开
|
|
|
|
+ switch solgan.Model {
|
|
|
|
+ //重新开具
|
|
|
|
+ case "0":
|
|
|
|
+ _, code, _ := u.InvoiceAdd(solgan, solgan.ResType, 1, "false")
|
|
|
|
+ if (code ==0) {
|
|
|
|
+ //_rdsVal := datamap.(map[string]interface{})
|
|
|
|
+ //util.Callback(solgan.Swno, solgan.SaleTax, "", "", _rdsVal["path"].(string), solgan.Changed, "false", solgan.ResType, "true")
|
|
|
|
+ util.Loger.Println("删除:", "流水号:", "xx_"+solgan.Swno)
|
|
|
|
+ redis.Del(core.GetConfiguration().Redis.Modules, "xx_"+solgan.Swno)
|
|
|
|
+ util.Callback(solgan.Swno, solgan.SaleTax, solgan.Yfpdm, solgan.Yfphm, "", solgan.Changed, solgan.IsRed, solgan.ResType, "true",solgan.Model,solgan.OrderCode)
|
|
|
|
+ c.Stop()
|
|
|
|
+ }
|
|
|
|
+ //单独冲红失败
|
|
|
|
+ case "1":
|
|
|
|
+ _, code, _ := u.InvoiceRedSubmit(solgan.Yfpdm, solgan.Yfphm, solgan.OrderCode,solgan.ResType, solgan.Changed, 1,solgan)
|
|
|
|
+ if (code ==0) {
|
|
|
|
+ //_rdsVal := datamap.(map[string]interface{})
|
|
|
|
+ //util.Callback(solgan.Swno, solgan.SaleTax, datamap, "", _rdsVal["path"].(string), solgan.Changed, "false", solgan.ResType, "true")
|
|
|
|
+ util.Loger.Println("删除:", "发票号码:", "xx_"+solgan.Yfphm)
|
|
|
|
+ redis.Del(core.GetConfiguration().Redis.Modules, "xx_"+solgan.Yfphm)
|
|
|
|
+ util.Callback(solgan.Swno, solgan.SaleTax, solgan.Yfpdm, solgan.Yfphm, "", solgan.Changed, solgan.IsRed, solgan.ResType, "true",solgan.Model,solgan.OrderCode)
|
|
|
|
+ c.Stop()
|
|
|
|
+ }
|
|
|
|
+ //冲红开具
|
|
|
|
+ case "2":
|
|
|
|
+ _, code, _ := u.InvoiceRedSubmit(solgan.Yfpdm, solgan.Yfphm,solgan.OrderCode, solgan.ResType, solgan.Changed, 1,solgan)
|
|
|
|
+ fmt.Println("code",code)
|
|
|
|
+ if (code ==2 || code ==0) {
|
|
|
|
+ solgan.Model = "0"
|
|
|
|
+ if(code==0){
|
|
|
|
+ u.OpeningTimer(solgan)
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ //_rdsVal := datamap.(map[string]interface{})
|
|
|
|
+ //util.Callback(solgan.Swno, solgan.SaleTax, datamap, "", _rdsVal["path"].(string), solgan.Changed, "false", solgan.ResType, "true")
|
|
|
|
+ util.Loger.Println("删除:", "发票号码:", "xx_"+solgan.Yfphm)
|
|
|
|
+ redis.Del(core.GetConfiguration().Redis.Modules, "xx_"+solgan.Yfphm)
|
|
|
|
+ util.Callback(solgan.Swno, solgan.SaleTax, solgan.Yfpdm, solgan.Yfphm, "", solgan.Changed, solgan.IsRed, solgan.ResType, "true",solgan.Model,solgan.OrderCode)
|
|
|
|
+
|
|
|
|
+ c.Stop()
|
|
|
|
+ }
|
|
|
|
+ case "3":
|
|
|
|
+ _, code, _ := u.InvoiceDownload(solgan.Swno, solgan.SaleTax, solgan.IsRed, 1, 0, solgan.Changed, solgan.ResType,solgan.OrderCode)
|
|
|
|
+ if (code ==0) {
|
|
|
|
+ //_rdsVal := datamap.(map[string]interface{})
|
|
|
|
+ //util.Callback(solgan.Swno, solgan.SaleTax, datamap, "", _rdsVal["path"].(string), solgan.Changed, "false", solgan.ResType, "true")
|
|
|
|
+ util.Loger.Println("删除:", "流水号:", "xx_"+solgan.Swno)
|
|
|
|
+ redis.Del(core.GetConfiguration().Redis.Modules, "xx_"+solgan.Swno)
|
|
|
|
+ util.Callback(solgan.Swno, solgan.SaleTax, solgan.Yfpdm, solgan.Yfphm, "", solgan.Changed, solgan.IsRed, solgan.ResType, "true",solgan.Model,solgan.OrderCode)
|
|
|
|
+
|
|
|
|
+ c.Stop()
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ /*if (numb == 0) {
|
|
|
|
+ redis.Del(core.GetConfiguration().Redis.Modules, "xx_"+solgan.Swno)
|
|
|
|
+ util.Loger.Println("删除:", "流水号:", solgan.Swno)
|
|
|
|
+ c.Stop()
|
|
|
|
+ } else if (numb == 1) {
|
|
|
|
+ c.Stop()
|
|
|
|
+ }*/
|
|
|
|
+ })
|
|
|
|
+ c.Start()
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+//回调
|