|
|
@ -1682,9 +1682,19 @@ func (impl *ShipOrderServiceImplement) WithdrawShipOrderItem(user *global.User, |
|
|
|
engine := db.Eloquent.Master() |
|
|
|
session := engine.NewSession() |
|
|
|
defer session.Close() |
|
|
|
shipOrderDao := dal.NewShipOrderDAO(session, user.PlantNr, user.UserId) |
|
|
|
shipOrderItemDao := dal.NewShipOrderItemLstDAO(session, user.PlantNr, user.UserId) |
|
|
|
shipOrderStatusDao := dal.NewShipOrderStatusDAO(session, user.PlantNr, user.UserId) |
|
|
|
shipOrderDataDao := dal.NewShipOrderDataLstDAO(session, user.PlantNr, user.UserId) |
|
|
|
packOrderStatusDao := dal.NewPackOrderStatusDAO(session, user.PlantNr, user.UserId) |
|
|
|
packOrderStatusHistoryDao := dal.NewPackOrderStatusHistoryDAO(session, user.PlantNr, user.UserId) |
|
|
|
shipOrder, err := shipOrderDao.SelectOne(shipOrderId) |
|
|
|
if err != nil { |
|
|
|
return grmi.NewBusinessError("查询发运单失败") |
|
|
|
} |
|
|
|
if shipOrder == nil { |
|
|
|
return grmi.NewBusinessError("发运单不存在") |
|
|
|
} |
|
|
|
shipOrderStatus, err := shipOrderStatusDao.SelectOne(shipOrderId) |
|
|
|
if err != nil { |
|
|
|
return grmi.NewBusinessError("查询发运单数据失败, 错误:" + err.Error()) |
|
|
@ -1712,15 +1722,70 @@ func (impl *ShipOrderServiceImplement) WithdrawShipOrderItem(user *global.User, |
|
|
|
if len(shipOrderDataLi) == 0 { |
|
|
|
return grmi.NewBusinessError("发运单数据项不存在") |
|
|
|
} |
|
|
|
packOrderId := shipOrderDataLi[0].PackOrderId |
|
|
|
packOrderStatus, err := packOrderStatusDao.SelectOne(packOrderId) |
|
|
|
if err != nil { |
|
|
|
_ = session.Rollback() |
|
|
|
return grmi.NewBusinessError("查询发运单状态数据失败,错误:" + err.Error()) |
|
|
|
} |
|
|
|
if packOrderStatus == nil { |
|
|
|
_ = session.Rollback() |
|
|
|
return grmi.NewBusinessError("未查询到发运单状态数据, 发运单ID:" + packOrderId) |
|
|
|
} |
|
|
|
maxPos, err := packOrderStatusHistoryDao.GetMaxPos(packOrderId) |
|
|
|
if err != nil { |
|
|
|
return grmi.NewBusinessError("查询包装单状态变更历史数据失败, 错误:" + err.Error()) |
|
|
|
} |
|
|
|
if err = session.Begin(); err != nil { |
|
|
|
return grmi.NewBusinessError("开启事务失败, 错误:" + err.Error()) |
|
|
|
} |
|
|
|
err = shipOrderDataDao.DeleteOne(shipOrderId, shipOrderDataLi[0].PackOrderId) |
|
|
|
|
|
|
|
err = shipOrderDataDao.DeleteOne(shipOrderId, packOrderId) |
|
|
|
if err != nil { |
|
|
|
_ = session.Rollback() |
|
|
|
return grmi.NewBusinessError("删除发运单数据项失败, 错误:" + err.Error()) |
|
|
|
} |
|
|
|
|
|
|
|
if shipOrder.ShipType == model.SHIP_TYPE_FORMAL { |
|
|
|
packOrderStatusHistory := model.PackOrderStatusHistory{ |
|
|
|
PackOrderId: packOrderId, |
|
|
|
Pos: maxPos+1, |
|
|
|
StatusChangeType: model.SHIP_STATUS_CHANGE_TYPE_SHIP, |
|
|
|
FromStatus: packOrderStatus.ShipStatus, |
|
|
|
ToStatus: model.PACK_STATUS_PLANNED, |
|
|
|
ChangeTime: grmi.DateTime(time.Now()), |
|
|
|
TriggerPara1: model.SHIP_TYPE_FORMAL, |
|
|
|
} |
|
|
|
err = packOrderStatusHistoryDao.InsertOne(&packOrderStatusHistory) |
|
|
|
if err != nil { |
|
|
|
_ = session.Rollback() |
|
|
|
return grmi.NewBusinessError("写入包装单状态变更历史失败, 错误:" + err.Error()) |
|
|
|
} |
|
|
|
packOrderStatus.ShipStatus = model.PACK_STATUS_PLANNED |
|
|
|
} else { |
|
|
|
packOrderStatusHistory := model.PackOrderStatusHistory{ |
|
|
|
PackOrderId: packOrderId, |
|
|
|
Pos: maxPos+1, |
|
|
|
StatusChangeType: model.SHIP_STATUS_CHANGE_TYPE_SHIP, |
|
|
|
FromStatus: packOrderStatus.LoadStatus, |
|
|
|
ToStatus: model.PACK_STATUS_PLANNED, |
|
|
|
ChangeTime: grmi.DateTime(time.Now()), |
|
|
|
TriggerPara1: model.SHIP_TYPE_ADVANCE, |
|
|
|
} |
|
|
|
err = packOrderStatusHistoryDao.InsertOne(&packOrderStatusHistory) |
|
|
|
if err != nil { |
|
|
|
_ = session.Rollback() |
|
|
|
return grmi.NewBusinessError("写入包装单状态变更历史失败, 错误:" + err.Error()) |
|
|
|
} |
|
|
|
packOrderStatus.LoadStatus = model.PACK_STATUS_PLANNED |
|
|
|
} |
|
|
|
err = packOrderStatusDao.UpdateOne(packOrderStatus) |
|
|
|
if err != nil { |
|
|
|
_ = session.Rollback() |
|
|
|
return grmi.NewBusinessError("更新包装单状态失败, 错误:" + err.Error()) |
|
|
|
} |
|
|
|
shipOrderItem.Status = model.SHIP_STATUS_PLANNED |
|
|
|
shipOrderItem.ActQty-- |
|
|
|
err = shipOrderItemDao.UpdateOne(shipOrderItem) |
|
|
|
if err != nil { |
|
|
|
_ = session.Rollback() |
|
|
|