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.

148 lines
3.4 KiB

package asn
import (
"fmt"
"github.com/go-xorm/xorm"
"github.com/robfig/cron/v3"
"leit.com/leit_seat_aps/common"
"leit.com/leit_seat_aps/config"
"leit.com/leit_seat_aps/db"
"leit.com/leit_seat_aps/service"
"testing"
)
func TestRecieveAsn(t *testing.T) {
var (
asnfile string
asn ASN
err error
)
asn = ASN{}
asnfile = "C:\\MES\\LAPP_SEAT\\Documents\\Grammer\\grammer-to-SJA\\D0314.046562760-00000.edi"
if err = ParseGrammerAsn(asnfile, &asn); err != nil {
t.Errorf("解析ASN失败:%v", err)
return
}
PrintGrammerAsn(&asn)
return
}
func TestLoadAsnToLandingData(t *testing.T) {
var (
connstring string
asnfile string
ald AsnLandData
err error
)
connstring = fmt.Sprintf("server=%s;user id=%s;password=%s;database=%s;port=%d;encrypt=disable",
`DESKTOP-S4G95G5\\MLINK`, "lapp", "123fis", "LAPP_JITS", 1433)
if err = db.InitMssqlDb(connstring); err != nil {
t.Errorf("连接数据库失败,原因:%v", err)
return
}
defer db.G_DbEngine.Close()
asnfile = "C:\\MES\\LAPP_SEAT\\Documents\\Grammer\\grammer-to-SJA\\D0314.046562760-00000.edi"
ald = AsnLandData{}
if err = ald.ReadAsnData(asnfile); err != nil {
t.Errorf("读取ASN失败:%v", err)
return
}
if err = ald.SaveAsnData(); err != nil {
t.Errorf("保存ASN失败:%v", err)
return
}
return
}
// 基于ASN数据更新对应生产订单
func TestParseAsnLandingData(t *testing.T) {
var (
connstring string
asnheadtab db.Jit_asnhead_landing
asnheadtablst []db.Jit_asnhead_landing
i int
session *xorm.Session
bt service.BL_Tier2ASN
err error
)
connstring = fmt.Sprintf("server=%s;user id=%s;password=%s;database=%s;port=%d;encrypt=disable",
`DESKTOP-S4G95G5\\MLINK`, "lapp", "123fis", "LAPP_JITS", 1433)
if err = db.InitMssqlDb(connstring); err != nil {
t.Errorf("连接数据库失败,原因:%v", err)
return
}
defer db.G_DbEngine.Close()
// 获取未解析的ASN数据
asnheadtab = db.Jit_asnhead_landing{}
if asnheadtablst, err = asnheadtab.GetUnparsedAsnLandingData(); err != nil {
t.Errorf("获取ASN解析数据失败,原因:%v", err)
return
}
// 基于ASN数据更新扶手相关订单状态
for i = 0; i < len(asnheadtablst); i++ {
session = db.G_DbEngine.NewSession()
defer session.Close()
if err = session.Begin(); err != nil {
return
}
bt = service.BL_Tier2ASN{}
bt.Asnheadtab = asnheadtablst[i]
if err = bt.SortAsnByOrder(); err != nil {
session.Rollback()
session.Close()
continue
}
if err = bt.CLoseTier2WorkOrder(); err != nil {
session.Rollback()
session.Close()
continue
}
if err = bt.SetParsedStatus(); err != nil {
session.Rollback()
session.Close()
continue
}
}
return
}
//测试定时器
func TestCron(t *testing.T){
//加载配置
path := common.EnsureDir("../config/config.yaml")
fmt.Println(path)
conf, err := config.ReadYamlConfig(path)
if err != nil {
t.Errorf("failed to read yaml config due to: %v", err)
return
}
crontab := cron.New()
task := func() {
t.Log("11111")
}
fmt.Println(conf)
// 添加定时任务, * * * * * 是 crontab,表示每分钟执行一次
//crontab.AddFunc("*/1 * * * *", task)
fmt.Printf("Crontime:%s",conf.Crontime)
crontab.AddFunc(conf.Crontime, task)
// 启动定时器
crontab.Start()
// 定时任务是另起协程执行的,这里使用 select 简答阻塞.实际开发中需要
// 根据实际情况进行控制
select {}
}