package main
import (
"bytes"
"encoding/json"
"encoding/xml"
"fmt"
"io/ioutil"
"net/http"
"strings"
)
type EASLoginInfo struct{
UserName string `json:"userName"`
Password string `json:"password"`
SlnName string `json:"slnName"`
DcName string `json:"dcName"`
Language string `json:"language"`
DbType int32 `json:"dbType"`
}
var(
LoginStr = `
userName?
password?
slnName?
dcName?
language?
dbType?
`
LogoutStr = `
userName?
slnName?
dcName?
language?
`
InsertPartsStr = `
SessionId?
strJson?
`
InsertPartsuselaidStr = `
SessionId?
billType?
strJson?
1
`
)
func main(){
sessionid := EASWebServiceLogin()
//EASWebServicInsertParts(sessionid,"{}")
EASWebServicInsertPartsuselaid(sessionid,"{}","007")
//EASWebServiceLogout()
}
type Response struct {
Body rspBody `xml:"Body" json:"body"`
}
type rspBody struct {
Record []rqRecord `xml:"multiRef" json:"multiRef"`
SynMaterialResponse SMReturn `xml:"synMaterialResponse" json:"SynMaterialResponse"`
ImportBillResponse ImportBillResponse `xml:"importBillResponse" json:"importBillResponse"`
}
type ImportBillResponse struct {
ImportBillReturn string `xml:"importBillReturn" json:"importBillReturn"`
}
type SMReturn struct {
SynMaterialReturn string `xml:"synMaterialReturn" json:"synMaterialReturn"`
}
type rqRecord struct {
SessionId string `xml:"sessionId" json:"sessionId"`
}
func EASWebServiceLogin()string{
client := &http.Client{}
resstr := ReplaceStrWebSevice("login","user","kdeas@02","eas","MASM","L2","1","","","")
body := bytes.NewBuffer([]byte(resstr))
req, err := http.NewRequest("POST",
"http://60.174.151.11:6888/ormrpc/services/EASLogin?wsdl",
body,
)
req.Header.Set("Content-Type", "text/xml")
req.Header.Set("SOAPAction", "application/soap+xml")
if err != nil {
// handle error
}
resp, err := client.Do(req)
if err != nil {
fmt.Println(err)
return ""
}
defer resp.Body.Close()
result_body, err := ioutil.ReadAll(resp.Body)
if err != nil {
fmt.Println(err)
return ""
}
v := Response {}
err = xml.Unmarshal([]byte(string(result_body)), &v)
if err != nil {
fmt.Println(err.Error())
}
if len(v.Body.Record)>0{
fmt.Println(v.Body.Record[0].SessionId)
return v.Body.Record[0].SessionId
}
return ""
}
func EASWebServiceLogout(){
client := &http.Client{}
resstr := ReplaceStrWebSevice("logout","user","","eas","MASM","L2","","","","")
body := bytes.NewBuffer([]byte(resstr))
req, err := http.NewRequest("POST",
"http://60.174.151.11:6888/ormrpc/services/EASLogin?wsdl",
body,
)
req.Header.Set("Content-Type", "text/xml")
req.Header.Set("SOAPAction", "application/soap+xml")
if err != nil {
// handle error
}
resp, err := client.Do(req)
if err != nil {
fmt.Println(err)
return
}
defer resp.Body.Close()
result_body, err := ioutil.ReadAll(resp.Body)
if err != nil {
fmt.Println(err)
return
}
fmt.Println(string(result_body))
}
func EASWebServicInsertParts(SessionId,soapencJson string){
client := &http.Client{}
resstr := ReplaceStrWebSevice("InsertParts","","","","","","",SessionId,soapencJson,"")
body := bytes.NewBuffer([]byte(resstr))
req, err := http.NewRequest("POST",
"http://60.174.151.11:6888/ormrpc/services/WSSynMasterDataFacade?wsdl",
body,
)
req.Header.Set("Content-Type", "text/xml")
req.Header.Set("SOAPAction", "application/soap+xml")
if err != nil {
// handle error
}
resp, err := client.Do(req)
if err != nil {
fmt.Println(err)
return
}
defer resp.Body.Close()
result_body, err := ioutil.ReadAll(resp.Body)
if err != nil {
fmt.Println(err)
return
}
v := Response {}
err = xml.Unmarshal([]byte(string(result_body)), &v)
if err != nil {
fmt.Println(err.Error())
}
resmap := make(map[string]string,0)
err = json.Unmarshal([]byte(v.Body.SynMaterialResponse.SynMaterialReturn),&resmap)
if resmap["success"] == "0"{
fmt.Println(resmap["message"])
}
//fmt.Println(string(result_body))
}
func EASWebServicInsertPartsuselaid(SessionId,strJson,billType string){ //billType采购入库单:006 销售出库单:007 其他入库单:008 其他出库单:009 领料出库单:100 生产入库单:101
client := &http.Client{}
resstr := ReplaceStrWebSevice("InsertPartsuselaidStr","","","","","","",SessionId,strJson,billType)
body := bytes.NewBuffer([]byte(resstr))
req, err := http.NewRequest("POST",
"http://60.174.151.11:6888/ormrpc/services/WSSCMWebServiceFacade?wsdl",
body,
)
req.Header.Set("Content-Type", "text/xml")
req.Header.Set("SOAPAction", "application/soap+xml")
if err != nil {
// handle error
}
resp, err := client.Do(req)
if err != nil {
fmt.Println(err)
return
}
defer resp.Body.Close()
result_body, err := ioutil.ReadAll(resp.Body)
if err != nil {
fmt.Println(err)
return
}
v := Response {}
err = xml.Unmarshal([]byte(string(result_body)), &v)
if err != nil {
fmt.Println(err.Error())
}
resmap := make(map[string]interface{},0)
if v.Body.ImportBillResponse.ImportBillReturn != "" {
err = json.Unmarshal([]byte(v.Body.ImportBillResponse.ImportBillReturn),&resmap)
fmt.Println(v.Body.ImportBillResponse.ImportBillReturn)
fmt.Println(len(resmap["billErrors"].([]interface {})))
if resmap["status"] == "2"{
fmt.Println(resmap["msg"])
}
}
}
func ReplaceStrWebSevice(typeIn,userName,password,slnName,dcName,language,dbType,SessionId,strJson,billType string)string{
res := ""
switch typeIn {
case "login":
res = LoginStr
res = strings.ReplaceAll(res,"userName?",userName)
res = strings.ReplaceAll(res,"password?",password)
res = strings.ReplaceAll(res,"slnName?",slnName)
res = strings.ReplaceAll(res,"dcName?",dcName)
res = strings.ReplaceAll(res,"language?",language)
res = strings.ReplaceAll(res,"dbType?",dbType)
case "logout":
res = LogoutStr
res = strings.ReplaceAll(res,"userName?",userName)
res = strings.ReplaceAll(res,"slnName?",slnName)
res = strings.ReplaceAll(res,"dcName?",dcName)
res = strings.ReplaceAll(res,"language?",language)
case "InsertParts":
res = InsertPartsStr
res = strings.ReplaceAll(res,"SessionId?",SessionId)
res = strings.ReplaceAll(res,"strJson?",strJson)
case "InsertPartsuselaidStr":
res = InsertPartsuselaidStr
res = strings.ReplaceAll(res,"SessionId?",SessionId)
res = strings.ReplaceAll(res,"strJson?",strJson)
res = strings.ReplaceAll(res,"billType?",billType)
}
return res
}