SJA APS后端代码
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

326 lines
6.8 KiB

package msg
import (
"leit.com/leit_seat_aps/common"
"leit.com/leit_seat_aps/db"
"strconv"
"strings"
"time"
)
// 按发运车的不同PartFamily生成独立的ASN
type ASN_ARD_PF struct {
Pfid string
DataList []db.VCustorderPackorder
}
type ASN_UNB struct {
Field1 string
Field2 string
Field3 string
Field4 string
Field5 string
}
type ASN_UNH struct {
Field1 string
Field2 string
}
type ASN_MID struct {
Field1 string // ASN号
Field2 string // 日期 YYMMDD:hhmm
}
type ASN_CDT struct {
Field1 string // Supplier Code
}
type ASN_CSG struct {
Field1 string // Consignee (BBA delivery address code)
}
type ASN_DTR struct {
Field1 string // Vehicle registration
Field2 string // 不是必须
Field3 string // Carrier Code = ZZZ
Field4 string // 开票号 Invoice number
Field5 string // 不是必须
Field6 string // 预计到达时间 YYMMDDhhmm
Field7 string // 不是必须
Field8 string // 不是必须
Field9 string // Despatch date and time
}
// 示例 ARD+::MIKKBR4:MIKFLG4 :4076174:6707067+0+00000000000000000'
type ASN_ARD struct {
Field1 string // :: Parts Family : Supply Group (optional) : Call Off Number : EINSTEIN Order Number
Field2 string // 0 for order related deliveries
Field3 string // Package number 00000000000000000'
}
// Type of package + Type of package + number of package + Quantity of articles in package
// TCO+REUSABLE +9 +272 '
type ASN_TCO struct {
Field1 string // Type of package
Field2 string // number of package
Field3 string // Quantity of articles in package
}
type ASN_UNT struct {
Field1 string
Field2 string
}
type ASN_UNZ struct {
Field1 string
Field2 string
}
type ASN_EDI struct {
unb ASN_UNB
unh ASN_UNH
mid ASN_MID
cdt ASN_CDT
csg ASN_CSG
ardlst []ASN_ARD
unt ASN_UNT
unz ASN_UNZ
}
func (au *ASN_UNB) Tostring() string {
return "UNB+" + au.Field1 + "+" + au.Field2 + "+" + au.Field3 + "+" + au.Field4 + "+" + au.Field5
}
func (au *ASN_UNH) Tostring() string {
return "UNH+" + au.Field1 + "+" + au.Field2
}
// Message Identification
func (am *ASN_MID) Tostring() string {
return "MID+" + am.Field1 + "+" + am.Field2
}
// Consignor Details
func (ac *ASN_CDT) Tostring() string {
return "CDT+" + ac.Field1
}
// Consignor Details
func (ac *ASN_CSG) Tostring() string {
return "CSG+" + ac.Field1
}
// Transport Details
func (ad *ASN_DTR) Tostring() string {
return "DTR+" + ad.Field1 + "+" + ad.Field2 + "+" + ad.Field3 + "+" + ad.Field4 + "+" + ad.Field5 + "+" + ad.Field6 + "+" + ad.Field7 + "+" + ad.Field8 + "+" + ad.Field9
}
// Article Details
func (aa *ASN_ARD) Tostring() string {
return "ARD+" + aa.Field1 + "+" + aa.Field2 + "+" + aa.Field3
}
// Type of Package
func (at *ASN_TCO) Tostring() string {
return "TCO+" + at.Field1 + "+" + at.Field2 + "+" + at.Field3
}
func (au *ASN_UNT) Tostring() string {
return "UNT+" + au.Field1 + "+" + au.Field2
}
func (au *ASN_UNZ) Tostring() string {
return "UNZ+" + au.Field1 + "+" + au.Field2
}
/****/
func (au *ASN_UNB) Read(asnnr string) (err error) {
var (
stdeftab db.Stdeftab
stdeftablst []db.Stdeftab
i int
)
stdeftab = db.Stdeftab{}
if stdeftablst, err = stdeftab.GetStandardList("BBAASN_UNB"); err != nil {
return
}
stdeftablst = stdeftablst
for i = 0; i < len(stdeftablst); i++ {
//fmt.Println(i, ">",stdeftablst[i].Statid,"<", stdeftablst[i].Bez)
switch stdeftablst[i].Statid {
case "Field1":
au.Field1 = stdeftablst[i].Bez
case "Field2":
au.Field2 = stdeftablst[i].Bez
case "Field3":
au.Field3 = stdeftablst[i].Bez
case "Field4":
au.Field4 = common.Date(time.Now().Unix(), stdeftablst[i].Bez)
case "Field5":
au.Field5 = asnnr
default:
}
}
return
}
func (au *ASN_UNH) Read(asnnr string) (err error) {
var (
stdeftab db.Stdeftab
stdeftablst []db.Stdeftab
i int
)
stdeftab = db.Stdeftab{}
if stdeftablst, err = stdeftab.GetStandardList("BBAASN_UNH"); err != nil {
return
}
stdeftablst = stdeftablst
for i = 0; i < len(stdeftablst); i++ {
//fmt.Println(i, ">",stdeftablst[i].Statid,"<", stdeftablst[i].Bez)
switch stdeftablst[i].Statid {
case "Field1":
au.Field1 = asnnr
case "Field2":
au.Field2 = stdeftablst[i].Bez
default:
}
}
return
}
// Message Identification
func (am *ASN_MID) Read(asnnr string) (err error) {
var (
stdeftab db.Stdeftab
stdeftablst []db.Stdeftab
i int
astr []string
)
stdeftab = db.Stdeftab{}
if stdeftablst, err = stdeftab.GetStandardList("BBAASN_MID"); err != nil {
return
}
for i = 0; i < len(stdeftablst); i++ {
//fmt.Println(i, ">",stdeftablst[i].Statid,"<", stdeftablst[i].Bez)
switch stdeftablst[i].Statid {
case "Field1":
astr = strings.Split(stdeftablst[i].Bez, "+")
if len(astr) > 1 {
am.Field1 = astr[0] + asnnr
} else {
am.Field1 = asnnr
}
case "Field2":
am.Field2 = common.Date(time.Now().Unix(), stdeftablst[i].Bez)
default:
}
}
return
}
// Consignor Details
func (ac *ASN_CDT) Read() (err error) {
var (
stdeftab db.Stdeftab
stdeftablst []db.Stdeftab
i int
)
stdeftab = db.Stdeftab{}
if stdeftablst, err = stdeftab.GetStandardList("BBAASN_CDT"); err != nil {
return
}
stdeftablst = stdeftablst
for i = 0; i < len(stdeftablst); i++ {
//fmt.Println(i, ">",stdeftablst[i].Statid,"<", stdeftablst[i].Bez)
switch stdeftablst[i].Statid {
case "Field1":
ac.Field1 = stdeftablst[i].Bez
default:
}
}
return
}
// Consignor Details
func (ac *ASN_CSG) Read() (err error) {
var (
stdeftab db.Stdeftab
stdeftablst []db.Stdeftab
i int
)
stdeftab = db.Stdeftab{}
if stdeftablst, err = stdeftab.GetStandardList("BBAASN_CSG"); err != nil {
return
}
stdeftablst = stdeftablst
for i = 0; i < len(stdeftablst); i++ {
//fmt.Println(i, ">",stdeftablst[i].Statid,"<", stdeftablst[i].Bez)
switch stdeftablst[i].Statid {
case "Field1":
ac.Field1 = stdeftablst[i].Bez
default:
}
}
return
}
// Transport Details
func (ad *ASN_DTR) Read() {
}
// Article Details
func (aa *ASN_ARD) Read(pf, sg, calloffnr, oemordnr string) {
aa.Field1 = "::" + pf + ":" + sg + ":" + calloffnr + ":" + oemordnr[:len(oemordnr)-1]
aa.Field2 = "0"
aa.Field3 = "00000000000000000"
}
// Type of Package
func (at *ASN_TCO) Read() {
}
func (au *ASN_UNT) Read(iRows int, asnnr string) {
au.Field1 = strconv.Itoa(iRows)
au.Field2 = asnnr
}
func (au *ASN_UNZ) Read(asnnr string) {
au.Field1 = "1"
au.Field2 = asnnr
}
func (ae *ASN_EDI) Tostring() (result string) {
var i int
result = ae.unb.Tostring() + "'"
result = result + ae.unh.Tostring() + "'"
result = result + ae.mid.Tostring() + "'"
result = result + ae.cdt.Tostring() + "'"
result = result + ae.csg.Tostring() + "'"
for i = 0; i < len(ae.ardlst); i++ {
result = result + ae.ardlst[i].Tostring() + "'"
}
result = result + ae.unt.Tostring() + "'"
result = result + ae.unz.Tostring() + "'"
return
}