Quintiq file version 2.0 
 | 
#parent: #root 
 | 
StaticMethod Import ( 
 | 
  MacroPlan macroplan, 
 | 
  BinaryValue binaryvalue 
 | 
) 
 | 
{ 
 | 
  TextBody: 
 | 
  [* 
 | 
    // 甄兰鸽 Aug-22-2024 (created) 
 | 
     
 | 
    macroplan.ValidateBroker( typeof( MP_ImportChangeLossSettingsBroker ).ShortName(), macroplan.MP_ImportChangeLossSettingsBroker().Source(), binaryvalue ); 
 | 
    progress( 'Importing lanes', DateTime::ActualTime() ); 
 | 
    macroplan.MP_ImportChangeLossSettingsBroker().ExecuteFromXLS( binaryvalue.AsBinaryData(), true ); 
 | 
     
 | 
    try{ 
 | 
      ChangeLossSettingExcel::CheckImport( macroplan ); 
 | 
    }onerror{ 
 | 
      //校验失败后删除 
 | 
      macroplan.ChangeLossSettingExcel( relflush ); 
 | 
      error( e.GeneralInformation() ); 
 | 
    } 
 | 
    clsset              := construct( ChangeLossSettings ); 
 | 
    //遍历处理导入的数据 
 | 
    traverse( macroplan, ChangeLossSettingExcel, excel ){ 
 | 
      cls               := selectobject(  macroplan, ChangeLossSetting, cls, cls.ProductFirst().ID() = excel.Product1() 
 | 
                                          and cls.ProductSecond().ID() = excel.Product2() 
 | 
                                          and cls.Unit().ID() = excel.Unit() 
 | 
                                          and cls.StartDate() = excel.StartDate() 
 | 
                                          and cls.EndDate() = excel.EndDate() ); 
 | 
      info( excel.ChangeLossNumber() ); 
 | 
      if( isnull( cls ) ){ 
 | 
        product1        := selectobject( macroplan, Product_MP, product, product.ID() = excel.Product1() ); 
 | 
        product2        := selectobject( macroplan, Product_MP, product, product.ID() = excel.Product2() ); 
 | 
        unit            := selectobject( macroplan, Unit, unit, unit.ID() = excel.Unit() ); 
 | 
        feedback        := ''; 
 | 
        if( ChangeLossSetting::ValidateInput( feedback, macroplan, null( ChangeLossSetting ), unit, product1, product2, excel.StartDate(), excel.EndDate(), excel.ChangeLossNumber() ) ){ 
 | 
          cls             := macroplan.ChangeLossSetting( relnew, ChangeLossNumber := [Real]excel.ChangeLossNumber() ); 
 | 
           
 | 
          cls.ProductFirst( relset, product1 ); 
 | 
          cls.ProductSecond( relset, product2 ); 
 | 
          cls.Unit( relset, unit ); 
 | 
          clsset.Add( cls ); 
 | 
        }else{ 
 | 
          traverse( clsset, Elements, e ){ 
 | 
            e.Delete(); 
 | 
          } 
 | 
          error( feedback ); 
 | 
        } 
 | 
      }else { 
 | 
        cls.ChangeLossNumber( [Real]excel.ChangeLossNumber() ); 
 | 
      } 
 | 
      info( '-------------------', cls.ChangeLossNumber() ); 
 | 
      excel.Delete(); 
 | 
    } 
 | 
  *] 
 | 
} 
 |