From a376a001494a12c04b6a2a04bf797cbd7198d1f7 Mon Sep 17 00:00:00 2001
From: zss <zss@example.com>
Date: 星期三, 13 九月 2023 10:51:00 +0800
Subject: [PATCH] 修改1.0   9.13

---
 inventory-server/src/main/resources/mapper/SaleMaterialMapper.xml                |    6 +
 base-server/src/main/java/com/yuanchu/mom/pojo/dto/MbomModelDto2.java            |   31 +++++++
 base-server/src/main/java/com/yuanchu/mom/service/MbomModelService.java          |    2 
 standard-server/src/main/java/com/yuanchu/mom/pojo/dto/MbomDto.java              |   36 --------
 inventory-server/src/main/java/com/yuanchu/mom/controller/SaleController.java    |    4 
 inspect-server/src/main/java/com/yuanchu/mom/pojo/dto/InspectionItemDto2.java    |    3 
 base-server/src/main/java/com/yuanchu/mom/pojo/dto/MbomModelDto.java             |   21 ----
 standard-server/src/main/java/com/yuanchu/mom/service/impl/MbomServiceImpl.java  |   14 ++
 inspect-server/src/main/resources/mapper/InspectionItemMapper.xml                |    6 +
 base-server/src/main/java/com/yuanchu/mom/service/impl/MbomModelServiceImpl.java |   17 +++-
 inventory-server/src/main/java/com/yuanchu/mom/service/impl/SaleServiceImpl.java |   16 +--
 inventory-server/src/main/resources/mapper/SaleMapper.xml                        |    6 +
 inventory-server/src/main/java/com/yuanchu/mom/mapper/SaleMapper.java            |    3 
 inventory-server/src/main/java/com/yuanchu/mom/mapper/SaleMaterialMapper.java    |    3 
 inventory-server/src/main/java/com/yuanchu/mom/service/SaleService.java          |    2 
 base-server/src/main/java/com/yuanchu/mom/controller/MbomModelController.java    |    4 
 standard-server/src/main/java/com/yuanchu/mom/pojo/dto/MbomDto2.java             |   45 +++++++++++
 standard-server/src/main/java/com/yuanchu/mom/controller/MbomController.java     |    2 
 18 files changed, 142 insertions(+), 79 deletions(-)

diff --git a/base-server/src/main/java/com/yuanchu/mom/controller/MbomModelController.java b/base-server/src/main/java/com/yuanchu/mom/controller/MbomModelController.java
index 42fa264..a7904f8 100644
--- a/base-server/src/main/java/com/yuanchu/mom/controller/MbomModelController.java
+++ b/base-server/src/main/java/com/yuanchu/mom/controller/MbomModelController.java
@@ -46,8 +46,8 @@
     @ApiOperation(value = "鏂板鐗╂枡娓呭崟缁存姢")
     @PostMapping("/addMbom")
     public Result addMbom(@Validated @RequestBody MbomModelDto mbomModelDto) {
-        Integer id = mbomModelService.addMbom(mbomModelDto);
-        return Result.success("鏂板" + id + "鎴愬姛!");
+       mbomModelService.addMbom(mbomModelDto);
+        return Result.success("鏂板鎴愬姛!");
     }
 
     @ApiOperation(value = "鍒犻櫎")
diff --git a/base-server/src/main/java/com/yuanchu/mom/pojo/dto/MbomModelDto.java b/base-server/src/main/java/com/yuanchu/mom/pojo/dto/MbomModelDto.java
index 759b24b..9a6e761 100644
--- a/base-server/src/main/java/com/yuanchu/mom/pojo/dto/MbomModelDto.java
+++ b/base-server/src/main/java/com/yuanchu/mom/pojo/dto/MbomModelDto.java
@@ -6,6 +6,7 @@
 
 import javax.validation.constraints.NotBlank;
 import javax.validation.constraints.NotNull;
+import java.util.List;
 
 @Data
 //鏂板璁板綍鍐呭缁存姢鍙傛暟
@@ -15,23 +16,7 @@
     @NotNull(message = "宸ヨ壓璺嚎id涓嶈兘涓虹┖")
     private Integer techTemId;
 
-    @JsonSerialize
-    @NotBlank(message = "鍘熸潗鏂欏悕绉颁笉鑳戒负绌�")
-    private String name;
+    //鍘熸潗鏂欐竻鍗曢泦鍚�
+    private List<MbomModelDto2> mbomModelDto2List;
 
-    @JsonSerialize
-    @NotBlank(message = "鍗曚綅涓嶈兘涓虹┖")
-    private String unit;
-
-    @JsonSerialize
-    @NotBlank(message = "渚涘簲鍟嗕笉鑳戒负绌�")
-    private String supplier;
-
-    @JsonSerialize
-    @NotBlank(message = "璐ㄩ噺杩芥函鍙蜂笉鑳戒负绌�")
-    private String qualityTraceability;
-
-    @JsonSerialize
-    @NotBlank(message = "瑙勬牸鍨嬪彿涓嶈兘涓虹┖")
-    private String specifications;
 }
diff --git a/base-server/src/main/java/com/yuanchu/mom/pojo/dto/MbomModelDto2.java b/base-server/src/main/java/com/yuanchu/mom/pojo/dto/MbomModelDto2.java
new file mode 100644
index 0000000..2c69cb3
--- /dev/null
+++ b/base-server/src/main/java/com/yuanchu/mom/pojo/dto/MbomModelDto2.java
@@ -0,0 +1,31 @@
+package com.yuanchu.mom.pojo.dto;
+
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+
+@Data
+//鍘熸潗鏂欑墿鏂欐竻鍗曢泦鍚�
+public class MbomModelDto2 {
+
+    @JsonSerialize
+    @NotBlank(message = "鍘熸潗鏂欏悕绉颁笉鑳戒负绌�")
+    private String name;
+
+    @JsonSerialize
+    @NotBlank(message = "鍗曚綅涓嶈兘涓虹┖")
+    private String unit;
+
+    @JsonSerialize
+    @NotBlank(message = "渚涘簲鍟嗕笉鑳戒负绌�")
+    private String supplier;
+
+    @JsonSerialize
+    @NotBlank(message = "璐ㄩ噺杩芥函鍙蜂笉鑳戒负绌�")
+    private String qualityTraceability;
+
+    @JsonSerialize
+    @NotBlank(message = "瑙勬牸鍨嬪彿涓嶈兘涓虹┖")
+    private String specifications;
+}
diff --git a/base-server/src/main/java/com/yuanchu/mom/service/MbomModelService.java b/base-server/src/main/java/com/yuanchu/mom/service/MbomModelService.java
index 7141bc9..92cc714 100644
--- a/base-server/src/main/java/com/yuanchu/mom/service/MbomModelService.java
+++ b/base-server/src/main/java/com/yuanchu/mom/service/MbomModelService.java
@@ -27,7 +27,7 @@
      * @param mbomModelDto
      * @return
      */
-    Integer addMbom(MbomModelDto mbomModelDto);
+    void addMbom(MbomModelDto mbomModelDto);
 
     /**
      * 鍒犻櫎
diff --git a/base-server/src/main/java/com/yuanchu/mom/service/impl/MbomModelServiceImpl.java b/base-server/src/main/java/com/yuanchu/mom/service/impl/MbomModelServiceImpl.java
index b45e247..81dd894 100644
--- a/base-server/src/main/java/com/yuanchu/mom/service/impl/MbomModelServiceImpl.java
+++ b/base-server/src/main/java/com/yuanchu/mom/service/impl/MbomModelServiceImpl.java
@@ -4,6 +4,7 @@
 import com.yuanchu.mom.mapper.MbomModelMapper;
 import com.yuanchu.mom.pojo.MbomModel;
 import com.yuanchu.mom.pojo.dto.MbomModelDto;
+import com.yuanchu.mom.pojo.dto.MbomModelDto2;
 import com.yuanchu.mom.service.MbomModelService;
 import org.springframework.beans.BeanUtils;
 import org.springframework.stereotype.Service;
@@ -11,6 +12,7 @@
 import javax.annotation.Resource;
 import java.util.List;
 import java.util.Map;
+import java.util.stream.Collectors;
 
 /**
  * 鐗╂枡娓呭崟缁存姢琛�(MbomModel)琛ㄦ湇鍔″疄鐜扮被
@@ -33,11 +35,16 @@
 
     //鏂板鐗╂枡娓呭崟缁存姢琛�
     @Override
-    public Integer addMbom(MbomModelDto mbomModelDto) {
-        MbomModel mbomModel = new MbomModel();
-        BeanUtils.copyProperties(mbomModelDto,mbomModel);
-        mbomModelMapper.insert(mbomModel);
-        return mbomModel.getId();
+    public void addMbom(MbomModelDto mbomModelDto) {
+        List<MbomModelDto2> mbomModelDto2List = mbomModelDto.getMbomModelDto2List();
+        List<MbomModel> mbomModelList = mbomModelDto2List.stream().map(mbomModelDto2 -> {
+            MbomModel mbomModel = new MbomModel();
+            mbomModel.setTechTemId(mbomModelDto.getTechTemId());
+            BeanUtils.copyProperties(mbomModelDto2, mbomModel);
+            return mbomModel;
+        }).collect(Collectors.toList());
+        //鎵归噺娣诲姞
+        saveBatch(mbomModelList);
     }
 
     //鍒犻櫎
diff --git a/inspect-server/src/main/java/com/yuanchu/mom/pojo/dto/InspectionItemDto2.java b/inspect-server/src/main/java/com/yuanchu/mom/pojo/dto/InspectionItemDto2.java
index d23112c..1b57fcf 100644
--- a/inspect-server/src/main/java/com/yuanchu/mom/pojo/dto/InspectionItemDto2.java
+++ b/inspect-server/src/main/java/com/yuanchu/mom/pojo/dto/InspectionItemDto2.java
@@ -23,6 +23,9 @@
     @ApiModelProperty(value = "妫�楠屽��")
     private String inspectionValue;
 
+    @ApiModelProperty(value = "璇曢獙璁惧id")
+    private Integer did;
+
     @ApiModelProperty(value = "璇曢獙璁惧")
     private String dname;
 
diff --git a/inspect-server/src/main/resources/mapper/InspectionItemMapper.xml b/inspect-server/src/main/resources/mapper/InspectionItemMapper.xml
index b117cab..496cdf2 100644
--- a/inspect-server/src/main/resources/mapper/InspectionItemMapper.xml
+++ b/inspect-server/src/main/resources/mapper/InspectionItemMapper.xml
@@ -12,19 +12,21 @@
         <result property="internal" column="internal"/>
         <result property="required" column="required"/>
         <result property="inspectionValue" column="inspection_value"/>
+        <result property="did" column="did"/>
         <result property="dname" column="dname"/>
         <result property="result" column="result"/>
         <result property="username" column="username"/>
     </resultMap>
     <select id="selectInspectionItem" resultMap="selectInspectionItemMap">
         SELECT i.`id`,
-               i.`father` ifather,
+               i.`father`  ifather,
                i.`name`,
                i.`unit`,
                i.`internal`,
                i.`required`,
                i.`inspection_value`,
-               device.name                  dname,
+               device.id   did,
+               device.name dname,
                i.`result`,
                username
         FROM mom_ocean.inspection_item i
diff --git a/inventory-server/src/main/java/com/yuanchu/mom/controller/SaleController.java b/inventory-server/src/main/java/com/yuanchu/mom/controller/SaleController.java
index 55b47ec..1edc894 100644
--- a/inventory-server/src/main/java/com/yuanchu/mom/controller/SaleController.java
+++ b/inventory-server/src/main/java/com/yuanchu/mom/controller/SaleController.java
@@ -114,10 +114,10 @@
 
     @ApiOperation(value = "鎵归噺鍒犻櫎")
     @ApiImplicitParams(value = {
-            @ApiImplicitParam(name = "ids", value = "ids", dataTypeClass = Integer.class, dataType = "List", required = true)
+            @ApiImplicitParam(name = "ids", value = "ids", dataTypeClass = String.class,required = true)
     })
     @PostMapping("/delAllSale")
-    public Result delAllSale(@RequestParam("ids") List<Integer> ids) {
+    public Result delAllSale(String ids) {
         saleService.delAllSale(ids);
         return Result.success();
     }
diff --git a/inventory-server/src/main/java/com/yuanchu/mom/mapper/SaleMapper.java b/inventory-server/src/main/java/com/yuanchu/mom/mapper/SaleMapper.java
index 5c33c96..14de9eb 100644
--- a/inventory-server/src/main/java/com/yuanchu/mom/mapper/SaleMapper.java
+++ b/inventory-server/src/main/java/com/yuanchu/mom/mapper/SaleMapper.java
@@ -22,4 +22,7 @@
 
     //鏌ヨ璁㈠崟bom鍒楄〃
     IPage<Map<String, Object>> selectAllOrder(Page<Object> page, String orderCode, String name, Integer type, String time);
+
+    //鎵归噺鍒犻櫎
+    void delAllSale(String ids);
 }
diff --git a/inventory-server/src/main/java/com/yuanchu/mom/mapper/SaleMaterialMapper.java b/inventory-server/src/main/java/com/yuanchu/mom/mapper/SaleMaterialMapper.java
index de7589e..36b6f9c 100644
--- a/inventory-server/src/main/java/com/yuanchu/mom/mapper/SaleMaterialMapper.java
+++ b/inventory-server/src/main/java/com/yuanchu/mom/mapper/SaleMaterialMapper.java
@@ -17,4 +17,7 @@
 
     //鏍规嵁閿�鍞崟id鏌ヨ浜у搧淇℃伅
     List<SaleMaterial> selectSaleDatil(Integer id);
+
+    //鏍规嵁閿�鍞崟id鎵归噺鍒犻櫎
+    void delAllSale(String ids);
 }
diff --git a/inventory-server/src/main/java/com/yuanchu/mom/service/SaleService.java b/inventory-server/src/main/java/com/yuanchu/mom/service/SaleService.java
index 7dcd818..4ceb1e7 100644
--- a/inventory-server/src/main/java/com/yuanchu/mom/service/SaleService.java
+++ b/inventory-server/src/main/java/com/yuanchu/mom/service/SaleService.java
@@ -56,7 +56,7 @@
      * 鏍规嵁id鎵归噺鍒犻櫎
      * @param ids
      */
-    void delAllSale(List<Integer> ids);
+    void delAllSale(String ids);
 
     /**
      *鏍规嵁閿�鍞崟id淇敼淇℃伅
diff --git a/inventory-server/src/main/java/com/yuanchu/mom/service/impl/SaleServiceImpl.java b/inventory-server/src/main/java/com/yuanchu/mom/service/impl/SaleServiceImpl.java
index c26a616..4d80431 100644
--- a/inventory-server/src/main/java/com/yuanchu/mom/service/impl/SaleServiceImpl.java
+++ b/inventory-server/src/main/java/com/yuanchu/mom/service/impl/SaleServiceImpl.java
@@ -99,17 +99,11 @@
     //鏍规嵁id鎵归噺鍒犻櫎
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public void delAllSale(List<Integer> ids) {
-        List<Sale> sales = saleMapper.selectBatchIds(ids);
-        for (Sale sale : sales) {
-            sale.setState(0);
-            saleMapper.updateById(sale);
-            List<SaleMaterial> saleMaterials = saleMaterialMapper.selectSaleDatil(sale.getId());
-            for (SaleMaterial saleMaterial : saleMaterials) {
-                saleMaterial.setState(0);
-                saleMaterialMapper.updateById(saleMaterial);
-            }
-        }
+    public void delAllSale(String ids) {
+        //鎵归噺鍒犻櫎閿�鍞崟
+        saleMapper.delAllSale(ids);
+        //鎵归噺鍒犻櫎閿�鍞骇鍝佸崟
+        saleMaterialMapper.delAllSale(ids);
     }
 
     //鏍规嵁閿�鍞崟id淇敼淇℃伅
diff --git a/inventory-server/src/main/resources/mapper/SaleMapper.xml b/inventory-server/src/main/resources/mapper/SaleMapper.xml
index a67167e..0c674fa 100644
--- a/inventory-server/src/main/resources/mapper/SaleMapper.xml
+++ b/inventory-server/src/main/resources/mapper/SaleMapper.xml
@@ -1,6 +1,12 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.yuanchu.mom.mapper.SaleMapper">
+    <!--鎵归噺鍒犻櫎-->
+    <update id="delAllSale">
+        update mom_ocean.sale
+        set state=0
+        where id in (${ids})
+    </update>
     <select id="selectSaleList" resultType="java.util.Map">
         select id,
         order_number,
diff --git a/inventory-server/src/main/resources/mapper/SaleMaterialMapper.xml b/inventory-server/src/main/resources/mapper/SaleMaterialMapper.xml
index a83f25e..b649428 100644
--- a/inventory-server/src/main/resources/mapper/SaleMaterialMapper.xml
+++ b/inventory-server/src/main/resources/mapper/SaleMaterialMapper.xml
@@ -1,6 +1,12 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.yuanchu.mom.mapper.SaleMaterialMapper">
+    <!--鏍规嵁閿�鍞崟id鎵归噺鍒犻櫎-->
+    <update id="delAllSale">
+        update mom_ocean.sale_material
+        set state=0
+        where sale_id in (${ids})
+    </update>
     <select id="selectSaleDatil" resultType="com.yuanchu.mom.pojo.SaleMaterial">
         select id,
                name,
diff --git a/standard-server/src/main/java/com/yuanchu/mom/controller/MbomController.java b/standard-server/src/main/java/com/yuanchu/mom/controller/MbomController.java
index 676cafb..f2bd2b0 100644
--- a/standard-server/src/main/java/com/yuanchu/mom/controller/MbomController.java
+++ b/standard-server/src/main/java/com/yuanchu/mom/controller/MbomController.java
@@ -42,7 +42,7 @@
     @PostMapping("/add")
     public Result<?> addMbom(@Validated @RequestBody MbomDto mbomDto) {
         mbomService.addMbom( mbomDto);
-        return Result.success("娣诲姞鐗╂枡娓呭崟銆�" + mbomDto.getName() + "銆戞垚鍔�");
+        return Result.success("娣诲姞鐗╂枡娓呭崟鎴愬姛");
     }
 
     @ApiOperation("濉啓鏁伴噺,榧犳爣绉诲紑淇濆瓨")
diff --git a/standard-server/src/main/java/com/yuanchu/mom/pojo/dto/MbomDto.java b/standard-server/src/main/java/com/yuanchu/mom/pojo/dto/MbomDto.java
index b6d29e4..b2d3758 100644
--- a/standard-server/src/main/java/com/yuanchu/mom/pojo/dto/MbomDto.java
+++ b/standard-server/src/main/java/com/yuanchu/mom/pojo/dto/MbomDto.java
@@ -4,6 +4,7 @@
 
 import javax.validation.constraints.NotBlank;
 import javax.validation.constraints.NotNull;
+import java.util.List;
 
 @Data
 //鍙充笂瑙掓柊澧炲弬鏁�
@@ -12,38 +13,7 @@
     @NotNull(message = "宸ヨ壓璺嚎id涓嶈兘涓虹┖")
     private Integer technologyId;
 
-    /**
-     * 鍘熸潗鏂欏悕绉�
-     **/
-    @NotBlank(message = "鍘熸潗鏂欏悕绉颁笉鑳戒负绌�!")
-    private String name;
+    //鍘熸潗鏂欐竻鍗曢泦鍚�
+    private List<MbomDto2> mbomDto2List;
 
-    /**
-     * 鍗曚綅
-     **/
-    @NotBlank(message = "鍗曚綅涓嶈兘涓虹┖!")
-    private String unit;
-
-    /**
-     * 鏁伴噺
-     **/
-    private Integer num;
-
-    /**
-     * 渚涘簲鍟�
-     **/
-    @NotBlank(message = "渚涘簲鍟嗕笉鑳戒负绌�!")
-    private String supplier;
-
-    /**
-     * 璐ㄩ噺杩芥函鍙�
-     **/
-    @NotBlank(message = "璐ㄩ噺杩芥函鍙蜂笉鑳戒负绌�!")
-    private String qualityTraceability;
-
-    /**
-     * (鍘熸潗鏂欑殑)瑙勬牸鍨嬪彿
-     **/
-    @NotBlank(message = "瑙勬牸鍨嬪彿涓嶈兘涓虹┖!")
-    private String specifications;
 }
diff --git a/standard-server/src/main/java/com/yuanchu/mom/pojo/dto/MbomDto2.java b/standard-server/src/main/java/com/yuanchu/mom/pojo/dto/MbomDto2.java
new file mode 100644
index 0000000..571b9ed
--- /dev/null
+++ b/standard-server/src/main/java/com/yuanchu/mom/pojo/dto/MbomDto2.java
@@ -0,0 +1,45 @@
+package com.yuanchu.mom.pojo.dto;
+
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+
+@Data
+//鏂板鍘熸潗鏂欐竻鍗�
+public class MbomDto2 {
+
+    /**
+     * 鍘熸潗鏂欏悕绉�
+     **/
+    @NotBlank(message = "鍘熸潗鏂欏悕绉颁笉鑳戒负绌�!")
+    private String name;
+
+    /**
+     * 鍗曚綅
+     **/
+    @NotBlank(message = "鍗曚綅涓嶈兘涓虹┖!")
+    private String unit;
+
+    /**
+     * 鏁伴噺
+     **/
+    private Integer num;
+
+    /**
+     * 渚涘簲鍟�
+     **/
+    @NotBlank(message = "渚涘簲鍟嗕笉鑳戒负绌�!")
+    private String supplier;
+
+    /**
+     * 璐ㄩ噺杩芥函鍙�
+     **/
+    @NotBlank(message = "璐ㄩ噺杩芥函鍙蜂笉鑳戒负绌�!")
+    private String qualityTraceability;
+
+    /**
+     * (鍘熸潗鏂欑殑)瑙勬牸鍨嬪彿
+     **/
+    @NotBlank(message = "瑙勬牸鍨嬪彿涓嶈兘涓虹┖!")
+    private String specifications;
+}
diff --git a/standard-server/src/main/java/com/yuanchu/mom/service/impl/MbomServiceImpl.java b/standard-server/src/main/java/com/yuanchu/mom/service/impl/MbomServiceImpl.java
index 3457b59..430c7cd 100644
--- a/standard-server/src/main/java/com/yuanchu/mom/service/impl/MbomServiceImpl.java
+++ b/standard-server/src/main/java/com/yuanchu/mom/service/impl/MbomServiceImpl.java
@@ -5,6 +5,7 @@
 import com.yuanchu.mom.mapper.TechnologyMapper;
 import com.yuanchu.mom.pojo.Mbom;
 import com.yuanchu.mom.pojo.dto.MbomDto;
+import com.yuanchu.mom.pojo.dto.MbomDto2;
 import com.yuanchu.mom.service.MbomService;
 import org.springframework.beans.BeanUtils;
 import org.springframework.stereotype.Service;
@@ -12,6 +13,7 @@
 import javax.annotation.Resource;
 import java.util.List;
 import java.util.Map;
+import java.util.stream.Collectors;
 
 /**
  * 鏍囧噯BOM-鐗╂枡娓呭崟琛�(Mbom)琛ㄦ湇鍔″疄鐜扮被
@@ -49,9 +51,15 @@
     //鍙充笂瑙掓柊澧�-->鐗╂枡娓呭崟
     @Override
     public void addMbom(MbomDto mbomDto) {
-        Mbom mbom = new Mbom();
-        BeanUtils.copyProperties(mbomDto, mbom);
-        mbomMapper.insert(mbom);
+        List<MbomDto2> mbomDto2List = mbomDto.getMbomDto2List();
+        List<Mbom> mbomList = mbomDto2List.stream().map(mbomDto2 -> {
+            Mbom mbom = new Mbom();
+            mbom.setTechnologyId(mbomDto.getTechnologyId());
+            BeanUtils.copyProperties(mbomDto2, mbom);
+            return mbom;
+        }).collect(Collectors.toList());
+        //鎵归噺娣诲姞
+        saveBatch(mbomList);
     }
 
     //濉啓鏁伴噺,榧犳爣绉诲紑淇濆瓨

--
Gitblit v1.9.3