From 2f44fc75c78e9291f07a0864199235cde689fa8d Mon Sep 17 00:00:00 2001
From: 廖井涛 <2265517004@qq.com>
Date: 星期五, 12 十二月 2025 12:29:37 +0800
Subject: [PATCH] 订单明细报表新增楼层编号跟其他列

---
 north-glass-erp/src/main/resources/mapper/sd/OrderDetailMapper.xml |  280 +++++++++++++++++++++++++++++++++++++++++++++++--------
 1 files changed, 238 insertions(+), 42 deletions(-)

diff --git a/north-glass-erp/src/main/resources/mapper/sd/OrderDetailMapper.xml b/north-glass-erp/src/main/resources/mapper/sd/OrderDetailMapper.xml
index 595da54..b67e7b1 100644
--- a/north-glass-erp/src/main/resources/mapper/sd/OrderDetailMapper.xml
+++ b/north-glass-erp/src/main/resources/mapper/sd/OrderDetailMapper.xml
@@ -27,7 +27,10 @@
                             arch_rise,
                             weight,
                             perimeter,
-                            other_columns
+                            monolithic_perimeter,
+                            other_columns,
+                            file_name,
+                            process_attribute
                           )
         values
         <foreach collection ="orderDetails" item="orderDetail" separator =",">
@@ -53,7 +56,10 @@
             #{orderDetail.archRise},
             #{orderDetail.weight},
             #{orderDetail.perimeter},
-            #{orderDetail.otherColumns}
+            #{orderDetail.monolithicPerimeter},
+            #{orderDetail.otherColumns},
+            #{orderDetail.fileName},
+            #{orderDetail.processAttribute}
              )
         </foreach>
     </insert>
@@ -63,7 +69,8 @@
             update order_detail as a
             set
                 a.price = #{item.price},
-                a.gross_amount = #{item.grossAmount}
+                a.gross_amount = #{item.grossAmount},
+                a.other_columns = #{item.otherColumns}
             where
                 a.order_id = #{item.orderId} and
                 a.order_number =  #{item.orderNumber}
@@ -94,6 +101,7 @@
         <result column="levelTwo" property="levelTwo"/>
         <result column="total_thickness" property="totalThickness"/>
         <result column="createTime" property="createTime"/>
+        <result column="weights" property="weight"/>
 
         <result column="order_type" property="order.orderType"/>
         <result column="customer_name" property="order.customerName"/>
@@ -108,17 +116,166 @@
         <result column="creator" property="order.creator"/>
         <result column="verifier" property="order.verifier"/>
         <result column="customer_batch" property="order.customerBatch"/>
+        <result column="other_money" property="order.otherMoney"/>
 
     </resultMap>
+
+
+    <select id="getOrderSummaryReport" >
+        SELECT
+        *
+        from  sd.`order` as b
+        where  date(b.create_time)>=#{startDate} and date(b.create_time) &lt;= #{endDate} and b.create_order>0
+        <if test="order.orderType != null and order.orderType != ''">
+            and b.order_type like concat('%',#{order.orderType},'%')
+        </if>
+        <if test="order.customerId != null and order.customerId != ''">
+            and b.customer_id like concat('%',#{order.customerId},'%')
+        </if>
+        <if test="order.customerName != null and order.customerName != ''">
+            and b.customer_name like concat('%',#{order.customerName},'%')
+        </if>
+        <if test="order.project != null and order.project != ''">
+            and b.project like concat('%',#{order.project},'%')
+        </if>
+        <if test="order.orderId != null and order.orderId != ''">
+            and b.order_id like concat('%',#{order.orderId},'%')
+        </if>
+        <if test="order.batch != null and order.batch != ''">
+            and b.batch like concat('%',#{order.batch},'%')
+        </if>
+
+        <if test="order.icon != null and order.icon != ''">
+            and b.icon like concat('%',#{order.icon},'%')
+        </if>
+
+        <if test="order.packType != null and order.packType != ''">
+            and b.pack_type like concat('%',#{order.packType},'%')
+        </if>
+        <if test="order.alType != null and order.alType != ''">
+            and b.al_type like concat('%',#{order.alType},'%')
+        </if>
+
+        <if test="order.salesman != null and order.salesman != ''">
+            and b.salesman like concat('%',#{order.salesman},'%')
+        </if>
+
+        <if test="order.deliveryAddress != null and order.deliveryAddress != ''">
+            and b.delivery_address like concat('%',#{order.deliveryAddress},'%')
+        </if>
+
+        <if test="order.creator != null and order.creator != ''">
+            and b.creator like concat('%',#{order.creator},'%')
+        </if>
+        <if test="order.otherMoney != null and order.otherMoney != ''">
+            and b.other_money regexp REGEXP_REPLACE(#{order.otherMoney},'\\.0+$','')
+        </if>
+
+        <if test="order.quantity != null ">
+            and b.quantity like concat('%',#{order.quantity},'%')
+        </if>
+        <if test="order.money != null ">
+            and b.money  regexp REGEXP_REPLACE(#{order.money},'\\.0+$','')
+        </if>
+        <if test="order.perimeter != null and order.perimeter != ''">
+            and b.perimeter regexp REGEXP_REPLACE(#{order.perimeter},'\\.0+$','')
+        </if>
+        <if test="order.processingNote != null and order.processingNote != ''">
+            and b.processing_note like concat('%',#{order.processingNote},'%')
+        </if>
+        <if test="order.area != null and order.area != ''">
+            and b.area regexp REGEXP_REPLACE(#{order.area},'\\.0+$','')
+        </if>
+        order by b.id desc
+        limit #{offset},#{pageSize}
+    </select>
+
+    <select id="getOrderSummaryReportTotal" >
+        SELECT
+        CEILING(count(b.id)/#{pageSize}) as 'pageTotal',
+        count(b.id) as 'total'
+        from  sd.`order` as b
+        where  date(b.create_time)>=#{startDate} and date(b.create_time) &lt;= #{endDate} and b.create_order>0
+        <if test="order.orderType != null and order.orderType != ''">
+            and b.order_type like concat('%',#{order.orderType},'%')
+        </if>
+
+        <if test="order.customerId != null and order.customerId != ''">
+            and b.customer_id like concat('%',#{order.customerId},'%')
+        </if>
+        <if test="order.customerName != null and order.customerName != ''">
+            and b.customer_name like concat('%',#{order.customerName},'%')
+        </if>
+        <if test="order.project != null and order.project != ''">
+            and b.project like concat('%',#{order.project},'%')
+        </if>
+
+        <if test="order.orderId != null and order.orderId != ''">
+            and b.order_id like concat('%',#{order.orderId},'%')
+        </if>
+
+        <if test="order.batch != null and order.batch != ''">
+            and b.batch like concat('%',#{order.batch},'%')
+        </if>
+
+        <if test="order.icon != null and order.icon != ''">
+            and b.icon like concat('%',#{order.icon},'%')
+        </if>
+
+        <if test="order.packType != null and order.packType != ''">
+            and b.pack_type like concat('%',#{order.packType},'%')
+        </if>
+
+
+        <if test="order.alType != null and order.alType != ''">
+            and b.al_type like concat('%',#{order.alType},'%')
+        </if>
+        <if test="order.salesman != null and order.salesman != ''">
+            and b.salesman like concat('%',#{order.salesman},'%')
+        </if>
+        <if test="order.deliveryAddress != null and order.deliveryAddress != ''">
+            and b.delivery_address like concat('%',#{order.deliveryAddress},'%')
+        </if>
+        <if test="order.creator != null and order.creator != ''">
+            and b.creator like concat('%',#{order.creator},'%')
+        </if>
+        <if test="order.otherMoney != null and order.otherMoney != ''">
+            and b.other_money regexp REGEXP_REPLACE(#{order.otherMoney},'\\.0+$','')
+        </if>
+
+        <if test="order.quantity != null ">
+            and b.quantity like concat('%',#{order.quantity},'%')
+        </if>
+        <if test="order.money != null ">
+            and b.money  regexp REGEXP_REPLACE(#{order.money},'\\.0+$','')
+        </if>
+        <if test="order.perimeter != null and order.perimeter != ''">
+            and b.perimeter regexp REGEXP_REPLACE(#{order.perimeter},'\\.0+$','')
+        </if>
+        <if test="order.processingNote != null and order.processingNote != ''">
+            and b.processing_note like concat('%',#{order.processingNote},'%')
+        </if>
+        <if test="order.area != null and order.area != ''">
+            and b.area regexp REGEXP_REPLACE(#{order.area},'\\.0+$','')
+        </if>
+    </select>
+
+    <select id="exportOrderSummary"  >
+        SELECT *
+        from sd.`order` as b
+        where  date(b.create_time)>=#{dates[0]} and date(b.create_time) &lt;= #{dates[1]} and b.order_review>0
+        order by b.id desc
+    </select>
 
 
     <select id="getOrderReport" resultMap="orderMap">
         SELECT
             *,
+            round(a.weight*a.quantity,2) as weights,
             a.create_time as createTime,
             d.type_name as levelOne,
             e.type_name as levelTwo
-        from order_detail as a
+        from sd.order_detail as a
         left join sd.`order` as b
             on b.order_id = a.order_id
         left join sd.product as c
@@ -127,7 +284,7 @@
             on d.type_id = c.type_id
         left join sd.basic_glass_type as e
             on e.type_id = d.belong
-        where  date(b.create_time)>=#{startDate} and date(b.create_time) &lt;= #{endDate}
+        where  date(b.create_time)>=#{startDate} and date(b.create_time) &lt;= #{endDate} and b.create_order>0
 
         <if test="orderDetail.order!=null and (orderDetail.order.orderType != null and orderDetail.order.orderType != '')">
             and b.order_type like concat('%',#{orderDetail.order.orderType},'%')
@@ -163,13 +320,33 @@
             and a.order_number like concat('%',#{orderDetail.orderNumber},'%')
         </if>
 
-        <if test="orderDetail.width != null and orderDetail.width != ''">
-            and a.width like concat('%',#{orderDetail.width},'%')
+        <if test="orderDetail.buildingNumber != null and orderDetail.buildingNumber != ''">
+            and a.building_number like concat('%',#{orderDetail.buildingNumber},'%')
         </if>
 
-        <if test="orderDetail.height != null and orderDetail.height != ''">
-            and a.height like concat('%',#{orderDetail.height},'%')
+        <if test="orderDetail.width != null and orderDetail.width != '' and model==0">
+            and a.width regexp REGEXP_REPLACE(#{orderDetail.width},'\\.0+$','')
         </if>
+
+        <if test="orderDetail.height != null and orderDetail.height != '' and model==0 ">
+            and a.height regexp REGEXP_REPLACE(#{orderDetail.height},'\\.0+$','')
+        </if>
+
+        <if test="orderDetail.width != null and orderDetail.width != '' and model==1">
+            and a.width >= REGEXP_REPLACE(#{orderDetail.width } - #{scope} ,'\\.0+$','')
+            and a.width &lt;= REGEXP_REPLACE(#{orderDetail.width } + #{scope} ,'\\.0+$','')
+
+        </if>
+
+        <if test="orderDetail.height != null and orderDetail.height != '' and model==1 ">
+            and a.height > REGEXP_REPLACE(#{orderDetail.height } - #{scope} ,'\\.0+$','')
+            and a.height &lt; REGEXP_REPLACE(#{orderDetail.height } + #{scope} ,'\\.0+$','')
+        </if>
+
+
+
+
+
 
         <if test="orderDetail.quantity != null and orderDetail.quantity != ''">
             and a.quantity like concat('%',#{orderDetail.quantity},'%')
@@ -180,11 +357,11 @@
         </if>
 
         <if test="orderDetail.grossArea != null and orderDetail.grossArea != ''">
-            and a.gross_area like concat('%',#{orderDetail.grossArea},'%')
+            and a.gross_area regexp REGEXP_REPLACE(#{orderDetail},'\\.0+$','')
         </if>
 
         <if test="orderDetail.computeGrossArea != null and orderDetail.computeGrossArea != ''">
-            and a.compute_gross_area like concat('%',#{orderDetail.computeGrossArea},'%')
+            and a.compute_gross_area regexp REGEXP_REPLACE(#{orderDetail.computeGrossArea},'\\.0+$','')
         </if>
 
         <if test="orderDetail.shape != null and orderDetail.shape != ''">
@@ -220,7 +397,7 @@
         </if>
 
         <if test="orderDetail.grossAmount != null and orderDetail.grossAmount != ''">
-            and a.gross_amount like concat('%',#{orderDetail.grossAmount},'%')
+            and a.gross_amount regexp REGEXP_REPLACE(#{orderDetail.grossAmount},'\\.0+$','')
         </if>
 
         <if test="orderDetail.order!=null and  orderDetail.order.alType != null and orderDetail.order.alType != ''">
@@ -270,7 +447,7 @@
                            on d.type_id = c.type_id
                  left join sd.basic_glass_type as e
                            on e.type_id = d.belong
-        where  date(b.create_time)>=#{startDate} and date(b.create_time) &lt;= #{endDate}
+        where  date(b.create_time)>=#{startDate} and date(b.create_time) &lt;= #{endDate} and b.create_order>0
         <if test="orderDetail.order!=null and (orderDetail.order.orderType != null and orderDetail.order.orderType != '')">
             and b.order_type like concat('%',#{orderDetail.order.orderType},'%')
         </if>
@@ -305,12 +482,16 @@
             and a.order_number like concat('%',#{orderDetail.orderNumber},'%')
         </if>
 
+        <if test="orderDetail.buildingNumber != null and orderDetail.buildingNumber != ''">
+            and a.building_number like concat('%',#{orderDetail.buildingNumber},'%')
+        </if>
+
         <if test="orderDetail.width != null and orderDetail.width != ''">
-            and a.width like concat('%',#{orderDetail.width},'%')
+            and a.width regexp REGEXP_REPLACE(#{orderDetail.width},'\\.0+$','')
         </if>
 
         <if test="orderDetail.height != null and orderDetail.height != ''">
-            and a.height like concat('%',#{orderDetail.height},'%')
+            and a.height regexp REGEXP_REPLACE(#{orderDetail.height},'\\.0+$','')
         </if>
 
         <if test="orderDetail.quantity != null and orderDetail.quantity != ''">
@@ -322,11 +503,11 @@
         </if>
 
         <if test="orderDetail.grossArea != null and orderDetail.grossArea != ''">
-            and a.gross_area like concat('%',#{orderDetail.grossArea},'%')
+            and a.gross_area regexp REGEXP_REPLACE(#{orderDetail},'\\.0+$','')
         </if>
 
         <if test="orderDetail.computeGrossArea != null and orderDetail.computeGrossArea != ''">
-            and a.compute_gross_area like concat('%',#{orderDetail.computeGrossArea},'%')
+            and a.compute_gross_area regexp REGEXP_REPLACE(#{orderDetail.computeGrossArea},'\\.0+$','')
         </if>
 
         <if test="orderDetail.shape != null and orderDetail.shape != ''">
@@ -362,7 +543,7 @@
         </if>
 
         <if test="orderDetail.grossAmount != null and orderDetail.grossAmount != ''">
-            and a.gross_amount like concat('%',#{orderDetail.grossAmount},'%')
+            and a.gross_amount regexp REGEXP_REPLACE(#{orderDetail.grossAmount},'\\.0+$','')
         </if>
 
         <if test="orderDetail.order!=null and  orderDetail.order.alType != null and orderDetail.order.alType != ''">
@@ -401,10 +582,12 @@
     <select id="exportOrderReport"  >
         SELECT
             *,
+            round(a.weight*a.quantity,2) as weights,
+            b.processing_note as processingNotes,
             a.create_time as createTime,
             d.type_name as level_one,
             e.type_name as level_two
-        from order_detail as a
+        from sd.order_detail as a
          left join sd.`order` as b
                    on b.order_id = a.order_id
          left join sd.product as c
@@ -413,7 +596,8 @@
                    on d.type_id = c.type_id
          left join sd.basic_glass_type as e
                    on e.type_id = d.belong
-        where  date(a.create_time)>=#{dates[0]} and date(a.create_time) &lt;= #{dates[1]}
+        where  date(a.create_time)>=#{dates[0]} and date(a.create_time) &lt;= #{dates[1]} and b.order_review>0
+        order by b.order_id desc
     </select>
 
 
@@ -428,12 +612,14 @@
         b.batch,
         a.product_id,
         a.product_name,
+        b.other_money,
         sum(a.quantity) as quantity,
         sum(a.gross_area) as gross_area,
         sum(a.compute_gross_area) as compute_gross_area,
         a.edging_type,
         b.pack_type,
         round(sum(a.perimeter),2) as perimeter,
+        round(sum(a.weight*a.quantity),2) as weights,
         a.price,
         sum(a.gross_amount ) as gross_amount,
         b.al_type,
@@ -459,7 +645,7 @@
         on d.type_id = c.type_id
         left join sd.basic_glass_type as e
         on e.type_id = d.belong
-        where  date(b.create_time)>=#{startDate} and date(b.create_time) &lt;= #{endDate}
+        where  date(b.create_time)>=#{startDate} and date(b.create_time) &lt;= #{endDate} and b.create_order>0
 
         <if test="orderDetail.order!=null and (orderDetail.order.orderType != null and orderDetail.order.orderType != '')">
             and b.order_type like concat('%',#{orderDetail.order.orderType},'%')
@@ -496,11 +682,11 @@
         </if>
 
         <if test="orderDetail.width != null and orderDetail.width != ''">
-            and a.width like concat('%',#{orderDetail.width},'%')
+            and a.width  regexp REGEXP_REPLACE(#{orderDetail.width},'\\.0+$','')
         </if>
 
         <if test="orderDetail.height != null and orderDetail.height != ''">
-            and a.height like concat('%',#{orderDetail.height},'%')
+            and a.height regexp REGEXP_REPLACE(#{orderDetail.height},'\\.0+$','')
         </if>
 
         <if test="orderDetail.quantity != null and orderDetail.quantity != ''">
@@ -512,11 +698,11 @@
         </if>
 
         <if test="orderDetail.grossArea != null and orderDetail.grossArea != ''">
-            and a.gross_area like concat('%',#{orderDetail.grossArea},'%')
+            and a.gross_area regexp REGEXP_REPLACE(#{orderDetail.grossArea},'\\.0+$','')
         </if>
 
         <if test="orderDetail.computeGrossArea != null and orderDetail.computeGrossArea != ''">
-            and a.compute_gross_area like concat('%',#{orderDetail.computeGrossArea},'%')
+            and a.compute_gross_area regexp REGEXP_REPLACE(#{orderDetail.computeGrossArea},'\\.0+$','')
         </if>
 
         <if test="orderDetail.shape != null and orderDetail.shape != ''">
@@ -552,7 +738,7 @@
         </if>
 
         <if test="orderDetail.grossAmount != null and orderDetail.grossAmount != ''">
-            and a.gross_amount like concat('%',#{orderDetail.grossAmount},'%')
+            and a.gross_amount regexp REGEXP_REPLACE(#{orderDetail.grossAmount},'\\.0+$','')
         </if>
 
         <if test="orderDetail.order!=null and  orderDetail.order.alType != null and orderDetail.order.alType != ''">
@@ -585,6 +771,10 @@
 
         <if test="orderDetail.order!=null and  orderDetail.order.customerBatch != null and orderDetail.order.customerBatch != ''">
             and b.customer_batch like concat('%',#{orderDetail.order.customerBatch},'%')
+        </if>
+
+        <if test="orderDetail.order!=null and  orderDetail.order.otherMoney != null ">
+            and b.other_money  regexp REGEXP_REPLACE(#{orderDetail.order.otherMoney},'\\.0+$','')
         </if>
         group by b.order_id,a.product_id
         order by b.order_id desc
@@ -605,7 +795,7 @@
         on d.type_id = c.type_id
         left join sd.basic_glass_type as e
         on e.type_id = d.belong
-        where date(b.create_time)>=#{startDate} and date(b.create_time) &lt;= #{endDate}
+        where date(b.create_time)>=#{startDate} and date(b.create_time) &lt;= #{endDate} and b.create_order>0
         <if test="orderDetail.order!=null and (orderDetail.order.orderType != null and orderDetail.order.orderType != '')">
             and b.order_type like concat('%',#{orderDetail.order.orderType},'%')
         </if>
@@ -641,11 +831,11 @@
         </if>
 
         <if test="orderDetail.width != null and orderDetail.width != ''">
-            and a.width like concat('%',#{orderDetail.width},'%')
+            and a.width  regexp REGEXP_REPLACE(#{orderDetail.width},'\\.0+$','')
         </if>
 
         <if test="orderDetail.height != null and orderDetail.height != ''">
-            and a.height like concat('%',#{orderDetail.height},'%')
+            and a.height regexp REGEXP_REPLACE(#{orderDetail.height},'\\.0+$','')
         </if>
 
         <if test="orderDetail.quantity != null and orderDetail.quantity != ''">
@@ -657,11 +847,11 @@
         </if>
 
         <if test="orderDetail.grossArea != null and orderDetail.grossArea != ''">
-            and a.gross_area like concat('%',#{orderDetail.grossArea},'%')
+            and a.gross_area regexp REGEXP_REPLACE(#{orderDetail.grossArea},'\\.0+$','')
         </if>
 
         <if test="orderDetail.computeGrossArea != null and orderDetail.computeGrossArea != ''">
-            and a.compute_gross_area like concat('%',#{orderDetail.computeGrossArea},'%')
+            and a.compute_gross_area regexp REGEXP_REPLACE(#{orderDetail.computeGrossArea},'\\.0+$','')
         </if>
 
         <if test="orderDetail.shape != null and orderDetail.shape != ''">
@@ -697,7 +887,7 @@
         </if>
 
         <if test="orderDetail.grossAmount != null and orderDetail.grossAmount != ''">
-            and a.gross_amount like concat('%',#{orderDetail.grossAmount},'%')
+            and a.gross_amount regexp REGEXP_REPLACE(#{orderDetail.grossAmount},'\\.0+$','')
         </if>
 
         <if test="orderDetail.order!=null and  orderDetail.order.alType != null and orderDetail.order.alType != ''">
@@ -731,6 +921,10 @@
         <if test="orderDetail.order!=null and  orderDetail.order.customerBatch != null and orderDetail.order.customerBatch != ''">
             and b.customer_batch like concat('%',#{orderDetail.order.customerBatch},'%')
         </if>
+
+        <if test="orderDetail.order!=null and  orderDetail.order.otherMoney != null ">
+            and b.other_money  regexp REGEXP_REPLACE(#{orderDetail.order.otherMoney},'\\.0+$','')
+        </if>
         group by b.order_id,a.product_id
         ) as ss
     </select>
@@ -744,9 +938,7 @@
                a.product_name,
                a.price,
                sum(a.quantity) as quantity,
-               a.gross_amount,
-               a.width,
-               a.height,
+               sum(a.gross_amount) as gross_amount,
                a.shape,
                sum(a.area) as area,
                sum(a.gross_area) as gross_area,
@@ -756,7 +948,7 @@
                a.remarks,
                a.bend_radius,
                a.edging_type,
-               a.weight,
+               round(sum(a.weight*a.quantity),2) as weights,
                a.perimeter,
                a.other_columns,
                a.warehouse_num,
@@ -786,7 +978,7 @@
                b.delivery_address,
                b.other_money,
                b.other_money_remarks,
-               b.processing_note,
+               b.processing_note as processingNotes,
                b.other_remarks,
                b.area,
                b.quantity,
@@ -818,8 +1010,8 @@
                            on d.type_id = c.type_id
                  left join sd.basic_glass_type as e
                            on e.type_id = d.belong
-        where date(a.create_time) >= #{dates[0]}
-          and date(a.create_time) &lt;= #{dates[1]}
+        where date(b.create_time) >= #{dates[0]}
+          and date(b.create_time) &lt;= #{dates[1]} and b.order_review>0
         group by b.order_id, a.product_id
         order by b.order_id desc
     </select>
@@ -846,8 +1038,9 @@
 
             (a.product_id) as 'productId',
                     a.product_name as 'productName',
+                    p.remarks as 'remarks',
                     a.order_number as 'orderNumber'
-        from order_detail as a
+        from order_detail as a left join sd.product p on a.product_id=p.id
         where a.order_id = #{orderId}
         group by a.product_id
     </select>
@@ -857,8 +1050,9 @@
 
         (a.product_id) as 'productId',
         a.product_name as 'productName',
+        p.remarks as 'remarks',
         a.order_number as 'orderNumber'
-        from order_detail as a
+        from sd.order_detail as a left join sd.product p on a.product_id=p.id
         where a.order_id = #{orderId} and a.product_id IN
         <foreach item="item" index="index" collection="productId" open="(" separator="," close=")">
             #{item}
@@ -884,7 +1078,9 @@
         group by od.product_id,pd.detail
     </select>
 
-
+    <delete id="deleteOrderFile" >
+        delete from sd.order_file where order_id = #{orderId}
+    </delete>
 
 
 

--
Gitblit v1.8.0