haorenhui
2023-10-27 1499d8149575493519f2c5b04462c2302a455aa9
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
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
Quintiq file version 2.0
#parent: #root
StaticMethod DoASync (
  MacroPlan macroPlan,
  const BusinessType businessType,
  Boolean isKeyProduct,
  Boolean createPurchaseSupplyMaterial,
  const GlobalOTDTable globalOTDTable
) as stream[MacroPlan]
{
  Description: '单次同步'
  TextBody:
  [*
    // yypsybs Aug-17-2023 (created)
    // 币种和币种汇率
    //Currency_MP::CreateCurrencyFromJson( macroPlan, jsonDataRow );
    info( "Prepare to do sync" )
    info( "Get organ code list" )
    businessTypeName := businessType.BusinessTypeName().Tokenize( "," );
    organcodelist := selectvalues( businessType, OrganCode, organ, true, organ.OrganCodeName() );
    
    if( organcodelist.Size() = 0 ){
      organcodelist := selectvalues( globalOTDTable, Global_MappingOperationBOM, bom,true, bom.OrganCode() );
      }
    
    info( "KeyProduct : " + [String]isKeyProduct )
    info( "Create purchase supply material : " + [String]createPurchaseSupplyMaterial )
    
    // 初始换-0
    info( "Start Initial" );
    macroPlan.InitialUnitAndStockingPoint();
    
    // 单位-1
    UnitOfMeasure_MP::DoASync( globalOTDTable, macroPlan );
    
    // 销售部门-2
    SalesSegment_MP::DoASync( macroPlan, businessTypeName,globalOTDTable );
    
    // Unit-9 
    // 与Operation一同处理
    //info( "BaseConversionFactor Finished, Start Operation Data Broker" );
    //macroPlan.Broker_OTD_Operation().Execute();
    info( "Operation Data Broker Finished, Start Unit Mapping" );
    macroPlan.DoASyncMappingUnitData( businessTypeName ,globalOTDTable, organcodelist);
    
    // 库存点-3
    info( "Sales Segment Finished, Start Get StockingPoint From Api" )
    parameter := select( globalOTDTable, GlobalParameters, param, param.AttributeName() = "StockingPoint" );
    postrequestbody := parameter.PostRequestBody();
    address := parameter.Address();
    url := parameter.AttributeValue();
    port := [Number]parameter.Port();
    data := macroPlan.ApiResponesCheck( address, url, port, postrequestbody );
    macroPlan.ApiStockingPointData( data );
    
    // 货币信息-4
    info( "Get StockingPoint From Api Finished, Start Get CurrencyInfo From Api" )
    parameter := select( globalOTDTable, GlobalParameters, param, param.AttributeName() = "CurrencyInfo" );
    postrequestbody := parameter.PostRequestBody();
    address := parameter.Address();
    url := parameter.AttributeValue();
    port := [Number]parameter.Port();
    data := macroPlan.ApiResponesCheck( address, url, port, postrequestbody );
    macroPlan.ApiCurenciesData( data );
    
    //货币汇率信息-5
    info( "Get CurrencyInfo From Api Finished, Start Get CurrencyRates From Api" )
    parameter := select( globalOTDTable, GlobalParameters, param, param.AttributeName() = "CurrencyRates" );
    postrequestbody := parameter.PostRequestBody();
    address := parameter.Address();
    url := parameter.AttributeValue();
    port := [Number]parameter.Port();
    data := macroPlan.ApiResponesCheck( address, url, port, postrequestbody );
    macroPlan.ApiCurencyRatesData( data );
    
    // 产品物料-6
    //info( "Get CurrencyRates From Api Finished, Start Product Data Broker" )
    //macroPlan.Broker_OTD_Product().Execute();
    info( "Product Data Broker Finished, Start Product Mapping" );
    //testproduct := construct( Strings );
    macroPlan.DoASyncMappingProductData( businessTypeName, globalOTDTable,isKeyProduct );
    
    //单位转换-7
    BaseConversionFactor::DoASync( macroPlan ,globalOTDTable);
    
    // 工艺路线 + BOM-9
    info( "Unit Finished, Start Operation Mapping" );
    macroPlan.DoASyncMappingOperationData( businessTypeName ,globalOTDTable, organcodelist );  
    //info( "Operation Finished, Start BOM Data Broker" );
    //macroPlan.Broker_OTD_BOM().Execute();
    info( "BOM Data Broker Finished, Start BOM Mapping" );
    macroPlan.DoASyncMappingOperationBOMData( businessTypeName, isKeyProduct, createPurchaseSupplyMaterial,globalOTDTable, organcodelist );
    
    //车道信息-10
    info( "BOM Finished, Start Get Lanes From Api" );
    parameter := select( globalOTDTable, GlobalParameters, param, param.AttributeName() = "Lanes" );
    postrequestbody := parameter.PostRequestBody();
    address := parameter.Address();
    url := parameter.AttributeValue();
    port := [Number]parameter.Port();
    data := macroPlan.ApiResponesCheck( address, url, port, postrequestbody );
    macroPlan.ApiLanesData( data );
    
    //车道运输段-11
    info( "Get Lanes From Api Finished, Start Get LaneLegs From Api" );
    parameter := select( globalOTDTable, GlobalParameters, param, param.AttributeName() = "LaneLegs" );
    postrequestbody := parameter.PostRequestBody();
    address := parameter.Address();
    url := parameter.AttributeValue();
    port := [Number]parameter.Port();
    data := macroPlan.ApiResponesCheck( address, url, port, postrequestbody );
    macroPlan.ApiLaneLegsData( data );
    
    // 供应网络(车道)-12
    //info( "Get Lanelegs From Api Finished, Start ProductInLane Data Broker" );
    //macroPlan.Broker_OTD_ProductInLane().Execute();
    info( "ProductInLane Data Broker Finished, Start ProductInLane Mapping" );
    macroPlan.DoASyncMappingProductInLaneData( globalOTDTable,businessTypeName );
    
    // 在库库存数据-13
    //info( "ProductInLane Finished, Start ActualPISPIP Data Broker" );
    //macroPlan.Broker_OTD_ActualPISPIP().Execute();
    info( "ActualPISPIP Data Broker Finished, Start ActualPISPIP Mapping" );
    macroPlan.DoASyncMappingActualPISPIPData( businessTypeName, globalOTDTable,isKeyProduct, organcodelist );
    
    // 在途库存-14
    //info( "ActualPISPIP Finished, Start ExternalSupply Data Broker" );
    //macroPlan.Broker_OTD_ExternalSupply().Execute();
    info( "ExternalSupply Data Broker Finished, Start ExternalSupply Mapping" );
    macroPlan.DoASyncMappingExternalSupplyData( businessTypeName, isKeyProduct ,globalOTDTable, organcodelist );
    
    // 库存成本-15
    InventoryValueAndCost::DoASync( macroPlan,globalOTDTable,businessTypeName );
    
    // todo 制造成本-16
    info( "InventoryCost Finished, Start OperationCost Mapping" );
    macroPlan.DoASyncMappingOperationCostData( globalOTDTable, businessTypeName, organcodelist );
    
    // 订单预测-17
    Forecast::DoASync( macroPlan, businessTypeName, globalOTDTable, organcodelist );
    
    // 订单需求-18
    CustomerOrder::DoASync( macroPlan, businessTypeName, globalOTDTable, organcodelist );
    
    //删除多余报错数据-19
    macroPlan.DeleteSnaityCheck();
    
    //// todo 供应商能力
    //info( "ProviderCapacity::DoSync" )
    
    //// todo 供应商回复
    //info( "ProviderReply::DoSync" )
    
    return emit( macroPlan );
  *]
}