AE86 4 tahun lalu
induk
melakukan
782aedf5c2

+ 7 - 2
dbsyncer-biz/src/main/java/org/dbsyncer/biz/MonitorService.java

@@ -1,9 +1,8 @@
 package org.dbsyncer.biz;
 
-import org.dbsyncer.biz.vo.DataVo;
-import org.dbsyncer.biz.vo.LogVo;
 import org.dbsyncer.biz.vo.MetaVo;
 import org.dbsyncer.common.model.Paging;
+import org.dbsyncer.storage.enums.StorageDataStatusEnum;
 
 import java.util.List;
 import java.util.Map;
@@ -67,4 +66,10 @@ public interface MonitorService {
      */
     String clearLog();
 
+    /**
+     * 获取所有同步数据状态类型
+     *
+     * @return
+     */
+    List<StorageDataStatusEnum> getStorageDataStatusEnumAll();
 }

+ 9 - 0
dbsyncer-biz/src/main/java/org/dbsyncer/biz/impl/MonitorServiceImpl.java

@@ -15,6 +15,7 @@ import org.dbsyncer.parser.enums.ModelEnum;
 import org.dbsyncer.parser.model.Mapping;
 import org.dbsyncer.parser.model.Meta;
 import org.dbsyncer.storage.constant.ConfigConstant;
+import org.dbsyncer.storage.enums.StorageDataStatusEnum;
 import org.dbsyncer.storage.query.Query;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -89,6 +90,9 @@ public class MonitorServiceImpl implements MonitorService {
         if (StringUtils.isNotBlank(error)) {
             query.put(ConfigConstant.DATA_ERROR, error, true);
         }
+        // 查询是否成功, 默认查询失败
+        String success = params.get(ConfigConstant.DATA_SUCCESS);
+        query.put(ConfigConstant.DATA_SUCCESS, StringUtils.isNotBlank(success) ? success : StorageDataStatusEnum.FAIL.getCode());
 
         Paging paging = manager.queryData(query, id);
         List<Map> data = (List<Map>) paging.getData();
@@ -129,6 +133,11 @@ public class MonitorServiceImpl implements MonitorService {
         return "清空日志成功";
     }
 
+    @Override
+    public List<StorageDataStatusEnum> getStorageDataStatusEnumAll() {
+        return manager.getStorageDataStatusEnumAll();
+    }
+
     private MetaVo convertMeta2Vo(Meta meta) {
         Mapping mapping = manager.getMapping(meta.getMappingId());
         Assert.notNull(mapping, "驱动不存在.");

+ 4 - 0
dbsyncer-manager/src/main/java/org/dbsyncer/manager/Manager.java

@@ -10,6 +10,7 @@ import org.dbsyncer.listener.enums.QuartzFilterEnum;
 import org.dbsyncer.parser.enums.ConvertEnum;
 import org.dbsyncer.parser.model.*;
 import org.dbsyncer.plugin.config.Plugin;
+import org.dbsyncer.storage.enums.StorageDataStatusEnum;
 import org.dbsyncer.storage.query.Query;
 
 import java.util.List;
@@ -114,6 +115,9 @@ public interface Manager extends Executor {
     // ConvertEnum
     List<ConvertEnum> getConvertEnumAll();
 
+    // StorageDataStatusEnum
+    List<StorageDataStatusEnum> getStorageDataStatusEnumAll();
+
     // Plugin
     List<Plugin> getPluginAll();
 

+ 6 - 0
dbsyncer-manager/src/main/java/org/dbsyncer/manager/ManagerFactory.java

@@ -22,6 +22,7 @@ import org.dbsyncer.parser.model.*;
 import org.dbsyncer.plugin.PluginFactory;
 import org.dbsyncer.plugin.config.Plugin;
 import org.dbsyncer.storage.constant.ConfigConstant;
+import org.dbsyncer.storage.enums.StorageDataStatusEnum;
 import org.dbsyncer.storage.enums.StorageEnum;
 import org.dbsyncer.storage.query.Query;
 import org.slf4j.Logger;
@@ -284,6 +285,11 @@ public class ManagerFactory implements Manager, ApplicationContextAware, Applica
         return parser.getConvertEnumAll();
     }
 
+    @Override
+    public List<StorageDataStatusEnum> getStorageDataStatusEnumAll() {
+        return parser.getStorageDataStatusEnumAll();
+    }
+
     @Override
     public List<Plugin> getPluginAll() {
         return pluginFactory.getPluginAll();

+ 8 - 0
dbsyncer-parser/src/main/java/org/dbsyncer/parser/Parser.java

@@ -13,6 +13,7 @@ import org.dbsyncer.parser.model.Connector;
 import org.dbsyncer.parser.model.Mapping;
 import org.dbsyncer.parser.model.TableGroup;
 import org.dbsyncer.parser.strategy.PrimaryKeyMappingStrategy;
+import org.dbsyncer.storage.enums.StorageDataStatusEnum;
 
 import java.util.List;
 import java.util.Map;
@@ -120,6 +121,13 @@ public interface Parser {
      */
     List<ConvertEnum> getConvertEnumAll();
 
+    /**
+     * 获取所有同步数据状态类型
+     *
+     * @return
+     */
+    List<StorageDataStatusEnum> getStorageDataStatusEnumAll();
+
     /**
      * 全量同步
      *

+ 6 - 0
dbsyncer-parser/src/main/java/org/dbsyncer/parser/ParserFactory.java

@@ -23,6 +23,7 @@ import org.dbsyncer.parser.strategy.PrimaryKeyMappingStrategy;
 import org.dbsyncer.parser.util.ConvertUtil;
 import org.dbsyncer.parser.util.PickerUtil;
 import org.dbsyncer.plugin.PluginFactory;
+import org.dbsyncer.storage.enums.StorageDataStatusEnum;
 import org.json.JSONException;
 import org.json.JSONObject;
 import org.slf4j.Logger;
@@ -170,6 +171,11 @@ public class ParserFactory implements Parser {
         return Arrays.asList(ConvertEnum.values());
     }
 
+    @Override
+    public List<StorageDataStatusEnum> getStorageDataStatusEnumAll() {
+        return Arrays.asList(StorageDataStatusEnum.values());
+    }
+
     @Override
     public void execute(Task task, Mapping mapping, TableGroup tableGroup) {
         final String metaId = task.getId();

+ 2 - 1
dbsyncer-parser/src/main/java/org/dbsyncer/parser/flush/FlushServiceImpl.java

@@ -4,6 +4,7 @@ import org.dbsyncer.common.util.JsonUtil;
 import org.dbsyncer.storage.SnowflakeIdWorker;
 import org.dbsyncer.storage.StorageService;
 import org.dbsyncer.storage.constant.ConfigConstant;
+import org.dbsyncer.storage.enums.StorageDataStatusEnum;
 import org.dbsyncer.storage.enums.StorageEnum;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -50,7 +51,7 @@ public class FlushServiceImpl implements FlushService {
         List<Map> list = data.parallelStream().map(r -> {
             Map<String, Object> params = new HashMap();
             params.put(ConfigConstant.CONFIG_MODEL_ID, String.valueOf(snowflakeIdWorker.nextId()));
-            params.put(ConfigConstant.DATA_SUCCESS, success ? 1 : 0);
+            params.put(ConfigConstant.DATA_SUCCESS, success ? StorageDataStatusEnum.SUCCESS.getValue() : StorageDataStatusEnum.FAIL.getValue());
             params.put(ConfigConstant.DATA_EVENT, event);
             params.put(ConfigConstant.DATA_ERROR, error);
             params.put(ConfigConstant.CONFIG_MODEL_JSON, JsonUtil.objToJson(r));

+ 42 - 0
dbsyncer-storage/src/main/java/org/dbsyncer/storage/enums/StorageDataStatusEnum.java

@@ -0,0 +1,42 @@
+package org.dbsyncer.storage.enums;
+
+/**
+ * @author AE86
+ * @version 1.0.0
+ * @date 2021/3/10 20:31
+ */
+public enum StorageDataStatusEnum {
+
+    /**
+     * 失败
+     */
+    FAIL(0, "0", "失败"),
+    /**
+     * 成功
+     */
+    SUCCESS(1, "1", "成功");
+
+    private Integer value;
+
+    private String code;
+
+    private String message;
+
+    StorageDataStatusEnum(Integer value, String code, String message) {
+        this.value = value;
+        this.code = code;
+        this.message = message;
+    }
+
+    public Integer getValue() {
+        return value;
+    }
+
+    public String getCode() {
+        return code;
+    }
+
+    public String getMessage() {
+        return message;
+    }
+}

+ 1 - 0
dbsyncer-web/src/main/java/org/dbsyncer/web/controller/monitor/MonitorController.java

@@ -28,6 +28,7 @@ public class MonitorController extends BaseController {
         model.put("threadInfo", monitorService.getThreadInfo());
         model.put("metaId", monitorService.getDefaultMetaId(params));
         model.put("meta", monitorService.getMetaAll());
+        model.put("storageDataStatus", monitorService.getStorageDataStatusEnumAll());
         model.put("pagingData", monitorService.queryData(params));
         model.put("pagingLog", monitorService.queryLog(params));
         return "monitor/monitor.html";

+ 8 - 2
dbsyncer-web/src/main/resources/public/monitor/monitor.html

@@ -12,17 +12,23 @@
                 <div class="form-group">
                     <div class="col-md-3">
                         <!-- 驱动下拉 -->
-                        <select id="metaData" name="metaData" class="form-control select-control">
+                        <select id="searchMetaData" class="form-control select-control">
                             <option th:each="m,s:${meta}" th:value="${m?.id}" th:text="${m?.mappingName} +' (' + ${m?.model} +')'" th:selected="${m?.id eq metaId}"/>
                         </select>
                     </div>
+                    <div class="col-md-1">
+                        <!-- 是否包含成功 -->
+                        <select id="searchDataSuccess" class="form-control select-control">
+                            <option th:value="${c?.value}" th:text="${c?.message}" th:each="c,state : ${storageDataStatus}"/>
+                        </select>
+                    </div>
                     <div class="col-sm-4">
                         <input id="searchDataKeyword" class="form-control" type="text" maxlength="32" placeholder="请输入异常关键字(最多32个字)." />
                     </div>
                     <div class="col-md-1">
                         <button id="queryDataBtn" type="button" class="btn btn-primary">查询数据</button>
                     </div>
-                    <div class="col-md-4 text-right">
+                    <div class="col-md-3 text-right">
                         <button th:id="${metaId}" type="button" class="btn btn-default clearDataBtn">清空数据</button>
                     </div>
                 </div>

+ 12 - 6
dbsyncer-web/src/main/resources/static/js/monitor/index.js

@@ -86,8 +86,9 @@ function showMore($this, $url, $params, $call){
 function bindQueryDataEvent() {
     $("#queryDataBtn").click(function () {
         var keyword = $("#searchDataKeyword").val();
-        var id = $("select[name='metaData']").select2("val");
-        doGetter('/monitor/queryData', {"error": keyword, "id" : id, "pageNum" : 1, "pageSize" : 10}, function (data) {
+        var id = $("#searchMetaData").select2("val");
+        var success = $("#searchDataSuccess").select2("val");
+        doGetter('/monitor/queryData', {"error": keyword, "success": success, "id" : id, "pageNum" : 1, "pageSize" : 10}, function (data) {
             if (data.success == true) {
                 refreshDataList(data.resultValue);
             } else {
@@ -99,8 +100,9 @@ function bindQueryDataEvent() {
 function bindQueryDataMoreEvent() {
     $("#queryDataMore").click(function () {
         var keyword = $("#searchDataKeyword").val();
-        var id = $("select[name='metaData']").select2("val");
-        showMore($(this), '/monitor/queryData', {"error": keyword, "id" : id}, function(resultValue){
+        var id = $("#searchMetaData").select2("val");
+        var success = $("#searchDataSuccess").select2("val");
+        showMore($(this), '/monitor/queryData', {"error": keyword, "success": success, "id" : id}, function(resultValue){
             refreshDataList(resultValue, true)
         });
     });
@@ -365,11 +367,15 @@ $(function () {
         theme: "classic"
     });
 
-    //连接器类型切换事件
-    $("select[name='metaData']").change(function () {
+    // 连接器类型切换事件
+    $("#searchMetaData").change(function () {
         var $id = $(this).val();
         doLoader('/monitor?id=' + $id);
     });
+    // 数据状态切换事件
+    $("#searchDataSuccess").change(function () {
+        $("#queryDataBtn").click();
+    });
 
     bindQueryLogEvent();
     bindQueryLogMoreEvent();