package main import ( meta "LAPP_ACURA_MOM_BACKEND/meta/om" model "LAPP_ACURA_MOM_BACKEND/models/om" "fmt" "github.com/go-xorm/xorm" "log" ) func main() { sourceDsn := fmt.Sprintf("server=%s;database=%s;user id=%s;password=%s;port=%d;encrypt=disable", "127.0.0.1", "LAPP_ACURA_MES4", "sa", "Start12345", 1433) sourceEngine, err := xorm.NewEngine("mssql", sourceDsn) if err != nil { log.Fatalln("初始化源数据库失败", err) } targetDsn := fmt.Sprintf("server=%s;database=%s;user id=%s;password=%s;port=%d;encrypt=disable", "10.122.64.96", "LAPP_ACURA_MES3", "sa", "Start12345", 1433) targetEngine, err := xorm.NewEngine("mssql", targetDsn) if err != nil { log.Fatalln("初始化目标数据库失败", err) } sourceSession := sourceEngine.NewSession() defer sourceSession.Close() targetSession := targetEngine.NewSession() defer targetSession.Close() //sourceRecvDataDao := dal.NewSerialOrderOPDetailRecvDataLstDAO(sourceSession, 100, "RepairData") //sourceRecvDataDao := dal.NewSerialOrderOPDetailRecvDataLstDAO(targetSession, 100, "RepairData") //sourceOnlyBarcodeDao := dal.NewSerialOrderOnlyBarcodeRecLstDAO(sourceSession, 100, "RepairData") //targetOnlyBarcodeDao := dal.NewSerialOrderOnlyBarcodeRecLstDAO(targetSession, 100, "RepairData") where := fmt.Sprintf("%s > ?", meta.SerialOrderOPDetailRecvDataLst_CreateTime.Name) allRecvData := make([]model.SerialOrderOPDetailRecvDataLst, 0) err = sourceSession.Table(meta.SerialOrderOPDetailRecvDataLst.TableName).Where(where, "2022-10-01 00:00:00"). OrderBy(meta.SerialOrderOPDetailRecvDataLst_SerialOrderId.Name). OrderBy(meta.SerialOrderOPDetailRecvDataLst_PO.Name). OrderBy(meta.SerialOrderOPDetailRecvDataLst_StepNo.Name). OrderBy(meta.SerialOrderOPDetailRecvDataLst_OriginPos.Name).Find(&allRecvData) if err != nil { log.Fatalln("查询源recvData失败,错误:" + err.Error()) } fmt.Println("开始处理RecvData") var ok bool for _, item := range allRecvData { where = fmt.Sprintf("%s = ? and %s = ? and %s = ? and %s = ?", meta.SerialOrderOPDetailRecvDataLst_SerialOrderId.Name, meta.SerialOrderOPDetailRecvDataLst_PO.Name, meta.SerialOrderOPDetailRecvDataLst_StepNo.Name, meta.SerialOrderOPDetailRecvDataLst_OriginPos.Name, ) var recvData model.SerialOrderOPDetailRecvDataLst ok, err = targetSession.Table(meta.SerialOrderOPDetailRecvDataLst.TableName).Where(where, item.SerialOrderId, item.PO, item.StepNo, item.OriginPos).Get(&recvData) if err != nil { fmt.Println("查询目标数据recvData失败, error:" + err.Error()) return } if ok { fmt.Println("忽略") continue } fmt.Println("插入RecvData", item) newItem := item newItem.Pos = 0 _, err = targetSession.Table(meta.SerialOrderOPDetailRecvDataLst.TableName).InsertOne(&newItem) if err != nil { fmt.Println("写入目标数据recvData失败, error:" + err.Error()) return } } where = fmt.Sprintf("%s > ?", meta.SerialOrderOnlyBarcodeRecLst_CreateTime.Name) allBarcodeLi := make([]model.SerialOrderOnlyBarcodeRecLst, 0) err = sourceSession.Table(meta.SerialOrderOnlyBarcodeRecLst.TableName).Where(where, "2022-10-01 00:00:00"). OrderBy(meta.SerialOrderOnlyBarcodeRecLst_SerialOrderId.Name). OrderBy(meta.SerialOrderOnlyBarcodeRecLst_PO.Name). OrderBy(meta.SerialOrderOnlyBarcodeRecLst_WorkPlaceNr.Name). OrderBy(meta.SerialOrderOnlyBarcodeRecLst_Barcode.Name).Find(&allBarcodeLi) if err != nil { log.Fatalln("查询源onlyBarcode失败,错误:" + err.Error()) } fmt.Println("开始处理OnlyBarcode") for _, item := range allBarcodeLi { where = fmt.Sprintf("%s = ? and %s = ? and %s = ? and %s = ?", meta.SerialOrderOnlyBarcodeRecLst_SerialOrderId.Name, meta.SerialOrderOnlyBarcodeRecLst_PO.Name, meta.SerialOrderOnlyBarcodeRecLst_WorkPlaceNr.Name, meta.SerialOrderOnlyBarcodeRecLst_Barcode.Name, ) var onlyBarcode model.SerialOrderOnlyBarcodeRecLst ok, err = targetSession.Table(meta.SerialOrderOnlyBarcodeRecLst.TableName).Where(where, item.SerialOrderId, item.PO, item.WorkPlaceNr, item.Barcode).Get(&onlyBarcode) if err != nil { fmt.Println("查询目标数据onlyBarcode失败, error:" + err.Error()) return } if ok { fmt.Println("忽略") continue } fmt.Println("插入onlyBarcode", item) newItem := item newItem.DetailId = 0 _, err = targetSession.Table(meta.SerialOrderOnlyBarcodeRecLst.TableName).InsertOne(&newItem) if err != nil { fmt.Println("写入目标数据OnlyBarcode失败, error:" + err.Error()) return } } }