From 8e10cec76285192d30abecd7d09001a75f2755a3 Mon Sep 17 00:00:00 2001
From: guoshilong <123456>
Date: Tue, 19 Sep 2023 16:11:27 +0800
Subject: [PATCH] 计划查询
---
src/main/java/com/dji/sample/wayline/model/param/WaylineJobQueryParam.java | 43 +++++
src/main/java/com/dji/sample/wayline/dao/IWaylineJobMapper.java | 5
src/main/java/com/dji/sample/wayline/controller/WaylineJobController.java | 7
src/main/java/com/dji/sample/wayline/dao/IWaylineJobMapper.xml | 42 +++++
src/main/java/com/dji/sample/wayline/service/impl/WaylineJobServiceImpl.java | 23 ++
src/main/java/com/dji/sample/wayline/service/IWaylineJobService.java | 3
pom.xml | 345 ++++++++++++++++++++++--------------------
7 files changed, 292 insertions(+), 176 deletions(-)
diff --git a/pom.xml b/pom.xml
index 734b300..68b3737 100644
--- a/pom.xml
+++ b/pom.xml
@@ -1,85 +1,85 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
- <modelVersion>4.0.0</modelVersion>
- <parent>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-parent</artifactId>
- <version>2.4.11</version>
- <relativePath/> <!-- lookup parent from repository -->
- </parent>
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.springframework.boot</groupId>
+ <artifactId>spring-boot-starter-parent</artifactId>
+ <version>2.4.11</version>
+ <relativePath/> <!-- lookup parent from repository -->
+ </parent>
- <groupId>com.dji</groupId>
- <artifactId>iot-drone-api</artifactId>
- <version>1.5.0</version>
- <name>iot-drone-api</name>
+ <groupId>com.dji</groupId>
+ <artifactId>iot-drone-api</artifactId>
+ <version>1.5.0</version>
+ <name>iot-drone-api</name>
- <properties>
- <java.version>11</java.version>
- <mybatis-plus.version>3.4.2</mybatis-plus.version>
- <druid.version>1.2.6</druid.version>
- <jwt.version>3.12.1</jwt.version>
- <mqtt.version>5.5.5</mqtt.version>
- <minio.version>8.3.7</minio.version>
- <okhttp3.version>4.9.1</okhttp3.version>
- <aliyun-sdk-sts.version>3.1.0</aliyun-sdk-sts.version>
- <aliyun-oss.version>3.12.0</aliyun-oss.version>
- <javax-activation.version>1.1.1</javax-activation.version>
- <glassfish-jaxb.version>2.3.3</glassfish-jaxb.version>
- <log4j2.version>2.15.0</log4j2.version>
- <javax-jaxb.version>2.3.0</javax-jaxb.version>
- </properties>
+ <properties>
+ <java.version>11</java.version>
+ <mybatis-plus.version>3.4.2</mybatis-plus.version>
+ <druid.version>1.2.6</druid.version>
+ <jwt.version>3.12.1</jwt.version>
+ <mqtt.version>5.5.5</mqtt.version>
+ <minio.version>8.3.7</minio.version>
+ <okhttp3.version>4.9.1</okhttp3.version>
+ <aliyun-sdk-sts.version>3.1.0</aliyun-sdk-sts.version>
+ <aliyun-oss.version>3.12.0</aliyun-oss.version>
+ <javax-activation.version>1.1.1</javax-activation.version>
+ <glassfish-jaxb.version>2.3.3</glassfish-jaxb.version>
+ <log4j2.version>2.15.0</log4j2.version>
+ <javax-jaxb.version>2.3.0</javax-jaxb.version>
+ </properties>
- <dependencies>
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-web</artifactId>
- </dependency>
+ <dependencies>
+ <dependency>
+ <groupId>org.springframework.boot</groupId>
+ <artifactId>spring-boot-starter-web</artifactId>
+ </dependency>
- <dependency>
- <groupId>mysql</groupId>
- <artifactId>mysql-connector-java</artifactId>
- </dependency>
+ <dependency>
+ <groupId>mysql</groupId>
+ <artifactId>mysql-connector-java</artifactId>
+ </dependency>
- <dependency>
- <groupId>org.projectlombok</groupId>
- <artifactId>lombok</artifactId>
- <optional>true</optional>
- </dependency>
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-test</artifactId>
- <scope>test</scope>
- </dependency>
+ <dependency>
+ <groupId>org.projectlombok</groupId>
+ <artifactId>lombok</artifactId>
+ <optional>true</optional>
+ </dependency>
+ <dependency>
+ <groupId>org.springframework.boot</groupId>
+ <artifactId>spring-boot-starter-test</artifactId>
+ <scope>test</scope>
+ </dependency>
- <dependency>
- <groupId>com.baomidou</groupId>
- <artifactId>mybatis-plus-boot-starter</artifactId>
- <version>${mybatis-plus.version}</version>
- </dependency>
+ <dependency>
+ <groupId>com.baomidou</groupId>
+ <artifactId>mybatis-plus-boot-starter</artifactId>
+ <version>${mybatis-plus.version}</version>
+ </dependency>
- <dependency>
- <groupId>com.alibaba</groupId>
- <artifactId>druid-spring-boot-starter</artifactId>
- <version>${druid.version}</version>
- </dependency>
+ <dependency>
+ <groupId>com.alibaba</groupId>
+ <artifactId>druid-spring-boot-starter</artifactId>
+ <version>${druid.version}</version>
+ </dependency>
- <dependency>
- <groupId>com.auth0</groupId>
- <artifactId>java-jwt</artifactId>
- <version>${jwt.version}</version>
- </dependency>
+ <dependency>
+ <groupId>com.auth0</groupId>
+ <artifactId>java-jwt</artifactId>
+ <version>${jwt.version}</version>
+ </dependency>
- <dependency>
- <groupId>org.springframework.integration</groupId>
- <artifactId>spring-integration-mqtt</artifactId>
- <version>${mqtt.version}</version>
- </dependency>
+ <dependency>
+ <groupId>org.springframework.integration</groupId>
+ <artifactId>spring-integration-mqtt</artifactId>
+ <version>${mqtt.version}</version>
+ </dependency>
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-websocket</artifactId>
- </dependency>
+ <dependency>
+ <groupId>org.springframework.boot</groupId>
+ <artifactId>spring-boot-starter-websocket</artifactId>
+ </dependency>
<dependency>
<groupId>org.jetbrains</groupId>
<artifactId>annotations</artifactId>
@@ -87,115 +87,128 @@
<scope>compile</scope>
</dependency>
- <dependency>
- <groupId>io.minio</groupId>
- <artifactId>minio</artifactId>
- <version>${minio.version}</version>
- </dependency>
+ <dependency>
+ <groupId>io.minio</groupId>
+ <artifactId>minio</artifactId>
+ <version>${minio.version}</version>
+ </dependency>
- <dependency>
- <groupId>com.squareup.okhttp3</groupId>
- <artifactId>okhttp</artifactId>
- <version>${okhttp3.version}</version>
- </dependency>
+ <dependency>
+ <groupId>com.squareup.okhttp3</groupId>
+ <artifactId>okhttp</artifactId>
+ <version>${okhttp3.version}</version>
+ </dependency>
- <dependency>
- <groupId>com.aliyun</groupId>
- <artifactId>aliyun-java-sdk-sts</artifactId>
- <version>${aliyun-sdk-sts.version}</version>
- </dependency>
+ <dependency>
+ <groupId>com.aliyun</groupId>
+ <artifactId>aliyun-java-sdk-sts</artifactId>
+ <version>${aliyun-sdk-sts.version}</version>
+ </dependency>
- <dependency>
- <groupId>com.aliyun.oss</groupId>
- <artifactId>aliyun-sdk-oss</artifactId>
- <version>${aliyun-oss.version}</version>
- </dependency>
+ <dependency>
+ <groupId>com.aliyun.oss</groupId>
+ <artifactId>aliyun-sdk-oss</artifactId>
+ <version>${aliyun-oss.version}</version>
+ </dependency>
- <dependency>
- <groupId>javax.xml.bind</groupId>
- <artifactId>jaxb-api</artifactId>
- </dependency>
- <dependency>
- <groupId>javax.activation</groupId>
- <artifactId>activation</artifactId>
- <version>${javax-activation.version}</version>
- </dependency>
- <!-- no more than 2.3.3-->
- <dependency>
- <groupId>org.glassfish.jaxb</groupId>
- <artifactId>jaxb-runtime</artifactId>
- <version>${glassfish-jaxb.version}</version>
- </dependency>
+ <dependency>
+ <groupId>javax.xml.bind</groupId>
+ <artifactId>jaxb-api</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>javax.activation</groupId>
+ <artifactId>activation</artifactId>
+ <version>${javax-activation.version}</version>
+ </dependency>
+ <!-- no more than 2.3.3-->
+ <dependency>
+ <groupId>org.glassfish.jaxb</groupId>
+ <artifactId>jaxb-runtime</artifactId>
+ <version>${glassfish-jaxb.version}</version>
+ </dependency>
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-data-redis</artifactId>
- </dependency>
- <dependency>
- <groupId>org.apache.commons</groupId>
- <artifactId>commons-pool2</artifactId>
- </dependency>
+ <dependency>
+ <groupId>org.springframework.boot</groupId>
+ <artifactId>spring-boot-starter-data-redis</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.commons</groupId>
+ <artifactId>commons-pool2</artifactId>
+ </dependency>
- <dependency>
- <groupId>com.amazonaws</groupId>
- <artifactId>aws-java-sdk-s3</artifactId>
- <version>1.12.261</version>
- </dependency>
- <dependency>
- <groupId>com.amazonaws</groupId>
- <artifactId>aws-java-sdk-sts</artifactId>
- <version>1.12.261</version>
- </dependency>
+ <dependency>
+ <groupId>com.amazonaws</groupId>
+ <artifactId>aws-java-sdk-s3</artifactId>
+ <version>1.12.261</version>
+ </dependency>
+ <dependency>
+ <groupId>com.amazonaws</groupId>
+ <artifactId>aws-java-sdk-sts</artifactId>
+ <version>1.12.261</version>
+ </dependency>
- <dependency>
- <groupId>com.fasterxml.jackson.datatype</groupId>
- <artifactId>jackson-datatype-jsr310</artifactId>
- </dependency>
+ <dependency>
+ <groupId>com.fasterxml.jackson.datatype</groupId>
+ <artifactId>jackson-datatype-jsr310</artifactId>
+ </dependency>
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-aop</artifactId>
- </dependency>
+ <dependency>
+ <groupId>org.springframework.boot</groupId>
+ <artifactId>spring-boot-starter-aop</artifactId>
+ </dependency>
- <dependency>
- <groupId>org.dom4j</groupId>
- <artifactId>dom4j</artifactId>
- <version>2.1.3</version>
- </dependency>
+ <dependency>
+ <groupId>org.dom4j</groupId>
+ <artifactId>dom4j</artifactId>
+ <version>2.1.3</version>
+ </dependency>
- <dependency>
- <groupId>jaxen</groupId>
- <artifactId>jaxen</artifactId>
- </dependency>
+ <dependency>
+ <groupId>jaxen</groupId>
+ <artifactId>jaxen</artifactId>
+ </dependency>
- <dependency>
- <groupId>org.bouncycastle</groupId>
- <artifactId>bcpkix-jdk15on</artifactId>
- <version>1.69</version>
- </dependency>
+ <dependency>
+ <groupId>org.bouncycastle</groupId>
+ <artifactId>bcpkix-jdk15on</artifactId>
+ <version>1.69</version>
+ </dependency>
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-validation</artifactId>
- </dependency>
+ <dependency>
+ <groupId>org.springframework.boot</groupId>
+ <artifactId>spring-boot-starter-validation</artifactId>
+ </dependency>
- </dependencies>
+ </dependencies>
- <build>
- <plugins>
- <plugin>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-maven-plugin</artifactId>
- <configuration>
- <excludes>
- <exclude>
- <groupId>org.projectlombok</groupId>
- <artifactId>lombok</artifactId>
- </exclude>
- </excludes>
- </configuration>
- </plugin>
- </plugins>
- </build>
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.springframework.boot</groupId>
+ <artifactId>spring-boot-maven-plugin</artifactId>
+ <configuration>
+ <excludes>
+ <exclude>
+ <groupId>org.projectlombok</groupId>
+ <artifactId>lombok</artifactId>
+ </exclude>
+ </excludes>
+ </configuration>
+ </plugin>
+ </plugins>
+
+ <!--配置后才可以扫描到xml文件-->
+ <resources>
+ <resource>
+ <directory>src/main/resources</directory>
+ </resource>
+ <resource>
+ <directory>src/main/java</directory>
+ <includes>
+ <include>**/*.xml</include>
+ </includes>
+ </resource>
+ </resources>
+ </build>
</project>
diff --git a/src/main/java/com/dji/sample/wayline/controller/WaylineJobController.java b/src/main/java/com/dji/sample/wayline/controller/WaylineJobController.java
index 481b6a2..cbc8ad4 100644
--- a/src/main/java/com/dji/sample/wayline/controller/WaylineJobController.java
+++ b/src/main/java/com/dji/sample/wayline/controller/WaylineJobController.java
@@ -6,6 +6,7 @@
import com.dji.sample.wayline.model.dto.WaylineJobDTO;
import com.dji.sample.wayline.model.param.CreateJobParam;
import com.dji.sample.wayline.model.param.UpdateJobParam;
+import com.dji.sample.wayline.model.param.WaylineJobQueryParam;
import com.dji.sample.wayline.service.IWaylineJobService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
@@ -55,9 +56,9 @@
*/
@GetMapping("/{workspace_id}/jobs")
public ResponseResult<PaginationData<WaylineJobDTO>> getJobs(@RequestParam(defaultValue = "1") Long page,
- @RequestParam(name = "page_size", defaultValue = "10") Long pageSize,
- @PathVariable(name = "workspace_id") String workspaceId) {
- PaginationData<WaylineJobDTO> data = waylineJobService.getJobsByWorkspaceId(workspaceId, page, pageSize);
+ @RequestParam(name = "page_size", defaultValue = "10") Long pageSize,
+ @PathVariable(name = "workspace_id") String workspaceId, WaylineJobQueryParam waylineJobQueryParam){
+ PaginationData<WaylineJobDTO> data = waylineJobService.getJobsByWorkspaceId(workspaceId, page, pageSize,waylineJobQueryParam);
return ResponseResult.success(data);
}
diff --git a/src/main/java/com/dji/sample/wayline/dao/IWaylineJobMapper.java b/src/main/java/com/dji/sample/wayline/dao/IWaylineJobMapper.java
index 9a18c69..0f1e82b 100644
--- a/src/main/java/com/dji/sample/wayline/dao/IWaylineJobMapper.java
+++ b/src/main/java/com/dji/sample/wayline/dao/IWaylineJobMapper.java
@@ -1,7 +1,10 @@
package com.dji.sample.wayline.dao;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.dji.sample.wayline.model.entity.WaylineJobEntity;
+import com.dji.sample.wayline.model.param.WaylineJobQueryParam;
+import org.apache.ibatis.annotations.Param;
/**
* @author sean
@@ -9,4 +12,6 @@
* @date 2022/6/1
*/
public interface IWaylineJobMapper extends BaseMapper<WaylineJobEntity> {
+
+ Page<WaylineJobEntity> getPage(Page<WaylineJobEntity> waylineJobEntityPage, @Param("queryParam") WaylineJobQueryParam param, @Param("workspaceId") String workspaceId);
}
diff --git a/src/main/java/com/dji/sample/wayline/dao/IWaylineJobMapper.xml b/src/main/java/com/dji/sample/wayline/dao/IWaylineJobMapper.xml
new file mode 100644
index 0000000..0fe4e2c
--- /dev/null
+++ b/src/main/java/com/dji/sample/wayline/dao/IWaylineJobMapper.xml
@@ -0,0 +1,42 @@
+<?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.dji.sample.wayline.dao.IWaylineJobMapper">
+
+
+ <select id="getPage" resultType="com.dji.sample.wayline.model.entity.WaylineJobEntity">
+
+ SELECT job.* FROM wayline_job job
+ LEFT JOIN wayline_file file ON job.file_id = file.wayline_id
+ WHERE job.workspace_id = #{workspaceId}
+ <if test="queryParam.taskType != null and queryParam.taskType!= '' or queryParam.taskType==0 ">
+ AND job.task_type = #{queryParam.taskType}
+ </if>
+
+ <if test="queryParam.name != null and queryParam.name != '' ">
+ AND ( (job.name LIKE CONCAT('%',#{queryParam.name},'%'))or(file.name LIKE CONCAT('%',#{queryParam.name},'%')) )
+ </if>
+
+ <if test="queryParam.status != null and queryParam.status !='' ">
+ AND job.status in
+ <foreach collection="queryParam.status.split(',')" item="item" open="(" separator="," close=")">
+ #{item}
+ </foreach>
+ </if>
+
+ <if test="queryParam.startTime !=null and queryParam.endTime !=null">
+ AND DATE_FORMAT(FROM_UNIXTIME(job.begin_time/1000,'%Y-%m-%d'),'%Y-%m-%d') >= DATE_FORMAT(#{queryParam.startTime},'%Y-%m-%d')
+ </if>
+
+ <if test="queryParam.endTime !=null and queryParam.endTime !=null">
+ AND DATE_FORMAT(FROM_UNIXTIME(job.end_time/1000,'%Y-%m-%d'),'%Y-%m-%d') <= DATE_FORMAT(#{queryParam.endTime},'%Y-%m-%d')
+ </if>
+
+ <if test="queryParam.dockSn != null and queryParam.dockSn != '' ">
+ AND job.dock_sn in
+ <foreach collection="queryParam.dockSn.split(',')" item="item" open="(" separator="," close=")">
+ #{item}
+ </foreach>
+ </if>
+
+ </select>
+</mapper>
diff --git a/src/main/java/com/dji/sample/wayline/model/param/WaylineJobQueryParam.java b/src/main/java/com/dji/sample/wayline/model/param/WaylineJobQueryParam.java
new file mode 100644
index 0000000..f11acac
--- /dev/null
+++ b/src/main/java/com/dji/sample/wayline/model/param/WaylineJobQueryParam.java
@@ -0,0 +1,43 @@
+package com.dji.sample.wayline.model.param;
+
+import com.dji.sample.wayline.model.enums.WaylineTaskTypeEnum;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * 航线计划查询参数
+ */
+@Data
+@Builder
+@AllArgsConstructor
+@NoArgsConstructor
+public class WaylineJobQueryParam {
+
+ /**
+ * 状态(逗号分隔字符串)
+ */
+ private String status;
+
+ /**
+ * 航线名或计划名
+ */
+ private String name;
+
+ /**
+ * 航线计划类型
+ */
+ private Integer taskType;
+
+ //开始时间
+ private String startTime;
+
+ //结束时间
+ private String endTime;
+
+ /**
+ * 设备编码
+ */
+ private String dockSn;
+}
diff --git a/src/main/java/com/dji/sample/wayline/service/IWaylineJobService.java b/src/main/java/com/dji/sample/wayline/service/IWaylineJobService.java
index 608c93f..ec04134 100644
--- a/src/main/java/com/dji/sample/wayline/service/IWaylineJobService.java
+++ b/src/main/java/com/dji/sample/wayline/service/IWaylineJobService.java
@@ -8,6 +8,7 @@
import com.dji.sample.wayline.model.enums.WaylineJobStatusEnum;
import com.dji.sample.wayline.model.param.CreateJobParam;
import com.dji.sample.wayline.model.param.UpdateJobParam;
+import com.dji.sample.wayline.model.param.WaylineJobQueryParam;
import org.springframework.messaging.MessageHeaders;
import java.sql.SQLException;
@@ -112,7 +113,7 @@
* @param pageSize
* @return
*/
- PaginationData<WaylineJobDTO> getJobsByWorkspaceId(String workspaceId, long page, long pageSize);
+ PaginationData<WaylineJobDTO> getJobsByWorkspaceId(String workspaceId, long page, long pageSize, WaylineJobQueryParam waylineJobQueryParam);
/**
* Process to get interface data of flight mission resources.
diff --git a/src/main/java/com/dji/sample/wayline/service/impl/WaylineJobServiceImpl.java b/src/main/java/com/dji/sample/wayline/service/impl/WaylineJobServiceImpl.java
index 9d07192..1ee81ad 100644
--- a/src/main/java/com/dji/sample/wayline/service/impl/WaylineJobServiceImpl.java
+++ b/src/main/java/com/dji/sample/wayline/service/impl/WaylineJobServiceImpl.java
@@ -30,6 +30,7 @@
import com.dji.sample.wayline.model.enums.*;
import com.dji.sample.wayline.model.param.CreateJobParam;
import com.dji.sample.wayline.model.param.UpdateJobParam;
+import com.dji.sample.wayline.model.param.WaylineJobQueryParam;
import com.dji.sample.wayline.service.IWaylineFileService;
import com.dji.sample.wayline.service.IWaylineJobService;
import com.dji.sample.wayline.service.IWaylineRedisService;
@@ -394,12 +395,22 @@
}
@Override
- public PaginationData<WaylineJobDTO> getJobsByWorkspaceId(String workspaceId, long page, long pageSize) {
- Page<WaylineJobEntity> pageData = mapper.selectPage(
- new Page<WaylineJobEntity>(page, pageSize),
- new LambdaQueryWrapper<WaylineJobEntity>()
- .eq(WaylineJobEntity::getWorkspaceId, workspaceId)
- .orderByDesc(WaylineJobEntity::getId));
+ public PaginationData<WaylineJobDTO> getJobsByWorkspaceId(String workspaceId, long page, long pageSize, WaylineJobQueryParam waylineJobQueryParam) {
+// Page<WaylineJobEntity> pageData = mapper.selectPage(
+// new Page<WaylineJobEntity>(page, pageSize),
+// new LambdaQueryWrapper<WaylineJobEntity>()
+// .eq(WaylineJobEntity::getWorkspaceId, workspaceId)
+// .eq(waylineJobDTO.getTaskType() !=null, WaylineJobEntity::getTaskType, waylineJobDTO.getTaskType())
+// .eq(waylineJobDTO.getStatus()!=null, WaylineJobEntity::getStatus, waylineJobDTO.getStatus())
+// .like(StringUtils.hasText(waylineJobDTO.getJobName()),WaylineJobEntity::getName,waylineJobDTO.getJobName())
+//
+//
+// .orderByDesc(WaylineJobEntity::getId));
+
+ Page<WaylineJobEntity> pageData = mapper.getPage(new Page<WaylineJobEntity>(page, pageSize),waylineJobQueryParam,workspaceId);
+
+
+
List<WaylineJobDTO> records = pageData.getRecords()
.stream()
.map(this::entity2Dto)
--
Gitblit v1.9.3