lazhen
2024-08-27 b83ab352296df6bb1c74c78168a62c1606e298a5
Merge branch 'dev' of http://47.101.211.7:10101/r/VWED into dev-zlg

# Conflicts:
# _Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ContextMenuInterface.def
已添加12个文件
已修改11个文件
377 ■■■■■ 文件已修改
_Main/BL/Relations/Relation_InterfaceProductionSchedulingPlanPush_InterfaceDataset_InterfaceDat.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_CC_EngineRackCell/StaticMethod_Export.qbl 123 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_InterfaceProductionSchedulingPlanPush/Attribute_Fac.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_InterfaceProductionSchedulingPlanPush/Attribute_FactoryName.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_InterfaceProductionSchedulingPlanPush/Attribute_PlanningDate.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_InterfaceProductionSchedulingPlanPush/Attribute_PlanningQty.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_InterfaceProductionSchedulingPlanPush/Attribute_Product.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_InterfaceProductionSchedulingPlanPush/Attribute_VersionName.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_InterfaceProductionSchedulingPlanPush/StaticMethod_GenerateData.qbl 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_InterfaceProductionSchedulingPlanPush/_ROOT_Type_InterfaceProductionSchedulingPlanPush.qbl 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_LocalCell_Default/Method_SetBreakDayOverTimeDurction.qbl 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_LocalCell_Default/Method_SetOvertimeDurction.qbl 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_LocalCell_Default/StaticMethod_GenerateStandardHoursReport.qbl 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_LocalCell_ScheduleSummary/StaticMethod_Create.qbl 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_UphillRouting/Attribute_isUsed.qbl 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_UphillRouting/DefaultValue_isUsed.qbl 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_UphillRouting/Method_Use.qbl 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ContextMenuInterface.def 18 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_MacroPlanner_ContextMenuInterface_mInterfacePlanInventoryDataPush_O.def 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_MacroPlanner_ContextMenuInterface_mInterfaceProductionSchedulingPla.def 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_DialogCreateEditUphillRoutings/Method_UseUphillRoutings.def 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormCC_EngineRackReport/Component_pHeader.def 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormCC_EngineRackReport/Response_pHeader_bExport_OnClick.def 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_InterfaceProductionSchedulingPlanPush_InterfaceDataset_InterfaceDat.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
Quintiq file version 2.0
#parent: #root
Relation InterfaceProductionSchedulingPlanPush_InterfaceDataset_InterfaceDataset_InterfaceProductionSchedulingPlanPush
{
  #keys: '1[415754.0.136725964]'
  DefaultRelationStrategy
  {
  }
  RelationSide.LeftSide InterfaceDataset
  {
    #keys: '3[415754.0.136725966][415754.0.136725965][415754.0.136725967]'
    Cardinality: '0to1'
    ObjectDefinition: InterfaceProductionSchedulingPlanPush
    OwningSide: 'Reference'
  }
  RelationSide.RightSide InterfaceProductionSchedulingPlanPush
  {
    #keys: '3[415754.0.136725969][415754.0.136725968][415754.0.136725970]'
    Cardinality: '1toN'
    ObjectDefinition: InterfaceDataset
    OwningSide: 'Owned'
  }
}
_Main/BL/Type_CC_EngineRackCell/StaticMethod_Export.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,123 @@
Quintiq file version 2.0
#parent: #root
StaticMethod Export (
  MacroPlan macroPlan
) as BinaryValue
{
  TextBody:
  [*
    xmlDOMI      := XMLDOMImplementation::Create();
    xmlDOM       := xmlDOMI.CreateDocumentFromString( '<?xml version="1.0" encoding="UTF-16"?><table><name>Sheet1</name></table>' );
    tableElement := xmlDOM.GetElementByTagName( "table", 0 );
    // ç¬¬ä¸€åˆ—(名称)
    cerrs       := selectsortedset( macroPlan, CC_EngineRackRow, tempCERR, true, tempCERR.Name() );
    firstColumn := xmlDOM.CreateElement( "column" );
    firstName   := xmlDOM.CreateElement( "name" );
    firstType   := xmlDOM.CreateElement( "type" );
    firstName.TextContent( "" );
    firstType.TextContent( "String" );
    firstColumn.AppendChild( firstName );
    firstColumn.AppendChild( firstType );
    traverse ( cerrs, Elements, cerr ) {
      firstCell := xmlDOM.CreateElement( "cell" );
      firstCell.SetAttribute( "value", cerr.Name() );
      firstColumn.AppendChild( firstCell );
      for ( i := 0; i < 9; i++ ) {
        firstCell := xmlDOM.CreateElement( "cell" );
        firstCell.SetAttribute( "value", "" );
        firstColumn.AppendChild( firstCell );
      }
    }
    tableElement.AppendChild( firstColumn );
    // ç¬¬äºŒåˆ—
    attrs        := construct( Strings ); attrs.Add( "料架空数量" ); attrs.Add( "空料架数量" ); attrs.Add( "外租库入库费用" ); attrs.Add( "外租库出库费用" ); attrs.Add( "外租库运输费用" );
                                          attrs.Add( "外租库仓储费用" ); attrs.Add( "清洗费用" ); attrs.Add( "预计总费用" ); attrs.Add( "系数" ); attrs.Add( "总费用" );
    secondColumn := xmlDOM.CreateElement( "column" );
    secondName   := xmlDOM.CreateElement( "name" );
    secondType   := xmlDOM.CreateElement( "type" );
    secondName.TextContent( "" );
    secondType.TextContent( "String" );
    secondColumn.AppendChild( secondName );
    secondColumn.AppendChild( secondType );
    for ( i := 0; i < cerrs.Size(); i++ ) {
      traverse ( attrs, Elements, attr ) {
        secondCell := xmlDOM.CreateElement( "cell" );
        secondCell.SetAttribute( "value", attr );
        secondColumn.AppendChild( secondCell );
      }
    }
    tableElement.AppendChild( secondColumn );
    // æ—¶é—´åˆ—
    cercs := selectsortedset( macroPlan, CC_EngineRackColumn, tempCERC, true, tempCERC.StartDate() );
    traverse ( cercs, Elements, cerc ) {
      cellColumn := xmlDOM.CreateElement( "column" );
      cellName   := xmlDOM.CreateElement( "name" );
      cellType   := xmlDOM.CreateElement( "type" );
      cellName.TextContent( cerc.StartDate().Format( "M2/D2/Y" ) );
      cellType.TextContent( "Number" );
      cellColumn.AppendChild( cellName );
      cellColumn.AppendChild( cellType );
      cells := selectsortedset( cerc, CC_EngineRackCell, tempCELL, true, tempCELL.CC_EngineRackRow().Name() );
      traverse ( cells, Elements, c ) {
        cell := xmlDOM.CreateElement( "cell" );
        cell.SetAttribute( "value", [String]c.TotalQuantityOfMaterialRacks() ); // æ–™æž¶æ€»æ•°é‡
        cellColumn.AppendChild( cell );
        cell := xmlDOM.CreateElement( "cell" );
        cell.SetAttribute( "value", [String]c.NumberOfEmptyShelves() ); // ç©ºæ–™æž¶æ•°é‡
        cellColumn.AppendChild( cell );
        cell := xmlDOM.CreateElement( "cell" );
        cell.SetAttribute( "value", [String]c.StorageFeesForRentedWarehouses() ); // å¤–租库入库费用
        cellColumn.AppendChild( cell );
        cell := xmlDOM.CreateElement( "cell" );
        cell.SetAttribute( "value", [String]c.OutboundExpensesForRentedWarehouses() ); // å¤–租库出库费用
        cellColumn.AppendChild( cell );
        cell := xmlDOM.CreateElement( "cell" );
        cell.SetAttribute( "value", [String]c.ExternalRentalWarehouseTransportationCosts() ); // å¤–租库运输费用
        cellColumn.AppendChild( cell );
        cell := xmlDOM.CreateElement( "cell" );
        cell.SetAttribute( "value", [String]c.RentalWarehouseStorageFees() ); // å¤–租库仓储费用
        cellColumn.AppendChild( cell );
        cell := xmlDOM.CreateElement( "cell" );
        cell.SetAttribute( "value", [String]c.CleaningCost() ); // æ¸…洗费用
        cellColumn.AppendChild( cell );
        cell := xmlDOM.CreateElement( "cell" );
        cell.SetAttribute( "value", [String]c.EstimatedTotalCost() ); // é¢„计总费用
        cellColumn.AppendChild( cell );
        cell := xmlDOM.CreateElement( "cell" );
        cell.SetAttribute( "value", [String]c.Coefficient() ); // ç³»æ•°
        cellColumn.AppendChild( cell );
        cell := xmlDOM.CreateElement( "cell" );
        cell.SetAttribute( "value", [String]c.TotalCost() ); // æ€»è´¹ç”¨
        cellColumn.AppendChild( cell );
      }
      tableElement.AppendChild( cellColumn );
    }
    xmlString := xmlDOMI.CreateSerializer().WriteToString( xmlDOM )
    //info( xmlString );
    tableGroupHandle := TableGroupHandle::Create( "Sheet1" );
    tableHandle      := TableHandle::ImportXML( BinaryValue::Construct( xmlString ) );
    tableGroupHandle.Add( tableHandle );
    binaryData := XLS::SaveTableGroupToBinaryData( tableGroupHandle, true );
    return binaryData.AsBinaryValue();
  *]
}
_Main/BL/Type_InterfaceProductionSchedulingPlanPush/Attribute_Fac.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute Fac
{
  #keys: '3[415754.0.136760165][415754.0.136760164][415754.0.136760166]'
  Description: '工厂简写'
  ValueType: String
}
_Main/BL/Type_InterfaceProductionSchedulingPlanPush/Attribute_FactoryName.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute FactoryName
{
  #keys: '3[415754.0.136726097][415754.0.136726096][415754.0.136726098]'
  Description: '工厂名称'
  ValueType: String
}
_Main/BL/Type_InterfaceProductionSchedulingPlanPush/Attribute_PlanningDate.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute PlanningDate
{
  #keys: '3[415754.0.136726023][415754.0.136726022][415754.0.136726024]'
  Description: '排产日期'
  ValueType: Date
}
_Main/BL/Type_InterfaceProductionSchedulingPlanPush/Attribute_PlanningQty.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute PlanningQty
{
  #keys: '3[415754.0.136760128][415754.0.136760127][415754.0.136760129]'
  Description: '对应日期的计划数量'
  ValueType: Number
}
_Main/BL/Type_InterfaceProductionSchedulingPlanPush/Attribute_Product.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute Product
{
  #keys: '3[415754.0.136725988][415754.0.136725987][415754.0.136725989]'
  Description: '物料号'
  ValueType: String
}
_Main/BL/Type_InterfaceProductionSchedulingPlanPush/Attribute_VersionName.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute VersionName
{
  #keys: '3[415754.0.136726060][415754.0.136726059][415754.0.136726061]'
  Description: '版本名称'
  ValueType: String
}
_Main/BL/Type_InterfaceProductionSchedulingPlanPush/StaticMethod_GenerateData.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,26 @@
Quintiq file version 2.0
#parent: #root
StaticMethod GenerateData (
  MacroPlan macroPlan,
  InterfaceDataset interfaceDataset
)
{
  TextBody:
  [*
    interfaceDataset.InterfaceProductionSchedulingPlanPush( relflush );
    traverse ( macroPlan, Product_MP.ProductInStockingPoint_MP, pispmp, not pispmp.IsSystem() and pispmp.IsLeaf() and ( pispmp.StockingPointID() = "DL-MoMo" or pispmp.StockingPointID() = "CC-MoMo" ) ) {
      info( pispmp.Name() );
      traverse ( pispmp, ProductInStockingPointInPeriodPlanning.astype( ProductInStockingPointInPeriodPlanningLeaf ), pispippl, not pispippl.IsPeriodFrozen() ) {
        interfaceDataset.InterfaceProductionSchedulingPlanPush( relnew,
                                                                Product      := pispmp.ProductID(),
                                                                PlanningDate := pispippl.Start().Date(),
                                                                PlanningQty  := [Number]pispippl.NewSupplyQuantity(),
                                                                VersionName  := macroPlan.ScenarioName(),
                                                                FactoryName  := ifexpr( pispmp.StockingPointID().Regex( "大连" ) or pispmp.StockingPointID().Regex( "DL" ), "大连工厂", "长春工厂" ),
                                                                Fac          := ifexpr( pispmp.StockingPointID().Regex( "大连" ) or pispmp.StockingPointID().Regex( "DL" ), "DL", "CC" )
                                                               );
      }
    }
  *]
}
_Main/BL/Type_InterfaceProductionSchedulingPlanPush/_ROOT_Type_InterfaceProductionSchedulingPlanPush.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,9 @@
Quintiq file version 2.0
#root
#parent: #DomainModel
Type InterfaceProductionSchedulingPlanPush
{
  #keys: '5[415754.0.136750146][415754.0.136750144][0.0.0][415754.0.136750145][415754.0.136750147]'
  BaseType: Object
  StructuredName: 'InterfaceProductionSchedulingPlanPushs'
}
_Main/BL/Type_LocalCell_Default/Method_SetBreakDayOverTimeDurction.qbl
@@ -9,21 +9,27 @@
    // rislai Jul-10-2024 (created)
    overtime := 0.0;
    nextDayOvertime := 0.0;
    if( outcome = "一班" ){
      overtime := 8.5;
    if( outcome = "1" ){
      overtime := 8;
      nextDayOvertime := 0.0;
    }else if( outcome = "二班" ){
      overtime := 16;
      nextDayOvertime := 0.5;
    }else if( outcome = "2" ){
      overtime := 15;
      nextDayOvertime := 1;
    }else if(outcome = "9+9"){
      overtime := 16;
      nextDayOvertime := 2.5;
      nextDayOvertime := 2;
    }else if(outcome = "10+10"){
      overtime := 16;
      nextDayOvertime := 4.5;
    }else if(outcome = "三班"){
      overtime := 16;
      nextDayOvertime := 8;
      overtime := 17;
      nextDayOvertime := 3;
    }else if(outcome = "1(9)" or outcome = "1(9)"){
      overtime := 9;
      nextDayOvertime := 0;
    }else if(outcome = "1(10)" or outcome = "1(10)"){
      overtime := 10;
      nextDayOvertime := 0;
    }else if(outcome = "3"){
      overtime := 15;
      nextDayOvertime := 7.5;
    }
    this.RealValue( this.RealValue() + overtime + nextDayOvertime );
  *]
_Main/BL/Type_LocalCell_Default/Method_SetOvertimeDurction.qbl
@@ -9,21 +9,27 @@
    // rislai Jul-10-2024 (created)
    overtime := 0.0;
    nextDayOvertime := 0.0;
    if( outcome = "一班" ){
      overtime := 0.5;
    if( outcome = "1" ){
      overtime := 0;
      nextDayOvertime := 0.0;
    }else if( outcome = "二班" ){
      overtime := 8;
      nextDayOvertime := 0.5;
    }else if( outcome = "2" ){
      overtime := 0;
      nextDayOvertime := 0.0;
    }else if(outcome = "9+9"){
      overtime := 8;
      nextDayOvertime := 2.5;
      overtime := 1;
      nextDayOvertime := 1;
    }else if(outcome = "10+10"){
      overtime := 8;
      nextDayOvertime := 4.5;
    }else if(outcome = "三班"){
      overtime := 8;
      nextDayOvertime := 8;
      overtime := 2;
      nextDayOvertime := 2;
    }else if(outcome = "1(9)" or outcome = "1(9)"){
      overtime := 1;
      nextDayOvertime := 0;
    }else if(outcome = "1(10)" or outcome = "1(10)"){
      overtime := 2;
      nextDayOvertime := 0;
    }else if(outcome = "3"){
      overtime := 0;
      nextDayOvertime := 0;
    }
    this.RealValue( this.RealValue() + overtime + nextDayOvertime );
  *]
_Main/BL/Type_LocalCell_Default/StaticMethod_GenerateStandardHoursReport.qbl
@@ -9,7 +9,7 @@
  Description: '标准工时制报表'
  TextBody:
  [*
    // rislai Jul-4-2024 (created)
     // rislai Jul-4-2024 (created)
    table := owner.LocalTable( relnew,Name := "标准工时制报表");
    
    //column1  := table.LocalColumn( relnew,Name := "工厂" ,CustomIndex := 1);
_Main/BL/Type_LocalCell_ScheduleSummary/StaticMethod_Create.qbl
@@ -29,7 +29,7 @@
    traverse( owner,Unit,unit,unit.HasCapacityTypeTime() and not unit.HasChild()){
      // unit.AsEntity().DisplayNameForSelection()
      row := table.MP_Row( relnew,CustomName := unit.ID(),Index := table.GetRowIndexCache() ); 
      throughput := sum( unit,Operation,operation,operation.Throughput() ) / unit.Operation( relsize );
      throughput := guard( sum( unit,Operation,operation,operation.Throughput() ) / unit.Operation( relsize ) , 0 );
      
      unitPeriodTimes := selectset( unit,UnitPeriod.astype( UnitPeriodTime ),unitPeriodTime,
                                        unitPeriodTime.Period_MP().StartDate() >= startDate 
_Main/BL/Type_UphillRouting/Attribute_isUsed.qbl
@@ -1,6 +1,6 @@
Quintiq file version 2.0
#parent: #root
Attribute isUsed
Attribute IsUsed
{
  #keys: '3[414996.1.27011002][414996.1.27011001][414996.1.27011003]'
  ValueType: Boolean
_Main/BL/Type_UphillRouting/DefaultValue_isUsed.qbl
@@ -3,5 +3,5 @@
DefaultValue
{
  ISOValue: 'false'
  TargetAttribute: isUsed
  TargetAttribute: IsUsed
}
_Main/BL/Type_UphillRouting/Method_Use.qbl
@@ -5,7 +5,7 @@
  TextBody:
  [*
    // Akari Aug-26-2024 (created)
    this.isUsed( true );
    this.IsUsed( true );
    
    copy_routing := this.Routing().Copy( this.Suffix() + this.StartDate().Format( "Y-M2-D2") );
    
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ContextMenuInterface.def
@@ -66,8 +66,18 @@
      [
        Description: 'Customer demand(PPA + IDS)'
        Image: 'FLAG_AMBER'
        Taborder: 5
        Taborder: 6
        Title: '客户需求(PPA+IDS)-PPPS'
      ]
    }
    Component mInterfaceProductionSchedulingPlanPush
    {
      #keys: '[415754.0.140441770]'
      BaseType: 'WebMenu'
      Properties:
      [
        Taborder: 5
        Title: '生产排程计划数据推送接口测试'
      ]
    }
    Component MenuIAssemblyOnlinePlanPPPS
@@ -77,7 +87,7 @@
      Properties:
      [
        Image: 'DELIVERY_AMBER'
        Taborder: 6
        Taborder: 7
        Title: '装配上线计划-PPPS'
      ]
    }
@@ -88,7 +98,7 @@
      Properties:
      [
        Image: 'DELIVERY_BLUE'
        Taborder: 7
        Taborder: 8
        Title: '装配上线计划+机加下线计划-PIR'
      ]
    }
@@ -99,7 +109,7 @@
      Properties:
      [
        Image: 'DELIVERY_CYAN'
        Taborder: 8
        Taborder: 9
        Title: '装配上线计划+机加下线计划-MS64'
      ]
    }
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_MacroPlanner_ContextMenuInterface_mInterfacePlanInventoryDataPush_O.def
@@ -5,11 +5,17 @@
  #keys: '[413988.0.1495640258]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebMenu_OnClick'
  Precondition:
  [*
    return not isnull( MacroPlan ) and not isnull( InterfaceDataset );
  *]
  QuillAction
  {
    Body:
    [*
      InterfacePlanInventoryDataPush::GenerateData( MacroPlan, InterfaceDataset );
      WebMessageBox::Success( "推送成功!" );
    *]
    GroupServerCalls: false
  }
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_MacroPlanner_ContextMenuInterface_mInterfaceProductionSchedulingPla.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,22 @@
Quintiq file version 2.0
#parent: ContextMenuInterface/mInterfaceProductionSchedulingPlanPush
Response OnClick () id:Response_MacroPlanner_ContextMenuInterface_mInterfaceProductionSchedulingPlanPush_OnClick
{
  #keys: '[415754.0.141940525]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebMenu_OnClick'
  Precondition:
  [*
    return not isnull( MacroPlan ) and not isnull( InterfaceDataset );
  *]
  QuillAction
  {
    Body:
    [*
      InterfaceProductionSchedulingPlanPush::GenerateData( MacroPlan, InterfaceDataset );
      WebMessageBox::Success( "推送成功!" );
    *]
    GroupServerCalls: false
  }
}
_Main/UI/MacroPlannerWebApp/Component_DialogCreateEditUphillRoutings/Method_UseUphillRoutings.def
@@ -5,7 +5,7 @@
  #keys: '[414996.1.26570568]'
  Body:
  [*
    traverse( dhRouting.Data(),UphillRouting,uphillRouting,not uphillRouting.isUsed() ){
    traverse( dhRouting.Data(),UphillRouting,uphillRouting,not uphillRouting.IsUsed() ){
      uphillRouting.Use(); 
    }
  *]
_Main/UI/MacroPlannerWebApp/Component_FormCC_EngineRackReport/Component_pHeader.def
@@ -15,6 +15,16 @@
        Taborder: 0
      ]
    }
    Component bExport
    {
      #keys: '[415754.0.151340681]'
      BaseType: 'WebButton'
      Properties:
      [
        Image: 'EXPORT1'
        Taborder: 1
      ]
    }
  ]
  Properties:
  [
_Main/UI/MacroPlannerWebApp/Component_FormCC_EngineRackReport/Response_pHeader_bExport_OnClick.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,22 @@
Quintiq file version 2.0
#parent: pHeader/bExport
Response OnClick () id:Response_pHeader_bExport_OnClick
{
  #keys: '[415754.0.151312042]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebButton_OnClick'
  Precondition:
  [*
    return not isnull( MacroPlan );
  *]
  QuillAction
  {
    Body:
    [*
      binaryValue := CC_EngineRackCell::Export( MacroPlan );
      Application.Download( "长春发动机料架报表.xlsx", binaryValue.AsBinaryData() );
    *]
    GroupServerCalls: false
  }
}