lazhen
2024-08-01 42cda5fdc4f72b3d513bb854bf8aa7d5428649f0
Merge branch 'dev' of http://47.101.211.7:10101/r/VWED into dev-zlg
已重命名2个文件
已添加13个文件
已修改6个文件
已删除6个文件
697 ■■■■■ 文件已修改
_Main/BL/Type_LocalCell_OfflinePlanComparison/Attribute_BaseVersion.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_LocalCell_OfflinePlanComparison/Attribute_BaseVersionValue.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_LocalCell_OfflinePlanComparison/Attribute_CompareVersion.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_LocalCell_OfflinePlanComparison/Attribute_CompareVersionValue.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_LocalCell_OfflinePlanComparison/Attribute_Gap.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_LocalCell_OfflinePlanComparison/DefaultValue_BaseVersionValue.qbl 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_LocalCell_OfflinePlanComparison/DefaultValue_CompareVersionValue.qbl 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_LocalCell_OfflinePlanComparison/Function_CalcGap.qbl 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_LocalCell_OfflinePlanComparison/Method_GetAttributeByName.qbl 44 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_LocalCell_OfflinePlanComparison/StaticMethod_AsyncExport.qbl 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_LocalCell_OfflinePlanComparison/StaticMethod_Compared.qbl 107 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_LocalCell_OfflinePlanComparison/StaticMethod_GetAttributeNames.qbl 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_LocalCell_OfflinePlanComparison/StaticMethod_GetColumnXML.qbl 97 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_LocalCell_OfflinePlanComparison/_ROOT_Type_LocalCell_OfflinePlanComparison.qbl 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_LocalCell_ProductionComparison/Attribute_BaseVersionValue.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_LocalCell_ProductionComparison/Attribute_CompareVersionValue.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_LocalCell_ProductionComparison/Method_GetAttributeByName.qbl 18 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_LocalCell_ProductionComparison/StaticMethod_Compared.qbl 118 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_LocalCell_ProductionComparison/StaticMethod_FillCells.qbl 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_LocalCell_ProductionComparison/StaticMethod_FillRows.qbl 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_LocalCell_ProductionComparison/StaticMethod_GenerateColumnIndex.qbl 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_LocalCell_ProductionComparison/StaticMethod_GetAttributeNames.qbl 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_LocalRow/Attribute_Remark.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_TemplateManager/StaticMethod_GetCurveTemplate.qbl 64 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_TemplateManager/StaticMethod_GetIDSTemplate.qbl 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_TemplateManager/StaticMethod_GetPPATemplate.qbl 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_abgRequirementPreprocessing.def 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_LocalCell_OfflinePlanComparison/Attribute_BaseVersion.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute BaseVersion
{
  #keys: '3[412672.1.76654685][412672.1.76654684][412672.1.76654686]'
  ValueType: Real
}
_Main/BL/Type_LocalCell_OfflinePlanComparison/Attribute_BaseVersionValue.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute BaseVersionValue
{
  #keys: '3[412672.1.76654688][412672.1.76654687][412672.1.76654689]'
  ValueType: String
}
_Main/BL/Type_LocalCell_OfflinePlanComparison/Attribute_CompareVersion.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute CompareVersion
{
  #keys: '3[412672.1.76654691][412672.1.76654690][412672.1.76654692]'
  ValueType: Real
}
_Main/BL/Type_LocalCell_OfflinePlanComparison/Attribute_CompareVersionValue.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute CompareVersionValue
{
  #keys: '3[412672.1.76654694][412672.1.76654693][412672.1.76654695]'
  ValueType: String
}
_Main/BL/Type_LocalCell_OfflinePlanComparison/Attribute_Gap.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute Gap
{
  #keys: '3[412672.1.76654697][412672.1.76654696][412672.1.76654698]'
  ValueType: Real
}
_Main/BL/Type_LocalCell_OfflinePlanComparison/DefaultValue_BaseVersionValue.qbl
_Main/BL/Type_LocalCell_OfflinePlanComparison/DefaultValue_CompareVersionValue.qbl
_Main/BL/Type_LocalCell_OfflinePlanComparison/Function_CalcGap.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,13 @@
Quintiq file version 2.0
#parent: #root
Function CalcGap
{
  TextBody:
  [*
    // rislai Jun-21-2024 (created)
    value := this.BaseVersion() - this.CompareVersion();
    this.Gap( value );
  *]
}
_Main/BL/Type_LocalCell_OfflinePlanComparison/Method_GetAttributeByName.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,44 @@
Quintiq file version 2.0
#parent: #root
Method GetAttributeByName (
  String attributeName
) const declarative as String
{
  TextBody:
  [*
    // rislai Jun-21-2024 (created)
    value := "";
    if( attributeName = "BaseVersion" ){
       if( not this.LocalColumn().IsAttrbuteColumn() ){
         value := this.BaseVersion().Format( "N(Dec)" );
       }
    }
    if( attributeName = "CompareVersion" ){
      if( not this.LocalColumn().IsAttrbuteColumn() ){
        value := this.CompareVersion().Format( "N(Dec)" );
      }
    }
    if( attributeName = "Gap" ){
      if( not this.LocalColumn().IsAttrbuteColumn() ){
        value := this.Gap().Format( "N(Dec)" );
      }
    }
    if( attributeName = "BaseVersionValue" ){
      if( not this.LocalColumn().IsAttrbuteColumn() ){
        value := "0";
      }else{
        value := this.BaseVersionValue();
      }
    }
    if( attributeName = "CompareVersionValue" ){
      if( not this.LocalColumn().IsAttrbuteColumn() ){
        value := "0";
      }else{
        value := this.CompareVersionValue();
      }
    }
    return value;
  *]
}
_Main/BL/Type_LocalCell_OfflinePlanComparison/StaticMethod_AsyncExport.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,32 @@
Quintiq file version 2.0
#parent: #root
StaticMethod AsyncExport (
  RecycleBin recycleBin,
  const constcontent LocalRows rows,
  const constcontent LocalColumns columns,
  const MacroPlan macroPlan
)
{
  TextBody:
  [*
    // rislai Jun-20-2024 (created)
    sortColumns := selectsortedset( columns,Elements,column,true,column.Index());
    attributeNames := LocalCell_DemandComparison::GetAttributeNames();
    columnstring := emit( "" );
    flag := true;
    traverse( sortColumns,Elements,sortColumn ){
      if( flag ){
        attributeXML := rows -> LocalCell_DemandComparison::GetColumnXML( sortColumn,attributeNames,"attribute",macroPlan );
        columnstring := columnstring.Merge( attributeXML )
        flag := false;
      }
      cellxml := rows -> LocalCell_DemandComparison::GetColumnXML( sortColumn,attributeNames ,"data",macroPlan );
      columnstring := columnstring.Merge( cellxml);
    }
    columnstring -> GroupAll() -> ExportXMLManager::AwaitLocalTableXMLData( recycleBin,guard( rows.Element(0).LocalTable().Name(),"Sheet1") );
  *]
}
_Main/BL/Type_LocalCell_OfflinePlanComparison/StaticMethod_Compared.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,107 @@
Quintiq file version 2.0
#parent: #root
StaticMethod Compared (
  RecycleBin recycleBin,
  const OfflinePlanTable baseOfflinePlan,
  const OfflinePlanTable compareOfflinePlan
) as LocalTable
{
  TextBody:
  [*
    // rislai Jun-20-2024 (created)
    table := recycleBin.LocalTable( relnew,Name := "下线计划报表对比");
    localColumns := construct( LocalColumns );
    localColumnIndexTree := NamedValueTree::Create();
    traverse( baseOfflinePlan,OfflinePlanColumn,column,column.ColumnDate() >=  baseOfflinePlan.MacroPlan().StartOfPlanning().Date()){
      localColumnHandle := localColumnIndexTree.GetHandle( column.ColumnDate().AsQUILL() );
      localColumnIndex := guard( localColumnIndexTree.Root().Child( localColumnHandle ),null( NamedValue ));
      if( isnull( localColumnIndex )){
        localColumn := table.LocalColumn( relnew,CustomDate := column.ColumnDate());
        localColumns.Add( localColumn );
        localColumnIndexTree.Root().AddChild( localColumnHandle,localColumns.Size() - 1 );
      }
    }
    traverse( compareOfflinePlan,OfflinePlanColumn,column,column.ColumnDate() >=  compareOfflinePlan.MacroPlan().StartOfPlanning().Date()){
      localColumnHandle := localColumnIndexTree.GetHandle( column.ColumnDate().AsQUILL() );
      localColumnIndex := guard( localColumnIndexTree.Root().Child( localColumnHandle ),null( NamedValue ));
      if( isnull( localColumnIndex )){
        localColumn := table.LocalColumn( relnew,CustomDate := column.ColumnDate());
        localColumns.Add( localColumn );
        localColumnIndexTree.Root().AddChild( localColumnHandle,localColumns.Size() - 1 );
      }
    }
    baseOfflinePlanCells := construct( OfflinePlanCells, constcontent );
    baseOfflinePlanCellIndexTree := NamedValueTree::Create();
    compareOfflinePlanCells := construct( OfflinePlanCells, constcontent );
    compareOfflinePlanCellIndexTree := NamedValueTree::Create();
    localRows := construct( LocalRows );
    localRowIndexTree := NamedValueTree::Create();
    traverse( baseOfflinePlan,OfflinePlanRow,row,row.Type() = "1" ){
      rowKey := row.ProductID() + "@$#" + row.ProductionLine()+ "@$#";
      localRowHandle := localRowIndexTree.GetHandle( rowKey );
      localRowIndex := guard( localRowIndexTree.Root().Child( localRowHandle ),null( NamedValue ));
      if( isnull( localRowIndex )){
        localRow := table.LocalRow( relnew,Index := table.GetRowIndexCache(),CustomName := row.ProductID(),Remark := rowKey );
        localRows.Add( localRow );
        localRowIndexTree.Root().AddChild( localRowHandle,localRows.Size() - 1 );
      }
      traverse( row,OfflinePlanCell,cell ){
        columnKey := cell.OfflinePlanColumn().ColumnDate().AsQUILL();
        cellKey := rowKey + columnKey;
        cellHandle := baseOfflinePlanCellIndexTree.GetHandle( cellKey );
        baseOfflinePlanCells.Add( cell );
        baseOfflinePlanCellIndexTree.Root().AddChild( cellHandle,baseOfflinePlanCells.Size() - 1 );
      }
    }
    traverse( compareOfflinePlan,OfflinePlanRow,row,row.Type() = "1" ){
      rowKey := row.ProductID() + "@$#" + row.ProductionLine()+ "@$#";
      localRowHandle := localRowIndexTree.GetHandle( rowKey );
      localRowIndex := guard( localRowIndexTree.Root().Child( localRowHandle ),null( NamedValue ));
      if( isnull( localRowIndex )){
        localRow := table.LocalRow( relnew,Index := table.GetRowIndexCache(),CustomName := row.ProductID(),Remark := rowKey );
        localRows.Add( localRow );
        localRowIndexTree.Root().AddChild( localRowHandle,localRows.Size() - 1 );
      }
      traverse( row,OfflinePlanCell,cell ){
        columnKey := cell.OfflinePlanColumn().ColumnDate().AsQUILL();
        cellHandle := compareOfflinePlanCellIndexTree.GetHandle( rowKey + columnKey );
        compareOfflinePlanCells.Add( cell );
        compareOfflinePlanCellIndexTree.Root().AddChild( cellHandle,compareOfflinePlanCells.Size() - 1 );
      }
    }
    traverse( localRows,Elements,localRow ){
      rowKey := localRow.Remark();
      traverse( localColumns,Elements,localColumn ){
        columnKey := localColumn.CustomDate().AsQUILL();
        cellKey := rowKey + columnKey;
        baseOfflinePlanCell := constnull( OfflinePlanCell );
        compareOfflinePlanCell := constnull( OfflinePlanCell );
        baseOfflinePlanCellIndex := guard( baseOfflinePlanCellIndexTree.Root().Child( baseOfflinePlanCellIndexTree.GetHandle( cellKey ) ),null( NamedValue ));
        compareOfflinePlanCellIndex := guard( compareOfflinePlanCellIndexTree.Root().Child( compareOfflinePlanCellIndexTree.GetHandle( cellKey ) ),null( NamedValue ));
        if( not isnull( baseOfflinePlanCellIndex )){
          baseOfflinePlanCell := baseOfflinePlanCells.Element( baseOfflinePlanCellIndex.GetValueAsNumber() );
        }
        if( not isnull( compareOfflinePlanCellIndex )){
          compareOfflinePlanCell := compareOfflinePlanCells.Element( compareOfflinePlanCellIndex.GetValueAsNumber() );
        }
        localRow.LocalCell( relnew,LocalCell_OfflinePlanComparison,LocalColumn := localColumn,
                            BaseVersion := ifexpr( isnull( baseOfflinePlanCell),0.0,baseOfflinePlanCell.Quantity()),
                            CompareVersion := ifexpr( isnull( compareOfflinePlanCell),0.0,compareOfflinePlanCell.Quantity()));
      }
    }
    traverse( table,LocalColumn,column ){
      if( column.LocalCell( relsize ) = 0 ){
        column.Delete();
      }
    }
    return table;
  *]
}
_Main/BL/Type_LocalCell_OfflinePlanComparison/StaticMethod_GetAttributeNames.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,16 @@
Quintiq file version 2.0
#parent: #root
StaticMethod GetAttributeNames () const declarative as owning Strings
{
  TextBody:
  [*
    // rislai Jun-21-2024 (created)
    attributeNames := construct( Strings );
    attributeNames.Add( "BaseVersion" );
    attributeNames.Add( "CompareVersion" );
    attributeNames.Add( "Gap" );
    return &attributeNames;
  *]
}
_Main/BL/Type_LocalCell_OfflinePlanComparison/StaticMethod_GetColumnXML.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,97 @@
Quintiq file version 2.0
#parent: #root
StaticMethod GetColumnXML (
  const constcontent LocalRows rows,
  const LocalColumn column,
  const Strings attributeNames,
  String type,
  const MacroPlan macroPlan
) const as String
{
  TextBody:
  [*
    // rislai Jun-21-2024 (created)
    // rislai Jun-20-2024 (created)
    columnXML := "";
    cells := selectsortedset( column, LocalCell.astype( LocalCell_DemandComparison ), cell,
                                  exists( rows,Elements,element,element = cell.LocalRow()), cell.LocalRow().Index());
    if( type = "data" ){
      columnXML := "";
      if( column.IsAttrbuteColumn() ){
        columnXML := "<column><name>" + column.Name() + "</name><type>String</type>";
      }else{
        columnXML := "<column><name>" + column.Name() + "</name><type>Number</type>";
      }
      traverse ( cells, Elements, cell ) {
        traverse( attributeNames ,Elements,e ){
          cellXML := '<cell value="' + cell.GetAttributeByName( e ) + '"/>'
          columnXML := columnXML + cellXML;
        }
      }
      columnXML := columnXML + "</column>";
    }
    if( type = "attribute" ){
      columnXML0_1 := "<column><name>Sales Segment</name><type>String</type>";
      columnXML0_2 := "<column><name>Generation</name><type>String</type>";
      columnXML0_3 := "<column><name>MQB/MLB</name><type>String</type>";
      columnXML0_4 := "<column><name>功率</name><type>String</type>";
      columnXML1 := "<column><name>Product ID</name><type>String</type>";
      columnXML2 := "<column><name>Attribute</name><type>String</type>";
      traverse ( cells, Elements, cell ) {
        flag := true;
        traverse( attributeNames ,Elements,e ){
          if( flag ){
            cellXML := '<cell value="' + cell.LocalRow().Name() + '"/>'
            columnXML1 := columnXML1 + cellXML;
            salesSegment := select( cell.LocalRow().LocalTable(),LocalColumn.LocalCell.astype( LocalCell_DemandComparison ),temp_cell,temp_cell.LocalRow() = cell.LocalRow() and temp_cell.LocalColumn().Name() = "产地");
            if( not isnull( salesSegment )){
              cellXML0_1 := '<cell value="' + ifexpr( salesSegment.BaseVersionValue() <> "空",salesSegment.BaseVersionValue(),salesSegment.CompareVersionValue()) + '"/>';
              columnXML0_1 := columnXML0_1 + cellXML0_1;
            }else{
              cellXML0_1 := '<cell value="  "/>'
              columnXML0_1 := columnXML0_1 + cellXML0_1;
            }
            product := select( macroPlan,Product_MP,product,product.ID() = cell.LocalRow().Name() );
            if( not isnull( product )){
              cellXML0_2 := '<cell value="' + product.Generation() + '"/>';
              cellXML0_3 := '<cell value="' + product.MQBMLB() + '"/>';
              cellXML0_4 := '<cell value="' + product.Power() + '"/>';
              columnXML0_2 := columnXML0_2 + cellXML0_2;
              columnXML0_3 := columnXML0_3 + cellXML0_3;
              columnXML0_4 := columnXML0_4 + cellXML0_4;
            }else{
              cellXML0_2 := '<cell value="  "/>';
              cellXML0_3 := '<cell value="  "/>';
              cellXML0_4 := '<cell value="  "/>';
              columnXML0_2 := columnXML0_2 + cellXML0_2;
              columnXML0_3 := columnXML0_3 + cellXML0_3;
              columnXML0_4 := columnXML0_4 + cellXML0_4;
            }
            flag := false;
          }else{
            cellXML := '<cell value="  "/>'
            columnXML1 := columnXML1 + cellXML;
            cellXML0_1 := '<cell value="  "/>'
            cellXML0_2 := '<cell value="  "/>';
            cellXML0_3 := '<cell value="  "/>';
            cellXML0_4 := '<cell value="  "/>';
            columnXML0_1 := columnXML0_1 + cellXML0_1;
            columnXML0_2 := columnXML0_2 + cellXML0_2;
            columnXML0_3 := columnXML0_3 + cellXML0_3;
            columnXML0_4 := columnXML0_4 + cellXML0_4;
          }
          cellXML := '<cell value="' + e + '"/>'
          columnXML2 := columnXML2 + cellXML;
        }
      }
      columnXML := columnXML0_1 + "</column>" + columnXML0_2 + "</column>" + columnXML0_3 + "</column>" + columnXML0_4 + "</column>" + columnXML1 + "</column>" + columnXML2 + "</column>";
    }
    return columnXML;
  *]
}
_Main/BL/Type_LocalCell_OfflinePlanComparison/_ROOT_Type_LocalCell_OfflinePlanComparison.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,9 @@
Quintiq file version 2.0
#root
#parent: #DomainModel
TypeSpecialization LocalCell_OfflinePlanComparison
{
  #keys: '2[412672.1.76654683][412672.1.76654682]'
  Parent: LocalCell
  StructuredName: 'LocalCell_OfflinePlanComparisons'
}
_Main/BL/Type_LocalCell_ProductionComparison/Attribute_BaseVersionValue.qbl
ÎļþÒÑɾ³ý
_Main/BL/Type_LocalCell_ProductionComparison/Attribute_CompareVersionValue.qbl
ÎļþÒÑɾ³ý
_Main/BL/Type_LocalCell_ProductionComparison/Method_GetAttributeByName.qbl
@@ -9,12 +9,12 @@
    // rislai Jun-21-2024 (created)
    value := "";
    
    if( attributeName = "BaseVersion" ){
    if( attributeName = "Plan" ){
       if( not this.LocalColumn().IsAttrbuteColumn() ){
         value := this.Plan().Format( "N(Dec)" );
       }
    }
    if( attributeName = "CompareVersion" ){
    if( attributeName = "Actual" ){
      if( not this.LocalColumn().IsAttrbuteColumn() ){
        value := this.Actual().Format( "N(Dec)" );
      }
@@ -22,20 +22,6 @@
    if( attributeName = "Gap" ){
      if( not this.LocalColumn().IsAttrbuteColumn() ){
        value := this.Gap().Format( "N(Dec)" );
      }
    }
    if( attributeName = "BaseVersionValue" ){
      if( not this.LocalColumn().IsAttrbuteColumn() ){
        value := "0";
      }else{
        value := this.BaseVersionValue();
      }
    }
    if( attributeName = "CompareVersionValue" ){
      if( not this.LocalColumn().IsAttrbuteColumn() ){
        value := "0";
      }else{
        value := this.CompareVersionValue();
      }
    }
    
_Main/BL/Type_LocalCell_ProductionComparison/StaticMethod_Compared.qbl
ÎļþÒÑɾ³ý
_Main/BL/Type_LocalCell_ProductionComparison/StaticMethod_FillCells.qbl
ÎļþÒÑɾ³ý
_Main/BL/Type_LocalCell_ProductionComparison/StaticMethod_FillRows.qbl
ÎļþÒÑɾ³ý
_Main/BL/Type_LocalCell_ProductionComparison/StaticMethod_GenerateColumnIndex.qbl
ÎļþÒÑɾ³ý
_Main/BL/Type_LocalCell_ProductionComparison/StaticMethod_GetAttributeNames.qbl
@@ -7,8 +7,8 @@
    // rislai Jun-21-2024 (created)
    attributeNames := construct( Strings );
    
    attributeNames.Add( "BaseVersion" );
    attributeNames.Add( "CompareVersion" );
    attributeNames.Add( "Actual" );
    attributeNames.Add( "Plan" );
    attributeNames.Add( "Gap" );
    
    return &attributeNames;
_Main/BL/Type_LocalRow/Attribute_Remark.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute Remark
{
  #keys: '3[412672.1.76649345][412672.1.76649344][412672.1.76649346]'
  ValueType: String
}
_Main/BL/Type_TemplateManager/StaticMethod_GetCurveTemplate.qbl
@@ -23,84 +23,84 @@
    }
    xmlTemplate := xmlTemplate + "</column>";
    
    xmlTemplate := xmlTemplate + "<column><name>AUDI B9 PA</name><type>Number</type>";
    xmlTemplate := xmlTemplate + "<column><name>AUDI B9 PA</name><type>String</type>";
    for( i := 0; i < totalDate ; i++ ){
      xmlTemplate := xmlTemplate + '<cell value="0"/>';
      xmlTemplate := xmlTemplate + '<cell value=""/>';
    }
    xmlTemplate := xmlTemplate + "</column>";
    xmlTemplate := xmlTemplate + "<column><name>AUDI C8</name><type>Number</type>";
    xmlTemplate := xmlTemplate + "<column><name>AUDI C8</name><type>String</type>";
    for( i := 0; i < totalDate ; i++ ){
      xmlTemplate := xmlTemplate + '<cell value="0"/>';
      xmlTemplate := xmlTemplate + '<cell value=""/>';
    }
    xmlTemplate := xmlTemplate + "</column>";
    xmlTemplate := xmlTemplate + "<column><name>Q5 Derivat</name><type>Number</type>";
    xmlTemplate := xmlTemplate + "<column><name>Q5 Derivat</name><type>String</type>";
    for( i := 0; i < totalDate ; i++ ){
      xmlTemplate := xmlTemplate + '<cell value="0"/>';
      xmlTemplate := xmlTemplate + '<cell value=""/>';
    }
    xmlTemplate := xmlTemplate + "</column>";
    xmlTemplate := xmlTemplate + "<column><name>Q5 NF PA</name><type>Number</type>";
    xmlTemplate := xmlTemplate + "<column><name>Q5 NF PA</name><type>String</type>";
    for( i := 0; i < totalDate ; i++ ){
      xmlTemplate := xmlTemplate + '<cell value="0"/>';
      xmlTemplate := xmlTemplate + '<cell value=""/>';
    }
    xmlTemplate := xmlTemplate + "</column>";
    xmlTemplate := xmlTemplate + "<column><name>Magotan B8L FL</name><type>Number</type>";
    xmlTemplate := xmlTemplate + "<column><name>Magotan B8L FL</name><type>String</type>";
    for( i := 0; i < totalDate ; i++ ){
      xmlTemplate := xmlTemplate + '<cell value="0"/>';
      xmlTemplate := xmlTemplate + '<cell value=""/>';
    }
    xmlTemplate := xmlTemplate + "</column>";
    xmlTemplate := xmlTemplate + "<column><name>Magotan B9</name><type>Number</type>";
    xmlTemplate := xmlTemplate + "<column><name>Magotan B9</name><type>String</type>";
    for( i := 0; i < totalDate ; i++ ){
      xmlTemplate := xmlTemplate + '<cell value="0"/>';
      xmlTemplate := xmlTemplate + '<cell value=""/>';
    }
    xmlTemplate := xmlTemplate + "</column>";
    xmlTemplate := xmlTemplate + "<column><name>CC FB PA</name><type>Number</type>";
    xmlTemplate := xmlTemplate + "<column><name>CC FB PA</name><type>String</type>";
    for( i := 0; i < totalDate ; i++ ){
      xmlTemplate := xmlTemplate + '<cell value="0"/>';
      xmlTemplate := xmlTemplate + '<cell value=""/>';
    }
    xmlTemplate := xmlTemplate + "</column>";
    xmlTemplate := xmlTemplate + "<column><name>CC ShBr</name><type>Number</type>";
    xmlTemplate := xmlTemplate + "<column><name>CC ShBr</name><type>String</type>";
    for( i := 0; i < totalDate ; i++ ){
      xmlTemplate := xmlTemplate + '<cell value="0"/>';
      xmlTemplate := xmlTemplate + '<cell value=""/>';
    }
    xmlTemplate := xmlTemplate + "</column>";
    xmlTemplate := xmlTemplate + "<column><name>B-SMV</name><type>Number</type>";
    xmlTemplate := xmlTemplate + "<column><name>B-SMV</name><type>String</type>";
    for( i := 0; i < totalDate ; i++ ){
      xmlTemplate := xmlTemplate + '<cell value="0"/>';
      xmlTemplate := xmlTemplate + '<cell value=""/>';
    }
    xmlTemplate := xmlTemplate + "</column>";
    xmlTemplate := xmlTemplate + "<column><name>B-Main SUV</name><type>Number</type>";
    xmlTemplate := xmlTemplate + "<column><name>B-Main SUV</name><type>String</type>";
    for( i := 0; i < totalDate ; i++ ){
      xmlTemplate := xmlTemplate + '<cell value="0"/>';
      xmlTemplate := xmlTemplate + '<cell value=""/>';
    }
    xmlTemplate := xmlTemplate + "</column>";
    xmlTemplate := xmlTemplate + "<column><name>Tayron PA</name><type>Number</type>";
    xmlTemplate := xmlTemplate + "<column><name>Tayron PA</name><type>String</type>";
    for( i := 0; i < totalDate ; i++ ){
      xmlTemplate := xmlTemplate + '<cell value="0"/>';
      xmlTemplate := xmlTemplate + '<cell value=""/>';
    }
    xmlTemplate := xmlTemplate + "</column>";
    xmlTemplate := xmlTemplate + "<column><name>Tayron NF</name><type>Number</type>";
    xmlTemplate := xmlTemplate + "<column><name>Tayron NF</name><type>String</type>";
    for( i := 0; i < totalDate ; i++ ){
      xmlTemplate := xmlTemplate + '<cell value="0"/>';
      xmlTemplate := xmlTemplate + '<cell value=""/>';
    }
    xmlTemplate := xmlTemplate + "</column>";
    xmlTemplate := xmlTemplate + "<column><name>Tayron X PA</name><type>Number</type>";
    xmlTemplate := xmlTemplate + "<column><name>Tayron X PA</name><type>String</type>";
    for( i := 0; i < totalDate ; i++ ){
      xmlTemplate := xmlTemplate + '<cell value="0"/>';
      xmlTemplate := xmlTemplate + '<cell value=""/>';
    }
    xmlTemplate := xmlTemplate + "</column>";
    xmlTemplate := xmlTemplate + "<column><name>Tayron GTE</name><type>Number</type>";
    xmlTemplate := xmlTemplate + "<column><name>Tayron GTE</name><type>String</type>";
    for( i := 0; i < totalDate ; i++ ){
      xmlTemplate := xmlTemplate + '<cell value="0"/>';
      xmlTemplate := xmlTemplate + '<cell value=""/>';
    }
    xmlTemplate := xmlTemplate + "</column>";
    xmlTemplate := xmlTemplate + "<column><name>Q3 NF</name><type>Number</type>";
    xmlTemplate := xmlTemplate + "<column><name>Q3 NF</name><type>String</type>";
    for( i := 0; i < totalDate ; i++ ){
      xmlTemplate := xmlTemplate + '<cell value="0"/>';
      xmlTemplate := xmlTemplate + '<cell value=""/>';
    }
    xmlTemplate := xmlTemplate + "</column>";
    xmlTemplate := xmlTemplate + "<column><name>Q3 Derivat</name><type>Number</type>";
    xmlTemplate := xmlTemplate + "<column><name>Q3 Derivat</name><type>String</type>";
    for( i := 0; i < totalDate ; i++ ){
      xmlTemplate := xmlTemplate + '<cell value="0"/>';
      xmlTemplate := xmlTemplate + '<cell value=""/>';
    }
    xmlTemplate := xmlTemplate + "</column>";
    
_Main/BL/Type_TemplateManager/StaticMethod_GetIDSTemplate.qbl
@@ -14,22 +14,22 @@
    xmlTemplate := '<?xml version="1.0" encoding="UTF-16"?><table><name>'+ sheetName +'</name>';
    
    xmlTemplate := xmlTemplate + "<column><name>产地</name><type>String</type>";
    xmlTemplate := xmlTemplate + '<cell value="长春"/>';
    // xmlTemplate := xmlTemplate + '<cell value=""/>';
    xmlTemplate := xmlTemplate + "</column>";
    
    xmlTemplate := xmlTemplate + "<column><name>车型</name><type>String</type>";
    xmlTemplate := xmlTemplate + '<cell value="30C"/>';
    // xmlTemplate := xmlTemplate + '<cell value=""/>';
    xmlTemplate := xmlTemplate + "</column>";
    
    xmlTemplate := xmlTemplate + "<column><name>发动机号</name><type>String</type>";
    xmlTemplate := xmlTemplate + '<cell value="06S 100 010 N"/>';
    // xmlTemplate := xmlTemplate + '<cell value=""/>';
    xmlTemplate := xmlTemplate + "</column>";
    
    actualDate := Date::ActualDate();
    
    for( i := 0 ; i < dateNumber ; i++ ){
      xmlTemplate := xmlTemplate + "<column><name>" + (actualDate + i).Format( "Y/M/D" ) + "</name><type>Number</type>";
      xmlTemplate := xmlTemplate + '<cell value="0"/>';
      // xmlTemplate := xmlTemplate + '<cell value=""/>';
      xmlTemplate := xmlTemplate + "</column>";
    }
    
_Main/BL/Type_TemplateManager/StaticMethod_GetPPATemplate.qbl
@@ -11,14 +11,14 @@
    
    xmlTemplate := xmlTemplate + "<column><name>六位码</name><type>String</type>";
    
    xmlTemplate := xmlTemplate + '<cell value="86LC2G"/>';
    // xmlTemplate := xmlTemplate + '<cell value=" "/>';
    xmlTemplate := xmlTemplate + "</column>";
    
    actualDate := Date::ActualDate();
    
    for( i := 1 ; i <= 12 ; i++ ){
      xmlTemplate := xmlTemplate + "<column><name>" + Date::Construct( actualDate.Year(),i,1 ).Format( "Y/M/D" ) + "</name><type>Number</type>";
      xmlTemplate := xmlTemplate + '<cell value="0"/>';
      // xmlTemplate := xmlTemplate + '<cell value=" "/>';
      xmlTemplate := xmlTemplate + "</column>";
    }
    
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_abgRequirementPreprocessing.def
@@ -27,7 +27,7 @@
      Properties:
      [
        Image: 'FLASH'
        Label: 'Requirement upload'
        Label: 'Demand upload'
        Taborder: 1
      ]
    }