Explorar o código

contract: 同步合同信息接口调试

Yi hai 1 ano
pai
achega
90bdfa96af
Modificáronse 2 ficheiros con 32 adicións e 14 borrados
  1. 15 0
      apiserver/model/http/sap.go
  2. 17 14
      apiserver/service/contract.go

+ 15 - 0
apiserver/model/http/sap.go

@@ -27,6 +27,19 @@ type SapRespMsg struct {
 	EqNumber    string `json:"EXT03"`
 }
 
+type SapContractResp struct {
+	Dest `json:"DEST"`
+	Data SapContractRespMsg `json:"DATA"`
+}
+
+type SapContractRespMsg struct {
+	HMSGR struct {
+		MSGTY string `json:"MSGTY"`
+		MSGTX string `json:"MSGTX"`
+		EXT01 string `json:"EXT01"`
+	} `json:"HMSGR"`
+}
+
 var SapAuth *http.Auth
 
 type SapQueryReq struct {
@@ -71,4 +84,6 @@ type ContractDataToASP struct {
 	DATAB string `json:"DATAB"`  // 生效起始时间
 	DATBI string `json:"DATBI"`  // 生效结束时间
 	LOEKZ string `json:"LOEKZ"`  // 删除标识
+	ESOKZ string `json:"ESOKZ"`
+	MEINS string `json:"MEINS"` // 订单价格单位
 }

+ 17 - 14
apiserver/service/contract.go

@@ -1,10 +1,10 @@
 package service
 
 import (
-	"encoding/json"
 	"fmt"
 	"strings"
 	"sync"
+	"time"
 
 	log "github.com/sirupsen/logrus"
 	"kpt.xdmy/apiserver/model"
@@ -14,7 +14,7 @@ import (
 const (
 	ContractToAspUrl    = "http://192.168.61.117/SAPQ0/SRM/MM018/PurchaseInfo"
 	ContractToAspDestID = "EQMAN"
-	ContractToAspBussTp = "MM007"
+	ContractToAspBussTp = "MM018"
 	ContractLimit       = 10
 )
 
@@ -28,6 +28,8 @@ var (
 		},
 		DATA: &http.ContractDataToASP{},
 	}
+	loc, _     = time.LoadLocation("Local")
+	timeLayout = "2006-01-02 15:04:05"
 )
 
 type ContractInfo struct {
@@ -139,31 +141,32 @@ func PushContractDataToSAP(bigContract *model.BigContract, contractInfo *Contrac
 		if contract.Enable == 0 {
 			LOEKZ = "X"
 		}
+		startTime, _ := time.ParseInLocation(timeLayout, bigContract.StartTime, loc)
+		stopTime, _ := time.ParseInLocation(timeLayout, bigContract.StopTime, loc)
 		contractDataToASP := &http.ContractDataToASP{
 			MATNR: contract.PartCode,
 			LIFNR: contractInfo.Provider.SapCode,
 			EKORG: contractInfo.Pasture.ParchaseOrganization,
 			WERKS: contractInfo.Pasture.FactoryCode,
-			NETPR: "",
 			WAERS: "CNY",
-			BPRME: "",
-			PEINH: "",
+			PEINH: fmt.Sprintf("%f", contract.Price),
 			MWSKZ: "J0",
 			EKGRP: contractInfo.Pasture.PurchasingGroup,
-			DATAB: bigContract.StartTime,
-			DATBI: bigContract.StopTime,
+			DATAB: startTime.Format("20060102"),
+			DATBI: stopTime.Format("20060102"),
 			LOEKZ: LOEKZ,
+			ESOKZ: fmt.Sprintf("%d", contract.IsZeroStock),
+			MEINS: contract.Unit,
 		}
 		sapContractReq.DATA = contractDataToASP
-		bodyByte, _ := json.Marshal(sapContractReq.DATA)
-		rp := &http.OrderResp{}
-		if err := s.SyncSap(sapContractReq, rp, bodyByte); err != nil {
-			log.Errorf("AutoContractToASP SyncSap Err:%v", err)
 
+		rp := &http.SapContractResp{}
+		if err := s.SyncSap(sapContractReq, rp, sapContractReq); err != nil {
+			log.Errorf("AutoContractToASP SyncSap Err:%v contract:%v", err, contract)
+			continue
 		}
-		log.Infof("AutoContractToASP SyncSap Success:%v", rp)
-		if rp.Data.Status != "S" {
-			log.Errorf("AutoContractToASP SyncSap Error Data:%v", rp.Data)
+		if rp.Dest.Status != "S" {
+			log.Errorf("AutoContractToASP SyncSap Error:%v,contract:%v", rp, contract)
 		}
 	}
 }