广汽安道拓Acura项目MES后台
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.
 
 

108 lines
3.0 KiB

package main
import (
dal "LAPP_ACURA_MOM_BACKEND/dao/om"
"LAPP_ACURA_MOM_BACKEND/global"
meta "LAPP_ACURA_MOM_BACKEND/meta/om"
model "LAPP_ACURA_MOM_BACKEND/models/om"
"fmt"
_ "github.com/denisenkom/go-mssqldb"
_ "github.com/go-sql-driver/mysql"
"github.com/go-xorm/xorm"
"github.com/spf13/viper"
"strings"
)
var config = new(Config)
type Config struct {
*DB `mapstructure:"db"`
*App `mapstructure:"app"`
}
type DB struct {
Host string `yaml:"host"`
Port int `yaml:"port"`
User string `yaml:"user"`
Password string `yaml:"password"`
Database string `yaml:"database"`
Mod string `yaml:"mod"`
}
type App struct {
Mod string `yaml:"mod"`
CustOrderId string `yaml:"custOrderId"`
StartSchedKey int `yaml:"startSchedKey"`
Step int `yaml:"step"`
PlantNr int `yaml:"plantNr"`
}
func InitConfig() (err error) {
viper.SetConfigName("repairSchedKey")
viper.SetConfigType("yaml")
viper.AddConfigPath(".")
if err = viper.ReadInConfig(); err != nil {
return
}
if err = viper.Unmarshal(config); err != nil {
return
}
return nil
}
func main() {
var err error
err = InitConfig()
if err != nil {
fmt.Println("初始化配置失败, 错误:", err)
return
}
driveSource := fmt.Sprintf("server=%s;database=%s;user id=%s;password=%s;port=%d;encrypt=disable",
config.DB.Host, config.DB.Database, config.DB.User, config.DB.Password, config.DB.Port)
Engine, err := xorm.NewEngine("mssql", driveSource)
if err != nil {
fmt.Println("连接数据库失败, 错误:", err)
return
}
if strings.ToLower(config.DB.Mod) == "debug" {
Engine.ShowSQL(true)
}
session := Engine.NewSession()
user := &global.User{
PlantNr: config.App.PlantNr,
UserId: "RepairSchedKey",
}
serialOrderDao := dal.NewSerialOrderDAO(session, user.PlantNr, user.UserId)
where := fmt.Sprintf("PlantNr = ? and CustOrderId = ? ")
args := []interface{}{config.App.PlantNr, config.App.CustOrderId}
serialOrderLi := make([]model.SerialOrder, 0)
err = session.Table("OM_SerialOrder").Where(where, args...).OrderBy(meta.SerialOrder_SchedKey.SortColumnName).Find(&serialOrderLi)
if err != nil {
fmt.Println("查询序列工单失败, 错误:", err)
return
}
if err = session.Begin(); err != nil {
fmt.Println("开启事务失败, 错误:" + err.Error())
return
}
for index, serialOrder := range serialOrderLi {
roginSchedKey := serialOrder.SchedKey
serialOrder.SchedKey = int64(config.App.StartSchedKey + 10*index)
if index != 0 {
serialOrder.PreSchedKey = int64(config.App.StartSchedKey + 10*(index-1))
}
err = serialOrderDao.UpdateOne(&serialOrder)
if err != nil {
fmt.Println("更新失败, 错误:"+err.Error(), "serialOrderId:", serialOrder.SerialOrderId)
_ = session.Rollback()
return
}
fmt.Println("处理完成工单ID:", serialOrder.SerialOrderId, "原schedKey:", roginSchedKey, "改为schedKey:", serialOrder.SchedKey)
}
if strings.ToLower(config.App.Mod) != "debug" {
_ = session.Commit()
} else {
_ = session.Rollback()
}
fmt.Println("执行完成")
}