diff --git a/models/jit/const.go b/models/jit/const.go index 9ccd3b3..dce47ab 100644 --- a/models/jit/const.go +++ b/models/jit/const.go @@ -7,8 +7,9 @@ const ( MONGO_USER_SHIP_DATABASE = "UserShipDB" 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" diff --git a/services/jit/ShipOrder.service.go b/services/jit/ShipOrder.service.go index 1514f47..eb52555 100644 --- a/services/jit/ShipOrder.service.go +++ b/services/jit/ShipOrder.service.go @@ -357,6 +357,23 @@ type ShipOrderService interface { * ******************************************************************************/ 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 } /****************************************************************************** diff --git a/services/jit/implments/ShipOrder.service.impl.go b/services/jit/implments/ShipOrder.service.impl.go index 837078f..5edbbe8 100644 --- a/services/jit/implments/ShipOrder.service.impl.go +++ b/services/jit/implments/ShipOrder.service.impl.go @@ -763,6 +763,17 @@ func (impl *ShipOrderServiceImplement) ScanBarCode(user *global.User, barCode st shipOrderStatusDao := dal.NewShipOrderStatusDAO(session, user.PlantNr, user.UserId) shipOrderStatusHistoryDao := dal.NewShipOrderStatusHistoryDAO(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) plant, err := plantDao.SelectOne(user.PlantNr) if err != nil { @@ -773,7 +784,7 @@ func (impl *ShipOrderServiceImplement) ScanBarCode(user *global.User, barCode st } plantProject := plant.PlantProject 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) if err != nil { @@ -879,17 +890,7 @@ func (impl *ShipOrderServiceImplement) ScanBarCode(user *global.User, barCode st if len(shipDataLstLi) != 0 { 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 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, ToStatus: model.PACK_STATUS_CLOSED, ChangeTime: grmi.DateTime(time.Now()), - TriggerPara1: model.SHIP_TYPE_FORMAL, + TriggerPara1: shipOrder.ShipOrder.ShipType, } err = packOrderStatusHistoryDao.InsertOne(&packOrderStatusHistory) 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 { @@ -1081,7 +1084,7 @@ func (impl *ShipOrderServiceImplement) ScanBarCode(user *global.User, barCode st _ = session.Commit() result.Message = "扫描完成,扫描包装单ID:" + packOrder.PackOrder.PackOrderId + ", 当前发运单ID:" + shipOrderId result.IsClosed = isClosed - if plantProject == baseModel.PROJECT_ACURA { + if plantProject == baseModel.PROJECT_ACURA && shipOrder.ShipOrder.ShipType != model.SHIP_TYPE_SPECIAL { err = impl.PermitTrough(workPlaceConfig) if err != nil { result.PLCResult = false @@ -1090,7 +1093,6 @@ func (impl *ShipOrderServiceImplement) ScanBarCode(user *global.User, barCode st result.PLCResult = true } } - return result, nil } 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}) @@ -1208,7 +1210,7 @@ func (impl *ShipOrderServiceImplement) ScanBarCode(user *global.User, barCode st return nil, grmi.NewBusinessError("更新发运单数据失败, error:" + err.Error()) } _ = session.Commit() - if plantProject == baseModel.PROJECT_ACURA { + if plantProject == baseModel.PROJECT_ACURA && shipOrder.ShipOrder.ShipType != model.SHIP_TYPE_SPECIAL { err = impl.PermitTrough(workPlaceConfig) if err != nil { result.PLCResult = false @@ -1263,7 +1265,7 @@ func (impl *ShipOrderServiceImplement) ScanBarCode(user *global.User, barCode st _ = session.Commit() result.Message = "扫描完成,扫描包装单ID:" + packOrder.PackOrder.PackOrderId + ", 当前发运单ID:" + shipOrderId result.IsClosed = false - if plantProject == baseModel.PROJECT_ACURA { + if plantProject == baseModel.PROJECT_ACURA && shipOrder.ShipOrder.ShipType != model.SHIP_TYPE_SPECIAL { err = impl.PermitTrough(workPlaceConfig) if err != nil { result.PLCResult = false @@ -1579,8 +1581,8 @@ func (impl *ShipOrderServiceImplement) CloseShipOrder(user *global.User, shipOrd if shipOrderData == nil { 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 != "" { // return grmi.NewBusinessError("该发运单已经绑定包装模板, 不允许关闭") @@ -1889,3 +1891,42 @@ func (impl *ShipOrderServiceImplement) WithdrawShipOrderItem(user *global.User, _ = session.Commit() 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 +} diff --git a/web/controllers/jit/ShipOrder.rest.go b/web/controllers/jit/ShipOrder.rest.go index 68b8fbe..6177203 100644 --- a/web/controllers/jit/ShipOrder.rest.go +++ b/web/controllers/jit/ShipOrder.rest.go @@ -728,4 +728,40 @@ func RegisterWithdrawShipOrderItem(party router.Party, path string, method func( } 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) + }) } \ No newline at end of file diff --git a/web/controllers/jit/jit.go b/web/controllers/jit/jit.go index d304407..cd6df6f 100644 --- a/web/controllers/jit/jit.go +++ b/web/controllers/jit/jit.go @@ -62,6 +62,8 @@ func RegisterRoutes() { RegisterSelectShipOrderBySerialOrderId(shiporder, "/selectbyserialorder", serviceOfShipOrder.SelectShipDataBySerialOrderId) // shipOrder 通过工单ID查询发运单 RegisterWithdrawShipOrderItem(shiporder, "/withdrawitem", serviceOfShipOrder.WithdrawShipOrderItem) + // shipOrder 创建特殊发运单 + RegisterCreateSpecialShipOrder(shiporder, "/createspecial", serviceOfShipOrder.CreateSpecialShipOrder) // ShipOrderStatus的路由组 shiporderstatus := party.Party("/shiporderstatus")