yanweiyuan3
2023-09-13 de039111402716bfd0598951908e612a71b8f747
VersionID dev_1

前端页面——集团服务器分发总览开发,及后端object、attribute、创建方法、版本号新建逻辑创建
已添加68个文件
1601 ■■■■■ 文件已修改
_Main/BL/Relations/Relation_VersionControl_GlobalOTDTable_GlobalOTDTable_VersionControl.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_VersionStatusDetail_VersionStatus_VersionStatus_VersionStatusDetail.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_VersionStatus_GlobalOTDTable_GlobalOTDTable_VersionStatus.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_GlobalDTOTable/StaticMethod_GetBusinessTypeName.qbl 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_GlobalDTOTable/StaticMethod_GetNextCalType.qbl 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_VersionControl/Attribute_BusinessType.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_VersionControl/Attribute_CalType.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_VersionControl/Attribute_CreateTime.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_VersionControl/Attribute_IsReleased.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_VersionControl/Attribute_LongVersionName.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_VersionControl/Attribute_Notes.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_VersionControl/Attribute_ReleaseTime.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_VersionControl/Attribute_SingleVersionName.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_VersionControl/Attribute_User.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_VersionControl/Attribute_VersionID.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_VersionControl/StaticMethod_Create.qbl 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_VersionControl/StaticMethod_CreateNewVersion.qbl 47 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_VersionControl/StaticMethod_FindLatestUpdateVersion.qbl 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_VersionControl/StaticMethod_FindReleasedVersions.qbl 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_VersionControl/StaticMethod_GetSOPVersionInfo.qbl 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_VersionControl/StaticMethod_ReleaseNewVersion.qbl 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_VersionControl/_ROOT_Type_VersionControl.qbl 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_VersionStatus/Attribute_BusinessName.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_VersionStatus/Attribute_BusinessType.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_VersionStatus/Attribute_LastReleaseTime.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_VersionStatus/Attribute_LastUser.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_VersionStatus/Attribute_LastVersionName.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_VersionStatus/Attribute_Notes.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_VersionStatus/Attribute_SortNumber.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_VersionStatus/StaticMethod_CreateOrUpdate.qbl 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_VersionStatus/StaticMethod_FindLatestStatus.qbl 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_VersionStatus/StaticMethod_GetBusinessTypeStatus.qbl 64 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_VersionStatus/_ROOT_Type_VersionStatus.qbl 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_VersionStatusDetail/Attribute_CreateTime.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_VersionStatusDetail/Attribute_Notes.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_VersionStatusDetail/Attribute_ReleaseTime.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_VersionStatusDetail/Attribute_SingleVersionName.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_VersionStatusDetail/Attribute_SortNumber.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_VersionStatusDetail/Attribute_User.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_VersionStatusDetail/Attribute_VersionID.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_VersionStatusDetail/DefaultValue_Notes.qbl 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_VersionStatusDetail/DefaultValue_SingleVersionName.qbl 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_VersionStatusDetail/DefaultValue_User.qbl 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_VersionStatusDetail/StaticMethod_CreateOrUpdate.qbl 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_VersionStatusDetail/StaticMethod_FindStatus.qbl 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_VersionStatusDetail/StaticMethod_GetFullVersionID.qbl 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_VersionStatusDetail/_ROOT_Type_VersionStatusDetail.qbl 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_DialogVersionIDCopy/Component_pnlActions.def 52 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_DialogVersionIDCopy/Component_pnlContent.def 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_DialogVersionIDCopy/Method_JustShow.def 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_DialogVersionIDCopy/Response_pnlActions_btnApply_OnClick.def 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_DialogVersionIDCopy/Response_pnlActions_btnCancel_OnClick.def 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_DialogVersionIDCopy/Response_pnlActions_btnOk_OnClick.def 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_DialogVersionIDCopy/_ROOT_Component_DialogVersionIDCopy.def 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormVersionOfSOP/Component_ListVersionOfSOP.def 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormVersionOfSOP/Component_ListVersionOfSOPDetails.def 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormVersionOfSOP/Component_PanelVersionOfSOP.def 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormVersionOfSOP/Component_PanelVersionOfSOPDetails.def 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormVersionOfSOP/Component_PanelVersionOfSOPHeader.def 75 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormVersionOfSOP/Component_listActionBarPageVersionOfSOP.def 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormVersionOfSOP/Component_listActionBarPageVersionOfSOPDetails.def 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormVersionOfSOP/Component_listContextMenuVersionOfSOP.def 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormVersionOfSOP/Component_listContextMenuVersionOfSOPDetails.def 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormVersionOfSOP/Response_PanelVersionOfSOPHeader_ButtonVersionOfSOPHeaderCopy_OnClick.def 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormVersionOfSOP/Response_PanelVersionOfSOPHeader_ButtonVersionOfSOPHeaderFresh_OnClick.def 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormVersionOfSOP/Response_PanelVersionOfSOPHeader_ButtonVersionOfSOPHeaderRelease_OnClick.def 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormVersionOfSOP/_ROOT_Component_FormVersionOfSOP.def 72 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Views/SOP_Versions.vw 351 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_VersionControl_GlobalOTDTable_GlobalOTDTable_VersionControl.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
Quintiq file version 2.0
#parent: #root
Relation VersionControl_GlobalOTDTable_GlobalOTDTable_VersionControl
{
  #keys: '1[412960.0.134860006]'
  DefaultRelationStrategy
  {
  }
  RelationSide.LeftSide GlobalOTDTable
  {
    #keys: '3[412960.0.134860008][412960.0.134860007][412960.0.134860009]'
    Cardinality: '0to1'
    ObjectDefinition: VersionControl
    OwningSide: 'Reference'
  }
  RelationSide.RightSide VersionControl
  {
    #keys: '3[412960.0.134860011][412960.0.134860010][412960.0.134860012]'
    Cardinality: '1toN'
    ObjectDefinition: GlobalOTDTable
    OwningSide: 'Owned'
  }
}
_Main/BL/Relations/Relation_VersionStatusDetail_VersionStatus_VersionStatus_VersionStatusDetail.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
Quintiq file version 2.0
#parent: #root
Relation VersionStatusDetail_VersionStatus_VersionStatus_VersionStatusDetail
{
  #keys: '1[412960.0.143214355]'
  DefaultRelationStrategy
  {
  }
  RelationSide.LeftSide VersionStatus
  {
    #keys: '3[412960.0.143214357][412960.0.143214356][412960.0.143214358]'
    Cardinality: '0to1'
    ObjectDefinition: VersionStatusDetail
    OwningSide: 'Reference'
  }
  RelationSide.RightSide VersionStatusDetail
  {
    #keys: '3[412960.0.143214360][412960.0.143214359][412960.0.143214361]'
    Cardinality: '1toN'
    ObjectDefinition: VersionStatus
    OwningSide: 'Owned'
  }
}
_Main/BL/Relations/Relation_VersionStatus_GlobalOTDTable_GlobalOTDTable_VersionStatus.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
Quintiq file version 2.0
#parent: #root
Relation VersionStatus_GlobalOTDTable_GlobalOTDTable_VersionStatus
{
  #keys: '1[412960.0.134830056]'
  DefaultRelationStrategy
  {
  }
  RelationSide.LeftSide GlobalOTDTable
  {
    #keys: '3[412960.0.134830058][412960.0.134830057][412960.0.134830059]'
    Cardinality: '0to1'
    ObjectDefinition: VersionStatus
    OwningSide: 'Reference'
  }
  RelationSide.RightSide VersionStatus
  {
    #keys: '3[412960.0.134830061][412960.0.134830060][412960.0.134830062]'
    Cardinality: '1toN'
    ObjectDefinition: GlobalOTDTable
    OwningSide: 'Owned'
  }
}
_Main/BL/Type_GlobalDTOTable/StaticMethod_GetBusinessTypeName.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,32 @@
Quintiq file version 2.0
#parent: #root
StaticMethod GetBusinessTypeName (
  String name
) as String
{
  Description: '从事业部中文名称到缩写的转换'
  TextBody:
  [*
    // Administrator Sep-13-2023 (created)
    result := "";
    if( name = "集团" ){
      result := "TM";
      }else if( name = "手机事业部" ){
        result := "SJ";
        }else if( name = "IT事业部" ){
        result := "IT";
        }else if( name = "车载事业部" ){
        result := "CZ";
        }else if( name = "汽车电子事业部" ){
        result := "QD";
        }else if( name = "专显事业部" ){
        result := "ZX";
        }else if( name = "穿戴事业部" ){
        result := "CD";
        }else if( name = "面板" ){
        result := "MB";
        }
    return result;
  *]
}
_Main/BL/Type_GlobalDTOTable/StaticMethod_GetNextCalType.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,41 @@
Quintiq file version 2.0
#parent: #root
StaticMethod GetNextCalType (
  String latestcaltype,
  String businesstype
) as String
{
  Description: '获取下一个计算步骤'
  TextBody:
  [*
    // Administrator Sep-13-2023 (created)
    result := "";
    if( businesstype = "TM"){
      if( latestcaltype = "" ){
        result := "SCENE";
        }else if( latestcaltype = "SCENE" ){
          result := "TM_SOP_R1";
          }else if( latestcaltype = "TM_SOP_R1" ){
          result := "TM_SOP_R2";
          }else if( latestcaltype = "TM_SOP_R2" ){
          error( "This version is ended" );
          }
      }else{
      if( latestcaltype = "TM_SOP_R1" ){
        result := businesstype + "_SOP_R1";
        }else if( latestcaltype = "TM_SOP_R2" ){
          result := businesstype + "_MPS_R1";
          }else if( latestcaltype = businesstype + "_MPS_R1" ){
          result := businesstype + "_MRP_R1";
          }else if( latestcaltype = businesstype + "_MRP_R1" ){
          result := businesstype + "_MPS_R2";
          }else if( latestcaltype = businesstype + "_MPS_R2" ){
          result := businesstype + "_MRP_R2";
          }else if( latestcaltype = businesstype + "_MRP_R2" ){
          error( "This version is ended" );
        }
    }
    return result;
  *]
}
_Main/BL/Type_VersionControl/Attribute_BusinessType.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute BusinessType
{
  #keys: '3[412960.0.134860020][412960.0.134860019][412960.0.134860021]'
  Description: '发出该版本的事业部,用于识别和校验是否所有事业部均有回传数据,目前取值范围为[ é›†å›¢(TM),手机事业部(SJ),IT事业部(IT),车载事业部(CZ),汽车电子事业部(QD),专显事业部(ZX),穿戴事业部(CD)] ã€‚'
  ValueType: String
}
_Main/BL/Type_VersionControl/Attribute_CalType.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute CalType
{
  #keys: '3[412960.0.136134246][412960.0.136134245][412960.0.136134247]'
  Description: '计算类型,用于标注为哪一步计算生成的该版本,如SOP_R1'
  ValueType: String
}
_Main/BL/Type_VersionControl/Attribute_CreateTime.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute CreateTime
{
  #keys: '3[412960.0.136134256][412960.0.136134255][412960.0.136134257]'
  Description: '创建该版本的时间'
  ValueType: DateTime
}
_Main/BL/Type_VersionControl/Attribute_IsReleased.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute IsReleased
{
  #keys: '3[412960.0.134830023][412960.0.134830022][412960.0.134830024]'
  ValueType: Boolean
}
_Main/BL/Type_VersionControl/Attribute_LongVersionName.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute LongVersionName
{
  #keys: '3[412960.0.136134236][412960.0.136134235][412960.0.136134237]'
  Description: '该版本号对应的版本名称,名称为用于前端展示的格式,如SCENE(2023-09-06 15:06:57)'
  ValueType: String
}
_Main/BL/Type_VersionControl/Attribute_Notes.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute Notes
{
  #keys: '3[412960.0.136138830][412960.0.136138829][412960.0.136138831]'
  ValueType: String
}
_Main/BL/Type_VersionControl/Attribute_ReleaseTime.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute ReleaseTime
{
  #keys: '3[412960.0.136134266][412960.0.136134265][412960.0.136134267]'
  Description: '发布该版本的时间'
  ValueType: DateTime
}
_Main/BL/Type_VersionControl/Attribute_SingleVersionName.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute SingleVersionName
{
  #keys: '3[412960.0.136138782][412960.0.136138781][412960.0.136138783]'
  Description: '单个版本的名字,即小版本名'
  ValueType: String
}
_Main/BL/Type_VersionControl/Attribute_User.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute User
{
  #keys: '3[412960.0.134830093][412960.0.134830092][412960.0.134830094]'
  Description: '创建该版本的用户'
  ValueType: String
}
_Main/BL/Type_VersionControl/Attribute_VersionID.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute VersionID
{
  #keys: '3[412960.0.134860030][412960.0.134860029][412960.0.134860031]'
  Description: '11位数的时间戳拼接而成的文本,仅包含数字部分'
  ValueType: String
}
_Main/BL/Type_VersionControl/StaticMethod_Create.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,29 @@
Quintiq file version 2.0
#parent: #root
StaticMethod Create (
  GlobalOTDTable owner,
  String businesstype,
  String caltype,
  DateTime createtime,
  String versionid,
  String versionname,
  String singleversionname,
  String user
) as VersionControl
{
  Description: '创建版本'
  TextBody:
  [*
    // Administrator Sep-13-2023 (created)
    newversion := owner.VersionControl( relnew,
                                        BusinessType := businesstype,
                                        CalType := caltype,
                                        CreateTime := createtime,
                                        VersionID := versionid,
                                        LongVersionName := versionname,
                                        SingleVersionName := singleversionname,
                                        User := user );
    return newversion;
  *]
}
_Main/BL/Type_VersionControl/StaticMethod_CreateNewVersion.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,47 @@
Quintiq file version 2.0
#parent: #root
StaticMethod CreateNewVersion (
  GlobalOTDTable owner,
  String businessname
) as VersionControl
{
  Description: '在上一版本后添加新版本号并生成新版本'
  TextBody:
  [*
    // Administrator Sep-13-2023 (created)
    createtime := DateTime::ActualTime();
    user := QuintiqUser::CurrentUser().Username();
    starttime := DateTime::Construct(1970,1,1,0,0,0);
    // Get the local scenario businesstype
    businesstype := GlobalOTDTable::GetBusinessTypeName( businessname );
    // Get the older version info
    oldversion_id := "";
    oldversion_name := "";
    oldcaltype := "";
    latestversion := VersionControl::FindLatestUpdateVersion( owner, businesstype );
    if( isnull( latestversion ) and not businesstype = "TM" ){
      error( "Can't find last version in " + businesstype.AsQUILL() );
      }
    else if( not isnull( latestversion ) ){
      oldversion_id := latestversion.VersionID() + "-";
      oldversion_name := latestversion.LongVersionName() + "-";
      oldcaltype := latestversion.CalType();
      }
    // Calculate new version info
    additionversionid := [Number]( createtime.MinutesAsReal( starttime ) * 60 );
    newversionid := oldversion_id + additionversionid.AsQUILL();
    newcaltype := GlobalOTDTable::GetNextCalType( oldcaltype, businesstype );
    newsingleversionname := newcaltype + "(" + createtime.Format( "Y-M2-D2 H:m:s" ) + ")";
    newversionname := oldversion_name + newsingleversionname;
    // Create new version
    newversion := VersionControl::Create( owner, businesstype, newcaltype, createtime, newversionid, newversionname, newsingleversionname, user );
    return newversion;
  *]
}
_Main/BL/Type_VersionControl/StaticMethod_FindLatestUpdateVersion.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,18 @@
Quintiq file version 2.0
#parent: #root
StaticMethod FindLatestUpdateVersion (
  GlobalOTDTable globalotdtable,
  String businesstype
) as VersionControl
{
  Description: '获取某事业部目前最新的版本号'
  TextBody:
  [*
    // Administrator Sep-13-2023 (created)
    // Get the latest version data
    latestversion := maxselect( globalotdtable, VersionControl, version, version.BusinessType()=businesstype and version.IsReleased()=true, version.CreateTime() );
    return latestversion;
  *]
}
_Main/BL/Type_VersionControl/StaticMethod_FindReleasedVersions.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,19 @@
Quintiq file version 2.0
#parent: #root
StaticMethod FindReleasedVersions (
  GlobalOTDTable globalotdtable,
  String businesstype,
  String versionid
) as owning VersionControls
{
  Description: '获取某事业部目前最新的版本号'
  TextBody:
  [*
    // Administrator Sep-13-2023 (created)
    // Get the latest version data
    latestversion := selectset( globalotdtable, VersionControl, version, version.BusinessType()=businesstype and version.IsReleased()=true and version.VersionID().FindString( versionid, 0 ) = 0 );
    return &latestversion;
  *]
}
_Main/BL/Type_VersionControl/StaticMethod_GetSOPVersionInfo.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,26 @@
Quintiq file version 2.0
#parent: #root
StaticMethod GetSOPVersionInfo (
  GlobalOTDTable owner
) as owning Strings
{
  Description: '获取SOP大版本版本号及版本名称'
  TextBody:
  [*
    // Administrator Sep-13-2023 (created)
    result := construct( Strings );
    rootversion := VersionControl::FindLatestUpdateVersion( owner, "TM" );
    if( not isnull( rootversion ) ){
      result.Add( rootversion.VersionID() );
      result.Add( rootversion.LongVersionName() );
      result.Add( rootversion.VersionID() + "-" + rootversion.CalType() );
      }else{
        result.Add( "" );
        result.Add( "" );
        result.Add( "" );
        }
    return &result;
  *]
}
_Main/BL/Type_VersionControl/StaticMethod_ReleaseNewVersion.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,20 @@
Quintiq file version 2.0
#parent: #root
StaticMethod ReleaseNewVersion (
  GlobalOTDTable owner,
  String businesstype
)
{
  Description: '发布新版本'
  TextBody:
  [*
    // Administrator Sep-13-2023 (created)
    releasetime := DateTime::ActualTime();
    // Create new version
    newversion := VersionControl::CreateNewVersion( owner, businesstype );
    newversion.IsReleased( true );
    newversion.ReleaseTime( releasetime );
  *]
}
_Main/BL/Type_VersionControl/_ROOT_Type_VersionControl.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,10 @@
Quintiq file version 2.0
#root
#parent: #DomainModel
Type VersionControl
{
  #keys: '5[412960.0.134860003][412960.0.134860001][0.0.0][412960.0.134860002][412960.0.134860004]'
  BaseType: Object
  Description: '储存全量版本状态的object'
  StructuredName: 'VersionControls'
}
_Main/BL/Type_VersionStatus/Attribute_BusinessName.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute BusinessName
{
  #keys: '3[412960.0.134830239][412960.0.134830238][412960.0.134830240]'
  Description: '展示用事业部名称'
  ValueType: String
}
_Main/BL/Type_VersionStatus/Attribute_BusinessType.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute BusinessType
{
  #keys: '3[412960.0.134830072][412960.0.134830071][412960.0.134830073]'
  Description: '事业部名称'
  ValueType: String
}
_Main/BL/Type_VersionStatus/Attribute_LastReleaseTime.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute LastReleaseTime
{
  #keys: '3[412960.0.136138799][412960.0.136138798][412960.0.136138800]'
  Description: '最后同步的时间'
  ValueType: DateTime
}
_Main/BL/Type_VersionStatus/Attribute_LastUser.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute LastUser
{
  #keys: '3[412960.0.136138809][412960.0.136138808][412960.0.136138810]'
  Description: '最后操作人'
  ValueType: String
}
_Main/BL/Type_VersionStatus/Attribute_LastVersionName.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute LastVersionName
{
  #keys: '3[412960.0.136138768][412960.0.136138767][412960.0.136138769]'
  Description: '最终拼接而成的版本名称'
  ValueType: String
}
_Main/BL/Type_VersionStatus/Attribute_Notes.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute Notes
{
  #keys: '3[412960.0.136138819][412960.0.136138818][412960.0.136138820]'
  Description: '备注'
  ValueType: String
}
_Main/BL/Type_VersionStatus/Attribute_SortNumber.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute SortNumber
{
  #keys: '3[412960.0.136138758][412960.0.136138757][412960.0.136138759]'
  Description: '序号'
  ValueType: Number
}
_Main/BL/Type_VersionStatus/StaticMethod_CreateOrUpdate.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,37 @@
Quintiq file version 2.0
#parent: #root
StaticMethod CreateOrUpdate (
  GlobalOTDTable owner,
  String businesstype,
  String businessname,
  DateTime lastreleasetime,
  String lastuser,
  String lastversionname,
  String notes,
  Number sortnumber
)
{
  Description: '创建新的版本发布状态'
  TextBody:
  [*
    // Administrator Sep-13-2023 (created)
    // Find exist status
    existstatus := VersionStatus::FindLatestStatus( owner, businesstype );
    if( isnull( existstatus ) ){
      owner.VersionStatus( relnew,
                          BusinessType := businesstype,
                          BusinessName := businessname,
                          LastReleaseTime := lastreleasetime,
                          LastUser := lastuser,
                          LastVersionName := lastversionname,
                          Notes := notes,
                          SortNumber := sortnumber );
      }else{
        existstatus.LastReleaseTime( lastreleasetime );
        existstatus.LastUser( lastuser );
        existstatus.LastVersionName( lastversionname );
        existstatus.Notes( notes );
        existstatus.SortNumber( sortnumber );
        }
  *]
}
_Main/BL/Type_VersionStatus/StaticMethod_FindLatestStatus.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,18 @@
Quintiq file version 2.0
#parent: #root
StaticMethod FindLatestStatus (
  GlobalOTDTable globalotdtable,
  String businesstype
) as VersionStatus
{
  Description: '获取某事业部目前最新的发布状态'
  TextBody:
  [*
    // Administrator Sep-13-2023 (created)
    // Get the latest version data
    lateststatus := select( globalotdtable, VersionStatus, version, version.BusinessType()=businesstype );
    return lateststatus;
  *]
}
_Main/BL/Type_VersionStatus/StaticMethod_GetBusinessTypeStatus.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,64 @@
Quintiq file version 2.0
#parent: #root
StaticMethod GetBusinessTypeStatus (
  GlobalOTDTable owner,
  String rootversionid
)
{
  Description: '刷新所有事业部的发布情况'
  TextBody:
  [*
    // Administrator Sep-13-2023 (created)
    // Get business type list
    businesstypes := "集团,面板,手机事业部,IT事业部,车载事业部,汽车电子事业部,专显事业部,穿戴事业部";
    businesstypelist := businesstypes.Tokenize( "," );
    sortnumber := 0;
    sortdetailnumber := 0;
    traverse( businesstypelist, Elements, businessname, true ){
      info( businessname );
      // Get the local scenario businesstype
      businesstype := GlobalOTDTable::GetBusinessTypeName( businessname );
      sortnumber := sortnumber + 1;
      lastversion := VersionControl::FindLatestUpdateVersion( owner, businesstype );
      if( not isnull( lastversion ) ){
        VersionStatus::CreateOrUpdate( owner,
                                       businesstype,
                                       businessname,
                                       lastversion.ReleaseTime(),
                                       lastversion.User(),
                                       lastversion.SingleVersionName(),
                                       lastversion.Notes(),
                                       sortnumber );
        }else{
          existstatus := VersionStatus::FindLatestStatus( owner, businesstype );
          if( isnull( existstatus ) ){
            owner.VersionStatus( relnew,
                                 BusinessType := businesstype,
                                 BusinessName := businessname,
                                 SortNumber := sortnumber
                                  );
            }
          }
        rootstatus := VersionStatus::FindLatestStatus( owner, businesstype );
        // Get the versions list
        versionlist := VersionControl::FindReleasedVersions( owner, businesstype, rootversionid );
        info( rootversionid );
        if( not isnull( versionlist ) ){
          traverse( versionlist, Elements, version, true ){
            info( version.VersionID() );
            sortdetailnumber := sortdetailnumber + 1;
            VersionStatusDetail::CreateOrUpdate( rootstatus,
                                                 version.VersionID() + "-" + version.CalType(),
                                                 version.CreateTime(),
                                                 version.ReleaseTime(),
                                                 version.SingleVersionName(),
                                                 version.User(),
                                                 version.Notes(),
                                                 sortdetailnumber );
            }
          }
      }
  *]
}
_Main/BL/Type_VersionStatus/_ROOT_Type_VersionStatus.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,10 @@
Quintiq file version 2.0
#root
#parent: #DomainModel
Type VersionStatus
{
  #keys: '5[412960.0.134830053][412960.0.134830051][0.0.0][412960.0.134830052][412960.0.134830054]'
  BaseType: Object
  Description: '各事业部的版本发布状态数据'
  StructuredName: 'VersionStatuss'
}
_Main/BL/Type_VersionStatusDetail/Attribute_CreateTime.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute CreateTime
{
  #keys: '3[412960.0.143214324][412960.0.143214323][412960.0.143214325]'
  Description: '创建该版本的时间'
  ValueType: DateTime
}
_Main/BL/Type_VersionStatusDetail/Attribute_Notes.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute Notes
{
  #keys: '3[412960.0.143214333][412960.0.143214332][412960.0.143214334]'
  ValueType: String
}
_Main/BL/Type_VersionStatusDetail/Attribute_ReleaseTime.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute ReleaseTime
{
  #keys: '3[412960.0.143214336][412960.0.143214335][412960.0.143214337]'
  Description: '发布该版本的时间'
  ValueType: DateTime
}
_Main/BL/Type_VersionStatusDetail/Attribute_SingleVersionName.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute SingleVersionName
{
  #keys: '3[412960.0.143214339][412960.0.143214338][412960.0.143214340]'
  Description: '单个版本的名字,即小版本名'
  ValueType: String
}
_Main/BL/Type_VersionStatusDetail/Attribute_SortNumber.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute SortNumber
{
  #keys: '3[412960.0.143220022][412960.0.143220021][412960.0.143220023]'
  ValueType: Number
}
_Main/BL/Type_VersionStatusDetail/Attribute_User.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute User
{
  #keys: '3[412960.0.143214342][412960.0.143214341][412960.0.143214343]'
  Description: '创建该版本的用户'
  ValueType: String
}
_Main/BL/Type_VersionStatusDetail/Attribute_VersionID.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute VersionID
{
  #keys: '3[412960.0.143214345][412960.0.143214344][412960.0.143214346]'
  Description: '全量版本号'
  ValueType: String
}
_Main/BL/Type_VersionStatusDetail/DefaultValue_Notes.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,6 @@
Quintiq file version 2.0
#parent: #root
DefaultValue
{
  TargetAttribute: Notes
}
_Main/BL/Type_VersionStatusDetail/DefaultValue_SingleVersionName.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,6 @@
Quintiq file version 2.0
#parent: #root
DefaultValue
{
  TargetAttribute: SingleVersionName
}
_Main/BL/Type_VersionStatusDetail/DefaultValue_User.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,6 @@
Quintiq file version 2.0
#parent: #root
DefaultValue
{
  TargetAttribute: User
}
_Main/BL/Type_VersionStatusDetail/StaticMethod_CreateOrUpdate.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,38 @@
Quintiq file version 2.0
#parent: #root
StaticMethod CreateOrUpdate (
  VersionStatus owner,
  String versionid,
  DateTime createtime,
  DateTime releasetime,
  String versionname,
  String user,
  String notes,
  Number sortnumber
)
{
  Description: '创建新的版本发布状态详情'
  TextBody:
  [*
    // Administrator Sep-13-2023 (created)
    // Find exist status
    existstatusdetail := VersionStatusDetail::FindStatus(  owner, versionid );
    if( isnull( existstatusdetail ) ){
      owner.VersionStatusDetail( relnew,
                                CreateTime := createtime,
                                ReleaseTime := releasetime,
                                SingleVersionName := versionname,
                                User := user,
                                VersionID := versionid,
                                Notes := notes,
                                SortNumber := sortnumber );
      }else{
        existstatusdetail.CreateTime( createtime );
        existstatusdetail.ReleaseTime( releasetime );
        existstatusdetail.SingleVersionName( versionname );
        existstatusdetail.User( user );
        existstatusdetail.Notes( notes );
        existstatusdetail.SortNumber( sortnumber );
        }
  *]
}
_Main/BL/Type_VersionStatusDetail/StaticMethod_FindStatus.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,18 @@
Quintiq file version 2.0
#parent: #root
StaticMethod FindStatus (
  VersionStatus owner,
  String versionid
) as VersionStatusDetail
{
  Description: '通过版本号查找是否有存在的状态详情'
  TextBody:
  [*
    // Administrator Sep-13-2023 (created)
    // Get the latest version data
    lateststatusdetail := select( owner, VersionStatusDetail, version, version.VersionID()=versionid );
    return lateststatusdetail;
  *]
}
_Main/BL/Type_VersionStatusDetail/StaticMethod_GetFullVersionID.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,20 @@
Quintiq file version 2.0
#parent: #root
StaticMethod GetFullVersionID (
  VersionStatus owner
) as String
{
  Description: '获取全量版本号'
  TextBody:
  [*
    // Administrator Sep-13-2023 (created)
    result := "";
    latestversion := maxselect( owner, VersionStatusDetail, version, true, version.CreateTime() );
    if( not isnull( latestversion ) ){
      result := latestversion.VersionID();
        }
    return result;
  *]
}
_Main/BL/Type_VersionStatusDetail/_ROOT_Type_VersionStatusDetail.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,10 @@
Quintiq file version 2.0
#root
#parent: #DomainModel
Type VersionStatusDetail
{
  #keys: '5[412960.0.143214315][412960.0.143214313][0.0.0][412960.0.143214314][412960.0.143214316]'
  BaseType: Object
  Description: '储存对应发布状态下版本状态的数据'
  StructuredName: 'VersionStatusDetails'
}
_Main/UI/MacroPlannerWebApp/Component_DialogVersionIDCopy/Component_pnlActions.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,52 @@
Quintiq file version 2.0
Component pnlActions
{
  #keys: '[412960.0.149440162]'
  BaseType: 'WebPanel'
  Children:
  [
    Component btnApply
    {
      #keys: '[412960.0.149440164]'
      BaseType: 'WebButton'
      Properties:
      [
        Label: 'Apply'
        Taborder: 0
        Visible: false
      ]
    }
    Component btnOk
    {
      #keys: '[412960.0.149440166]'
      BaseType: 'WebButton'
      Properties:
      [
        Label: 'OK'
        Taborder: 1
      ]
    }
    Component btnCancel
    {
      #keys: '[412960.0.149440168]'
      BaseType: 'WebButton'
      Properties:
      [
        Label: 'Cancel'
        Taborder: 2
        Visible: false
      ]
    }
  ]
  Properties:
  [
    Alignment: 'trailing'
    Border: true
    ExcludeFromActiveComponent: true
    FixedSize: true
    Orientation: 'horizontal'
    Padding: 'true'
    Style: 'footer'
    Taborder: 1
  ]
}
_Main/UI/MacroPlannerWebApp/Component_DialogVersionIDCopy/Component_pnlContent.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,24 @@
Quintiq file version 2.0
Component pnlContent
{
  #keys: '[412960.0.149440160]'
  BaseType: 'WebPanel'
  Children:
  [
    Component lblContent
    {
      #keys: '[412960.0.149330142]'
      BaseType: 'WebLabel'
      Properties:
      [
        FixedSize: false
        Taborder: 0
      ]
    }
  ]
  Properties:
  [
    Padding: 'true'
    Taborder: 0
  ]
}
_Main/UI/MacroPlannerWebApp/Component_DialogVersionIDCopy/Method_JustShow.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,10 @@
Quintiq file version 2.0
#parent: #root
Method JustShow () id:Method_DialogVersionIDCopy_JustShow
{
  #keys: '[412960.0.149561615]'
  Body:
  [*
    ApplicationMacroPlanner.ShowFormModal( this );
  *]
}
_Main/UI/MacroPlannerWebApp/Component_DialogVersionIDCopy/Response_pnlActions_btnApply_OnClick.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,19 @@
Quintiq file version 2.0
#parent: pnlActions/btnApply
Response OnClick () id:Response_pnlActions_btnApply_OnClick
{
  #keys: '[412960.0.149440170]'
  DefinitionID: 'Responsedef_WebButton_OnClick'
  GroupServerCalls: true
  Precondition:
  [*
    return Form.HasChanges();
  *]
  QuillAction
  {
    Body:
    [*
      Form.ApplyChanges();
    *]
  }
}
_Main/UI/MacroPlannerWebApp/Component_DialogVersionIDCopy/Response_pnlActions_btnCancel_OnClick.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,15 @@
Quintiq file version 2.0
#parent: pnlActions/btnCancel
Response OnClick () id:Response_pnlActions_btnCancel_OnClick
{
  #keys: '[412960.0.149440172]'
  DefinitionID: 'Responsedef_WebButton_OnClick'
  GroupServerCalls: true
  QuillAction
  {
    Body:
    [*
      Form.Close();
    *]
  }
}
_Main/UI/MacroPlannerWebApp/Component_DialogVersionIDCopy/Response_pnlActions_btnOk_OnClick.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,16 @@
Quintiq file version 2.0
#parent: pnlActions/btnOk
Response OnClick () id:Response_pnlActions_btnOk_OnClick
{
  #keys: '[412960.0.149440171]'
  DefinitionID: 'Responsedef_WebButton_OnClick'
  GroupServerCalls: true
  QuillAction
  {
    Body:
    [*
      Form.ApplyChanges();
      Form.Close();
    *]
  }
}
_Main/UI/MacroPlannerWebApp/Component_DialogVersionIDCopy/_ROOT_Component_DialogVersionIDCopy.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,24 @@
Quintiq file version 2.0
#root
#parent: MacroPlannerWebApp
OrphanComponent DialogVersionIDCopy
{
  #keys: '[412960.0.149440158]'
  BaseType: 'WebForm'
  Children:
  [
    #child: pnlContent
    #child: pnlActions
  ]
  Properties:
  [
    Alignment: 'trailing'
    Description: '展示全量版本号以复制'
    EnterButton: 'btnOk'
    EscapeButton: 'btnCancel'
    ExcludeFromActiveComponent: true
    Image: 'DATA_COPY'
    Padding: 'false'
    Title: '全量版本号'
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormVersionOfSOP/Component_ListVersionOfSOP.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,41 @@
Quintiq file version 2.0
Component ListVersionOfSOP
{
  #keys: '[412960.0.134950322]'
  BaseType: 'WebList'
  Children:
  [
    Component DataExtractorVersionOfSOP642
    {
      #keys: '[412960.0.134950323]'
      BaseType: 'WebDataExtractor'
      Properties:
      [
        DataType: 'structured[VersionStatus]'
        Source: 'DataHolderVersionOfSOP'
        Taborder: 0
        Transformation: 'Elements'
      ]
    }
    #child: listActionBarPageVersionOfSOP
    Component DataSetLevelVersionOfSOP
    {
      #keys: '[412960.0.134950328]'
      BaseType: 'WebDataSetLevel'
      Children:
      [
        #child: listContextMenuVersionOfSOP
      ]
      Properties:
      [
        Columns: '[{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"SortNumber","title":"SortNumber","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"SortNumber"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"BusinessName","title":"BusinessName","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"BusinessName"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"LastVersionName","title":"LastVersionName","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"LastVersionName"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"LastReleaseTime","title":"LastReleaseTime","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"LastReleaseTime"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"LastUser","title":"LastUser","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"LastUser"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Notes","title":"Notes","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Notes"}}]'
        ContextMenu: 'listContextMenuVersionOfSOP'
        Taborder: 2
      ]
    }
  ]
  Properties:
  [
    Taborder: 0
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormVersionOfSOP/Component_ListVersionOfSOPDetails.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,41 @@
Quintiq file version 2.0
Component ListVersionOfSOPDetails
{
  #keys: '[412960.0.142180298]'
  BaseType: 'WebList'
  Children:
  [
    Component DataExtractorVersionOfSOPDetails
    {
      #keys: '[412960.0.142180299]'
      BaseType: 'WebDataExtractor'
      Properties:
      [
        DataType: 'structured[VersionStatusDetail]'
        Source: 'DataHolderVersionOfSOPDetails'
        Taborder: 0
        Transformation: 'Elements'
      ]
    }
    #child: listActionBarPageVersionOfSOPDetails
    Component DataSetLevelVersionOfSOPDetails
    {
      #keys: '[412960.0.142180304]'
      BaseType: 'WebDataSetLevel'
      Children:
      [
        #child: listContextMenuVersionOfSOPDetails
      ]
      Properties:
      [
        Columns: '[{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"SortNumber","title":"SortNumber","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"SortNumber"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"SingleVersionName","title":"SingleVersionName","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"SingleVersionName"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"CreateTime","title":"CreateTime","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"CreateTime"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ReleaseTime","title":"ReleaseTime","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"ReleaseTime"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"User","title":"User","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"User"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Notes","title":"Notes","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Notes"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"VersionID","title":"VersionID","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"VersionID"}}]'
        ContextMenu: 'listContextMenuVersionOfSOPDetails'
        Taborder: 2
      ]
    }
  ]
  Properties:
  [
    Taborder: 0
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormVersionOfSOP/Component_PanelVersionOfSOP.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,14 @@
Quintiq file version 2.0
Component PanelVersionOfSOP
{
  #keys: '[412960.0.134980204]'
  BaseType: 'WebPanel'
  Children:
  [
    #child: ListVersionOfSOP
  ]
  Properties:
  [
    Taborder: 1
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormVersionOfSOP/Component_PanelVersionOfSOPDetails.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,15 @@
Quintiq file version 2.0
Component PanelVersionOfSOPDetails
{
  #keys: '[412960.0.140720490]'
  BaseType: 'WebPanel'
  Children:
  [
    #child: ListVersionOfSOPDetails
  ]
  Properties:
  [
    Description: '事业部发布状态详情panel'
    Taborder: 2
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormVersionOfSOP/Component_PanelVersionOfSOPHeader.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,75 @@
Quintiq file version 2.0
Component PanelVersionOfSOPHeader
{
  #keys: '[412960.0.137940569]'
  BaseType: 'WebPanel'
  Children:
  [
    Component LabelVersionOfSOPHeader
    {
      #keys: '[412960.0.138000861]'
      BaseType: 'WebLabel'
      Properties:
      [
        Description: '版本号展示处'
        FixedSize: false
        Taborder: 0
      ]
    }
    Component ButtonVersionOfSOPHeaderFresh
    {
      #keys: '[412960.0.138000879]'
      BaseType: 'WebButton'
      Properties:
      [
        ButtonSize: 'compact'
        Description: '用于刷新各事业部当前版本发布状态的按钮'
        Label: '刷新'
        Taborder: 2
      ]
    }
    Component ButtonVersionOfSOPHeaderCopy
    {
      #keys: '[412960.0.138000890]'
      BaseType: 'WebButton'
      Properties:
      [
        ButtonSize: 'compact'
        Description: '用于复制选中的版本全量版本号的按钮'
        Label: '全量版本号复制'
        Taborder: 3
      ]
    }
    Component LabelVersionOfSOPHeaderVersionID
    {
      #keys: '[412960.0.140790247]'
      BaseType: 'WebLabel'
      Properties:
      [
        Description: 'rootversionid'
        Taborder: 1
        Visible: false
      ]
    }
    Component ButtonVersionOfSOPHeaderRelease
    {
      #keys: '[412960.0.142110396]'
      BaseType: 'WebButton'
      Properties:
      [
        ButtonSize: 'compact'
        Description: '发布一个新版本'
        Label: '测试用版本发布'
        Taborder: 4
      ]
    }
  ]
  Properties:
  [
    Description: '用于放置表头信息及按钮的panel'
    FixedSize: true
    Orientation: 'horizontal'
    Style: 'header'
    Taborder: 0
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormVersionOfSOP/Component_listActionBarPageVersionOfSOP.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,10 @@
Quintiq file version 2.0
Component listActionBarPageVersionOfSOP
{
  #keys: '[412960.0.134950325]'
  BaseType: 'listActionBarPage'
  Properties:
  [
    Taborder: 1
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormVersionOfSOP/Component_listActionBarPageVersionOfSOPDetails.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,10 @@
Quintiq file version 2.0
Component listActionBarPageVersionOfSOPDetails
{
  #keys: '[412960.0.142180301]'
  BaseType: 'listActionBarPage'
  Properties:
  [
    Taborder: 1
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormVersionOfSOP/Component_listContextMenuVersionOfSOP.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,10 @@
Quintiq file version 2.0
Component listContextMenuVersionOfSOP
{
  #keys: '[412960.0.134950330]'
  BaseType: 'listContextMenu'
  Properties:
  [
    Taborder: 0
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormVersionOfSOP/Component_listContextMenuVersionOfSOPDetails.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,10 @@
Quintiq file version 2.0
Component listContextMenuVersionOfSOPDetails
{
  #keys: '[412960.0.142180306]'
  BaseType: 'listContextMenu'
  Properties:
  [
    Taborder: 0
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormVersionOfSOP/Response_PanelVersionOfSOPHeader_ButtonVersionOfSOPHeaderCopy_OnClick.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,20 @@
Quintiq file version 2.0
#parent: PanelVersionOfSOPHeader/ButtonVersionOfSOPHeaderCopy
Response OnClick () id:Response_PanelVersionOfSOPHeader_ButtonVersionOfSOPHeaderCopy_OnClick
{
  #keys: '[412960.0.149330244]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebButton_OnClick'
  QuillAction
  {
    Body:
    [*
      owner := GlobalOTDTable;
      rootversionid := VersionControl::GetSOPVersionInfo( owner ).Element( 2 );
      dlg := construct( DialogVersionIDCopy );
      dlg.lblContent().Text( rootversionid );
      dlg.JustShow();
    *]
    GroupServerCalls: false
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormVersionOfSOP/Response_PanelVersionOfSOPHeader_ButtonVersionOfSOPHeaderFresh_OnClick.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,21 @@
Quintiq file version 2.0
#parent: PanelVersionOfSOPHeader/ButtonVersionOfSOPHeaderFresh
Response OnClick () id:Response_PanelVersionOfSOPHeader_ButtonVersionOfSOPHeaderFresh_OnClick
{
  #keys: '[412960.0.133611384]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebButton_OnClick'
  QuillAction
  {
    Body:
    [*
      owner := GlobalOTDTable;
      rootversionid := VersionControl::GetSOPVersionInfo( owner ).Element( 0 );
      DataExtractorVersionOfSOPDetails.FixedFilter( "object.VersionID().FindString( " + rootversionid.AsQUILL() + ", 0 ) = 0" );
      rootversionname := VersionControl::GetSOPVersionInfo( owner ).Element( 1 );
      LabelVersionOfSOPHeader.Text( rootversionname );
      VersionStatus::GetBusinessTypeStatus( owner, rootversionid );
    *]
    GroupServerCalls: false
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormVersionOfSOP/Response_PanelVersionOfSOPHeader_ButtonVersionOfSOPHeaderRelease_OnClick.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,19 @@
Quintiq file version 2.0
#parent: PanelVersionOfSOPHeader/ButtonVersionOfSOPHeaderRelease
Response OnClick () id:Response_PanelVersionOfSOPHeader_ButtonVersionOfSOPHeaderRelease_OnClick
{
  #keys: '[412960.0.142110414]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebButton_OnClick'
  GroupServerCalls: true
  QuillAction
  {
    Body:
    [*
      owner := GlobalOTDTable;
      testbusinesstype := "集团";
      VersionControl::ReleaseNewVersion( owner, testbusinesstype );
    *]
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormVersionOfSOP/_ROOT_Component_FormVersionOfSOP.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,72 @@
Quintiq file version 2.0
#root
#parent: MacroPlannerWebApp
OrphanComponent FormVersionOfSOP
{
  #keys: '[412960.0.135200328]'
  BaseType: 'WebForm'
  Children:
  [
    #child: PanelVersionOfSOP
    Component DataHolderVersionOfSOP
    {
      #keys: '[412960.0.134980222]'
      BaseType: 'WebDataHolder'
      Databinding: 'structured[VersionStatus]*'
      Children:
      [
        Component DataExtractorVersionOfSOP
        {
          #keys: '[412960.0.134980234]'
          BaseType: 'WebDataExtractor'
          Properties:
          [
            DataType: 'GlobalOTDTable'
            Source: 'GlobalOTDTable'
            Taborder: 0
            Transformation: 'VersionStatus'
          ]
        }
      ]
      Properties:
      [
        Taborder: 3
      ]
    }
    #child: PanelVersionOfSOPHeader
    #child: PanelVersionOfSOPDetails
    Component DataHolderVersionOfSOPDetails
    {
      #keys: '[412960.0.140750496]'
      BaseType: 'WebDataHolder'
      Databinding: 'structured[VersionStatusDetail]*'
      Children:
      [
        Component DataExtractorVersionOfSOPDetails453
        {
          #keys: '[412960.0.142212532]'
          BaseType: 'WebDataExtractor'
          Properties:
          [
            DataType: 'VersionStatus'
            ExtractionMode: 'Selected'
            Source: 'ListVersionOfSOP'
            Taborder: 0
            Transformation: 'VersionStatusDetail'
          ]
        }
      ]
      Properties:
      [
        Description: '事业部对应详情数据'
        Taborder: 4
      ]
    }
  ]
  Properties:
  [
    Description: 'SOP版本数据展示界面'
    Image: 'WINDOW_TIME'
    Title: 'SOP各事业部数据同步状态'
  ]
}
_Main/UI/MacroPlannerWebApp/Views/SOP_Versions.vw
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,351 @@
Quintiq file version 2.0
{
  viewcontents
  {
    forms
    {
      form_legacy_1
      {
        title: 'Scenario manager'
        shown: true
        componentID: 'FormScenarioManager'
        layout
        {
          mode: 'open'
          rowPosition: 1
          rowSpan: 8
          columnPosition: 1
          columnSpan: 5
        }
        components
        {
          FormScenarioManager_ListScenario
          {
          }
          FormScenarioManager_DataSetLevelScenario
          {
            groupDepth: -1
            column_All_constraints
            {
              columnId: 'All constraints'
              dataPath: 'All constraints'
              dataType: 'string'
              title: 'All constraints'
              index: 0
              subtotals: ''
              width: 90
            }
            column_Name
            {
              columnId: 'Name'
              dataPath: 'Name'
              dataType: 'string'
              title: 'Name'
              index: 1
              subtotals: ''
              width: 197
            }
            column_ChangedBy
            {
              columnId: 'ChangedBy'
              dataPath: 'ChangedBy'
              dataType: 'string'
              title: 'Changed by'
              index: 2
              subtotals: ''
              width: 91
            }
            column_ChangedOn
            {
              columnId: 'ChangedOn'
              dataPath: 'ChangedOn'
              dataType: 'datetime'
              title: 'Changed on'
              index: 3
              subtotals: ''
              width: 99
            }
            column_StorageMode
            {
              columnId: 'StorageMode'
              dataPath: 'StorageMode'
              dataType: 'string'
              title: 'StorageMode'
              index: 4
              subtotals: ''
              width: 40
            }
          }
        }
      }
      form_legacy_2
      {
        title: 'Assumptions'
        shown: true
        componentID: 'FormAssumptions'
        layout
        {
          mode: 'open'
          rowPosition: 9
          rowSpan: 8
          columnPosition: 1
          columnSpan: 5
        }
        components
        {
          FormAssumptions_ListAssumptions
          {
          }
          FormAssumptions_DataSetLevelAssumptions
          {
            groupDepth: -1
            column_All_constraints
            {
              columnId: 'All constraints'
              dataPath: 'All constraints'
              dataType: 'string'
              title: 'All constraints'
              index: 0
              subtotals: ''
              width: 32
            }
            column_Category
            {
              columnId: 'Category'
              dataPath: 'Category'
              dataType: 'string'
              title: 'Category'
              index: 1
              subtotals: ''
              width: 108
            }
            column_Importance
            {
              columnId: 'Importance'
              dataPath: 'Importance'
              dataType: 'string'
              title: 'Importance'
              index: 2
              subtotals: ''
              width: 110
            }
            column_Title
            {
              columnId: 'Title'
              dataPath: 'Title'
              dataType: 'string'
              title: 'Title'
              index: 3
              subtotals: ''
              width: 150
            }
            column_ChangedBy
            {
              columnId: 'ChangedBy'
              dataPath: 'ChangedBy'
              dataType: 'string'
              title: 'Changed by'
              index: 4
              subtotals: ''
              width: 150
            }
            column_CreatedOn
            {
              columnId: 'CreatedOn'
              dataPath: 'CreatedOn'
              dataType: 'datetime'
              title: 'Created on'
              index: 5
              subtotals: ''
              width: 150
            }
          }
        }
      }
      form_FormScenariosKPIsComparison
      {
        title: 'QLibMacroPlannerWebUI::FormScenariosKPIsComparison'
        shown: true
        componentID: 'QLibMacroPlannerWebUI::FormScenariosKPIsComparison'
        layout
        {
          mode: 'open'
          rowPosition: 1
          rowSpan: 16
          columnPosition: 6
          columnSpan: 7
        }
        components
        {
          FormScenariosKPIsComparison_MatrixEditorFinancialKPIs
          {
            gridColor: '#c4c4c4'
            totalHeaderWidth: 200
            attributeHeaderWidthRatio: 0.6
            nameHeaderWidthRatio: 0.4
            columnWidth: 100
            horizontalGrid: true
            verticalGrid: true
            backendState
            {
              componentId: 'QLibMacroPlannerWebUI::FormScenariosKPIsComparison.MatrixEditorFinancialKPIs'
              state
              {
                cells
                {
                  attributes
                  {
                    attribute_DisplayValue
                    {
                      type: 'MatrixEditorWebApiCellDataModelInterest'
                      index: 0
                      rowsubtotal: ''
                      columnsubtotal: ''
                      attribute: 'DisplayValue'
                    }
                  }
                }
                columns
                {
                  sorting
                  {
                    criteria: ''
                  }
                }
                rows
                {
                  sorting
                  {
                    criteria: "datamember:'KPISetting.DisplayIndex'"
                  }
                }
              }
            }
          }
        }
      }
      form_FormOptimizerPuzzles
      {
        title: 'Optimizer Puzzles'
        shown: false
        componentID: 'FormOptimizerPuzzles'
        layout
        {
          mode: 'dockright'
          index: 0
        }
        components
        {
          FormOptimizerPuzzles_ListOptimizerPuzzles
          {
          }
          FormOptimizerPuzzles_DataSetLevelOptimizerPuzzles
          {
            groupDepth: -1
            column_All_constraints
            {
              columnId: 'All constraints'
              dataPath: 'All constraints'
              dataType: 'string'
              title: 'All constraints'
              index: 0
              subtotals: ''
              width: 32
            }
            column_Name
            {
              columnId: 'Name'
              dataPath: 'Name'
              dataType: 'string'
              title: 'Name'
              index: 1
              subtotals: ''
              width: 109
            }
            column_Description
            {
              columnId: 'Description'
              dataPath: 'Description'
              dataType: 'string'
              title: 'Description'
              index: 2
              subtotals: ''
              width: 207
            }
          }
        }
      }
      form_FormKPI
      {
        title: 'KPI Dashboard'
        shown: true
        componentID: 'FormKPI'
        layout
        {
          mode: 'dockright'
          index: 1
        }
        components
        {
          FormKPI_PanelKPI
          {
            sizeRatio: 1
            activeChild: 'PanelKPISelection'
          }
          FormKPI_PanelKPIDashboard
          {
            sizeRatio: 1
          }
          FormKPI_PanelKPISelection
          {
            sizeRatio: 1
          }
          FormKPI_ListKPISelection
          {
            QuillViewData
            {
              Food_KPISetting: 'Cost of sales;Fulfillment;Fulfillment target;Inventory holding cost;Labor cost;Margin;Safety stock;Sales;Sourcing cost;Total CO2 emission;Transportation cost;Volume'
            }
          }
          FormKPI_DataSetLevelKPISelection
          {
            groupDepth: -1
            column_All_constraints
            {
              columnId: 'All constraints'
              dataPath: 'All constraints'
              dataType: 'string'
              title: 'All constraints'
              index: 0
              subtotals: ''
              width: 32
            }
            column_Name
            {
              columnId: 'Name'
              dataPath: 'Name'
              dataType: 'string'
              title: 'Name'
              index: 1
              subtotals: ''
              width: 200
            }
          }
        }
      }
    }
    userconfigurableinformation
    {
    }
    page: 'applicationDevelopmentActionBarPageDef'
    group: ''
    index: 1
    image: 'WINDOW_TIME'
    description: ''
  }
  formatversion: 2
  id: 'SOP_Versions'
  name: 'SOP Versions'
  isglobal: false
  isroot: true
}