|
@ -692,4 +692,154 @@ func (impl *SerialOrderServiceImplement) ReturnToFactoryWithoutRepair(user *glob |
|
|
return grmi.NewBusinessError("更新工单包装单状态失败, 错误:" + err.Error()) |
|
|
return grmi.NewBusinessError("更新工单包装单状态失败, 错误:" + err.Error()) |
|
|
} |
|
|
} |
|
|
return nil |
|
|
return nil |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// ExtractArchiveData 从备份库提取工单数据到生产库
|
|
|
|
|
|
func (impl *SerialOrderServiceImplement) ExtractArchiveData(user *global.User, serialOrderId string) (err error) { |
|
|
|
|
|
engine := db.Eloquent.Master() |
|
|
|
|
|
session := engine.NewSession() |
|
|
|
|
|
defer session.Close() |
|
|
|
|
|
slaveEngine := db.Eloquent.Slaves()[3] |
|
|
|
|
|
slaveSession := slaveEngine.NewSession() |
|
|
|
|
|
defer slaveSession.Close() |
|
|
|
|
|
orderDao := dal.NewSerialOrderDAO(session, user.PlantNr, user.UserId) |
|
|
|
|
|
slaveOrderDao := dal.NewSerialOrderDAO(slaveSession, user.PlantNr, user.UserId) |
|
|
|
|
|
statusDao := dal.NewSerialOrderStatusDAO(session, user.PlantNr, user.UserId) |
|
|
|
|
|
slaveStatusDao := dal.NewSerialOrderStatusDAO(slaveSession, user.PlantNr, user.UserId) |
|
|
|
|
|
poDao := dal.NewSerialOrderPOLstDAO(session, user.PlantNr, user.UserId) |
|
|
|
|
|
slavePoDao := dal.NewSerialOrderPOLstDAO(slaveSession, user.PlantNr, user.UserId) |
|
|
|
|
|
stepDao := dal.NewSerialOrderStepLstDAO(session, user.PlantNr, user.UserId) |
|
|
|
|
|
slaveStepDao := dal.NewSerialOrderStepLstDAO(slaveSession, user.PlantNr, user.UserId) |
|
|
|
|
|
opDetailDao := dal.NewSerialOrderOPDetailDAO(session, user.PlantNr, user.UserId) |
|
|
|
|
|
slaveOpDetailDao := dal.NewSerialOrderOPDetailDAO(slaveSession, user.PlantNr, user.UserId) |
|
|
|
|
|
serialOrder, err := orderDao.SelectOne(serialOrderId) |
|
|
|
|
|
if err != nil { |
|
|
|
|
|
return grmi.NewBusinessError("从生产库查询工单失败,错误:" + err.Error()) |
|
|
|
|
|
} |
|
|
|
|
|
if serialOrder != nil { |
|
|
|
|
|
return grmi.NewBusinessError("工单数据当前存在于主库中") |
|
|
|
|
|
} |
|
|
|
|
|
serialOrder, err = slaveOrderDao.SelectOne(serialOrderId) |
|
|
|
|
|
if err != nil { |
|
|
|
|
|
return grmi.NewBusinessError("从备份库查询工单失败, 错误:" + err.Error()) |
|
|
|
|
|
} |
|
|
|
|
|
if serialOrder == nil { |
|
|
|
|
|
return grmi.NewBusinessError("工单数据不存在于主库和备份库中") |
|
|
|
|
|
} |
|
|
|
|
|
if serialOrder.GenerateFlag { |
|
|
|
|
|
return grmi.NewBusinessError("该工单条码已失效, 请扫描最新工单条码") |
|
|
|
|
|
} |
|
|
|
|
|
serialOrderLi, err := orderDao.Select([]grmi.Predicate{ |
|
|
|
|
|
meta.SerialOrder_OriginSerialOrderId.NewPredicate(grmi.Equal, serialOrderId), |
|
|
|
|
|
}, nil) |
|
|
|
|
|
if err != nil { |
|
|
|
|
|
return grmi.NewBusinessError("查询工单关联的原始工单失败, 错误:" + err.Error()) |
|
|
|
|
|
} |
|
|
|
|
|
recoverSerialOrderLi := append(serialOrderLi, *serialOrder) |
|
|
|
|
|
serialOrderIdLi := make([]interface{}, 0, len(recoverSerialOrderLi)) |
|
|
|
|
|
for index, order := range recoverSerialOrderLi { |
|
|
|
|
|
order.ShipBackFlush = false |
|
|
|
|
|
recoverSerialOrderLi[index] = order |
|
|
|
|
|
serialOrderIdLi = append(serialOrderIdLi, order.SerialOrderId) |
|
|
|
|
|
} |
|
|
|
|
|
statusLi, err := slaveStatusDao.Select([]grmi.Predicate{ |
|
|
|
|
|
meta.SerialOrderStatus_SerialOrderId.NewPredicate(grmi.Include, serialOrderIdLi...), |
|
|
|
|
|
}, nil) |
|
|
|
|
|
if err != nil { |
|
|
|
|
|
return grmi.NewBusinessError("查询工单状态失败, 错误:" + err.Error()) |
|
|
|
|
|
} |
|
|
|
|
|
poLi, err := slavePoDao.Select([]grmi.Predicate{ |
|
|
|
|
|
meta.SerialOrderPOLst_SerialOrderId.NewPredicate(grmi.Include, serialOrderIdLi...), |
|
|
|
|
|
}, nil) |
|
|
|
|
|
if err != nil { |
|
|
|
|
|
return grmi.NewBusinessError("查询工单工序失败, 错误:" + err.Error()) |
|
|
|
|
|
} |
|
|
|
|
|
stepLi, err := slaveStepDao.Select([]grmi.Predicate{ |
|
|
|
|
|
meta.SerialOrderStepLst_SerialOrderId.NewPredicate(grmi.Include, serialOrderIdLi...), |
|
|
|
|
|
}, nil) |
|
|
|
|
|
if err != nil { |
|
|
|
|
|
return grmi.NewBusinessError("查询工单工步失败, 错误:" + err.Error()) |
|
|
|
|
|
} |
|
|
|
|
|
opDetailLi, err := slaveOpDetailDao.Select([]grmi.Predicate{ |
|
|
|
|
|
meta.SerialOrderOPDetail_SerialOrderId.NewPredicate(grmi.Include, serialOrderIdLi...), |
|
|
|
|
|
}, []grmi.Field{meta.SerialOrderOPDetail_DetailId}) |
|
|
|
|
|
if err != nil { |
|
|
|
|
|
return grmi.NewBusinessError("查询工单工艺失败, 错误:" + err.Error()) |
|
|
|
|
|
} |
|
|
|
|
|
for index, opDetail := range opDetailLi { |
|
|
|
|
|
opDetail.DetailId = 0 |
|
|
|
|
|
opDetailLi[index] = opDetail |
|
|
|
|
|
} |
|
|
|
|
|
if err = session.Begin(); err != nil { |
|
|
|
|
|
return grmi.NewBusinessError("开启事务失败") |
|
|
|
|
|
} |
|
|
|
|
|
defer func() { |
|
|
|
|
|
if err != nil { |
|
|
|
|
|
_ = session.Rollback() |
|
|
|
|
|
} else { |
|
|
|
|
|
_ = session.Commit() |
|
|
|
|
|
} |
|
|
|
|
|
}() |
|
|
|
|
|
if err = slaveSession.Begin(); err != nil { |
|
|
|
|
|
return grmi.NewBusinessError("开启事务失败") |
|
|
|
|
|
} |
|
|
|
|
|
defer func() { |
|
|
|
|
|
if err != nil { |
|
|
|
|
|
_ = slaveSession.Rollback() |
|
|
|
|
|
} else { |
|
|
|
|
|
_ = slaveSession.Commit() |
|
|
|
|
|
} |
|
|
|
|
|
}() |
|
|
|
|
|
err = orderDao.Insert(&recoverSerialOrderLi) |
|
|
|
|
|
if err != nil { |
|
|
|
|
|
return grmi.NewBusinessError("恢复到生产库失败, 错误:" + err.Error()) |
|
|
|
|
|
} |
|
|
|
|
|
err = statusDao.Insert(&statusLi) |
|
|
|
|
|
if err != nil { |
|
|
|
|
|
return grmi.NewBusinessError("恢复到生产库失败, 错误:" + err.Error()) |
|
|
|
|
|
} |
|
|
|
|
|
err = poDao.Insert(&poLi) |
|
|
|
|
|
if err != nil { |
|
|
|
|
|
return grmi.NewBusinessError("恢复到生产库失败, 错误:" + err.Error()) |
|
|
|
|
|
} |
|
|
|
|
|
err = stepDao.Insert(&stepLi) |
|
|
|
|
|
if err != nil { |
|
|
|
|
|
return grmi.NewBusinessError("恢复到生产库失败, 错误:" + err.Error()) |
|
|
|
|
|
} |
|
|
|
|
|
err = opDetailDao.Insert(&opDetailLi) |
|
|
|
|
|
if err != nil { |
|
|
|
|
|
return grmi.NewBusinessError("恢复到生产库失败, 错误:" + err.Error()) |
|
|
|
|
|
} |
|
|
|
|
|
err = slaveOrderDao.DeleteWhere([]grmi.Predicate{ |
|
|
|
|
|
meta.SerialOrder_SerialOrderId.NewPredicate(grmi.Include, serialOrderIdLi...), |
|
|
|
|
|
}) |
|
|
|
|
|
if err != nil { |
|
|
|
|
|
return grmi.NewBusinessError("删除备份库数据失败, 错误:" + err.Error()) |
|
|
|
|
|
} |
|
|
|
|
|
err = slaveStatusDao.DeleteWhere([]grmi.Predicate{ |
|
|
|
|
|
meta.SerialOrderStatus_SerialOrderId.NewPredicate(grmi.Include, serialOrderIdLi...), |
|
|
|
|
|
}) |
|
|
|
|
|
if err != nil { |
|
|
|
|
|
return grmi.NewBusinessError("删除备份库数据失败, 错误:" + err.Error()) |
|
|
|
|
|
} |
|
|
|
|
|
err = slavePoDao.DeleteWhere([]grmi.Predicate{ |
|
|
|
|
|
meta.SerialOrderPOLst_SerialOrderId.NewPredicate(grmi.Include, serialOrderIdLi...), |
|
|
|
|
|
}) |
|
|
|
|
|
if err != nil { |
|
|
|
|
|
return grmi.NewBusinessError("删除备份库数据失败, 错误:" + err.Error()) |
|
|
|
|
|
} |
|
|
|
|
|
err = slaveStepDao.DeleteWhere([]grmi.Predicate{ |
|
|
|
|
|
meta.SerialOrderStepLst_SerialOrderId.NewPredicate(grmi.Include, serialOrderIdLi...), |
|
|
|
|
|
}) |
|
|
|
|
|
if err != nil { |
|
|
|
|
|
return grmi.NewBusinessError("删除备份库数据失败, 错误:" + err.Error()) |
|
|
|
|
|
} |
|
|
|
|
|
err = slaveOpDetailDao.DeleteWhere([]grmi.Predicate{ |
|
|
|
|
|
meta.SerialOrderOPDetail_SerialOrderId.NewPredicate(grmi.Include, serialOrderIdLi...), |
|
|
|
|
|
}) |
|
|
|
|
|
if err != nil { |
|
|
|
|
|
return grmi.NewBusinessError("删除备份库数据失败, 错误:" + err.Error()) |
|
|
|
|
|
} |
|
|
|
|
|
return nil |
|
|
} |
|
|
} |