陈清红
2025-04-14 880f3c0257eeb8c37761d484258fdd102a369a19
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
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(), StartDate := excel.StartDate(), EndDate := excel.EndDate()  );
          
          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.StartDate( excel.StartDate() );
        cls.EndDate( excel.EndDate() );
        cls.ChangeLossNumber( [Real]excel.ChangeLossNumber() );
      }
      info( '-------------------', cls.ChangeLossNumber() );
      excel.Delete();
    }
  *]
}