xiaoding721
2024-09-29 d907182b676b348aae346a15ed4e8790b75d226a
修改三条产线轮换生产
已添加3个文件
已修改9个文件
172 ■■■■■ 文件已修改
_Main/BL/Relations/Relation_ProductionLineBatchData_ShiftPattern3_ShiftPattern_ProductionLineBa.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_ProductionLineBatchData_Unit3_Unit_ProductionLineBatchData3.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_DispatchShiftPlan/StaticMethod_Dispatch.qbl 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_ProductionLineBatchData/Method_Enable.qbl 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_ProductionLineBatchData/Method_OnOK.qbl 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_ProductionLineBatchData/Method_Update.qbl 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_ProductionLineBatchData/Method_VerifyUnits.qbl 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_ProductionLineBatchData/Method_verifyEnable.qbl 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_ProductionLineBatchData/StaticMethod_Create.qbl 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_DialogCreateEditProductionLineBatchData/Component_pnlContent.def 62 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_DialogCreateEditProductionLineBatchData/Response_pnlActions_btnOk_OnClick.def 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormProductionLineBatchData/Component_ListProductionLineBatchData.def 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_ProductionLineBatchData_ShiftPattern3_ShiftPattern_ProductionLineBa.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
Quintiq file version 2.0
#parent: #root
Relation ProductionLineBatchData_ShiftPattern3_ShiftPattern_ProductionLineBatchData3
{
  #keys: '1[414996.1.105920038]'
  DefaultRelationStrategy
  {
  }
  RelationSide.LeftSide ShiftPattern3
  {
    #keys: '3[414996.1.105920040][414996.1.105920039][414996.1.105920041]'
    Cardinality: '0to1'
    ObjectDefinition: ProductionLineBatchData
    OwningSide: 'Reference'
  }
  RelationSide.RightSide ProductionLineBatchData3
  {
    #keys: '3[414996.1.105920043][414996.1.105920042][414996.1.105920044]'
    Cardinality: '1toN'
    ObjectDefinition: ShiftPattern
    OwningSide: 'Reference'
  }
}
_Main/BL/Relations/Relation_ProductionLineBatchData_Unit3_Unit_ProductionLineBatchData3.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
Quintiq file version 2.0
#parent: #root
Relation ProductionLineBatchData_Unit3_Unit_ProductionLineBatchData3
{
  #keys: '1[414996.1.105920060]'
  DefaultRelationStrategy
  {
  }
  RelationSide.LeftSide Unit3
  {
    #keys: '3[414996.1.105920062][414996.1.105920061][414996.1.105920063]'
    Cardinality: '0to1'
    ObjectDefinition: ProductionLineBatchData
    OwningSide: 'Reference'
  }
  RelationSide.RightSide ProductionLineBatchData3
  {
    #keys: '3[414996.1.105920065][414996.1.105920064][414996.1.105920066]'
    Cardinality: '1toN'
    ObjectDefinition: Unit
    OwningSide: 'Reference'
  }
}
_Main/BL/Type_DispatchShiftPlan/StaticMethod_Dispatch.qbl
@@ -24,7 +24,7 @@
         }
       }
      
       owner.DispatchShiftPlan( relnew,ID := OS::GenerateGUIDAsString(),
       owner.DispatchShiftPlan( relnew,ID := OS:: GenerateGUIDAsString(),
                                ProductLine := shiftPlan.UnitPeriodTime().Unit().ID(),
                                ShiftDate := shiftPlan.UnitPeriodTime().Period_MP().StartDate(),
                                Tips := shiftPlan.Remark(),
_Main/BL/Type_ProductionLineBatchData/Method_Enable.qbl
@@ -10,6 +10,7 @@
    // è½®æ¢ç­æ¬¡ç¼“å­˜
    shiftPattern1 := this.ShiftPattern1();
    shiftPattern2 := this.ShiftPattern2();
    shiftPattern3 := this.ShiftPattern3();
    tempShiftPattern := shiftPattern1;
    
    dayPeriod_MPs := selectsortedset( owner,Period_MP,period_MP, period_MP.TimeUnit() = 'Day' and period_MP.StartDate() >= this.StartDate() and period_MP.EndDate() <= this.EndDate() ,period_MP.StartDate());
@@ -28,26 +29,31 @@
        
        tempPeriod_MPs := selectset( dayPeriod_MPs,Elements,period_MP,period_MP.StartDate() >= tempStartDate and period_MP.EndDate() <= tempEndDate );
        
        unitPeriodTimes1 := selectset( this.Unit1(),UnitPeriod.astype( UnitPeriodTime ),unitPeriodTime,exists( tempPeriod_MPs,Elements,period_MP,period_MP = unitPeriodTime.Period_MP()));
        unitPeriodTimes2 := selectset( this.Unit2(),UnitPeriod.astype( UnitPeriodTime ),unitPeriodTime,exists( tempPeriod_MPs,Elements,period_MP,period_MP = unitPeriodTime.Period_MP()));
        unitPeriodTimes1 := selectset( this.Unit1(),UnitPeriod.astype( UnitPeriodTime ),unitPeriodTime,exists( tempPeriod_MPs,Elements,period_MP,period_MP = unitPeriodTime.Period_MP()) and not isnull( unitPeriodTime.UnitAvailability()));
        unitPeriodTimes2 := selectset( this.Unit2(),UnitPeriod.astype( UnitPeriodTime ),unitPeriodTime,exists( tempPeriod_MPs,Elements,period_MP,period_MP = unitPeriodTime.Period_MP()) and not isnull( unitPeriodTime.UnitAvailability()));
        unitPeriodTimes3 := selectset( this.Unit3(),UnitPeriod.astype( UnitPeriodTime ),unitPeriodTime,exists( tempPeriod_MPs,Elements,period_MP,period_MP = unitPeriodTime.Period_MP()) and not isnull( unitPeriodTime.UnitAvailability()));
        if( unitPeriodTimes1.Size() > 0 ){
          this.OnOK( unitPeriodTimes1,shiftPattern1 ); 
        }
        if( unitPeriodTimes2.Size() > 0 ){
          this.OnOK( unitPeriodTimes2,shiftPattern2 );
        }
        if( unitPeriodTimes3.Size() > 0 ){
          this.OnOK( unitPeriodTimes3,shiftPattern3 );
        }
        
        // æ¢ç­æ¬¡
        tempShiftPattern := shiftPattern1;
        shiftPattern1 := shiftPattern2;
        shiftPattern2 := tempShiftPattern;
        shiftPattern2 := shiftPattern3;
        shiftPattern3 := tempShiftPattern;
      }
    }
    if( weekPeriod_MPs.Size() <> 0 ){
      traverse( weekPeriod_MPs,Elements,period_MP ){
        unitPeriodTimes1 := selectset( this.Unit1(),UnitPeriod.astype( UnitPeriodTime ),unitPeriodTime,period_MP = unitPeriodTime.Period_MP());
        unitPeriodTimes2 := selectset( this.Unit2(),UnitPeriod.astype( UnitPeriodTime ),unitPeriodTime,period_MP = unitPeriodTime.Period_MP());
        unitPeriodTimes1 := selectset( this.Unit1(),UnitPeriod.astype( UnitPeriodTime ),unitPeriodTime,period_MP = unitPeriodTime.Period_MP() and not isnull( unitPeriodTime.UnitAvailability()));
        unitPeriodTimes2 := selectset( this.Unit2(),UnitPeriod.astype( UnitPeriodTime ),unitPeriodTime,period_MP = unitPeriodTime.Period_MP() and not isnull( unitPeriodTime.UnitAvailability()));
        unitPeriodTimes3 := selectset( this.Unit3(),UnitPeriod.astype( UnitPeriodTime ),unitPeriodTime,period_MP = unitPeriodTime.Period_MP() and not isnull( unitPeriodTime.UnitAvailability()));
        
        if( unitPeriodTimes1.Size() > 0 ){
          this.OnOK( unitPeriodTimes1,shiftPattern1 ); 
@@ -55,11 +61,15 @@
        if( unitPeriodTimes2.Size() > 0 ){
          this.OnOK( unitPeriodTimes2,shiftPattern2 );
        }
        if( unitPeriodTimes3.Size() > 0 ){
          this.OnOK( unitPeriodTimes3,shiftPattern3 );
        }
        // æ¢ç­æ¬¡
        tempShiftPattern := shiftPattern1;
        shiftPattern1 := shiftPattern2;
        shiftPattern2 := tempShiftPattern;
        shiftPattern2 := shiftPattern3;
        shiftPattern3 := tempShiftPattern;
      } 
    }
    
_Main/BL/Type_ProductionLineBatchData/Method_OnOK.qbl
@@ -45,8 +45,8 @@
        minloadthreshold := firstElement.MinimumLoadThreshold();
      }
    }
    isbatchedit := unitPeriodTimes.Size() > 1;
    
    isbatchedit := unitPeriodTimes.Size() > 1;
    UnitAvailability::CreateOrUpdateForUnitPeriodTimes( unitPeriodTimes,
                                                        not isbatchedit or false,
                                                        timeunit,
_Main/BL/Type_ProductionLineBatchData/Method_Update.qbl
@@ -3,8 +3,10 @@
Method Update (
  Unit line1,
  Unit line2,
  Unit line3,
  ShiftPattern shiftPattern1,
  ShiftPattern shiftPattern2,
  ShiftPattern shiftPattern3,
  Date startDate,
  Date endDate
)
@@ -32,8 +34,10 @@
    
    this.ShiftPattern1( relset, shiftPattern1 );
    this.ShiftPattern2( relset, shiftPattern2 );
    this.ShiftPattern3( relset, shiftPattern3 );
    this.Unit1( relset, line1 );
    this.Unit2( relset, line2 );
    this.Unit3( relset, line3 );
    this.StartDate( startDate );
    this.EndDate( endDate );
  *]
_Main/BL/Type_ProductionLineBatchData/Method_VerifyUnits.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,16 @@
Quintiq file version 2.0
#parent: #root
Method VerifyUnits (
  const Unit unit1,
  const Unit unit2,
  const Unit unit3
) const declarative as Boolean
{
  TextBody:
  [*
    // Akari Sep-29-2024 (created)
    return ( this.Unit1() = unit1 or this.Unit2() = unit2 or this.Unit3() = unit3 or
             this.Unit1() = unit2 or this.Unit2() = unit3 or this.Unit3() = unit1 or
             this.Unit1() = unit3 or this.Unit2() = unit1 or this.Unit3() = unit2 )
  *]
}
_Main/BL/Type_ProductionLineBatchData/Method_verifyEnable.qbl
@@ -11,7 +11,7 @@
    value := true;
    //(3)  åŒä¸€æ—¶é—´ï¼Œä¸€æ¡äº§çº¿ä¸å¯ä»¥å’Œå¤šæ¡äº§çº¿è½®æ¢ç”Ÿäº§ï¼Œå¦‚果产线1ZKG和产线2ZK的轮换班次已经在4/29/2024生效,那么产线1ZKG和其他产线的轮换班次无法在同一时间生效,此时【Enable】按钮禁用
    verifyData := select( owner,ProductionLineBatchData,plbd, plbd <> this and plbd.IsEnable() and 
                          ( plbd.Unit1() = this.Unit1() or plbd.Unit2() = this.Unit2() or plbd.Unit1() = this.Unit2() or plbd.Unit2() = this.Unit1()) and
                          plbd.VerifyUnits( this.Unit1(),this.Unit2(),this.Unit3() ) and
                          LocalTool::IsOverlap( plbd.StartDate(),plbd.EndDate(),this.StartDate(),this.EndDate()));
    
    if( not isnull( verifyData )){
_Main/BL/Type_ProductionLineBatchData/StaticMethod_Create.qbl
@@ -4,8 +4,10 @@
  MacroPlan owner,
  Unit line1,
  Unit line2,
  Unit line3,
  ShiftPattern shiftPattern1,
  ShiftPattern shiftPattern2,
  ShiftPattern shiftPattern3,
  Date startDate,
  Date endDate
) as ProductionLineBatchData
@@ -13,7 +15,7 @@
  TextBody:
  [*
    // rislai Jun-7-2024 (created)
    if( isnull( shiftPattern1 ) or isnull( shiftPattern2 ) or isnull( line1 ) or isnull( line2 )){
    if( isnull( shiftPattern1 ) or isnull( line1 ) ){
      error( "数据不能为空!" ); 
    }
    // ï¼ˆ1) æ–°å¢žäº§çº¿1和产线2相同时报错“相同产线无法新增”;
@@ -32,8 +34,10 @@
    data := owner.ProductionLineBatchData( relnew,
                                           ShiftPattern1 := shiftPattern1,
                                           ShiftPattern2 := shiftPattern2,
                                           ShiftPattern3 := shiftPattern3,
                                           Unit1 := line1,
                                           Unit2 := line2,
                                           Unit3 := line3,
                                           StartDate := startDate,
                                           EndDate := endDate );
    
_Main/UI/MacroPlannerWebApp/Component_DialogCreateEditProductionLineBatchData/Component_pnlContent.def
@@ -86,7 +86,7 @@
        DataBinding: 'DialogData.Data.ShiftPattern1'
        DisplayField: 'Name'
        Label: 'Shift pattern 1'
        Taborder: 2
        Taborder: 3
      ]
    }
    Component ddlShiftPattern2
@@ -114,7 +114,7 @@
        DataBinding: 'DialogData.Data.ShiftPattern2'
        DisplayField: 'Name'
        Label: 'Shift pattern 2'
        Taborder: 3
        Taborder: 4
      ]
    }
    Component dsStartDate
@@ -125,7 +125,7 @@
      [
        DataBinding: 'DialogData.Data.StartDate'
        Label: 'Start date'
        Taborder: 4
        Taborder: 6
      ]
    }
    Component dsEndDate
@@ -136,6 +136,62 @@
      [
        DataBinding: 'DialogData.Data.EndDate'
        Label: 'End date'
        Taborder: 7
      ]
    }
    Component ddlLine3
    {
      #keys: '[414996.1.106189463]'
      BaseType: 'WebDropDownList'
      Databinding: 'Unit'
      Children:
      [
        Component deContent872
        {
          #keys: '[414996.1.106189464]'
          BaseType: 'WebDataExtractor'
          Properties:
          [
            DataType: 'structured[Unit]'
            Source: 'ApplicationMacroPlanner.DataHolderUnit'
            Taborder: 0
            Transformation: 'Elements.astype(Unit)'
          ]
        }
      ]
      Properties:
      [
        DataBinding: 'DialogData.Data.Unit3'
        DisplayField: 'Name'
        Label: 'Line 3'
        Taborder: 2
      ]
    }
    Component ddlShiftPattern3
    {
      #keys: '[414996.1.108410230]'
      BaseType: 'WebDropDownList'
      Databinding: 'ShiftPattern'
      Children:
      [
        Component deContent529
        {
          #keys: '[414996.1.108410231]'
          BaseType: 'WebDataExtractor'
          Properties:
          [
            DataType: 'MacroPlan'
            Source: 'MacroPlan'
            Taborder: 0
            Transformation: 'ShiftPattern'
          ]
        }
      ]
      Properties:
      [
        DataBinding: 'DialogData.Data.ShiftPattern3'
        DisplayField: 'Name'
        Label: 'Shift pattern 3'
        Taborder: 5
      ]
    }
_Main/UI/MacroPlannerWebApp/Component_DialogCreateEditProductionLineBatchData/Response_pnlActions_btnOk_OnClick.def
@@ -15,16 +15,20 @@
      if( not isnull( DialogData.Data( ))){
        DialogData.Data( ).Update( ddlLine1.Data(),
                                   ddlLine2.Data(),
                                   ddlLine3.Data(),
                                   ddlShiftPattern1.Data(),
                                   ddlShiftPattern2.Data(),
                                   ddlShiftPattern3.Data(),
                                   dsStartDate.Date(),
                                   dsEndDate.Date());
      }else{
        ProductionLineBatchData::Create( MacroPlan,
                                         ddlLine1.Data(),
                                         ddlLine2.Data(),
                                         ddlLine3.Data(),
                                         ddlShiftPattern1.Data(),
                                         ddlShiftPattern2.Data(),
                                         ddlShiftPattern3.Data(),
                                         dsStartDate.Date(),
                                         dsEndDate.Date()); 
      }
_Main/UI/MacroPlannerWebApp/Component_FormProductionLineBatchData/Component_ListProductionLineBatchData.def
@@ -28,7 +28,7 @@
      ]
      Properties:
      [
        Columns: '[{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ImageIsEnable","title":"ImageIsEnable","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"ImageIsEnable"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Unit1.Name","title":"Unit1","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Unit1.Name"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Unit2.Name","title":"Unit2","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Unit2.Name"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ShiftPattern1.Name","title":"Shift pattern 1","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"ShiftPattern1.Name"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ShiftPattern2.Name","title":"Shift pattern 2","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"ShiftPattern2.Name"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"StartDate","title":"Start date","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"StartDate"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"EndDate","title":"End date","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"EndDate"}}]'
        Columns: '[{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ImageIsEnable","title":"ImageIsEnable","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"ImageIsEnable"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Unit1.Name","title":"Unit1","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Unit1.Name"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Unit2.Name","title":"Unit2","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Unit2.Name"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Unit3.Name","title":"Unit3","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Unit3.Name"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ShiftPattern1.Name","title":"Shift pattern 1","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"ShiftPattern1.Name"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ShiftPattern2.Name","title":"Shift pattern 2","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"ShiftPattern2.Name"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ShiftPattern3.Name","title":"Shift pattern 3","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"ShiftPattern3.Name"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"StartDate","title":"Start date","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"StartDate"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"EndDate","title":"End date","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"EndDate"}}]'
        ContextMenu: 'listContextMenuProductionLineBatchData'
        Taborder: 2
      ]