From 8ff0176530911f845ca5940a31cdd7628e769a61 Mon Sep 17 00:00:00 2001
From: 叶松 <2217086471@qq.com>
Date: 星期三, 08 十一月 2023 13:54:03 +0800
Subject: [PATCH] Merge branch 'master' of http://111.30.93.211:10101/r/supipe
---
hd/pipe/secure/src/main/java/com/thhy/secure/modules/biz/hiddenDanger/entity/HiddenDangerImgEntity.java | 37 ++
hd/pipe/materialsManage/src/main/java/com/thhy/materials/modules/biz/helmet/service/HelmetService.java | 4
web/src/views/SecureManage/WisdomVideo.vue | 180 ++++++++++
hd/pipe/materialsManage/src/main/java/com/thhy/materials/modules/biz/concret/entity/dto/PieceDto.java | 17
hd/pipe/secure/src/main/java/com/thhy/secure/modules/biz/hiddenDanger/entity/HiddenDangerEntity.java | 81 ++++
hd/pipe/materialsManage/src/main/resources/mapping/THelmetDeviceMapper.xml | 25 +
hd/pipe/materialsManage/src/main/java/com/thhy/materials/modules/biz/concret/service/impl/TMaterialReleaseServiceImpl.java | 16
hd/pipe/secure/src/main/java/com/thhy/secure/modules/biz/hiddenDanger/controller/HiddenDangerController.java | 92 +++++
hd/pipe/secure/src/main/java/com/thhy/secure/modules/biz/hiddenDanger/service/impl/HiddenDangerServiceImpl.java | 120 ++++++
hd/pipe/secure/src/main/java/com/thhy/secure/modules/biz/hiddenDanger/service/HiddenDangerService.java | 31 +
hd/pipe/materialsManage/src/main/java/com/thhy/materials/modules/biz/helmet/service/impl/HelmetServiceImpl.java | 17
hd/pipe/secure/src/main/java/com/thhy/secure/modules/biz/hiddenDanger/mapper/HiddenDangerMapper.java | 35 +
hd/pipe/secure/src/main/resources/mapping/HiddenDangerMapper.xml | 215 +++++++++++
web/src/api/modules/safety.js | 13
hd/pipe/materialsManage/src/main/java/com/thhy/materials/modules/biz/concret/mapper/TMaterialReleaseMappper.java | 6
hd/pipe/materialsManage/src/main/resources/mapping/TMaterialReleaseMapper.xml | 18
hd/pipe/materialsManage/src/main/java/com/thhy/materials/modules/biz/concret/service/TMaterialReleaseService.java | 2
hd/pipe/materialsManage/src/main/java/com/thhy/materials/modules/biz/helmet/controller/HelmetController.java | 16
hd/pipe/materialsManage/src/main/java/com/thhy/materials/modules/biz/concret/controller/TMaterialReleaseController.java | 6
hd/pipe/materialsManage/src/main/java/com/thhy/materials/modules/biz/helmet/entity/dto/TypeName.java | 13
hd/pipe/materialsManage/src/main/java/com/thhy/materials/modules/biz/concret/entity/TRawMaterial.java | 82 ++++
hd/pipe/materialsManage/src/main/java/com/thhy/materials/modules/biz/helmet/mapper/HelmetMapper.java | 5
22 files changed, 1,024 insertions(+), 7 deletions(-)
diff --git a/hd/pipe/materialsManage/src/main/java/com/thhy/materials/modules/biz/concret/controller/TMaterialReleaseController.java b/hd/pipe/materialsManage/src/main/java/com/thhy/materials/modules/biz/concret/controller/TMaterialReleaseController.java
index 900cb14..a9e5f7f 100644
--- a/hd/pipe/materialsManage/src/main/java/com/thhy/materials/modules/biz/concret/controller/TMaterialReleaseController.java
+++ b/hd/pipe/materialsManage/src/main/java/com/thhy/materials/modules/biz/concret/controller/TMaterialReleaseController.java
@@ -79,5 +79,9 @@
return materialReleaseService.materialReleaseExcel(values,response);
}
-
+ //搅拌站 消耗列表
+ @PostMapping("/materialRew")
+ public BasicResult materialRew(@RequestBody HashMap<String,Object> values) {
+ return materialReleaseService.materialRew(values);
+ }
}
diff --git a/hd/pipe/materialsManage/src/main/java/com/thhy/materials/modules/biz/concret/entity/TRawMaterial.java b/hd/pipe/materialsManage/src/main/java/com/thhy/materials/modules/biz/concret/entity/TRawMaterial.java
new file mode 100644
index 0000000..63c93d5
--- /dev/null
+++ b/hd/pipe/materialsManage/src/main/java/com/thhy/materials/modules/biz/concret/entity/TRawMaterial.java
@@ -0,0 +1,82 @@
+package com.thhy.materials.modules.biz.concret.entity;
+
+import lombok.Data;
+import lombok.Getter;
+import lombok.Setter;
+import lombok.ToString;
+
+import java.io.Serializable;
+
+@Data
+@Getter
+@Setter
+@ToString
+public class TRawMaterial implements Serializable {
+ /**
+ * 搅拌id
+ */
+ private Integer rawMaterialId;
+
+ /**
+ * 盘次
+ */
+ private String piece;
+
+ /**
+ * 原材料仓
+ */
+ private String storage;
+
+ /**
+ * 原材料
+ */
+ private String material;
+
+ /**
+ * 原材料规格
+ */
+ private String spec;
+
+ /**
+ * 含水率*100、含固率*100...
+ */
+ private String watfull;
+
+ /**
+ * 配方用量
+ */
+ private String recamnt;
+
+ /**
+ * 设定用量
+ */
+ private String planamnt;
+
+ /**
+ * 实际用量
+ */
+ private String factamnt;
+
+ /**
+ *
+ */
+ private String flag;
+
+ /**
+ *
+ */
+ private String savestamp;
+
+ /**
+ * 搅拌站接入主键
+ */
+ private Integer byId;
+
+ /**
+ * This field was generated by MyBatis Generator.
+ * This field corresponds to the database table t_raw_material
+ *
+ * @mbg.generated Fri Nov 03 09:16:01 CST 2023
+ */
+ private static final long serialVersionUID = 1L;
+}
\ No newline at end of file
diff --git a/hd/pipe/materialsManage/src/main/java/com/thhy/materials/modules/biz/concret/entity/dto/PieceDto.java b/hd/pipe/materialsManage/src/main/java/com/thhy/materials/modules/biz/concret/entity/dto/PieceDto.java
new file mode 100644
index 0000000..f5bc41f
--- /dev/null
+++ b/hd/pipe/materialsManage/src/main/java/com/thhy/materials/modules/biz/concret/entity/dto/PieceDto.java
@@ -0,0 +1,17 @@
+package com.thhy.materials.modules.biz.concret.entity.dto;
+
+import com.thhy.materials.modules.biz.concret.entity.TRawMaterial;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.List;
+
+@Data
+public class PieceDto implements Serializable {
+
+ private Integer byId;
+
+
+ private List<TRawMaterial> rawMaterials;
+
+}
diff --git a/hd/pipe/materialsManage/src/main/java/com/thhy/materials/modules/biz/concret/mapper/TMaterialReleaseMappper.java b/hd/pipe/materialsManage/src/main/java/com/thhy/materials/modules/biz/concret/mapper/TMaterialReleaseMappper.java
index 8cbbfa9..5775e1c 100644
--- a/hd/pipe/materialsManage/src/main/java/com/thhy/materials/modules/biz/concret/mapper/TMaterialReleaseMappper.java
+++ b/hd/pipe/materialsManage/src/main/java/com/thhy/materials/modules/biz/concret/mapper/TMaterialReleaseMappper.java
@@ -2,7 +2,9 @@
import com.thhy.general.annotations.Idkey;
import com.thhy.materials.modules.biz.concret.entity.TMaterialRelease;
+import com.thhy.materials.modules.biz.concret.entity.TRawMaterial;
import com.thhy.materials.modules.biz.concret.entity.TReleaseData;
+import com.thhy.materials.modules.biz.concret.entity.dto.PieceDto;
import java.util.HashMap;
import java.util.List;
@@ -22,4 +24,8 @@
void releaseDataDel(String materialReleaseId);
void materialReleaseDel(String materialReleaseId);
+
+ List<PieceDto> pieceList(HashMap<String, Object> values);
+
+ List<TRawMaterial> materialRew(Integer byId);
}
diff --git a/hd/pipe/materialsManage/src/main/java/com/thhy/materials/modules/biz/concret/service/TMaterialReleaseService.java b/hd/pipe/materialsManage/src/main/java/com/thhy/materials/modules/biz/concret/service/TMaterialReleaseService.java
index ae27e72..a772fcb 100644
--- a/hd/pipe/materialsManage/src/main/java/com/thhy/materials/modules/biz/concret/service/TMaterialReleaseService.java
+++ b/hd/pipe/materialsManage/src/main/java/com/thhy/materials/modules/biz/concret/service/TMaterialReleaseService.java
@@ -19,4 +19,6 @@
BasicResult materialReleaseDel(String materialReleaseId);
BasicResult materialReleaseExcel(HashMap<String, Object> values, HttpServletResponse response) throws FileNotFoundException;
+
+ BasicResult materialRew(HashMap<String, Object> values);
}
diff --git a/hd/pipe/materialsManage/src/main/java/com/thhy/materials/modules/biz/concret/service/impl/TMaterialReleaseServiceImpl.java b/hd/pipe/materialsManage/src/main/java/com/thhy/materials/modules/biz/concret/service/impl/TMaterialReleaseServiceImpl.java
index a3783fe..1e9c031 100644
--- a/hd/pipe/materialsManage/src/main/java/com/thhy/materials/modules/biz/concret/service/impl/TMaterialReleaseServiceImpl.java
+++ b/hd/pipe/materialsManage/src/main/java/com/thhy/materials/modules/biz/concret/service/impl/TMaterialReleaseServiceImpl.java
@@ -6,8 +6,10 @@
import com.thhy.general.config.SysUserInfo;
import com.thhy.general.utils.UserInfoUtils;
import com.thhy.materials.modules.biz.concret.entity.TMaterialRelease;
+import com.thhy.materials.modules.biz.concret.entity.TRawMaterial;
import com.thhy.materials.modules.biz.concret.entity.TReleaseData;
import com.thhy.materials.modules.biz.concret.entity.dto.DicetName;
+import com.thhy.materials.modules.biz.concret.entity.dto.PieceDto;
import com.thhy.materials.modules.biz.concret.mapper.TMaterialReleaseMappper;
import com.thhy.materials.modules.biz.concret.service.TMaterialReleaseService;
import com.thhy.materials.modules.biz.weigh.mapper.WeighMapper;
@@ -205,4 +207,18 @@
}
return null;
}
+
+ @Override
+ public BasicResult materialRew(HashMap<String, Object> values) {
+ Integer pageSize = Integer.valueOf(values.get("pageSize").toString());
+ Integer pageNum = Integer.valueOf(values.get("pageNum").toString());
+ PageHelper.startPage(pageNum,pageSize);
+ List<PieceDto> pieceDtos = materialReleaseMappper.pieceList(values);
+ for (PieceDto pieceDto : pieceDtos){
+ List<TRawMaterial> rawMaterials = materialReleaseMappper.materialRew(pieceDto.getById());
+ pieceDto.setRawMaterials(rawMaterials);
+ }
+ PageInfo<PieceDto> pieceDtoPageInfo = new PageInfo<>(pieceDtos);
+ return BasicResult.success(pieceDtoPageInfo);
+ }
}
diff --git a/hd/pipe/materialsManage/src/main/java/com/thhy/materials/modules/biz/helmet/controller/HelmetController.java b/hd/pipe/materialsManage/src/main/java/com/thhy/materials/modules/biz/helmet/controller/HelmetController.java
index 86dc3df..d6350b6 100644
--- a/hd/pipe/materialsManage/src/main/java/com/thhy/materials/modules/biz/helmet/controller/HelmetController.java
+++ b/hd/pipe/materialsManage/src/main/java/com/thhy/materials/modules/biz/helmet/controller/HelmetController.java
@@ -4,10 +4,7 @@
import com.thhy.general.common.BasicResult;
import com.thhy.materials.modules.biz.helmet.service.HelmetService;
import org.apache.ibatis.annotations.Mapper;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.util.Map;
@@ -94,5 +91,16 @@
}
+ // 智能监控
+ @PostMapping("/dataAIList")
+ public BasicResult dataAIList(@RequestBody Map<String,Object> values){
+ return helmetService.dataAIList(values);
+ }
+
+ //智能监控类型
+ @GetMapping("dataAIType")
+ public BasicResult dataAIType(){
+ return helmetService.dataAIType();
+ }
}
diff --git a/hd/pipe/materialsManage/src/main/java/com/thhy/materials/modules/biz/helmet/entity/dto/TypeName.java b/hd/pipe/materialsManage/src/main/java/com/thhy/materials/modules/biz/helmet/entity/dto/TypeName.java
new file mode 100644
index 0000000..90643d4
--- /dev/null
+++ b/hd/pipe/materialsManage/src/main/java/com/thhy/materials/modules/biz/helmet/entity/dto/TypeName.java
@@ -0,0 +1,13 @@
+package com.thhy.materials.modules.biz.helmet.entity.dto;
+
+import lombok.Data;
+
+import java.io.Serializable;
+@Data
+public class TypeName implements Serializable {
+
+ private Integer type;
+
+ private String typeName;
+
+}
diff --git a/hd/pipe/materialsManage/src/main/java/com/thhy/materials/modules/biz/helmet/mapper/HelmetMapper.java b/hd/pipe/materialsManage/src/main/java/com/thhy/materials/modules/biz/helmet/mapper/HelmetMapper.java
index b2abea6..e247b3f 100644
--- a/hd/pipe/materialsManage/src/main/java/com/thhy/materials/modules/biz/helmet/mapper/HelmetMapper.java
+++ b/hd/pipe/materialsManage/src/main/java/com/thhy/materials/modules/biz/helmet/mapper/HelmetMapper.java
@@ -2,6 +2,7 @@
import com.thhy.materials.modules.biz.helmet.entity.*;
import com.thhy.materials.modules.biz.helmet.entity.dto.ReportNumDto;
+import com.thhy.materials.modules.biz.helmet.entity.dto.TypeName;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
@@ -55,4 +56,8 @@
List<TDataValue> dataValuesList(Map<String, Object> values);
void dataBox(TDataAi tDataAi);
+
+ List<TDataAi> dataAIList(Map<String, Object> values);
+
+ List<TypeName> dataAIType();
}
diff --git a/hd/pipe/materialsManage/src/main/java/com/thhy/materials/modules/biz/helmet/service/HelmetService.java b/hd/pipe/materialsManage/src/main/java/com/thhy/materials/modules/biz/helmet/service/HelmetService.java
index 9bee834..9d72ae9 100644
--- a/hd/pipe/materialsManage/src/main/java/com/thhy/materials/modules/biz/helmet/service/HelmetService.java
+++ b/hd/pipe/materialsManage/src/main/java/com/thhy/materials/modules/biz/helmet/service/HelmetService.java
@@ -50,4 +50,8 @@
BasicResult dataValuesList(Map<String, Object> values);
BasicResult dataBox(JSONObject result);
+
+ BasicResult dataAIList(Map<String, Object> values);
+
+ BasicResult dataAIType();
}
diff --git a/hd/pipe/materialsManage/src/main/java/com/thhy/materials/modules/biz/helmet/service/impl/HelmetServiceImpl.java b/hd/pipe/materialsManage/src/main/java/com/thhy/materials/modules/biz/helmet/service/impl/HelmetServiceImpl.java
index c98c12e..1aff6fc 100644
--- a/hd/pipe/materialsManage/src/main/java/com/thhy/materials/modules/biz/helmet/service/impl/HelmetServiceImpl.java
+++ b/hd/pipe/materialsManage/src/main/java/com/thhy/materials/modules/biz/helmet/service/impl/HelmetServiceImpl.java
@@ -6,6 +6,7 @@
import com.thhy.general.common.BasicResult;
import com.thhy.materials.modules.biz.helmet.entity.*;
import com.thhy.materials.modules.biz.helmet.entity.dto.ReportNumDto;
+import com.thhy.materials.modules.biz.helmet.entity.dto.TypeName;
import com.thhy.materials.modules.biz.helmet.mapper.HelmetMapper;
import com.thhy.materials.modules.biz.helmet.service.HelmetService;
import org.springframework.stereotype.Service;
@@ -235,4 +236,20 @@
helmetMapper.dataBox(tDataAi);
return BasicResult.success();
}
+
+ @Override
+ public BasicResult dataAIList(Map<String, Object> values) {
+ Integer pageNum = Integer.valueOf(values.get("pageNum").toString());
+ Integer pageSize = Integer.valueOf(values.get("pageSize").toString());
+ PageHelper.startPage(pageNum,pageSize);
+ List<TDataAi> tDataAis = helmetMapper.dataAIList(values);
+ PageInfo<TDataAi> tDataAiPageInfo = new PageInfo<>(tDataAis);
+ return BasicResult.success(tDataAiPageInfo);
+ }
+
+ @Override
+ public BasicResult dataAIType() {
+ List<TypeName> typeNames = helmetMapper.dataAIType();
+ return BasicResult.success(typeNames);
+ }
}
diff --git a/hd/pipe/materialsManage/src/main/resources/mapping/THelmetDeviceMapper.xml b/hd/pipe/materialsManage/src/main/resources/mapping/THelmetDeviceMapper.xml
index 2e9f97d..8814d92 100644
--- a/hd/pipe/materialsManage/src/main/resources/mapping/THelmetDeviceMapper.xml
+++ b/hd/pipe/materialsManage/src/main/resources/mapping/THelmetDeviceMapper.xml
@@ -1131,4 +1131,29 @@
</if>
</trim>
</insert>
+
+ <select id="dataAIList" resultType="com.thhy.materials.modules.biz.helmet.entity.TDataAi">
+ select
+ sign_time as signTime,
+ box_name as boxName,
+ device_name as deviceName,
+ type_name as typeName,
+ `type` as `type`,
+ sign_avatar as signAvatar
+ from t_data_ai where
+ 1=1
+ <if test="strTime!=null and strTime!='' and endTime!='' and endTime!=null ">
+ and sign_time between #{strTime} and #{endTime}
+ </if>
+ <if test="type!=null and type!='' ">
+ and `type` =#{type}
+ </if>
+ order by sign_time desc
+ </select>
+ <select id="dataAIType" resultType="com.thhy.materials.modules.biz.helmet.entity.dto.TypeName">
+ select `type`,
+ type_name as typeName
+ from t_data_ai_type
+ order by `type` asc
+ </select>
</mapper>
\ No newline at end of file
diff --git a/hd/pipe/materialsManage/src/main/resources/mapping/TMaterialReleaseMapper.xml b/hd/pipe/materialsManage/src/main/resources/mapping/TMaterialReleaseMapper.xml
index 9ac50f0..a406e28 100644
--- a/hd/pipe/materialsManage/src/main/resources/mapping/TMaterialReleaseMapper.xml
+++ b/hd/pipe/materialsManage/src/main/resources/mapping/TMaterialReleaseMapper.xml
@@ -146,5 +146,21 @@
is_use=2
where material_release_id=#{materialReleaseId}
</update>
-
+ <select id="pieceList" resultType="com.thhy.materials.modules.biz.concret.entity.dto.PieceDto">
+ select by_id as byId from t_piece
+ where 1=1
+ <if test="byId!=null and byId!='' ">
+ and by_id=#{byId}
+ </if>
+ ORDER BY by_id desc
+ </select>
+ <select id="materialRew" resultType="com.thhy.materials.modules.biz.concret.entity.TRawMaterial">
+ select Storage as storage,
+ Material as material,
+ RecAmnt as recamnt,
+ PlanAmnt as planamnt,
+ FactAmnt as factamnt
+ from t_raw_material
+ where Piece=#{byId}
+ </select>
</mapper>
\ No newline at end of file
diff --git a/hd/pipe/secure/src/main/java/com/thhy/secure/modules/biz/hiddenDanger/controller/HiddenDangerController.java b/hd/pipe/secure/src/main/java/com/thhy/secure/modules/biz/hiddenDanger/controller/HiddenDangerController.java
new file mode 100644
index 0000000..103d901
--- /dev/null
+++ b/hd/pipe/secure/src/main/java/com/thhy/secure/modules/biz/hiddenDanger/controller/HiddenDangerController.java
@@ -0,0 +1,92 @@
+package com.thhy.secure.modules.biz.hiddenDanger.controller;
+
+import com.thhy.general.common.BasicResult;
+import com.thhy.secure.modules.biz.hiddenDanger.entity.HiddenDangerEntity;
+import com.thhy.secure.modules.biz.hiddenDanger.service.HiddenDangerService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.Map;
+
+/**
+ * @Author QiuYuHao
+ * @CreateDate 2023-11-07 14:26:39
+ * 隐患举报控制层
+ */
+@RestController
+@RequestMapping(value = "hiddendanger")
+public class HiddenDangerController {
+
+ @Autowired
+ private HiddenDangerService hiddenDangerService;
+
+ /**
+ * 新增
+ * @param hiddenDangerEntity
+ * @return
+ */
+ @PostMapping(value = "insert")
+ BasicResult insert(@RequestBody HiddenDangerEntity hiddenDangerEntity){
+ return hiddenDangerService.insert(hiddenDangerEntity);
+ }
+
+ /**
+ * 修改接口
+ * @param hiddenDangerEntity
+ * @return
+ */
+ @PostMapping(value = "update")
+ BasicResult update(@RequestBody HiddenDangerEntity hiddenDangerEntity){
+ return hiddenDangerService.update(hiddenDangerEntity);
+ }
+
+ /**
+ * 删除
+ * @param id
+ * @return
+ */
+ @GetMapping(value = "delete")
+ BasicResult delete(@RequestParam String id){
+ return hiddenDangerService.delete(id);
+ }
+
+ /**
+ * web端列表
+ * @param map
+ * @return
+ */
+ @PostMapping(value = "selectPageList")
+ BasicResult selectPageList(@RequestBody Map<String,Object> map){
+ return hiddenDangerService.selectPageList(map);
+ }
+
+ /**
+ * 小程序
+ * @param map
+ * @return
+ */
+ @PostMapping(value = "selectNoPageList")
+ BasicResult selectNoPageList(@RequestBody Map<String,Object> map){
+ return hiddenDangerService.selectNoPageList(map);
+ }
+
+ /**
+ * web、小程序详情
+ * @param id
+ * @return
+ */
+ @GetMapping(value = "selectInfo")
+ BasicResult selectInfo(@RequestParam String id){
+ return hiddenDangerService.selectInfo(id);
+ }
+
+ /**
+ * web审核接口
+ * @param hiddenDangerEntity
+ * @return
+ */
+ @PostMapping(value = "examine")
+ BasicResult examine(@RequestBody HiddenDangerEntity hiddenDangerEntity){
+ return hiddenDangerService.examine(hiddenDangerEntity);
+ }
+}
diff --git a/hd/pipe/secure/src/main/java/com/thhy/secure/modules/biz/hiddenDanger/entity/HiddenDangerEntity.java b/hd/pipe/secure/src/main/java/com/thhy/secure/modules/biz/hiddenDanger/entity/HiddenDangerEntity.java
new file mode 100644
index 0000000..473f4a6
--- /dev/null
+++ b/hd/pipe/secure/src/main/java/com/thhy/secure/modules/biz/hiddenDanger/entity/HiddenDangerEntity.java
@@ -0,0 +1,81 @@
+package com.thhy.secure.modules.biz.hiddenDanger.entity;
+
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * @Author QiuYuHao
+ * @CreateDate 2023-11-07 14:27:33
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+@Builder
+public class HiddenDangerEntity implements Serializable {
+
+ private String id;
+
+ /**
+ * 隐患地点
+ */
+ private String dangerLocation;
+
+ /**
+ * 隐患标题
+ */
+ private String title;
+
+ /**
+ * 隐患时间
+ */
+ private Date createTime;
+
+ /**
+ * 隐患审核状态 审核状态 0未审核 1审核通过 2审核失败
+ */
+ private Integer auditStatus;
+ private String auditStatusName;
+
+ public String getAuditStatusName() {
+ String name = "";
+ switch (auditStatus){
+ case 0:
+ name = "未审核";
+ break;
+ case 1:
+ name = "已审核";
+ break;
+ case 2:
+ name = "审核失败";
+ break;
+ }
+ return name;
+ }
+
+ /**
+ * 1Y0N
+ */
+ private Integer isUse;
+
+ private String createUser;
+ private String updateUser;
+ private Date updateTime;
+ private String companyId;
+
+ /**
+ * 积分
+ */
+ private Double integral;
+
+ /**
+ * 图片集合
+ */
+ private List<HiddenDangerImgEntity> imgEntities;
+
+}
diff --git a/hd/pipe/secure/src/main/java/com/thhy/secure/modules/biz/hiddenDanger/entity/HiddenDangerImgEntity.java b/hd/pipe/secure/src/main/java/com/thhy/secure/modules/biz/hiddenDanger/entity/HiddenDangerImgEntity.java
new file mode 100644
index 0000000..37fd8e5
--- /dev/null
+++ b/hd/pipe/secure/src/main/java/com/thhy/secure/modules/biz/hiddenDanger/entity/HiddenDangerImgEntity.java
@@ -0,0 +1,37 @@
+package com.thhy.secure.modules.biz.hiddenDanger.entity;
+
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+
+/**
+ * @Author QiuYuHao
+ * @CreateDate 2023-11-07 14:56:00
+ * 隐患图片实体
+ */
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+@Builder
+public class HiddenDangerImgEntity implements Serializable {
+
+ private String id;
+
+ /**
+ * 隐患id
+ */
+ private String hiddenDangerId;
+
+ /**
+ * 图片名称
+ */
+ private String imgName;
+
+ /**
+ * 图片地址
+ */
+ private String imgPath;
+}
diff --git a/hd/pipe/secure/src/main/java/com/thhy/secure/modules/biz/hiddenDanger/mapper/HiddenDangerMapper.java b/hd/pipe/secure/src/main/java/com/thhy/secure/modules/biz/hiddenDanger/mapper/HiddenDangerMapper.java
new file mode 100644
index 0000000..ea497c1
--- /dev/null
+++ b/hd/pipe/secure/src/main/java/com/thhy/secure/modules/biz/hiddenDanger/mapper/HiddenDangerMapper.java
@@ -0,0 +1,35 @@
+package com.thhy.secure.modules.biz.hiddenDanger.mapper;
+
+import com.thhy.secure.modules.biz.hiddenDanger.entity.HiddenDangerEntity;
+import com.thhy.secure.modules.biz.hiddenDanger.entity.HiddenDangerImgEntity;
+import org.apache.ibatis.annotations.Mapper;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @Author QiuYuHao
+ * @CreateDate 2023-11-07 14:31:40
+ * 隐患mapper
+ */
+
+@Mapper
+public interface HiddenDangerMapper {
+
+ void insert(HiddenDangerEntity hiddenDangerEntity);
+
+ void update(HiddenDangerEntity hiddenDangerEntity);
+
+ void delete(String id);
+
+ List<HiddenDangerEntity> selectPageList(Map<String,Object> map);
+
+ HiddenDangerEntity selectInfo(String id);
+
+ List<HiddenDangerImgEntity> selectImgList(String hiddenDangerId);
+
+ void deleteImg(String hiddenDangerId);
+
+ void insertImg(HiddenDangerImgEntity hiddenDangerImgEntity);
+
+}
diff --git a/hd/pipe/secure/src/main/java/com/thhy/secure/modules/biz/hiddenDanger/service/HiddenDangerService.java b/hd/pipe/secure/src/main/java/com/thhy/secure/modules/biz/hiddenDanger/service/HiddenDangerService.java
new file mode 100644
index 0000000..663f49a
--- /dev/null
+++ b/hd/pipe/secure/src/main/java/com/thhy/secure/modules/biz/hiddenDanger/service/HiddenDangerService.java
@@ -0,0 +1,31 @@
+package com.thhy.secure.modules.biz.hiddenDanger.service;
+
+import com.thhy.general.common.BasicResult;
+import com.thhy.secure.modules.biz.hiddenDanger.entity.HiddenDangerEntity;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @Author QiuYuHao
+ * @CreateDate 2023-11-07 14:32:02
+ * 隐患接口
+ */
+public interface HiddenDangerService {
+
+ BasicResult insert(HiddenDangerEntity hiddenDangerEntity);
+
+ BasicResult update(HiddenDangerEntity hiddenDangerEntity);
+
+ BasicResult delete(String id);
+
+ BasicResult selectPageList(Map<String,Object> map);
+
+ BasicResult selectNoPageList(Map<String,Object> map);
+
+ BasicResult selectInfo(String id);
+
+ BasicResult examine(HiddenDangerEntity hiddenDangerEntity);
+
+
+}
diff --git a/hd/pipe/secure/src/main/java/com/thhy/secure/modules/biz/hiddenDanger/service/impl/HiddenDangerServiceImpl.java b/hd/pipe/secure/src/main/java/com/thhy/secure/modules/biz/hiddenDanger/service/impl/HiddenDangerServiceImpl.java
new file mode 100644
index 0000000..47fc2ef
--- /dev/null
+++ b/hd/pipe/secure/src/main/java/com/thhy/secure/modules/biz/hiddenDanger/service/impl/HiddenDangerServiceImpl.java
@@ -0,0 +1,120 @@
+package com.thhy.secure.modules.biz.hiddenDanger.service.impl;
+
+import com.github.pagehelper.PageHelper;
+import com.github.pagehelper.PageInfo;
+import com.thhy.general.common.BasicResult;
+import com.thhy.general.config.SysUserInfo;
+import com.thhy.general.utils.UUIDUtils;
+import com.thhy.general.utils.UserInfoUtils;
+import com.thhy.secure.modules.biz.hiddenDanger.entity.HiddenDangerEntity;
+import com.thhy.secure.modules.biz.hiddenDanger.mapper.HiddenDangerMapper;
+import com.thhy.secure.modules.biz.hiddenDanger.service.HiddenDangerService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @Author QiuYuHao
+ * @CreateDate 2023-11-07 14:32:29
+ * 隐患逻辑
+ */
+@Service
+public class HiddenDangerServiceImpl implements HiddenDangerService {
+
+ @Autowired
+ private HiddenDangerMapper hiddenDangerMapper;
+
+ private static final Object Lock = new Object();
+ @Override
+ @Transactional(rollbackFor = Exception.class)
+ public BasicResult insert(HiddenDangerEntity hiddenDangerEntity) {
+ SysUserInfo sysUserInfo = UserInfoUtils.getInstance().getUserInfo();
+ String hiddenDangerId = UUIDUtils.create();
+ hiddenDangerEntity.setId(hiddenDangerId);
+ hiddenDangerEntity.setCreateUser(sysUserInfo.getUserId());
+ hiddenDangerEntity.setCompanyId(sysUserInfo.getCompanyId());
+ synchronized (Lock){
+ hiddenDangerMapper.insert(hiddenDangerEntity);
+ //图片
+ hiddenDangerEntity.getImgEntities().forEach(obj->{
+ obj.setId(UUIDUtils.create());
+ obj.setHiddenDangerId(hiddenDangerId);
+ hiddenDangerMapper.insertImg(obj);
+ });
+ }
+ return BasicResult.success();
+ }
+
+ @Override
+ @Transactional(rollbackFor = Exception.class)
+ public BasicResult update(HiddenDangerEntity hiddenDangerEntity) {
+ SysUserInfo sysUserInfo = UserInfoUtils.getInstance().getUserInfo();
+ String userId = sysUserInfo.getUserId();
+ hiddenDangerEntity.setUpdateUser(userId);
+ hiddenDangerEntity.setUpdateTime(new Date());
+ synchronized (Lock){
+ hiddenDangerMapper.update(hiddenDangerEntity);
+ //删除图片
+ hiddenDangerMapper.deleteImg(hiddenDangerEntity.getId());
+ //图片
+ hiddenDangerEntity.getImgEntities().forEach(obj->{
+ obj.setId(UUIDUtils.create());
+ obj.setHiddenDangerId(hiddenDangerEntity.getId());
+ hiddenDangerMapper.insertImg(obj);
+ });
+ }
+ return BasicResult.success();
+ }
+
+ @Override
+ @Transactional(rollbackFor = Exception.class)
+ public BasicResult delete(String id) {
+ synchronized (Lock) {
+ hiddenDangerMapper.delete(id);
+ hiddenDangerMapper.deleteImg(id);
+ }
+ return BasicResult.success();
+ }
+
+ @Override
+ public BasicResult selectPageList(Map<String, Object> map) {
+ SysUserInfo sysUserInfo = UserInfoUtils.getInstance().getUserInfo();
+ map.put("companyId",sysUserInfo.getCompanyId());
+ int pageNum = (int) map.get("pageNum");
+ int pageSize = (int) map.get("pageSize");
+ PageHelper.startPage(pageNum,pageSize);
+ List<HiddenDangerEntity> hiddenDangerEntities = hiddenDangerMapper.selectPageList(map);
+ hiddenDangerEntities.forEach(obj ->{
+ String id = obj.getId();
+ obj.setImgEntities(hiddenDangerMapper.selectImgList(id));
+ });
+ return BasicResult.success(new PageInfo<>(hiddenDangerEntities));
+ }
+
+ @Override
+ public BasicResult selectNoPageList(Map<String, Object> map) {
+ SysUserInfo sysUserInfo = UserInfoUtils.getInstance().getUserInfo();
+ map.put("companyId",sysUserInfo.getCompanyId());
+ List<HiddenDangerEntity> hiddenDangerEntities = hiddenDangerMapper.selectPageList(map);
+ hiddenDangerEntities.forEach(obj ->{
+ String id = obj.getId();
+ obj.setImgEntities(hiddenDangerMapper.selectImgList(id));
+ });
+ return BasicResult.success(hiddenDangerEntities);
+ }
+
+ @Override
+ public BasicResult selectInfo(String id) {
+ return BasicResult.success(hiddenDangerMapper.selectInfo(id));
+ }
+
+ @Override
+ public BasicResult examine(HiddenDangerEntity hiddenDangerEntity) {
+ hiddenDangerMapper.update(hiddenDangerEntity);
+ return BasicResult.success();
+ }
+}
diff --git a/hd/pipe/secure/src/main/resources/mapping/HiddenDangerMapper.xml b/hd/pipe/secure/src/main/resources/mapping/HiddenDangerMapper.xml
new file mode 100644
index 0000000..d7fcce8
--- /dev/null
+++ b/hd/pipe/secure/src/main/resources/mapping/HiddenDangerMapper.xml
@@ -0,0 +1,215 @@
+<?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.thhy.secure.modules.biz.hiddenDanger.mapper.HiddenDangerMapper">
+
+ <!--插入操作-->
+ <insert id="insert">
+ insert into t_hidden_danger
+ <trim prefix="(" suffix=")" suffixOverrides="," >
+ <if test="id != null">
+ id,
+ </if>
+ <if test="dangerLocation != null">
+ dangerLocation,
+ </if>
+ <if test="title != null">
+ title,
+ </if>
+ <if test="createTime != null">
+ createTime,
+ </if>
+ <if test="auditStatus != null">
+ auditStatus,
+ </if>
+ <if test="isUse != null">
+ isUse,
+ </if>
+ <if test="createUser != null">
+ createUser,
+ </if>
+ <if test="updateUser != null">
+ updateUser,
+ </if>
+ <if test="updateTime != null">
+ updateTime,
+ </if>
+ <if test="companyId != null">
+ companyId,
+ </if>
+ <if test="integral != null">
+ integral,
+ </if>
+ </trim>
+ <trim prefix="values (" suffix=")" suffixOverrides="," >
+
+ <if test="id != null">
+ #{id,jdbcType=VARCHAR},
+ </if>
+ <if test="dangerLocation != null">
+ #{dangerLocation,jdbcType=VARCHAR},
+ </if>
+ <if test="title != null">
+ #{title,jdbcType=VARCHAR},
+ </if>
+ <if test="createTime != null">
+ #{createTime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="auditStatus != null">
+ #{auditStatus,jdbcType=INTEGER},
+ </if>
+ <if test="isUse != null">
+ #{isUse,jdbcType=INTEGER},
+ </if>
+ <if test="createUser != null">
+ #{createUser,jdbcType=VARCHAR},
+ </if>
+ <if test="updateUser != null">
+ #{updateUser,jdbcType=VARCHAR},
+ </if>
+ <if test="updateTime != null">
+ #{updateTime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="companyId != null">
+ #{companyId,jdbcType=TIMESTAMP},
+ </if>
+ <if test="integral != null">
+ #{integral,jdbcType=DOUBLE},
+ </if>
+ </trim>
+ </insert>
+
+
+ <!--更新操作-->
+ <update id="update">
+ update t_hidden_danger
+ <set>
+ <if test="dangerLocation != null">
+ dangerLocation = #{dangerLocation,jdbcType=VARCHAR},
+ </if>
+ <if test="title != null">
+ title = #{title,jdbcType=VARCHAR},
+ </if>
+ <if test="createTime != null">
+ createTime = #{createTime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="auditStatus != null">
+ auditStatus = #{auditStatus,jdbcType=INTEGER},
+ </if>
+ <if test="isUse != null">
+ isUse = #{isUse,jdbcType=INTEGER},
+ </if>
+ <if test="createUser != null">
+ createUser = #{createUser,jdbcType=VARCHAR},
+ </if>
+ <if test="updateUser != null">
+ updateUser = #{updateUser,jdbcType=VARCHAR},
+ </if>
+ <if test="updateTime != null">
+ updateTime = #{updateTime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="companyId != null">
+ companyId = #{companyId,jdbcType=VARCHAR},
+ </if>
+ <if test="integral != null">
+ integral = #{integral,jdbcType=DOUBLE},
+ </if>
+ </set>
+ where id=#{id,jdbcType=VARCHAR}
+ </update>
+
+ <!--逻辑删除-->
+ <update id="delete">
+ update t_hidden_danger
+ SET isUse = 0
+ where id=#{id}
+ </update>
+
+ <select id="selectInfo" resultType="com.thhy.secure.modules.biz.hiddenDanger.entity.HiddenDangerEntity">
+ select
+ t.id,
+ t.dangerLocation,
+ t.title,
+ t.createTime,
+ t.auditStatus,
+ t.isUse,
+ t.createUser,
+ t.updateUser,
+ t.updateTime,
+ t.companyId
+ from t_hidden_danger t
+ where t.id=#{id}
+ </select>
+
+ <!--查询列表-->
+ <select id="selectPageList" resultType="com.thhy.secure.modules.biz.hiddenDanger.entity.HiddenDangerEntity">
+ SELECT
+ t.id,
+ t.dangerLocation,
+ t.title,
+ t.createTime,
+ t.auditStatus,
+ t.isUse,
+ t.createUser,
+ t.updateUser,
+ t.updateTime,
+ t.companyId
+ from t_hidden_danger t
+ LEFT JOIN sys_users su ON su.user_id = t.createUser
+ LEFT JOIN sys_users su1 ON su1.user_id = t.updateUser
+ WHERE
+ t.isUse = 1
+ and t.companyId = #{companyId}
+ <if test="startTime!= null and endTime!=null and startTime != '' and endTime !=''">
+ and t.createTime BETWEEN #{startTime} and #{endTime}
+ </if>
+ order by t.createUser desc
+ </select>
+
+ <!--根据ID删除-->
+ <delete id="deleteImg">
+ delete from t_hidden_danger_img
+ where hiddenDangerId=#{hiddenDangerId}
+ </delete>
+
+ <select id="selectImgList" resultType="com.thhy.secure.modules.biz.hiddenDanger.entity.HiddenDangerImgEntity">
+ SELECT
+ id,
+ hiddenDangerId,
+ imgName,
+ imgPath
+ FROM t_hidden_danger_img
+ WHERE hiddenDangerId = #{hiddenDangerId}
+ </select>
+
+ <insert id="insertImg">
+ insert into t_hidden_danger_img
+ <trim prefix="(" suffix=")" suffixOverrides="," >
+ <if test="id != null">
+ id,
+ </if>
+ <if test="hiddenDangerId != null">
+ hiddenDangerId,
+ </if>
+ <if test="imgName != null">
+ imgName,
+ </if>
+ <if test="imgPath != null">
+ imgPath,
+ </if>
+ </trim>
+ <trim prefix="values (" suffix=")" suffixOverrides="," >
+ <if test="id != null">
+ #{id,jdbcType=VARCHAR},
+ </if>
+ <if test="hiddenDangerId != null">
+ #{hiddenDangerId,jdbcType=VARCHAR},
+ </if>
+ <if test="imgName != null">
+ #{imgName,jdbcType=VARCHAR},
+ </if>
+ <if test="imgPath != null">
+ #{imgPath,jdbcType=VARCHAR},
+ </if>
+ </trim>
+ </insert>
+</mapper>
diff --git a/web/src/api/modules/safety.js b/web/src/api/modules/safety.js
index 963b9c4..b0e824c 100644
--- a/web/src/api/modules/safety.js
+++ b/web/src/api/modules/safety.js
@@ -277,5 +277,16 @@
delete: params =>
axios.get('/secure/tRegionWarranty/delete', { params }),
}
- }
+ },
+
+
+ /**
+ * 安全管理模块 - 智慧监控
+ */
+ // 查询智慧监控信息列表
+ searchWisdomVideoList: (params) =>
+ axios.post('/materials/helmet/dataAIList', params),
+ // 获取全部预警消息类型
+ getAllWaringData: () =>
+ axios.get('/materials/helmet/dataAIType'),
}
\ No newline at end of file
diff --git a/web/src/views/SecureManage/WisdomVideo.vue b/web/src/views/SecureManage/WisdomVideo.vue
new file mode 100644
index 0000000..fe3e90c
--- /dev/null
+++ b/web/src/views/SecureManage/WisdomVideo.vue
@@ -0,0 +1,180 @@
+<template>
+ <div class="main">
+ <div class="main_header">
+ <div class="header_item">
+ <span class="header_label">时间范围:</span>
+ <el-date-picker
+ v-model="timeData"
+ type="datetimerange"
+ range-separator="至"
+ start-placeholder="开始日期"
+ end-placeholder="结束日期"
+ value-format="yyyy-MM-dd HH:mm:ss">
+ </el-date-picker>
+ </div>
+ <div class="header_item">
+ <span class="header_label">预警消息类型:</span>
+ <el-select v-model="messageId" clearable placeholder="请选择预警消息类型">
+ <el-option
+ v-for="item in messageData"
+ :key="item.type"
+ :label="item.typeName"
+ :value="item.type">
+ </el-option>
+ </el-select>
+ </div>
+ <div class="header_item">
+ <el-button icon="el-icon-search" v-if="showButton('search')" @click="searchWisdomVideoList(true)">查询</el-button>
+ <el-button class="search_btn" icon="el-icon-message" v-if="showButton('insert')" @click="asyncConfig = true;">短信设置</el-button>
+ </div>
+ </div>
+ <div class="main_content">
+ <el-table
+ v-loading="loading"
+ :data="wisdomVideoList"
+ height="100%">
+ <el-table-column label="序号" width="55" align="center">
+ <template #default="scope">
+ <span>{{(pageNum - 1) * pageSize + scope.$index + 1}}</span>
+ </template>
+ </el-table-column>
+ <el-table-column prop="signTime" label="预警时间" align="center" width="200"></el-table-column>
+ <el-table-column prop="boxName" label="盒子的名称" align="center" width="200"></el-table-column>
+ <el-table-column prop="deviceName" label="摄像头的名称" align="center" width="200"></el-table-column>
+ <el-table-column prop="type" label="预警消息类型" align="center" width="200"></el-table-column>
+ <el-table-column prop="typeName" label="预警消息名称" align="center"></el-table-column>
+ <el-table-column prop="useYearMonth" label="抓拍大图" align="center"></el-table-column>
+ <el-table-column prop="signTime" label="抓拍时间" align="center"></el-table-column>
+ </el-table>
+ </div>
+ <div class="main_footer">
+ <el-pagination
+ background
+ @current-change="changePageNum"
+ @size-change="changePageSize"
+ :current-page="pageNum"
+ :page-sizes="[10, 20, 50, 100]"
+ :page-size="pageSize"
+ layout="total, sizes, prev, pager, next, jumper"
+ :total="total">
+ </el-pagination>
+ </div>
+ <el-dialog
+ class="prop_dialog"
+ title="短信设置"
+ :visible.sync="asyncConfig"
+ width="35%">
+ <el-form ref="form" :model="formConfig" :rules="rulesConfig" label-width="auto" class="rule_form">
+ <el-form-item label="短信内容:" prop="content">
+ <el-input
+ type="textarea"
+ v-model="formConfig.content"
+ clearable
+ placeholder="请输入短信息内容">
+ </el-input>
+ </el-form-item>
+ <el-form-item label="备注:">
+ <el-input
+ type="textarea"
+ v-model="formConfig.remark"
+ clearable
+ placeholder="请输入短信息内容">
+ </el-input>
+ </el-form-item>
+ </el-form>
+ <div slot="footer">
+ <el-button @click="asyncConfig = false">取 消</el-button>
+ <el-button class="submit_btn" @click="asyncConfig = false">提 交</el-button>
+ </div>
+ </el-dialog>
+ </div>
+</template>
+
+<script>
+import { buttonPinia } from '../../pinia';
+ export default {
+ data() {
+ return {
+ timeData: '',
+ messageId: '',
+ messageData: [],
+ total: 0,
+ pageNum: 1,
+ pageSize: 10,
+ loading: false,
+ wisdomVideoList: [],
+ asyncConfig: false,
+ formConfig: {},
+ rulesConfig: {
+ content: [{
+ required: true,
+ message: '请输入短信信息',
+ trigger: 'blur'
+ }]
+ },
+ personnelData: [],
+ }
+ },
+ mounted() {
+ this.searchWisdomVideoList(true);
+ this.getAllWaringData();
+ },
+ methods: {
+ // 获取预警消息类型
+ async getAllWaringData() {
+ const { data } = await this.$api.Safety.getAllWaringData();
+ this.messageData = data;
+ },
+ // 查询智慧监控信息
+ searchWisdomVideoList(bol) {
+ if(bol) {
+ this.pageNum = 1;
+ }
+ this.loading = true;
+ this.wisdomVideoList = [];
+ this.$api.Safety.searchWisdomVideoList({
+ pageNum: this.pageNum,
+ pageSize: this.pageSize,
+ type: this.messageId,
+ strTime: this.timeData ? this.timeData[0] : '',
+ endTime: this.timeData ? this.timeData[1] : ''
+ }).then((res) => {
+ if(res.success) {
+ this.total = res.data.total;
+ this.wisdomVideoList = res.data.list;
+ }
+ this.loading = false;
+ }).catch(() => {
+ this.loading = false;
+ })
+ },
+ // 判断按钮权限信息
+ showButton(str) {
+ const pinia = buttonPinia();
+ return pinia.$state.buttonInfo.includes(str);
+ },
+ // 切换页数
+ changePageNum(page) {
+ this.pageNum = page;
+ this.searchWisdomVideoList();
+ },
+ // 切换每页条数
+ changePageSize(size) {
+ this.pageSize = size;
+ this.searchWisdomVideoList();
+ }
+ },
+ watch: {
+ asyncConfig(bol) {
+ if(!bol) {
+ this.formConfig = {};
+ this.$refs.form.resetFields();
+ }
+ }
+ }
+ }
+</script>
+
+<style lang="scss" scoped>
+ @import '~@/style/layout-main.scss';
+</style>
\ No newline at end of file
--
Gitblit v1.9.3