@ -288,13 +288,13 @@ func (impl *SerialOrderServiceImplement) Select(user *models.Usertab, urlParamet
}
dao := dal . NewSerialOrderDAO ( session , user . Pid , user . Userid )
if condition . Fill ( urlParameters ) {
result , err := dao . SelectAndPaging ( condition . Paging , predicates , condition . OrderByFields )
result , err := dao . SelectAndPaging ( condition . Paging , predicates , [ ] grmi . Field { meta . SerialOrder_SerialId } )
if err != nil {
return nil , err
}
return result , nil
} else {
result , err := dao . Select ( predicates , condition . OrderByFields )
result , err := dao . Select ( predicates , [ ] grmi . Field { meta . SerialOrder_SerialId } )
if err != nil {
return nil , err
}
@ -513,9 +513,11 @@ func (impl *SerialOrderServiceImplement) GetSerialOrderOPTrace(user *models.User
session := engine . NewSession ( )
defer session . Close ( )
dao := dal . NewSerialOrderPOLstDAO ( session , user . Pid , user . Userid )
serialOrderDao := dal . NewSerialOrderDAO ( session , user . Pid , user . Userid )
poStatusRecDao := dal . NewSerialOrderPOStatusRecLstDAO ( session , user . Pid , user . Userid )
roleRelDao := baseDal . NewRoleRelDAO ( session , user . Pid , user . Userid )
ngDao := baseDal . NewPrintInfoCreateRecordDAO ( session , user . Pid , user . Userid )
workOrderDao := dal . NewWorkOrderDAO ( session , user . Pid , user . Userid )
// 如果查询NG条码 则去NG表中查询serialOrderId
if NGCode != "" {
ngDataLi , err := ngDao . Select ( [ ] grmi . Predicate { baseMeta . PrintInfoCreateRecord_CreateId . NewPredicate ( grmi . Equal , NGCode ) } , nil )
if err != nil {
@ -526,43 +528,79 @@ func (impl *SerialOrderServiceImplement) GetSerialOrderOPTrace(user *models.User
}
serialOrderId = ngDataLi [ 0 ] . SerialOrderId
}
// 如果查询返修 则查询状态为39的工单
if repair {
status = baseModel . WO_STATUS_INTERRUPT
}
var serialOrderDataLi [ ] model . SerialOrderPOData
var err error
if workOrderId == "" && workLineId == "" && date == "" && serialOrderId == "" && NGCode == "" && status == 0 && ! repair {
workOrder , err := workOrderDao . SelectRunningWorkOrder ( )
relLi , err := roleRelDao . Select ( [ ] grmi . Predicate { baseMeta . RoleRel_RoleId . NewPredicate ( grmi . Equal , user . RoleId ) } , [ ] grmi . Field { baseMeta . RoleRel_WorkLineid } )
if err != nil {
return nil , grmi . NewBusinessError ( "查询默认的workOrder 失败, error:" + err . Error ( ) )
return nil , grmi . NewBusinessError ( "查询角色绑定产线 失败, error:" + err . Error ( ) )
}
if workOrder == nil {
return nil , grmi . NewBusinessError ( "未查询到有效的批次工单" )
if len ( relLi ) == 0 {
return nil , grmi . NewBusinessError ( "角色未关联产线, error:" + err . Error ( ) )
}
workLineId := relLi [ 0 ] . WorkLineid
// 如果查询条件都为空 则按CreateTime降序排列 查询10条80 或者98的数据 + 40条80一下的数据
orderIdLi , err := serialOrderDao . GetDefaultDisplay ( workLineId )
if err != nil {
return nil , grmi . NewBusinessError ( "查询默认展示工单数据失败, error:" + err . Error ( ) )
}
if len ( orderIdLi ) == 0 {
return nil , grmi . NewBusinessError ( "角色关联的产线未查询到工单" )
}
serialOrderDataLi , err = dao . SelectDefaultDisplaySerialOrder ( orderIdLi )
if err != nil {
return nil , grmi . NewBusinessError ( "查询工单数据失败, error:" + err . Error ( ) )
}
} else {
serialOrderDataLi , err = dao . SelectDisplaySerialOrder ( workLineId , workOrderId , serialOrderId , date , status )
if err != nil {
return nil , grmi . NewBusinessError ( "查询工单数据失败, error:" + err . Error ( ) )
}
workOrderId = workOrder . WorkOrder . WorkOrderId
}
serialOrderDataLi , err := dao . SelectDisplaySerialOrder ( workLineId , workOrderId , serialOrderId , date , status )
if err != nil {
return nil , grmi . NewBusinessError ( "查询工单数据失败, error:" + err . Error ( ) )
}
// 构建响应数据
// 标题头
titleLi := make ( [ ] string , 0 )
poTitleLi := make ( [ ] int , 0 )
type POData struct {
PO int ` json:"po" `
StartTime string ` json:"startTime" `
Status int ` json:"status" `
}
// 临时行行数据
type SerialOrderPOData struct {
SerialOrderId string ` json:"serialOrderId" `
POMap map [ int ] POData ` json:"poMap" `
}
type SerialOrderPOLiData struct {
SerialOrderId string ` json:"serialOrderId" `
POLi [ ] POData ` json:"poLi" `
}
type Result struct {
TitleLi [ ] string ` json:"titleLi" `
Data [ ] SerialOrderPOData ` json:"data" `
TitleLi [ ] string ` json:"titleLi" `
Data [ ] SerialOrderPOLi Data ` json:"data" `
}
serialOrderLi := make ( [ ] SerialOrderPOData , 0 )
var currentSerialOrderId string
POMap := make ( map [ string ] interface { } )
// 组织工序标题头部数据
for _ , serialOrderData := range serialOrderDataLi {
_ , exist := POMap [ serialOrderData . Process . Name ]
if ! exist {
POMap [ serialOrderData . Process . Name ] = nil
titleLi = append ( titleLi , serialOrderData . Process . Name )
poTitleLi = append ( poTitleLi , serialOrderData . Process . PO )
}
}
//var poStatusRecLi []model.SerialOrderPOStatusRecLst
var poStatusRecMap map [ int ] [ ] model . SerialOrderPOStatusRecLst
// 遍历工单工序数据
for _ , serialOrderData := range serialOrderDataLi {
// 查询serialOrderId下的所有操作数据
if currentSerialOrderId == "" {
currentSerialOrderId = serialOrderData . SerialOrder . SerialOrderId
poStatusRecLi , err := poStatusRecDao . Select ( [ ] grmi . Predicate { meta . SerialOrderPOStatusRecLst_SerialOrderId . NewPredicate ( grmi . Equal , serialOrderData . SerialOrder . SerialOrderId ) , meta . SerialOrderPOStatusRecLst_Status . NewPredicate ( grmi . Equal , baseModel . ORDER_STATUS_RUNNING ) } , [ ] grmi . Field { meta . SerialOrderPOStatusRecLst_Pos } )
@ -593,11 +631,12 @@ func (impl *SerialOrderServiceImplement) GetSerialOrderOPTrace(user *models.User
poStatusRecMap [ statusRec . PO ] = append ( poStatusRecMap [ statusRec . PO ] , statusRec )
}
}
_ , exist := POMap [ serialOrderData . Process . Name ]
if ! exist {
POMap [ serialOrderData . Process . Name ] = nil
titleLi = append ( titleLi , serialOrderData . Process . Name )
}
//_, exist := POMap[serialOrderData.Process.Name]
//if !exist {
// POMap[serialOrderData.Process.Name] = nil
// titleLi = append(titleLi, serialOrderData.Process.Name)
//}
var startTime string
li , exist := poStatusRecMap [ serialOrderData . SerialOrderPOLst . PO ]
@ -608,6 +647,7 @@ func (impl *SerialOrderServiceImplement) GetSerialOrderOPTrace(user *models.User
}
poData := POData {
PO : serialOrderData . Process . PO ,
StartTime : startTime ,
Status : serialOrderData . SerialOrderStatus . Status ,
}
@ -615,28 +655,47 @@ func (impl *SerialOrderServiceImplement) GetSerialOrderOPTrace(user *models.User
serialOrderPOData := SerialOrderPOData {
SerialOrderId : serialOrderData . SerialOrder . SerialOrderId ,
}
serialOrderPOData . POLi = make ( [ ] POData , 0 )
serialOrderPOData . POLi = append ( serialOrderPOData . POLi , poData )
serialOrderPOData . POMap = make ( map [ int ] POData )
serialOrderPOData . POMap [ poData . PO ] = poData
serialOrderLi = append ( serialOrderLi , serialOrderPOData )
} else {
lastData := serialOrderLi [ len ( serialOrderLi ) - 1 ]
if lastData . SerialOrderId == serialOrderData . SerialOrder . SerialOrderId {
lastData . POLi = append ( lastData . POLi , poData )
lastData . POMap [ poData . PO ] = poData
serialOrderLi [ len ( serialOrderLi ) - 1 ] = lastData
} else {
serialOrderPOData := SerialOrderPOData {
SerialOrderId : serialOrderData . SerialOrder . SerialOrderId ,
}
serialOrderPOData . POLi = make ( [ ] POData , 0 )
serialOrderPOData . POLi = append ( serialOrderPOData . POLi , poData )
serialOrderPOData . POMap = make ( map [ int ] POData , 0 )
serialOrderPOData . POMap [ poData . PO ] = poData
serialOrderLi = append ( serialOrderLi , serialOrderPOData )
}
}
}
dealLi := make ( [ ] SerialOrderPOLiData , 0 , len ( serialOrderLi ) )
// 组建最后的响应体 不同产线不同工序的问题
for _ , data := range serialOrderLi {
var poData SerialOrderPOLiData
poData . SerialOrderId = data . SerialOrderId
poData . POLi = make ( [ ] POData , 0 , len ( data . POMap ) )
for _ , poTitle := range poTitleLi {
innerPo , exist := data . POMap [ poTitle ]
if ! exist {
innerPo = POData {
PO : poTitle ,
Status : 0 ,
}
}
poData . POLi = append ( poData . POLi , innerPo )
}
dealLi = append ( dealLi , poData )
}
result := & Result {
TitleLi : titleLi ,
Data : serialOrderLi ,
Data : deal Li,
}
return result , nil
@ -728,7 +787,7 @@ func (impl SerialOrderServiceImplement) ExportSerialOrderTraceData(user *models.
opTraceTitle := [ ] string {
"工单总成" ,
"工单批次号" ,
"工单Serial ID" ,
"序列 工单ID" ,
"工序" ,
"执行工位" ,
"数据描述" ,
@ -740,8 +799,9 @@ func (impl SerialOrderServiceImplement) ExportSerialOrderTraceData(user *models.
dao := dal . NewSerialOrderPOLstDAO ( session , user . Pid , user . Userid )
ngDao := baseDal . NewPrintInfoCreateRecordDAO ( session , user . Pid , user . Userid )
opDao := dal . NewSerialOrderOPDetailRecvDataLstDAO ( session , user . Pid , user . Userid )
work OrderDao := dal . NewWork OrderDAO ( session , user . Pid , user . Userid )
serial OrderDao := dal . NewSerial OrderDAO ( session , user . Pid , user . Userid )
workPlaceDao := baseDal . NewWorkPlaceDAO ( session , user . Pid , user . Userid )
roleRelDao := baseDal . NewRoleRelDAO ( session , user . Pid , user . Userid )
if NGCode != "" {
ngDataLi , err := ngDao . Select ( [ ] grmi . Predicate { baseMeta . PrintInfoCreateRecord_CreateId . NewPredicate ( grmi . Equal , NGCode ) } , nil )
if err != nil {
@ -755,19 +815,34 @@ func (impl SerialOrderServiceImplement) ExportSerialOrderTraceData(user *models.
if repair {
status = baseModel . WO_STATUS_INTERRUPT
}
var serialOrderDataLi [ ] model . SerialOrderPOData
if workOrderId == "" && workLineId == "" && date == "" && serialOrderId == "" && NGCode == "" && status == 0 && ! repair {
workOrder , err := workOrderDao . SelectRunningWorkOrder ( )
relLi , err := roleRelDao . Select ( [ ] grmi . Predicate { baseMeta . RoleRel_RoleId . NewPredicate ( grmi . Equal , user . RoleId ) } , [ ] grmi . Field { baseMeta . RoleRel_WorkLineid } )
if err != nil {
return "" , grmi . NewBusinessError ( "查询默认的workOrder 失败, error:" + err . Error ( ) )
return "" , grmi . NewBusinessError ( "查询角色绑定产线 失败, error:" + err . Error ( ) )
}
if workOrder == nil {
return "" , grmi . NewBusinessError ( "未查询到有效的批次工单" )
if len ( relLi ) == 0 {
return "" , grmi . NewBusinessError ( "角色未关联产线, error:" + err . Error ( ) )
}
workLineId := relLi [ 0 ] . WorkLineid
// 如果查询条件都为空 则按CreateTime降序排列 查询10条80 或者98的数据 + 40条80一下的数据
orderIdLi , err := serialOrderDao . GetDefaultDisplay ( workLineId )
if err != nil {
return "" , grmi . NewBusinessError ( "查询默认展示工单数据失败, error:" + err . Error ( ) )
}
if len ( orderIdLi ) == 0 {
return "" , grmi . NewBusinessError ( "角色关联的产线未查询到工单" )
}
serialOrderDataLi , err = dao . SelectDefaultDisplaySerialOrder ( orderIdLi )
if err != nil {
return "" , grmi . NewBusinessError ( "查询工单数据失败, error:" + err . Error ( ) )
}
} else {
serialOrderDataLi , err = dao . SelectDisplaySerialOrder ( workLineId , workOrderId , serialOrderId , date , status )
if err != nil {
return "" , grmi . NewBusinessError ( "查询工单数据失败, error:" + err . Error ( ) )
}
workOrderId = workOrder . WorkOrder . WorkOrderId
}
serialOrderDataLi , err := dao . SelectDisplaySerialOrder ( workLineId , workOrderId , serialOrderId , date , status )
if err != nil {
return "" , grmi . NewBusinessError ( "查询工单数据失败, error:" + err . Error ( ) )
}
traceDataLi := make ( [ ] interface { } , 0 )
serialOrderIdMap := make ( map [ string ] interface { } )
@ -840,3 +915,258 @@ func (impl SerialOrderServiceImplement) ExportSerialOrderTraceData(user *models.
}
return grmi . SaveExcelFile ( traceDataLi , opTraceTitle , "Sheet1" , "数据追溯" )
}
/ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
*
* @ Reference LAPP_LF_MOM_BACKEND / services / om / SerialOrderService . GetSerialOrderOPTraceWithDetail
*
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * /
func ( impl * SerialOrderServiceImplement ) GetSerialOrderOPTraceWithDetail ( user * models . Usertab , workOrderId string , status int , workLineId string , date string , serialOrderId string , NGCode string , repair bool , pageSize int64 , pageNumber int64 ) ( interface { } , error ) {
engine := db . Eloquent . Master ( )
session := engine . NewSession ( )
defer session . Close ( )
dao := dal . NewSerialOrderPOLstDAO ( session , user . Pid , user . Userid )
opDao := dal . NewSerialOrderOPDetailRecvDataLstDAO ( session , user . Pid , user . Userid )
workPlaceDao := baseDal . NewWorkPlaceDAO ( session , user . Pid , user . Userid )
serialOrderDao := dal . NewSerialOrderDAO ( session , user . Pid , user . Userid )
poStatusRecDao := dal . NewSerialOrderPOStatusRecLstDAO ( session , user . Pid , user . Userid )
ngDao := baseDal . NewPrintInfoCreateRecordDAO ( session , user . Pid , user . Userid )
// 如果查询NG条码 则去NG表中查询serialOrderId
if NGCode != "" {
ngDataLi , err := ngDao . Select ( [ ] grmi . Predicate { baseMeta . PrintInfoCreateRecord_CreateId . NewPredicate ( grmi . Equal , NGCode ) } , nil )
if err != nil {
return nil , grmi . NewBusinessError ( "查询NG条码失败, error:" + err . Error ( ) )
}
if len ( ngDataLi ) == 0 {
return nil , grmi . NewBusinessError ( "未查询到该NG条码数据" )
}
serialOrderId = ngDataLi [ 0 ] . SerialOrderId
}
// 如果查询返修 则查询状态为39的工单
if repair {
status = baseModel . WO_STATUS_INTERRUPT
}
serialOrderIdLi , count , err := serialOrderDao . GetDisplaySerialOrder ( workOrderId , status , workLineId , date , serialOrderId , pageSize , pageNumber )
if err != nil {
return nil , grmi . NewBusinessError ( "查询工单数据失败, error:" + err . Error ( ) )
}
traceMap := make ( map [ string ] [ ] model . SerialOrderOPTrace )
workPlaceNrMap := make ( map [ int ] interface { } )
workPlaceNrLi := make ( [ ] interface { } , 0 )
workPlaceMap := make ( map [ int ] string )
for _ , serialOrderId := range serialOrderIdLi {
traceLi := make ( [ ] model . SerialOrderOPTrace , 0 )
opLi , err := opDao . SelectOPDetailData ( serialOrderId , 0 , 0 )
if err != nil {
return nil , grmi . NewBusinessError ( "查询工艺操作数据失败, error:" + err . Error ( ) )
}
for _ , op := range opLi {
_ , exist := workPlaceNrMap [ op . SerialOrderOPDetailRecvDataLst . WorkPlaceNr ]
if ! exist {
workPlaceNrMap [ op . SerialOrderOPDetailRecvDataLst . WorkPlaceNr ] = nil
workPlaceNrLi = append ( workPlaceNrLi , op . SerialOrderOPDetailRecvDataLst . WorkPlaceNr )
}
}
workPlaceLi , err := workPlaceDao . Select ( [ ] grmi . Predicate { baseMeta . WorkPlace_WorkPlaceNr . NewPredicate ( grmi . Include , workPlaceNrLi ... ) } , nil )
if err != nil {
return nil , grmi . NewBusinessError ( "查询工位数据失败, error:" + err . Error ( ) )
}
for _ , workPlace := range workPlaceLi {
workPlaceMap [ workPlace . WorkPlaceNr ] = workPlace . WorkPlaceId
}
for _ , op := range opLi {
if op . SerialOrderOPDetailRecvDataLst . StepType == baseModel . STEP_GUIDE_RULE {
continue
}
if op . SerialOrderOPDetailRecvDataLst . StepType == baseModel . STEP_OPC_RULE && ( op . OPCComRule . ActionType == baseModel . ACTION_TYPE_VERIFY || op . OPCComRule . ActionType == baseModel . ACTION_TYPE_WRITE ) {
continue
}
var stepDesc string
if op . SerialOrderOPDetail . StepType == baseModel . STEP_OPC_RULE {
stepDesc = op . OPCComRule . OPCDesc
} else {
stepDesc = op . Operation . StepDesc
}
var status string
if op . SerialOrderOPDetailRecvDataLst . Status == 1 {
status = "是"
} else {
status = "否"
}
workPlaceId := workPlaceMap [ op . SerialOrderOPDetailRecvDataLst . WorkPlaceNr ]
trace := model . SerialOrderOPTrace {
ArtId : op . SerialOrder . ArtId ,
WorkOrderId : op . SerialOrder . WorkOrderId ,
SerialOrderId : op . SerialOrderOPDetailRecvDataLst . SerialOrderId ,
PO : op . SerialOrderOPDetailRecvDataLst . PO ,
WorkPlaceId : workPlaceId ,
StepDesc : stepDesc ,
RecvData : op . SerialOrderOPDetailRecvDataLst . RecvData ,
Status : status ,
ExecuteTime : op . SerialOrderOPDetailRecvDataLst . CreateTime . ToString ( ) ,
}
if status != "是" {
trace . Remark1 = op . SerialOrderOPDetailRecvDataLst . Remark1
}
traceLi = append ( traceLi , trace )
}
traceMap [ serialOrderId ] = traceLi
}
serialOrderDataLi , err := dao . SelectDefaultDisplaySerialOrder ( serialOrderIdLi )
if err != nil {
return nil , grmi . NewBusinessError ( "查询工单数据失败, error:" + err . Error ( ) )
}
// 构建响应数据
// 标题头
titleLi := make ( [ ] string , 0 )
poTitleLi := make ( [ ] int , 0 )
type POData struct {
PO int ` json:"po" `
StartTime string ` json:"startTime" `
Status int ` json:"status" `
OPDetailLi [ ] model . SerialOrderOPTrace ` json:"oPDetailLi" `
}
// 临时行行数据
type SerialOrderPOData struct {
SerialOrderId string ` json:"serialOrderId" `
POMap map [ int ] POData ` json:"poMap" `
}
type SerialOrderPOLiData struct {
SerialOrderId string ` json:"serialOrderId" `
POLi [ ] POData ` json:"poLi" `
}
type Result struct {
TitleLi [ ] string ` json:"titleLi" `
Data [ ] SerialOrderPOLiData ` json:"data" `
}
serialOrderLi := make ( [ ] SerialOrderPOData , 0 )
var currentSerialOrderId string
POMap := make ( map [ string ] interface { } )
// 组织工序标题头部数据
for _ , serialOrderData := range serialOrderDataLi {
_ , exist := POMap [ serialOrderData . Process . Name ]
if ! exist {
POMap [ serialOrderData . Process . Name ] = nil
titleLi = append ( titleLi , serialOrderData . Process . Name )
poTitleLi = append ( poTitleLi , serialOrderData . Process . PO )
}
}
var poStatusRecMap map [ int ] [ ] model . SerialOrderPOStatusRecLst
// 遍历工单工序数据
for _ , serialOrderData := range serialOrderDataLi {
// 查询serialOrderId下的所有操作数据
if currentSerialOrderId == "" {
currentSerialOrderId = serialOrderData . SerialOrder . SerialOrderId
poStatusRecLi , err := poStatusRecDao . Select ( [ ] grmi . Predicate { meta . SerialOrderPOStatusRecLst_SerialOrderId . NewPredicate ( grmi . Equal , serialOrderData . SerialOrder . SerialOrderId ) , meta . SerialOrderPOStatusRecLst_Status . NewPredicate ( grmi . Equal , baseModel . ORDER_STATUS_RUNNING ) } , [ ] grmi . Field { meta . SerialOrderPOStatusRecLst_Pos } )
if err != nil {
return nil , grmi . NewBusinessError ( "查询工序开始时间失败, error:" + err . Error ( ) )
}
poStatusRecMap = make ( map [ int ] [ ] model . SerialOrderPOStatusRecLst )
for _ , statusRec := range poStatusRecLi {
_ , exist := poStatusRecMap [ statusRec . PO ]
if ! exist {
poStatusRecMap [ statusRec . PO ] = make ( [ ] model . SerialOrderPOStatusRecLst , 0 )
}
poStatusRecMap [ statusRec . PO ] = append ( poStatusRecMap [ statusRec . PO ] , statusRec )
}
}
if currentSerialOrderId != serialOrderData . SerialOrder . SerialOrderId {
currentSerialOrderId = serialOrderData . SerialOrder . SerialOrderId
poStatusRecLi , err := poStatusRecDao . Select ( [ ] grmi . Predicate { meta . SerialOrderPOStatusRecLst_SerialOrderId . NewPredicate ( grmi . Equal , serialOrderData . SerialOrder . SerialOrderId ) , meta . SerialOrderPOStatusRecLst_Status . NewPredicate ( grmi . Equal , baseModel . ORDER_STATUS_RUNNING ) } , [ ] grmi . Field { meta . SerialOrderPOStatusRecLst_Pos } )
if err != nil {
return nil , grmi . NewBusinessError ( "查询工序开始时间失败, error:" + err . Error ( ) )
}
poStatusRecMap = make ( map [ int ] [ ] model . SerialOrderPOStatusRecLst )
for _ , statusRec := range poStatusRecLi {
_ , exist := poStatusRecMap [ statusRec . PO ]
if ! exist {
poStatusRecMap [ statusRec . PO ] = make ( [ ] model . SerialOrderPOStatusRecLst , 0 )
}
poStatusRecMap [ statusRec . PO ] = append ( poStatusRecMap [ statusRec . PO ] , statusRec )
}
}
var startTime string
li , exist := poStatusRecMap [ serialOrderData . SerialOrderPOLst . PO ]
if exist {
if len ( li ) > 0 {
startTime = li [ len ( li ) - 1 ] . CreateTime . ToString ( )
}
}
poData := POData {
PO : serialOrderData . Process . PO ,
StartTime : startTime ,
Status : serialOrderData . SerialOrderStatus . Status ,
}
if len ( serialOrderLi ) == 0 {
serialOrderPOData := SerialOrderPOData {
SerialOrderId : serialOrderData . SerialOrder . SerialOrderId ,
}
serialOrderPOData . POMap = make ( map [ int ] POData )
serialOrderPOData . POMap [ poData . PO ] = poData
serialOrderLi = append ( serialOrderLi , serialOrderPOData )
} else {
lastData := serialOrderLi [ len ( serialOrderLi ) - 1 ]
if lastData . SerialOrderId == serialOrderData . SerialOrder . SerialOrderId {
lastData . POMap [ poData . PO ] = poData
serialOrderLi [ len ( serialOrderLi ) - 1 ] = lastData
} else {
serialOrderPOData := SerialOrderPOData {
SerialOrderId : serialOrderData . SerialOrder . SerialOrderId ,
}
serialOrderPOData . POMap = make ( map [ int ] POData , 0 )
serialOrderPOData . POMap [ poData . PO ] = poData
serialOrderLi = append ( serialOrderLi , serialOrderPOData )
}
}
}
dealLi := make ( [ ] SerialOrderPOLiData , 0 , len ( serialOrderLi ) )
// 组建最后的响应体 不同产线不同工序的问题
for _ , data := range serialOrderLi {
var poData SerialOrderPOLiData
poData . SerialOrderId = data . SerialOrderId
poData . POLi = make ( [ ] POData , 0 , len ( data . POMap ) )
for _ , poTitle := range poTitleLi {
innerPo , exist := data . POMap [ poTitle ]
if ! exist {
innerPo = POData {
PO : poTitle ,
Status : 0 ,
OPDetailLi : make ( [ ] model . SerialOrderOPTrace , 0 ) ,
}
} else {
traceLi := traceMap [ data . SerialOrderId ]
innerPo . OPDetailLi = make ( [ ] model . SerialOrderOPTrace , 0 )
for _ , trace := range traceLi {
if trace . PO == poTitle {
innerPo . OPDetailLi = append ( innerPo . OPDetailLi , trace )
}
}
}
poData . POLi = append ( poData . POLi , innerPo )
}
dealLi = append ( dealLi , poData )
}
result := & Result {
TitleLi : titleLi ,
Data : dealLi ,
}
pageResult := grmi . PagingResult {
Records : result ,
Count : count ,
PageNumber : pageNumber ,
PageSize : pageSize ,
}
return pageResult , nil
}