lazhen
2024-10-31 1416622ccad797dc3602b6672ca59137bab49c7e
_Main/BL/Type_EnginePipelineReport/Method_Generate0.qbl
@@ -43,7 +43,7 @@
      showrowccproduction   := EnginePipelineRow::CraeteCellValueForRow( this, rowname.Concat( '长春产量' ), row.Name(), '', showrowdlproduction.RowNr() + 1 );
      showrowdemand         := EnginePipelineRow::CraeteCellValueForRow( this, rowname.Concat( '总需求' ), row.Name(), '', showrowccproduction.RowNr() + 1 );
      rownr                 := showrowdemand.RowNr() + 1;
      modelsnr              := showrowdemand.RowNr() + 3;
      modelsnr              := showrowdemand.RowNr() + 4;
      uniquemodels          := selectuniquevalues( row, Cell.Demand, demand, true, demand.Model() );
      demandrows            := construct( EnginePipelineRows );
      traverse( uniquemodels, Elements, e ){
@@ -67,87 +67,63 @@
        
        //生产
        productionqty       := sum( daycells, Elements, cell, cell.ProductionQuantity() );
        production          := column.CellValue( relnew, Value := [String]productionqty );
        showrowproduction.CellValue( relinsert, production );
        production          := selectobject( column, CellValue, c, c.Row() = showrowproduction );
        production.Value( [String]productionqty );
        sumproduction       := selectobject( column, CellValue, c, c.Row() = sumrowproduction );
        if( isnull( sumproduction ) ){
          sumproduction     := column.CellValue( relnew, Value := [String]0 );
          sumrowproduction.CellValue( relinsert, sumproduction );
        }
        sumproduction.Value( [String]( [Real]sumproduction.Value() + productionqty ) );
        //大连产量
        dlproductionqty     := sum( daycells, Elements, cell, cell.Production().DLProduction() );
        dlproduction        := column.CellValue( relnew, Value := [String]dlproductionqty );
        showrowdlproduction.CellValue( relinsert, dlproduction );
        dlproductionqty     := sum( daycells, Elements.Production, cellproduction, cellproduction.DLProduction() );
        dlproduction        := selectobject( column, CellValue, c, c.Row() = showrowdlproduction );
        dlproduction.Value( [String]dlproductionqty );
        sumdlproduction     := selectobject( column, CellValue, c, c.Row() = sumrowdlproduction );
        if( isnull( sumdlproduction ) ){
          sumdlproduction   := column.CellValue( relnew, Value := [String]0 );
          sumrowdlproduction.CellValue( relinsert, sumdlproduction );
        }
        sumdlproduction.Value( [String]( [Real]sumdlproduction.Value() + dlproductionqty ) );
        //长春产量
        ccproductionqty     := sum( daycells, Elements, cell, cell.Production().CCProduction() );
        ccproduction        := column.CellValue( relnew, Value := [String]ccproductionqty );
        showrowccproduction.CellValue( relinsert, ccproduction );
        ccproductionqty     := sum( daycells, Elements.Production, cellproduction, cellproduction.CCProduction() );
        ccproduction        := selectobject( column, CellValue, c, c.Row() = showrowccproduction );
        ccproduction.Value( [String]ccproductionqty );
        sumccproduction     := selectobject( column, CellValue, c, c.Row() = sumrowccproduction );
        if( isnull( sumccproduction ) ){
          sumccproduction   := column.CellValue( relnew, Value := [String]0 );
          sumrowccproduction.CellValue( relinsert, sumccproduction );
        }
        sumccproduction.Value( [String]( [Real]sumccproduction.Value() + ccproductionqty ) );
        //需求
        totaldemandqty      := sum( daycells, Elements, cell, cell.DemandQuantity() );
        totaldemand         := column.CellValue( relnew, Value := [String]totaldemandqty );
        showrowdemand.CellValue( relinsert, totaldemand );
        totaldemand         := selectobject( column, CellValue, c, c.Row() = showrowdemand );
        totaldemand.Value( [String]totaldemandqty );
        sumdemand           := selectobject( column, CellValue, c, c.Row() = sumrowdemand );
        if( isnull( sumdemand ) ){
          sumdemand         := column.CellValue( relnew, Value := [String]0 );
          sumrowdemand.CellValue( relinsert, sumdemand );
        }
        sumdemand.Value( [String]( [Real]sumdemand.Value() + totaldemandqty ) );
        //具体需求
        traverse( demandrows, Elements, demandrow ){
          demandqty         :=  sum( daycells, Elements.Demand, celldemand, celldemand.Model() = demandrow.Demand(), celldemand.Quantity() );
          demandcell        := column.CellValue( relnew, Value := [String]demandqty );
          demandrow.CellValue( relinsert, demandcell );
          demandcell        := selectobject( column, CellValue, c, c.Row() = demandrow );
          demandcell.Value( [String]demandqty );
          sumdemandrow      := selectobject( sumdemandrows, Elements, r, r.Demand() = demandrow.Demand() );
          if( not isnull( sumdemandrow ) ){
            sumdemandcell   := selectobject( column, CellValue, c, c.Row() = sumdemandrow );
            if( isnull( sumdemandcell ) ){
              sumdemandcell := column.CellValue( relnew, Value := [String]0 );
              sumdemandrow.CellValue( relinsert, sumdemandcell );
            }
            sumdemandcell.Value( [String]( [Real]sumdemandcell.Value() + demandqty ) );
          }
        }
        //库存
        inventroyqty             := maxobject( daycells, Elements, e, e.Column().StartDate() ).InventoryQuantity();
        inventory                := column.CellValue( relnew, Value := [String]inventroyqty );
        showrowinventory.CellValue( relinsert, inventory );
        suminventory             := selectobject( column, CellValue, c, c.Row() = sumrowinventory );
        if( isnull( suminventory ) ){
          suminventory           := column.CellValue( relnew, Value := [String]0 );
          sumrowinventory.CellValue( relinsert, suminventory );
        }
        inventroyqty        := maxobject( daycells, Elements, e, e.Column().StartDate() ).InventoryQuantity();
        inventory           := selectobject( column, CellValue, c, c.Row() = showrowinventory );
        inventory.Value( [String]inventroyqty );
        suminventory        := selectobject( column, CellValue, c, c.Row() = sumrowinventory );
        suminventory.Value( [String]( [Real]suminventory.Value() + inventroyqty ) );
      }
    }
    traverse( this, Column, column ){
      for( demandr := sumrowdemand.RowNr() + 1; demandr < sumrowinventory.RowNr(); demandr := demandr + 1 ){
        demandrow              := selectobject( this, Row, r, r.RowNr() = demandr and r.Name() = sumname );
        demandrow           := selectobject( this, Row, r, r.RowNr() = demandr and r.Name() = sumname );
    //    info( '------------------14----------------' );
        if( not isnull( demandrow ) and not exists( demandrow, CellValue, cv, cv.Column() = column ) ){
          demandcell           := column.CellValue( relnew, Value := '' );
          demandcell        := column.CellValue( relnew, Value := '' );
          demandrow.CellValue( relinsert, demandcell );
        }
      }
    }
    
    rows := selectsortedset( this, Row, row, row.Name(), row.RowNr() );
    i    := 0;
    rows                    := selectsortedset( this, Row, row, row.Name(), row.RowNr() );
    i                       := 0;
    traverse( rows, Elements, e ){
      e.RowNr( i );
      i := i + 1;
      i                     := i + 1;
    }
  *]
}