lyq 3 tuần trước cách đây
mục cha
commit
ae003ee1d6

+ 1 - 1
monitor_ui/src/views/business/ai/zeroshot/index.vue

@@ -166,7 +166,7 @@ export default {
     },
     getChannelList() {
       channelTree().then(response => {
-        this.options = this.handleTreeView(response.data).map(channel => {
+        this.options = this.handleTree(response.data).map(channel => {
           if (channel.children && channel.children.length) {
             channel.children = channel.children.map(item => {
               delete item.children

+ 98 - 0
src/main/java/com/sooka/sponest/monitor/ai/controller/AIApi.java

@@ -0,0 +1,98 @@
+package com.sooka.sponest.monitor.ai.controller;
+
+import com.alibaba.fastjson.JSONObject;
+import com.dahuatech.hutool.http.Method;
+import com.dahuatech.icc.exception.ClientException;
+import com.dahuatech.icc.oauth.model.v202010.GeneralResponse;
+import com.dahuatech.icc.oauth.model.v202010.OauthConfigUserPwdInfo;
+import com.dahuatech.icc.oauth.utils.HttpUtils;
+import com.ruoyi.common.core.constant.HttpStatus;
+import com.ruoyi.common.core.utils.StringUtils;
+import com.ruoyi.common.core.web.controller.BaseController;
+import com.ruoyi.common.core.web.domain.AjaxResult;
+import com.ruoyi.common.core.web.page.TableDataInfo;
+import com.sooka.sponest.monitor.ai.domain.BusAiSingleType;
+import com.sooka.sponest.monitor.ai.service.IBusAiAlarmAnalysisService;
+import com.sooka.sponest.monitor.ai.service.IBusAiSingleTypeService;
+import com.sooka.sponest.monitor.ai.util.DHOauthUtil;
+import com.sooka.sponest.monitor.camera.domain.CentermonitorTCamerachannel;
+import com.sooka.sponest.monitor.camera.service.ICentermonitorTCamerachannelService;
+import lombok.Data;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.domain.Page;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.stream.Collectors;
+
+@RestController
+@RequestMapping("/api/ai")
+public class AIApi extends BaseController {
+
+    @Autowired
+    private IBusAiAlarmAnalysisService busAiAlarmAnalysisService;
+
+    @Autowired
+    private IBusAiSingleTypeService busAiSingleTypeService;
+
+    @Autowired
+    private ICentermonitorTCamerachannelService cameraChannelService;
+
+    /**
+     * 查询摄像头-通道树
+     */
+    @GetMapping("/channelTree")
+    public AjaxResult channelTree() {
+        return success(busAiAlarmAnalysisService.channelTree());
+    }
+
+    /**
+     * 查询报警类型列表
+     */
+    @GetMapping("/listAlarmType")
+    public AjaxResult listAlarmType(BusAiSingleType singleType) {
+        singleType.setSyncStatus("1");
+        return success(busAiSingleTypeService.selectBusAiSingleTypeList(singleType));
+    }
+
+    @PostMapping("/zeroshot/list")
+    public TableDataInfo list(@RequestBody QueryParam queryParam) {
+        if (StringUtils.isEmpty(queryParam.getChannelCodeList())) {
+            List<CentermonitorTCamerachannel> channels = cameraChannelService.selectCentermonitorTCamerachannelList(new CentermonitorTCamerachannel());
+            queryParam.setChannelCodeList(channels.stream().map(CentermonitorTCamerachannel::getChannelNum).collect(Collectors.toList()));
+        }
+        OauthConfigUserPwdInfo config = DHOauthUtil.getInstance().getOauthConfig();
+        GeneralResponse response = null;
+        try {
+            response = HttpUtils.executeJson("/evo-apigw/evo-gmai/1.0.0/ai/history/task/page", queryParam, null, Method.POST, config, GeneralResponse.class);
+        } catch (ClientException e) {
+            e.printStackTrace();
+        }
+        JSONObject result = JSONObject.parseObject(response.getResult());
+        if (result.getBoolean("success")) {
+            TableDataInfo rspData = new TableDataInfo();
+            rspData.setCode(HttpStatus.SUCCESS);
+            rspData.setMsg("查询成功");
+            List<JSONObject> list = JSONObject.parseArray(result.getJSONObject("data").getString("data"), JSONObject.class);
+            list.forEach(item -> item.put("picture", DHOauthUtil.getInstance().getImageFullPath(item.getString("cutPictures"))));
+            rspData.setRows(list);
+            rspData.setTotal(result.getJSONObject("data").getLong("total"));
+            return rspData;
+        }
+        return getDataTable(new ArrayList<Page>());
+    }
+
+    @Data
+    public static class QueryParam {
+        private Long page;
+        private Long pageSize;
+        private String startTime;
+        private String endTime;
+        private List<String> channelCodeList;
+        private String alarmType = "";
+        private List<String> statuss;
+        private List<String> customStatuss;
+        private String orgCode = "001";
+    }
+}

+ 4 - 4
src/main/java/com/sooka/sponest/monitor/ai/controller/BusAiAlarmAnalysisController.java

@@ -34,7 +34,7 @@ import java.util.stream.Collectors;
  * @date 2025-09-15
  */
 @RestController
-@RequestMapping("/admin-api/ai/alarmanalysis")
+@RequestMapping("/ai/alarmanalysis")
 public class BusAiAlarmAnalysisController extends BaseController
 {
     @Autowired
@@ -111,16 +111,16 @@ public class BusAiAlarmAnalysisController extends BaseController
             if (algorithmTaskNames.containsKey(item.getConfigName())) {
                 item.setId(algorithmTaskNames.get(item.getConfigName()));
                 busAiAlarmAnalysisService.updateBusAiAlarmAnalysis(item);
-            } /*else {
+            } else {
                 BusAiAlarmAnalysis.PromptSuggestion promptSuggestion = new BusAiAlarmAnalysis.PromptSuggestion();
                 promptSuggestion.setGenerationType(1);
                 promptSuggestion.setOneSentenceDescription(item.getScenarioDescription());
                 item.setPromptSuggestion(promptSuggestion);
                 busAiAlarmAnalysisService.insertBusAiAlarmAnalysis(item);
-            }*/
+            }
             num++;
         }
-        return num > 0 ? success() : error();
+        return success(num);
     }
 
     /**

+ 5 - 5
src/main/java/com/sooka/sponest/monitor/ai/controller/BusAiAlgorithmController.java

@@ -29,7 +29,7 @@ import java.util.stream.Collectors;
  * @date 2025-09-15
  */
 @RestController
-@RequestMapping("/admin-api/ai/algorithm")
+@RequestMapping("/ai/algorithm")
 public class BusAiAlgorithmController extends BaseController
 {
     @Autowired
@@ -38,7 +38,7 @@ public class BusAiAlgorithmController extends BaseController
     /**
      * 同步算法
      */
-    @RequiresPermissions("ai:singletype:list")
+    @RequiresPermissions("ai:algorithm:list")
     @GetMapping("/sync")
     public AjaxResult sync(@RequestParam("id") Long id)
     {
@@ -70,7 +70,7 @@ public class BusAiAlgorithmController extends BaseController
         return error(response.getErrMsg());
     }
 
-    @RequiresPermissions("ai:singletype:list")
+    @RequiresPermissions("ai:algorithm:list")
     @GetMapping("/syncDH")
     public AjaxResult syncDH()
     {
@@ -111,13 +111,13 @@ public class BusAiAlgorithmController extends BaseController
                 num++;
             }
         }
-        return num > 0 ? success() : error();
+        return success(num);
     }
 
     /**
      * 查询算法列表
      */
-    @RequiresPermissions("'ai:algorithm:list")
+    @RequiresPermissions("ai:algorithm:list")
     @GetMapping("/list")
     public TableDataInfo list(BusAiAlgorithm busAiAlgorithm)
     {

+ 12 - 11
src/main/java/com/sooka/sponest/monitor/ai/controller/BusAiAlgorithmTaskController.java

@@ -32,7 +32,7 @@ import java.util.stream.Collectors;
  * @date 2025-09-15
  */
 @RestController
-@RequestMapping("/admin-api/ai/algorithmtask")
+@RequestMapping("/ai/algorithmtask")
 public class BusAiAlgorithmTaskController extends BaseController
 {
     @Autowired
@@ -80,7 +80,7 @@ public class BusAiAlgorithmTaskController extends BaseController
     @GetMapping("/syncDH")
     public AjaxResult syncDH()
     {
-        List<BusAiAlgorithmTask> busAiAlgorithmTasks = new ArrayList<>();
+        List<JSONObject> busAiAlgorithmTasks = new ArrayList<>();
         Integer pageNum = 1;
 
         OauthConfigUserPwdInfo config = DHOauthUtil.getInstance().getOauthConfig();
@@ -93,7 +93,7 @@ public class BusAiAlgorithmTaskController extends BaseController
             }
             JSONObject result = JSONObject.parseObject(response.getResult());
             if (result.getBoolean("success")) {
-                List<BusAiAlgorithmTask> algorithmTasks = JSONObject.parseArray(result.getJSONObject("data").getString("data"), BusAiAlgorithmTask.class);
+                List<JSONObject> algorithmTasks = JSONObject.parseArray(result.getJSONObject("data").getString("data"), JSONObject.class);
                 if (algorithmTasks.isEmpty()) {
                     break;
                 }
@@ -103,19 +103,20 @@ public class BusAiAlgorithmTaskController extends BaseController
         }
         int num = 0;
         Map<String, Long> algorithmTaskNames = busAiAlgorithmTaskService.selectBusAiAlgorithmTaskList(new BusAiAlgorithmTask()).stream().collect(Collectors.toMap(BusAiAlgorithmTask::getTaskName, BusAiAlgorithmTask::getId));
-        for (BusAiAlgorithmTask item : busAiAlgorithmTasks) {
-            item.setTaskId(item.getId());
-            item.setSyncStatus("1");
-            if (algorithmTaskNames.containsKey(item.getTaskName())) {
-                item.setId(algorithmTaskNames.get(item.getTaskName()));
-                busAiAlgorithmTaskService.updateBusAiAlgorithmTask(item);
+        for (JSONObject item : busAiAlgorithmTasks) {
+            BusAiAlgorithmTask algorithmTask = JSONObject.parseObject(item.toJSONString(), BusAiAlgorithmTask.class);
+            algorithmTask.setTaskId(algorithmTask.getId());
+            algorithmTask.setSyncStatus("1");
+            if (algorithmTaskNames.containsKey(algorithmTask.getTaskName())) {
+                algorithmTask.setId(algorithmTaskNames.get(algorithmTask.getTaskName()));
+                busAiAlgorithmTaskService.updateBusAiAlgorithmTask(algorithmTask);
                 num++;
             } else if (StringUtils.isEmpty(algorithmTaskNames)) {
-                busAiAlgorithmTaskService.insertBusAiAlgorithmTask(item);
+                busAiAlgorithmTaskService.insertBusAiAlgorithmTask(algorithmTask);
                 num++;
             }
         }
-        return toAjax(num);
+        return success(num);
     }
 
     /**

+ 1 - 1
src/main/java/com/sooka/sponest/monitor/ai/controller/BusAiHistoryAlarmController.java

@@ -26,7 +26,7 @@ import java.util.List;
  * @date 2025-09-19
  */
 @RestController
-@RequestMapping("/admin-api/ai/historyalarm")
+@RequestMapping("/ai/historyalarm")
 public class BusAiHistoryAlarmController extends BaseController {
 
     @RequiresPermissions("ai:historyalarm:list")

+ 2 - 2
src/main/java/com/sooka/sponest/monitor/ai/controller/BusAiSingleTypeController.java

@@ -33,7 +33,7 @@ import java.util.stream.Collectors;
  * @date 2025-09-15
  */
 @RestController
-@RequestMapping("/admin-api/ai/singletype")
+@RequestMapping("/ai/singletype")
 public class BusAiSingleTypeController extends BaseController
 {
     @Autowired
@@ -139,7 +139,7 @@ public class BusAiSingleTypeController extends BaseController
             }
             num++;
         }
-        return num > 0 ? success() : error();
+        return success(num);
     }
 
     /**

+ 3 - 0
src/main/java/com/sooka/sponest/monitor/ai/domain/BusAiAlgorithmTask.java

@@ -76,4 +76,7 @@ public class BusAiAlgorithmTask extends BaseEntity
 
     /** 同步状态 */
     private String syncStatus;
+
+    /** 源数据 */
+    private String jsonData;
 }

+ 1 - 1
src/main/java/com/sooka/sponest/monitor/ai/service/impl/BusAiAlarmAnalysisServiceImpl.java

@@ -193,7 +193,7 @@ public class BusAiAlarmAnalysisServiceImpl implements IBusAiAlarmAnalysisService
         resultList.addAll(channels.stream().map(item -> {
             Map<String, Object> map = new HashMap();
             map.put("id", item.getChannelCode());
-            map.put("label", item.getChannelType());
+            map.put("label", item.getChannelName());
             map.put("parentId", item.getCameraId());
             return map;
         }).collect(Collectors.toList()));

+ 5 - 0
src/main/resources/mapper/ai/BusAiAlarmAnalysisMapper.xml

@@ -69,6 +69,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         insert into bus_ai_alarm_analysis
         <trim prefix="(" suffix=")" suffixOverrides=",">
             <if test="id != null">id,</if>
+            <if test="configId != null">config_id,</if>
             <if test="configName != null and configName != ''">config_name,</if>
             <if test="scenarioDescription != null and scenarioDescription != ''">scenario_description,</if>
             <if test="analysisCycle != null and analysisCycle != ''">analysis_cycle,</if>
@@ -77,6 +78,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="enabled != null and enabled != ''">enabled,</if>
             <if test="detection != null and detection != ''">detection,</if>
             <if test="calculatePoints != null and calculatePoints != ''">calculate_points,</if>
+            <if test="syncStatus != null and syncStatus != ''">sync_status,</if>
             <if test="promptSuggestion.generationType != null">prompt_suggestion_generation_type,</if>
             <if test="promptSuggestion.oneSentenceDescription != null and promptSuggestion.oneSentenceDescription != ''">prompt_suggestion_one_sentence_description,</if>
             <if test="promptSuggestion.scenes != null and promptSuggestion.scenes != ''">prompt_suggestion_scene_list,</if>
@@ -84,6 +86,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
          </trim>
         <trim prefix="values (" suffix=")" suffixOverrides=",">
             <if test="id != null">#{id},</if>
+            <if test="configId != null">#{configId},</if>
             <if test="configName != null and configName != ''">#{configName},</if>
             <if test="scenarioDescription != null and scenarioDescription != ''">#{scenarioDescription},</if>
             <if test="analysisCycle != null and analysisCycle != ''">#{analysisCycle},</if>
@@ -92,6 +95,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="enabled != null and enabled != ''">#{enabled},</if>
             <if test="detection != null and detection != ''">#{detection},</if>
             <if test="calculatePoints != null and calculatePoints != ''">#{calculatePoints},</if>
+            <if test="syncStatus != null and syncStatus != ''">#{syncStatus},</if>
             <if test="promptSuggestion.generationType != null">#{promptSuggestion.generationType},</if>
             <if test="promptSuggestion.oneSentenceDescription != null and promptSuggestion.oneSentenceDescription != ''">#{promptSuggestion.oneSentenceDescription},</if>
             <if test="promptSuggestion.scenes != null and promptSuggestion.scenes != ''">#{promptSuggestion.scenes},</if>
@@ -102,6 +106,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     <update id="updateBusAiAlarmAnalysis" parameterType="BusAiAlarmAnalysis">
         update bus_ai_alarm_analysis
         <trim prefix="SET" suffixOverrides=",">
+            <if test="configId != null">config_id = #{configId},</if>
             <if test="configName != null and configName != ''">config_name = #{configName},</if>
             <if test="scenarioDescription != null and scenarioDescription != ''">scenario_description = #{scenarioDescription},</if>
             <if test="analysisCycle != null and analysisCycle != ''">analysis_cycle = #{analysisCycle},</if>

+ 6 - 0
src/main/resources/mapper/ai/BusAiAlgorithmMapper.xml

@@ -44,21 +44,25 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     <insert id="insertBusAiAlgorithm" parameterType="BusAiAlgorithm" useGeneratedKeys="true" keyProperty="id">
         insert into bus_ai_algorithm
         <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="algorithmId != null">algorithm_id,</if>
             <if test="algorithmName != null and algorithmName != ''">algorithm_name,</if>
             <if test="algorithmRule != null and algorithmRule != ''">algorithm_rule,</if>
             <if test="alarmType != null">alarm_type,</if>
             <if test="alarmTypeName != null and alarmTypeName != ''">alarm_type_name,</if>
             <if test="enabled != null">enabled,</if>
+            <if test="syncStatus != null">sync_status,</if>
             <if test="promptSuggestion.generationType != null">prompt_suggestion_generation_type,</if>
             <if test="promptSuggestion.scenes != null and promptSuggestion.scenes != ''">prompt_suggestion_scene_list,</if>
             <if test="promptSuggestion.types != null and promptSuggestion.types != ''">prompt_suggestion_type_list,</if>
          </trim>
         <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="algorithmId != null">#{algorithmId},</if>
             <if test="algorithmName != null and algorithmName != ''">#{algorithmName},</if>
             <if test="algorithmRule != null and algorithmRule != ''">#{algorithmRule},</if>
             <if test="alarmType != null">#{alarmType},</if>
             <if test="alarmTypeName != null and alarmTypeName != ''">#{alarmTypeName},</if>
             <if test="enabled != null">#{enabled},</if>
+            <if test="syncStatus != null">#{syncStatus},</if>
             <if test="promptSuggestion.generationType != null">#{promptSuggestion.generationType},</if>
             <if test="promptSuggestion.scenes != null and promptSuggestion.scenes != ''">#{promptSuggestion.scenes},</if>
             <if test="promptSuggestion.types != null and promptSuggestion.types != ''">#{promptSuggestion.types},</if>
@@ -68,6 +72,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     <update id="updateBusAiAlgorithm" parameterType="BusAiAlgorithm">
         update bus_ai_algorithm
         <trim prefix="SET" suffixOverrides=",">
+            <if test="algorithmId != null">algorithm_id = #{algorithmId},</if>
             <if test="algorithmName != null and algorithmName != ''">algorithm_name = #{algorithmName},</if>
             <if test="algorithmRule != null and algorithmRule != ''">algorithm_rule = #{algorithmRule},</if>
             <if test="alarmType != null">alarm_type = #{alarmType},</if>
@@ -84,6 +89,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     <update id="updateByName" parameterType="BusAiAlgorithm">
         update bus_ai_algorithm
         <trim prefix="SET" suffixOverrides=",">
+            <if test="algorithmId != null">algorithm_id = #{algorithmId},</if>
             <if test="algorithmName != null and algorithmName != ''">algorithm_name = #{algorithmName},</if>
             <if test="algorithmRule != null and algorithmRule != ''">algorithm_rule = #{algorithmRule},</if>
             <if test="alarmType != null">alarm_type = #{alarmType},</if>

+ 10 - 1
src/main/resources/mapper/ai/BusAiAlgorithmTaskMapper.xml

@@ -23,6 +23,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <result property="captureImageNum"    column="capture_image_num"    />
         <result property="calculatePoints"    column="calculate_points"    />
         <result property="syncStatus"    column="sync_status"    />
+        <result property="jsonData"    column="json_data"    />
         <collection property="infos" column="id" select="com.sooka.sponest.monitor.ai.mapper.BusAiAlgorithmTaskInfoMapper.selectBusAiAlgorithmTaskInfoByAlgorithmTaskId">
             <result property="aigorithmId"    column="aigorithm_id"    />
             <result property="aigorithmName"    column="aigorithm_name"    />
@@ -50,7 +51,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     </resultMap>
 
     <sql id="selectBusAiAlgorithmTaskVo">
-        select id, task_id, task_name, analysis_frequency, analysis_frequency_unit, analysis_cycle, enabled, detection, template_id, auto, short_side_resolution, analysis_type, comb_task_interval, capture_interval, capture_image_num, calculate_points, sync_status from bus_ai_algorithm_task
+        select id, task_id, task_name, analysis_frequency, analysis_frequency_unit, analysis_cycle, enabled, detection, template_id, auto, short_side_resolution, analysis_type, comb_task_interval, capture_interval, capture_image_num, calculate_points, sync_status, json_data from bus_ai_algorithm_task
     </sql>
 
     <select id="selectBusAiAlgorithmTaskList" parameterType="BusAiAlgorithmTask" resultMap="BusAiAlgorithmTaskResult">
@@ -75,6 +76,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     <insert id="insertBusAiAlgorithmTask" parameterType="BusAiAlgorithmTask" useGeneratedKeys="true" keyProperty="id">
         insert into bus_ai_algorithm_task
         <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="taskId != null">task_id,</if>
             <if test="taskName != null and taskName != ''">task_name,</if>
             <if test="analysisFrequency != null and analysisFrequency != ''">analysis_frequency,</if>
             <if test="analysisFrequencyUnit != null and analysisFrequencyUnit != ''">analysis_frequency_unit,</if>
@@ -89,8 +91,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="captureInterval != null">capture_interval,</if>
             <if test="captureImageNum != null">capture_image_num,</if>
             <if test="calculatePoints != null">calculate_points,</if>
+            <if test="syncStatus != null">sync_status,</if>
+            <if test="jsonData != null">json_data,</if>
          </trim>
         <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="taskId != null">#{taskId},</if>
             <if test="taskName != null and taskName != ''">#{taskName},</if>
             <if test="analysisFrequency != null and analysisFrequency != ''">#{analysisFrequency},</if>
             <if test="analysisFrequencyUnit != null and analysisFrequencyUnit != ''">#{analysisFrequencyUnit},</if>
@@ -105,12 +110,15 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="captureInterval != null">#{captureInterval},</if>
             <if test="captureImageNum != null">#{captureImageNum},</if>
             <if test="calculatePoints != null">#{calculatePoints},</if>
+            <if test="syncStatus != null">#{syncStatus},</if>
+            <if test="jsonData != null">#{jsonData},</if>
          </trim>
     </insert>
 
     <update id="updateBusAiAlgorithmTask" parameterType="BusAiAlgorithmTask">
         update bus_ai_algorithm_task
         <trim prefix="SET" suffixOverrides=",">
+            <if test="taskId != null">task_id = #{taskId},</if>
             <if test="taskName != null and taskName != ''">task_name = #{taskName},</if>
             <if test="analysisFrequency != null and analysisFrequency != ''">analysis_frequency = #{analysisFrequency},</if>
             <if test="analysisFrequencyUnit != null and analysisFrequencyUnit != ''">analysis_frequency_unit = #{analysisFrequencyUnit},</if>
@@ -126,6 +134,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="captureImageNum != null">capture_image_num = #{captureImageNum},</if>
             <if test="calculatePoints != null">calculate_points = #{calculatePoints},</if>
             <if test="syncStatus != null">sync_status = #{syncStatus},</if>
+            <if test="jsonData != null">json_data = #{jsonData},</if>
         </trim>
         where id = #{id}
     </update>

+ 2 - 0
src/main/resources/mapper/ai/BusAiSingleTypeMapper.xml

@@ -61,6 +61,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="isSave != null">is_save,</if>
             <if test="failure != null">failure,</if>
             <if test="urlNameKey != null and urlNameKey != ''">url_name_key,</if>
+            <if test="syncStatus != null and syncStatus != ''">sync_status,</if>
          </trim>
         <trim prefix="values (" suffix=")" suffixOverrides=",">
             <if test="id != null">#{id},</if>
@@ -75,6 +76,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="isSave != null">#{isSave},</if>
             <if test="failure != null">#{failure},</if>
             <if test="urlNameKey != null and urlNameKey != ''">#{urlNameKey},</if>
+            <if test="syncStatus != null and syncStatus != ''">#{syncStatus},</if>
          </trim>
     </insert>