Browse Source

添加特殊发运的功能

feature_specialship
zhangxin 2 years ago
parent
commit
53b364ea1d
5 changed files with 122 additions and 25 deletions
  1. +3
    -2
      models/jit/const.go
  2. +17
    -0
      services/jit/ShipOrder.service.go
  3. +64
    -23
      services/jit/implments/ShipOrder.service.impl.go
  4. +36
    -0
      web/controllers/jit/ShipOrder.rest.go
  5. +2
    -0
      web/controllers/jit/jit.go

+ 3
- 2
models/jit/const.go View File

@ -7,8 +7,9 @@ const (
MONGO_USER_SHIP_DATABASE = "UserShipDB" MONGO_USER_SHIP_DATABASE = "UserShipDB"
MONGOD_USER_SHIP_COLLECTION = "UserShipCollection" MONGOD_USER_SHIP_COLLECTION = "UserShipCollection"
SHIP_TYPE_ADVANCE = "ADVANCE"
SHIP_TYPE_FORMAL = "FORMAL"
SHIP_TYPE_ADVANCE = "ADVANCE" // 预发运
SHIP_TYPE_FORMAL = "FORMAL" // 正式发运
SHIP_TYPE_SPECIAL = "SPECIAL" // 特殊发运
// 包装单状态变更类型 // 包装单状态变更类型
PACK_STATUS_CHANGE_TYPE_SHIP = "SHIP" PACK_STATUS_CHANGE_TYPE_SHIP = "SHIP"


+ 17
- 0
services/jit/ShipOrder.service.go View File

@ -357,6 +357,23 @@ type ShipOrderService interface {
* *
******************************************************************************/ ******************************************************************************/
WithdrawShipOrderItem(user *global.User, shipOrderId string, pos int) error WithdrawShipOrderItem(user *global.User, shipOrderId string, pos int) error
/******************************************************************************
*
* @Function Name : CreateSpecialShipOrder
*-----------------------------------------------------------------------------
*
* @Description : 创建特殊发运单
*
* @Function Parameters : 当前访问人员信息
*
* @Return Value : 执行时发生的错误
*
* @Author : zhangxin
*
* @Date : 2022-05-13
*
******************************************************************************/
CreateSpecialShipOrder(user *global.User) error
} }
/****************************************************************************** /******************************************************************************


+ 64
- 23
services/jit/implments/ShipOrder.service.impl.go View File

@ -763,6 +763,17 @@ func (impl *ShipOrderServiceImplement) ScanBarCode(user *global.User, barCode st
shipOrderStatusDao := dal.NewShipOrderStatusDAO(session, user.PlantNr, user.UserId) shipOrderStatusDao := dal.NewShipOrderStatusDAO(session, user.PlantNr, user.UserId)
shipOrderStatusHistoryDao := dal.NewShipOrderStatusHistoryDAO(session, user.PlantNr, user.UserId) shipOrderStatusHistoryDao := dal.NewShipOrderStatusHistoryDAO(session, user.PlantNr, user.UserId)
workPlaceConfigDao := baseDal.NewWorkPlaceConfigDAO(session, user.PlantNr, user.UserId) workPlaceConfigDao := baseDal.NewWorkPlaceConfigDAO(session, user.PlantNr, user.UserId)
// 3. 校验发运单数据
shipOrder, err := shipOrderDao.SelectOneWithStatus(shipOrderId)
if err != nil {
return nil, grmi.NewBusinessError("查询发运单数据失败, error:" + err.Error())
}
if shipOrder == nil {
return nil, grmi.NewBusinessError("该发运单不存在, 发运单ID:" + shipOrderId)
}
if shipOrder.ShipOrderStatus.Status >= model.SHIP_STATUS_CLOSED {
return nil, grmi.NewBusinessError("该发运单状态不支持该操作, 发运单ID:" + shipOrderId)
}
plantDao := baseDal.NewPlantDAO(session, user.UserId) plantDao := baseDal.NewPlantDAO(session, user.UserId)
plant, err := plantDao.SelectOne(user.PlantNr) plant, err := plantDao.SelectOne(user.PlantNr)
if err != nil { if err != nil {
@ -773,7 +784,7 @@ func (impl *ShipOrderServiceImplement) ScanBarCode(user *global.User, barCode st
} }
plantProject := plant.PlantProject plantProject := plant.PlantProject
var workPlaceConfig *baseModel.WorkPlaceConfig var workPlaceConfig *baseModel.WorkPlaceConfig
if plantProject == baseModel.PROJECT_ACURA {
if plantProject == baseModel.PROJECT_ACURA && shipOrder.ShipOrder.ShipType != model.SHIP_TYPE_SPECIAL {
// 获取工位配置 // 获取工位配置
workPlaceConfigLi, err := workPlaceConfigDao.Select([]grmi.Predicate{baseMeta.WorkPlaceConfig_WorkPlaceNr.NewPredicate(grmi.Equal, workPlaceNr)}, nil) workPlaceConfigLi, err := workPlaceConfigDao.Select([]grmi.Predicate{baseMeta.WorkPlaceConfig_WorkPlaceNr.NewPredicate(grmi.Equal, workPlaceNr)}, nil)
if err != nil { if err != nil {
@ -879,17 +890,7 @@ func (impl *ShipOrderServiceImplement) ScanBarCode(user *global.User, barCode st
if len(shipDataLstLi) != 0 { if len(shipDataLstLi) != 0 {
return nil, grmi.NewBusinessError("该发运单已经存在于发运单中,包装单ID:" + packOrderId) return nil, grmi.NewBusinessError("该发运单已经存在于发运单中,包装单ID:" + packOrderId)
} }
// 3. 校验发运单数据
shipOrder, err := shipOrderDao.SelectOneWithStatus(shipOrderId)
if err != nil {
return nil, grmi.NewBusinessError("查询发运单数据失败, error:" + err.Error())
}
if shipOrder == nil {
return nil, grmi.NewBusinessError("该发运单不存在, 发运单ID:" + shipOrderId)
}
if shipOrder.ShipOrderStatus.Status >= model.SHIP_STATUS_CLOSED {
return nil, grmi.NewBusinessError("该发运单状态不支持该操作, 发运单ID:" + shipOrderId)
}
//if packOrder.PackOrder.ShortPackToggle { //if packOrder.PackOrder.ShortPackToggle {
// if shipOrder.ShipOrder.ShipType != model.SHIP_TYPE_ADVANCE || shipOrder.ShipOrder.ShipTemplateId != "" { // if shipOrder.ShipOrder.ShipType != model.SHIP_TYPE_ADVANCE || shipOrder.ShipOrder.ShipTemplateId != "" {
@ -938,7 +939,7 @@ func (impl *ShipOrderServiceImplement) ScanBarCode(user *global.User, barCode st
FromStatus: packOrder.PackOrderStatus.ShipStatus, FromStatus: packOrder.PackOrderStatus.ShipStatus,
ToStatus: model.PACK_STATUS_CLOSED, ToStatus: model.PACK_STATUS_CLOSED,
ChangeTime: grmi.DateTime(time.Now()), ChangeTime: grmi.DateTime(time.Now()),
TriggerPara1: model.SHIP_TYPE_FORMAL,
TriggerPara1: shipOrder.ShipOrder.ShipType,
} }
err = packOrderStatusHistoryDao.InsertOne(&packOrderStatusHistory) err = packOrderStatusHistoryDao.InsertOne(&packOrderStatusHistory)
if err != nil { if err != nil {
@ -953,10 +954,12 @@ func (impl *ShipOrderServiceImplement) ScanBarCode(user *global.User, barCode st
} }
} }
// 如果是预发运单, 且没有指定发运模板 // 如果是预发运单, 且没有指定发运模板
if shipOrder.ShipOrder.ShipType == model.SHIP_TYPE_ADVANCE && shipOrder.ShipOrder.ShipTemplateId == "" {
if shipOrder.ShipOrder.ProjectId != packOrder.ProjectId {
_ = session.Rollback()
return nil, grmi.NewBusinessError("包装项目和发运单项目不一致")
if (shipOrder.ShipOrder.ShipType == model.SHIP_TYPE_ADVANCE && shipOrder.ShipOrder.ShipTemplateId == "") || shipOrder.ShipOrder.ShipType == model.SHIP_TYPE_SPECIAL {
if shipOrder.ShipType != model.SHIP_TYPE_SPECIAL {
if shipOrder.ShipOrder.ProjectId != packOrder.ProjectId {
_ = session.Rollback()
return nil, grmi.NewBusinessError("包装项目和发运单项目不一致")
}
} }
// 如果发运单已经进行扫描且需要校验同一派生 // 如果发运单已经进行扫描且需要校验同一派生
if shipOrder.CheckCarSet && shipOrder.ShipOrderStatus.Status == model.SHIP_STATUS_RUNNING { if shipOrder.CheckCarSet && shipOrder.ShipOrderStatus.Status == model.SHIP_STATUS_RUNNING {
@ -1081,7 +1084,7 @@ func (impl *ShipOrderServiceImplement) ScanBarCode(user *global.User, barCode st
_ = session.Commit() _ = session.Commit()
result.Message = "扫描完成,扫描包装单ID:" + packOrder.PackOrder.PackOrderId + ", 当前发运单ID:" + shipOrderId result.Message = "扫描完成,扫描包装单ID:" + packOrder.PackOrder.PackOrderId + ", 当前发运单ID:" + shipOrderId
result.IsClosed = isClosed result.IsClosed = isClosed
if plantProject == baseModel.PROJECT_ACURA {
if plantProject == baseModel.PROJECT_ACURA && shipOrder.ShipOrder.ShipType != model.SHIP_TYPE_SPECIAL {
err = impl.PermitTrough(workPlaceConfig) err = impl.PermitTrough(workPlaceConfig)
if err != nil { if err != nil {
result.PLCResult = false result.PLCResult = false
@ -1090,7 +1093,6 @@ func (impl *ShipOrderServiceImplement) ScanBarCode(user *global.User, barCode st
result.PLCResult = true result.PLCResult = true
} }
} }
return result, nil return result, nil
} else { } else {
shipOrderLstLi, err := shipOrderLstDao.Select([]grmi.Predicate{meta.ShipOrderItemLst_ShipOrderId.NewPredicate(grmi.Equal, shipOrderId), meta.ShipOrderItemLst_Status.NewPredicate(grmi.LessThen, model.SHIP_STATUS_CLOSED)}, []grmi.Field{meta.ShipOrderItemLst_Pos}) shipOrderLstLi, err := shipOrderLstDao.Select([]grmi.Predicate{meta.ShipOrderItemLst_ShipOrderId.NewPredicate(grmi.Equal, shipOrderId), meta.ShipOrderItemLst_Status.NewPredicate(grmi.LessThen, model.SHIP_STATUS_CLOSED)}, []grmi.Field{meta.ShipOrderItemLst_Pos})
@ -1208,7 +1210,7 @@ func (impl *ShipOrderServiceImplement) ScanBarCode(user *global.User, barCode st
return nil, grmi.NewBusinessError("更新发运单数据失败, error:" + err.Error()) return nil, grmi.NewBusinessError("更新发运单数据失败, error:" + err.Error())
} }
_ = session.Commit() _ = session.Commit()
if plantProject == baseModel.PROJECT_ACURA {
if plantProject == baseModel.PROJECT_ACURA && shipOrder.ShipOrder.ShipType != model.SHIP_TYPE_SPECIAL {
err = impl.PermitTrough(workPlaceConfig) err = impl.PermitTrough(workPlaceConfig)
if err != nil { if err != nil {
result.PLCResult = false result.PLCResult = false
@ -1263,7 +1265,7 @@ func (impl *ShipOrderServiceImplement) ScanBarCode(user *global.User, barCode st
_ = session.Commit() _ = session.Commit()
result.Message = "扫描完成,扫描包装单ID:" + packOrder.PackOrder.PackOrderId + ", 当前发运单ID:" + shipOrderId result.Message = "扫描完成,扫描包装单ID:" + packOrder.PackOrder.PackOrderId + ", 当前发运单ID:" + shipOrderId
result.IsClosed = false result.IsClosed = false
if plantProject == baseModel.PROJECT_ACURA {
if plantProject == baseModel.PROJECT_ACURA && shipOrder.ShipOrder.ShipType != model.SHIP_TYPE_SPECIAL {
err = impl.PermitTrough(workPlaceConfig) err = impl.PermitTrough(workPlaceConfig)
if err != nil { if err != nil {
result.PLCResult = false result.PLCResult = false
@ -1579,8 +1581,8 @@ func (impl *ShipOrderServiceImplement) CloseShipOrder(user *global.User, shipOrd
if shipOrderData == nil { if shipOrderData == nil {
return grmi.NewBusinessError("不存在该发运单, 发运单ID:" + shipOrderId) return grmi.NewBusinessError("不存在该发运单, 发运单ID:" + shipOrderId)
} }
if shipOrderData.ShipOrder.ShipType != model.SHIP_TYPE_ADVANCE {
return grmi.NewBusinessError("该发运单不是预发运单,不允许关闭")
if shipOrderData.ShipOrder.ShipType != model.SHIP_TYPE_ADVANCE && shipOrderData.ShipOrder.ShipType != model.SHIP_TYPE_SPECIAL {
return grmi.NewBusinessError("该发运单类型,不允许关闭")
} }
//if shipOrderData.ShipOrder.ShipTemplateId != "" { //if shipOrderData.ShipOrder.ShipTemplateId != "" {
// return grmi.NewBusinessError("该发运单已经绑定包装模板, 不允许关闭") // return grmi.NewBusinessError("该发运单已经绑定包装模板, 不允许关闭")
@ -1889,3 +1891,42 @@ func (impl *ShipOrderServiceImplement) WithdrawShipOrderItem(user *global.User,
_ = session.Commit() _ = session.Commit()
return nil return nil
} }
// CreateSpecialShipOrder 创建特殊发运单
func (impl *ShipOrderServiceImplement) CreateSpecialShipOrder(user *global.User) error {
engine := db.Eloquent.Master()
session := engine.NewSession()
defer session.Close()
shipOrderDao := dal.NewShipOrderDAO(session, user.PlantNr, user.UserId)
shipOrderStatusDao := dal.NewShipOrderStatusDAO(session, user.PlantNr, user.UserId)
unix := time.Now().Format("20060102150405")
shipOrderId := "SPECIAL" + "-" + unix
shipOrder := model.ShipOrder{
ShipOrderId: shipOrderId,
ShipType: model.SHIP_TYPE_SPECIAL,
OrderInfo: model.SHIP_TYPE_SPECIAL,
OpenTime: grmi.DateTime(time.Now()),
Operator: user.UserId,
}
shipOrderStatus := model.ShipOrderStatus{
ShipOrderId: shipOrderId,
Status: model.SHIP_STATUS_PLANNED,
Status1: model.SHIP_STATUS_PLANNED,
Status2: model.SHIP_STATUS_PLANNED,
}
if err := session.Begin(); err != nil {
return grmi.NewBusinessError("开启事务失败, 错误:" + err.Error())
}
err := shipOrderDao.InsertOne(&shipOrder)
if err != nil {
_ = session.Rollback()
return grmi.NewBusinessError("保存发运单失败, 错误:" + err.Error())
}
err = shipOrderStatusDao.InsertOne(&shipOrderStatus)
if err != nil {
_ = session.Rollback()
return grmi.NewBusinessError("保存发运单状态失败, 错误:" + err.Error())
}
_ = session.Commit()
return nil
}

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

@ -728,4 +728,40 @@ func RegisterWithdrawShipOrderItem(party router.Party, path string, method func(
} }
supports.Ok(ctx, supports.OptionSuccess, nil) supports.Ok(ctx, supports.OptionSuccess, nil)
}) })
}
/******************************************************************************
*
* @Function Name : RegisterCreateSpecialShipOrder
*-----------------------------------------------------------------------------
*
* @Description : 创建特殊发运单
*
* @Function Parameters : 路由分组
*
* @Function Parameters : 路径
*
* @Function Parameters : 实际处理请求的方法
*
* @Author : zhangxin
*
* @Date : 2022-05-13
*
******************************************************************************/
func RegisterCreateSpecialShipOrder(party router.Party, path string, method func(user *global.User) error) {
party.Post(path, func(ctx iris.Context) {
user, ok := jwts.ParseToken(ctx)
if !ok {
return
}
err := method(user)
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

@ -62,6 +62,8 @@ func RegisterRoutes() {
RegisterSelectShipOrderBySerialOrderId(shiporder, "/selectbyserialorder", serviceOfShipOrder.SelectShipDataBySerialOrderId) RegisterSelectShipOrderBySerialOrderId(shiporder, "/selectbyserialorder", serviceOfShipOrder.SelectShipDataBySerialOrderId)
// shipOrder 通过工单ID查询发运单 // shipOrder 通过工单ID查询发运单
RegisterWithdrawShipOrderItem(shiporder, "/withdrawitem", serviceOfShipOrder.WithdrawShipOrderItem) RegisterWithdrawShipOrderItem(shiporder, "/withdrawitem", serviceOfShipOrder.WithdrawShipOrderItem)
// shipOrder 创建特殊发运单
RegisterCreateSpecialShipOrder(shiporder, "/createspecial", serviceOfShipOrder.CreateSpecialShipOrder)
// ShipOrderStatus的路由组 // ShipOrderStatus的路由组
shiporderstatus := party.Party("/shiporderstatus") shiporderstatus := party.Party("/shiporderstatus")


Loading…
Cancel
Save