Browse Source

添加发运单子项回撤的功能

pull/174/head
zhangxin 3 years ago
parent
commit
fc55c65c1b
3 changed files with 115 additions and 1 deletions
  1. +66
    -1
      services/jit/implments/ShipOrder.service.impl.go
  2. +47
    -0
      web/controllers/jit/ShipOrder.rest.go
  3. +2
    -0
      web/controllers/jit/jit.go

+ 66
- 1
services/jit/implments/ShipOrder.service.impl.go View File

@ -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()


+ 47
- 0
web/controllers/jit/ShipOrder.rest.go View File

@ -691,4 +691,51 @@ func RegisterSelectShipOrderBySerialOrderId(party router.Party, path string, met
}
supports.Ok(ctx, supports.OptionSuccess, result)
})
}
/******************************************************************************
*
* @Function Name : RegisterSelectShipOrderBySerialOrderId
*-----------------------------------------------------------------------------
*
* @Description : 通过工单查询发运单
*
* @Function Parameters : 路由分组
*
* @Function Parameters : 路径
*
* @Function Parameters : 实际处理请求的方法
*
* @Author : zhangxin
*
* @Date : 2022-03-09
*
******************************************************************************/
func RegisterWithdrawShipOrderItem(party router.Party, path string, method func(user *global.User, shipOrderId string, pos int) error) {
party.Post(path, func(ctx iris.Context) {
user, ok := jwts.ParseToken(ctx)
if !ok {
return
}
type Req struct {
ShipOrderId string `json:"shipOrderId"`
Pos int `json:"pos"`
}
var data Req
if err := ctx.ReadJSON(&data); err != nil {
supports.Error(ctx, iris.StatusBadRequest, err.Error(), nil)
return
}
if data.ShipOrderId == "" || data.Pos == 0 {
supports.Error(ctx, iris.StatusBadRequest, "参数错误", nil)
return
}
err := method(user, data.ShipOrderId, data.Pos)
if err != nil {
supports.Error(ctx, iris.StatusBadRequest, err.Error(), nil)
return
}
supports.Ok(ctx, supports.OptionSuccess, nil)
})
}

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

@ -60,6 +60,8 @@ func RegisterRoutes() {
RegisterSelectShipOrderWithStatus(shiporder, "/selectwithstatus", serviceOfShipOrder.SelectWithStatus)
// shipOrder 通过工单ID查询发运单
RegisterSelectShipOrderBySerialOrderId(shiporder, "/selectbyserialorder", serviceOfShipOrder.SelectShipDataBySerialOrderId)
// shipOrder 通过工单ID查询发运单
RegisterWithdrawShipOrderItem(shiporder, "/withdrawitem", serviceOfShipOrder.WithdrawShipOrderItem)
// ShipOrderStatus的路由组
shiporderstatus := party.Party("/shiporderstatus")


Loading…
Cancel
Save