|  |  |  | 
|---|
|  |  |  | Method MappingOperationBOMData ( | 
|---|
|  |  |  | Strings businessTypes, | 
|---|
|  |  |  | Boolean isKeyProduct, | 
|---|
|  |  |  | Boolean createPurchaseSupplyMaterial | 
|---|
|  |  |  | Boolean createPurchaseSupplyMaterial, | 
|---|
|  |  |  | GlobalOTDTable globalOTDTable | 
|---|
|  |  |  | ) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | TextBody: | 
|---|
|  |  |  | [* | 
|---|
|  |  |  | // yypsybs Aug-21-2023 (created) | 
|---|
|  |  |  |  | 
|---|
|  |  |  | keyProductList := construct( Strings ); | 
|---|
|  |  |  | if( isKeyProduct ) { | 
|---|
|  |  |  | keyProductList := selectuniquevalues( this, MappingProduct, item, item.ProductMajorType()="成品" or item.ProductMajorType()="半成品", item.ID() ); | 
|---|
|  |  |  | keyProductList := selectuniquevalues( globalOTDTable, Global_MappingProduct_MP, item, item.ProductMajorType()="成品" or item.ProductMajorType()="半成品", item.ID() ); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | bomList := selectsortedset(  this, MappingBOM, item, | 
|---|
|  |  |  | organcodelist := selectvalues( globalOTDTable, BusinessType.OrganCode, organ, businessTypes.Find( organ.BusinessType().BusinessTypeName() ) <> -1, organ.OrganCodeName() ); | 
|---|
|  |  |  | bomList := selectsortedset(  globalOTDTable, Global_MappingOperationBOM, item, | 
|---|
|  |  |  | ifexpr( isnull( businessTypes ) or businessTypes.Size() = 0, | 
|---|
|  |  |  | true, | 
|---|
|  |  |  | //                                     businessTypes.Difference( businessTypes.Difference( item.BusinessType().Tokenize( ", " ) ) ).Size() > 0 ) | 
|---|
|  |  |  | businessTypes.Find( item.BusinessType() ) >= 0 ) | 
|---|
|  |  |  | ( businessTypes.Find( item.BusinessType() ) >= 0 ) and | 
|---|
|  |  |  | ( organcodelist.Find( item.OrganCode() ) >= 0 ) ) | 
|---|
|  |  |  | //                             and ifexpr( isKeyProduct, | 
|---|
|  |  |  | //                                         keyProductList.Size() > 0 and keyProductList.Find( item.ComponentCode() ) >= 0, | 
|---|
|  |  |  | //                                         true ) | 
|---|
|  |  |  | 
|---|
|  |  |  | // ========分组处理输入======== | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | if( not isnull( stockingPoint)){ | 
|---|
|  |  |  | if( isKeyProduct){ | 
|---|
|  |  |  | keyRows := selectset( routingRows,Elements,routingrow,keyProductList.Find( routingrow.ComponentCode())>=0); | 
|---|
|  |  |  | this.MappingOperationBOMDataRouting( routing,keyRows); | 
|---|
|  |  |  | this.MappingOperationBOMDataRouting( routing,globalOTDTable,keyRows); | 
|---|
|  |  |  | }else{ | 
|---|
|  |  |  | this.MappingOperationBOMDataRouting( routing,routingRows); | 
|---|
|  |  |  | this.MappingOperationBOMDataRouting( routing,globalOTDTable,routingRows); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  | 
|---|
|  |  |  | this.MappingOperationBOMDataSupplyPurchase( bom.OrganCode(), bom.ComponentCode(), bom.ComponentType()); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // | 
|---|
|  |  |  | //keyProductList := construct( Strings ); | 
|---|
|  |  |  | //if( isKeyProduct ) { | 
|---|
|  |  |  | //    keyProductList := selectuniquevalues( globalOTDTable, Global_MappingProduct_MP, item, item.ProductMajorType()="成品" or item.ProductMajorType()="半成品", item.ID() ); | 
|---|
|  |  |  | //} | 
|---|
|  |  |  | //bomList := selectsortedset(  globalOTDTable, Global_MappingOperationBOM, item, | 
|---|
|  |  |  | //                             ifexpr( isnull( businessTypes ) or businessTypes.Size() = 0, | 
|---|
|  |  |  | //                                     true, | 
|---|
|  |  |  | ////                                     businessTypes.Difference( businessTypes.Difference( item.BusinessType().Tokenize( ", " ) ) ).Size() > 0 ) | 
|---|
|  |  |  | //                                     businessTypes.Find( item.BusinessType() ) >= 0 ) | 
|---|
|  |  |  | ////                             and ifexpr( isKeyProduct, | 
|---|
|  |  |  | ////                                         keyProductList.Size() > 0 and keyProductList.Find( item.ComponentCode() ) >= 0, | 
|---|
|  |  |  | ////                                         true ) | 
|---|
|  |  |  | //                             , | 
|---|
|  |  |  | //                             item.OrganCode() + "_" + item.ProductCode() + "_" + item.ProcessSection() ); | 
|---|
|  |  |  | //// 按routing及routingStep分组 | 
|---|
|  |  |  | //routingIds := selectuniquevalues( bomList, Elements, item, true, item.OrganCode() + "_" + item.ProductCode() ); | 
|---|
|  |  |  | //traverse( routingIds, Elements, routingId ) { | 
|---|
|  |  |  | //    routingRows := selectset( bomList, Elements, item, true, routingId = item.OrganCode() + "_" + item.ProductCode() ); | 
|---|
|  |  |  | //    if( routingRows.Size() > 0 ) { | 
|---|
|  |  |  | //        firstRow := routingRows.Element( 0 ); | 
|---|
|  |  |  | ////        stockingPointId := firstRow.OrganCode()  + "_" + firstRow.ProductType() + "_Stock"; | 
|---|
|  |  |  | ////        inputStockingPointId := firstRow.OrganCode()  + "_" + firstRow.ComponentType() + "_Stock"; | 
|---|
|  |  |  | //        stockingPointId := firstRow.OrganCode()  + "_Stock"; | 
|---|
|  |  |  | // | 
|---|
|  |  |  | //        // ========检查======== | 
|---|
|  |  |  | //        product := Product_MP::FindProductTypeIndex( firstRow.ProductCode() ); | 
|---|
|  |  |  | //        if( not isnull( product ) ) { | 
|---|
|  |  |  | ////              error( "product : " + firstRow.ProductCode() + " not found" ); | 
|---|
|  |  |  | //          stockingPoint := StockingPoint_MP::FindStockingPointTypeIndex( stockingPointId ); | 
|---|
|  |  |  | // | 
|---|
|  |  |  | ////          info( stockingPointId.AsQUILL() ); | 
|---|
|  |  |  | //  //        if( isnull( stockingPoint ) ) { | 
|---|
|  |  |  | //  //            error( "stockingPoint : " + stockingPointId + " not found" ); | 
|---|
|  |  |  | //  //        } | 
|---|
|  |  |  | //          routing := Routing::FindRoutingTypeIndex(  routingId ); | 
|---|
|  |  |  | //          if( not isnull( routing ) ) { | 
|---|
|  |  |  | ////              error( "routing : " + routingId + " not found" ); | 
|---|
|  |  |  | //            // ========处理输出======== | 
|---|
|  |  |  | //            if( not isnull( stockingPoint ) ) { | 
|---|
|  |  |  | ////              info( 1 ); | 
|---|
|  |  |  | //              operationsInLastSteps := Operation::FindFinalOperationsByRoutingId( this, routingId ); | 
|---|
|  |  |  | //              traverse( operationsInLastSteps, Elements, operationsInLastStep ) { | 
|---|
|  |  |  | //                  operationsInLastStep.CreateOperationBOM( product, stockingPoint, false, true ); | 
|---|
|  |  |  | //                  operationsInLastStep.GetOperationBOM( product.ID(), stockingPoint.ID(), false ).Quantity( 1 ); | 
|---|
|  |  |  | //              } | 
|---|
|  |  |  | //              // ========分组处理输入======== | 
|---|
|  |  |  | // | 
|---|
|  |  |  | //            } | 
|---|
|  |  |  | //            if( not isnull( stockingPoint)){ | 
|---|
|  |  |  | //              if( isKeyProduct){ | 
|---|
|  |  |  | //                  keyRows := selectset( routingRows,Elements,routingrow,keyProductList.Find( routingrow.ComponentCode())>=0); | 
|---|
|  |  |  | //                  this.MappingOperationBOMDataRouting( routing,globalOTDTable,keyRows); | 
|---|
|  |  |  | //                }else{ | 
|---|
|  |  |  | //                  this.MappingOperationBOMDataRouting( routing,globalOTDTable,routingRows); | 
|---|
|  |  |  | //                } | 
|---|
|  |  |  | // | 
|---|
|  |  |  | //            } | 
|---|
|  |  |  | //          } | 
|---|
|  |  |  | //       } | 
|---|
|  |  |  | //    } | 
|---|
|  |  |  | //} | 
|---|
|  |  |  | //if( createPurchaseSupplyMaterial ) { | 
|---|
|  |  |  | //    toCreateBomList := selectuniquevalues( bomList, Elements, item, | 
|---|
|  |  |  | //                                           item.ComponentType() = "P", item.OrganCode() + item.ComponentCode()); | 
|---|
|  |  |  | //    traverse( toCreateBomList, Elements, key ) { | 
|---|
|  |  |  | //        boms := selectset( bomList, Elements, item, item.ComponentType() = "P" and item.OrganCode() + item.ComponentCode() = key ); | 
|---|
|  |  |  | //        bom := boms.First(); | 
|---|
|  |  |  | //        this.MappingOperationBOMDataSupplyPurchase( bom.OrganCode(), bom.ComponentCode(), bom.ComponentType()); | 
|---|
|  |  |  | //    } | 
|---|
|  |  |  | //} | 
|---|
|  |  |  | *] | 
|---|
|  |  |  | } | 
|---|