|
|
@ -528,7 +528,7 @@ func (impl *ShipOrderServiceImplement) Update(user *models.Usertab, entities *[] |
|
|
|
* @Reference LAPP_GAAS_GFrame_BACKEND/services/jit/ShipOrderService.ScanCarPackOrders |
|
|
|
* |
|
|
|
******************************************************************************/ |
|
|
|
func (impl *ShipOrderServiceImplement) ScanCarPackOrders(user *models.Usertab, shipOrderId string, packOrderId string) (bool, error) { |
|
|
|
func (impl *ShipOrderServiceImplement) ScanCarPackOrders(user *models.Usertab, shipOrderId string, packOrderId string) (bool,string, error) { |
|
|
|
|
|
|
|
grmi.Log(user, "/services/jit/implments/ShipOrder.service.impl.go", "ScanCarPackOrders", "扫描ShipOrder") |
|
|
|
|
|
|
@ -536,9 +536,10 @@ func (impl *ShipOrderServiceImplement) ScanCarPackOrders(user *models.Usertab, s |
|
|
|
session := engine.NewSession() |
|
|
|
defer session.Close() |
|
|
|
|
|
|
|
IsClose := "doing" |
|
|
|
// add Begin() before any action
|
|
|
|
if err := session.Begin(); err != nil { |
|
|
|
return false, err |
|
|
|
return false,IsClose, err |
|
|
|
} |
|
|
|
packDao := logDal.NewPackOrderDAO(session, user.Pid, user.Userid) |
|
|
|
dao := dal.NewShipOrderDAO(session, user.Pid, user.Userid) |
|
|
@ -549,34 +550,34 @@ func (impl *ShipOrderServiceImplement) ScanCarPackOrders(user *models.Usertab, s |
|
|
|
shipInfo, err := dao.SelectOne(shipOrderId) |
|
|
|
if err != nil { |
|
|
|
session.Rollback() |
|
|
|
return false, err |
|
|
|
return false,IsClose, err |
|
|
|
} |
|
|
|
if shipInfo == nil { |
|
|
|
session.Rollback() |
|
|
|
return true, grmi.NewBusinessError("发运单信息不存在!") |
|
|
|
return true,IsClose, grmi.NewBusinessError("发运单信息不存在!") |
|
|
|
} |
|
|
|
packInfo, err := packDao.SelectOne(packOrderId) |
|
|
|
if err != nil { |
|
|
|
session.Rollback() |
|
|
|
return false, err |
|
|
|
return false,IsClose, err |
|
|
|
} |
|
|
|
if packInfo == nil { |
|
|
|
session.Rollback() |
|
|
|
return true, grmi.NewBusinessError("包装单信息不存在!") |
|
|
|
return true,IsClose, grmi.NewBusinessError("包装单信息不存在!") |
|
|
|
} |
|
|
|
if packInfo.Status != basmodel.WO_STATUS_FINISHED{ |
|
|
|
session.Rollback() |
|
|
|
return true, grmi.NewBusinessError("包装单状态未完成!") |
|
|
|
return true,IsClose, grmi.NewBusinessError("包装单状态未完成!") |
|
|
|
} |
|
|
|
//第二步:根据包装单信心,查询对应的发运单项信息
|
|
|
|
itemInfo, err := lstDao.SelectOne(shipOrderId, packInfo.MaterialId) |
|
|
|
if err != nil { |
|
|
|
session.Rollback() |
|
|
|
return false, err |
|
|
|
return false,IsClose, err |
|
|
|
} |
|
|
|
if itemInfo == nil { |
|
|
|
session.Rollback() |
|
|
|
return true, grmi.NewBusinessError("发运项信息不存在!") |
|
|
|
return true,IsClose, grmi.NewBusinessError("发运项信息不存在!") |
|
|
|
} |
|
|
|
//判断是否扫描过
|
|
|
|
packDatalist, err := dataDao.Select([]grmi.Predicate{ |
|
|
@ -584,11 +585,11 @@ func (impl *ShipOrderServiceImplement) ScanCarPackOrders(user *models.Usertab, s |
|
|
|
}, nil) |
|
|
|
if err != nil { |
|
|
|
session.Rollback() |
|
|
|
return false, err |
|
|
|
return false,IsClose, err |
|
|
|
} |
|
|
|
if len(packDatalist) > 0 { |
|
|
|
session.Rollback() |
|
|
|
return true, grmi.NewBusinessError("该包装单已经扫描过!") |
|
|
|
return true,IsClose, grmi.NewBusinessError("该包装单已经扫描过!") |
|
|
|
} |
|
|
|
//第三步:逻辑判断是否符合规则
|
|
|
|
actQty := utils.ValueToInt(packInfo.ActQty, 0) |
|
|
@ -600,14 +601,14 @@ func (impl *ShipOrderServiceImplement) ScanCarPackOrders(user *models.Usertab, s |
|
|
|
err = lstDao.UpdateOne(itemInfo) |
|
|
|
if err != nil { |
|
|
|
session.Rollback() |
|
|
|
return false, err |
|
|
|
return false,IsClose, err |
|
|
|
} |
|
|
|
|
|
|
|
//查询最后一条的pos
|
|
|
|
posInfo, err := dataDao.SelectLastPos(shipOrderId) |
|
|
|
if err != nil { |
|
|
|
session.Rollback() |
|
|
|
return false, err |
|
|
|
return false,IsClose, err |
|
|
|
} |
|
|
|
var pos int |
|
|
|
if posInfo == nil { |
|
|
@ -628,14 +629,14 @@ func (impl *ShipOrderServiceImplement) ScanCarPackOrders(user *models.Usertab, s |
|
|
|
err = dataDao.InsertOne(datalst) |
|
|
|
if err != nil { |
|
|
|
session.Rollback() |
|
|
|
return false, err |
|
|
|
return false,IsClose, err |
|
|
|
} |
|
|
|
shipInfo.ActualQty = (shipInfo.ActualQty + actQty) |
|
|
|
shipInfo.Status = basmodel.SHIP_ORDER_STATUS_RUNNING |
|
|
|
err = dao.UpdateOne(shipInfo) |
|
|
|
if err != nil { |
|
|
|
session.Rollback() |
|
|
|
return false, err |
|
|
|
return false,IsClose, err |
|
|
|
} |
|
|
|
} else if itemInfo.PlanQty == (itemInfo.ActualQty + actQty) { |
|
|
|
//满足关闭该项条件
|
|
|
@ -644,14 +645,14 @@ func (impl *ShipOrderServiceImplement) ScanCarPackOrders(user *models.Usertab, s |
|
|
|
err = lstDao.UpdateOne(itemInfo) |
|
|
|
if err != nil { |
|
|
|
session.Rollback() |
|
|
|
return false, err |
|
|
|
return false,IsClose, err |
|
|
|
} |
|
|
|
|
|
|
|
//查询最后一条的pos
|
|
|
|
posInfo, err := dataDao.SelectLastPos(shipOrderId) |
|
|
|
if err != nil { |
|
|
|
session.Rollback() |
|
|
|
return false, err |
|
|
|
return false,IsClose, err |
|
|
|
} |
|
|
|
var pos int |
|
|
|
if posInfo == nil { |
|
|
@ -672,7 +673,7 @@ func (impl *ShipOrderServiceImplement) ScanCarPackOrders(user *models.Usertab, s |
|
|
|
err = dataDao.InsertOne(datalst) |
|
|
|
if err != nil { |
|
|
|
session.Rollback() |
|
|
|
return false, err |
|
|
|
return false,IsClose, err |
|
|
|
} |
|
|
|
//判断是否已经全部扫描完毕,如果全部完毕,那么可以关闭发运单
|
|
|
|
items, err := lstDao.Select([]grmi.Predicate{ |
|
|
@ -686,21 +687,22 @@ func (impl *ShipOrderServiceImplement) ScanCarPackOrders(user *models.Usertab, s |
|
|
|
err = dao.UpdateOne(shipInfo) |
|
|
|
if err != nil { |
|
|
|
session.Rollback() |
|
|
|
return false, err |
|
|
|
return false,"doing", err |
|
|
|
} |
|
|
|
IsClose = "success" |
|
|
|
} else { |
|
|
|
shipInfo.ActualQty = (shipInfo.ActualQty + actQty) |
|
|
|
shipInfo.Status = basmodel.SHIP_ORDER_STATUS_RUNNING |
|
|
|
err = dao.UpdateOne(shipInfo) |
|
|
|
if err != nil { |
|
|
|
session.Rollback() |
|
|
|
return false, err |
|
|
|
return false,IsClose, err |
|
|
|
} |
|
|
|
} |
|
|
|
} else { |
|
|
|
session.Rollback() |
|
|
|
return true, grmi.NewBusinessError("该包装单零件数量大于需求零件!") |
|
|
|
return true,IsClose, grmi.NewBusinessError("该包装单零件数量大于需求零件!") |
|
|
|
} |
|
|
|
session.Commit() |
|
|
|
return true, nil |
|
|
|
return true,IsClose, nil |
|
|
|
} |