From 491d524a992817e164ecc6f24a771ab9ce0f0379 Mon Sep 17 00:00:00 2001
From: fuliqi <fuliqi@qq.com>
Date: 星期三, 08 一月 2025 14:41:21 +0800
Subject: [PATCH] 工单:故障类型图像质量合并
---
ycl-server/src/main/resources/mapper/zgyw/YwUnitMapper.xml | 7 +
ycl-server/src/main/java/com/ycl/platform/service/impl/YwUnitServiceImpl.java | 15 +++++
ycl-server/src/main/resources/mapper/zgyw/WorkOrderMapper.xml | 14 +++-
ycl-pojo/src/main/java/com/ycl/platform/domain/query/DistributeWorkOrderQuery.java | 1
ycl-pojo/src/main/java/com/ycl/platform/domain/query/WorkOrderExportQuery.java | 1
ycl-server/src/main/java/com/ycl/platform/service/impl/WorkOrderServiceImpl.java | 64 +++++++++++++++-----
ycl-pojo/src/main/java/com/ycl/platform/domain/query/WorkOrderQuery.java | 1
ycl-common/src/main/java/enumeration/ErrorType.java | 46 ++++++++-------
8 files changed, 105 insertions(+), 44 deletions(-)
diff --git a/ycl-common/src/main/java/enumeration/ErrorType.java b/ycl-common/src/main/java/enumeration/ErrorType.java
index 51d3f61..0fff84a 100644
--- a/ycl-common/src/main/java/enumeration/ErrorType.java
+++ b/ycl-common/src/main/java/enumeration/ErrorType.java
@@ -17,20 +17,20 @@
//閫氱敤
// PLATFORM_OFFLINE("PLATFORMOFFLINE", "骞冲彴绂荤嚎","COMMON"),
// SEVER_INTERRUPT("SEVERINTERRUPT", "鏈嶅姟涓柇","COMMON"),
- DEVICE_OFFLINE("DEVICEOFFLINE", "璁惧绂荤嚎","COMMON"),
- POINT_INFO_ERROR("POINTINFOERRO", "鐐逛綅淇℃伅閿欒","COMMON"),
+ DEVICE_OFFLINE("DEVICEOFFLINE", "璁惧绂荤嚎","COMMON",false),
+ POINT_INFO_ERROR("POINTINFOERRO", "鐐逛綅淇℃伅閿欒","COMMON",false),
//瑙嗛
- CLOCK_SKEW("CLOCKSKEW", "鏃堕挓鍋忓樊","VIDEO"),
- SIGNAL_LOSS("SIGNALMISS", "淇″彿缂哄け","VIDEO"),
- SCREEN_COLOR_DEVIATION("SCREENCOLOR", "鐢婚潰鍋忚壊","VIDEO"),
- SNOW_STORM("SCREENSNOW", "闆姳骞叉壈","VIDEO"),
- STRIPE_INTERFERENCE("SCREENSTRIP", "鏉$汗骞叉壈","VIDEO"),
- SCREEN_OCCLUSION("SCREENSHADE", "鐢婚潰閬尅","VIDEO"),
- ABNORMAL_CLARITY("SCREENBLUR", "娓呮櫚搴﹀紓甯�","VIDEO"),
+ CLOCK_SKEW("CLOCKSKEW", "鏃堕挓鍋忓樊","VIDEO",true),
+ SIGNAL_LOSS("SIGNALMISS", "淇″彿缂哄け","VIDEO",true),
+ SCREEN_COLOR_DEVIATION("SCREENCOLOR", "鐢婚潰鍋忚壊","VIDEO",true),
+ SNOW_STORM("SCREENSNOW", "闆姳骞叉壈","VIDEO",true),
+ STRIPE_INTERFERENCE("SCREENSTRIP", "鏉$汗骞叉壈","VIDEO",true),
+ SCREEN_OCCLUSION("SCREENSHADE", "鐢婚潰閬尅","VIDEO",true),
+ ABNORMAL_CLARITY("SCREENBLUR", "娓呮櫚搴﹀紓甯�","VIDEO",true),
//鏂板鐨勫浘鍍忓紓甯革紝鍚堝苟鍓嶉潰鎵�鏈夊紓甯哥被鍨�
- ABNORMAL_PIC("ABNORMALPIC", "鍥惧儚寮傚父","VIDEO"),
+ ABNORMAL_PIC("ABNORMALPIC", "鍥惧儚寮傚父","VIDEO",false),
// ABNORMAL_BRIGHTNESS("SCREENLIGHT", "浜害寮傚父","VIDEO"),
- OSD_ERROR("OSD", "osd寮傚父","VIDEO"),
+ OSD_ERROR("OSD", "osd寮傚父","VIDEO",false),
// VIDEO_LOSS("VIDEOMISS", "褰曞儚缂哄け","VIDEO"),
// VIDEO_NONE("NOVIDEO", "鏃犲綍鍍�","VIDEO"),
// POINT_INFO_MISS("POINTINFOMISS", "鐐逛綅淇℃伅涓嶅叏","COMMON"),
@@ -42,16 +42,16 @@
// 闃堝��
//杞﹁締浜鸿劯閫氱敤
- CLOCK_RIGHT("CLOCK_RIGHT", "鏃堕挓鍑嗙‘鐜囧紓甯�","CARORFACE"),
- LONG_DAY_NO_DATA("LONG_DAY_NO_DATA", "闀挎椂闂存棤鏁版嵁","CARORFACE"),
- DATA_TIMELY_ERROR("DATA_TIMELY_ERROR", "鏁版嵁鍙婃椂鎬у紓甯�","CARORFACE"),
- NOT_UNIQUE_DATA_VOLUME("NOT_UNIQUE_DATA_VOLUME", "涓嶅敮涓�鏁版嵁閲忓紓甯�","CARORFACE"),
- UNRECOGNIZED_DAY_VOLUME("UNRECOGNIZED_DAY_VOLUME", "鐧藉ぉ鏈瘑鍒暟鎹噺寮傚父","CARORFACE"),
+ CLOCK_RIGHT("CLOCK_RIGHT", "鏃堕挓鍑嗙‘鐜囧紓甯�","CARORFACE",false),
+ LONG_DAY_NO_DATA("LONG_DAY_NO_DATA", "闀挎椂闂存棤鏁版嵁","CARORFACE",false),
+ DATA_TIMELY_ERROR("DATA_TIMELY_ERROR", "鏁版嵁鍙婃椂鎬у紓甯�","CARORFACE",false),
+ NOT_UNIQUE_DATA_VOLUME("NOT_UNIQUE_DATA_VOLUME", "涓嶅敮涓�鏁版嵁閲忓紓甯�","CARORFACE",false),
+ UNRECOGNIZED_DAY_VOLUME("UNRECOGNIZED_DAY_VOLUME", "鐧藉ぉ鏈瘑鍒暟鎹噺寮傚父","CARORFACE",false),
//杞﹁締
- CAR_SIX("CAR_SIX", "杞﹁締鍏」灞炴�т笉瀹屾暣","CAR"),
+ CAR_SIX("CAR_SIX", "杞﹁締鍏」灞炴�т笉瀹屾暣","CAR",false),
//浜鸿劯
- MODELING_FAIL("MODELING_FAIL", "寤烘ā澶辫触鐜囧紓甯�","FACE"),
- FACE_LOW("FACE_LOW", "浜鸿劯浣庡垎鐜囧紓甯�","FACE"),
+ MODELING_FAIL("MODELING_FAIL", "寤烘ā澶辫触鐜囧紓甯�","FACE",false),
+ FACE_LOW("FACE_LOW", "浜鸿劯浣庡垎鐜囧紓甯�","FACE",false),
;
private String value;
@@ -59,17 +59,21 @@
private String desc;
private String category;
+ //false琛ㄧず鍦ㄤ娇鐢紝true琛ㄧず鍙仛缈昏瘧涓嶅仛杩斿洖瀛楀吀
+ private Boolean deleted;
- ErrorType(String value, String desc,String category) {
+ ErrorType(String value, String desc,String category,Boolean deleted) {
this.value = value;
this.desc = desc;
this.category = category;
+ this.deleted = deleted;
+
}
// 鏍规嵁鍒嗙被鑾峰彇閿欒绫诲瀷鍒楄〃
public static List<ErrorType> getErrorTypesByCategory(String category) {
return Arrays.stream(values())
- .filter(errorType -> errorType.getCategory() == category)
+ .filter(errorType -> errorType.getCategory() == category && !errorType.getDeleted())
.collect(Collectors.toList());
}
diff --git a/ycl-pojo/src/main/java/com/ycl/platform/domain/query/DistributeWorkOrderQuery.java b/ycl-pojo/src/main/java/com/ycl/platform/domain/query/DistributeWorkOrderQuery.java
index 222727f..80c1b08 100644
--- a/ycl-pojo/src/main/java/com/ycl/platform/domain/query/DistributeWorkOrderQuery.java
+++ b/ycl-pojo/src/main/java/com/ycl/platform/domain/query/DistributeWorkOrderQuery.java
@@ -31,6 +31,7 @@
* 鏁呴殰绫诲瀷
*/
private String errorType;
+ private List<String> errorTypeList;
/**
* 宸ュ崟id
diff --git a/ycl-pojo/src/main/java/com/ycl/platform/domain/query/WorkOrderExportQuery.java b/ycl-pojo/src/main/java/com/ycl/platform/domain/query/WorkOrderExportQuery.java
index 1475c1d..d0a02df 100644
--- a/ycl-pojo/src/main/java/com/ycl/platform/domain/query/WorkOrderExportQuery.java
+++ b/ycl-pojo/src/main/java/com/ycl/platform/domain/query/WorkOrderExportQuery.java
@@ -39,6 +39,7 @@
* 鏁呴殰绫诲瀷
*/
private String errorType;
+ private List<String> errorTypeList;
/**
* 鐘舵��
diff --git a/ycl-pojo/src/main/java/com/ycl/platform/domain/query/WorkOrderQuery.java b/ycl-pojo/src/main/java/com/ycl/platform/domain/query/WorkOrderQuery.java
index d1fa4cf..f1c0a34 100644
--- a/ycl-pojo/src/main/java/com/ycl/platform/domain/query/WorkOrderQuery.java
+++ b/ycl-pojo/src/main/java/com/ycl/platform/domain/query/WorkOrderQuery.java
@@ -43,6 +43,7 @@
* 鏁呴殰绫诲瀷
*/
private String errorType;
+ private List<String> errorTypeList;
/**
* 鏁呴殰绫诲瀷
*/
diff --git a/ycl-server/src/main/java/com/ycl/platform/service/impl/WorkOrderServiceImpl.java b/ycl-server/src/main/java/com/ycl/platform/service/impl/WorkOrderServiceImpl.java
index 4e40269..8f380c1 100644
--- a/ycl-server/src/main/java/com/ycl/platform/service/impl/WorkOrderServiceImpl.java
+++ b/ycl-server/src/main/java/com/ycl/platform/service/impl/WorkOrderServiceImpl.java
@@ -348,15 +348,15 @@
List<WorkOrderYwConditionRecord> willAddMsg = new ArrayList<>(48);
// 鍗冲皢瑕佹坊鍔犵殑閿欒绫诲瀷
List<WorkOrderErrorType> willAddErrorType = new ArrayList<>(96);
- if(!CollectionUtils.isEmpty(inDatabaseWorkOrderList)){
+ if (!CollectionUtils.isEmpty(inDatabaseWorkOrderList)) {
WorkOrder workOrderInDB = inDatabaseWorkOrderList.get(0);
List<String> errorNameList = workOrderInDB.getErrorTypeList();
List<String> errorTypes = entity.getErrorTypeList();
- if(errorNameList.containsAll(errorTypes)){
+ if (errorNameList.containsAll(errorTypes)) {
return Result.error("宸叉湁鍚岀鏁呴殰绫诲瀷宸ュ崟");
- }else {
+ } else {
for (String errorType : errorTypes) {
- if(!errorNameList.contains(errorType)){
+ if (!errorNameList.contains(errorType)) {
// 閿欒绫诲瀷涓嶄竴鏍凤紝灏辨柊澧炰竴涓敊璇被鍨嬶紝骞朵笖閲嶇疆宸ュ崟鐘舵�佷负寰呭鐞�
WorkOrderErrorType workOrderErrorType = new WorkOrderErrorType();
workOrderErrorType.setWorkOrderNo(workOrderInDB.getWorkOrderNo());
@@ -394,7 +394,7 @@
}
}
return Result.ok("娣诲姞鎴愬姛");
- }else {
+ } else {
//鏁版嵁搴撴病鏈夋鍦ㄨ繘琛岀殑宸ュ崟
//鏌edis浠婃棩宸ュ崟鏁伴噺
int workOrderNum = 0;
@@ -421,7 +421,7 @@
workOrderErrorTypeService.getBaseMapper().insertWorkOrderErrorTypeList(workOrderErrorTypes);
if (baseMapper.insert(entity) > 0) {
return Result.ok("娣诲姞鎴愬姛");
- }else {
+ } else {
return Result.error("娣诲姞澶辫触");
}
}
@@ -660,6 +660,20 @@
}
if (query.getStart() != null) query.setStart(DateUtils.getDayStart(query.getStart()));
if (query.getEnd() != null) query.setEnd(DateUtils.getDayEnd(query.getEnd()));
+ if (query.getErrorType() != null) {
+ List<String> errorTypeList = new ArrayList<>();
+ errorTypeList.add(query.getErrorType());
+ if (ErrorType.ABNORMAL_PIC.getValue().equals(query.getErrorType())) {
+ //List娣诲姞涔嬪墠鍑犵宸ュ崟绫诲瀷
+ errorTypeList.add(ErrorType.SIGNAL_LOSS.getValue());
+ errorTypeList.add(ErrorType.SCREEN_COLOR_DEVIATION.getValue());
+ errorTypeList.add(ErrorType.SNOW_STORM.getValue());
+ errorTypeList.add(ErrorType.STRIPE_INTERFERENCE.getValue());
+ errorTypeList.add(ErrorType.SCREEN_OCCLUSION.getValue());
+ errorTypeList.add(ErrorType.ABNORMAL_CLARITY.getValue());
+ }
+ query.setErrorTypeList(errorTypeList);
+ }
baseMapper.page(page, query);
if (!CollectionUtils.isEmpty(page.getRecords())) {
page.getRecords().stream().forEach(item -> {
@@ -1119,6 +1133,7 @@
/**
* 宸ュ崟瀵煎嚭鐨勯�昏緫
* 鏍囩锛氬悓涓�涓猧p鏍囩鍚堝湪涓�璧凤紝閽堝绂荤嚎宸ュ崟锛坕p鐩稿悓灏变笉浼氱敓鎴愬伐鍗曪級锛屾柟渚胯繍缁村鐞�
+ *
* @param query
* @return
*/
@@ -1129,8 +1144,22 @@
}
if (query.getStart() != null) query.setStart(query.getStart() + " 00:00:00");
if (query.getEnd() != null) query.setEnd(query.getEnd() + " 23:59:59");
+ if (query.getErrorType() != null) {
+ List<String> errorTypeList = new ArrayList<>();
+ errorTypeList.add(query.getErrorType());
+ if (ErrorType.ABNORMAL_PIC.getValue().equals(query.getErrorType())) {
+ //List娣诲姞涔嬪墠鍑犵宸ュ崟绫诲瀷
+ errorTypeList.add(ErrorType.SIGNAL_LOSS.getValue());
+ errorTypeList.add(ErrorType.SCREEN_COLOR_DEVIATION.getValue());
+ errorTypeList.add(ErrorType.SNOW_STORM.getValue());
+ errorTypeList.add(ErrorType.STRIPE_INTERFERENCE.getValue());
+ errorTypeList.add(ErrorType.SCREEN_OCCLUSION.getValue());
+ errorTypeList.add(ErrorType.ABNORMAL_CLARITY.getValue());
+ }
+ query.setErrorTypeList(errorTypeList);
+ }
List<WorkOrderVO> export = baseMapper.export(query);
- if(CollectionUtils.isEmpty(export)) return new ArrayList<WorkOrderVO>();
+ if (CollectionUtils.isEmpty(export)) return new ArrayList<WorkOrderVO>();
List<String> ips = export.stream().map(WorkOrderVO::getIp).collect(Collectors.toList());
//鏌ュ嚭鐩稿悓ip鐨勮澶囥�佸苟鏌ュ嚭鏍囩
List<TMonitorResult> monitorVOS = monitorMapper.getByIp(ips);
@@ -1145,7 +1174,7 @@
tMonitorResult.setDynamicColumnList(map.get(pointId));
}
}
- export.forEach(result->{
+ export.forEach(result -> {
StringBuilder dynamicTag = new StringBuilder("");
Boolean provinceTagVideo = false;
Boolean provinceTagCar = false;
@@ -1156,13 +1185,13 @@
List<String> dynamicTags = new ArrayList<>();
for (TMonitorResult tagVO : monitorVOS) {
//鐪佸巺鏍囩閫氳繃ip鍒ゆ柇 (杩愮淮瑕佹眰)
- if(tagVO.getIp().equals(result.getIp())){
- if(tagVO.getProvinceTagVideo()) provinceTagVideo = true;
- if(tagVO.getProvinceTagCar()) provinceTagCar = true;
- if(tagVO.getProvinceTagFace()) provinceTagFace = true;
- if(tagVO.getImportantTag()) importantTag = true;
- if(tagVO.getImportantCommandImageTag()) importantCommandImageTag = true;
- if(tagVO.getDeptTag()) deptTag = true;
+ if (tagVO.getIp().equals(result.getIp())) {
+ if (tagVO.getProvinceTagVideo()) provinceTagVideo = true;
+ if (tagVO.getProvinceTagCar()) provinceTagCar = true;
+ if (tagVO.getProvinceTagFace()) provinceTagFace = true;
+ if (tagVO.getImportantTag()) importantTag = true;
+ if (tagVO.getImportantCommandImageTag()) importantCommandImageTag = true;
+ if (tagVO.getDeptTag()) deptTag = true;
}
//鍔ㄦ�佸垪鏍规嵁鍥芥爣鍒ゆ柇
if (tagVO.getNo().equals(result.getSerialNumber())) {
@@ -1170,7 +1199,8 @@
if (!CollectionUtils.isEmpty(tagVO.getDynamicColumnList())) {
List<DynamicColumnVO> dynamicColumnList = tagVO.getDynamicColumnList();
for (DynamicColumnVO dynamicColumnVO : dynamicColumnList) {
- if(!dynamicTags.contains(dynamicColumnVO.getColumnValue())) dynamicTags.add(dynamicColumnVO.getColumnValue());
+ if (!dynamicTags.contains(dynamicColumnVO.getColumnValue()))
+ dynamicTags.add(dynamicColumnVO.getColumnValue());
}
}
}
@@ -1178,7 +1208,7 @@
for (String tag : dynamicTags) {
dynamicTag.append(tag).append("銆�");
}
- StringBuilder tag = new StringBuilder("" + (provinceTagVideo ? "鐪佸巺瑙嗛銆�" : "")+(provinceTagCar ? "鐪佸巺杞﹁締銆�" : "")+(provinceTagFace ? "鐪佸巺浜鸿劯銆�" : "") + (importantTag ? "閲嶇偣鐐逛綅銆�" : "") + (importantCommandImageTag ? "閲嶇偣鎸囨尌鍥惧儚銆�" : "") + (deptTag ? "閮ㄧ骇銆�" : ""));
+ StringBuilder tag = new StringBuilder("" + (provinceTagVideo ? "鐪佸巺瑙嗛銆�" : "") + (provinceTagCar ? "鐪佸巺杞﹁締銆�" : "") + (provinceTagFace ? "鐪佸巺浜鸿劯銆�" : "") + (importantTag ? "閲嶇偣鐐逛綅銆�" : "") + (importantCommandImageTag ? "閲嶇偣鎸囨尌鍥惧儚銆�" : "") + (deptTag ? "閮ㄧ骇銆�" : ""));
if (tag.toString().endsWith("銆�")) {
tag = new StringBuilder(tag.substring(0, tag.length() - 1));
}
diff --git a/ycl-server/src/main/java/com/ycl/platform/service/impl/YwUnitServiceImpl.java b/ycl-server/src/main/java/com/ycl/platform/service/impl/YwUnitServiceImpl.java
index 76da7e9..56546b7 100644
--- a/ycl-server/src/main/java/com/ycl/platform/service/impl/YwUnitServiceImpl.java
+++ b/ycl-server/src/main/java/com/ycl/platform/service/impl/YwUnitServiceImpl.java
@@ -23,6 +23,7 @@
import com.ycl.system.page.PageUtil;
import com.ycl.utils.DateUtils;
import com.ycl.utils.SecurityUtils;
+import enumeration.ErrorType;
import lombok.RequiredArgsConstructor;
import org.apache.ibatis.annotations.Param;
import org.springframework.beans.BeanUtils;
@@ -222,6 +223,20 @@
if(query.getEnd()!=null) {
query.setEnd(DateUtils.getDayEnd(query.getEnd()));
}
+ if (query.getErrorType() != null) {
+ List<String> errorTypeList = new ArrayList<>();
+ errorTypeList.add(query.getErrorType());
+ if (ErrorType.ABNORMAL_PIC.getValue().equals(query.getErrorType())) {
+ //List娣诲姞涔嬪墠鍑犵宸ュ崟绫诲瀷
+ errorTypeList.add(ErrorType.SIGNAL_LOSS.getValue());
+ errorTypeList.add(ErrorType.SCREEN_COLOR_DEVIATION.getValue());
+ errorTypeList.add(ErrorType.SNOW_STORM.getValue());
+ errorTypeList.add(ErrorType.STRIPE_INTERFERENCE.getValue());
+ errorTypeList.add(ErrorType.SCREEN_OCCLUSION.getValue());
+ errorTypeList.add(ErrorType.ABNORMAL_CLARITY.getValue());
+ }
+ query.setErrorTypeList(errorTypeList);
+ }
List<YwUnit> ywUnits = baseMapper.selectList(null);
List<YwUnitVO> lists = ywUnits.stream().map(item -> {
YwUnitVO vo = new YwUnitVO();
diff --git a/ycl-server/src/main/resources/mapper/zgyw/WorkOrderMapper.xml b/ycl-server/src/main/resources/mapper/zgyw/WorkOrderMapper.xml
index 36a5c80..d0ecfcf 100644
--- a/ycl-server/src/main/resources/mapper/zgyw/WorkOrderMapper.xml
+++ b/ycl-server/src/main/resources/mapper/zgyw/WorkOrderMapper.xml
@@ -68,12 +68,15 @@
<if test="query.unitId != null">
AND wo.unit_id = #{query.unitId}
</if>
- <if test="query.errorType != null and query.errorType != ''">
+ <if test="query.errorTypeList != null and query.errorTypeList.size>0">
AND (EXISTS (
SELECT 1
FROM t_work_order_error_type twoet
WHERE twoet.work_order_no = wo.work_order_no
- AND twoet.error_name = #{query.errorType}
+ AND twoet.error_name in
+ <foreach collection="query.errorTypeList" open="(" close=")" separator="," item="errorType">
+ #{errorType}
+ </foreach>
))
</if>
<if test="query.keyword != null and query.keyword != ''">
@@ -142,12 +145,15 @@
<if test="query.start != null and query.end != null">
AND wo.create_time BETWEEN #{query.start} AND #{query.end}
</if>
- <if test="query.errorType != null and query.errorType !='' ">
+ <if test="query.errorTypeList != null and query.errorTypeList.size>0">
AND (EXISTS (
SELECT 1
FROM t_work_order_error_type twoet
WHERE twoet.work_order_no = wo.work_order_no
- AND twoet.error_name = #{query.errorType}
+ AND twoet.error_name in
+ <foreach collection="query.errorTypeList" open="(" close=")" separator="," item="errorType">
+ #{errorType}
+ </foreach>
))
</if>
GROUP BY
diff --git a/ycl-server/src/main/resources/mapper/zgyw/YwUnitMapper.xml b/ycl-server/src/main/resources/mapper/zgyw/YwUnitMapper.xml
index 6f84271..23545c9 100644
--- a/ycl-server/src/main/resources/mapper/zgyw/YwUnitMapper.xml
+++ b/ycl-server/src/main/resources/mapper/zgyw/YwUnitMapper.xml
@@ -57,12 +57,15 @@
<if test="query.start != null and query.end != null">
AND wo.create_time BETWEEN #{query.start} AND #{query.end}
</if>
- <if test="query.errorType != null and query.errorType !='' ">
+ <if test="query.errorTypeList != null and query.errorTypeList.size>0">
AND (EXISTS (
SELECT 1
FROM t_work_order_error_type twoet
WHERE twoet.work_order_no = wo.work_order_no
- AND twoet.error_name = #{query.errorType}
+ AND twoet.error_name in
+ <foreach collection="query.errorTypeList" open="(" close=")" separator="," item="errorType">
+ #{errorType}
+ </foreach>
))
</if>
</select>
--
Gitblit v1.8.0