|
|
@ -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读取文件,不存在时则创建,使用追加模式
|
|
|
|