|
|
@ -415,8 +415,8 @@ func (impl *PackOrderServiceImplement) ScanBarcode(user *global.User, barcode st |
|
|
|
packOrderStatusDao := dal.NewPackOrderStatusDAO(session, user.PlantNr, user.UserId) |
|
|
|
packOrderStatusHistoryDao := dal.NewPackOrderStatusHistoryDAO(session, user.PlantNr, user.UserId) |
|
|
|
projectDao := meDal.NewProjectDAO(session, user.PlantNr, user.UserId) |
|
|
|
packOrderPlcErrDao := dal.NewPackOrderPlcErrorDAO(session, user.PlantNr, user.UserId) |
|
|
|
if conf.DbConfig.Project == baseModel.PROJECT_NANSHA { |
|
|
|
packOrderPlcErrDao := dal.NewPackOrderPlcErrorDAO(session, user.PlantNr, user.UserId) |
|
|
|
errorLi, err := packOrderPlcErrDao.Select([]grmi.Predicate{meta.PackOrderPlcError_Location.NewPredicate(grmi.Equal, model.PACK_LOCATION_ON_LINE), |
|
|
|
meta.PackOrderPlcError_Status.NewPredicate(grmi.LessThen, model.PACK_STATUS_CLOSED)}, nil) |
|
|
|
if err != nil { |
|
|
@ -466,9 +466,9 @@ func (impl *PackOrderServiceImplement) ScanBarcode(user *global.User, barcode st |
|
|
|
return nil, grmi.NewBusinessError("条码对应的工单状态不允许打包") |
|
|
|
} |
|
|
|
serialOrder := serialOrderLi[0] |
|
|
|
if serialOrder.QualityCheck != baseModel.QualityCheck_STATUS_OK { |
|
|
|
return nil, grmi.NewBusinessError("工单目检结果不符合要求") |
|
|
|
} |
|
|
|
//if serialOrder.QualityCheck != baseModel.QualityCheck_STATUS_OK {
|
|
|
|
// return nil, grmi.NewBusinessError("工单目检结果不符合要求")
|
|
|
|
//}
|
|
|
|
// 获取用户之前是否存在未关包的包装单 如果存在则使用之前的包装单ID 如果不存在则创建包装单 如果超过一个则报错
|
|
|
|
var packOrderId string |
|
|
|
packOrderLi, err := packOrderDao.SelectUserRunningPackOrder(user.UserId, model.PACK_LOCATION_ON_LINE) |
|
|
@ -502,10 +502,10 @@ func (impl *PackOrderServiceImplement) ScanBarcode(user *global.User, barcode st |
|
|
|
// 如果当前用户不存在操作中未关闭的包装单, 则创建包装单数据
|
|
|
|
if packOrderId == "" { |
|
|
|
var packTypeId string |
|
|
|
if serialOrder.OrderType == baseModel.ODER_TYPE_INTERVAL { |
|
|
|
packTypeId = model.PACK_TYPE_INT |
|
|
|
} else { |
|
|
|
if serialOrder.OrderType == baseModel.ODER_TYPE_SEQ { |
|
|
|
packTypeId = model.PACK_TYPE_STD |
|
|
|
} else { |
|
|
|
packTypeId = model.PACK_TYPE_INT |
|
|
|
} |
|
|
|
packOrderId, err = snrDao.GetNextSnr(project.PackOrderSnr) |
|
|
|
if err != nil { |
|
|
@ -575,10 +575,10 @@ func (impl *PackOrderServiceImplement) ScanBarcode(user *global.User, barcode st |
|
|
|
return nil, grmi.NewBusinessError("对应的包装单数据不存在, 包装单ID:" + packOrderId) |
|
|
|
} |
|
|
|
// 如果工单时内部工单 则校验包装单类型 是不是符合要求 同时插入包装单
|
|
|
|
if serialOrder.OrderType == baseModel.ODER_TYPE_INTERVAL { |
|
|
|
if currentPackOrder.PackOrder.PackTypeId != model.PACK_TYPE_INT { |
|
|
|
if serialOrder.OrderType == baseModel.ODER_TYPE_SEQ { |
|
|
|
if currentPackOrder.PackOrder.PackTypeId == model.PACK_TYPE_INT { |
|
|
|
_ = session.Rollback() |
|
|
|
return nil, grmi.NewBusinessError("当前进行包装的包装单是标包类型, 但工单是内部工单") |
|
|
|
return nil, grmi.NewBusinessError("当前工单是序列工单,但是包装单是内部包装单。") |
|
|
|
} |
|
|
|
//currentPackOrder.PackOrder.ActQty += 1
|
|
|
|
//currentPackOrder.PackOrder.PlanQty += 1
|
|
|
@ -615,9 +615,9 @@ func (impl *PackOrderServiceImplement) ScanBarcode(user *global.User, barcode st |
|
|
|
//result.MatchTemplateLi = make([]model.PackTemplate, 0)
|
|
|
|
//return result, nil
|
|
|
|
} else { |
|
|
|
if currentPackOrder.PackOrder.PackTypeId != model.PACK_TYPE_STD { |
|
|
|
if currentPackOrder.PackOrder.PackTypeId != model.PACK_TYPE_INT { |
|
|
|
_ = session.Rollback() |
|
|
|
return nil, grmi.NewBusinessError("当前进行包装的包装单是内部包装, 但工单是序列工单") |
|
|
|
return nil, grmi.NewBusinessError("当前进行包装的包装单是标包, 但工单不是序列工单") |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
@ -725,6 +725,14 @@ func (impl *PackOrderServiceImplement) ScanBarcode(user *global.User, barcode st |
|
|
|
result.PLCMessage = err.Error() |
|
|
|
} |
|
|
|
} |
|
|
|
} else { |
|
|
|
if result.IsClosed { |
|
|
|
err = impl.PLCPermitThrough() |
|
|
|
if err != nil { |
|
|
|
result.PLCResult = false |
|
|
|
result.PLCMessage = err.Error() |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
result.PackOrderId = currentPackOrder.PackOrder.PackOrderId |
|
|
|
return result, nil |
|
|
@ -858,6 +866,12 @@ func (impl *PackOrderServiceImplement) ScanBarcode(user *global.User, barcode st |
|
|
|
result.PLCMessage = err.Error() |
|
|
|
} |
|
|
|
|
|
|
|
} else { |
|
|
|
err = impl.PLCPermitThrough() |
|
|
|
if err != nil { |
|
|
|
result.PLCResult = false |
|
|
|
result.PLCMessage = err.Error() |
|
|
|
} |
|
|
|
} |
|
|
|
return result, nil |
|
|
|
} else if len(matchLi) > 1 { |
|
|
@ -906,6 +920,14 @@ func (impl *PackOrderServiceImplement) ScanBarcode(user *global.User, barcode st |
|
|
|
result.PLCMessage = err.Error() |
|
|
|
} |
|
|
|
} |
|
|
|
} else { |
|
|
|
if result.IsClosed { |
|
|
|
err = impl.PLCPermitThrough() |
|
|
|
if err != nil { |
|
|
|
result.PLCResult = false |
|
|
|
result.PLCMessage = err.Error() |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
return result, nil |
|
|
|
} else { |
|
|
@ -1359,6 +1381,17 @@ func (impl *PackOrderServiceImplement) ScanBarcodeOutLine(user *global.User, bar |
|
|
|
packOrderStatusDao := dal.NewPackOrderStatusDAO(session, user.PlantNr, user.UserId) |
|
|
|
packOrderStatusHistoryDao := dal.NewPackOrderStatusHistoryDAO(session, user.PlantNr, user.UserId) |
|
|
|
projectDao := meDal.NewProjectDAO(session, user.PlantNr, user.UserId) |
|
|
|
packOrderPlcErrDao := dal.NewPackOrderPlcErrorDAO(session, user.PlantNr, user.UserId) |
|
|
|
if conf.DbConfig.Project == baseModel.PROJECT_NANSHA { |
|
|
|
errorLi, err := packOrderPlcErrDao.Select([]grmi.Predicate{meta.PackOrderPlcError_Location.NewPredicate(grmi.Equal, model.PACK_LOCATION_ON_LINE), |
|
|
|
meta.PackOrderPlcError_Status.NewPredicate(grmi.LessThen, model.PACK_STATUS_CLOSED)}, nil) |
|
|
|
if err != nil { |
|
|
|
return nil, grmi.NewBusinessError("查询座椅下线写入PLC数据错误失败, error:" + err.Error()) |
|
|
|
} |
|
|
|
if len(errorLi) != 0 { |
|
|
|
return nil, grmi.NewBusinessError("当前存在未处理的座椅下线写入PLC错误") |
|
|
|
} |
|
|
|
} |
|
|
|
// 初始化全局的包装模板数据
|
|
|
|
if model.AllPackTemplate.Data == nil { |
|
|
|
templateLstDao := dal.NewPackTemplateItemLstDAO(session, user.PlantNr, user.UserId) |
|
|
@ -1392,11 +1425,14 @@ func (impl *PackOrderServiceImplement) ScanBarcodeOutLine(user *global.User, bar |
|
|
|
if serialOrderLi[0].GenerateFlag { |
|
|
|
return nil, grmi.NewBusinessError("该工单条码已经失效,请使用新的工单条码") |
|
|
|
} |
|
|
|
if serialOrderStatus != baseModel.WO_STATUS_FINISHED && |
|
|
|
serialOrderStatus != baseModel.WO_STATUS_STOP && |
|
|
|
serialOrderStatus != baseModel.WO_STATUS_INTERRUPT && |
|
|
|
serialOrderStatus != baseModel.WO_STATUS_UNCHECKED { |
|
|
|
return nil, grmi.NewBusinessError("条码对应的工单状态不允许打包") |
|
|
|
//if serialOrderStatus != baseModel.WO_STATUS_FINISHED &&
|
|
|
|
// serialOrderStatus != baseModel.WO_STATUS_STOP &&
|
|
|
|
// serialOrderStatus != baseModel.WO_STATUS_INTERRUPT &&
|
|
|
|
// serialOrderStatus != baseModel.WO_STATUS_UNCHECKED {
|
|
|
|
// return nil, grmi.NewBusinessError("条码对应的工单状态不允许打包")
|
|
|
|
//}
|
|
|
|
if serialOrderStatus != baseModel.WO_STATUS_FINISHED { |
|
|
|
return nil, grmi.NewBusinessError("工单状态不是已完成") |
|
|
|
} |
|
|
|
serialOrder := serialOrderLi[0] |
|
|
|
if serialOrder.QualityCheck != baseModel.QualityCheck_STATUS_OK { |
|
|
@ -3000,3 +3036,17 @@ func (impl *PackOrderServiceImplement) ReadPLCBackFlushData() { |
|
|
|
return |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
// PLCPermitThrough 讴歌下线打包 PLC放行
|
|
|
|
func (impl *PackOrderServiceImplement) PLCPermitThrough() error { |
|
|
|
data := baseModel.PLC{ |
|
|
|
PLCType: conf.DbConfig.PermitThroughPlcType, |
|
|
|
PLCAddress: conf.DbConfig.PermitThroughPlcAddress, |
|
|
|
ValueAddress: conf.DbConfig.PermitThroughPlcDB, |
|
|
|
ValueType: "Boolean", |
|
|
|
RetryCount: 2, |
|
|
|
ValueText: true, |
|
|
|
} |
|
|
|
err := impl.SeatOfflineWriteSign(data) |
|
|
|
return err |
|
|
|
} |