From 5a6af9762dfb9e3ed75422303a795b2bb8c21885 Mon Sep 17 00:00:00 2001
From: zhanghua <314079846@qq.com>
Date: 星期三, 28 九月 2022 17:49:52 +0800
Subject: [PATCH] 市平台接口

---
 ycl-platform/src/main/java/com/ycl/remote/dto/EventAddResponseDto.java               |   15 ++
 ycl-platform/src/main/resources/application-pro.yml                                  |    1 
 ycl-platform/src/main/resources/application-dev.yml                                  |    1 
 ycl-platform/src/main/java/com/ycl/service/dict/impl/DataDictionaryServiceImpl.java  |    6 
 ycl-platform/src/main/java/com/ycl/entity/caseHandler/BaseCase.java                  |    6 +
 ycl-platform/src/main/java/com/ycl/remote/dto/EventProcessResponseDto.java           |   17 ++
 pom.xml                                                                              |   14 +
 ycl-platform/src/main/java/com/ycl/mapper/dict/DataDictionaryMapper.java             |    3 
 ycl-platform/src/main/resources/mapper/dict/DataDictionaryMapper.xml                 |   19 ++-
 ycl-platform/src/main/java/com/ycl/service/caseHandler/IBaseCaseService.java         |   18 +++
 ycl-platform/src/main/java/com/ycl/remote/service/CityPlatformService.java           |   41 ++++++
 ycl-platform/src/main/java/com/ycl/controller/caseHandler/BaseCaseController.java    |   29 ++++
 ycl-platform/src/main/java/com/ycl/PlatformApplication.java                          |    2 
 ycl-platform/src/main/java/com/ycl/service/dict/IDataDictionaryService.java          |    3 
 ycl-platform/src/main/java/com/ycl/remote/dto/ResultResponseDto.java                 |   17 ++
 ycl-platform/src/main/java/com/ycl/controller/caseHandler/ViolationsController.java  |    3 
 ycl-platform/src/main/java/com/ycl/remote/dto/EventProcessParamDto.java              |   18 +++
 ycl-platform/src/main/java/com/ycl/service/caseHandler/impl/BaseCaseServiceImpl.java |   70 +++++++++++
 ycl-platform/src/main/java/com/ycl/remote/dto/EventAddParamDto.java                  |   23 +++
 19 files changed, 287 insertions(+), 19 deletions(-)

diff --git a/pom.xml b/pom.xml
index 0fe5079..f31d0f4 100644
--- a/pom.xml
+++ b/pom.xml
@@ -176,10 +176,16 @@
         </dependency>
 
         <dependency>
-        <groupId>com.alibaba</groupId>
-        <artifactId>fastjson</artifactId>
-        <version>1.2.73</version>
-    </dependency>
+            <groupId>com.alibaba</groupId>
+            <artifactId>fastjson</artifactId>
+            <version>1.2.73</version>
+        </dependency>
+
+        <dependency>
+            <groupId>org.springframework.cloud</groupId>
+            <artifactId>spring-cloud-starter-openfeign</artifactId>
+            <version>2.2.7.RELEASE</version>
+        </dependency>
     </dependencies>
 
 </project>
diff --git a/ycl-platform/src/main/java/com/ycl/PlatformApplication.java b/ycl-platform/src/main/java/com/ycl/PlatformApplication.java
index e668187..5f2d978 100644
--- a/ycl-platform/src/main/java/com/ycl/PlatformApplication.java
+++ b/ycl-platform/src/main/java/com/ycl/PlatformApplication.java
@@ -3,6 +3,7 @@
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.cloud.openfeign.EnableFeignClients;
 import org.springframework.context.ConfigurableApplicationContext;
 import org.springframework.context.annotation.Configuration;
 import org.springframework.context.annotation.EnableAspectJAutoProxy;
@@ -19,6 +20,7 @@
 @EnableAspectJAutoProxy(proxyTargetClass = true, exposeProxy = true)
 @EnableAsync(proxyTargetClass = true)
 @EnableScheduling
+@EnableFeignClients
 @EnableTransactionManagement(proxyTargetClass = true)
 @SpringBootApplication
 public class PlatformApplication {
diff --git a/ycl-platform/src/main/java/com/ycl/controller/caseHandler/BaseCaseController.java b/ycl-platform/src/main/java/com/ycl/controller/caseHandler/BaseCaseController.java
index 56df11d..aa6978b 100644
--- a/ycl-platform/src/main/java/com/ycl/controller/caseHandler/BaseCaseController.java
+++ b/ycl-platform/src/main/java/com/ycl/controller/caseHandler/BaseCaseController.java
@@ -1,10 +1,16 @@
 package com.ycl.controller.caseHandler;
 
 
+import com.alibaba.druid.util.StringUtils;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ycl.api.CommonResult;
 import com.ycl.controller.BaseController;
-import org.springframework.web.bind.annotation.RequestMapping;
-
-import org.springframework.web.bind.annotation.RestController;
+import com.ycl.entity.caseHandler.BaseCase;
+import com.ycl.service.caseHandler.IBaseCaseService;
+import com.ycl.vo.ViolationSettingVO;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
 
 
 /**
@@ -19,4 +25,21 @@
 @RequestMapping("/base-case")
 public class BaseCaseController extends BaseController {
 
+    private IBaseCaseService baseCaseService;
+
+    @Autowired
+    public void setBaseCaseService(IBaseCaseService baseCaseService) {
+        this.baseCaseService = baseCaseService;
+    }
+
+    @ApiOperation(value = "涓婁紶甯傚钩鍙�")
+    @PostMapping("/upload-event")
+    public CommonResult uploadEvent(@RequestParam Integer caseId) {
+        String msg = baseCaseService.uploadEvent(caseId);
+        if (StringUtils.isEmpty(msg)) {
+            return CommonResult.success(null);
+        } else {
+            return CommonResult.failed(msg);
+        }
+    }
 }
diff --git a/ycl-platform/src/main/java/com/ycl/controller/caseHandler/ViolationsController.java b/ycl-platform/src/main/java/com/ycl/controller/caseHandler/ViolationsController.java
index 81f1d9f..fcdf6a6 100644
--- a/ycl-platform/src/main/java/com/ycl/controller/caseHandler/ViolationsController.java
+++ b/ycl-platform/src/main/java/com/ycl/controller/caseHandler/ViolationsController.java
@@ -6,6 +6,7 @@
 import com.ycl.controller.BaseController;
 import com.ycl.entity.dict.DataDictionary;
 import com.ycl.service.dict.IDataDictionaryService;
+import com.ycl.vo.ViolationSettingVO;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -37,7 +38,7 @@
     public CommonResult searchIllegalBuilding(@RequestParam Integer size,
                                               @RequestParam Integer current,
                                               @RequestParam(required = false) String keyWord) {
-        Page<DataDictionary> dataDictionaryPage = new Page<>();
+        Page<ViolationSettingVO> dataDictionaryPage = new Page<>();
         dataDictionaryPage.setSize(size);
         dataDictionaryPage.setCurrent(current);
         return CommonResult.success(iDataDictionaryService.listViolations(dataDictionaryPage,keyWord));
diff --git a/ycl-platform/src/main/java/com/ycl/entity/caseHandler/BaseCase.java b/ycl-platform/src/main/java/com/ycl/entity/caseHandler/BaseCase.java
index eca8492..7426c79 100644
--- a/ycl-platform/src/main/java/com/ycl/entity/caseHandler/BaseCase.java
+++ b/ycl-platform/src/main/java/com/ycl/entity/caseHandler/BaseCase.java
@@ -130,5 +130,11 @@
     @TableField("create_time")
     private LocalDateTime createTime;
 
+    /**
+     * 甯傚钩鍙扮紪鐮�
+     */
+    @TableField("task_code")
+    private String taskCode;
+
 
 }
diff --git a/ycl-platform/src/main/java/com/ycl/mapper/dict/DataDictionaryMapper.java b/ycl-platform/src/main/java/com/ycl/mapper/dict/DataDictionaryMapper.java
index dc16764..55b9609 100644
--- a/ycl-platform/src/main/java/com/ycl/mapper/dict/DataDictionaryMapper.java
+++ b/ycl-platform/src/main/java/com/ycl/mapper/dict/DataDictionaryMapper.java
@@ -3,6 +3,7 @@
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.ycl.entity.dict.DataDictionary;
+import com.ycl.vo.ViolationSettingVO;
 
 /**
  * <p>
@@ -16,5 +17,5 @@
 
     Page<DataDictionary> listDataDictionaryPage(Page<DataDictionary> dataDictionaryPage, String keyWord);
 
-    Page<DataDictionary> listViolationPage(Page<DataDictionary> dataDictionaryPage, String keyWord);
+    Page<ViolationSettingVO> listViolationPage(Page<ViolationSettingVO> dataDictionaryPage, String keyWord);
 }
diff --git a/ycl-platform/src/main/java/com/ycl/remote/dto/EventAddParamDto.java b/ycl-platform/src/main/java/com/ycl/remote/dto/EventAddParamDto.java
new file mode 100644
index 0000000..0d31abb
--- /dev/null
+++ b/ycl-platform/src/main/java/com/ycl/remote/dto/EventAddParamDto.java
@@ -0,0 +1,23 @@
+package com.ycl.remote.dto;
+
+import lombok.Builder;
+import lombok.Data;
+
+/**
+ * EventAddParamDto 浜嬩欢涓婃姤鍙傛暟
+ * 
+ * @author: AI
+ * @date:  2022-09-28 16:00
+ * @version V1.0
+**/
+@Data
+@Builder
+public class EventAddParamDto {
+    private String y84;
+    private String x84;
+    private Integer source;
+    private String address;
+    private String eventDesc;
+    private String eventSign;
+    private String medias;
+}
diff --git a/ycl-platform/src/main/java/com/ycl/remote/dto/EventAddResponseDto.java b/ycl-platform/src/main/java/com/ycl/remote/dto/EventAddResponseDto.java
new file mode 100644
index 0000000..78beab5
--- /dev/null
+++ b/ycl-platform/src/main/java/com/ycl/remote/dto/EventAddResponseDto.java
@@ -0,0 +1,15 @@
+package com.ycl.remote.dto;
+
+import lombok.Data;
+
+/**
+ * EventAddParamDto 浜嬩欢涓婃姤缁撴灉杩斿洖
+ *
+ * @version V1.0
+ * @author: AI
+ * @date: 2022-09-28 16:00
+ **/
+@Data
+public class EventAddResponseDto {
+    private String taskcode;
+}
diff --git a/ycl-platform/src/main/java/com/ycl/remote/dto/EventProcessParamDto.java b/ycl-platform/src/main/java/com/ycl/remote/dto/EventProcessParamDto.java
new file mode 100644
index 0000000..9616010
--- /dev/null
+++ b/ycl-platform/src/main/java/com/ycl/remote/dto/EventProcessParamDto.java
@@ -0,0 +1,18 @@
+package com.ycl.remote.dto;
+
+import lombok.Builder;
+import lombok.Data;
+
+/**
+ * EventProcessParamDto 杩涘害鏌ヨ鍙傛暟
+ *
+ * @author: AI
+ * @date:  2022-09-28 16:00
+ * @version V1.0
+**/
+@Data
+@Builder
+public class EventProcessParamDto {
+    private String taskcode;
+    private String eventSign;
+}
diff --git a/ycl-platform/src/main/java/com/ycl/remote/dto/EventProcessResponseDto.java b/ycl-platform/src/main/java/com/ycl/remote/dto/EventProcessResponseDto.java
new file mode 100644
index 0000000..ed38fea
--- /dev/null
+++ b/ycl-platform/src/main/java/com/ycl/remote/dto/EventProcessResponseDto.java
@@ -0,0 +1,17 @@
+package com.ycl.remote.dto;
+
+/**
+ * EventProcessResponseDto 妗堜欢璇︽儏
+ *
+ * @version V1.0
+ * @author: AI
+ * @date: 2022-09-28 16:03
+ **/
+public class EventProcessResponseDto {
+    private String taskcode;
+    private String statusName;
+    private String dealTime;
+    private String dealMsg;
+    private String[] hcczImages;
+
+}
diff --git a/ycl-platform/src/main/java/com/ycl/remote/dto/ResultResponseDto.java b/ycl-platform/src/main/java/com/ycl/remote/dto/ResultResponseDto.java
new file mode 100644
index 0000000..5fe52d5
--- /dev/null
+++ b/ycl-platform/src/main/java/com/ycl/remote/dto/ResultResponseDto.java
@@ -0,0 +1,17 @@
+package com.ycl.remote.dto;
+
+import lombok.Data;
+
+/**
+ * ResultDto 杩斿洖缁撴灉
+ *
+ * @version V1.0
+ * @author: AI
+ * @date: 2022-09-28 16:00
+ **/
+@Data
+public class ResultResponseDto<T> {
+    private String msg;
+    private Integer code;
+    private T result;
+}
diff --git a/ycl-platform/src/main/java/com/ycl/remote/service/CityPlatformService.java b/ycl-platform/src/main/java/com/ycl/remote/service/CityPlatformService.java
new file mode 100644
index 0000000..3923a42
--- /dev/null
+++ b/ycl-platform/src/main/java/com/ycl/remote/service/CityPlatformService.java
@@ -0,0 +1,41 @@
+package com.ycl.remote.service;
+
+import com.ycl.remote.dto.*;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+
+/**
+ * CityPlatformService 甯傚钩鍙板鎺ユ湇鍔�
+ *
+ * @version V1.0
+ * @author: AI
+ * @date: 2022-09-28 15:40
+ **/
+@FeignClient(url = "http://10.53.139.176:81/api", name = "cityApi")
+public interface CityPlatformService {
+
+    /**
+     * 浜嬩欢涓婃姤
+     *
+     * @param paramDto
+     * @return com.ycl.remote.dto.ResultResponseDto<com.ycl.remote.dto.EventAddResponseDto>
+     * @author AI
+     * @date 2022-09-28 16:12
+     */
+    @PostMapping("/unauthorized/external/event/add")
+    ResultResponseDto<EventAddResponseDto> addEvent(EventAddParamDto paramDto);
+
+    /**
+     * 浜嬩欢璇︽儏
+     *
+     * @param paramDto
+     * @return com.ycl.remote.dto.ResultResponseDto<com.ycl.remote.dto.EventProcessResponseDto>
+     * @author AI
+     * @date 2022-09-28 16:12
+     */
+    @PostMapping("/unauthorized/external/event/process")
+    ResultResponseDto<EventProcessResponseDto> getEventProcess(EventProcessParamDto paramDto);
+
+
+}
diff --git a/ycl-platform/src/main/java/com/ycl/service/caseHandler/IBaseCaseService.java b/ycl-platform/src/main/java/com/ycl/service/caseHandler/IBaseCaseService.java
index b257213..7557069 100644
--- a/ycl-platform/src/main/java/com/ycl/service/caseHandler/IBaseCaseService.java
+++ b/ycl-platform/src/main/java/com/ycl/service/caseHandler/IBaseCaseService.java
@@ -12,5 +12,23 @@
  * @since 2022-09-24
  */
 public interface IBaseCaseService extends IService<BaseCase> {
+    /**
+     * 涓婁紶甯傚钩鍙�
+     *
+     * @param caseId
+     * @return String
+     * @author AI
+     * @date 2022-09-28 16:52
+     */
+    String uploadEvent(Integer caseId);
 
+    /**
+     * 鍚屾妗堜欢杩涘害
+     *
+     * @param caseId
+     * @return java.lang.String
+     * @author AI
+     * @date 2022-09-28 17:45
+     */
+    String processEvent(Integer caseId);
 }
diff --git a/ycl-platform/src/main/java/com/ycl/service/caseHandler/impl/BaseCaseServiceImpl.java b/ycl-platform/src/main/java/com/ycl/service/caseHandler/impl/BaseCaseServiceImpl.java
index f155201..353d583 100644
--- a/ycl-platform/src/main/java/com/ycl/service/caseHandler/impl/BaseCaseServiceImpl.java
+++ b/ycl-platform/src/main/java/com/ycl/service/caseHandler/impl/BaseCaseServiceImpl.java
@@ -1,9 +1,17 @@
 package com.ycl.service.caseHandler.impl;
 
 import com.ycl.entity.caseHandler.BaseCase;
+import com.ycl.entity.caseHandler.Violations;
+import com.ycl.entity.video.VideoAlarmReport;
 import com.ycl.mapper.caseHandler.BaseCaseMapper;
+import com.ycl.remote.dto.*;
+import com.ycl.remote.service.CityPlatformService;
 import com.ycl.service.caseHandler.IBaseCaseService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ycl.service.caseHandler.IViolationsService;
+import com.ycl.service.video.IVideoAlarmReportService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 
 /**
@@ -17,4 +25,66 @@
 @Service
 public class BaseCaseServiceImpl extends ServiceImpl<BaseCaseMapper, BaseCase> implements IBaseCaseService {
 
+    private CityPlatformService cityPlatformService;
+    private IViolationsService violationsService;
+    private IVideoAlarmReportService videoAlarmReportService;
+
+    @Value("${fdfs.fileUrl}")
+    private String fileUrl;
+
+    @Autowired
+    public void setCityPlatformService(CityPlatformService cityPlatformService) {
+        this.cityPlatformService = cityPlatformService;
+    }
+
+    @Autowired
+    public void setViolationsService(IViolationsService violationsService) {
+        this.violationsService = violationsService;
+    }
+
+    @Autowired
+    public void setVideoAlarmReportService(IVideoAlarmReportService videoAlarmReportService) {
+        this.videoAlarmReportService = videoAlarmReportService;
+    }
+
+    @Override
+    public String uploadEvent(Integer caseId) {
+        BaseCase baseCase = this.getById(caseId);
+        Violations violations = violationsService.getById(caseId);
+        String medias = "";
+        String eventDesc = "";
+        if (violations != null) {
+            eventDesc = violations.getDescription();
+            VideoAlarmReport videoAlarmReport = videoAlarmReportService.getById(violations.getVideoAlarmReportId());
+            if (videoAlarmReport != null) {
+                StringBuilder stringBuilder = new StringBuilder().append("[{'mediaURL':'").append(fileUrl).append(videoAlarmReport.getPicData()).append("'}]");
+                medias = stringBuilder.toString();
+            }
+        }
+        EventAddParamDto dto = EventAddParamDto.builder().y84(baseCase.getLatitude().toString()).x84(baseCase.getLongitude().toString())
+                .source(11).address(baseCase.getSite()).eventDesc(eventDesc).eventSign(baseCase.getCode()).medias(medias).build();
+        ResultResponseDto<EventAddResponseDto> result = cityPlatformService.addEvent(dto);
+        if (result.getCode() == 0) {
+            EventAddResponseDto responseDto = result.getResult();
+            baseCase.setTaskCode(responseDto.getTaskcode());
+            this.updateById(baseCase);
+            return null;
+        } else {
+            return result.getMsg();
+        }
+    }
+
+    @Override
+    public String processEvent(Integer caseId) {
+        BaseCase baseCase = this.getById(caseId);
+        EventProcessParamDto paramDto = EventProcessParamDto.builder().eventSign(baseCase.getCode()).taskcode(baseCase.getTaskCode()).build();
+        ResultResponseDto<EventProcessResponseDto> responseDto = cityPlatformService.getEventProcess(paramDto);
+        if (responseDto.getCode() == 0) {
+            EventProcessResponseDto eventProcessResponseDto = responseDto.getResult();
+            /*********** 鏈鐞嗗競骞冲彴杩斿洖鏁版嵁 ***************/
+            return null;
+        } else {
+            return responseDto.getMsg();
+        }
+    }
 }
diff --git a/ycl-platform/src/main/java/com/ycl/service/dict/IDataDictionaryService.java b/ycl-platform/src/main/java/com/ycl/service/dict/IDataDictionaryService.java
index 78fb676..3e5d198 100644
--- a/ycl-platform/src/main/java/com/ycl/service/dict/IDataDictionaryService.java
+++ b/ycl-platform/src/main/java/com/ycl/service/dict/IDataDictionaryService.java
@@ -3,6 +3,7 @@
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.ycl.entity.dict.DataDictionary;
+import com.ycl.vo.ViolationSettingVO;
 
 import java.util.List;
 
@@ -30,5 +31,5 @@
 
     Page listIllegalBuildingSettings(Page<DataDictionary> dataDictionaryPage, String keyWork);
 
-    Page listViolations(Page<DataDictionary> dataDictionaryPage, String keyWord);
+    Page listViolations(Page<ViolationSettingVO> dataDictionaryPage, String keyWord);
 }
diff --git a/ycl-platform/src/main/java/com/ycl/service/dict/impl/DataDictionaryServiceImpl.java b/ycl-platform/src/main/java/com/ycl/service/dict/impl/DataDictionaryServiceImpl.java
index 0586ddf..1ac3334 100644
--- a/ycl-platform/src/main/java/com/ycl/service/dict/impl/DataDictionaryServiceImpl.java
+++ b/ycl-platform/src/main/java/com/ycl/service/dict/impl/DataDictionaryServiceImpl.java
@@ -11,6 +11,7 @@
 import com.ycl.service.redis.RedisService;
 import com.ycl.utils.common.LiveTimeMillisecond;
 import com.ycl.utils.redis.RedisKey;
+import com.ycl.vo.ViolationSettingVO;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.stereotype.Service;
 
@@ -61,8 +62,9 @@
     }
 
     @Override
-    public Page listViolations(Page<DataDictionary> dataDictionaryPage, String keyWord) {
-        Page<DataDictionary> dataDictionaryPageList = dataDictionaryMapper.listViolationPage(dataDictionaryPage,keyWord);
+    public Page listViolations(Page<ViolationSettingVO> dataDictionaryPage, String keyWord) {
+        dataDictionaryPage.setOptimizeCountSql(false);
+        Page<ViolationSettingVO> dataDictionaryPageList = dataDictionaryMapper.listViolationPage(dataDictionaryPage,keyWord);
         return dataDictionaryPageList;
     }
 }
diff --git a/ycl-platform/src/main/resources/application-dev.yml b/ycl-platform/src/main/resources/application-dev.yml
index 874c73d..45ede0e 100644
--- a/ycl-platform/src/main/resources/application-dev.yml
+++ b/ycl-platform/src/main/resources/application-dev.yml
@@ -7,6 +7,7 @@
     compression: true
 
 fdfs:
+  fileUrl: http://140.143.152.226:8410/
   groupName: sczhzf
   soTimeout: 1500
   connectTimeout: 600
diff --git a/ycl-platform/src/main/resources/application-pro.yml b/ycl-platform/src/main/resources/application-pro.yml
index 26de4cb..1221ace 100644
--- a/ycl-platform/src/main/resources/application-pro.yml
+++ b/ycl-platform/src/main/resources/application-pro.yml
@@ -7,6 +7,7 @@
     compression: true
 
 fdfs:
+  fileUrl: http://140.143.152.226:8410/
   groupName: sczhzf
   soTimeout: 1500
   connectTimeout: 600
diff --git a/ycl-platform/src/main/resources/mapper/dict/DataDictionaryMapper.xml b/ycl-platform/src/main/resources/mapper/dict/DataDictionaryMapper.xml
index d21673b..ba16227 100644
--- a/ycl-platform/src/main/resources/mapper/dict/DataDictionaryMapper.xml
+++ b/ycl-platform/src/main/resources/mapper/dict/DataDictionaryMapper.xml
@@ -53,19 +53,24 @@
         d2.`name` AS typeFirst,
         d3.`name` AS typeSecond,
         d4.`name` AS typeThird
-        FROM
-        `ums_data_dictionary` AS d1
-        JOIN ums_data_dictionary AS d2 ON d1.parent_id = d2.id
-        JOIN ums_data_dictionary AS d3 ON d2.parent_id = d3.id
-        JOIN ums_data_dictionary AS d4 ON d3.parent_id = d4.id
+        FROM `ums_data_dictionary` AS d1
+        LEFT JOIN ums_data_dictionary AS d2 ON d1.id = d2.parent_id
+        LEFT JOIN ums_data_dictionary AS d3 ON d2.id = d3.parent_id
+        LEFT JOIN ums_data_dictionary AS d4 ON d3.id = d4.parent_id
         <where>
-            d1.`level` = '4'
+            d1.parent_id = 0
             AND d1.type_code = '01'
             <if test="keyWord !=null and keyWord !=''">
-                AND d1.`name` LIKE  '%${keyWord}%'
+                AND (d1.`name` LIKE  '%${keyWord}%'
+                or d2.`name` LIKE  '%${keyWord}%'
+                or d3.`name` LIKE  '%${keyWord}%'
+                or d4.`name` LIKE  '%${keyWord}%'
+                )
             </if>
 
         </where>
+
+        ORDER BY d1.parent_id,d2.parent_id,d3.parent_id,d4.parent_id
     </select>
 
 </mapper>

--
Gitblit v1.8.0