From eb1bd2a543a8964ac3b4a2c6269f61001ed53a09 Mon Sep 17 00:00:00 2001
From: hongjli <3117313295@qq.com>
Date: 星期四, 12 十月 2023 18:39:26 +0800
Subject: [PATCH] 产能分配优化

---
 _Main/UI/MacroPlannerWebApp/Component_FormCapacityAllocationResultsRuleConfiguration/Component_listContextMenuCapacityAllocationResultsRuleConfiguration.def          |   21 +
 _Main/UI/MacroPlannerWebApp/Component_FormPanelMaterialSpecializedDisplay/_ROOT_Component_FormPanelMaterialSpecializedDisplay.def                                     |    1 
 _Main/UI/MacroPlannerWebApp/Component_FormCapacityAllocationResultsRuleConfiguration/Response_listContextMenuCapacityAllocationResultsRuleConfiguration_MenuAutoC.def |   20 +
 _Main/BL/Type_CapacityAllocationResults/StaticMethod_Test.qbl                                                                                                         |   11 
 _Main/UI/MacroPlannerWebApp/Views/填产.vw                                                                                                                               |  607 +++++++++++++++++++++++++++++++
 _Main/BL/Type_CustomerAndForecastOrder/StaticMethod_CreateFillingCapacityOrder.qbl                                                                                    |    8 
 _Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_TIANMA_JITUAN_ActionBarGroupSalesViews_ButtonSalesFillingCapacity_O.def                        |   16 
 _Main/BL/Type_CapacityAllocationResults/StaticMethod_IterativeGeneration3.qbl                                                                                         |   54 ++
 _Main/UI/MacroPlannerWebApp/Views/Test.vw                                                                                                                             |  285 --------------
 _Main/BL/Type_CapacityAllocationResultsRuleConfiguration/StaticMethod_AutomaticallyGenerateRule.qbl                                                                   |    8 
 /dev/null                                                                                                                                                             |   17 
 _Main/BL/Type_CustomerAndForecastOrder/StaticMethod_CreateData.qbl                                                                                                    |   20 
 _Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_cmTestAttempt.def                                                                             |    2 
 _Main/UI/MacroPlannerWebApp/Component_FormFillingCapacityScheme/Response_PanelButton_ButtonTransform_OnClick.def                                                      |    9 
 _Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ActionBarGroupSalesViews#633.def                                                              |    4 
 15 files changed, 760 insertions(+), 323 deletions(-)

diff --git a/_Main/BL/Type_CapacityAllocationResults/StaticMethod_IterativeGeneration3.qbl b/_Main/BL/Type_CapacityAllocationResults/StaticMethod_IterativeGeneration3.qbl
new file mode 100644
index 0000000..a3edaf0
--- /dev/null
+++ b/_Main/BL/Type_CapacityAllocationResults/StaticMethod_IterativeGeneration3.qbl
@@ -0,0 +1,54 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod IterativeGeneration3 (
+  Supply_MP smp,
+  Number numberOfPlies,
+  Real fulfillmentQuantity
+)
+{
+  TextBody:
+  [*
+    info( "灞傛暟锛�", numberOfPlies );
+    ontype ( smp ) {
+      NewSupply as ns : {
+        info( "渚涘簲绫诲瀷锛圢ewSupply锛�", "    渚涘簲閲忥細", ns.Quantity(), "    瀹為檯鐢ㄩ噺锛�", fulfillmentQuantity );
+        ontype ( ns.PeriodTask_MP() ) {
+          PeriodTaskOperation as pto : {
+            info( "鎿嶄綔鍛ㄦ湡浠诲姟    ", "渚涘簲鏃堕棿锛�", ns.Start().Format( "Y-M2-D2" ), "    鍛ㄦ湡浠诲姟KEY锛�", pto.Key(), "    ",
+                  ns.ProductInStockingPointInPeriodPlanningLeaf().ProductInStockingPoint_MP().Name() );
+            traverse ( pto, DependentDemand, dd, dd.Quantity() > 0 ) {
+              traverse ( dd, Fulfillment, f ) {
+                smp1 := f.Supply_MP();
+                numberOfPlies++;
+                info( "--------------------------------------------------------------" );
+                fulfillmentQuantity := fulfillmentQuantity * ns.ProcessOutput().astype( OperationOutput ).Quantity() *
+                                                             dd.ProcessInput().astype( OperationInput ).Quantity();
+                CapacityAllocationResults::IterativeGeneration3( smp1, numberOfPlies, fulfillmentQuantity );
+                numberOfPlies--;
+              }
+            }
+          }
+           
+          PeriodTaskLaneLeg as ptll : {
+            targetDependentDemand := select( ptll, DependentDemand, dd, dd.ProcessInput().ProductInStockingPoint_MP().ProductID() = ns.ProductInStockingPointInPeriodPlanningLeaf().ProductInStockingPoint_MP().ProductID() and
+                                             dd.Quantity() = ns.Quantity() );
+            info( "杞﹂亾鍛ㄦ湡浠诲姟    ", "渚涘簲鏃堕棿锛�", ns.Start().Format( "Y-M2-D2" ), "    鍛ㄦ湡浠诲姟KEY锛�", ptll.Key(), "    ", 
+                  targetDependentDemand.ProductInStockingPointInPeriodPlanningLeaf().ProductInStockingPoint_MP().Name() );
+            traverse ( targetDependentDemand, Fulfillment, f ) {
+              smp1 := f.Supply_MP();
+              numberOfPlies++;
+              info( "--------------------------------------------------------------" );
+              CapacityAllocationResults::IterativeGeneration3( smp1, numberOfPlies, f.Quantity() );
+              numberOfPlies--;
+            } 
+          }
+        }
+      }
+          
+      InventorySupply as is : {
+        info( "渚涘簲绫诲瀷锛圛nventorySupply锛�    ", "渚涘簲鏃堕棿锛�", is.Date().Format( "Y-M2-D2" ), "    渚涘簲閲忥細", is.Quantity(), 
+              "    瀹為檯鐢ㄩ噺锛�", fulfillmentQuantity, "    ", is.ProductInStockingPoint_MP().Name() );
+      }
+    }
+  *]
+}
diff --git a/_Main/BL/Type_CapacityAllocationResults/StaticMethod_Test.qbl b/_Main/BL/Type_CapacityAllocationResults/StaticMethod_Test.qbl
index 7eb00a2..7000af7 100644
--- a/_Main/BL/Type_CapacityAllocationResults/StaticMethod_Test.qbl
+++ b/_Main/BL/Type_CapacityAllocationResults/StaticMethod_Test.qbl
@@ -6,10 +6,13 @@
 {
   TextBody:
   [*
-    traverse ( macroPlan, SalesDemand, sd, sd.ProductID() = "ProXOver 1 D2.6 A" and 
-                                           sd.StockingPointID() = "Carco Philadelphia" and
-                                           sd.StartDate() = Date::Construct( 2020, 4, 1 ) ) {
-      info( "鏁伴噺锛�", sd.Quantity() );
+    traverse ( macroPlan, Product_MP.ProductInStockingPoint_MP, pisp, pisp.ProductID() = "ProXOver 1 D2.6 A"        and 
+                                                                      pisp.StockingPointID() = "Carco Philadelphia" ) {
+      traverse ( pisp, ProductInStockingPointInPeriodPlanning.astype( ProductInStockingPointInPeriodPlanningLeaf ).Supply_MP, smp, 
+               smp.ProductInStockingPointInPeriodPlanning().Start().Date() = Date::Construct( 2020, 4, 7 ) and
+               smp.Quantity() > 0 ) {                                                                  
+        CapacityAllocationResults::IterativeGeneration3( smp, 1, smp.Quantity() );
+      }
     }
   *]
 }
diff --git a/_Main/BL/Type_CapacityAllocationResultsRuleConfiguration/StaticMethod_AutomaticallyGenerateRule.qbl b/_Main/BL/Type_CapacityAllocationResultsRuleConfiguration/StaticMethod_AutomaticallyGenerateRule.qbl
new file mode 100644
index 0000000..c2effb5
--- /dev/null
+++ b/_Main/BL/Type_CapacityAllocationResultsRuleConfiguration/StaticMethod_AutomaticallyGenerateRule.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod AutomaticallyGenerateRule (
+  MacroPlan macroPlan,
+  GlobalOTDTable globalOTDTable
+)
+{
+}
diff --git a/_Main/BL/Type_CustomerAndForecastOrder/StaticMethod_CreateData.qbl b/_Main/BL/Type_CustomerAndForecastOrder/StaticMethod_CreateData.qbl
index 0f86052..bb13b39 100644
--- a/_Main/BL/Type_CustomerAndForecastOrder/StaticMethod_CreateData.qbl
+++ b/_Main/BL/Type_CustomerAndForecastOrder/StaticMethod_CreateData.qbl
@@ -1,21 +1,25 @@
 Quintiq file version 2.0
 #parent: #root
 StaticMethod CreateData (
-  MacroPlan macroPlan
+  MacroPlan macroPlan,
+  Scenario scenario
 )
 {
   TextBody:
   [*
+    macroPlan.CustomerAndForecastOrder( relflush );
+    
     traverse ( macroPlan, SalesDemand.astype( CustomerOrder ), co, true ) {
       macroPlan.CustomerAndForecastOrder( relnew,
-                                          OrderID := co.OrderID(),
-                                          ProductID := co.ProductID(),
-                                          BusinessType := co.BusinessType(),
-                                          Customer := co.CustomerName(),
-                                          CustomerID := co.CustomerID(),
-                                          Quantity := co.Quantity(),
+                                          VerNo             := scenario.Name(),
+                                          OrderID           := co.OrderID(),
+                                          ProductID         := co.ProductID(),
+                                          BusinessType      := co.BusinessType(),
+                                          Customer          := co.CustomerName(),
+                                          CustomerID        := co.CustomerID(),
+                                          Quantity          := co.Quantity(),
                                           UnitOfMeasureName := co.UnitOfMeasureName(),
-                                          DemandDate := co.StartDate()
+                                          DemandDate        := co.StartDate()
                                          );
     }
   *]
diff --git a/_Main/BL/Type_CustomerAndForecastOrder/StaticMethod_CreateFillingCapacityOrder.qbl b/_Main/BL/Type_CustomerAndForecastOrder/StaticMethod_CreateFillingCapacityOrder.qbl
index dc39665..9bc36fc 100644
--- a/_Main/BL/Type_CustomerAndForecastOrder/StaticMethod_CreateFillingCapacityOrder.qbl
+++ b/_Main/BL/Type_CustomerAndForecastOrder/StaticMethod_CreateFillingCapacityOrder.qbl
@@ -9,9 +9,9 @@
   [*
     // NBoTk Sep-13-2023 (created)
     
-    owner.FillingCapacityOrder(relnew,ProductID := data.ProductID(),BusinessType := data.BusinessType(),Customer := data.Customer(),CustomerID := data.CustomerID(),
-                                    Quantity := data.Quantity(),UnitOfMeasureName := data.UnitOfMeasureName(),PanelBigSheetQuantity := data.PanelBigSheetQuantity(),SalesAmount := data.SalesAmount(),
-                                    ForecastDemandDate := data.ForecastDemandDate(),DemandDate := data.DemandDate(),VerNo := data.VerNo(),SalesSegmentName := data.SalesSegmentName()
-                                    );
+    //owner.FillingCapacityOrder(relnew,ProductID := data.ProductID(),BusinessType := data.BusinessType(),Customer := data.Customer(),CustomerID := data.CustomerID(),
+    //                                Quantity := data.Quantity(),UnitOfMeasureName := data.UnitOfMeasureName(),PanelBigSheetQuantity := data.PanelBigSheetQuantity(),SalesAmount := data.SalesAmount(),
+    //                                ForecastDemandDate := data.ForecastDemandDate(),DemandDate := data.DemandDate(),VerNo := data.VerNo(),SalesSegmentName := data.SalesSegmentName()
+    //                                );
   *]
 }
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ActionBarGroupSalesViews\043633.def" "b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ActionBarGroupSalesViews\043633.def"
index de9515e..71b9352 100644
--- "a/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ActionBarGroupSalesViews\043633.def"
+++ "b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ActionBarGroupSalesViews\043633.def"
@@ -7,10 +7,6 @@
     {
       #keys: '[414382.0.436830247]'
       BaseType: 'WebButton'
-      Children:
-      [
-        #child: ContextMenuSalesFillingCapacity
-      ]
       Properties:
       [
         Image: 'BLOT'
diff --git a/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ContextMenuSalesFillingCapacity.def b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ContextMenuSalesFillingCapacity.def
deleted file mode 100644
index 0aae48c..0000000
--- a/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ContextMenuSalesFillingCapacity.def
+++ /dev/null
@@ -1,49 +0,0 @@
-Quintiq file version 2.0
-Component ContextMenuSalesFillingCapacity
-{
-  #keys: '[414382.0.437003283]'
-  BaseType: 'WebContextMenu'
-  Children:
-  [
-    Component MenuSalesFillingCapacity
-    {
-      #keys: '[414382.0.437003284]'
-      BaseType: 'WebMenu'
-      Properties:
-      [
-        Image: 'ELEMENT_BLUE'
-        Taborder: 0
-        Title: '澶栧崠CELL'
-        Tooltip: '澶栧崠CELL'
-      ]
-    }
-    Component MenuSalesFillingSchemeDetail
-    {
-      #keys: '[414382.0.436840646]'
-      BaseType: 'WebMenu'
-      Properties:
-      [
-        Image: 'ELEMENT_ORANGE'
-        Taborder: 1
-        Title: '濉骇鏂规鍒楄〃'
-        Tooltip: '濉骇鏂规鍒楄〃'
-      ]
-    }
-    Component MenuSalesFillingSchemeHistorical
-    {
-      #keys: '[414382.0.455751651]'
-      BaseType: 'WebMenu'
-      Properties:
-      [
-        Image: 'ELEMENT_ORANGE'
-        Taborder: 2
-        Title: '濉骇鍘嗗彶璁㈠崟鍒楄〃'
-        Tooltip: '濉骇鍘嗗彶璁㈠崟鍒楄〃'
-      ]
-    }
-  ]
-  Properties:
-  [
-    Taborder: 0
-  ]
-}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_cmTestAttempt.def b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_cmTestAttempt.def
index 4a5d5b5..9dd6fd4 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_cmTestAttempt.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_cmTestAttempt.def
@@ -13,7 +13,7 @@
       [
         Image: 'WATER_FISH'
         Taborder: 0
-        Title: '浜ц兘鍒嗛厤&濉骇'
+        Title: '浜ц兘鍒嗛厤'
       ]
     }
     Component mnAnnualProductionAndSalesReview
diff --git a/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_TIANMA_JITUAN_ActionBarGroupSalesViews_ButtonSalesFillingCapacity_O.def b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_TIANMA_JITUAN_ActionBarGroupSalesViews_ButtonSalesFillingCapacity_O.def
new file mode 100644
index 0000000..21b1e4c
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_TIANMA_JITUAN_ActionBarGroupSalesViews_ButtonSalesFillingCapacity_O.def
@@ -0,0 +1,16 @@
+Quintiq file version 2.0
+#parent: ActionBarGroupSalesViews/ButtonSalesFillingCapacity
+Response OnClick () id:Response_TIANMA_JITUAN_ActionBarGroupSalesViews_ButtonSalesFillingCapacity_OnClick
+{
+  #keys: '[414702.1.55424758]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebButton_OnClick'
+  GroupServerCalls: true
+  QuillAction
+  {
+    Body:
+    [*
+      ApplicationScope.ViewManager().ResetUserViewById( "濉骇", true );
+    *]
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_TIANMA_JITUAN_ContextMenuSalesFillingCapacity_MenuSalesFillingCapac.def b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_TIANMA_JITUAN_ContextMenuSalesFillingCapacity_MenuSalesFillingCapac.def
deleted file mode 100644
index 73a0e05..0000000
--- a/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_TIANMA_JITUAN_ContextMenuSalesFillingCapacity_MenuSalesFillingCapac.def
+++ /dev/null
@@ -1,18 +0,0 @@
-Quintiq file version 2.0
-#parent: ContextMenuSalesFillingCapacity/MenuSalesFillingCapacity
-Response OnClick () id:Response_TIANMA_JITUAN_ContextMenuSalesFillingCapacity_MenuSalesFillingCapacity_OnClick
-{
-  #keys: '[414382.0.437390498]'
-  CanBindMultiple: false
-  DefinitionID: 'Responsedef_WebMenu_OnClick'
-  QuillAction
-  {
-    Body:
-    [*
-      // Open view
-      //ApplicationMacroPlanner.OpenView( 'FillingCapacityOrder', ButtonSalesFillingCapacity );
-      ApplicationScope.ViewManager().ResetUserViewById( "FillingCapacityOrder",true);
-    *]
-    GroupServerCalls: false
-  }
-}
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_TIANMA_JITUAN_ContextMenuSalesFillingCapacity_MenuSalesFillingS\043360.def" "b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_TIANMA_JITUAN_ContextMenuSalesFillingCapacity_MenuSalesFillingS\043360.def"
deleted file mode 100644
index 067c423..0000000
--- "a/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_TIANMA_JITUAN_ContextMenuSalesFillingCapacity_MenuSalesFillingS\043360.def"
+++ /dev/null
@@ -1,17 +0,0 @@
-Quintiq file version 2.0
-#parent: ContextMenuSalesFillingCapacity/MenuSalesFillingSchemeHistorical
-Response OnClick () id:Response_TIANMA_JITUAN_ContextMenuSalesFillingCapacity_MenuSalesFillingSchemeHistorical_OnClick
-{
-  #keys: '[414382.0.455751650]'
-  CanBindMultiple: false
-  DefinitionID: 'Responsedef_WebMenu_OnClick'
-  QuillAction
-  {
-    Body:
-    [*
-      // Open view
-      ApplicationScope.ViewManager().ResetUserViewById( "FillingCapacityOrderHistorical",true);
-    *]
-    GroupServerCalls: false
-  }
-}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_TIANMA_JITUAN_ContextMenuSalesFillingCapacity_MenuSalesFillingSchem.def b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_TIANMA_JITUAN_ContextMenuSalesFillingCapacity_MenuSalesFillingSchem.def
deleted file mode 100644
index 22b6bc7..0000000
--- a/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_TIANMA_JITUAN_ContextMenuSalesFillingCapacity_MenuSalesFillingSchem.def
+++ /dev/null
@@ -1,17 +0,0 @@
-Quintiq file version 2.0
-#parent: ContextMenuSalesFillingCapacity/MenuSalesFillingSchemeDetail
-Response OnClick () id:Response_TIANMA_JITUAN_ContextMenuSalesFillingCapacity_MenuSalesFillingSchemeDetail_OnClick
-{
-  #keys: '[414382.0.439022595]'
-  CanBindMultiple: false
-  DefinitionID: 'Responsedef_WebMenu_OnClick'
-  QuillAction
-  {
-    Body:
-    [*
-      // Open view
-      ApplicationScope.ViewManager().ResetUserViewById( "FillingCapacitySchemeList",true);
-    *]
-    GroupServerCalls: false
-  }
-}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAllocationResultsRuleConfiguration/Component_listContextMenuCapacityAllocationResultsRuleConfiguration.def b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAllocationResultsRuleConfiguration/Component_listContextMenuCapacityAllocationResultsRuleConfiguration.def
index 597ad1b..594eaef 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAllocationResultsRuleConfiguration/Component_listContextMenuCapacityAllocationResultsRuleConfiguration.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAllocationResultsRuleConfiguration/Component_listContextMenuCapacityAllocationResultsRuleConfiguration.def
@@ -51,6 +51,27 @@
         Title: '鍏ㄩ��'
       ]
     }
+    Component Menu666
+    {
+      #keys: '[414702.1.55207187]'
+      BaseType: 'WebMenu'
+      Properties:
+      [
+        Separator: true
+        Taborder: 7
+      ]
+    }
+    Component MenuAutoCreate
+    {
+      #keys: '[414702.1.55207442]'
+      BaseType: 'WebMenu'
+      Properties:
+      [
+        Image: 'COMPONENT'
+        Taborder: 8
+        Title: '鑷姩鍒涘缓瑙勫垯'
+      ]
+    }
   ]
   Properties:
   [
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAllocationResultsRuleConfiguration/Response_listContextMenuCapacityAllocationResultsRuleConfiguration_MenuAutoC.def b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAllocationResultsRuleConfiguration/Response_listContextMenuCapacityAllocationResultsRuleConfiguration_MenuAutoC.def
new file mode 100644
index 0000000..c4e09ed
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAllocationResultsRuleConfiguration/Response_listContextMenuCapacityAllocationResultsRuleConfiguration_MenuAutoC.def
@@ -0,0 +1,20 @@
+Quintiq file version 2.0
+#parent: listContextMenuCapacityAllocationResultsRuleConfiguration/MenuAutoCreate
+Response OnClick () id:Response_listContextMenuCapacityAllocationResultsRuleConfiguration_MenuAutoCreate_OnClick
+{
+  #keys: '[414702.1.55268133]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebMenu_OnClick'
+  GroupServerCalls: true
+  Precondition:
+  [*
+    return not isnull( MacroPlan ) and not isnull( GlobalOTDTable );
+  *]
+  QuillAction
+  {
+    Body:
+    [*
+      //CapacityAllocationResultsRuleConfiguration::AutomaticallyGenerateRule( MacroPlan, GlobalOTDTable );
+    *]
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormFillingCapacityScheme/Response_PanelButton_ButtonTransform_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FormFillingCapacityScheme/Response_PanelButton_ButtonTransform_OnClick.def
index 30c3208..fd6d7b1 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormFillingCapacityScheme/Response_PanelButton_ButtonTransform_OnClick.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormFillingCapacityScheme/Response_PanelButton_ButtonTransform_OnClick.def
@@ -13,7 +13,14 @@
   {
     Body:
     [*
-      CustomerAndForecastOrder::CreateData( MacroPlan );
+      CustomerAndForecastOrder::CreateData( MacroPlan, DataHolderActiveScenario.Data() );
+      
+      message := "鎬昏鍗曚釜鏁帮細"                                                               + 
+                [String]counter( MacroPlan, SalesDemand.astype( CustomerOrder ), cs, true )  + 
+                 "    鎴愬姛杞崲涓暟锛�"                                                         +
+                 [String]counter( MacroPlan, SalesDemand.astype( CustomerOrder ), cs, true )
+      
+      WebMessageBox::Success( message, true );
     *]
     GroupServerCalls: false
   }
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormPanelMaterialSpecializedDisplay/_ROOT_Component_FormPanelMaterialSpecializedDisplay.def b/_Main/UI/MacroPlannerWebApp/Component_FormPanelMaterialSpecializedDisplay/_ROOT_Component_FormPanelMaterialSpecializedDisplay.def
index 74e4ff6..70bf43d 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormPanelMaterialSpecializedDisplay/_ROOT_Component_FormPanelMaterialSpecializedDisplay.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormPanelMaterialSpecializedDisplay/_ROOT_Component_FormPanelMaterialSpecializedDisplay.def
@@ -32,7 +32,6 @@
   ]
   Properties:
   [
-    Description: '涓撴樉'
     Image: 'LAPTOP2'
     Title: '涓撴樉'
   ]
diff --git a/_Main/UI/MacroPlannerWebApp/Views/Test.vw b/_Main/UI/MacroPlannerWebApp/Views/Test.vw
index 808d3e8..f59a1db 100644
--- a/_Main/UI/MacroPlannerWebApp/Views/Test.vw
+++ b/_Main/UI/MacroPlannerWebApp/Views/Test.vw
@@ -159,300 +159,19 @@
           }
         }
       }
-      form_FormCustomerAndForecastOrder
-      {
-        title: 'QTIANMA_JITUAN::FormCustomerAndForecastOrder'
-        shown: true
-        componentID: 'QTIANMA_JITUAN::FormCustomerAndForecastOrder'
-        layout
-        {
-          mode: 'open'
-          rowPosition: 16
-          rowSpan: 16
-          columnPosition: 1
-          columnSpan: 4
-        }
-        components
-        {
-          FormCustomerAndForecastOrder_PanelButton
-          {
-            sizeRatio: 1
-          }
-          FormCustomerAndForecastOrder_ListCustomerAndFillingCapacityOrder
-          {
-          }
-          FormCustomerAndForecastOrder_DataSetLevelCustomerAndFillingCapacityOrder
-          {
-            groupDepth: -1
-            column_VerNo
-            {
-              columnId: 'VerNo'
-              dataPath: 'VerNo'
-              dataType: 'string'
-              index: 0
-              subtotals: ''
-              width: 150
-            }
-            column_OrderID
-            {
-              columnId: 'OrderID'
-              dataPath: 'OrderID'
-              dataType: 'string'
-              index: 1
-              subtotals: ''
-              width: 150
-            }
-            column_ProductID
-            {
-              columnId: 'ProductID'
-              dataPath: 'ProductID'
-              dataType: 'string'
-              index: 2
-              subtotals: ''
-              width: 150
-            }
-            column_BusinessType
-            {
-              columnId: 'BusinessType'
-              dataPath: 'BusinessType'
-              dataType: 'string'
-              index: 3
-              subtotals: ''
-              width: 150
-            }
-            column_Customer
-            {
-              columnId: 'Customer'
-              dataPath: 'Customer'
-              dataType: 'string'
-              index: 4
-              subtotals: ''
-              width: 150
-            }
-            column_ServiceType
-            {
-              columnId: 'ServiceType'
-              dataPath: 'ServiceType'
-              dataType: 'string'
-              index: 5
-              subtotals: ''
-              width: 150
-            }
-            column_Quantity
-            {
-              columnId: 'Quantity'
-              dataPath: 'Quantity'
-              dataType: 'real'
-              index: 6
-              subtotals: ''
-              width: 150
-            }
-            column_UnitOfMeasureName
-            {
-              columnId: 'UnitOfMeasureName'
-              dataPath: 'UnitOfMeasureName'
-              dataType: 'string'
-              index: 7
-              subtotals: ''
-              width: 150
-            }
-            column_PanelBigSheetQuantity
-            {
-              columnId: 'PanelBigSheetQuantity'
-              dataPath: 'PanelBigSheetQuantity'
-              dataType: 'real'
-              index: 8
-              subtotals: ''
-              width: 150
-            }
-            column_SalesAmount
-            {
-              columnId: 'SalesAmount'
-              dataPath: 'SalesAmount'
-              dataType: 'number'
-              index: 9
-              subtotals: ''
-              width: 150
-            }
-            column_ForecastDemandDate
-            {
-              columnId: 'ForecastDemandDate'
-              dataPath: 'ForecastDemandDate'
-              dataType: 'date'
-              index: 10
-              subtotals: ''
-              width: 150
-            }
-            column_DemandDate
-            {
-              columnId: 'DemandDate'
-              dataPath: 'DemandDate'
-              dataType: 'date'
-              index: 11
-              subtotals: ''
-              width: 150
-            }
-          }
-        }
-      }
-      form_FormFillingCapacityOrder
-      {
-        title: 'QTIANMA_JITUAN::FormFillingCapacityOrder'
-        shown: true
-        componentID: 'QTIANMA_JITUAN::FormFillingCapacityOrder'
-        layout
-        {
-          mode: 'open'
-          rowPosition: 16
-          rowSpan: 16
-          columnPosition: 5
-          columnSpan: 8
-        }
-        components
-        {
-          FormFillingCapacityOrder_PanelFillingCapacityOrder
-          {
-            sizeRatio: 1
-          }
-          FormFillingCapacityOrder_ListFillingCapacityOrder
-          {
-          }
-          FormFillingCapacityOrder_DataSetLevelFillingCapacityOrder
-          {
-            groupDepth: -1
-            column_VerNo
-            {
-              columnId: 'VerNo'
-              dataPath: 'VerNo'
-              dataType: 'string'
-              index: 0
-              subtotals: ''
-              width: 150
-            }
-            column_ProductID
-            {
-              columnId: 'ProductID'
-              dataPath: 'ProductID'
-              dataType: 'string'
-              index: 1
-              subtotals: ''
-              width: 150
-            }
-            column_BusinessType
-            {
-              columnId: 'BusinessType'
-              dataPath: 'BusinessType'
-              dataType: 'string'
-              index: 2
-              subtotals: ''
-              width: 150
-            }
-            column_SalesSegmentName
-            {
-              columnId: 'SalesSegmentName'
-              dataPath: 'SalesSegmentName'
-              dataType: 'string'
-              index: 3
-              subtotals: ''
-              width: 150
-            }
-            column_StockingPointID
-            {
-              columnId: 'StockingPointID'
-              dataPath: 'StockingPointID'
-              dataType: 'string'
-              index: 4
-              subtotals: ''
-              width: 150
-            }
-            column_Customer
-            {
-              columnId: 'Customer'
-              dataPath: 'Customer'
-              dataType: 'string'
-              index: 5
-              subtotals: ''
-              width: 150
-            }
-            column_Quantity
-            {
-              columnId: 'Quantity'
-              dataPath: 'Quantity'
-              dataType: 'real'
-              index: 6
-              subtotals: ''
-              width: 150
-            }
-            column_UnitOfMeasureName
-            {
-              columnId: 'UnitOfMeasureName'
-              dataPath: 'UnitOfMeasureName'
-              dataType: 'string'
-              index: 7
-              subtotals: ''
-              width: 150
-            }
-            column_PanelBigSheetQuantity
-            {
-              columnId: 'PanelBigSheetQuantity'
-              dataPath: 'PanelBigSheetQuantity'
-              dataType: 'real'
-              index: 8
-              subtotals: ''
-              width: 150
-            }
-            column_SalesAmount
-            {
-              columnId: 'SalesAmount'
-              dataPath: 'SalesAmount'
-              dataType: 'number'
-              index: 9
-              subtotals: ''
-              width: 150
-            }
-            column_ForecastDemandDate
-            {
-              columnId: 'ForecastDemandDate'
-              dataPath: 'ForecastDemandDate'
-              dataType: 'date'
-              index: 10
-              subtotals: ''
-              width: 150
-            }
-            column_DemandDate
-            {
-              columnId: 'DemandDate'
-              dataPath: 'DemandDate'
-              dataType: 'date'
-              index: 11
-              subtotals: ''
-              width: 150
-            }
-            column_OrderType
-            {
-              columnId: 'OrderType'
-              dataPath: 'OrderType'
-              dataType: 'string'
-              index: 12
-              subtotals: ''
-              width: 150
-            }
-          }
-        }
-      }
     }
     userconfigurableinformation
     {
     }
+    image: 'BEAR'
     page: ''
     group: ''
     index: 0
-    image: 'BEAR'
     description: ''
   }
   formatversion: 2
   id: 'Test'
-  name: '浜ц兘鍒嗛厤_濉骇'
+  name: '浜ц兘鍒嗛厤'
   isglobal: false
   isroot: true
 }
diff --git "a/_Main/UI/MacroPlannerWebApp/Views/\345\241\253\344\272\247.vw" "b/_Main/UI/MacroPlannerWebApp/Views/\345\241\253\344\272\247.vw"
new file mode 100644
index 0000000..12b8317
--- /dev/null
+++ "b/_Main/UI/MacroPlannerWebApp/Views/\345\241\253\344\272\247.vw"
@@ -0,0 +1,607 @@
+Quintiq file version 2.0
+{
+  viewcontents
+  {
+    forms
+    {
+      form_FormCustomerAndForecastOrder
+      {
+        title: 'QTIANMA_JITUAN::FormCustomerAndForecastOrder'
+        shown: true
+        componentID: 'QTIANMA_JITUAN::FormCustomerAndForecastOrder'
+        layout
+        {
+          mode: 'open'
+          rowPosition: 1
+          rowSpan: 16
+          columnPosition: 1
+          columnSpan: 4
+        }
+        components
+        {
+          FormCustomerAndForecastOrder_PanelButton
+          {
+            sizeRatio: 1
+          }
+          FormCustomerAndForecastOrder_ListCustomerAndFillingCapacityOrder
+          {
+          }
+          FormCustomerAndForecastOrder_DataSetLevelCustomerAndFillingCapacityOrder
+          {
+            groupDepth: -1
+            column_VerNo
+            {
+              columnId: 'VerNo'
+              dataPath: 'VerNo'
+              dataType: 'string'
+              index: 0
+              subtotals: ''
+              width: 150
+            }
+            column_OrderID
+            {
+              columnId: 'OrderID'
+              dataPath: 'OrderID'
+              dataType: 'string'
+              index: 1
+              subtotals: ''
+              width: 150
+            }
+            column_ProductID
+            {
+              columnId: 'ProductID'
+              dataPath: 'ProductID'
+              dataType: 'string'
+              index: 2
+              subtotals: ''
+              width: 150
+            }
+            column_BusinessType
+            {
+              columnId: 'BusinessType'
+              dataPath: 'BusinessType'
+              dataType: 'string'
+              index: 3
+              subtotals: ''
+              width: 150
+            }
+            column_Customer
+            {
+              columnId: 'Customer'
+              dataPath: 'Customer'
+              dataType: 'string'
+              index: 4
+              subtotals: ''
+              width: 150
+            }
+            column_ServiceType
+            {
+              columnId: 'ServiceType'
+              dataPath: 'ServiceType'
+              dataType: 'string'
+              index: 5
+              subtotals: ''
+              width: 150
+            }
+            column_Quantity
+            {
+              columnId: 'Quantity'
+              dataPath: 'Quantity'
+              dataType: 'real'
+              index: 6
+              subtotals: ''
+              width: 150
+            }
+            column_UnitOfMeasureName
+            {
+              columnId: 'UnitOfMeasureName'
+              dataPath: 'UnitOfMeasureName'
+              dataType: 'string'
+              index: 7
+              subtotals: ''
+              width: 150
+            }
+            column_PanelBigSheetQuantity
+            {
+              columnId: 'PanelBigSheetQuantity'
+              dataPath: 'PanelBigSheetQuantity'
+              dataType: 'real'
+              index: 8
+              subtotals: ''
+              width: 150
+            }
+            column_SalesAmount
+            {
+              columnId: 'SalesAmount'
+              dataPath: 'SalesAmount'
+              dataType: 'number'
+              index: 9
+              subtotals: ''
+              width: 150
+            }
+            column_ForecastDemandDate
+            {
+              columnId: 'ForecastDemandDate'
+              dataPath: 'ForecastDemandDate'
+              dataType: 'date'
+              index: 10
+              subtotals: ''
+              width: 150
+            }
+            column_DemandDate
+            {
+              columnId: 'DemandDate'
+              dataPath: 'DemandDate'
+              dataType: 'date'
+              index: 11
+              subtotals: ''
+              width: 150
+            }
+          }
+        }
+      }
+      form_FormFillingCapacityOrder
+      {
+        title: 'QTIANMA_JITUAN::FormFillingCapacityOrder'
+        shown: true
+        componentID: 'QTIANMA_JITUAN::FormFillingCapacityOrder'
+        layout
+        {
+          mode: 'open'
+          rowPosition: 1
+          rowSpan: 16
+          columnPosition: 5
+          columnSpan: 8
+        }
+        components
+        {
+          FormFillingCapacityOrder_PanelFillingCapacityOrder
+          {
+            sizeRatio: 1
+          }
+          FormFillingCapacityOrder_ListFillingCapacityOrder
+          {
+          }
+          FormFillingCapacityOrder_DataSetLevelFillingCapacityOrder
+          {
+            groupDepth: -1
+            column_VerNo
+            {
+              columnId: 'VerNo'
+              dataPath: 'VerNo'
+              dataType: 'string'
+              index: 0
+              subtotals: ''
+              width: 150
+            }
+            column_ProductID
+            {
+              columnId: 'ProductID'
+              dataPath: 'ProductID'
+              dataType: 'string'
+              index: 1
+              subtotals: ''
+              width: 150
+            }
+            column_BusinessType
+            {
+              columnId: 'BusinessType'
+              dataPath: 'BusinessType'
+              dataType: 'string'
+              index: 2
+              subtotals: ''
+              width: 150
+            }
+            column_SalesSegmentName
+            {
+              columnId: 'SalesSegmentName'
+              dataPath: 'SalesSegmentName'
+              dataType: 'string'
+              index: 3
+              subtotals: ''
+              width: 150
+            }
+            column_StockingPointID
+            {
+              columnId: 'StockingPointID'
+              dataPath: 'StockingPointID'
+              dataType: 'string'
+              index: 4
+              subtotals: ''
+              width: 150
+            }
+            column_Customer
+            {
+              columnId: 'Customer'
+              dataPath: 'Customer'
+              dataType: 'string'
+              index: 5
+              subtotals: ''
+              width: 150
+            }
+            column_Quantity
+            {
+              columnId: 'Quantity'
+              dataPath: 'Quantity'
+              dataType: 'real'
+              index: 6
+              subtotals: ''
+              width: 150
+            }
+            column_UnitOfMeasureName
+            {
+              columnId: 'UnitOfMeasureName'
+              dataPath: 'UnitOfMeasureName'
+              dataType: 'string'
+              index: 7
+              subtotals: ''
+              width: 150
+            }
+            column_PanelBigSheetQuantity
+            {
+              columnId: 'PanelBigSheetQuantity'
+              dataPath: 'PanelBigSheetQuantity'
+              dataType: 'real'
+              index: 8
+              subtotals: ''
+              width: 150
+            }
+            column_SalesAmount
+            {
+              columnId: 'SalesAmount'
+              dataPath: 'SalesAmount'
+              dataType: 'number'
+              index: 9
+              subtotals: ''
+              width: 150
+            }
+            column_ForecastDemandDate
+            {
+              columnId: 'ForecastDemandDate'
+              dataPath: 'ForecastDemandDate'
+              dataType: 'date'
+              index: 10
+              subtotals: ''
+              width: 150
+            }
+            column_DemandDate
+            {
+              columnId: 'DemandDate'
+              dataPath: 'DemandDate'
+              dataType: 'date'
+              index: 11
+              subtotals: ''
+              width: 150
+            }
+            column_OrderType
+            {
+              columnId: 'OrderType'
+              dataPath: 'OrderType'
+              dataType: 'string'
+              index: 12
+              subtotals: ''
+              width: 150
+            }
+          }
+        }
+      }
+      form_FormCustomerOrders
+      {
+        title: 'QLibMacroPlannerWebUI::FormCustomerOrders'
+        shown: true
+        componentID: 'QLibMacroPlannerWebUI::FormCustomerOrders'
+        layout
+        {
+          mode: 'open'
+          rowPosition: 17
+          rowSpan: 17
+          columnPosition: 1
+          columnSpan: 12
+        }
+        components
+        {
+          FormCustomerOrders_PanelSalesDemands
+          {
+            sizeRatio: 1
+          }
+          FormCustomerOrders_PanelAllSalesDemands
+          {
+            sizeRatio: 2
+          }
+          FormCustomerOrders_ListSalesDemands
+          {
+          }
+          FormCustomerOrders_DataSetLevelSalesDemands
+          {
+            groupDepth: -1
+            column_All_constraints
+            {
+              columnId: 'All constraints'
+              dataPath: 'All constraints'
+              dataType: 'string'
+              index: 0
+              subtotals: ''
+              width: 32
+            }
+            column_StockingPoint_MP_ID
+            {
+              columnId: 'StockingPoint_MP.ID'
+              dataPath: 'StockingPoint_MP.ID'
+              dataType: 'string'
+              index: 1
+              subtotals: ''
+              width: 150
+            }
+            column_SalesSegment_MP_Name
+            {
+              columnId: 'SalesSegment_MP.Name'
+              dataPath: 'SalesSegment_MP.Name'
+              dataType: 'string'
+              index: 2
+              subtotals: ''
+              width: 150
+            }
+            column_CustomerName
+            {
+              columnId: 'CustomerName'
+              dataPath: 'CustomerName'
+              dataType: 'string'
+              index: 3
+              subtotals: ''
+              width: 150
+            }
+            column_CustomerID
+            {
+              columnId: 'CustomerID'
+              dataPath: 'CustomerID'
+              dataType: 'string'
+              index: 4
+              subtotals: ''
+              width: 150
+            }
+            column_OrderID
+            {
+              columnId: 'OrderID'
+              dataPath: 'OrderID'
+              dataType: 'string'
+              index: 5
+              subtotals: ''
+              width: 150
+            }
+            column_OrderLineID
+            {
+              columnId: 'OrderLineID'
+              dataPath: 'OrderLineID'
+              dataType: 'string'
+              index: 6
+              subtotals: ''
+              width: 150
+            }
+            column_StartDate
+            {
+              columnId: 'StartDate'
+              dataPath: 'StartDate'
+              dataType: 'date'
+              index: 7
+              subtotals: ''
+              width: 150
+            }
+            column_Product_MP_ID
+            {
+              columnId: 'Product_MP.ID'
+              dataPath: 'Product_MP.ID'
+              dataType: 'string'
+              index: 8
+              subtotals: ''
+              width: 150
+            }
+            column_UnitOfMeasure_MP_Name
+            {
+              columnId: 'UnitOfMeasure_MP.Name'
+              dataPath: 'UnitOfMeasure_MP.Name'
+              dataType: 'string'
+              index: 9
+              subtotals: ''
+              width: 150
+            }
+            column_Quantity
+            {
+              columnId: 'Quantity'
+              dataPath: 'Quantity'
+              dataType: 'real'
+              index: 10
+              subtotals: ''
+              width: 150
+            }
+            column_FulfilledQuantity
+            {
+              columnId: 'FulfilledQuantity'
+              dataPath: 'FulfilledQuantity'
+              dataType: 'real'
+              index: 11
+              subtotals: ''
+              width: 150
+            }
+            column_Fulfillment
+            {
+              columnId: 'Fulfillment'
+              dataPath: 'Fulfillment'
+              dataType: 'string'
+              index: 12
+              subtotals: ''
+              width: 150
+            }
+            column_IsFirmed
+            {
+              columnId: 'IsFirmed'
+              dataPath: 'IsFirmed'
+              dataType: 'boolean'
+              index: 13
+              subtotals: ''
+              width: 150
+            }
+            column_IsEligibleForNetting
+            {
+              columnId: 'IsEligibleForNetting'
+              dataPath: 'IsEligibleForNetting'
+              dataType: 'boolean'
+              index: 14
+              subtotals: ''
+              width: 150
+            }
+            column_Price
+            {
+              columnId: 'Price'
+              dataPath: 'Price'
+              dataType: 'real'
+              index: 15
+              subtotals: ''
+              width: 150
+            }
+            column_PriceUoM
+            {
+              columnId: 'PriceUoM'
+              dataPath: 'PriceUoM'
+              dataType: 'string'
+              index: 16
+              subtotals: ''
+              width: 150
+            }
+            column_OrderTag
+            {
+              columnId: 'OrderTag'
+              dataPath: 'OrderTag'
+              dataType: 'string'
+              index: 17
+              subtotals: ''
+              width: 150
+            }
+          }
+          FormCustomerOrders_PanelSDIP
+          {
+            sizeRatio: 1
+          }
+          FormCustomerOrders_ListSDIP
+          {
+          }
+          FormCustomerOrders_DataSetLevelSDIP
+          {
+            groupDepth: -1
+            column_All_constraints
+            {
+              columnId: 'All constraints'
+              dataPath: 'All constraints'
+              dataType: 'string'
+              index: 0
+              subtotals: ''
+              width: 32
+            }
+            column_ImgIsRestricted
+            {
+              columnId: 'ImgIsRestricted'
+              dataPath: 'ImgIsRestricted'
+              dataType: 'string'
+              index: 1
+              subtotals: ''
+              width: 150
+            }
+            column_SalesSegmentName
+            {
+              columnId: 'SalesSegmentName'
+              dataPath: 'SalesSegmentName'
+              dataType: 'string'
+              index: 2
+              subtotals: ''
+              width: 150
+            }
+            column_ProductID
+            {
+              columnId: 'ProductID'
+              dataPath: 'ProductID'
+              dataType: 'string'
+              index: 3
+              subtotals: ''
+              width: 150
+            }
+            column_StockingPointID
+            {
+              columnId: 'StockingPointID'
+              dataPath: 'StockingPointID'
+              dataType: 'string'
+              index: 4
+              subtotals: ''
+              width: 150
+            }
+            column_StartDate
+            {
+              columnId: 'StartDate'
+              dataPath: 'StartDate'
+              dataType: 'date'
+              index: 5
+              subtotals: ''
+              width: 150
+            }
+            column_EndDate
+            {
+              columnId: 'EndDate'
+              dataPath: 'EndDate'
+              dataType: 'date'
+              index: 6
+              subtotals: ''
+              width: 150
+            }
+            column_MasterSalesDemand_UnitOfMeasureName
+            {
+              columnId: 'MasterSalesDemand.UnitOfMeasureName'
+              dataPath: 'MasterSalesDemand.UnitOfMeasureName'
+              dataType: 'string'
+              index: 7
+              subtotals: ''
+              width: 150
+            }
+            column_QuantityInSalesDemandUOM
+            {
+              columnId: 'QuantityInSalesDemandUOM'
+              dataPath: 'QuantityInSalesDemandUOM'
+              dataType: 'real'
+              index: 8
+              subtotals: ''
+              width: 150
+            }
+            column_FulfilledQuantityInSalesDemandUOM
+            {
+              columnId: 'FulfilledQuantityInSalesDemandUOM'
+              dataPath: 'FulfilledQuantityInSalesDemandUOM'
+              dataType: 'real'
+              index: 9
+              subtotals: ''
+              width: 150
+            }
+            column_Fulfillment
+            {
+              columnId: 'Fulfillment'
+              dataPath: 'Fulfillment'
+              dataType: 'string'
+              index: 10
+              subtotals: ''
+              width: 150
+            }
+          }
+        }
+      }
+    }
+    userconfigurableinformation
+    {
+    }
+    image: 'BOOK_BLUE_VIEW'
+    page: ''
+    group: ''
+    index: 0
+    description: ''
+  }
+  formatversion: 2
+  id: '濉骇'
+  name: '濉骇'
+  isglobal: false
+  isroot: true
+}

--
Gitblit v1.9.3