diff --git a/task/imporeBom/main.go b/task/imporeBom/main.go new file mode 100644 index 0000000..7248363 --- /dev/null +++ b/task/imporeBom/main.go @@ -0,0 +1,17 @@ +package main + +import ( + "fmt" + "leit.com/LAPP_CHEERSSON_BACKEND/task" +) + +func main() { + err := task.EtlTaskInit() + if err != nil { + fmt.Println(err) + return + } + task.ImportBomList() + fmt.Println("OK") + return +} diff --git a/task/importArticle/main.go b/task/importArticle/main.go new file mode 100644 index 0000000..6fcc230 --- /dev/null +++ b/task/importArticle/main.go @@ -0,0 +1,18 @@ +package main + +import ( + "fmt" + "leit.com/LAPP_CHEERSSON_BACKEND/task" +) + +func main() { + err := task.EtlTaskInit() + if err != nil { + fmt.Println(err) + return + } + task.ImportMaterialGroupSearch() + task.ImportArticle() + fmt.Println("OK") + return +} diff --git a/task/importCustomer/main.go b/task/importCustomer/main.go new file mode 100644 index 0000000..f48ae9b --- /dev/null +++ b/task/importCustomer/main.go @@ -0,0 +1,17 @@ +package main + +import ( + "fmt" + "leit.com/LAPP_CHEERSSON_BACKEND/task" +) + +func main() { + err := task.EtlTaskInit() + if err != nil { + fmt.Println(err) + return + } + task.ImportCustomer() + fmt.Println("OK") + return +} diff --git a/task/importCustomerMaterialSearch/main.go b/task/importCustomerMaterialSearch/main.go new file mode 100644 index 0000000..4fd16b2 --- /dev/null +++ b/task/importCustomerMaterialSearch/main.go @@ -0,0 +1,17 @@ +package main + +import ( + "fmt" + "leit.com/LAPP_CHEERSSON_BACKEND/task" +) + +func main() { + err := task.EtlTaskInit() + if err != nil { + fmt.Println(err) + return + } + task.ImportCustomerMaterialSearch() + fmt.Println("OK") + return +} diff --git a/task/importProjectSearch/main.go b/task/importProjectSearch/main.go new file mode 100644 index 0000000..ab499ef --- /dev/null +++ b/task/importProjectSearch/main.go @@ -0,0 +1,17 @@ +package main + +import ( + "fmt" + "leit.com/LAPP_CHEERSSON_BACKEND/task" +) + +func main() { + err := task.EtlTaskInit() + if err != nil { + fmt.Println(err) + return + } + task.ImportProjectSearch() + fmt.Println("OK") + return +} diff --git a/task/importSaleOrder/main.go b/task/importSaleOrder/main.go new file mode 100644 index 0000000..090dd26 --- /dev/null +++ b/task/importSaleOrder/main.go @@ -0,0 +1,17 @@ +package main + +import ( + "fmt" + "leit.com/LAPP_CHEERSSON_BACKEND/task" +) + +func main() { + err := task.EtlTaskInit() + if err != nil { + fmt.Println(err) + return + } + task.ImportSaleOrder() + fmt.Println("OK") + return +} diff --git a/task/k3cloud.go b/task/k3cloud.go index d04653e..cf63656 100644 --- a/task/k3cloud.go +++ b/task/k3cloud.go @@ -1,6 +1,9 @@ package task import ( + "fmt" + "github.com/go-xorm/xorm" + "leit.com/LAPP_CHEERSSON_BACKEND/db" svrAp "leit.com/LAPP_CHEERSSON_BACKEND/services/ap" svr "leit.com/LAPP_CHEERSSON_BACKEND/services/base" "leit.com/LAPP_CHEERSSON_BACKEND/services/erp" @@ -8,6 +11,7 @@ import ( "leit.com/LAPP_CHEERSSON_BACKEND/utils" utilService "leit.com/LAPP_CHEERSSON_BACKEND/utils/k3cloud/service" "math" + "os" "time" ) @@ -26,10 +30,11 @@ var serviceOfProject = svrMe.NewProjectService() func TaskInit() { utils.K3configInit() + erp.PublishPlan(100, "admin") for true { oneTask(time.Time{}) //time.Sleep(time.Hour * 1) - time.Sleep(time.Minute * 5) + time.Sleep(time.Hour * 5) } } @@ -38,45 +43,35 @@ func oneTask(_date time.Time) { //if DaysBetweenDates(lastTime.OneTime, _date) >= 1 { //go func() { - erp.PublishPlan(100, "admin") - - importMaterialGroupSearch() - - importArticle() - importBomList() - importCustomer() - importSaleOrder() - importCustomerMaterialSearch() - ImportProjectSearch() //}() lastTime.OneTime = _date //} } -func importArticle() { +func ImportArticle() { response := utilService.BdMAterialServiceInit().MaterialSearch("", "") //将数据发送到servvice serviceOfArticle.ImportArticle(response) } //导入bom -func importBomList() { +func ImportBomList() { response := utilService.EngBomServiceInit().EngBomSearch("", "") serviceOfBomList.ImportBomList(response) } //导入客户 -func importCustomer() { +func ImportCustomer() { response := utilService.CustomerInit().CustomerSearch("", "") serviceOfCustomer.ImportCustomer(response) } -func importSaleOrder() { +func ImportSaleOrder() { response := utilService.SaleOrderInit().SaleOrderSearch("", "") serviceOfSaleOrder.ImportSalesOrder(response) } -func importMaterialGroupSearch() { +func ImportMaterialGroupSearch() { response := utilService.MaterialGroupInit().MaterialGroupSearch("", "") //将数据放入到map中 utils.ClearMaterialgroupMap() @@ -121,7 +116,7 @@ func importMaterialGroupSearch() { } //客户物料对应表 -func importCustomerMaterialSearch() { +func ImportCustomerMaterialSearch() { svrCust := utilService.CustomerMaterialInit() response := svrCust.CustomerMaterialSearch("", "") serviceOfCustArtlst.ImportCustArtlst(svrCust.FieldKeys, response) @@ -138,3 +133,75 @@ func ImportProjectSearch() { func DaysBetweenDates(startDate, endDate time.Time) int { return int(math.Floor(math.Abs(endDate.Sub(startDate).Hours()/24))) + 1 } + +type TaskParam struct { + TaskId int `xorm:"int 'TaskId'"` + ShellName string `xorm:"nvarchar(255) 'ShellName'"` + ParamName string `xorm:"nvarchar(255) 'ParamName'"` + ParamValue string `xorm:"nvarchar(255) 'ParamValue'"` + ValueType string `xorm:"int 'ValueType'"` +} + +func EtlTaskInit() error { + + var err error + utils.TimezoneLocation, err = time.LoadLocation("Asia/Shanghai") + if err != nil { + return fmt.Errorf("init time zone failed:" + err.Error()) + } + //获取参数 + if len(os.Args) < 6 { + return fmt.Errorf("参数长度错误") + } + //目标链接 + var targetDsn = os.Args[2] + var taskDsn = os.Args[3] + var taskID = os.Args[5] + //需要查询任务 配置 + //实例化任务数据库 + task, err := xorm.NewEngine("mssql", taskDsn) + if err != nil { + return fmt.Errorf("初始化任务数据库引擎错误:" + err.Error()) + } + var taskList []TaskParam + //查询任务参数 + err = task.Table("ShellParam").Where("TaskId=?", taskID).Find(&taskList) + if err != nil { + return fmt.Errorf("任务参数查询错误:" + err.Error()) + } + valMap := make(map[string]string) + for _, v := range taskList { + valMap[v.ParamName] = v.ParamValue + } + //实例化金蝶云 + utils.K3configTestInit() + if _info, ok := valMap["FUseOrgId"]; ok { + utils.K3Obj.FUseOrgId = _info + } else { + return fmt.Errorf("缺少参数配置FUseOrgId") + } + + if _info, ok := valMap["FUseOrgNo"]; ok { + utils.K3Obj.FUseOrgNo = _info + } else { + return fmt.Errorf("缺少参数配置FUseOrgNo") + } + + //实例化目标数据库 + var slaves []*xorm.Engine + var master *xorm.Engine + master, err = xorm.NewEngine("mssql", targetDsn) + if err != nil { + return fmt.Errorf("链接目标库失败:" + err.Error()) + } + if err = master.Ping(); err != nil { + return fmt.Errorf("链接目标库失败:" + err.Error()) + } + master.SetTZLocation(utils.TimezoneLocation) + master.SetTZDatabase(utils.TimezoneLocation) + db.Eloquent, err = xorm.NewEngineGroup(master, slaves) + if err != nil { + return fmt.Errorf("目标库使用错误:" + err.Error()) + } + return nil +}