@ -191,7 +191,7 @@ func (impl *ShipOrderServiceImplement) DeleteOne(user *global.User, shipOrderId
_ = session . Rollback ( )
return grmi . NewBusinessError ( "查询发运单数据项失败, 错误:" + err . Error ( ) )
}
for _ , scanData := range scanDataLstLi {
for _ , scanData := range scanDataLstLi {
packOrderStatus , err := packOrderStatusDao . SelectOne ( scanData . PackOrderId )
if err != nil {
_ = session . Rollback ( )
@ -1042,7 +1042,7 @@ func (impl *ShipOrderServiceImplement) ScanBarCode(user *global.User, barCode st
shipOrder . ShipOrder . ActQty += 1
shipOrder . ShipOrder . Operator = user . UserId
if shipOrder . ShipOrder . PlanQty == shipOrder . ShipOrder . ActQty {
isClosed = true
isClosed = true
shipOrder . ShipOrder . CloseTime = grmi . DateTime ( time . Now ( ) )
status = model . SHIP_STATUS_CLOSED
}
@ -1101,7 +1101,7 @@ func (impl *ShipOrderServiceImplement) ScanBarCode(user *global.User, barCode st
return nil , grmi . NewBusinessError ( "发运单未获取到需要发运的子项" )
}
// 按倒叙进行发运 扫描最后一个包装
shipOrderLst := shipOrderLstLi [ 0 ]
shipOrderLst := shipOrderLstLi [ len ( shipOrderLstLi ) - 1 ]
// 不适用包装单上的派生ID 直接校验包装单里座椅数据
packTemplate , err := packTemplateDao . SelectOne ( shipOrderLst . PackTemplateId )
@ -1294,6 +1294,8 @@ func (impl *ShipOrderServiceImplement) ChangeAdvanceToFormal(user *global.User,
shipOrderStatusHistoryDao := dal . NewShipOrderStatusHistoryDAO ( session , user . PlantNr , user . UserId )
packOrderStatusDao := dal . NewPackOrderStatusDAO ( session , user . PlantNr , user . UserId )
packOrderStatusHistoryDao := dal . NewPackOrderStatusHistoryDAO ( session , user . PlantNr , user . UserId )
packOrderItemDao := dal . NewPackOrderItemLstDAO ( session , user . PlantNr , user . UserId )
productFamilyRelateDao := meDal . NewProductFamilyRelateDAO ( session , user . PlantNr , user . UserId )
// 1. 校验预发运单
advanceShipOrder , err := shipOrderDao . SelectOneWithStatus ( advanceShipOrderId )
if err != nil {
@ -1322,40 +1324,97 @@ func (impl *ShipOrderServiceImplement) ChangeAdvanceToFormal(user *global.User,
if formalShipOrder . ShipOrderStatus . Status != model . SHIP_STATUS_PLANNED {
return grmi . NewBusinessError ( "该正式发运单已在操作中, 发运单ID:" + formalShipOrderId )
}
// 3. 比对两个发运单的子项
advanceShipOrderItemLi , err := shipOrderLstDao . Select ( [ ] grmi . Predicate { meta . ShipOrderItemLst_ShipOrderId . NewPredicate ( grmi . Equal , advanceShipOrderId ) , meta . ShipOrderItemLst_Status . NewPredicate ( grmi . Equal , model . SHIP_STATUS_CLOSED ) } , [ ] grmi . Field { meta . ShipOrderItemLst_Pos } )
// 3. 比对两个发运单的子项的数据
advanceShipOrderDataLi , err := shipOrderDataLstDao . Select ( [ ] grmi . Predicate {
meta . ShipOrderDataLst_ShipOrderId . NewPredicate ( grmi . Equal , advanceShipOrderId ) ,
} , [ ] grmi . Field { meta . ShipOrderDataLst_ItemPos } )
if err != nil {
return grmi . NewBusinessError ( "查询预发运单子项失败, error:" + err . Error ( ) )
return grmi . NewBusinessError ( "查询预发运单数据项失败, 错误:" + err . Error ( ) )
}
advanceShipOrderDataMap := make ( map [ string ] int )
for _ , shipOrderData := range advanceShipOrderDataLi {
packOrderItemLi , err := packOrderItemDao . Select ( [ ] grmi . Predicate {
meta . PackOrderItemLst_PackOrderId . NewPredicate ( grmi . Equal , shipOrderData . PackOrderId ) ,
meta . PackOrderItemLst_Status . NewPredicate ( grmi . Equal , model . PACK_STATUS_CLOSED ) ,
} , [ ] grmi . Field { meta . PackOrderItemLst_PartId } )
if err != nil {
return grmi . NewBusinessError ( "查询包装单子项失败, 错误:" + err . Error ( ) )
}
var key string
for _ , packOrderItem := range packOrderItemLi {
key += packOrderItem . PartId
}
_ , exist := advanceShipOrderDataMap [ key ]
if ! exist {
advanceShipOrderDataMap [ key ] = 1
} else {
advanceShipOrderDataMap [ key ] += 1
}
}
formalShipOrderItemLi , err := shipOrderLstDao . Select ( [ ] grmi . Predicate { meta . ShipOrderItemLst_ShipOrderId . NewPredicate ( grmi . Equal , formalShipOrderId ) } , [ ] grmi . Field { meta . ShipOrderItemLst_Pos } )
if err != nil {
return grmi . NewBusinessError ( "查询正式发运单子项失败, error:" + err . Error ( ) )
}
advancePackTemplateMap := make ( map [ string ] int )
for _ , advanceShipOrderItem := range advanceShipOrderItemLi {
_ , exist := advancePackTemplateMap [ advanceShipOrderItem . PackTemplateId ]
if exist {
advancePackTemplateMap [ advanceShipOrderItem . PackTemplateId ] += advanceShipOrderItem . PlanQty
formalShipOrderCarSetMap := make ( map [ string ] int )
for _ , shipOrderItem := range formalShipOrderItemLi {
_ , exist := formalShipOrderCarSetMap [ shipOrderItem . PackTemplateId ]
if ! exist {
formalShipOrderCarSetMap [ shipOrderItem . PackTemplateId ] = 1
} else {
formalShipOrderCarSetMap [ shipOrderItem . PackTemplateId ] += 1
}
advancePackTemplateMap [ advanceShipOrderItem . PackTemplateId ] = advanceShipOrderItem . PlanQty
}
formalPackTemplateMap := make ( map [ string ] int )
for _ , formalShipOrderItem := range formalShipOrderItemLi {
_ , exist := formalPackTemplateMap [ formalShipOrderItem . PackTemplateId ]
if exist {
formalPackTemplateMap [ formalShipOrderItem . PackTemplateId ] += formalShipOrderItem . PlanQty
for productFamilyId , qty := range formalShipOrderCarSetMap {
productLi , err := productFamilyRelateDao . SelectPackProductByFamilyId ( formalShipOrder . ProjectId , productFamilyId )
if err != nil {
return grmi . NewBusinessError ( "查询派生打包总成数据失败, 错误:" + err . Error ( ) )
}
formalPackTemplateMap [ formalShipOrderItem . PackTemplateId ] = formalShipOrderItem . PlanQty
}
for packTemplateId , qty := range formalPackTemplateMap {
advanceQty , exist := advancePackTemplateMap [ packTemplateId ]
var key string
for _ , product := range productLi {
key += product . ProductId
}
advanceQty , exist := advanceShipOrderDataMap [ key ]
if ! exist {
return grmi . NewBusinessError ( "两个发运单发运子项不匹配, 包装模板不匹配, 包装模板ID:" + packTemplate Id )
return grmi . NewBusinessError ( "两个发运单发运子项不匹配, 包装模板不匹配, 包装模板ID:" + productFamily Id )
}
if qty != advanceQty {
return grmi . NewBusinessError ( "两个发运单发运子项不匹配, 包装模板数量不匹配, 包装模板ID:" + packTemplate Id )
return grmi . NewBusinessError ( "两个发运单发运子项不匹配, 包装模板数量不匹配, 包装模板ID:" + productFamily Id )
}
}
//advanceShipOrderItemLi, err := shipOrderLstDao.Select([]grmi.Predicate{meta.ShipOrderItemLst_ShipOrderId.NewPredicate(grmi.Equal, advanceShipOrderId), meta.ShipOrderItemLst_Status.NewPredicate(grmi.Equal, model.SHIP_STATUS_CLOSED)}, []grmi.Field{meta.ShipOrderItemLst_Pos})
//if err != nil {
// return grmi.NewBusinessError("查询预发运单子项失败, error:" + err.Error())
//}
//formalShipOrderItemLi, err := shipOrderLstDao.Select([]grmi.Predicate{meta.ShipOrderItemLst_ShipOrderId.NewPredicate(grmi.Equal, formalShipOrderId)}, []grmi.Field{meta.ShipOrderItemLst_Pos})
//if err != nil {
// return grmi.NewBusinessError("查询正式发运单子项失败, error:" + err.Error())
//}
//advancePackTemplateMap := make(map[string]int)
//for _, advanceShipOrderItem := range advanceShipOrderItemLi {
// _, exist := advancePackTemplateMap[advanceShipOrderItem.PackTemplateId]
// if exist {
// advancePackTemplateMap[advanceShipOrderItem.PackTemplateId] += advanceShipOrderItem.PlanQty
// }
// advancePackTemplateMap[advanceShipOrderItem.PackTemplateId] = advanceShipOrderItem.PlanQty
//}
//formalPackTemplateMap := make(map[string]int)
//for _, formalShipOrderItem := range formalShipOrderItemLi {
// _, exist := formalPackTemplateMap[formalShipOrderItem.PackTemplateId]
// if exist {
// formalPackTemplateMap[formalShipOrderItem.PackTemplateId] += formalShipOrderItem.PlanQty
// }
// formalPackTemplateMap[formalShipOrderItem.PackTemplateId] = formalShipOrderItem.PlanQty
//}
//for packTemplateId, qty := range formalPackTemplateMap {
// advanceQty, exist := advancePackTemplateMap[packTemplateId]
// if !exist {
// return grmi.NewBusinessError("两个发运单发运子项不匹配, 包装模板不匹配, 包装模板ID:" + packTemplateId)
// }
// if qty != advanceQty {
// return grmi.NewBusinessError("两个发运单发运子项不匹配, 包装模板数量不匹配, 包装模板ID:" + packTemplateId)
// }
//}
// 4. 对比通过 进行数据映射
if err = session . Begin ( ) ; err != nil {
return grmi . NewBusinessError ( "开启事务失败, error:" + err . Error ( ) )
@ -1772,13 +1831,13 @@ func (impl *ShipOrderServiceImplement) WithdrawShipOrderItem(user *global.User,
if shipOrder . ShipType == model . SHIP_TYPE_FORMAL {
packOrderStatusHistory := model . PackOrderStatusHistory {
PackOrderId : packOrderId ,
Pos : maxPos + 1 ,
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 ,
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 {
@ -1788,13 +1847,13 @@ func (impl *ShipOrderServiceImplement) WithdrawShipOrderItem(user *global.User,
packOrderStatus . ShipStatus = model . PACK_STATUS_PLANNED
} else {
packOrderStatusHistory := model . PackOrderStatusHistory {
PackOrderId : packOrderId ,
Pos : maxPos + 1 ,
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 ,
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 {
@ -1817,4 +1876,4 @@ func (impl *ShipOrderServiceImplement) WithdrawShipOrderItem(user *global.User,
}
_ = session . Commit ( )
return nil
}
}