Browse Source

修复生成300工厂回冲失败的问题

develop
zhangxin 1 year ago
parent
commit
cf49bc5fe4
2 changed files with 36 additions and 49 deletions
  1. +35
    -49
      etl_task/BackFlushPackOrderOtherPlant.go
  2. +1
    -0
      etl_task/GaasBackFlush.go

+ 35
- 49
etl_task/BackFlushPackOrderOtherPlant.go View File

@ -1,7 +1,6 @@
package main
import (
baseDal "LAPP_ACURA_MOM_BACKEND/dao/base"
omDal "LAPP_ACURA_MOM_BACKEND/dao/om"
"LAPP_ACURA_MOM_BACKEND/etl_task/model"
"LAPP_ACURA_MOM_BACKEND/grmi"
@ -10,7 +9,6 @@ import (
baseModel "LAPP_ACURA_MOM_BACKEND/models/base"
omModel "LAPP_ACURA_MOM_BACKEND/models/om"
"LAPP_ACURA_MOM_BACKEND/utils"
"errors"
"fmt"
_ "github.com/denisenkom/go-mssqldb"
_ "github.com/go-sql-driver/mysql"
@ -171,28 +169,33 @@ func main() {
acuraSession := acuraDB.NewSession()
defer acuraSession.Close()
serialOrderDao := omDal.NewSerialOrderDAO(acuraSession, plantNr, userId)
//nowStr := now.Format(grmi.DateTimeOutFormat)
daoArticle := baseDal.NewArticleDAO(acuraSession, plantNr, userId)
condition := fmt.Sprintf("%s = %s and %s = %s",
omMeta.SerialOrder_PlantNr.ColumnName, omMeta.SerialOrderStatus_PlantNr.ColumnName,
omMeta.SerialOrder_SerialOrderId.ColumnName, omMeta.SerialOrderStatus_SerialOrderId.ColumnName,
)
where := fmt.Sprintf("%s = ? and %s = ? and %s = ? and %s = ? and %s != ?",
omMeta.SerialOrder_PlantNr.ColumnName, omMeta.SerialOrder_BackFlushFlag.ColumnName,
omMeta.SerialOrder_GenerateFlag.ColumnName, omMeta.SerialOrderStatus_Status.ColumnName,
omMeta.SerialOrder_OrderType.ColumnName,
artCondition := fmt.Sprintf("%s = %s and %s = %s",
meta.Article_PlantNr.ColumnName, omMeta.SerialOrder_PlantNr.ColumnName,
meta.Article_ArtId.ColumnName, omMeta.SerialOrder_ArtId.ColumnName,
)
args := []interface{}{plantNr, 0, 0, baseModel.WO_STATUS_FINISHED, baseModel.ORDER_TYPE_PRE}
serialOrderModelLi := make([]omModel.VOmSerialorder, 0)
where := fmt.Sprintf("%s = %d and %s = %d and %s = %d and %s = %d and %s = %d and %s != '%s'",
omMeta.SerialOrder_PlantNr.ColumnName, plantNr, omMeta.SerialOrder_BackFlushFlag.ColumnName, 0,
omMeta.SerialOrder_GenerateFlag.ColumnName, 0, omMeta.SerialOrderStatus_Status.ColumnName, baseModel.WO_STATUS_FINISHED,
meta.Article_BackFlushItemToggle.ColumnName, 1, omMeta.SerialOrder_OrderType.ColumnName, baseModel.ORDER_TYPE_PRE,
)
type SerialOrderWithArt struct {
omModel.SerialOrder `xorm:"extends"`
omModel.SerialOrderStatus `xorm:"extends"`
baseModel.Article `xorm:"extends"`
}
serialOrderModelLi := make([]SerialOrderWithArt, 0)
err = acuraSession.Table(omMeta.SerialOrder.TableName).Join("INNER", omMeta.SerialOrderStatus.TableName, condition).
Where(where, args...).Find(&serialOrderModelLi)
Join("LEFT", meta.Article.TableName, artCondition).Where(where).Find(&serialOrderModelLi)
if err != nil {
lastSql, LastArgs := acuraSession.LastSQL()
fmt.Println(fmt.Sprintf("查询工单失败, Sql:%s, args:%v, 错误:%v", lastSql, LastArgs, err))
return
}
ArtMap := make(map[string]int)
serialOrderIds := make([]string, 0)
for _, serialOrderModel := range serialOrderModelLi {
if serialOrderModel.SerialOrder.LinkSerialOrderId != "" {
var serialOrder *omModel.SerialOrder
@ -223,40 +226,24 @@ func main() {
if alreadyBackFlush {
continue
}
serialOrderIds = append(serialOrderIds, serialOrderModel.SerialOrder.SerialOrderId)
_, exist := ArtMap[serialOrderModel.SerialOrder.ArtId]
if !exist {
ArtMap[serialOrderModel.SerialOrder.ArtId] = 1
} else {
ArtMap[serialOrderModel.SerialOrder.ArtId] += 1
}
}
if serialOrderModel.Article.ArtSpec3 == "" {
fmt.Println("未获取到ERP零件号, 物料ID:" + serialOrderModel.Article.ArtId)
return
}
_, exist := ArtMap[serialOrderModel.SerialOrder.ArtId]
if !exist {
ArtMap[serialOrderModel.Article.ArtSpec3] = 1
} else {
ArtMap[serialOrderModel.Article.ArtSpec3] += 1
}
}
if len(serialOrderIds) == 0 {
if len(serialOrderModelLi) == 0 {
fmt.Println("OK")
return
}
writeLi := make([]string, 0, len(ArtMap))
for artId, qty := range ArtMap {
articleLi := make([]baseModel.Article, 0)
articleLi, err = daoArticle.Select([]grmi.Predicate{meta.Article_ArtId.NewPredicate(grmi.Equal, artId)}, nil)
if err != nil {
lastSql, LastArgs := acuraSession.LastSQL()
fmt.Println(fmt.Sprintf("查询物料失败, Sql:%s, args:%v, 错误:%v", lastSql, LastArgs, err))
return
}
if len(articleLi) == 0 {
fmt.Println("物料不存在, 物料ID:" + artId)
return
}
article := articleLi[0]
if !article.BackFlushItemToggle {
continue
}
qadArtId := article.ArtSpec3
if qadArtId == "" {
fmt.Println("未获取到ERP零件号, 物料ID:" + artId)
return
}
index6 := fmt.Sprintf("%02d%02d%d", int(month), day, 3600*hour+60*minute+second)
index7 := fmt.Sprintf("%02d%02d%d", int(month), day, 3600*hour+60*minute+second)
index9 := tempIndex9 + fmt.Sprintf("%d%02d%02d%d", year, int(month), day, 3600*hour+60*minute+second)
@ -265,7 +252,7 @@ func main() {
index1,
index2,
index3,
qadArtId,
artId,
index5,
index6,
index7,
@ -288,15 +275,14 @@ func main() {
_ = acuraSession.Commit()
}
}()
var count int64
count, err = serialOrderDao.UpdateBackFlushFlag(serialOrderIds)
sql := fmt.Sprintf(`update %s set %s = 1 from %s INNER JOIN %s on %s LEFT JOIN %s on %s where %s`,
omMeta.SerialOrder.TableName, omMeta.SerialOrder_BackFlushFlag.Name, omMeta.SerialOrder.TableName,
omMeta.SerialOrderStatus.TableName, condition, meta.Article.TableName, artCondition, where,
)
_, err = acuraSession.Exec(sql)
if err != nil {
fmt.Println("更新工单回冲状态失败, error:" + err.Error())
return
}
if int(count) != len(serialOrderIds) {
err = errors.New("更新工单回冲状态数量和查询的数量不一致")
fmt.Println("更新工单回冲状态数量和查询的数量不一致, 更新数量:" + strconv.Itoa(int(count)) + ", 查询数量:" + strconv.Itoa(len(serialOrderIds)))
lastSql, LastArgs := acuraSession.LastSQL()
fmt.Println(fmt.Sprintf("更新工单回冲状态失败, Sql:%s, args:%v, 错误:%v", lastSql, LastArgs, err))
return
}
//OpenFile读取文件,不存在时则创建,使用追加模式


+ 1
- 0
etl_task/GaasBackFlush.go View File

@ -0,0 +1 @@
package main

Loading…
Cancel
Save