Browse Source

添加从备份库提取数据到生产库

master
zhangxin 2 years ago
parent
commit
c47f8e11ba
4 changed files with 179 additions and 0 deletions
  1. +2
    -0
      services/om/SerialOrder.service.go
  2. +150
    -0
      services/om/implments/SerialOrder.Logic.impl.go
  3. +25
    -0
      web/controllers/om/SerialOrder.rest.go
  4. +2
    -0
      web/controllers/om/om.go

+ 2
- 0
services/om/SerialOrder.service.go View File

@ -460,6 +460,8 @@ type SerialOrderService interface {
BreakUp(user *global.User, barcode string) (err error) BreakUp(user *global.User, barcode string) (err error)
// ReturnToFactoryWithoutRepair 返厂非线上返修 // ReturnToFactoryWithoutRepair 返厂非线上返修
ReturnToFactoryWithoutRepair(user *global.User, barcode string) (err error) ReturnToFactoryWithoutRepair(user *global.User, barcode string) (err error)
// ExtractArchiveData 从备份库提取工单数据到生产库
ExtractArchiveData(user *global.User, serialOrderId string) (err error)
} }
/****************************************************************************** /******************************************************************************


+ 150
- 0
services/om/implments/SerialOrder.Logic.impl.go View File

@ -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
} }

+ 25
- 0
web/controllers/om/SerialOrder.rest.go View File

@ -1299,6 +1299,31 @@ func RegisterGetProductTraceDataReport(party router.Party, path string, method f
// RegisterBreakUp 骨架拆解 // RegisterBreakUp 骨架拆解
func RegisterBreakUp(party router.Party, path string, method func(user *global.User, barcode string) (err error)) { func RegisterBreakUp(party router.Party, path string, method func(user *global.User, barcode string) (err error)) {
party.Post(path, func(ctx iris.Context) {
user, ok := jwts.ParseToken(ctx)
if !ok {
return
}
type Req struct {
Barcode string `json:"barcode"`
}
var data Req
if err := ctx.ReadJSON(&data); err != nil {
supports.Error(ctx, iris.StatusBadRequest, err.Error(), nil)
return
}
err := method(user, data.Barcode)
if err != nil {
supports.Error(ctx, iris.StatusBadRequest, err.Error(), nil)
return
}
supports.Ok(ctx, supports.OptionSuccess, nil)
})
}
// RegisterExtractArchiveData 从备份库提取工单数据到生产库
func RegisterExtractArchiveData(party router.Party, path string, method func(user *global.User, serialOrderId string) (err error) ) {
party.Post(path, func(ctx iris.Context) { party.Post(path, func(ctx iris.Context) {
user, ok := jwts.ParseToken(ctx) user, ok := jwts.ParseToken(ctx)
if !ok { if !ok {


+ 2
- 0
web/controllers/om/om.go View File

@ -237,6 +237,8 @@ func RegisterRoutes() {
RegisterBreakUp(serialorder, "/breakup", serviceOfSerialOrder.BreakUp) RegisterBreakUp(serialorder, "/breakup", serviceOfSerialOrder.BreakUp)
// serialOrder 座椅返厂不返修 // serialOrder 座椅返厂不返修
RegisterBreakUp(serialorder, "/returnfactorywithoutrepair", serviceOfSerialOrder.ReturnToFactoryWithoutRepair) RegisterBreakUp(serialorder, "/returnfactorywithoutrepair", serviceOfSerialOrder.ReturnToFactoryWithoutRepair)
// serialOrder 从备份库提取工单数据到生产库
RegisterExtractArchiveData(serialorder, "/extract", serviceOfSerialOrder.ExtractArchiveData)
// SerialOrderStatus的路由组 // SerialOrderStatus的路由组
serialorderstatus := party.Party("/serialorderstatus") serialorderstatus := party.Party("/serialorderstatus")


Loading…
Cancel
Save