From 53766fff74696ed21adb9807f41398ba55a2a7df Mon Sep 17 00:00:00 2001
From: xiaoding721 <33130084+xiaoding721@users.noreply.github.com>
Date: 星期四, 05 九月 2024 17:29:49 +0800
Subject: [PATCH] 添加班次计划及班次详情下发
---
_Main/BL/Type_DispatchShiftSchedulingInformation/Attribute_VersionFlag.qbl | 8 ++
_Main/BL/Type_DispatchShiftSchedulingInformation/DefaultValue_Tips.qbl | 6 +
_Main/BL/Relations/Relation_DispatchShiftSchedulingInformation_RecycleBin_RecycleBin_DispatchSh.qbl | 23 +++++
_Main/BL/Type_DispatchShiftSchedulingInformation/Attribute_ID.qbl | 8 ++
_Main/BL/Type_DispatchShiftSchedulingInformation/Attribute_InterfaceTime.qbl | 8 ++
_Main/BL/Type_DispatchShiftSchedulingInformation/DefaultValue_ProductLine.qbl | 6 +
_Main/BL/Type_DispatchShiftSchedulingInformation/Attribute_FactoryName.qbl | 8 ++
_Main/BL/Type_ActualDailyProductionReport/StaticMethod_Synchronize.qbl | 2
_Main/BL/Type_DispatchShiftSchedulingInformation/DefaultValue_Fac.qbl | 6 +
_Main/BL/Type_DispatchShiftSchedulingInformation/Attribute_ShiftDate.qbl | 8 ++
_Main/BL/Type_DispatchShiftSchedulingInformation/Attribute_Product.qbl | 8 ++
_Main/BL/Type_DispatchShiftSchedulingInformation/Attribute_ShiftEndDate.qbl | 8 ++
_Main/BL/Type_DispatchShiftSchedulingInformation/DefaultValue_VersionName.qbl | 6 +
_Main/BL/Type_Archive/StaticMethod_GenerateForecast.qbl | 3
_Main/BL/Type_DispatchShiftSchedulingInformation/Attribute_ProductLine.qbl | 8 ++
_Main/BL/Type_DispatchShiftSchedulingInformation/Attribute_VersionName.qbl | 8 ++
_Main/BL/Type_DispatchShiftSchedulingInformation/TypeIndex_IDTypeIndex.qbl | 12 +++
_Main/BL/Type_DispatchShiftSchedulingInformation/Attribute_ShiftVolume.qbl | 8 ++
_Main/BL/Type_DispatchShiftSchedulingInformation/DefaultValue_FactoryName.qbl | 6 +
_Main/BL/Type_DispatchShiftSchedulingInformation/_ROOT_Type_DispatchShiftSchedulingInformation.qbl | 10 ++
_Main/BL/Type_DispatchShiftSchedulingInformation/StaticMethod_Dispatch.qbl | 9 ++
_Main/BL/Type_DispatchShiftSchedulingInformation/Attribute_Tips.qbl | 8 ++
_Main/BL/Type_DispatchShiftSchedulingInformation/DefaultValue_ID.qbl | 6 +
_Main/BL/Type_DispatchShiftSchedulingInformation/Attribute_ShiftName.qbl | 8 ++
_Main/BL/Type_DispatchShiftSchedulingInformation/Attribute_Fac.qbl | 8 ++
_Main/BL/Type_DispatchShiftSchedulingInformation/DefaultValue_VersionFlag.qbl | 6 +
_Main/BL/Type_DispatchShiftSchedulingInformation/Attribute_ShiftStartDate.qbl | 8 ++
_Main/BL/Type_DispatchShiftSchedulingInformation/Attribute_SingleShiftName.qbl | 8 ++
_Main/BL/Type_DispatchShiftSchedulingInformation/Function_CalcFac.qbl | 17 ++++
29 files changed, 236 insertions(+), 2 deletions(-)
diff --git a/_Main/BL/Relations/Relation_DispatchShiftSchedulingInformation_RecycleBin_RecycleBin_DispatchSh.qbl b/_Main/BL/Relations/Relation_DispatchShiftSchedulingInformation_RecycleBin_RecycleBin_DispatchSh.qbl
new file mode 100644
index 0000000..6b167c2
--- /dev/null
+++ b/_Main/BL/Relations/Relation_DispatchShiftSchedulingInformation_RecycleBin_RecycleBin_DispatchSh.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation DispatchShiftSchedulingInformation_RecycleBin_RecycleBin_DispatchShiftSchedulingInformation
+{
+ #keys: '1[414996.1.67010175]'
+ DefaultRelationStrategy
+ {
+ }
+ RelationSide.LeftSide RecycleBin
+ {
+ #keys: '3[414996.1.67010177][414996.1.67010176][414996.1.67010178]'
+ Cardinality: '0to1'
+ ObjectDefinition: DispatchShiftSchedulingInformation
+ OwningSide: 'Reference'
+ }
+ RelationSide.RightSide DispatchShiftSchedulingInformation
+ {
+ #keys: '3[414996.1.67010180][414996.1.67010179][414996.1.67010181]'
+ Cardinality: '1toN'
+ ObjectDefinition: RecycleBin
+ OwningSide: 'Owned'
+ }
+}
diff --git a/_Main/BL/Type_ActualDailyProductionReport/StaticMethod_Synchronize.qbl b/_Main/BL/Type_ActualDailyProductionReport/StaticMethod_Synchronize.qbl
index 9b78c60..4f6cfa9 100644
--- a/_Main/BL/Type_ActualDailyProductionReport/StaticMethod_Synchronize.qbl
+++ b/_Main/BL/Type_ActualDailyProductionReport/StaticMethod_Synchronize.qbl
@@ -8,7 +8,7 @@
TextBody:
[*
// rislai Jul-23-2024 (created)
- date := Date::ActualDate();
+ date := Date::ActualDate() - 1;
loginfo := interfaceDataset.InterfaceLoginfo( relnew, ExecuteUser := QuintiqUser::CurrentUser().ShortName()
, Name := Translations::InterfaceDataset_ActualDailyProductionData_Name()
, InterfaceDateTime := DateTime::ActualTime()
diff --git a/_Main/BL/Type_Archive/StaticMethod_GenerateForecast.qbl b/_Main/BL/Type_Archive/StaticMethod_GenerateForecast.qbl
index a363c8e..fbb1602 100644
--- a/_Main/BL/Type_Archive/StaticMethod_GenerateForecast.qbl
+++ b/_Main/BL/Type_Archive/StaticMethod_GenerateForecast.qbl
@@ -12,7 +12,8 @@
}
traverse ( archiveExecutionStatus, TemporaryDemandData, tdd ,tdd.Origin() = "" or tdd.StartDate() >= macroPlan.StartOfPlanning().Date()) {
- targetProduct_MP := select( macroPlan, Product_MP, tempPMP, tempPMP.ID() = tdd.ProductID() );
+ targetProduct_MP := select( macroPlan, Product_MP, tempPMP, tempPMP.Notes() = tdd.ProductID() );
+ // targetProduct_MP := select( macroPlan, Product_MP, tempPMP, tempPMP.ID() = tdd.ProductID() );
targetStockingPoint_MP := select( macroPlan, StockingPoint_MP, tempSPMP, tempSPMP.ID() = tdd.StockingPointID() );
// info( tdd.SalesSegmentName() );
if ( not isnull( targetProduct_MP ) and not isnull( targetStockingPoint_MP ) ) {
diff --git a/_Main/BL/Type_DispatchShiftSchedulingInformation/Attribute_Fac.qbl b/_Main/BL/Type_DispatchShiftSchedulingInformation/Attribute_Fac.qbl
new file mode 100644
index 0000000..1ccb4ce
--- /dev/null
+++ b/_Main/BL/Type_DispatchShiftSchedulingInformation/Attribute_Fac.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Fac
+{
+ #keys: '3[414996.1.67010086][414996.1.67010085][414996.1.67010087]'
+ Description: '宸ュ巶绠�鍐�'
+ ValueType: String
+}
diff --git a/_Main/BL/Type_DispatchShiftSchedulingInformation/Attribute_FactoryName.qbl b/_Main/BL/Type_DispatchShiftSchedulingInformation/Attribute_FactoryName.qbl
new file mode 100644
index 0000000..2c20d6e
--- /dev/null
+++ b/_Main/BL/Type_DispatchShiftSchedulingInformation/Attribute_FactoryName.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute FactoryName
+{
+ #keys: '3[414996.1.67010074][414996.1.67010073][414996.1.67010075]'
+ Description: '宸ュ巶鍚嶇О'
+ ValueType: String
+}
diff --git a/_Main/BL/Type_DispatchShiftSchedulingInformation/Attribute_ID.qbl b/_Main/BL/Type_DispatchShiftSchedulingInformation/Attribute_ID.qbl
new file mode 100644
index 0000000..ec71217
--- /dev/null
+++ b/_Main/BL/Type_DispatchShiftSchedulingInformation/Attribute_ID.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ID
+{
+ #keys: '3[414996.1.67010089][414996.1.67010088][414996.1.67010090]'
+ IsReadOnly: true
+ ValueType: String
+}
diff --git a/_Main/BL/Type_DispatchShiftSchedulingInformation/Attribute_InterfaceTime.qbl b/_Main/BL/Type_DispatchShiftSchedulingInformation/Attribute_InterfaceTime.qbl
new file mode 100644
index 0000000..1e785cd
--- /dev/null
+++ b/_Main/BL/Type_DispatchShiftSchedulingInformation/Attribute_InterfaceTime.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute InterfaceTime
+{
+ #keys: '3[414996.1.67010077][414996.1.67010076][414996.1.67010078]'
+ Description: '涓嬪彂鏃堕棿'
+ ValueType: DateTime
+}
diff --git a/_Main/BL/Type_DispatchShiftSchedulingInformation/Attribute_Product.qbl b/_Main/BL/Type_DispatchShiftSchedulingInformation/Attribute_Product.qbl
new file mode 100644
index 0000000..526f3b4
--- /dev/null
+++ b/_Main/BL/Type_DispatchShiftSchedulingInformation/Attribute_Product.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Product
+{
+ #keys: '3[414996.1.67010096][414996.1.67010095][414996.1.67010097]'
+ Description: '鐗╂枡鍙�'
+ ValueType: String
+}
diff --git a/_Main/BL/Type_DispatchShiftSchedulingInformation/Attribute_ProductLine.qbl b/_Main/BL/Type_DispatchShiftSchedulingInformation/Attribute_ProductLine.qbl
new file mode 100644
index 0000000..979ff60
--- /dev/null
+++ b/_Main/BL/Type_DispatchShiftSchedulingInformation/Attribute_ProductLine.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ProductLine
+{
+ #keys: '3[414996.1.67010068][414996.1.67010067][414996.1.67010069]'
+ Description: '浜х嚎'
+ ValueType: String
+}
diff --git a/_Main/BL/Type_DispatchShiftSchedulingInformation/Attribute_ShiftDate.qbl b/_Main/BL/Type_DispatchShiftSchedulingInformation/Attribute_ShiftDate.qbl
new file mode 100644
index 0000000..534f432
--- /dev/null
+++ b/_Main/BL/Type_DispatchShiftSchedulingInformation/Attribute_ShiftDate.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ShiftDate
+{
+ #keys: '3[414996.1.67010092][414996.1.67010091][414996.1.67010093]'
+ Description: '鐝鏃ユ湡'
+ ValueType: Date
+}
diff --git a/_Main/BL/Type_DispatchShiftSchedulingInformation/Attribute_ShiftEndDate.qbl b/_Main/BL/Type_DispatchShiftSchedulingInformation/Attribute_ShiftEndDate.qbl
new file mode 100644
index 0000000..f1bdbde
--- /dev/null
+++ b/_Main/BL/Type_DispatchShiftSchedulingInformation/Attribute_ShiftEndDate.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ShiftEndDate
+{
+ #keys: '3[414996.1.67010149][414996.1.67010148][414996.1.67010150]'
+ Description: '鐝鐨勭粨鏉熸椂闂�'
+ ValueType: DateTime
+}
diff --git a/_Main/BL/Type_DispatchShiftSchedulingInformation/Attribute_ShiftName.qbl b/_Main/BL/Type_DispatchShiftSchedulingInformation/Attribute_ShiftName.qbl
new file mode 100644
index 0000000..547534f
--- /dev/null
+++ b/_Main/BL/Type_DispatchShiftSchedulingInformation/Attribute_ShiftName.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ShiftName
+{
+ #keys: '3[414996.1.67010106][414996.1.67010105][414996.1.67010107]'
+ Description: '鐝鍚嶇О'
+ ValueType: String
+}
diff --git a/_Main/BL/Type_DispatchShiftSchedulingInformation/Attribute_ShiftStartDate.qbl b/_Main/BL/Type_DispatchShiftSchedulingInformation/Attribute_ShiftStartDate.qbl
new file mode 100644
index 0000000..6ee07d4
--- /dev/null
+++ b/_Main/BL/Type_DispatchShiftSchedulingInformation/Attribute_ShiftStartDate.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ShiftStartDate
+{
+ #keys: '3[414996.1.67010139][414996.1.67010138][414996.1.67010140]'
+ Description: '鐝璧峰鏃堕棿'
+ ValueType: DateTime
+}
diff --git a/_Main/BL/Type_DispatchShiftSchedulingInformation/Attribute_ShiftVolume.qbl b/_Main/BL/Type_DispatchShiftSchedulingInformation/Attribute_ShiftVolume.qbl
new file mode 100644
index 0000000..520c3d9
--- /dev/null
+++ b/_Main/BL/Type_DispatchShiftSchedulingInformation/Attribute_ShiftVolume.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ShiftVolume
+{
+ #keys: '3[414996.1.67010126][414996.1.67010125][414996.1.67010127]'
+ Description: '鍗曠彮娆′骇閲�'
+ ValueType: Real
+}
diff --git a/_Main/BL/Type_DispatchShiftSchedulingInformation/Attribute_SingleShiftName.qbl b/_Main/BL/Type_DispatchShiftSchedulingInformation/Attribute_SingleShiftName.qbl
new file mode 100644
index 0000000..a426d36
--- /dev/null
+++ b/_Main/BL/Type_DispatchShiftSchedulingInformation/Attribute_SingleShiftName.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute SingleShiftName
+{
+ #keys: '3[414996.1.67010116][414996.1.67010115][414996.1.67010117]'
+ Description: '鍗曠彮娆″悕绉�'
+ ValueType: String
+}
diff --git a/_Main/BL/Type_DispatchShiftSchedulingInformation/Attribute_Tips.qbl b/_Main/BL/Type_DispatchShiftSchedulingInformation/Attribute_Tips.qbl
new file mode 100644
index 0000000..c07c7a2
--- /dev/null
+++ b/_Main/BL/Type_DispatchShiftSchedulingInformation/Attribute_Tips.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Tips
+{
+ #keys: '3[414996.1.67010083][414996.1.67010082][414996.1.67010084]'
+ Description: '澶囨敞'
+ ValueType: String
+}
diff --git a/_Main/BL/Type_DispatchShiftSchedulingInformation/Attribute_VersionFlag.qbl b/_Main/BL/Type_DispatchShiftSchedulingInformation/Attribute_VersionFlag.qbl
new file mode 100644
index 0000000..223b18b
--- /dev/null
+++ b/_Main/BL/Type_DispatchShiftSchedulingInformation/Attribute_VersionFlag.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute VersionFlag
+{
+ #keys: '3[414996.1.67010071][414996.1.67010070][414996.1.67010072]'
+ Description: '鐗堟湰鏍囪瘑'
+ ValueType: String
+}
diff --git a/_Main/BL/Type_DispatchShiftSchedulingInformation/Attribute_VersionName.qbl b/_Main/BL/Type_DispatchShiftSchedulingInformation/Attribute_VersionName.qbl
new file mode 100644
index 0000000..010fe97
--- /dev/null
+++ b/_Main/BL/Type_DispatchShiftSchedulingInformation/Attribute_VersionName.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute VersionName
+{
+ #keys: '3[414996.1.67010080][414996.1.67010079][414996.1.67010081]'
+ Description: '鐗堟湰鍚嶇О'
+ ValueType: String
+}
diff --git a/_Main/BL/Type_DispatchShiftSchedulingInformation/DefaultValue_Fac.qbl b/_Main/BL/Type_DispatchShiftSchedulingInformation/DefaultValue_Fac.qbl
new file mode 100644
index 0000000..386d17b
--- /dev/null
+++ b/_Main/BL/Type_DispatchShiftSchedulingInformation/DefaultValue_Fac.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+ TargetAttribute: Fac
+}
diff --git a/_Main/BL/Type_DispatchShiftSchedulingInformation/DefaultValue_FactoryName.qbl b/_Main/BL/Type_DispatchShiftSchedulingInformation/DefaultValue_FactoryName.qbl
new file mode 100644
index 0000000..2ff5775
--- /dev/null
+++ b/_Main/BL/Type_DispatchShiftSchedulingInformation/DefaultValue_FactoryName.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+ TargetAttribute: FactoryName
+}
diff --git a/_Main/BL/Type_DispatchShiftSchedulingInformation/DefaultValue_ID.qbl b/_Main/BL/Type_DispatchShiftSchedulingInformation/DefaultValue_ID.qbl
new file mode 100644
index 0000000..049abc0
--- /dev/null
+++ b/_Main/BL/Type_DispatchShiftSchedulingInformation/DefaultValue_ID.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+ TargetAttribute: ID
+}
diff --git a/_Main/BL/Type_DispatchShiftSchedulingInformation/DefaultValue_ProductLine.qbl b/_Main/BL/Type_DispatchShiftSchedulingInformation/DefaultValue_ProductLine.qbl
new file mode 100644
index 0000000..498dbce
--- /dev/null
+++ b/_Main/BL/Type_DispatchShiftSchedulingInformation/DefaultValue_ProductLine.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+ TargetAttribute: ProductLine
+}
diff --git a/_Main/BL/Type_DispatchShiftSchedulingInformation/DefaultValue_Tips.qbl b/_Main/BL/Type_DispatchShiftSchedulingInformation/DefaultValue_Tips.qbl
new file mode 100644
index 0000000..c3f3595
--- /dev/null
+++ b/_Main/BL/Type_DispatchShiftSchedulingInformation/DefaultValue_Tips.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+ TargetAttribute: Tips
+}
diff --git a/_Main/BL/Type_DispatchShiftSchedulingInformation/DefaultValue_VersionFlag.qbl b/_Main/BL/Type_DispatchShiftSchedulingInformation/DefaultValue_VersionFlag.qbl
new file mode 100644
index 0000000..2b57c4f
--- /dev/null
+++ b/_Main/BL/Type_DispatchShiftSchedulingInformation/DefaultValue_VersionFlag.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+ TargetAttribute: VersionFlag
+}
diff --git a/_Main/BL/Type_DispatchShiftSchedulingInformation/DefaultValue_VersionName.qbl b/_Main/BL/Type_DispatchShiftSchedulingInformation/DefaultValue_VersionName.qbl
new file mode 100644
index 0000000..34a947a
--- /dev/null
+++ b/_Main/BL/Type_DispatchShiftSchedulingInformation/DefaultValue_VersionName.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+ TargetAttribute: VersionName
+}
diff --git a/_Main/BL/Type_DispatchShiftSchedulingInformation/Function_CalcFac.qbl b/_Main/BL/Type_DispatchShiftSchedulingInformation/Function_CalcFac.qbl
new file mode 100644
index 0000000..a20b0a3
--- /dev/null
+++ b/_Main/BL/Type_DispatchShiftSchedulingInformation/Function_CalcFac.qbl
@@ -0,0 +1,17 @@
+Quintiq file version 2.0
+#parent: #root
+Function CalcFac
+{
+ TextBody:
+ [*
+ // Akari Aug-21-2024 (created)
+ value := "";
+ if( this.FactoryName() = "澶ц繛宸ュ巶" ){
+ value := "DL";
+ }else if( this.FactoryName() = "闀挎槬宸ュ巶"){
+ value := "CC";
+ }
+
+ this.Fac( value );
+ *]
+}
diff --git a/_Main/BL/Type_DispatchShiftSchedulingInformation/StaticMethod_Dispatch.qbl b/_Main/BL/Type_DispatchShiftSchedulingInformation/StaticMethod_Dispatch.qbl
new file mode 100644
index 0000000..a5374a2
--- /dev/null
+++ b/_Main/BL/Type_DispatchShiftSchedulingInformation/StaticMethod_Dispatch.qbl
@@ -0,0 +1,9 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod Dispatch
+{
+ TextBody:
+ [*
+ // Akari Sep-4-2024 (created)
+ *]
+}
diff --git a/_Main/BL/Type_DispatchShiftSchedulingInformation/TypeIndex_IDTypeIndex.qbl b/_Main/BL/Type_DispatchShiftSchedulingInformation/TypeIndex_IDTypeIndex.qbl
new file mode 100644
index 0000000..18969ed
--- /dev/null
+++ b/_Main/BL/Type_DispatchShiftSchedulingInformation/TypeIndex_IDTypeIndex.qbl
@@ -0,0 +1,12 @@
+Quintiq file version 2.0
+#parent: #root
+TypeIndex IDTypeIndex
+{
+ Attributes:
+ [
+ TypeIndexAttribute
+ {
+ ModelElement: ID
+ }
+ ]
+}
diff --git a/_Main/BL/Type_DispatchShiftSchedulingInformation/_ROOT_Type_DispatchShiftSchedulingInformation.qbl b/_Main/BL/Type_DispatchShiftSchedulingInformation/_ROOT_Type_DispatchShiftSchedulingInformation.qbl
new file mode 100644
index 0000000..34cb1a1
--- /dev/null
+++ b/_Main/BL/Type_DispatchShiftSchedulingInformation/_ROOT_Type_DispatchShiftSchedulingInformation.qbl
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+Type DispatchShiftSchedulingInformation
+{
+ #keys: '5[414996.1.67010064][414996.1.67010062][0.0.0][414996.1.67010063][414996.1.67010065]'
+ BaseType: Object
+ Description: '涓嬪彂鐝鎺掍骇淇℃伅'
+ StructuredName: 'DispatchShiftSchedulingInformations'
+}
--
Gitblit v1.9.3