|
|
@ -1820,75 +1820,91 @@ 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, 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, |
|
|
|
for _, shipOrderData := range shipOrderDataLi { |
|
|
|
packOrderId := shipOrderData.PackOrderId |
|
|
|
packOrderStatus, err := packOrderStatusDao.SelectOne(packOrderId) |
|
|
|
if err != nil { |
|
|
|
_ = session.Rollback() |
|
|
|
return grmi.NewBusinessError("查询发运单状态数据失败,错误:" + err.Error()) |
|
|
|
} |
|
|
|
err = packOrderStatusHistoryDao.InsertOne(&packOrderStatusHistory) |
|
|
|
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, packOrderId) |
|
|
|
if err != nil { |
|
|
|
_ = session.Rollback() |
|
|
|
return grmi.NewBusinessError("写入包装单状态变更历史失败, 错误:" + err.Error()) |
|
|
|
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, |
|
|
|
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 = packOrderStatusHistoryDao.InsertOne(&packOrderStatusHistory) |
|
|
|
err = packOrderStatusDao.UpdateOne(packOrderStatus) |
|
|
|
if err != nil { |
|
|
|
_ = session.Rollback() |
|
|
|
return grmi.NewBusinessError("写入包装单状态变更历史失败, 错误:" + err.Error()) |
|
|
|
return grmi.NewBusinessError("更新包装单状态失败, 错误:" + err.Error()) |
|
|
|
} |
|
|
|
packOrderStatus.LoadStatus = model.PACK_STATUS_PLANNED |
|
|
|
} |
|
|
|
err = packOrderStatusDao.UpdateOne(packOrderStatus) |
|
|
|
shipOrder.ActQty -= shipOrderItem.ActQty |
|
|
|
err = shipOrderDao.UpdateOne(shipOrder) |
|
|
|
if err != nil { |
|
|
|
_ = session.Rollback() |
|
|
|
return grmi.NewBusinessError("更新包装单状态失败, 错误:" + err.Error()) |
|
|
|
return grmi.NewBusinessError("更新发运单数据失败, 错误:" + err.Error()) |
|
|
|
} |
|
|
|
shipOrderItem.Status = model.SHIP_STATUS_PLANNED |
|
|
|
shipOrderItem.ActQty-- |
|
|
|
err = shipOrderItemDao.UpdateOne(shipOrderItem) |
|
|
|
if err != nil { |
|
|
|
_ = session.Rollback() |
|
|
|
return grmi.NewBusinessError("更新发运单子项数据失败, 错误:" + err.Error()) |
|
|
|
if shipOrder.ShipType == model.SHIP_TYPE_ADVANCE && shipOrder.ShipTemplateId == "" { |
|
|
|
err = shipOrderItemDao.DeleteOne(shipOrderItem.ShipOrderId, shipOrderItem.Pos) |
|
|
|
if err != nil { |
|
|
|
_ = session.Rollback() |
|
|
|
return grmi.NewBusinessError("删除发运单子项失败, 错误:" + err.Error()) |
|
|
|
} |
|
|
|
} else { |
|
|
|
shipOrderItem.Status = model.SHIP_STATUS_PLANNED |
|
|
|
shipOrderItem.ActQty = 0 |
|
|
|
err = shipOrderItemDao.UpdateOne(shipOrderItem) |
|
|
|
if err != nil { |
|
|
|
_ = session.Rollback() |
|
|
|
return grmi.NewBusinessError("更新发运单子项数据失败, 错误:" + err.Error()) |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
_ = session.Commit() |
|
|
|
return nil |
|
|
|
} |