diff --git a/services/base/Article.service.go b/services/base/Article.service.go index 9e57cdd..8478346 100644 --- a/services/base/Article.service.go +++ b/services/base/Article.service.go @@ -117,7 +117,7 @@ type ArticleService interface { Insert(*global.User, *[]model.Article) error //erp导入 - ImportArticle([][]interface{}) + ImportArticle([][]interface{}, map[string]string) /****************************************************************************** * * @Function Name : Delete diff --git a/services/base/implments/Article.service.impl.go b/services/base/implments/Article.service.impl.go index e08f9d4..92d7126 100644 --- a/services/base/implments/Article.service.impl.go +++ b/services/base/implments/Article.service.impl.go @@ -225,7 +225,7 @@ func (impl *ArticleServiceImplement) UpdateOne(user *global.User, entity *model. return nil } -func (impl *ArticleServiceImplement) ImportArticle(_list [][]interface{}) { +func (impl *ArticleServiceImplement) ImportArticle(_list [][]interface{}, taskVal map[string]string) { //循环 grmi.Log(nil, "/services/base/implments/Article.service.impl.go", "ImportArticle", "定时同步Article") engine := db.Eloquent.Master() @@ -254,13 +254,6 @@ func (impl *ArticleServiceImplement) ImportArticle(_list [][]interface{}) { continue } if utils.ValueToString(v[3], "") == model.ART_TYPE_FINISHED { - _articleResourceDao, _ := articleResourceDao.SelectOne(utils.ValueToString(v[3], "")) - if _articleResourceDao == nil { - articleResourceData = append(articleResourceData, modelAp.ArticleResource{ - PlantNr: model.PlantNr, - ArtId: utils.ValueToString(v[3], ""), - }) - } _stockLevel, _ := stockLevelDao.SelectOne(utils.ValueToString(v[3], "")) if _stockLevel == nil { stockLevelData = append(stockLevelData, modelAp.ArticleStockLevel{ @@ -268,6 +261,20 @@ func (impl *ArticleServiceImplement) ImportArticle(_list [][]interface{}) { ArtId: utils.ValueToString(v[3], ""), }) } + + _articleResourceDao, _ := articleResourceDao.SelectOne(utils.ValueToString(v[3], "")) + if _articleResourceDao == nil { + articleResourceData = append(articleResourceData, modelAp.ArticleResource{ + PlantNr: model.PlantNr, + ArtId: utils.ValueToString(v[3], ""), + ResourceId: taskVal["ResourceId"], + }) + } else if _stockLevel != nil && _stockLevel.CompleteStatus != 1 { + //更新 + _articleResourceDao.ResourceId = taskVal["ResourceId"] + _ = articleResourceDao.UpdateOne(_articleResourceDao) + } + } isUp := false //查询物料 diff --git a/task/importArticle/main.go b/task/importArticle/main.go index 7dffc6c..69ce3e7 100644 --- a/task/importArticle/main.go +++ b/task/importArticle/main.go @@ -6,14 +6,14 @@ import ( ) func main() { - err := task.EtlTaskInit() + err, taskVal := task.EtlTaskArticleInit() if err != nil { fmt.Println(err) return } task.ImportMaterial() task.ImportMaterialGroupSearch() - task.ImportArticle() + task.ImportArticle(taskVal) fmt.Println("OK") return } diff --git a/task/k3cloud.go b/task/k3cloud.go index 56cb050..1a24ff1 100644 --- a/task/k3cloud.go +++ b/task/k3cloud.go @@ -79,10 +79,10 @@ func oneTask(_date time.Time) { } //物料 -func ImportArticle() { +func ImportArticle(taskVal map[string]string) { response := utilService.BdMAterialServiceInit().MaterialSearch("", "") //将数据发送到servvice - serviceOfArticle.ImportArticle(response) + serviceOfArticle.ImportArticle(response, taskVal) } //导入bom @@ -284,3 +284,67 @@ func EtlTaskInit() error { } return nil } + +func EtlTaskArticleInit() (error, map[string]string) { + + var err error + utils.TimezoneLocation, err = time.LoadLocation("Asia/Shanghai") + if err != nil { + return fmt.Errorf("init time zone failed:" + err.Error()), nil + } + //获取参数 + if len(os.Args) < 6 { + return fmt.Errorf("参数长度错误"), nil + } + //目标链接 + 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()), nil + } + var taskList []TaskParam + //查询任务参数 + err = task.Table("ShellParam").Where("TaskId=?", taskID).Find(&taskList) + if err != nil { + return fmt.Errorf("任务参数查询错误:" + err.Error()), nil + } + valMap := make(map[string]string) + for _, v := range taskList { + valMap[v.ParamName] = v.ParamValue + } + //实例化金蝶云 + utils.K3configInit() + if _info, ok := valMap["FUseOrgId"]; ok { + utils.K3Obj.FUseOrgId = _info + } else { + return fmt.Errorf("缺少参数配置FUseOrgId"), nil + } + + if _info, ok := valMap["FUseOrgNo"]; ok { + utils.K3Obj.FUseOrgNo = _info + } else { + return fmt.Errorf("缺少参数配置FUseOrgNo"), nil + } + + //实例化目标数据库 + var slaves []*xorm.Engine + var master *xorm.Engine + master, err = xorm.NewEngine("mssql", targetDsn) + if err != nil { + return fmt.Errorf("链接目标库失败:" + err.Error()), nil + } + if err = master.Ping(); err != nil { + return fmt.Errorf("链接目标库失败:" + err.Error()), nil + } + master.SetTZLocation(utils.TimezoneLocation) + master.SetTZDatabase(utils.TimezoneLocation) + db.Eloquent, err = xorm.NewEngineGroup(master, slaves) + if err != nil { + return fmt.Errorf("目标库使用错误:" + err.Error()), nil + } + return nil, valMap +}