diff --git a/casic-common/pom.xml b/casic-common/pom.xml new file mode 100644 index 0000000..861e1ec --- /dev/null +++ b/casic-common/pom.xml @@ -0,0 +1,60 @@ + + + 4.0.0 + + com.casic + casic-PTZ + 2.0.0 + ../pom.xml + + + casic-common + 2.0.0 + jar + casic-common + casic 的spring boot版本 + + + + + com.casic + casic-core + ${core.version} + provided + + + com.casic + casic-admin-support + ${admin.version} + provided + + + com.casic + casic-export-support + ${extension.version} + + + org.springframework.boot + spring-boot-starter-web + ${boot.version} + provided + + + + com.casic + casic-data-es + 1.0.1.alpha + + + + + + src/main/java + + **/*.xml + + + + + \ No newline at end of file diff --git a/casic-common/pom.xml b/casic-common/pom.xml new file mode 100644 index 0000000..861e1ec --- /dev/null +++ b/casic-common/pom.xml @@ -0,0 +1,60 @@ + + + 4.0.0 + + com.casic + casic-PTZ + 2.0.0 + ../pom.xml + + + casic-common + 2.0.0 + jar + casic-common + casic 的spring boot版本 + + + + + com.casic + casic-core + ${core.version} + provided + + + com.casic + casic-admin-support + ${admin.version} + provided + + + com.casic + casic-export-support + ${extension.version} + + + org.springframework.boot + spring-boot-starter-web + ${boot.version} + provided + + + + com.casic + casic-data-es + 1.0.1.alpha + + + + + + src/main/java + + **/*.xml + + + + + \ No newline at end of file diff --git a/casic-common/src/main/java/com/casic/missiles/modular/system/consts/DataConst.java b/casic-common/src/main/java/com/casic/missiles/modular/system/consts/DataConst.java new file mode 100644 index 0000000..bbe581c --- /dev/null +++ b/casic-common/src/main/java/com/casic/missiles/modular/system/consts/DataConst.java @@ -0,0 +1,8 @@ +package com.casic.missiles.modular.system.consts; + +public class DataConst { + + public static final String DATA_GAS_ES_INDEX = "casic_pantilt_gas"; + + public static final String DATA_GAS_ES_TYPE = "casic_pantilt_gas"; +} diff --git a/casic-common/pom.xml b/casic-common/pom.xml new file mode 100644 index 0000000..861e1ec --- /dev/null +++ b/casic-common/pom.xml @@ -0,0 +1,60 @@ + + + 4.0.0 + + com.casic + casic-PTZ + 2.0.0 + ../pom.xml + + + casic-common + 2.0.0 + jar + casic-common + casic 的spring boot版本 + + + + + com.casic + casic-core + ${core.version} + provided + + + com.casic + casic-admin-support + ${admin.version} + provided + + + com.casic + casic-export-support + ${extension.version} + + + org.springframework.boot + spring-boot-starter-web + ${boot.version} + provided + + + + com.casic + casic-data-es + 1.0.1.alpha + + + + + + src/main/java + + **/*.xml + + + + + \ No newline at end of file diff --git a/casic-common/src/main/java/com/casic/missiles/modular/system/consts/DataConst.java b/casic-common/src/main/java/com/casic/missiles/modular/system/consts/DataConst.java new file mode 100644 index 0000000..bbe581c --- /dev/null +++ b/casic-common/src/main/java/com/casic/missiles/modular/system/consts/DataConst.java @@ -0,0 +1,8 @@ +package com.casic.missiles.modular.system.consts; + +public class DataConst { + + public static final String DATA_GAS_ES_INDEX = "casic_pantilt_gas"; + + public static final String DATA_GAS_ES_TYPE = "casic_pantilt_gas"; +} diff --git a/casic-data/pom.xml b/casic-data/pom.xml index a3eba7d..3ad2c9c 100644 --- a/casic-data/pom.xml +++ b/casic-data/pom.xml @@ -41,6 +41,11 @@ provided + + com.casic + casic-data-es + 1.0.1.alpha + diff --git a/casic-common/pom.xml b/casic-common/pom.xml new file mode 100644 index 0000000..861e1ec --- /dev/null +++ b/casic-common/pom.xml @@ -0,0 +1,60 @@ + + + 4.0.0 + + com.casic + casic-PTZ + 2.0.0 + ../pom.xml + + + casic-common + 2.0.0 + jar + casic-common + casic 的spring boot版本 + + + + + com.casic + casic-core + ${core.version} + provided + + + com.casic + casic-admin-support + ${admin.version} + provided + + + com.casic + casic-export-support + ${extension.version} + + + org.springframework.boot + spring-boot-starter-web + ${boot.version} + provided + + + + com.casic + casic-data-es + 1.0.1.alpha + + + + + + src/main/java + + **/*.xml + + + + + \ No newline at end of file diff --git a/casic-common/src/main/java/com/casic/missiles/modular/system/consts/DataConst.java b/casic-common/src/main/java/com/casic/missiles/modular/system/consts/DataConst.java new file mode 100644 index 0000000..bbe581c --- /dev/null +++ b/casic-common/src/main/java/com/casic/missiles/modular/system/consts/DataConst.java @@ -0,0 +1,8 @@ +package com.casic.missiles.modular.system.consts; + +public class DataConst { + + public static final String DATA_GAS_ES_INDEX = "casic_pantilt_gas"; + + public static final String DATA_GAS_ES_TYPE = "casic_pantilt_gas"; +} diff --git a/casic-data/pom.xml b/casic-data/pom.xml index a3eba7d..3ad2c9c 100644 --- a/casic-data/pom.xml +++ b/casic-data/pom.xml @@ -41,6 +41,11 @@ provided + + com.casic + casic-data-es + 1.0.1.alpha + diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/consts/DataConst.java b/casic-data/src/main/java/com/casic/missiles/modular/system/consts/DataConst.java new file mode 100644 index 0000000..bbe581c --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/consts/DataConst.java @@ -0,0 +1,8 @@ +package com.casic.missiles.modular.system.consts; + +public class DataConst { + + public static final String DATA_GAS_ES_INDEX = "casic_pantilt_gas"; + + public static final String DATA_GAS_ES_TYPE = "casic_pantilt_gas"; +} diff --git a/casic-common/pom.xml b/casic-common/pom.xml new file mode 100644 index 0000000..861e1ec --- /dev/null +++ b/casic-common/pom.xml @@ -0,0 +1,60 @@ + + + 4.0.0 + + com.casic + casic-PTZ + 2.0.0 + ../pom.xml + + + casic-common + 2.0.0 + jar + casic-common + casic 的spring boot版本 + + + + + com.casic + casic-core + ${core.version} + provided + + + com.casic + casic-admin-support + ${admin.version} + provided + + + com.casic + casic-export-support + ${extension.version} + + + org.springframework.boot + spring-boot-starter-web + ${boot.version} + provided + + + + com.casic + casic-data-es + 1.0.1.alpha + + + + + + src/main/java + + **/*.xml + + + + + \ No newline at end of file diff --git a/casic-common/src/main/java/com/casic/missiles/modular/system/consts/DataConst.java b/casic-common/src/main/java/com/casic/missiles/modular/system/consts/DataConst.java new file mode 100644 index 0000000..bbe581c --- /dev/null +++ b/casic-common/src/main/java/com/casic/missiles/modular/system/consts/DataConst.java @@ -0,0 +1,8 @@ +package com.casic.missiles.modular.system.consts; + +public class DataConst { + + public static final String DATA_GAS_ES_INDEX = "casic_pantilt_gas"; + + public static final String DATA_GAS_ES_TYPE = "casic_pantilt_gas"; +} diff --git a/casic-data/pom.xml b/casic-data/pom.xml index a3eba7d..3ad2c9c 100644 --- a/casic-data/pom.xml +++ b/casic-data/pom.xml @@ -41,6 +41,11 @@ provided + + com.casic + casic-data-es + 1.0.1.alpha + diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/consts/DataConst.java b/casic-data/src/main/java/com/casic/missiles/modular/system/consts/DataConst.java new file mode 100644 index 0000000..bbe581c --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/consts/DataConst.java @@ -0,0 +1,8 @@ +package com.casic.missiles.modular.system.consts; + +public class DataConst { + + public static final String DATA_GAS_ES_INDEX = "casic_pantilt_gas"; + + public static final String DATA_GAS_ES_TYPE = "casic_pantilt_gas"; +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java b/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java index 4460f11..dfc76ec 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java @@ -5,14 +5,17 @@ import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.AlarmRecordRequest; import com.casic.missiles.modular.system.model.AlarmRecord; import com.casic.missiles.modular.system.service.IAlarmRecordService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseBody; +import javax.validation.Valid; import java.util.List; /** @@ -44,10 +47,12 @@ */ @RequestMapping(value = "/listPage") @ResponseBody - public Object listPage(String condition) { + public Object listPage(@RequestBody @Valid AlarmRecordRequest request) { + + Page page = PageFactory.defaultPage(); - QueryWrapper query = new QueryWrapper<>(); - page = alarmRecordService.page(page,query); +// QueryWrapper query = new QueryWrapper<>(); + page = alarmRecordService.pageList(page,request); return ResponseData.success(super.packForBT(page)); } /** diff --git a/casic-common/pom.xml b/casic-common/pom.xml new file mode 100644 index 0000000..861e1ec --- /dev/null +++ b/casic-common/pom.xml @@ -0,0 +1,60 @@ + + + 4.0.0 + + com.casic + casic-PTZ + 2.0.0 + ../pom.xml + + + casic-common + 2.0.0 + jar + casic-common + casic 的spring boot版本 + + + + + com.casic + casic-core + ${core.version} + provided + + + com.casic + casic-admin-support + ${admin.version} + provided + + + com.casic + casic-export-support + ${extension.version} + + + org.springframework.boot + spring-boot-starter-web + ${boot.version} + provided + + + + com.casic + casic-data-es + 1.0.1.alpha + + + + + + src/main/java + + **/*.xml + + + + + \ No newline at end of file diff --git a/casic-common/src/main/java/com/casic/missiles/modular/system/consts/DataConst.java b/casic-common/src/main/java/com/casic/missiles/modular/system/consts/DataConst.java new file mode 100644 index 0000000..bbe581c --- /dev/null +++ b/casic-common/src/main/java/com/casic/missiles/modular/system/consts/DataConst.java @@ -0,0 +1,8 @@ +package com.casic.missiles.modular.system.consts; + +public class DataConst { + + public static final String DATA_GAS_ES_INDEX = "casic_pantilt_gas"; + + public static final String DATA_GAS_ES_TYPE = "casic_pantilt_gas"; +} diff --git a/casic-data/pom.xml b/casic-data/pom.xml index a3eba7d..3ad2c9c 100644 --- a/casic-data/pom.xml +++ b/casic-data/pom.xml @@ -41,6 +41,11 @@ provided + + com.casic + casic-data-es + 1.0.1.alpha + diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/consts/DataConst.java b/casic-data/src/main/java/com/casic/missiles/modular/system/consts/DataConst.java new file mode 100644 index 0000000..bbe581c --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/consts/DataConst.java @@ -0,0 +1,8 @@ +package com.casic.missiles.modular.system.consts; + +public class DataConst { + + public static final String DATA_GAS_ES_INDEX = "casic_pantilt_gas"; + + public static final String DATA_GAS_ES_TYPE = "casic_pantilt_gas"; +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java b/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java index 4460f11..dfc76ec 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java @@ -5,14 +5,17 @@ import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.AlarmRecordRequest; import com.casic.missiles.modular.system.model.AlarmRecord; import com.casic.missiles.modular.system.service.IAlarmRecordService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseBody; +import javax.validation.Valid; import java.util.List; /** @@ -44,10 +47,12 @@ */ @RequestMapping(value = "/listPage") @ResponseBody - public Object listPage(String condition) { + public Object listPage(@RequestBody @Valid AlarmRecordRequest request) { + + Page page = PageFactory.defaultPage(); - QueryWrapper query = new QueryWrapper<>(); - page = alarmRecordService.page(page,query); +// QueryWrapper query = new QueryWrapper<>(); + page = alarmRecordService.pageList(page,request); return ResponseData.success(super.packForBT(page)); } /** diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/DemoController.java b/casic-data/src/main/java/com/casic/missiles/modular/system/controller/DemoController.java deleted file mode 100644 index 87b6fec..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/DemoController.java +++ /dev/null @@ -1,41 +0,0 @@ -package com.casic.missiles.modular.system.controller; - - -import com.casic.missiles.model.application.event.core.EventPublisher; -import com.casic.missiles.model.application.event.enums.ModelEventTypeEnum; -import com.casic.missiles.model.response.ResponseData; -import com.casic.missiles.modular.system.event.UserEvent; -import com.casic.missiles.modular.system.model.User; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; -import org.springframework.web.bind.annotation.RestController; - -/** - * @ClassName DemoController - * @Description TODO - * @Author lenovo - * @Date 2020/6/13 15:38 - * @Version 1.0 - */ -@RestController -@RequestMapping("/demo") -public class DemoController { - @Autowired - private EventPublisher publisher; - - /** - * 获取mockToken - */ - @PostMapping("/list") - @ResponseBody - public Object list() { - User user = new User(); - user.setAccount("张三"); - publisher.publishEvent(new UserEvent(ModelEventTypeEnum.ADD, user)); - return ResponseData.success(); - } - - -} diff --git a/casic-common/pom.xml b/casic-common/pom.xml new file mode 100644 index 0000000..861e1ec --- /dev/null +++ b/casic-common/pom.xml @@ -0,0 +1,60 @@ + + + 4.0.0 + + com.casic + casic-PTZ + 2.0.0 + ../pom.xml + + + casic-common + 2.0.0 + jar + casic-common + casic 的spring boot版本 + + + + + com.casic + casic-core + ${core.version} + provided + + + com.casic + casic-admin-support + ${admin.version} + provided + + + com.casic + casic-export-support + ${extension.version} + + + org.springframework.boot + spring-boot-starter-web + ${boot.version} + provided + + + + com.casic + casic-data-es + 1.0.1.alpha + + + + + + src/main/java + + **/*.xml + + + + + \ No newline at end of file diff --git a/casic-common/src/main/java/com/casic/missiles/modular/system/consts/DataConst.java b/casic-common/src/main/java/com/casic/missiles/modular/system/consts/DataConst.java new file mode 100644 index 0000000..bbe581c --- /dev/null +++ b/casic-common/src/main/java/com/casic/missiles/modular/system/consts/DataConst.java @@ -0,0 +1,8 @@ +package com.casic.missiles.modular.system.consts; + +public class DataConst { + + public static final String DATA_GAS_ES_INDEX = "casic_pantilt_gas"; + + public static final String DATA_GAS_ES_TYPE = "casic_pantilt_gas"; +} diff --git a/casic-data/pom.xml b/casic-data/pom.xml index a3eba7d..3ad2c9c 100644 --- a/casic-data/pom.xml +++ b/casic-data/pom.xml @@ -41,6 +41,11 @@ provided + + com.casic + casic-data-es + 1.0.1.alpha + diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/consts/DataConst.java b/casic-data/src/main/java/com/casic/missiles/modular/system/consts/DataConst.java new file mode 100644 index 0000000..bbe581c --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/consts/DataConst.java @@ -0,0 +1,8 @@ +package com.casic.missiles.modular.system.consts; + +public class DataConst { + + public static final String DATA_GAS_ES_INDEX = "casic_pantilt_gas"; + + public static final String DATA_GAS_ES_TYPE = "casic_pantilt_gas"; +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java b/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java index 4460f11..dfc76ec 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java @@ -5,14 +5,17 @@ import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.AlarmRecordRequest; import com.casic.missiles.modular.system.model.AlarmRecord; import com.casic.missiles.modular.system.service.IAlarmRecordService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseBody; +import javax.validation.Valid; import java.util.List; /** @@ -44,10 +47,12 @@ */ @RequestMapping(value = "/listPage") @ResponseBody - public Object listPage(String condition) { + public Object listPage(@RequestBody @Valid AlarmRecordRequest request) { + + Page page = PageFactory.defaultPage(); - QueryWrapper query = new QueryWrapper<>(); - page = alarmRecordService.page(page,query); +// QueryWrapper query = new QueryWrapper<>(); + page = alarmRecordService.pageList(page,request); return ResponseData.success(super.packForBT(page)); } /** diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/DemoController.java b/casic-data/src/main/java/com/casic/missiles/modular/system/controller/DemoController.java deleted file mode 100644 index 87b6fec..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/DemoController.java +++ /dev/null @@ -1,41 +0,0 @@ -package com.casic.missiles.modular.system.controller; - - -import com.casic.missiles.model.application.event.core.EventPublisher; -import com.casic.missiles.model.application.event.enums.ModelEventTypeEnum; -import com.casic.missiles.model.response.ResponseData; -import com.casic.missiles.modular.system.event.UserEvent; -import com.casic.missiles.modular.system.model.User; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; -import org.springframework.web.bind.annotation.RestController; - -/** - * @ClassName DemoController - * @Description TODO - * @Author lenovo - * @Date 2020/6/13 15:38 - * @Version 1.0 - */ -@RestController -@RequestMapping("/demo") -public class DemoController { - @Autowired - private EventPublisher publisher; - - /** - * 获取mockToken - */ - @PostMapping("/list") - @ResponseBody - public Object list() { - User user = new User(); - user.setAccount("张三"); - publisher.publishEvent(new UserEvent(ModelEventTypeEnum.ADD, user)); - return ResponseData.success(); - } - - -} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/dto/AlarmRecordRequest.java b/casic-data/src/main/java/com/casic/missiles/modular/system/dto/AlarmRecordRequest.java new file mode 100644 index 0000000..9469954 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/dto/AlarmRecordRequest.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.system.dto; + + +import lombok.Data; + +/** + * @author zt + */ +@Data +public class AlarmRecordRequest { + + private Long stationId; + + private Long monitorId; + + private Long lineNum; + + private String alarmType; + + private String alarmStatus; + + private String startTime; + + private String endTime; + +} diff --git a/casic-common/pom.xml b/casic-common/pom.xml new file mode 100644 index 0000000..861e1ec --- /dev/null +++ b/casic-common/pom.xml @@ -0,0 +1,60 @@ + + + 4.0.0 + + com.casic + casic-PTZ + 2.0.0 + ../pom.xml + + + casic-common + 2.0.0 + jar + casic-common + casic 的spring boot版本 + + + + + com.casic + casic-core + ${core.version} + provided + + + com.casic + casic-admin-support + ${admin.version} + provided + + + com.casic + casic-export-support + ${extension.version} + + + org.springframework.boot + spring-boot-starter-web + ${boot.version} + provided + + + + com.casic + casic-data-es + 1.0.1.alpha + + + + + + src/main/java + + **/*.xml + + + + + \ No newline at end of file diff --git a/casic-common/src/main/java/com/casic/missiles/modular/system/consts/DataConst.java b/casic-common/src/main/java/com/casic/missiles/modular/system/consts/DataConst.java new file mode 100644 index 0000000..bbe581c --- /dev/null +++ b/casic-common/src/main/java/com/casic/missiles/modular/system/consts/DataConst.java @@ -0,0 +1,8 @@ +package com.casic.missiles.modular.system.consts; + +public class DataConst { + + public static final String DATA_GAS_ES_INDEX = "casic_pantilt_gas"; + + public static final String DATA_GAS_ES_TYPE = "casic_pantilt_gas"; +} diff --git a/casic-data/pom.xml b/casic-data/pom.xml index a3eba7d..3ad2c9c 100644 --- a/casic-data/pom.xml +++ b/casic-data/pom.xml @@ -41,6 +41,11 @@ provided + + com.casic + casic-data-es + 1.0.1.alpha + diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/consts/DataConst.java b/casic-data/src/main/java/com/casic/missiles/modular/system/consts/DataConst.java new file mode 100644 index 0000000..bbe581c --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/consts/DataConst.java @@ -0,0 +1,8 @@ +package com.casic.missiles.modular.system.consts; + +public class DataConst { + + public static final String DATA_GAS_ES_INDEX = "casic_pantilt_gas"; + + public static final String DATA_GAS_ES_TYPE = "casic_pantilt_gas"; +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java b/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java index 4460f11..dfc76ec 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java @@ -5,14 +5,17 @@ import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.AlarmRecordRequest; import com.casic.missiles.modular.system.model.AlarmRecord; import com.casic.missiles.modular.system.service.IAlarmRecordService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseBody; +import javax.validation.Valid; import java.util.List; /** @@ -44,10 +47,12 @@ */ @RequestMapping(value = "/listPage") @ResponseBody - public Object listPage(String condition) { + public Object listPage(@RequestBody @Valid AlarmRecordRequest request) { + + Page page = PageFactory.defaultPage(); - QueryWrapper query = new QueryWrapper<>(); - page = alarmRecordService.page(page,query); +// QueryWrapper query = new QueryWrapper<>(); + page = alarmRecordService.pageList(page,request); return ResponseData.success(super.packForBT(page)); } /** diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/DemoController.java b/casic-data/src/main/java/com/casic/missiles/modular/system/controller/DemoController.java deleted file mode 100644 index 87b6fec..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/DemoController.java +++ /dev/null @@ -1,41 +0,0 @@ -package com.casic.missiles.modular.system.controller; - - -import com.casic.missiles.model.application.event.core.EventPublisher; -import com.casic.missiles.model.application.event.enums.ModelEventTypeEnum; -import com.casic.missiles.model.response.ResponseData; -import com.casic.missiles.modular.system.event.UserEvent; -import com.casic.missiles.modular.system.model.User; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; -import org.springframework.web.bind.annotation.RestController; - -/** - * @ClassName DemoController - * @Description TODO - * @Author lenovo - * @Date 2020/6/13 15:38 - * @Version 1.0 - */ -@RestController -@RequestMapping("/demo") -public class DemoController { - @Autowired - private EventPublisher publisher; - - /** - * 获取mockToken - */ - @PostMapping("/list") - @ResponseBody - public Object list() { - User user = new User(); - user.setAccount("张三"); - publisher.publishEvent(new UserEvent(ModelEventTypeEnum.ADD, user)); - return ResponseData.success(); - } - - -} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/dto/AlarmRecordRequest.java b/casic-data/src/main/java/com/casic/missiles/modular/system/dto/AlarmRecordRequest.java new file mode 100644 index 0000000..9469954 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/dto/AlarmRecordRequest.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.system.dto; + + +import lombok.Data; + +/** + * @author zt + */ +@Data +public class AlarmRecordRequest { + + private Long stationId; + + private Long monitorId; + + private Long lineNum; + + private String alarmType; + + private String alarmStatus; + + private String startTime; + + private String endTime; + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/es/ElasticSearchQuery.java b/casic-data/src/main/java/com/casic/missiles/modular/system/es/ElasticSearchQuery.java new file mode 100644 index 0000000..4d7a38f --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/es/ElasticSearchQuery.java @@ -0,0 +1,257 @@ +package com.casic.missiles.modular.system.es; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; + +import java.io.Serializable; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +/** + * ES查询请求体 + * + * @author zhangyingjie123 + * @since 2020-11-30 + */ +public class ElasticSearchQuery { + private JSONObject body; + private JSONObject query; + private JSONObject bool; + private JSONArray boolMust; + private JSONObject filter; + private JSONObject filterBool; + private JSONArray filterBoolMust; + private JSONArray filterBoolMustnot; + + public static final String MUST_FLAG = "1"; + public static final String MUST_NOT_FLAG = "0"; + + public static final String QUERY = "query"; + public static final String BOOL = "bool"; + public static final String MUST = "must"; + public static final String MUST_NOT = "must_not"; + public static final String FILTER = "filter"; + + + /** + * 生成查询请求体基础结构: + * { + * "query": { + * "bool": { + * "must" [], + * "filter": { + * "bool": { + * "must": [], + * "must_not": [] + * } + * } + * } + * } + * } + */ + public ElasticSearchQuery() { + this.body = new JSONObject(); + this.query = this.query(); + this.bool = this.bool(); + this.boolMust = this.boolMust(); + this.filter = this.filter(); + this.filterBool = this.filterBool(); + this.filterBoolMust = this.filterBoolMust(); + this.filterBoolMustnot = this.filterBoolMustnot(); + } + + public ElasticSearchQuery(JSONObject body){ + this.body = body; + } + + public JSONObject getBody() { + return body; + } + + private JSONObject query(){ + if(ObjectUtil.isEmpty(this.body.get(QUERY))){ + this.body.put("query",new JSONObject()); + } + return this.body.getJSONObject(QUERY); + + } + + private JSONObject bool() { + JSONObject query = this.query; + if(ObjectUtil.isEmpty(query.get(BOOL))){ + query.put(BOOL,new JSONObject()); + } + return query.getJSONObject(BOOL); + } + + private JSONArray boolMust(){ + JSONObject bool = this.bool; + if(ObjectUtil.isEmpty(bool.get(MUST))){ + bool.put(MUST,new JSONArray()); + } + return bool.getJSONArray(MUST); + } + + private JSONObject filter(){ + JSONObject bool = this.bool; + if(ObjectUtil.isEmpty(bool.get(FILTER))){ + bool.put(FILTER,new JSONObject()); + } + return bool.getJSONObject(FILTER); + } + + private JSONObject filterBool(){ + JSONObject filter = this.filter; + if(ObjectUtil.isEmpty(filter.get(BOOL))){ + filter.put(BOOL,new JSONObject()); + } + return filter.getJSONObject(BOOL); + } + + private JSONArray filterBoolMust(){ + JSONObject bool = this.filterBool; + if(ObjectUtil.isEmpty(bool.get(MUST))){ + bool.put(MUST,new JSONArray()); + } + return bool.getJSONArray(MUST); + } + + private JSONArray filterBoolMustnot(){ + JSONObject bool = this.filterBool; + if(ObjectUtil.isEmpty(bool.get(MUST_NOT))){ + bool.put(MUST_NOT,new JSONArray()); + } + return bool.getJSONArray(MUST_NOT); + } + + public void match(String filed, Serializable value){ + JSONArray boolMust = this.boolMust; + JSONObject match = new JSONObject(); + JSONObject filedJson = new JSONObject(); + filedJson.put(filed,value); + match.put("match",filedJson); + boolMust.add(match); + } + + public void matchPhrase(String filed, Serializable value){ + JSONArray boolMust = this.boolMust; + JSONObject matchPhrase = new JSONObject(); + JSONObject filedJson = new JSONObject(); + filedJson.put(filed,value); + matchPhrase.put("match_phrase",filedJson); + boolMust.add(matchPhrase); + } + + public void term(String filed, Serializable value){ + this.term(filed,value,MUST_FLAG); + } + + public void term(String filed, Serializable value,String mustFlag){ + JSONObject filedJson = new JSONObject(); + filedJson.put(filed,value); + JSONObject term = new JSONObject(); + term.put("term",filedJson); + if(MUST_FLAG.equals(mustFlag)){ + this.filterBoolMust.add(term); + } + if(MUST_NOT_FLAG.equals(mustFlag)){ + this.filterBoolMustnot.add(term); + } + } + + public void terms(String filed,List value){ + this.terms(filed,value,MUST_FLAG); + } + + public void terms(String filed, List value, String mustFlag){ + JSONObject filedJson = new JSONObject(); + filedJson.put(filed,value); + JSONObject terms = new JSONObject(); + terms.put("terms",filedJson); + if(MUST_FLAG.equals(mustFlag)){ + this.filterBoolMust.add(terms); + } + if(MUST_NOT_FLAG.equals(mustFlag)){ + this.filterBoolMustnot.add(terms); + } + } + + public void range(String filed, Serializable from, Serializable to){ + this.range(filed,from,to,MUST_FLAG); + } + + public void range(String filed, Serializable from, Serializable to, String mustFlag){ + JSONObject rangeJson = new JSONObject(); + if(ObjectUtil.isNotEmpty(from)){ + rangeJson.put("from",from); + } + if(ObjectUtil.isNotEmpty(to)){ + rangeJson.put("to",to); + } + JSONObject filedJson = new JSONObject(); + filedJson.put(filed,rangeJson); + JSONObject range = new JSONObject(); + range.put("range",filedJson); + if(MUST_FLAG.equals(mustFlag)){ + this.filterBoolMust.add(range); + } + if(MUST_NOT_FLAG.equals(mustFlag)){ + this.filterBoolMustnot.add(range); + } + } + + public void size(int size){ + this.body.put("size",size); + } + + public void from(int from) { + this.body.put("from",from); + } + + public void sort(String sort, String order){ + JSONObject sortJson = new JSONObject(); + JSONObject orderJson = new JSONObject(); + orderJson.put("order",order); + sortJson.put(sort,orderJson); + this.body.put("sort",sortJson); + } + + public void aggs(String aggsName, String filed){ + JSONObject terms = new JSONObject(); + terms.put("field",filed); + JSONObject aggsTerms = new JSONObject(); + aggsTerms.put("terms",terms); + JSONObject aggsBody = new JSONObject(); + aggsBody.put(aggsName,aggsTerms); + this.body.put("aggs",aggsBody); + } + + public void aggs(JSONObject aggBody){ + this.body.put("aggs",aggBody); + } + + + + public static void main(String[] args) { + ElasticSearchQuery query = new ElasticSearchQuery(); + query.matchPhrase("name","张三"); + query.term("sex","2"); + List deptIds = new ArrayList<>(); + deptIds.add(0L); + deptIds.add(24L); + query.terms("deptId", deptIds); + Date date1 = DateUtil.parse("2020-01-01","yyyy-MM-dd"); + Date date2 = DateUtil.parse("2020-04-01","yyyy-MM-dd"); + query.range("collTime",date1.getTime(),date2.getTime()); + query.term("collState","3",MUST_NOT_FLAG); + query.size(10); + query.from(0); + query.sort("irId","asc"); + System.out.println(query.getBody().toJSONString()); + } + + +} diff --git a/casic-common/pom.xml b/casic-common/pom.xml new file mode 100644 index 0000000..861e1ec --- /dev/null +++ b/casic-common/pom.xml @@ -0,0 +1,60 @@ + + + 4.0.0 + + com.casic + casic-PTZ + 2.0.0 + ../pom.xml + + + casic-common + 2.0.0 + jar + casic-common + casic 的spring boot版本 + + + + + com.casic + casic-core + ${core.version} + provided + + + com.casic + casic-admin-support + ${admin.version} + provided + + + com.casic + casic-export-support + ${extension.version} + + + org.springframework.boot + spring-boot-starter-web + ${boot.version} + provided + + + + com.casic + casic-data-es + 1.0.1.alpha + + + + + + src/main/java + + **/*.xml + + + + + \ No newline at end of file diff --git a/casic-common/src/main/java/com/casic/missiles/modular/system/consts/DataConst.java b/casic-common/src/main/java/com/casic/missiles/modular/system/consts/DataConst.java new file mode 100644 index 0000000..bbe581c --- /dev/null +++ b/casic-common/src/main/java/com/casic/missiles/modular/system/consts/DataConst.java @@ -0,0 +1,8 @@ +package com.casic.missiles.modular.system.consts; + +public class DataConst { + + public static final String DATA_GAS_ES_INDEX = "casic_pantilt_gas"; + + public static final String DATA_GAS_ES_TYPE = "casic_pantilt_gas"; +} diff --git a/casic-data/pom.xml b/casic-data/pom.xml index a3eba7d..3ad2c9c 100644 --- a/casic-data/pom.xml +++ b/casic-data/pom.xml @@ -41,6 +41,11 @@ provided + + com.casic + casic-data-es + 1.0.1.alpha + diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/consts/DataConst.java b/casic-data/src/main/java/com/casic/missiles/modular/system/consts/DataConst.java new file mode 100644 index 0000000..bbe581c --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/consts/DataConst.java @@ -0,0 +1,8 @@ +package com.casic.missiles.modular.system.consts; + +public class DataConst { + + public static final String DATA_GAS_ES_INDEX = "casic_pantilt_gas"; + + public static final String DATA_GAS_ES_TYPE = "casic_pantilt_gas"; +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java b/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java index 4460f11..dfc76ec 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java @@ -5,14 +5,17 @@ import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.AlarmRecordRequest; import com.casic.missiles.modular.system.model.AlarmRecord; import com.casic.missiles.modular.system.service.IAlarmRecordService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseBody; +import javax.validation.Valid; import java.util.List; /** @@ -44,10 +47,12 @@ */ @RequestMapping(value = "/listPage") @ResponseBody - public Object listPage(String condition) { + public Object listPage(@RequestBody @Valid AlarmRecordRequest request) { + + Page page = PageFactory.defaultPage(); - QueryWrapper query = new QueryWrapper<>(); - page = alarmRecordService.page(page,query); +// QueryWrapper query = new QueryWrapper<>(); + page = alarmRecordService.pageList(page,request); return ResponseData.success(super.packForBT(page)); } /** diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/DemoController.java b/casic-data/src/main/java/com/casic/missiles/modular/system/controller/DemoController.java deleted file mode 100644 index 87b6fec..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/DemoController.java +++ /dev/null @@ -1,41 +0,0 @@ -package com.casic.missiles.modular.system.controller; - - -import com.casic.missiles.model.application.event.core.EventPublisher; -import com.casic.missiles.model.application.event.enums.ModelEventTypeEnum; -import com.casic.missiles.model.response.ResponseData; -import com.casic.missiles.modular.system.event.UserEvent; -import com.casic.missiles.modular.system.model.User; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; -import org.springframework.web.bind.annotation.RestController; - -/** - * @ClassName DemoController - * @Description TODO - * @Author lenovo - * @Date 2020/6/13 15:38 - * @Version 1.0 - */ -@RestController -@RequestMapping("/demo") -public class DemoController { - @Autowired - private EventPublisher publisher; - - /** - * 获取mockToken - */ - @PostMapping("/list") - @ResponseBody - public Object list() { - User user = new User(); - user.setAccount("张三"); - publisher.publishEvent(new UserEvent(ModelEventTypeEnum.ADD, user)); - return ResponseData.success(); - } - - -} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/dto/AlarmRecordRequest.java b/casic-data/src/main/java/com/casic/missiles/modular/system/dto/AlarmRecordRequest.java new file mode 100644 index 0000000..9469954 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/dto/AlarmRecordRequest.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.system.dto; + + +import lombok.Data; + +/** + * @author zt + */ +@Data +public class AlarmRecordRequest { + + private Long stationId; + + private Long monitorId; + + private Long lineNum; + + private String alarmType; + + private String alarmStatus; + + private String startTime; + + private String endTime; + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/es/ElasticSearchQuery.java b/casic-data/src/main/java/com/casic/missiles/modular/system/es/ElasticSearchQuery.java new file mode 100644 index 0000000..4d7a38f --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/es/ElasticSearchQuery.java @@ -0,0 +1,257 @@ +package com.casic.missiles.modular.system.es; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; + +import java.io.Serializable; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +/** + * ES查询请求体 + * + * @author zhangyingjie123 + * @since 2020-11-30 + */ +public class ElasticSearchQuery { + private JSONObject body; + private JSONObject query; + private JSONObject bool; + private JSONArray boolMust; + private JSONObject filter; + private JSONObject filterBool; + private JSONArray filterBoolMust; + private JSONArray filterBoolMustnot; + + public static final String MUST_FLAG = "1"; + public static final String MUST_NOT_FLAG = "0"; + + public static final String QUERY = "query"; + public static final String BOOL = "bool"; + public static final String MUST = "must"; + public static final String MUST_NOT = "must_not"; + public static final String FILTER = "filter"; + + + /** + * 生成查询请求体基础结构: + * { + * "query": { + * "bool": { + * "must" [], + * "filter": { + * "bool": { + * "must": [], + * "must_not": [] + * } + * } + * } + * } + * } + */ + public ElasticSearchQuery() { + this.body = new JSONObject(); + this.query = this.query(); + this.bool = this.bool(); + this.boolMust = this.boolMust(); + this.filter = this.filter(); + this.filterBool = this.filterBool(); + this.filterBoolMust = this.filterBoolMust(); + this.filterBoolMustnot = this.filterBoolMustnot(); + } + + public ElasticSearchQuery(JSONObject body){ + this.body = body; + } + + public JSONObject getBody() { + return body; + } + + private JSONObject query(){ + if(ObjectUtil.isEmpty(this.body.get(QUERY))){ + this.body.put("query",new JSONObject()); + } + return this.body.getJSONObject(QUERY); + + } + + private JSONObject bool() { + JSONObject query = this.query; + if(ObjectUtil.isEmpty(query.get(BOOL))){ + query.put(BOOL,new JSONObject()); + } + return query.getJSONObject(BOOL); + } + + private JSONArray boolMust(){ + JSONObject bool = this.bool; + if(ObjectUtil.isEmpty(bool.get(MUST))){ + bool.put(MUST,new JSONArray()); + } + return bool.getJSONArray(MUST); + } + + private JSONObject filter(){ + JSONObject bool = this.bool; + if(ObjectUtil.isEmpty(bool.get(FILTER))){ + bool.put(FILTER,new JSONObject()); + } + return bool.getJSONObject(FILTER); + } + + private JSONObject filterBool(){ + JSONObject filter = this.filter; + if(ObjectUtil.isEmpty(filter.get(BOOL))){ + filter.put(BOOL,new JSONObject()); + } + return filter.getJSONObject(BOOL); + } + + private JSONArray filterBoolMust(){ + JSONObject bool = this.filterBool; + if(ObjectUtil.isEmpty(bool.get(MUST))){ + bool.put(MUST,new JSONArray()); + } + return bool.getJSONArray(MUST); + } + + private JSONArray filterBoolMustnot(){ + JSONObject bool = this.filterBool; + if(ObjectUtil.isEmpty(bool.get(MUST_NOT))){ + bool.put(MUST_NOT,new JSONArray()); + } + return bool.getJSONArray(MUST_NOT); + } + + public void match(String filed, Serializable value){ + JSONArray boolMust = this.boolMust; + JSONObject match = new JSONObject(); + JSONObject filedJson = new JSONObject(); + filedJson.put(filed,value); + match.put("match",filedJson); + boolMust.add(match); + } + + public void matchPhrase(String filed, Serializable value){ + JSONArray boolMust = this.boolMust; + JSONObject matchPhrase = new JSONObject(); + JSONObject filedJson = new JSONObject(); + filedJson.put(filed,value); + matchPhrase.put("match_phrase",filedJson); + boolMust.add(matchPhrase); + } + + public void term(String filed, Serializable value){ + this.term(filed,value,MUST_FLAG); + } + + public void term(String filed, Serializable value,String mustFlag){ + JSONObject filedJson = new JSONObject(); + filedJson.put(filed,value); + JSONObject term = new JSONObject(); + term.put("term",filedJson); + if(MUST_FLAG.equals(mustFlag)){ + this.filterBoolMust.add(term); + } + if(MUST_NOT_FLAG.equals(mustFlag)){ + this.filterBoolMustnot.add(term); + } + } + + public void terms(String filed,List value){ + this.terms(filed,value,MUST_FLAG); + } + + public void terms(String filed, List value, String mustFlag){ + JSONObject filedJson = new JSONObject(); + filedJson.put(filed,value); + JSONObject terms = new JSONObject(); + terms.put("terms",filedJson); + if(MUST_FLAG.equals(mustFlag)){ + this.filterBoolMust.add(terms); + } + if(MUST_NOT_FLAG.equals(mustFlag)){ + this.filterBoolMustnot.add(terms); + } + } + + public void range(String filed, Serializable from, Serializable to){ + this.range(filed,from,to,MUST_FLAG); + } + + public void range(String filed, Serializable from, Serializable to, String mustFlag){ + JSONObject rangeJson = new JSONObject(); + if(ObjectUtil.isNotEmpty(from)){ + rangeJson.put("from",from); + } + if(ObjectUtil.isNotEmpty(to)){ + rangeJson.put("to",to); + } + JSONObject filedJson = new JSONObject(); + filedJson.put(filed,rangeJson); + JSONObject range = new JSONObject(); + range.put("range",filedJson); + if(MUST_FLAG.equals(mustFlag)){ + this.filterBoolMust.add(range); + } + if(MUST_NOT_FLAG.equals(mustFlag)){ + this.filterBoolMustnot.add(range); + } + } + + public void size(int size){ + this.body.put("size",size); + } + + public void from(int from) { + this.body.put("from",from); + } + + public void sort(String sort, String order){ + JSONObject sortJson = new JSONObject(); + JSONObject orderJson = new JSONObject(); + orderJson.put("order",order); + sortJson.put(sort,orderJson); + this.body.put("sort",sortJson); + } + + public void aggs(String aggsName, String filed){ + JSONObject terms = new JSONObject(); + terms.put("field",filed); + JSONObject aggsTerms = new JSONObject(); + aggsTerms.put("terms",terms); + JSONObject aggsBody = new JSONObject(); + aggsBody.put(aggsName,aggsTerms); + this.body.put("aggs",aggsBody); + } + + public void aggs(JSONObject aggBody){ + this.body.put("aggs",aggBody); + } + + + + public static void main(String[] args) { + ElasticSearchQuery query = new ElasticSearchQuery(); + query.matchPhrase("name","张三"); + query.term("sex","2"); + List deptIds = new ArrayList<>(); + deptIds.add(0L); + deptIds.add(24L); + query.terms("deptId", deptIds); + Date date1 = DateUtil.parse("2020-01-01","yyyy-MM-dd"); + Date date2 = DateUtil.parse("2020-04-01","yyyy-MM-dd"); + query.range("collTime",date1.getTime(),date2.getTime()); + query.term("collState","3",MUST_NOT_FLAG); + query.size(10); + query.from(0); + query.sort("irId","asc"); + System.out.println(query.getBody().toJSONString()); + } + + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/es/ElasticSearchUtil.java b/casic-data/src/main/java/com/casic/missiles/modular/system/es/ElasticSearchUtil.java new file mode 100644 index 0000000..e9da021 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/es/ElasticSearchUtil.java @@ -0,0 +1,172 @@ +package com.casic.missiles.modular.system.es; + +import cn.hutool.core.util.ObjectUtil; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import com.casic.missiles.core.es.EsResponse; +import org.apache.http.nio.entity.NStringEntity; +import org.apache.http.util.EntityUtils; +import org.elasticsearch.client.Request; +import org.elasticsearch.client.RequestOptions; +import org.elasticsearch.client.Response; +import org.elasticsearch.client.RestClient; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.core.env.Environment; +import org.springframework.stereotype.Component; + +import javax.annotation.PostConstruct; +import java.io.IOException; +import java.util.ArrayList; +import java.util.Base64; +import java.util.List; + +/** + * ES工具类 + * + * @author zhangyingjie123 + * @since 2020-11-30 + */ +@Component +public class ElasticSearchUtil { + private static final Logger logger = LoggerFactory.getLogger(ElasticSearchUtil.class); + + @Autowired + private RestClient clientMapping; + @Autowired + private Environment env; + + private static String username; + private static String password; + + private static RestClient client; + + @PostConstruct + public void init(){ + client = clientMapping; + username = env.getProperty("casic.data.es.username"); + password = env.getProperty("casic.data.es.password"); + } + + public static JSONObject selectDocumentById(String index, String type, String id) throws IOException{ + String method = "GET"; + String endPoint = index.concat("/").concat(type).concat("/").concat(id); + Response response = performRequest(method,endPoint,null); + JSONObject result = JSONObject.parseObject(EntityUtils.toString(response.getEntity())); + return result.getJSONObject("_source"); + } + + public static Response addDocumentById(String index, String type, String id, Object entity) throws IOException{ + String method = "POST"; + String endPoint = index.concat("/").concat(type).concat("/"); + if(ObjectUtil.isNotEmpty(id)){ + endPoint.concat(id); + } + endPoint.concat("?refresh=true"); + logger.debug(entity.toString()); + return performRequest(method,endPoint,JSON.toJSONString(entity)); + } + + public static Response deleteDocumentById(String index, String type, String id) throws IOException{ + String method = "DELETE"; + String endPoint = index.concat("/").concat(type).concat("/").concat(id).concat("?refresh=true"); + return performRequest(method,endPoint,null); + } + + public static Response updateDocumentById(String index, String type, String id, Object entity) throws IOException{ + String method = "POST"; + String endPoint = index.concat("/").concat(type).concat("/").concat(id).concat("?refresh=true"); + logger.debug(entity.toString()); + return performRequest(method,endPoint,JSON.toJSONString(entity)); + } + + public static EsResponse searchQuery(String index, String type, ElasticSearchQuery query) throws IOException{ + String method = "POST"; + String entPoint = index.concat("/").concat(type).concat("/").concat("_search"); + logger.debug(query.getBody().toString()); + Response response = performRequest(method, entPoint, query.getBody().toString()); + // 获取response body,转换为json对象 + JSONObject result = JSONObject.parseObject(EntityUtils.toString(response.getEntity())); + return result.toJavaObject(EsResponse.class); + } + + public static Response aggsQuery(String index, String type, ElasticSearchQuery query) throws IOException{ + String method = "POST"; + String entPoint = index.concat("/").concat(type).concat("/").concat("_search"); + logger.debug(query.getBody().toString()); + Response response = performRequest(method, entPoint, query.getBody().toString()); + return response; + } + + public static List searchQueryScroll(String index, String type, ElasticSearchQuery query) throws IOException{ + // 首次查询,提交查询条件,endpoint增加‘?scroll=1m’ + List results = new ArrayList<>(); + String method = "POST"; + String entPoint = index.concat("/").concat(type).concat("/").concat("_search").concat("?scroll=1m"); + logger.debug(query.getBody().toString()); + Response response = performRequest(method, entPoint, query.getBody().toString()); + JSONObject result = JSONObject.parseObject(EntityUtils.toString(response.getEntity())); + EsResponse esResponse = result.toJavaObject(EsResponse.class); + String scrollId = result.getString("_scroll_id"); + if(ObjectUtil.isNotEmpty(esResponse.getDatas())){ + results.addAll(esResponse.getDatas()); + } + // 循环发送scroll请求,直到返回结果为空 + entPoint = "_search/scroll"; + JSONObject scrollBody = new JSONObject(); + scrollBody.put("scroll","1m"); + scrollBody.put("scroll_id",scrollId); + while (esResponse.getDatas().size() > 0){ + method = "GET"; + response = performRequest(method, entPoint, scrollBody.toString()); + result = JSONObject.parseObject(EntityUtils.toString(response.getEntity())); + esResponse = result.toJavaObject(EsResponse.class); + if(ObjectUtil.isNotEmpty(esResponse.getDatas())){ + results.addAll(esResponse.getDatas()); + } + } + // 查询完成后,及时删除scroll,释放资源 + scrollBody.remove("scroll"); + method = "DELETE"; + performRequest(method, entPoint, scrollBody.toString()); + return results; + } + + public static Response bulk(String index,String type,String entity) throws IOException{ + String method = "POST"; + StringBuilder endPoint = new StringBuilder(); + if(ObjectUtil.isNotEmpty(index)){ + endPoint.append(index).append("/"); + } + if(ObjectUtil.isNotEmpty(type)){ + endPoint.append(type).append("/"); + } + endPoint.append("_bulk"); + endPoint.append("?refresh=true"); + logger.debug(entity); + return performRequest(method,endPoint.toString(),entity); + } + + private static Response performRequest(String method, String endpoint, String entity) throws IOException { + //logger.info(method + " " + endpoint); + Request request = new Request(method,endpoint); + if(ObjectUtil.isNotEmpty(entity)){ + request.setEntity(new NStringEntity(entity,"utf-8")); + } + + if(ObjectUtil.isNotEmpty(username) && ObjectUtil.isNotEmpty(password)){ + RequestOptions.Builder builder = RequestOptions.DEFAULT.toBuilder(); + String token = username.concat(":").concat(password); + String base64encode = Base64.getEncoder().encodeToString(token.getBytes("utf-8")); + builder.addHeader("Authorization", "Basic " + base64encode ); + request.setOptions(builder.build()); + } + + + Response response = client.performRequest(request); + logger.debug(response.toString()); + return response; + } + +} diff --git a/casic-common/pom.xml b/casic-common/pom.xml new file mode 100644 index 0000000..861e1ec --- /dev/null +++ b/casic-common/pom.xml @@ -0,0 +1,60 @@ + + + 4.0.0 + + com.casic + casic-PTZ + 2.0.0 + ../pom.xml + + + casic-common + 2.0.0 + jar + casic-common + casic 的spring boot版本 + + + + + com.casic + casic-core + ${core.version} + provided + + + com.casic + casic-admin-support + ${admin.version} + provided + + + com.casic + casic-export-support + ${extension.version} + + + org.springframework.boot + spring-boot-starter-web + ${boot.version} + provided + + + + com.casic + casic-data-es + 1.0.1.alpha + + + + + + src/main/java + + **/*.xml + + + + + \ No newline at end of file diff --git a/casic-common/src/main/java/com/casic/missiles/modular/system/consts/DataConst.java b/casic-common/src/main/java/com/casic/missiles/modular/system/consts/DataConst.java new file mode 100644 index 0000000..bbe581c --- /dev/null +++ b/casic-common/src/main/java/com/casic/missiles/modular/system/consts/DataConst.java @@ -0,0 +1,8 @@ +package com.casic.missiles.modular.system.consts; + +public class DataConst { + + public static final String DATA_GAS_ES_INDEX = "casic_pantilt_gas"; + + public static final String DATA_GAS_ES_TYPE = "casic_pantilt_gas"; +} diff --git a/casic-data/pom.xml b/casic-data/pom.xml index a3eba7d..3ad2c9c 100644 --- a/casic-data/pom.xml +++ b/casic-data/pom.xml @@ -41,6 +41,11 @@ provided + + com.casic + casic-data-es + 1.0.1.alpha + diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/consts/DataConst.java b/casic-data/src/main/java/com/casic/missiles/modular/system/consts/DataConst.java new file mode 100644 index 0000000..bbe581c --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/consts/DataConst.java @@ -0,0 +1,8 @@ +package com.casic.missiles.modular.system.consts; + +public class DataConst { + + public static final String DATA_GAS_ES_INDEX = "casic_pantilt_gas"; + + public static final String DATA_GAS_ES_TYPE = "casic_pantilt_gas"; +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java b/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java index 4460f11..dfc76ec 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java @@ -5,14 +5,17 @@ import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.AlarmRecordRequest; import com.casic.missiles.modular.system.model.AlarmRecord; import com.casic.missiles.modular.system.service.IAlarmRecordService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseBody; +import javax.validation.Valid; import java.util.List; /** @@ -44,10 +47,12 @@ */ @RequestMapping(value = "/listPage") @ResponseBody - public Object listPage(String condition) { + public Object listPage(@RequestBody @Valid AlarmRecordRequest request) { + + Page page = PageFactory.defaultPage(); - QueryWrapper query = new QueryWrapper<>(); - page = alarmRecordService.page(page,query); +// QueryWrapper query = new QueryWrapper<>(); + page = alarmRecordService.pageList(page,request); return ResponseData.success(super.packForBT(page)); } /** diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/DemoController.java b/casic-data/src/main/java/com/casic/missiles/modular/system/controller/DemoController.java deleted file mode 100644 index 87b6fec..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/DemoController.java +++ /dev/null @@ -1,41 +0,0 @@ -package com.casic.missiles.modular.system.controller; - - -import com.casic.missiles.model.application.event.core.EventPublisher; -import com.casic.missiles.model.application.event.enums.ModelEventTypeEnum; -import com.casic.missiles.model.response.ResponseData; -import com.casic.missiles.modular.system.event.UserEvent; -import com.casic.missiles.modular.system.model.User; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; -import org.springframework.web.bind.annotation.RestController; - -/** - * @ClassName DemoController - * @Description TODO - * @Author lenovo - * @Date 2020/6/13 15:38 - * @Version 1.0 - */ -@RestController -@RequestMapping("/demo") -public class DemoController { - @Autowired - private EventPublisher publisher; - - /** - * 获取mockToken - */ - @PostMapping("/list") - @ResponseBody - public Object list() { - User user = new User(); - user.setAccount("张三"); - publisher.publishEvent(new UserEvent(ModelEventTypeEnum.ADD, user)); - return ResponseData.success(); - } - - -} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/dto/AlarmRecordRequest.java b/casic-data/src/main/java/com/casic/missiles/modular/system/dto/AlarmRecordRequest.java new file mode 100644 index 0000000..9469954 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/dto/AlarmRecordRequest.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.system.dto; + + +import lombok.Data; + +/** + * @author zt + */ +@Data +public class AlarmRecordRequest { + + private Long stationId; + + private Long monitorId; + + private Long lineNum; + + private String alarmType; + + private String alarmStatus; + + private String startTime; + + private String endTime; + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/es/ElasticSearchQuery.java b/casic-data/src/main/java/com/casic/missiles/modular/system/es/ElasticSearchQuery.java new file mode 100644 index 0000000..4d7a38f --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/es/ElasticSearchQuery.java @@ -0,0 +1,257 @@ +package com.casic.missiles.modular.system.es; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; + +import java.io.Serializable; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +/** + * ES查询请求体 + * + * @author zhangyingjie123 + * @since 2020-11-30 + */ +public class ElasticSearchQuery { + private JSONObject body; + private JSONObject query; + private JSONObject bool; + private JSONArray boolMust; + private JSONObject filter; + private JSONObject filterBool; + private JSONArray filterBoolMust; + private JSONArray filterBoolMustnot; + + public static final String MUST_FLAG = "1"; + public static final String MUST_NOT_FLAG = "0"; + + public static final String QUERY = "query"; + public static final String BOOL = "bool"; + public static final String MUST = "must"; + public static final String MUST_NOT = "must_not"; + public static final String FILTER = "filter"; + + + /** + * 生成查询请求体基础结构: + * { + * "query": { + * "bool": { + * "must" [], + * "filter": { + * "bool": { + * "must": [], + * "must_not": [] + * } + * } + * } + * } + * } + */ + public ElasticSearchQuery() { + this.body = new JSONObject(); + this.query = this.query(); + this.bool = this.bool(); + this.boolMust = this.boolMust(); + this.filter = this.filter(); + this.filterBool = this.filterBool(); + this.filterBoolMust = this.filterBoolMust(); + this.filterBoolMustnot = this.filterBoolMustnot(); + } + + public ElasticSearchQuery(JSONObject body){ + this.body = body; + } + + public JSONObject getBody() { + return body; + } + + private JSONObject query(){ + if(ObjectUtil.isEmpty(this.body.get(QUERY))){ + this.body.put("query",new JSONObject()); + } + return this.body.getJSONObject(QUERY); + + } + + private JSONObject bool() { + JSONObject query = this.query; + if(ObjectUtil.isEmpty(query.get(BOOL))){ + query.put(BOOL,new JSONObject()); + } + return query.getJSONObject(BOOL); + } + + private JSONArray boolMust(){ + JSONObject bool = this.bool; + if(ObjectUtil.isEmpty(bool.get(MUST))){ + bool.put(MUST,new JSONArray()); + } + return bool.getJSONArray(MUST); + } + + private JSONObject filter(){ + JSONObject bool = this.bool; + if(ObjectUtil.isEmpty(bool.get(FILTER))){ + bool.put(FILTER,new JSONObject()); + } + return bool.getJSONObject(FILTER); + } + + private JSONObject filterBool(){ + JSONObject filter = this.filter; + if(ObjectUtil.isEmpty(filter.get(BOOL))){ + filter.put(BOOL,new JSONObject()); + } + return filter.getJSONObject(BOOL); + } + + private JSONArray filterBoolMust(){ + JSONObject bool = this.filterBool; + if(ObjectUtil.isEmpty(bool.get(MUST))){ + bool.put(MUST,new JSONArray()); + } + return bool.getJSONArray(MUST); + } + + private JSONArray filterBoolMustnot(){ + JSONObject bool = this.filterBool; + if(ObjectUtil.isEmpty(bool.get(MUST_NOT))){ + bool.put(MUST_NOT,new JSONArray()); + } + return bool.getJSONArray(MUST_NOT); + } + + public void match(String filed, Serializable value){ + JSONArray boolMust = this.boolMust; + JSONObject match = new JSONObject(); + JSONObject filedJson = new JSONObject(); + filedJson.put(filed,value); + match.put("match",filedJson); + boolMust.add(match); + } + + public void matchPhrase(String filed, Serializable value){ + JSONArray boolMust = this.boolMust; + JSONObject matchPhrase = new JSONObject(); + JSONObject filedJson = new JSONObject(); + filedJson.put(filed,value); + matchPhrase.put("match_phrase",filedJson); + boolMust.add(matchPhrase); + } + + public void term(String filed, Serializable value){ + this.term(filed,value,MUST_FLAG); + } + + public void term(String filed, Serializable value,String mustFlag){ + JSONObject filedJson = new JSONObject(); + filedJson.put(filed,value); + JSONObject term = new JSONObject(); + term.put("term",filedJson); + if(MUST_FLAG.equals(mustFlag)){ + this.filterBoolMust.add(term); + } + if(MUST_NOT_FLAG.equals(mustFlag)){ + this.filterBoolMustnot.add(term); + } + } + + public void terms(String filed,List value){ + this.terms(filed,value,MUST_FLAG); + } + + public void terms(String filed, List value, String mustFlag){ + JSONObject filedJson = new JSONObject(); + filedJson.put(filed,value); + JSONObject terms = new JSONObject(); + terms.put("terms",filedJson); + if(MUST_FLAG.equals(mustFlag)){ + this.filterBoolMust.add(terms); + } + if(MUST_NOT_FLAG.equals(mustFlag)){ + this.filterBoolMustnot.add(terms); + } + } + + public void range(String filed, Serializable from, Serializable to){ + this.range(filed,from,to,MUST_FLAG); + } + + public void range(String filed, Serializable from, Serializable to, String mustFlag){ + JSONObject rangeJson = new JSONObject(); + if(ObjectUtil.isNotEmpty(from)){ + rangeJson.put("from",from); + } + if(ObjectUtil.isNotEmpty(to)){ + rangeJson.put("to",to); + } + JSONObject filedJson = new JSONObject(); + filedJson.put(filed,rangeJson); + JSONObject range = new JSONObject(); + range.put("range",filedJson); + if(MUST_FLAG.equals(mustFlag)){ + this.filterBoolMust.add(range); + } + if(MUST_NOT_FLAG.equals(mustFlag)){ + this.filterBoolMustnot.add(range); + } + } + + public void size(int size){ + this.body.put("size",size); + } + + public void from(int from) { + this.body.put("from",from); + } + + public void sort(String sort, String order){ + JSONObject sortJson = new JSONObject(); + JSONObject orderJson = new JSONObject(); + orderJson.put("order",order); + sortJson.put(sort,orderJson); + this.body.put("sort",sortJson); + } + + public void aggs(String aggsName, String filed){ + JSONObject terms = new JSONObject(); + terms.put("field",filed); + JSONObject aggsTerms = new JSONObject(); + aggsTerms.put("terms",terms); + JSONObject aggsBody = new JSONObject(); + aggsBody.put(aggsName,aggsTerms); + this.body.put("aggs",aggsBody); + } + + public void aggs(JSONObject aggBody){ + this.body.put("aggs",aggBody); + } + + + + public static void main(String[] args) { + ElasticSearchQuery query = new ElasticSearchQuery(); + query.matchPhrase("name","张三"); + query.term("sex","2"); + List deptIds = new ArrayList<>(); + deptIds.add(0L); + deptIds.add(24L); + query.terms("deptId", deptIds); + Date date1 = DateUtil.parse("2020-01-01","yyyy-MM-dd"); + Date date2 = DateUtil.parse("2020-04-01","yyyy-MM-dd"); + query.range("collTime",date1.getTime(),date2.getTime()); + query.term("collState","3",MUST_NOT_FLAG); + query.size(10); + query.from(0); + query.sort("irId","asc"); + System.out.println(query.getBody().toJSONString()); + } + + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/es/ElasticSearchUtil.java b/casic-data/src/main/java/com/casic/missiles/modular/system/es/ElasticSearchUtil.java new file mode 100644 index 0000000..e9da021 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/es/ElasticSearchUtil.java @@ -0,0 +1,172 @@ +package com.casic.missiles.modular.system.es; + +import cn.hutool.core.util.ObjectUtil; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import com.casic.missiles.core.es.EsResponse; +import org.apache.http.nio.entity.NStringEntity; +import org.apache.http.util.EntityUtils; +import org.elasticsearch.client.Request; +import org.elasticsearch.client.RequestOptions; +import org.elasticsearch.client.Response; +import org.elasticsearch.client.RestClient; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.core.env.Environment; +import org.springframework.stereotype.Component; + +import javax.annotation.PostConstruct; +import java.io.IOException; +import java.util.ArrayList; +import java.util.Base64; +import java.util.List; + +/** + * ES工具类 + * + * @author zhangyingjie123 + * @since 2020-11-30 + */ +@Component +public class ElasticSearchUtil { + private static final Logger logger = LoggerFactory.getLogger(ElasticSearchUtil.class); + + @Autowired + private RestClient clientMapping; + @Autowired + private Environment env; + + private static String username; + private static String password; + + private static RestClient client; + + @PostConstruct + public void init(){ + client = clientMapping; + username = env.getProperty("casic.data.es.username"); + password = env.getProperty("casic.data.es.password"); + } + + public static JSONObject selectDocumentById(String index, String type, String id) throws IOException{ + String method = "GET"; + String endPoint = index.concat("/").concat(type).concat("/").concat(id); + Response response = performRequest(method,endPoint,null); + JSONObject result = JSONObject.parseObject(EntityUtils.toString(response.getEntity())); + return result.getJSONObject("_source"); + } + + public static Response addDocumentById(String index, String type, String id, Object entity) throws IOException{ + String method = "POST"; + String endPoint = index.concat("/").concat(type).concat("/"); + if(ObjectUtil.isNotEmpty(id)){ + endPoint.concat(id); + } + endPoint.concat("?refresh=true"); + logger.debug(entity.toString()); + return performRequest(method,endPoint,JSON.toJSONString(entity)); + } + + public static Response deleteDocumentById(String index, String type, String id) throws IOException{ + String method = "DELETE"; + String endPoint = index.concat("/").concat(type).concat("/").concat(id).concat("?refresh=true"); + return performRequest(method,endPoint,null); + } + + public static Response updateDocumentById(String index, String type, String id, Object entity) throws IOException{ + String method = "POST"; + String endPoint = index.concat("/").concat(type).concat("/").concat(id).concat("?refresh=true"); + logger.debug(entity.toString()); + return performRequest(method,endPoint,JSON.toJSONString(entity)); + } + + public static EsResponse searchQuery(String index, String type, ElasticSearchQuery query) throws IOException{ + String method = "POST"; + String entPoint = index.concat("/").concat(type).concat("/").concat("_search"); + logger.debug(query.getBody().toString()); + Response response = performRequest(method, entPoint, query.getBody().toString()); + // 获取response body,转换为json对象 + JSONObject result = JSONObject.parseObject(EntityUtils.toString(response.getEntity())); + return result.toJavaObject(EsResponse.class); + } + + public static Response aggsQuery(String index, String type, ElasticSearchQuery query) throws IOException{ + String method = "POST"; + String entPoint = index.concat("/").concat(type).concat("/").concat("_search"); + logger.debug(query.getBody().toString()); + Response response = performRequest(method, entPoint, query.getBody().toString()); + return response; + } + + public static List searchQueryScroll(String index, String type, ElasticSearchQuery query) throws IOException{ + // 首次查询,提交查询条件,endpoint增加‘?scroll=1m’ + List results = new ArrayList<>(); + String method = "POST"; + String entPoint = index.concat("/").concat(type).concat("/").concat("_search").concat("?scroll=1m"); + logger.debug(query.getBody().toString()); + Response response = performRequest(method, entPoint, query.getBody().toString()); + JSONObject result = JSONObject.parseObject(EntityUtils.toString(response.getEntity())); + EsResponse esResponse = result.toJavaObject(EsResponse.class); + String scrollId = result.getString("_scroll_id"); + if(ObjectUtil.isNotEmpty(esResponse.getDatas())){ + results.addAll(esResponse.getDatas()); + } + // 循环发送scroll请求,直到返回结果为空 + entPoint = "_search/scroll"; + JSONObject scrollBody = new JSONObject(); + scrollBody.put("scroll","1m"); + scrollBody.put("scroll_id",scrollId); + while (esResponse.getDatas().size() > 0){ + method = "GET"; + response = performRequest(method, entPoint, scrollBody.toString()); + result = JSONObject.parseObject(EntityUtils.toString(response.getEntity())); + esResponse = result.toJavaObject(EsResponse.class); + if(ObjectUtil.isNotEmpty(esResponse.getDatas())){ + results.addAll(esResponse.getDatas()); + } + } + // 查询完成后,及时删除scroll,释放资源 + scrollBody.remove("scroll"); + method = "DELETE"; + performRequest(method, entPoint, scrollBody.toString()); + return results; + } + + public static Response bulk(String index,String type,String entity) throws IOException{ + String method = "POST"; + StringBuilder endPoint = new StringBuilder(); + if(ObjectUtil.isNotEmpty(index)){ + endPoint.append(index).append("/"); + } + if(ObjectUtil.isNotEmpty(type)){ + endPoint.append(type).append("/"); + } + endPoint.append("_bulk"); + endPoint.append("?refresh=true"); + logger.debug(entity); + return performRequest(method,endPoint.toString(),entity); + } + + private static Response performRequest(String method, String endpoint, String entity) throws IOException { + //logger.info(method + " " + endpoint); + Request request = new Request(method,endpoint); + if(ObjectUtil.isNotEmpty(entity)){ + request.setEntity(new NStringEntity(entity,"utf-8")); + } + + if(ObjectUtil.isNotEmpty(username) && ObjectUtil.isNotEmpty(password)){ + RequestOptions.Builder builder = RequestOptions.DEFAULT.toBuilder(); + String token = username.concat(":").concat(password); + String base64encode = Base64.getEncoder().encodeToString(token.getBytes("utf-8")); + builder.addHeader("Authorization", "Basic " + base64encode ); + request.setOptions(builder.build()); + } + + + Response response = client.performRequest(request); + logger.debug(response.toString()); + return response; + } + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/event/UserEvent.java b/casic-data/src/main/java/com/casic/missiles/modular/system/event/UserEvent.java deleted file mode 100644 index c6ed867..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/event/UserEvent.java +++ /dev/null @@ -1,23 +0,0 @@ -package com.casic.missiles.modular.system.event; - -import com.casic.missiles.model.application.event.core.ModelEvent; -import com.casic.missiles.model.application.event.type.AbstractEventTypeEnum; -import com.casic.missiles.modular.system.model.User; - -/** - * 用户事件 - * - * @author lwh - */ -public class UserEvent extends ModelEvent { - /** - * Create a new {@code ApplicationEvent}. - * - * @param type 事件类型 - * @param source the object on which the event initially occurred or with - * which the event is associated (never {@code null}) - */ - public UserEvent(AbstractEventTypeEnum type, User source) { - super(type, source); - } -} diff --git a/casic-common/pom.xml b/casic-common/pom.xml new file mode 100644 index 0000000..861e1ec --- /dev/null +++ b/casic-common/pom.xml @@ -0,0 +1,60 @@ + + + 4.0.0 + + com.casic + casic-PTZ + 2.0.0 + ../pom.xml + + + casic-common + 2.0.0 + jar + casic-common + casic 的spring boot版本 + + + + + com.casic + casic-core + ${core.version} + provided + + + com.casic + casic-admin-support + ${admin.version} + provided + + + com.casic + casic-export-support + ${extension.version} + + + org.springframework.boot + spring-boot-starter-web + ${boot.version} + provided + + + + com.casic + casic-data-es + 1.0.1.alpha + + + + + + src/main/java + + **/*.xml + + + + + \ No newline at end of file diff --git a/casic-common/src/main/java/com/casic/missiles/modular/system/consts/DataConst.java b/casic-common/src/main/java/com/casic/missiles/modular/system/consts/DataConst.java new file mode 100644 index 0000000..bbe581c --- /dev/null +++ b/casic-common/src/main/java/com/casic/missiles/modular/system/consts/DataConst.java @@ -0,0 +1,8 @@ +package com.casic.missiles.modular.system.consts; + +public class DataConst { + + public static final String DATA_GAS_ES_INDEX = "casic_pantilt_gas"; + + public static final String DATA_GAS_ES_TYPE = "casic_pantilt_gas"; +} diff --git a/casic-data/pom.xml b/casic-data/pom.xml index a3eba7d..3ad2c9c 100644 --- a/casic-data/pom.xml +++ b/casic-data/pom.xml @@ -41,6 +41,11 @@ provided + + com.casic + casic-data-es + 1.0.1.alpha + diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/consts/DataConst.java b/casic-data/src/main/java/com/casic/missiles/modular/system/consts/DataConst.java new file mode 100644 index 0000000..bbe581c --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/consts/DataConst.java @@ -0,0 +1,8 @@ +package com.casic.missiles.modular.system.consts; + +public class DataConst { + + public static final String DATA_GAS_ES_INDEX = "casic_pantilt_gas"; + + public static final String DATA_GAS_ES_TYPE = "casic_pantilt_gas"; +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java b/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java index 4460f11..dfc76ec 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java @@ -5,14 +5,17 @@ import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.AlarmRecordRequest; import com.casic.missiles.modular.system.model.AlarmRecord; import com.casic.missiles.modular.system.service.IAlarmRecordService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseBody; +import javax.validation.Valid; import java.util.List; /** @@ -44,10 +47,12 @@ */ @RequestMapping(value = "/listPage") @ResponseBody - public Object listPage(String condition) { + public Object listPage(@RequestBody @Valid AlarmRecordRequest request) { + + Page page = PageFactory.defaultPage(); - QueryWrapper query = new QueryWrapper<>(); - page = alarmRecordService.page(page,query); +// QueryWrapper query = new QueryWrapper<>(); + page = alarmRecordService.pageList(page,request); return ResponseData.success(super.packForBT(page)); } /** diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/DemoController.java b/casic-data/src/main/java/com/casic/missiles/modular/system/controller/DemoController.java deleted file mode 100644 index 87b6fec..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/DemoController.java +++ /dev/null @@ -1,41 +0,0 @@ -package com.casic.missiles.modular.system.controller; - - -import com.casic.missiles.model.application.event.core.EventPublisher; -import com.casic.missiles.model.application.event.enums.ModelEventTypeEnum; -import com.casic.missiles.model.response.ResponseData; -import com.casic.missiles.modular.system.event.UserEvent; -import com.casic.missiles.modular.system.model.User; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; -import org.springframework.web.bind.annotation.RestController; - -/** - * @ClassName DemoController - * @Description TODO - * @Author lenovo - * @Date 2020/6/13 15:38 - * @Version 1.0 - */ -@RestController -@RequestMapping("/demo") -public class DemoController { - @Autowired - private EventPublisher publisher; - - /** - * 获取mockToken - */ - @PostMapping("/list") - @ResponseBody - public Object list() { - User user = new User(); - user.setAccount("张三"); - publisher.publishEvent(new UserEvent(ModelEventTypeEnum.ADD, user)); - return ResponseData.success(); - } - - -} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/dto/AlarmRecordRequest.java b/casic-data/src/main/java/com/casic/missiles/modular/system/dto/AlarmRecordRequest.java new file mode 100644 index 0000000..9469954 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/dto/AlarmRecordRequest.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.system.dto; + + +import lombok.Data; + +/** + * @author zt + */ +@Data +public class AlarmRecordRequest { + + private Long stationId; + + private Long monitorId; + + private Long lineNum; + + private String alarmType; + + private String alarmStatus; + + private String startTime; + + private String endTime; + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/es/ElasticSearchQuery.java b/casic-data/src/main/java/com/casic/missiles/modular/system/es/ElasticSearchQuery.java new file mode 100644 index 0000000..4d7a38f --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/es/ElasticSearchQuery.java @@ -0,0 +1,257 @@ +package com.casic.missiles.modular.system.es; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; + +import java.io.Serializable; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +/** + * ES查询请求体 + * + * @author zhangyingjie123 + * @since 2020-11-30 + */ +public class ElasticSearchQuery { + private JSONObject body; + private JSONObject query; + private JSONObject bool; + private JSONArray boolMust; + private JSONObject filter; + private JSONObject filterBool; + private JSONArray filterBoolMust; + private JSONArray filterBoolMustnot; + + public static final String MUST_FLAG = "1"; + public static final String MUST_NOT_FLAG = "0"; + + public static final String QUERY = "query"; + public static final String BOOL = "bool"; + public static final String MUST = "must"; + public static final String MUST_NOT = "must_not"; + public static final String FILTER = "filter"; + + + /** + * 生成查询请求体基础结构: + * { + * "query": { + * "bool": { + * "must" [], + * "filter": { + * "bool": { + * "must": [], + * "must_not": [] + * } + * } + * } + * } + * } + */ + public ElasticSearchQuery() { + this.body = new JSONObject(); + this.query = this.query(); + this.bool = this.bool(); + this.boolMust = this.boolMust(); + this.filter = this.filter(); + this.filterBool = this.filterBool(); + this.filterBoolMust = this.filterBoolMust(); + this.filterBoolMustnot = this.filterBoolMustnot(); + } + + public ElasticSearchQuery(JSONObject body){ + this.body = body; + } + + public JSONObject getBody() { + return body; + } + + private JSONObject query(){ + if(ObjectUtil.isEmpty(this.body.get(QUERY))){ + this.body.put("query",new JSONObject()); + } + return this.body.getJSONObject(QUERY); + + } + + private JSONObject bool() { + JSONObject query = this.query; + if(ObjectUtil.isEmpty(query.get(BOOL))){ + query.put(BOOL,new JSONObject()); + } + return query.getJSONObject(BOOL); + } + + private JSONArray boolMust(){ + JSONObject bool = this.bool; + if(ObjectUtil.isEmpty(bool.get(MUST))){ + bool.put(MUST,new JSONArray()); + } + return bool.getJSONArray(MUST); + } + + private JSONObject filter(){ + JSONObject bool = this.bool; + if(ObjectUtil.isEmpty(bool.get(FILTER))){ + bool.put(FILTER,new JSONObject()); + } + return bool.getJSONObject(FILTER); + } + + private JSONObject filterBool(){ + JSONObject filter = this.filter; + if(ObjectUtil.isEmpty(filter.get(BOOL))){ + filter.put(BOOL,new JSONObject()); + } + return filter.getJSONObject(BOOL); + } + + private JSONArray filterBoolMust(){ + JSONObject bool = this.filterBool; + if(ObjectUtil.isEmpty(bool.get(MUST))){ + bool.put(MUST,new JSONArray()); + } + return bool.getJSONArray(MUST); + } + + private JSONArray filterBoolMustnot(){ + JSONObject bool = this.filterBool; + if(ObjectUtil.isEmpty(bool.get(MUST_NOT))){ + bool.put(MUST_NOT,new JSONArray()); + } + return bool.getJSONArray(MUST_NOT); + } + + public void match(String filed, Serializable value){ + JSONArray boolMust = this.boolMust; + JSONObject match = new JSONObject(); + JSONObject filedJson = new JSONObject(); + filedJson.put(filed,value); + match.put("match",filedJson); + boolMust.add(match); + } + + public void matchPhrase(String filed, Serializable value){ + JSONArray boolMust = this.boolMust; + JSONObject matchPhrase = new JSONObject(); + JSONObject filedJson = new JSONObject(); + filedJson.put(filed,value); + matchPhrase.put("match_phrase",filedJson); + boolMust.add(matchPhrase); + } + + public void term(String filed, Serializable value){ + this.term(filed,value,MUST_FLAG); + } + + public void term(String filed, Serializable value,String mustFlag){ + JSONObject filedJson = new JSONObject(); + filedJson.put(filed,value); + JSONObject term = new JSONObject(); + term.put("term",filedJson); + if(MUST_FLAG.equals(mustFlag)){ + this.filterBoolMust.add(term); + } + if(MUST_NOT_FLAG.equals(mustFlag)){ + this.filterBoolMustnot.add(term); + } + } + + public void terms(String filed,List value){ + this.terms(filed,value,MUST_FLAG); + } + + public void terms(String filed, List value, String mustFlag){ + JSONObject filedJson = new JSONObject(); + filedJson.put(filed,value); + JSONObject terms = new JSONObject(); + terms.put("terms",filedJson); + if(MUST_FLAG.equals(mustFlag)){ + this.filterBoolMust.add(terms); + } + if(MUST_NOT_FLAG.equals(mustFlag)){ + this.filterBoolMustnot.add(terms); + } + } + + public void range(String filed, Serializable from, Serializable to){ + this.range(filed,from,to,MUST_FLAG); + } + + public void range(String filed, Serializable from, Serializable to, String mustFlag){ + JSONObject rangeJson = new JSONObject(); + if(ObjectUtil.isNotEmpty(from)){ + rangeJson.put("from",from); + } + if(ObjectUtil.isNotEmpty(to)){ + rangeJson.put("to",to); + } + JSONObject filedJson = new JSONObject(); + filedJson.put(filed,rangeJson); + JSONObject range = new JSONObject(); + range.put("range",filedJson); + if(MUST_FLAG.equals(mustFlag)){ + this.filterBoolMust.add(range); + } + if(MUST_NOT_FLAG.equals(mustFlag)){ + this.filterBoolMustnot.add(range); + } + } + + public void size(int size){ + this.body.put("size",size); + } + + public void from(int from) { + this.body.put("from",from); + } + + public void sort(String sort, String order){ + JSONObject sortJson = new JSONObject(); + JSONObject orderJson = new JSONObject(); + orderJson.put("order",order); + sortJson.put(sort,orderJson); + this.body.put("sort",sortJson); + } + + public void aggs(String aggsName, String filed){ + JSONObject terms = new JSONObject(); + terms.put("field",filed); + JSONObject aggsTerms = new JSONObject(); + aggsTerms.put("terms",terms); + JSONObject aggsBody = new JSONObject(); + aggsBody.put(aggsName,aggsTerms); + this.body.put("aggs",aggsBody); + } + + public void aggs(JSONObject aggBody){ + this.body.put("aggs",aggBody); + } + + + + public static void main(String[] args) { + ElasticSearchQuery query = new ElasticSearchQuery(); + query.matchPhrase("name","张三"); + query.term("sex","2"); + List deptIds = new ArrayList<>(); + deptIds.add(0L); + deptIds.add(24L); + query.terms("deptId", deptIds); + Date date1 = DateUtil.parse("2020-01-01","yyyy-MM-dd"); + Date date2 = DateUtil.parse("2020-04-01","yyyy-MM-dd"); + query.range("collTime",date1.getTime(),date2.getTime()); + query.term("collState","3",MUST_NOT_FLAG); + query.size(10); + query.from(0); + query.sort("irId","asc"); + System.out.println(query.getBody().toJSONString()); + } + + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/es/ElasticSearchUtil.java b/casic-data/src/main/java/com/casic/missiles/modular/system/es/ElasticSearchUtil.java new file mode 100644 index 0000000..e9da021 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/es/ElasticSearchUtil.java @@ -0,0 +1,172 @@ +package com.casic.missiles.modular.system.es; + +import cn.hutool.core.util.ObjectUtil; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import com.casic.missiles.core.es.EsResponse; +import org.apache.http.nio.entity.NStringEntity; +import org.apache.http.util.EntityUtils; +import org.elasticsearch.client.Request; +import org.elasticsearch.client.RequestOptions; +import org.elasticsearch.client.Response; +import org.elasticsearch.client.RestClient; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.core.env.Environment; +import org.springframework.stereotype.Component; + +import javax.annotation.PostConstruct; +import java.io.IOException; +import java.util.ArrayList; +import java.util.Base64; +import java.util.List; + +/** + * ES工具类 + * + * @author zhangyingjie123 + * @since 2020-11-30 + */ +@Component +public class ElasticSearchUtil { + private static final Logger logger = LoggerFactory.getLogger(ElasticSearchUtil.class); + + @Autowired + private RestClient clientMapping; + @Autowired + private Environment env; + + private static String username; + private static String password; + + private static RestClient client; + + @PostConstruct + public void init(){ + client = clientMapping; + username = env.getProperty("casic.data.es.username"); + password = env.getProperty("casic.data.es.password"); + } + + public static JSONObject selectDocumentById(String index, String type, String id) throws IOException{ + String method = "GET"; + String endPoint = index.concat("/").concat(type).concat("/").concat(id); + Response response = performRequest(method,endPoint,null); + JSONObject result = JSONObject.parseObject(EntityUtils.toString(response.getEntity())); + return result.getJSONObject("_source"); + } + + public static Response addDocumentById(String index, String type, String id, Object entity) throws IOException{ + String method = "POST"; + String endPoint = index.concat("/").concat(type).concat("/"); + if(ObjectUtil.isNotEmpty(id)){ + endPoint.concat(id); + } + endPoint.concat("?refresh=true"); + logger.debug(entity.toString()); + return performRequest(method,endPoint,JSON.toJSONString(entity)); + } + + public static Response deleteDocumentById(String index, String type, String id) throws IOException{ + String method = "DELETE"; + String endPoint = index.concat("/").concat(type).concat("/").concat(id).concat("?refresh=true"); + return performRequest(method,endPoint,null); + } + + public static Response updateDocumentById(String index, String type, String id, Object entity) throws IOException{ + String method = "POST"; + String endPoint = index.concat("/").concat(type).concat("/").concat(id).concat("?refresh=true"); + logger.debug(entity.toString()); + return performRequest(method,endPoint,JSON.toJSONString(entity)); + } + + public static EsResponse searchQuery(String index, String type, ElasticSearchQuery query) throws IOException{ + String method = "POST"; + String entPoint = index.concat("/").concat(type).concat("/").concat("_search"); + logger.debug(query.getBody().toString()); + Response response = performRequest(method, entPoint, query.getBody().toString()); + // 获取response body,转换为json对象 + JSONObject result = JSONObject.parseObject(EntityUtils.toString(response.getEntity())); + return result.toJavaObject(EsResponse.class); + } + + public static Response aggsQuery(String index, String type, ElasticSearchQuery query) throws IOException{ + String method = "POST"; + String entPoint = index.concat("/").concat(type).concat("/").concat("_search"); + logger.debug(query.getBody().toString()); + Response response = performRequest(method, entPoint, query.getBody().toString()); + return response; + } + + public static List searchQueryScroll(String index, String type, ElasticSearchQuery query) throws IOException{ + // 首次查询,提交查询条件,endpoint增加‘?scroll=1m’ + List results = new ArrayList<>(); + String method = "POST"; + String entPoint = index.concat("/").concat(type).concat("/").concat("_search").concat("?scroll=1m"); + logger.debug(query.getBody().toString()); + Response response = performRequest(method, entPoint, query.getBody().toString()); + JSONObject result = JSONObject.parseObject(EntityUtils.toString(response.getEntity())); + EsResponse esResponse = result.toJavaObject(EsResponse.class); + String scrollId = result.getString("_scroll_id"); + if(ObjectUtil.isNotEmpty(esResponse.getDatas())){ + results.addAll(esResponse.getDatas()); + } + // 循环发送scroll请求,直到返回结果为空 + entPoint = "_search/scroll"; + JSONObject scrollBody = new JSONObject(); + scrollBody.put("scroll","1m"); + scrollBody.put("scroll_id",scrollId); + while (esResponse.getDatas().size() > 0){ + method = "GET"; + response = performRequest(method, entPoint, scrollBody.toString()); + result = JSONObject.parseObject(EntityUtils.toString(response.getEntity())); + esResponse = result.toJavaObject(EsResponse.class); + if(ObjectUtil.isNotEmpty(esResponse.getDatas())){ + results.addAll(esResponse.getDatas()); + } + } + // 查询完成后,及时删除scroll,释放资源 + scrollBody.remove("scroll"); + method = "DELETE"; + performRequest(method, entPoint, scrollBody.toString()); + return results; + } + + public static Response bulk(String index,String type,String entity) throws IOException{ + String method = "POST"; + StringBuilder endPoint = new StringBuilder(); + if(ObjectUtil.isNotEmpty(index)){ + endPoint.append(index).append("/"); + } + if(ObjectUtil.isNotEmpty(type)){ + endPoint.append(type).append("/"); + } + endPoint.append("_bulk"); + endPoint.append("?refresh=true"); + logger.debug(entity); + return performRequest(method,endPoint.toString(),entity); + } + + private static Response performRequest(String method, String endpoint, String entity) throws IOException { + //logger.info(method + " " + endpoint); + Request request = new Request(method,endpoint); + if(ObjectUtil.isNotEmpty(entity)){ + request.setEntity(new NStringEntity(entity,"utf-8")); + } + + if(ObjectUtil.isNotEmpty(username) && ObjectUtil.isNotEmpty(password)){ + RequestOptions.Builder builder = RequestOptions.DEFAULT.toBuilder(); + String token = username.concat(":").concat(password); + String base64encode = Base64.getEncoder().encodeToString(token.getBytes("utf-8")); + builder.addHeader("Authorization", "Basic " + base64encode ); + request.setOptions(builder.build()); + } + + + Response response = client.performRequest(request); + logger.debug(response.toString()); + return response; + } + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/event/UserEvent.java b/casic-data/src/main/java/com/casic/missiles/modular/system/event/UserEvent.java deleted file mode 100644 index c6ed867..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/event/UserEvent.java +++ /dev/null @@ -1,23 +0,0 @@ -package com.casic.missiles.modular.system.event; - -import com.casic.missiles.model.application.event.core.ModelEvent; -import com.casic.missiles.model.application.event.type.AbstractEventTypeEnum; -import com.casic.missiles.modular.system.model.User; - -/** - * 用户事件 - * - * @author lwh - */ -public class UserEvent extends ModelEvent { - /** - * Create a new {@code ApplicationEvent}. - * - * @param type 事件类型 - * @param source the object on which the event initially occurred or with - * which the event is associated (never {@code null}) - */ - public UserEvent(AbstractEventTypeEnum type, User source) { - super(type, source); - } -} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/event/listener/UserOneListener.java b/casic-data/src/main/java/com/casic/missiles/modular/system/event/listener/UserOneListener.java deleted file mode 100644 index 4480ef2..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/event/listener/UserOneListener.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.casic.missiles.modular.system.event.listener; - -import com.casic.missiles.core.application.event.UserLoginEvent; -import lombok.extern.slf4j.Slf4j; -import org.springframework.context.event.EventListener; -import org.springframework.stereotype.Component; - -/** - * 用户事件订阅 - * - * @author lwh - */ -@Slf4j -@Component -public class UserOneListener { - @EventListener - public void onApplicationEvent(UserLoginEvent event) { - log.debug("用户1订阅:{}", event); - } -} diff --git a/casic-common/pom.xml b/casic-common/pom.xml new file mode 100644 index 0000000..861e1ec --- /dev/null +++ b/casic-common/pom.xml @@ -0,0 +1,60 @@ + + + 4.0.0 + + com.casic + casic-PTZ + 2.0.0 + ../pom.xml + + + casic-common + 2.0.0 + jar + casic-common + casic 的spring boot版本 + + + + + com.casic + casic-core + ${core.version} + provided + + + com.casic + casic-admin-support + ${admin.version} + provided + + + com.casic + casic-export-support + ${extension.version} + + + org.springframework.boot + spring-boot-starter-web + ${boot.version} + provided + + + + com.casic + casic-data-es + 1.0.1.alpha + + + + + + src/main/java + + **/*.xml + + + + + \ No newline at end of file diff --git a/casic-common/src/main/java/com/casic/missiles/modular/system/consts/DataConst.java b/casic-common/src/main/java/com/casic/missiles/modular/system/consts/DataConst.java new file mode 100644 index 0000000..bbe581c --- /dev/null +++ b/casic-common/src/main/java/com/casic/missiles/modular/system/consts/DataConst.java @@ -0,0 +1,8 @@ +package com.casic.missiles.modular.system.consts; + +public class DataConst { + + public static final String DATA_GAS_ES_INDEX = "casic_pantilt_gas"; + + public static final String DATA_GAS_ES_TYPE = "casic_pantilt_gas"; +} diff --git a/casic-data/pom.xml b/casic-data/pom.xml index a3eba7d..3ad2c9c 100644 --- a/casic-data/pom.xml +++ b/casic-data/pom.xml @@ -41,6 +41,11 @@ provided + + com.casic + casic-data-es + 1.0.1.alpha + diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/consts/DataConst.java b/casic-data/src/main/java/com/casic/missiles/modular/system/consts/DataConst.java new file mode 100644 index 0000000..bbe581c --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/consts/DataConst.java @@ -0,0 +1,8 @@ +package com.casic.missiles.modular.system.consts; + +public class DataConst { + + public static final String DATA_GAS_ES_INDEX = "casic_pantilt_gas"; + + public static final String DATA_GAS_ES_TYPE = "casic_pantilt_gas"; +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java b/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java index 4460f11..dfc76ec 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java @@ -5,14 +5,17 @@ import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.AlarmRecordRequest; import com.casic.missiles.modular.system.model.AlarmRecord; import com.casic.missiles.modular.system.service.IAlarmRecordService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseBody; +import javax.validation.Valid; import java.util.List; /** @@ -44,10 +47,12 @@ */ @RequestMapping(value = "/listPage") @ResponseBody - public Object listPage(String condition) { + public Object listPage(@RequestBody @Valid AlarmRecordRequest request) { + + Page page = PageFactory.defaultPage(); - QueryWrapper query = new QueryWrapper<>(); - page = alarmRecordService.page(page,query); +// QueryWrapper query = new QueryWrapper<>(); + page = alarmRecordService.pageList(page,request); return ResponseData.success(super.packForBT(page)); } /** diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/DemoController.java b/casic-data/src/main/java/com/casic/missiles/modular/system/controller/DemoController.java deleted file mode 100644 index 87b6fec..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/DemoController.java +++ /dev/null @@ -1,41 +0,0 @@ -package com.casic.missiles.modular.system.controller; - - -import com.casic.missiles.model.application.event.core.EventPublisher; -import com.casic.missiles.model.application.event.enums.ModelEventTypeEnum; -import com.casic.missiles.model.response.ResponseData; -import com.casic.missiles.modular.system.event.UserEvent; -import com.casic.missiles.modular.system.model.User; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; -import org.springframework.web.bind.annotation.RestController; - -/** - * @ClassName DemoController - * @Description TODO - * @Author lenovo - * @Date 2020/6/13 15:38 - * @Version 1.0 - */ -@RestController -@RequestMapping("/demo") -public class DemoController { - @Autowired - private EventPublisher publisher; - - /** - * 获取mockToken - */ - @PostMapping("/list") - @ResponseBody - public Object list() { - User user = new User(); - user.setAccount("张三"); - publisher.publishEvent(new UserEvent(ModelEventTypeEnum.ADD, user)); - return ResponseData.success(); - } - - -} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/dto/AlarmRecordRequest.java b/casic-data/src/main/java/com/casic/missiles/modular/system/dto/AlarmRecordRequest.java new file mode 100644 index 0000000..9469954 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/dto/AlarmRecordRequest.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.system.dto; + + +import lombok.Data; + +/** + * @author zt + */ +@Data +public class AlarmRecordRequest { + + private Long stationId; + + private Long monitorId; + + private Long lineNum; + + private String alarmType; + + private String alarmStatus; + + private String startTime; + + private String endTime; + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/es/ElasticSearchQuery.java b/casic-data/src/main/java/com/casic/missiles/modular/system/es/ElasticSearchQuery.java new file mode 100644 index 0000000..4d7a38f --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/es/ElasticSearchQuery.java @@ -0,0 +1,257 @@ +package com.casic.missiles.modular.system.es; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; + +import java.io.Serializable; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +/** + * ES查询请求体 + * + * @author zhangyingjie123 + * @since 2020-11-30 + */ +public class ElasticSearchQuery { + private JSONObject body; + private JSONObject query; + private JSONObject bool; + private JSONArray boolMust; + private JSONObject filter; + private JSONObject filterBool; + private JSONArray filterBoolMust; + private JSONArray filterBoolMustnot; + + public static final String MUST_FLAG = "1"; + public static final String MUST_NOT_FLAG = "0"; + + public static final String QUERY = "query"; + public static final String BOOL = "bool"; + public static final String MUST = "must"; + public static final String MUST_NOT = "must_not"; + public static final String FILTER = "filter"; + + + /** + * 生成查询请求体基础结构: + * { + * "query": { + * "bool": { + * "must" [], + * "filter": { + * "bool": { + * "must": [], + * "must_not": [] + * } + * } + * } + * } + * } + */ + public ElasticSearchQuery() { + this.body = new JSONObject(); + this.query = this.query(); + this.bool = this.bool(); + this.boolMust = this.boolMust(); + this.filter = this.filter(); + this.filterBool = this.filterBool(); + this.filterBoolMust = this.filterBoolMust(); + this.filterBoolMustnot = this.filterBoolMustnot(); + } + + public ElasticSearchQuery(JSONObject body){ + this.body = body; + } + + public JSONObject getBody() { + return body; + } + + private JSONObject query(){ + if(ObjectUtil.isEmpty(this.body.get(QUERY))){ + this.body.put("query",new JSONObject()); + } + return this.body.getJSONObject(QUERY); + + } + + private JSONObject bool() { + JSONObject query = this.query; + if(ObjectUtil.isEmpty(query.get(BOOL))){ + query.put(BOOL,new JSONObject()); + } + return query.getJSONObject(BOOL); + } + + private JSONArray boolMust(){ + JSONObject bool = this.bool; + if(ObjectUtil.isEmpty(bool.get(MUST))){ + bool.put(MUST,new JSONArray()); + } + return bool.getJSONArray(MUST); + } + + private JSONObject filter(){ + JSONObject bool = this.bool; + if(ObjectUtil.isEmpty(bool.get(FILTER))){ + bool.put(FILTER,new JSONObject()); + } + return bool.getJSONObject(FILTER); + } + + private JSONObject filterBool(){ + JSONObject filter = this.filter; + if(ObjectUtil.isEmpty(filter.get(BOOL))){ + filter.put(BOOL,new JSONObject()); + } + return filter.getJSONObject(BOOL); + } + + private JSONArray filterBoolMust(){ + JSONObject bool = this.filterBool; + if(ObjectUtil.isEmpty(bool.get(MUST))){ + bool.put(MUST,new JSONArray()); + } + return bool.getJSONArray(MUST); + } + + private JSONArray filterBoolMustnot(){ + JSONObject bool = this.filterBool; + if(ObjectUtil.isEmpty(bool.get(MUST_NOT))){ + bool.put(MUST_NOT,new JSONArray()); + } + return bool.getJSONArray(MUST_NOT); + } + + public void match(String filed, Serializable value){ + JSONArray boolMust = this.boolMust; + JSONObject match = new JSONObject(); + JSONObject filedJson = new JSONObject(); + filedJson.put(filed,value); + match.put("match",filedJson); + boolMust.add(match); + } + + public void matchPhrase(String filed, Serializable value){ + JSONArray boolMust = this.boolMust; + JSONObject matchPhrase = new JSONObject(); + JSONObject filedJson = new JSONObject(); + filedJson.put(filed,value); + matchPhrase.put("match_phrase",filedJson); + boolMust.add(matchPhrase); + } + + public void term(String filed, Serializable value){ + this.term(filed,value,MUST_FLAG); + } + + public void term(String filed, Serializable value,String mustFlag){ + JSONObject filedJson = new JSONObject(); + filedJson.put(filed,value); + JSONObject term = new JSONObject(); + term.put("term",filedJson); + if(MUST_FLAG.equals(mustFlag)){ + this.filterBoolMust.add(term); + } + if(MUST_NOT_FLAG.equals(mustFlag)){ + this.filterBoolMustnot.add(term); + } + } + + public void terms(String filed,List value){ + this.terms(filed,value,MUST_FLAG); + } + + public void terms(String filed, List value, String mustFlag){ + JSONObject filedJson = new JSONObject(); + filedJson.put(filed,value); + JSONObject terms = new JSONObject(); + terms.put("terms",filedJson); + if(MUST_FLAG.equals(mustFlag)){ + this.filterBoolMust.add(terms); + } + if(MUST_NOT_FLAG.equals(mustFlag)){ + this.filterBoolMustnot.add(terms); + } + } + + public void range(String filed, Serializable from, Serializable to){ + this.range(filed,from,to,MUST_FLAG); + } + + public void range(String filed, Serializable from, Serializable to, String mustFlag){ + JSONObject rangeJson = new JSONObject(); + if(ObjectUtil.isNotEmpty(from)){ + rangeJson.put("from",from); + } + if(ObjectUtil.isNotEmpty(to)){ + rangeJson.put("to",to); + } + JSONObject filedJson = new JSONObject(); + filedJson.put(filed,rangeJson); + JSONObject range = new JSONObject(); + range.put("range",filedJson); + if(MUST_FLAG.equals(mustFlag)){ + this.filterBoolMust.add(range); + } + if(MUST_NOT_FLAG.equals(mustFlag)){ + this.filterBoolMustnot.add(range); + } + } + + public void size(int size){ + this.body.put("size",size); + } + + public void from(int from) { + this.body.put("from",from); + } + + public void sort(String sort, String order){ + JSONObject sortJson = new JSONObject(); + JSONObject orderJson = new JSONObject(); + orderJson.put("order",order); + sortJson.put(sort,orderJson); + this.body.put("sort",sortJson); + } + + public void aggs(String aggsName, String filed){ + JSONObject terms = new JSONObject(); + terms.put("field",filed); + JSONObject aggsTerms = new JSONObject(); + aggsTerms.put("terms",terms); + JSONObject aggsBody = new JSONObject(); + aggsBody.put(aggsName,aggsTerms); + this.body.put("aggs",aggsBody); + } + + public void aggs(JSONObject aggBody){ + this.body.put("aggs",aggBody); + } + + + + public static void main(String[] args) { + ElasticSearchQuery query = new ElasticSearchQuery(); + query.matchPhrase("name","张三"); + query.term("sex","2"); + List deptIds = new ArrayList<>(); + deptIds.add(0L); + deptIds.add(24L); + query.terms("deptId", deptIds); + Date date1 = DateUtil.parse("2020-01-01","yyyy-MM-dd"); + Date date2 = DateUtil.parse("2020-04-01","yyyy-MM-dd"); + query.range("collTime",date1.getTime(),date2.getTime()); + query.term("collState","3",MUST_NOT_FLAG); + query.size(10); + query.from(0); + query.sort("irId","asc"); + System.out.println(query.getBody().toJSONString()); + } + + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/es/ElasticSearchUtil.java b/casic-data/src/main/java/com/casic/missiles/modular/system/es/ElasticSearchUtil.java new file mode 100644 index 0000000..e9da021 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/es/ElasticSearchUtil.java @@ -0,0 +1,172 @@ +package com.casic.missiles.modular.system.es; + +import cn.hutool.core.util.ObjectUtil; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import com.casic.missiles.core.es.EsResponse; +import org.apache.http.nio.entity.NStringEntity; +import org.apache.http.util.EntityUtils; +import org.elasticsearch.client.Request; +import org.elasticsearch.client.RequestOptions; +import org.elasticsearch.client.Response; +import org.elasticsearch.client.RestClient; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.core.env.Environment; +import org.springframework.stereotype.Component; + +import javax.annotation.PostConstruct; +import java.io.IOException; +import java.util.ArrayList; +import java.util.Base64; +import java.util.List; + +/** + * ES工具类 + * + * @author zhangyingjie123 + * @since 2020-11-30 + */ +@Component +public class ElasticSearchUtil { + private static final Logger logger = LoggerFactory.getLogger(ElasticSearchUtil.class); + + @Autowired + private RestClient clientMapping; + @Autowired + private Environment env; + + private static String username; + private static String password; + + private static RestClient client; + + @PostConstruct + public void init(){ + client = clientMapping; + username = env.getProperty("casic.data.es.username"); + password = env.getProperty("casic.data.es.password"); + } + + public static JSONObject selectDocumentById(String index, String type, String id) throws IOException{ + String method = "GET"; + String endPoint = index.concat("/").concat(type).concat("/").concat(id); + Response response = performRequest(method,endPoint,null); + JSONObject result = JSONObject.parseObject(EntityUtils.toString(response.getEntity())); + return result.getJSONObject("_source"); + } + + public static Response addDocumentById(String index, String type, String id, Object entity) throws IOException{ + String method = "POST"; + String endPoint = index.concat("/").concat(type).concat("/"); + if(ObjectUtil.isNotEmpty(id)){ + endPoint.concat(id); + } + endPoint.concat("?refresh=true"); + logger.debug(entity.toString()); + return performRequest(method,endPoint,JSON.toJSONString(entity)); + } + + public static Response deleteDocumentById(String index, String type, String id) throws IOException{ + String method = "DELETE"; + String endPoint = index.concat("/").concat(type).concat("/").concat(id).concat("?refresh=true"); + return performRequest(method,endPoint,null); + } + + public static Response updateDocumentById(String index, String type, String id, Object entity) throws IOException{ + String method = "POST"; + String endPoint = index.concat("/").concat(type).concat("/").concat(id).concat("?refresh=true"); + logger.debug(entity.toString()); + return performRequest(method,endPoint,JSON.toJSONString(entity)); + } + + public static EsResponse searchQuery(String index, String type, ElasticSearchQuery query) throws IOException{ + String method = "POST"; + String entPoint = index.concat("/").concat(type).concat("/").concat("_search"); + logger.debug(query.getBody().toString()); + Response response = performRequest(method, entPoint, query.getBody().toString()); + // 获取response body,转换为json对象 + JSONObject result = JSONObject.parseObject(EntityUtils.toString(response.getEntity())); + return result.toJavaObject(EsResponse.class); + } + + public static Response aggsQuery(String index, String type, ElasticSearchQuery query) throws IOException{ + String method = "POST"; + String entPoint = index.concat("/").concat(type).concat("/").concat("_search"); + logger.debug(query.getBody().toString()); + Response response = performRequest(method, entPoint, query.getBody().toString()); + return response; + } + + public static List searchQueryScroll(String index, String type, ElasticSearchQuery query) throws IOException{ + // 首次查询,提交查询条件,endpoint增加‘?scroll=1m’ + List results = new ArrayList<>(); + String method = "POST"; + String entPoint = index.concat("/").concat(type).concat("/").concat("_search").concat("?scroll=1m"); + logger.debug(query.getBody().toString()); + Response response = performRequest(method, entPoint, query.getBody().toString()); + JSONObject result = JSONObject.parseObject(EntityUtils.toString(response.getEntity())); + EsResponse esResponse = result.toJavaObject(EsResponse.class); + String scrollId = result.getString("_scroll_id"); + if(ObjectUtil.isNotEmpty(esResponse.getDatas())){ + results.addAll(esResponse.getDatas()); + } + // 循环发送scroll请求,直到返回结果为空 + entPoint = "_search/scroll"; + JSONObject scrollBody = new JSONObject(); + scrollBody.put("scroll","1m"); + scrollBody.put("scroll_id",scrollId); + while (esResponse.getDatas().size() > 0){ + method = "GET"; + response = performRequest(method, entPoint, scrollBody.toString()); + result = JSONObject.parseObject(EntityUtils.toString(response.getEntity())); + esResponse = result.toJavaObject(EsResponse.class); + if(ObjectUtil.isNotEmpty(esResponse.getDatas())){ + results.addAll(esResponse.getDatas()); + } + } + // 查询完成后,及时删除scroll,释放资源 + scrollBody.remove("scroll"); + method = "DELETE"; + performRequest(method, entPoint, scrollBody.toString()); + return results; + } + + public static Response bulk(String index,String type,String entity) throws IOException{ + String method = "POST"; + StringBuilder endPoint = new StringBuilder(); + if(ObjectUtil.isNotEmpty(index)){ + endPoint.append(index).append("/"); + } + if(ObjectUtil.isNotEmpty(type)){ + endPoint.append(type).append("/"); + } + endPoint.append("_bulk"); + endPoint.append("?refresh=true"); + logger.debug(entity); + return performRequest(method,endPoint.toString(),entity); + } + + private static Response performRequest(String method, String endpoint, String entity) throws IOException { + //logger.info(method + " " + endpoint); + Request request = new Request(method,endpoint); + if(ObjectUtil.isNotEmpty(entity)){ + request.setEntity(new NStringEntity(entity,"utf-8")); + } + + if(ObjectUtil.isNotEmpty(username) && ObjectUtil.isNotEmpty(password)){ + RequestOptions.Builder builder = RequestOptions.DEFAULT.toBuilder(); + String token = username.concat(":").concat(password); + String base64encode = Base64.getEncoder().encodeToString(token.getBytes("utf-8")); + builder.addHeader("Authorization", "Basic " + base64encode ); + request.setOptions(builder.build()); + } + + + Response response = client.performRequest(request); + logger.debug(response.toString()); + return response; + } + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/event/UserEvent.java b/casic-data/src/main/java/com/casic/missiles/modular/system/event/UserEvent.java deleted file mode 100644 index c6ed867..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/event/UserEvent.java +++ /dev/null @@ -1,23 +0,0 @@ -package com.casic.missiles.modular.system.event; - -import com.casic.missiles.model.application.event.core.ModelEvent; -import com.casic.missiles.model.application.event.type.AbstractEventTypeEnum; -import com.casic.missiles.modular.system.model.User; - -/** - * 用户事件 - * - * @author lwh - */ -public class UserEvent extends ModelEvent { - /** - * Create a new {@code ApplicationEvent}. - * - * @param type 事件类型 - * @param source the object on which the event initially occurred or with - * which the event is associated (never {@code null}) - */ - public UserEvent(AbstractEventTypeEnum type, User source) { - super(type, source); - } -} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/event/listener/UserOneListener.java b/casic-data/src/main/java/com/casic/missiles/modular/system/event/listener/UserOneListener.java deleted file mode 100644 index 4480ef2..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/event/listener/UserOneListener.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.casic.missiles.modular.system.event.listener; - -import com.casic.missiles.core.application.event.UserLoginEvent; -import lombok.extern.slf4j.Slf4j; -import org.springframework.context.event.EventListener; -import org.springframework.stereotype.Component; - -/** - * 用户事件订阅 - * - * @author lwh - */ -@Slf4j -@Component -public class UserOneListener { - @EventListener - public void onApplicationEvent(UserLoginEvent event) { - log.debug("用户1订阅:{}", event); - } -} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/event/listener/UserTwoListener.java b/casic-data/src/main/java/com/casic/missiles/modular/system/event/listener/UserTwoListener.java deleted file mode 100644 index 8447a22..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/event/listener/UserTwoListener.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.casic.missiles.modular.system.event.listener; - -import com.casic.missiles.model.application.event.core.EventSubscriber; -import com.casic.missiles.modular.system.event.UserEvent; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Component; - -/** - * 用户事件订阅 - * - * @author lwh - */ -@Slf4j -@Component -public class UserTwoListener extends EventSubscriber { - @Override - public void onApplicationEvent(UserEvent event) { - log.debug("用户2订阅:{}", event); - } -} diff --git a/casic-common/pom.xml b/casic-common/pom.xml new file mode 100644 index 0000000..861e1ec --- /dev/null +++ b/casic-common/pom.xml @@ -0,0 +1,60 @@ + + + 4.0.0 + + com.casic + casic-PTZ + 2.0.0 + ../pom.xml + + + casic-common + 2.0.0 + jar + casic-common + casic 的spring boot版本 + + + + + com.casic + casic-core + ${core.version} + provided + + + com.casic + casic-admin-support + ${admin.version} + provided + + + com.casic + casic-export-support + ${extension.version} + + + org.springframework.boot + spring-boot-starter-web + ${boot.version} + provided + + + + com.casic + casic-data-es + 1.0.1.alpha + + + + + + src/main/java + + **/*.xml + + + + + \ No newline at end of file diff --git a/casic-common/src/main/java/com/casic/missiles/modular/system/consts/DataConst.java b/casic-common/src/main/java/com/casic/missiles/modular/system/consts/DataConst.java new file mode 100644 index 0000000..bbe581c --- /dev/null +++ b/casic-common/src/main/java/com/casic/missiles/modular/system/consts/DataConst.java @@ -0,0 +1,8 @@ +package com.casic.missiles.modular.system.consts; + +public class DataConst { + + public static final String DATA_GAS_ES_INDEX = "casic_pantilt_gas"; + + public static final String DATA_GAS_ES_TYPE = "casic_pantilt_gas"; +} diff --git a/casic-data/pom.xml b/casic-data/pom.xml index a3eba7d..3ad2c9c 100644 --- a/casic-data/pom.xml +++ b/casic-data/pom.xml @@ -41,6 +41,11 @@ provided + + com.casic + casic-data-es + 1.0.1.alpha + diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/consts/DataConst.java b/casic-data/src/main/java/com/casic/missiles/modular/system/consts/DataConst.java new file mode 100644 index 0000000..bbe581c --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/consts/DataConst.java @@ -0,0 +1,8 @@ +package com.casic.missiles.modular.system.consts; + +public class DataConst { + + public static final String DATA_GAS_ES_INDEX = "casic_pantilt_gas"; + + public static final String DATA_GAS_ES_TYPE = "casic_pantilt_gas"; +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java b/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java index 4460f11..dfc76ec 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java @@ -5,14 +5,17 @@ import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.AlarmRecordRequest; import com.casic.missiles.modular.system.model.AlarmRecord; import com.casic.missiles.modular.system.service.IAlarmRecordService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseBody; +import javax.validation.Valid; import java.util.List; /** @@ -44,10 +47,12 @@ */ @RequestMapping(value = "/listPage") @ResponseBody - public Object listPage(String condition) { + public Object listPage(@RequestBody @Valid AlarmRecordRequest request) { + + Page page = PageFactory.defaultPage(); - QueryWrapper query = new QueryWrapper<>(); - page = alarmRecordService.page(page,query); +// QueryWrapper query = new QueryWrapper<>(); + page = alarmRecordService.pageList(page,request); return ResponseData.success(super.packForBT(page)); } /** diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/DemoController.java b/casic-data/src/main/java/com/casic/missiles/modular/system/controller/DemoController.java deleted file mode 100644 index 87b6fec..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/DemoController.java +++ /dev/null @@ -1,41 +0,0 @@ -package com.casic.missiles.modular.system.controller; - - -import com.casic.missiles.model.application.event.core.EventPublisher; -import com.casic.missiles.model.application.event.enums.ModelEventTypeEnum; -import com.casic.missiles.model.response.ResponseData; -import com.casic.missiles.modular.system.event.UserEvent; -import com.casic.missiles.modular.system.model.User; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; -import org.springframework.web.bind.annotation.RestController; - -/** - * @ClassName DemoController - * @Description TODO - * @Author lenovo - * @Date 2020/6/13 15:38 - * @Version 1.0 - */ -@RestController -@RequestMapping("/demo") -public class DemoController { - @Autowired - private EventPublisher publisher; - - /** - * 获取mockToken - */ - @PostMapping("/list") - @ResponseBody - public Object list() { - User user = new User(); - user.setAccount("张三"); - publisher.publishEvent(new UserEvent(ModelEventTypeEnum.ADD, user)); - return ResponseData.success(); - } - - -} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/dto/AlarmRecordRequest.java b/casic-data/src/main/java/com/casic/missiles/modular/system/dto/AlarmRecordRequest.java new file mode 100644 index 0000000..9469954 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/dto/AlarmRecordRequest.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.system.dto; + + +import lombok.Data; + +/** + * @author zt + */ +@Data +public class AlarmRecordRequest { + + private Long stationId; + + private Long monitorId; + + private Long lineNum; + + private String alarmType; + + private String alarmStatus; + + private String startTime; + + private String endTime; + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/es/ElasticSearchQuery.java b/casic-data/src/main/java/com/casic/missiles/modular/system/es/ElasticSearchQuery.java new file mode 100644 index 0000000..4d7a38f --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/es/ElasticSearchQuery.java @@ -0,0 +1,257 @@ +package com.casic.missiles.modular.system.es; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; + +import java.io.Serializable; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +/** + * ES查询请求体 + * + * @author zhangyingjie123 + * @since 2020-11-30 + */ +public class ElasticSearchQuery { + private JSONObject body; + private JSONObject query; + private JSONObject bool; + private JSONArray boolMust; + private JSONObject filter; + private JSONObject filterBool; + private JSONArray filterBoolMust; + private JSONArray filterBoolMustnot; + + public static final String MUST_FLAG = "1"; + public static final String MUST_NOT_FLAG = "0"; + + public static final String QUERY = "query"; + public static final String BOOL = "bool"; + public static final String MUST = "must"; + public static final String MUST_NOT = "must_not"; + public static final String FILTER = "filter"; + + + /** + * 生成查询请求体基础结构: + * { + * "query": { + * "bool": { + * "must" [], + * "filter": { + * "bool": { + * "must": [], + * "must_not": [] + * } + * } + * } + * } + * } + */ + public ElasticSearchQuery() { + this.body = new JSONObject(); + this.query = this.query(); + this.bool = this.bool(); + this.boolMust = this.boolMust(); + this.filter = this.filter(); + this.filterBool = this.filterBool(); + this.filterBoolMust = this.filterBoolMust(); + this.filterBoolMustnot = this.filterBoolMustnot(); + } + + public ElasticSearchQuery(JSONObject body){ + this.body = body; + } + + public JSONObject getBody() { + return body; + } + + private JSONObject query(){ + if(ObjectUtil.isEmpty(this.body.get(QUERY))){ + this.body.put("query",new JSONObject()); + } + return this.body.getJSONObject(QUERY); + + } + + private JSONObject bool() { + JSONObject query = this.query; + if(ObjectUtil.isEmpty(query.get(BOOL))){ + query.put(BOOL,new JSONObject()); + } + return query.getJSONObject(BOOL); + } + + private JSONArray boolMust(){ + JSONObject bool = this.bool; + if(ObjectUtil.isEmpty(bool.get(MUST))){ + bool.put(MUST,new JSONArray()); + } + return bool.getJSONArray(MUST); + } + + private JSONObject filter(){ + JSONObject bool = this.bool; + if(ObjectUtil.isEmpty(bool.get(FILTER))){ + bool.put(FILTER,new JSONObject()); + } + return bool.getJSONObject(FILTER); + } + + private JSONObject filterBool(){ + JSONObject filter = this.filter; + if(ObjectUtil.isEmpty(filter.get(BOOL))){ + filter.put(BOOL,new JSONObject()); + } + return filter.getJSONObject(BOOL); + } + + private JSONArray filterBoolMust(){ + JSONObject bool = this.filterBool; + if(ObjectUtil.isEmpty(bool.get(MUST))){ + bool.put(MUST,new JSONArray()); + } + return bool.getJSONArray(MUST); + } + + private JSONArray filterBoolMustnot(){ + JSONObject bool = this.filterBool; + if(ObjectUtil.isEmpty(bool.get(MUST_NOT))){ + bool.put(MUST_NOT,new JSONArray()); + } + return bool.getJSONArray(MUST_NOT); + } + + public void match(String filed, Serializable value){ + JSONArray boolMust = this.boolMust; + JSONObject match = new JSONObject(); + JSONObject filedJson = new JSONObject(); + filedJson.put(filed,value); + match.put("match",filedJson); + boolMust.add(match); + } + + public void matchPhrase(String filed, Serializable value){ + JSONArray boolMust = this.boolMust; + JSONObject matchPhrase = new JSONObject(); + JSONObject filedJson = new JSONObject(); + filedJson.put(filed,value); + matchPhrase.put("match_phrase",filedJson); + boolMust.add(matchPhrase); + } + + public void term(String filed, Serializable value){ + this.term(filed,value,MUST_FLAG); + } + + public void term(String filed, Serializable value,String mustFlag){ + JSONObject filedJson = new JSONObject(); + filedJson.put(filed,value); + JSONObject term = new JSONObject(); + term.put("term",filedJson); + if(MUST_FLAG.equals(mustFlag)){ + this.filterBoolMust.add(term); + } + if(MUST_NOT_FLAG.equals(mustFlag)){ + this.filterBoolMustnot.add(term); + } + } + + public void terms(String filed,List value){ + this.terms(filed,value,MUST_FLAG); + } + + public void terms(String filed, List value, String mustFlag){ + JSONObject filedJson = new JSONObject(); + filedJson.put(filed,value); + JSONObject terms = new JSONObject(); + terms.put("terms",filedJson); + if(MUST_FLAG.equals(mustFlag)){ + this.filterBoolMust.add(terms); + } + if(MUST_NOT_FLAG.equals(mustFlag)){ + this.filterBoolMustnot.add(terms); + } + } + + public void range(String filed, Serializable from, Serializable to){ + this.range(filed,from,to,MUST_FLAG); + } + + public void range(String filed, Serializable from, Serializable to, String mustFlag){ + JSONObject rangeJson = new JSONObject(); + if(ObjectUtil.isNotEmpty(from)){ + rangeJson.put("from",from); + } + if(ObjectUtil.isNotEmpty(to)){ + rangeJson.put("to",to); + } + JSONObject filedJson = new JSONObject(); + filedJson.put(filed,rangeJson); + JSONObject range = new JSONObject(); + range.put("range",filedJson); + if(MUST_FLAG.equals(mustFlag)){ + this.filterBoolMust.add(range); + } + if(MUST_NOT_FLAG.equals(mustFlag)){ + this.filterBoolMustnot.add(range); + } + } + + public void size(int size){ + this.body.put("size",size); + } + + public void from(int from) { + this.body.put("from",from); + } + + public void sort(String sort, String order){ + JSONObject sortJson = new JSONObject(); + JSONObject orderJson = new JSONObject(); + orderJson.put("order",order); + sortJson.put(sort,orderJson); + this.body.put("sort",sortJson); + } + + public void aggs(String aggsName, String filed){ + JSONObject terms = new JSONObject(); + terms.put("field",filed); + JSONObject aggsTerms = new JSONObject(); + aggsTerms.put("terms",terms); + JSONObject aggsBody = new JSONObject(); + aggsBody.put(aggsName,aggsTerms); + this.body.put("aggs",aggsBody); + } + + public void aggs(JSONObject aggBody){ + this.body.put("aggs",aggBody); + } + + + + public static void main(String[] args) { + ElasticSearchQuery query = new ElasticSearchQuery(); + query.matchPhrase("name","张三"); + query.term("sex","2"); + List deptIds = new ArrayList<>(); + deptIds.add(0L); + deptIds.add(24L); + query.terms("deptId", deptIds); + Date date1 = DateUtil.parse("2020-01-01","yyyy-MM-dd"); + Date date2 = DateUtil.parse("2020-04-01","yyyy-MM-dd"); + query.range("collTime",date1.getTime(),date2.getTime()); + query.term("collState","3",MUST_NOT_FLAG); + query.size(10); + query.from(0); + query.sort("irId","asc"); + System.out.println(query.getBody().toJSONString()); + } + + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/es/ElasticSearchUtil.java b/casic-data/src/main/java/com/casic/missiles/modular/system/es/ElasticSearchUtil.java new file mode 100644 index 0000000..e9da021 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/es/ElasticSearchUtil.java @@ -0,0 +1,172 @@ +package com.casic.missiles.modular.system.es; + +import cn.hutool.core.util.ObjectUtil; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import com.casic.missiles.core.es.EsResponse; +import org.apache.http.nio.entity.NStringEntity; +import org.apache.http.util.EntityUtils; +import org.elasticsearch.client.Request; +import org.elasticsearch.client.RequestOptions; +import org.elasticsearch.client.Response; +import org.elasticsearch.client.RestClient; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.core.env.Environment; +import org.springframework.stereotype.Component; + +import javax.annotation.PostConstruct; +import java.io.IOException; +import java.util.ArrayList; +import java.util.Base64; +import java.util.List; + +/** + * ES工具类 + * + * @author zhangyingjie123 + * @since 2020-11-30 + */ +@Component +public class ElasticSearchUtil { + private static final Logger logger = LoggerFactory.getLogger(ElasticSearchUtil.class); + + @Autowired + private RestClient clientMapping; + @Autowired + private Environment env; + + private static String username; + private static String password; + + private static RestClient client; + + @PostConstruct + public void init(){ + client = clientMapping; + username = env.getProperty("casic.data.es.username"); + password = env.getProperty("casic.data.es.password"); + } + + public static JSONObject selectDocumentById(String index, String type, String id) throws IOException{ + String method = "GET"; + String endPoint = index.concat("/").concat(type).concat("/").concat(id); + Response response = performRequest(method,endPoint,null); + JSONObject result = JSONObject.parseObject(EntityUtils.toString(response.getEntity())); + return result.getJSONObject("_source"); + } + + public static Response addDocumentById(String index, String type, String id, Object entity) throws IOException{ + String method = "POST"; + String endPoint = index.concat("/").concat(type).concat("/"); + if(ObjectUtil.isNotEmpty(id)){ + endPoint.concat(id); + } + endPoint.concat("?refresh=true"); + logger.debug(entity.toString()); + return performRequest(method,endPoint,JSON.toJSONString(entity)); + } + + public static Response deleteDocumentById(String index, String type, String id) throws IOException{ + String method = "DELETE"; + String endPoint = index.concat("/").concat(type).concat("/").concat(id).concat("?refresh=true"); + return performRequest(method,endPoint,null); + } + + public static Response updateDocumentById(String index, String type, String id, Object entity) throws IOException{ + String method = "POST"; + String endPoint = index.concat("/").concat(type).concat("/").concat(id).concat("?refresh=true"); + logger.debug(entity.toString()); + return performRequest(method,endPoint,JSON.toJSONString(entity)); + } + + public static EsResponse searchQuery(String index, String type, ElasticSearchQuery query) throws IOException{ + String method = "POST"; + String entPoint = index.concat("/").concat(type).concat("/").concat("_search"); + logger.debug(query.getBody().toString()); + Response response = performRequest(method, entPoint, query.getBody().toString()); + // 获取response body,转换为json对象 + JSONObject result = JSONObject.parseObject(EntityUtils.toString(response.getEntity())); + return result.toJavaObject(EsResponse.class); + } + + public static Response aggsQuery(String index, String type, ElasticSearchQuery query) throws IOException{ + String method = "POST"; + String entPoint = index.concat("/").concat(type).concat("/").concat("_search"); + logger.debug(query.getBody().toString()); + Response response = performRequest(method, entPoint, query.getBody().toString()); + return response; + } + + public static List searchQueryScroll(String index, String type, ElasticSearchQuery query) throws IOException{ + // 首次查询,提交查询条件,endpoint增加‘?scroll=1m’ + List results = new ArrayList<>(); + String method = "POST"; + String entPoint = index.concat("/").concat(type).concat("/").concat("_search").concat("?scroll=1m"); + logger.debug(query.getBody().toString()); + Response response = performRequest(method, entPoint, query.getBody().toString()); + JSONObject result = JSONObject.parseObject(EntityUtils.toString(response.getEntity())); + EsResponse esResponse = result.toJavaObject(EsResponse.class); + String scrollId = result.getString("_scroll_id"); + if(ObjectUtil.isNotEmpty(esResponse.getDatas())){ + results.addAll(esResponse.getDatas()); + } + // 循环发送scroll请求,直到返回结果为空 + entPoint = "_search/scroll"; + JSONObject scrollBody = new JSONObject(); + scrollBody.put("scroll","1m"); + scrollBody.put("scroll_id",scrollId); + while (esResponse.getDatas().size() > 0){ + method = "GET"; + response = performRequest(method, entPoint, scrollBody.toString()); + result = JSONObject.parseObject(EntityUtils.toString(response.getEntity())); + esResponse = result.toJavaObject(EsResponse.class); + if(ObjectUtil.isNotEmpty(esResponse.getDatas())){ + results.addAll(esResponse.getDatas()); + } + } + // 查询完成后,及时删除scroll,释放资源 + scrollBody.remove("scroll"); + method = "DELETE"; + performRequest(method, entPoint, scrollBody.toString()); + return results; + } + + public static Response bulk(String index,String type,String entity) throws IOException{ + String method = "POST"; + StringBuilder endPoint = new StringBuilder(); + if(ObjectUtil.isNotEmpty(index)){ + endPoint.append(index).append("/"); + } + if(ObjectUtil.isNotEmpty(type)){ + endPoint.append(type).append("/"); + } + endPoint.append("_bulk"); + endPoint.append("?refresh=true"); + logger.debug(entity); + return performRequest(method,endPoint.toString(),entity); + } + + private static Response performRequest(String method, String endpoint, String entity) throws IOException { + //logger.info(method + " " + endpoint); + Request request = new Request(method,endpoint); + if(ObjectUtil.isNotEmpty(entity)){ + request.setEntity(new NStringEntity(entity,"utf-8")); + } + + if(ObjectUtil.isNotEmpty(username) && ObjectUtil.isNotEmpty(password)){ + RequestOptions.Builder builder = RequestOptions.DEFAULT.toBuilder(); + String token = username.concat(":").concat(password); + String base64encode = Base64.getEncoder().encodeToString(token.getBytes("utf-8")); + builder.addHeader("Authorization", "Basic " + base64encode ); + request.setOptions(builder.build()); + } + + + Response response = client.performRequest(request); + logger.debug(response.toString()); + return response; + } + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/event/UserEvent.java b/casic-data/src/main/java/com/casic/missiles/modular/system/event/UserEvent.java deleted file mode 100644 index c6ed867..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/event/UserEvent.java +++ /dev/null @@ -1,23 +0,0 @@ -package com.casic.missiles.modular.system.event; - -import com.casic.missiles.model.application.event.core.ModelEvent; -import com.casic.missiles.model.application.event.type.AbstractEventTypeEnum; -import com.casic.missiles.modular.system.model.User; - -/** - * 用户事件 - * - * @author lwh - */ -public class UserEvent extends ModelEvent { - /** - * Create a new {@code ApplicationEvent}. - * - * @param type 事件类型 - * @param source the object on which the event initially occurred or with - * which the event is associated (never {@code null}) - */ - public UserEvent(AbstractEventTypeEnum type, User source) { - super(type, source); - } -} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/event/listener/UserOneListener.java b/casic-data/src/main/java/com/casic/missiles/modular/system/event/listener/UserOneListener.java deleted file mode 100644 index 4480ef2..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/event/listener/UserOneListener.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.casic.missiles.modular.system.event.listener; - -import com.casic.missiles.core.application.event.UserLoginEvent; -import lombok.extern.slf4j.Slf4j; -import org.springframework.context.event.EventListener; -import org.springframework.stereotype.Component; - -/** - * 用户事件订阅 - * - * @author lwh - */ -@Slf4j -@Component -public class UserOneListener { - @EventListener - public void onApplicationEvent(UserLoginEvent event) { - log.debug("用户1订阅:{}", event); - } -} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/event/listener/UserTwoListener.java b/casic-data/src/main/java/com/casic/missiles/modular/system/event/listener/UserTwoListener.java deleted file mode 100644 index 8447a22..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/event/listener/UserTwoListener.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.casic.missiles.modular.system.event.listener; - -import com.casic.missiles.model.application.event.core.EventSubscriber; -import com.casic.missiles.modular.system.event.UserEvent; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Component; - -/** - * 用户事件订阅 - * - * @author lwh - */ -@Slf4j -@Component -public class UserTwoListener extends EventSubscriber { - @Override - public void onApplicationEvent(UserEvent event) { - log.debug("用户2订阅:{}", event); - } -} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/service/IAlarmRecordService.java b/casic-data/src/main/java/com/casic/missiles/modular/system/service/IAlarmRecordService.java index e0800ae..0bf85d8 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/service/IAlarmRecordService.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/service/IAlarmRecordService.java @@ -1,5 +1,7 @@ package com.casic.missiles.modular.system.service; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.AlarmRecordRequest; import com.casic.missiles.modular.system.model.AlarmRecord; import com.baomidou.mybatisplus.extension.service.IService; @@ -13,4 +15,6 @@ */ public interface IAlarmRecordService extends IService { + Page pageList(Page page, AlarmRecordRequest request); + } diff --git a/casic-common/pom.xml b/casic-common/pom.xml new file mode 100644 index 0000000..861e1ec --- /dev/null +++ b/casic-common/pom.xml @@ -0,0 +1,60 @@ + + + 4.0.0 + + com.casic + casic-PTZ + 2.0.0 + ../pom.xml + + + casic-common + 2.0.0 + jar + casic-common + casic 的spring boot版本 + + + + + com.casic + casic-core + ${core.version} + provided + + + com.casic + casic-admin-support + ${admin.version} + provided + + + com.casic + casic-export-support + ${extension.version} + + + org.springframework.boot + spring-boot-starter-web + ${boot.version} + provided + + + + com.casic + casic-data-es + 1.0.1.alpha + + + + + + src/main/java + + **/*.xml + + + + + \ No newline at end of file diff --git a/casic-common/src/main/java/com/casic/missiles/modular/system/consts/DataConst.java b/casic-common/src/main/java/com/casic/missiles/modular/system/consts/DataConst.java new file mode 100644 index 0000000..bbe581c --- /dev/null +++ b/casic-common/src/main/java/com/casic/missiles/modular/system/consts/DataConst.java @@ -0,0 +1,8 @@ +package com.casic.missiles.modular.system.consts; + +public class DataConst { + + public static final String DATA_GAS_ES_INDEX = "casic_pantilt_gas"; + + public static final String DATA_GAS_ES_TYPE = "casic_pantilt_gas"; +} diff --git a/casic-data/pom.xml b/casic-data/pom.xml index a3eba7d..3ad2c9c 100644 --- a/casic-data/pom.xml +++ b/casic-data/pom.xml @@ -41,6 +41,11 @@ provided + + com.casic + casic-data-es + 1.0.1.alpha + diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/consts/DataConst.java b/casic-data/src/main/java/com/casic/missiles/modular/system/consts/DataConst.java new file mode 100644 index 0000000..bbe581c --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/consts/DataConst.java @@ -0,0 +1,8 @@ +package com.casic.missiles.modular.system.consts; + +public class DataConst { + + public static final String DATA_GAS_ES_INDEX = "casic_pantilt_gas"; + + public static final String DATA_GAS_ES_TYPE = "casic_pantilt_gas"; +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java b/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java index 4460f11..dfc76ec 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java @@ -5,14 +5,17 @@ import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.AlarmRecordRequest; import com.casic.missiles.modular.system.model.AlarmRecord; import com.casic.missiles.modular.system.service.IAlarmRecordService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseBody; +import javax.validation.Valid; import java.util.List; /** @@ -44,10 +47,12 @@ */ @RequestMapping(value = "/listPage") @ResponseBody - public Object listPage(String condition) { + public Object listPage(@RequestBody @Valid AlarmRecordRequest request) { + + Page page = PageFactory.defaultPage(); - QueryWrapper query = new QueryWrapper<>(); - page = alarmRecordService.page(page,query); +// QueryWrapper query = new QueryWrapper<>(); + page = alarmRecordService.pageList(page,request); return ResponseData.success(super.packForBT(page)); } /** diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/DemoController.java b/casic-data/src/main/java/com/casic/missiles/modular/system/controller/DemoController.java deleted file mode 100644 index 87b6fec..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/DemoController.java +++ /dev/null @@ -1,41 +0,0 @@ -package com.casic.missiles.modular.system.controller; - - -import com.casic.missiles.model.application.event.core.EventPublisher; -import com.casic.missiles.model.application.event.enums.ModelEventTypeEnum; -import com.casic.missiles.model.response.ResponseData; -import com.casic.missiles.modular.system.event.UserEvent; -import com.casic.missiles.modular.system.model.User; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; -import org.springframework.web.bind.annotation.RestController; - -/** - * @ClassName DemoController - * @Description TODO - * @Author lenovo - * @Date 2020/6/13 15:38 - * @Version 1.0 - */ -@RestController -@RequestMapping("/demo") -public class DemoController { - @Autowired - private EventPublisher publisher; - - /** - * 获取mockToken - */ - @PostMapping("/list") - @ResponseBody - public Object list() { - User user = new User(); - user.setAccount("张三"); - publisher.publishEvent(new UserEvent(ModelEventTypeEnum.ADD, user)); - return ResponseData.success(); - } - - -} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/dto/AlarmRecordRequest.java b/casic-data/src/main/java/com/casic/missiles/modular/system/dto/AlarmRecordRequest.java new file mode 100644 index 0000000..9469954 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/dto/AlarmRecordRequest.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.system.dto; + + +import lombok.Data; + +/** + * @author zt + */ +@Data +public class AlarmRecordRequest { + + private Long stationId; + + private Long monitorId; + + private Long lineNum; + + private String alarmType; + + private String alarmStatus; + + private String startTime; + + private String endTime; + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/es/ElasticSearchQuery.java b/casic-data/src/main/java/com/casic/missiles/modular/system/es/ElasticSearchQuery.java new file mode 100644 index 0000000..4d7a38f --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/es/ElasticSearchQuery.java @@ -0,0 +1,257 @@ +package com.casic.missiles.modular.system.es; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; + +import java.io.Serializable; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +/** + * ES查询请求体 + * + * @author zhangyingjie123 + * @since 2020-11-30 + */ +public class ElasticSearchQuery { + private JSONObject body; + private JSONObject query; + private JSONObject bool; + private JSONArray boolMust; + private JSONObject filter; + private JSONObject filterBool; + private JSONArray filterBoolMust; + private JSONArray filterBoolMustnot; + + public static final String MUST_FLAG = "1"; + public static final String MUST_NOT_FLAG = "0"; + + public static final String QUERY = "query"; + public static final String BOOL = "bool"; + public static final String MUST = "must"; + public static final String MUST_NOT = "must_not"; + public static final String FILTER = "filter"; + + + /** + * 生成查询请求体基础结构: + * { + * "query": { + * "bool": { + * "must" [], + * "filter": { + * "bool": { + * "must": [], + * "must_not": [] + * } + * } + * } + * } + * } + */ + public ElasticSearchQuery() { + this.body = new JSONObject(); + this.query = this.query(); + this.bool = this.bool(); + this.boolMust = this.boolMust(); + this.filter = this.filter(); + this.filterBool = this.filterBool(); + this.filterBoolMust = this.filterBoolMust(); + this.filterBoolMustnot = this.filterBoolMustnot(); + } + + public ElasticSearchQuery(JSONObject body){ + this.body = body; + } + + public JSONObject getBody() { + return body; + } + + private JSONObject query(){ + if(ObjectUtil.isEmpty(this.body.get(QUERY))){ + this.body.put("query",new JSONObject()); + } + return this.body.getJSONObject(QUERY); + + } + + private JSONObject bool() { + JSONObject query = this.query; + if(ObjectUtil.isEmpty(query.get(BOOL))){ + query.put(BOOL,new JSONObject()); + } + return query.getJSONObject(BOOL); + } + + private JSONArray boolMust(){ + JSONObject bool = this.bool; + if(ObjectUtil.isEmpty(bool.get(MUST))){ + bool.put(MUST,new JSONArray()); + } + return bool.getJSONArray(MUST); + } + + private JSONObject filter(){ + JSONObject bool = this.bool; + if(ObjectUtil.isEmpty(bool.get(FILTER))){ + bool.put(FILTER,new JSONObject()); + } + return bool.getJSONObject(FILTER); + } + + private JSONObject filterBool(){ + JSONObject filter = this.filter; + if(ObjectUtil.isEmpty(filter.get(BOOL))){ + filter.put(BOOL,new JSONObject()); + } + return filter.getJSONObject(BOOL); + } + + private JSONArray filterBoolMust(){ + JSONObject bool = this.filterBool; + if(ObjectUtil.isEmpty(bool.get(MUST))){ + bool.put(MUST,new JSONArray()); + } + return bool.getJSONArray(MUST); + } + + private JSONArray filterBoolMustnot(){ + JSONObject bool = this.filterBool; + if(ObjectUtil.isEmpty(bool.get(MUST_NOT))){ + bool.put(MUST_NOT,new JSONArray()); + } + return bool.getJSONArray(MUST_NOT); + } + + public void match(String filed, Serializable value){ + JSONArray boolMust = this.boolMust; + JSONObject match = new JSONObject(); + JSONObject filedJson = new JSONObject(); + filedJson.put(filed,value); + match.put("match",filedJson); + boolMust.add(match); + } + + public void matchPhrase(String filed, Serializable value){ + JSONArray boolMust = this.boolMust; + JSONObject matchPhrase = new JSONObject(); + JSONObject filedJson = new JSONObject(); + filedJson.put(filed,value); + matchPhrase.put("match_phrase",filedJson); + boolMust.add(matchPhrase); + } + + public void term(String filed, Serializable value){ + this.term(filed,value,MUST_FLAG); + } + + public void term(String filed, Serializable value,String mustFlag){ + JSONObject filedJson = new JSONObject(); + filedJson.put(filed,value); + JSONObject term = new JSONObject(); + term.put("term",filedJson); + if(MUST_FLAG.equals(mustFlag)){ + this.filterBoolMust.add(term); + } + if(MUST_NOT_FLAG.equals(mustFlag)){ + this.filterBoolMustnot.add(term); + } + } + + public void terms(String filed,List value){ + this.terms(filed,value,MUST_FLAG); + } + + public void terms(String filed, List value, String mustFlag){ + JSONObject filedJson = new JSONObject(); + filedJson.put(filed,value); + JSONObject terms = new JSONObject(); + terms.put("terms",filedJson); + if(MUST_FLAG.equals(mustFlag)){ + this.filterBoolMust.add(terms); + } + if(MUST_NOT_FLAG.equals(mustFlag)){ + this.filterBoolMustnot.add(terms); + } + } + + public void range(String filed, Serializable from, Serializable to){ + this.range(filed,from,to,MUST_FLAG); + } + + public void range(String filed, Serializable from, Serializable to, String mustFlag){ + JSONObject rangeJson = new JSONObject(); + if(ObjectUtil.isNotEmpty(from)){ + rangeJson.put("from",from); + } + if(ObjectUtil.isNotEmpty(to)){ + rangeJson.put("to",to); + } + JSONObject filedJson = new JSONObject(); + filedJson.put(filed,rangeJson); + JSONObject range = new JSONObject(); + range.put("range",filedJson); + if(MUST_FLAG.equals(mustFlag)){ + this.filterBoolMust.add(range); + } + if(MUST_NOT_FLAG.equals(mustFlag)){ + this.filterBoolMustnot.add(range); + } + } + + public void size(int size){ + this.body.put("size",size); + } + + public void from(int from) { + this.body.put("from",from); + } + + public void sort(String sort, String order){ + JSONObject sortJson = new JSONObject(); + JSONObject orderJson = new JSONObject(); + orderJson.put("order",order); + sortJson.put(sort,orderJson); + this.body.put("sort",sortJson); + } + + public void aggs(String aggsName, String filed){ + JSONObject terms = new JSONObject(); + terms.put("field",filed); + JSONObject aggsTerms = new JSONObject(); + aggsTerms.put("terms",terms); + JSONObject aggsBody = new JSONObject(); + aggsBody.put(aggsName,aggsTerms); + this.body.put("aggs",aggsBody); + } + + public void aggs(JSONObject aggBody){ + this.body.put("aggs",aggBody); + } + + + + public static void main(String[] args) { + ElasticSearchQuery query = new ElasticSearchQuery(); + query.matchPhrase("name","张三"); + query.term("sex","2"); + List deptIds = new ArrayList<>(); + deptIds.add(0L); + deptIds.add(24L); + query.terms("deptId", deptIds); + Date date1 = DateUtil.parse("2020-01-01","yyyy-MM-dd"); + Date date2 = DateUtil.parse("2020-04-01","yyyy-MM-dd"); + query.range("collTime",date1.getTime(),date2.getTime()); + query.term("collState","3",MUST_NOT_FLAG); + query.size(10); + query.from(0); + query.sort("irId","asc"); + System.out.println(query.getBody().toJSONString()); + } + + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/es/ElasticSearchUtil.java b/casic-data/src/main/java/com/casic/missiles/modular/system/es/ElasticSearchUtil.java new file mode 100644 index 0000000..e9da021 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/es/ElasticSearchUtil.java @@ -0,0 +1,172 @@ +package com.casic.missiles.modular.system.es; + +import cn.hutool.core.util.ObjectUtil; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import com.casic.missiles.core.es.EsResponse; +import org.apache.http.nio.entity.NStringEntity; +import org.apache.http.util.EntityUtils; +import org.elasticsearch.client.Request; +import org.elasticsearch.client.RequestOptions; +import org.elasticsearch.client.Response; +import org.elasticsearch.client.RestClient; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.core.env.Environment; +import org.springframework.stereotype.Component; + +import javax.annotation.PostConstruct; +import java.io.IOException; +import java.util.ArrayList; +import java.util.Base64; +import java.util.List; + +/** + * ES工具类 + * + * @author zhangyingjie123 + * @since 2020-11-30 + */ +@Component +public class ElasticSearchUtil { + private static final Logger logger = LoggerFactory.getLogger(ElasticSearchUtil.class); + + @Autowired + private RestClient clientMapping; + @Autowired + private Environment env; + + private static String username; + private static String password; + + private static RestClient client; + + @PostConstruct + public void init(){ + client = clientMapping; + username = env.getProperty("casic.data.es.username"); + password = env.getProperty("casic.data.es.password"); + } + + public static JSONObject selectDocumentById(String index, String type, String id) throws IOException{ + String method = "GET"; + String endPoint = index.concat("/").concat(type).concat("/").concat(id); + Response response = performRequest(method,endPoint,null); + JSONObject result = JSONObject.parseObject(EntityUtils.toString(response.getEntity())); + return result.getJSONObject("_source"); + } + + public static Response addDocumentById(String index, String type, String id, Object entity) throws IOException{ + String method = "POST"; + String endPoint = index.concat("/").concat(type).concat("/"); + if(ObjectUtil.isNotEmpty(id)){ + endPoint.concat(id); + } + endPoint.concat("?refresh=true"); + logger.debug(entity.toString()); + return performRequest(method,endPoint,JSON.toJSONString(entity)); + } + + public static Response deleteDocumentById(String index, String type, String id) throws IOException{ + String method = "DELETE"; + String endPoint = index.concat("/").concat(type).concat("/").concat(id).concat("?refresh=true"); + return performRequest(method,endPoint,null); + } + + public static Response updateDocumentById(String index, String type, String id, Object entity) throws IOException{ + String method = "POST"; + String endPoint = index.concat("/").concat(type).concat("/").concat(id).concat("?refresh=true"); + logger.debug(entity.toString()); + return performRequest(method,endPoint,JSON.toJSONString(entity)); + } + + public static EsResponse searchQuery(String index, String type, ElasticSearchQuery query) throws IOException{ + String method = "POST"; + String entPoint = index.concat("/").concat(type).concat("/").concat("_search"); + logger.debug(query.getBody().toString()); + Response response = performRequest(method, entPoint, query.getBody().toString()); + // 获取response body,转换为json对象 + JSONObject result = JSONObject.parseObject(EntityUtils.toString(response.getEntity())); + return result.toJavaObject(EsResponse.class); + } + + public static Response aggsQuery(String index, String type, ElasticSearchQuery query) throws IOException{ + String method = "POST"; + String entPoint = index.concat("/").concat(type).concat("/").concat("_search"); + logger.debug(query.getBody().toString()); + Response response = performRequest(method, entPoint, query.getBody().toString()); + return response; + } + + public static List searchQueryScroll(String index, String type, ElasticSearchQuery query) throws IOException{ + // 首次查询,提交查询条件,endpoint增加‘?scroll=1m’ + List results = new ArrayList<>(); + String method = "POST"; + String entPoint = index.concat("/").concat(type).concat("/").concat("_search").concat("?scroll=1m"); + logger.debug(query.getBody().toString()); + Response response = performRequest(method, entPoint, query.getBody().toString()); + JSONObject result = JSONObject.parseObject(EntityUtils.toString(response.getEntity())); + EsResponse esResponse = result.toJavaObject(EsResponse.class); + String scrollId = result.getString("_scroll_id"); + if(ObjectUtil.isNotEmpty(esResponse.getDatas())){ + results.addAll(esResponse.getDatas()); + } + // 循环发送scroll请求,直到返回结果为空 + entPoint = "_search/scroll"; + JSONObject scrollBody = new JSONObject(); + scrollBody.put("scroll","1m"); + scrollBody.put("scroll_id",scrollId); + while (esResponse.getDatas().size() > 0){ + method = "GET"; + response = performRequest(method, entPoint, scrollBody.toString()); + result = JSONObject.parseObject(EntityUtils.toString(response.getEntity())); + esResponse = result.toJavaObject(EsResponse.class); + if(ObjectUtil.isNotEmpty(esResponse.getDatas())){ + results.addAll(esResponse.getDatas()); + } + } + // 查询完成后,及时删除scroll,释放资源 + scrollBody.remove("scroll"); + method = "DELETE"; + performRequest(method, entPoint, scrollBody.toString()); + return results; + } + + public static Response bulk(String index,String type,String entity) throws IOException{ + String method = "POST"; + StringBuilder endPoint = new StringBuilder(); + if(ObjectUtil.isNotEmpty(index)){ + endPoint.append(index).append("/"); + } + if(ObjectUtil.isNotEmpty(type)){ + endPoint.append(type).append("/"); + } + endPoint.append("_bulk"); + endPoint.append("?refresh=true"); + logger.debug(entity); + return performRequest(method,endPoint.toString(),entity); + } + + private static Response performRequest(String method, String endpoint, String entity) throws IOException { + //logger.info(method + " " + endpoint); + Request request = new Request(method,endpoint); + if(ObjectUtil.isNotEmpty(entity)){ + request.setEntity(new NStringEntity(entity,"utf-8")); + } + + if(ObjectUtil.isNotEmpty(username) && ObjectUtil.isNotEmpty(password)){ + RequestOptions.Builder builder = RequestOptions.DEFAULT.toBuilder(); + String token = username.concat(":").concat(password); + String base64encode = Base64.getEncoder().encodeToString(token.getBytes("utf-8")); + builder.addHeader("Authorization", "Basic " + base64encode ); + request.setOptions(builder.build()); + } + + + Response response = client.performRequest(request); + logger.debug(response.toString()); + return response; + } + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/event/UserEvent.java b/casic-data/src/main/java/com/casic/missiles/modular/system/event/UserEvent.java deleted file mode 100644 index c6ed867..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/event/UserEvent.java +++ /dev/null @@ -1,23 +0,0 @@ -package com.casic.missiles.modular.system.event; - -import com.casic.missiles.model.application.event.core.ModelEvent; -import com.casic.missiles.model.application.event.type.AbstractEventTypeEnum; -import com.casic.missiles.modular.system.model.User; - -/** - * 用户事件 - * - * @author lwh - */ -public class UserEvent extends ModelEvent { - /** - * Create a new {@code ApplicationEvent}. - * - * @param type 事件类型 - * @param source the object on which the event initially occurred or with - * which the event is associated (never {@code null}) - */ - public UserEvent(AbstractEventTypeEnum type, User source) { - super(type, source); - } -} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/event/listener/UserOneListener.java b/casic-data/src/main/java/com/casic/missiles/modular/system/event/listener/UserOneListener.java deleted file mode 100644 index 4480ef2..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/event/listener/UserOneListener.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.casic.missiles.modular.system.event.listener; - -import com.casic.missiles.core.application.event.UserLoginEvent; -import lombok.extern.slf4j.Slf4j; -import org.springframework.context.event.EventListener; -import org.springframework.stereotype.Component; - -/** - * 用户事件订阅 - * - * @author lwh - */ -@Slf4j -@Component -public class UserOneListener { - @EventListener - public void onApplicationEvent(UserLoginEvent event) { - log.debug("用户1订阅:{}", event); - } -} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/event/listener/UserTwoListener.java b/casic-data/src/main/java/com/casic/missiles/modular/system/event/listener/UserTwoListener.java deleted file mode 100644 index 8447a22..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/event/listener/UserTwoListener.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.casic.missiles.modular.system.event.listener; - -import com.casic.missiles.model.application.event.core.EventSubscriber; -import com.casic.missiles.modular.system.event.UserEvent; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Component; - -/** - * 用户事件订阅 - * - * @author lwh - */ -@Slf4j -@Component -public class UserTwoListener extends EventSubscriber { - @Override - public void onApplicationEvent(UserEvent event) { - log.debug("用户2订阅:{}", event); - } -} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/service/IAlarmRecordService.java b/casic-data/src/main/java/com/casic/missiles/modular/system/service/IAlarmRecordService.java index e0800ae..0bf85d8 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/service/IAlarmRecordService.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/service/IAlarmRecordService.java @@ -1,5 +1,7 @@ package com.casic.missiles.modular.system.service; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.AlarmRecordRequest; import com.casic.missiles.modular.system.model.AlarmRecord; import com.baomidou.mybatisplus.extension.service.IService; @@ -13,4 +15,6 @@ */ public interface IAlarmRecordService extends IService { + Page pageList(Page page, AlarmRecordRequest request); + } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/service/IDataGasService.java b/casic-data/src/main/java/com/casic/missiles/modular/system/service/IDataGasService.java index afb913d..e644294 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/service/IDataGasService.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/service/IDataGasService.java @@ -1,8 +1,11 @@ package com.casic.missiles.modular.system.service; +import com.casic.missiles.modular.system.es.DataGasEs; import com.casic.missiles.modular.system.model.DataGas; import com.baomidou.mybatisplus.extension.service.IService; +import java.io.IOException; + /** *

* 甲烷实时数据表 服务类 @@ -12,5 +15,5 @@ * @since 2023-04-18 */ public interface IDataGasService extends IService { - + void insertDataGasEs(DataGasEs dataGasEs) throws IOException; } diff --git a/casic-common/pom.xml b/casic-common/pom.xml new file mode 100644 index 0000000..861e1ec --- /dev/null +++ b/casic-common/pom.xml @@ -0,0 +1,60 @@ + + + 4.0.0 + + com.casic + casic-PTZ + 2.0.0 + ../pom.xml + + + casic-common + 2.0.0 + jar + casic-common + casic 的spring boot版本 + + + + + com.casic + casic-core + ${core.version} + provided + + + com.casic + casic-admin-support + ${admin.version} + provided + + + com.casic + casic-export-support + ${extension.version} + + + org.springframework.boot + spring-boot-starter-web + ${boot.version} + provided + + + + com.casic + casic-data-es + 1.0.1.alpha + + + + + + src/main/java + + **/*.xml + + + + + \ No newline at end of file diff --git a/casic-common/src/main/java/com/casic/missiles/modular/system/consts/DataConst.java b/casic-common/src/main/java/com/casic/missiles/modular/system/consts/DataConst.java new file mode 100644 index 0000000..bbe581c --- /dev/null +++ b/casic-common/src/main/java/com/casic/missiles/modular/system/consts/DataConst.java @@ -0,0 +1,8 @@ +package com.casic.missiles.modular.system.consts; + +public class DataConst { + + public static final String DATA_GAS_ES_INDEX = "casic_pantilt_gas"; + + public static final String DATA_GAS_ES_TYPE = "casic_pantilt_gas"; +} diff --git a/casic-data/pom.xml b/casic-data/pom.xml index a3eba7d..3ad2c9c 100644 --- a/casic-data/pom.xml +++ b/casic-data/pom.xml @@ -41,6 +41,11 @@ provided + + com.casic + casic-data-es + 1.0.1.alpha + diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/consts/DataConst.java b/casic-data/src/main/java/com/casic/missiles/modular/system/consts/DataConst.java new file mode 100644 index 0000000..bbe581c --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/consts/DataConst.java @@ -0,0 +1,8 @@ +package com.casic.missiles.modular.system.consts; + +public class DataConst { + + public static final String DATA_GAS_ES_INDEX = "casic_pantilt_gas"; + + public static final String DATA_GAS_ES_TYPE = "casic_pantilt_gas"; +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java b/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java index 4460f11..dfc76ec 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java @@ -5,14 +5,17 @@ import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.AlarmRecordRequest; import com.casic.missiles.modular.system.model.AlarmRecord; import com.casic.missiles.modular.system.service.IAlarmRecordService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseBody; +import javax.validation.Valid; import java.util.List; /** @@ -44,10 +47,12 @@ */ @RequestMapping(value = "/listPage") @ResponseBody - public Object listPage(String condition) { + public Object listPage(@RequestBody @Valid AlarmRecordRequest request) { + + Page page = PageFactory.defaultPage(); - QueryWrapper query = new QueryWrapper<>(); - page = alarmRecordService.page(page,query); +// QueryWrapper query = new QueryWrapper<>(); + page = alarmRecordService.pageList(page,request); return ResponseData.success(super.packForBT(page)); } /** diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/DemoController.java b/casic-data/src/main/java/com/casic/missiles/modular/system/controller/DemoController.java deleted file mode 100644 index 87b6fec..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/DemoController.java +++ /dev/null @@ -1,41 +0,0 @@ -package com.casic.missiles.modular.system.controller; - - -import com.casic.missiles.model.application.event.core.EventPublisher; -import com.casic.missiles.model.application.event.enums.ModelEventTypeEnum; -import com.casic.missiles.model.response.ResponseData; -import com.casic.missiles.modular.system.event.UserEvent; -import com.casic.missiles.modular.system.model.User; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; -import org.springframework.web.bind.annotation.RestController; - -/** - * @ClassName DemoController - * @Description TODO - * @Author lenovo - * @Date 2020/6/13 15:38 - * @Version 1.0 - */ -@RestController -@RequestMapping("/demo") -public class DemoController { - @Autowired - private EventPublisher publisher; - - /** - * 获取mockToken - */ - @PostMapping("/list") - @ResponseBody - public Object list() { - User user = new User(); - user.setAccount("张三"); - publisher.publishEvent(new UserEvent(ModelEventTypeEnum.ADD, user)); - return ResponseData.success(); - } - - -} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/dto/AlarmRecordRequest.java b/casic-data/src/main/java/com/casic/missiles/modular/system/dto/AlarmRecordRequest.java new file mode 100644 index 0000000..9469954 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/dto/AlarmRecordRequest.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.system.dto; + + +import lombok.Data; + +/** + * @author zt + */ +@Data +public class AlarmRecordRequest { + + private Long stationId; + + private Long monitorId; + + private Long lineNum; + + private String alarmType; + + private String alarmStatus; + + private String startTime; + + private String endTime; + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/es/ElasticSearchQuery.java b/casic-data/src/main/java/com/casic/missiles/modular/system/es/ElasticSearchQuery.java new file mode 100644 index 0000000..4d7a38f --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/es/ElasticSearchQuery.java @@ -0,0 +1,257 @@ +package com.casic.missiles.modular.system.es; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; + +import java.io.Serializable; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +/** + * ES查询请求体 + * + * @author zhangyingjie123 + * @since 2020-11-30 + */ +public class ElasticSearchQuery { + private JSONObject body; + private JSONObject query; + private JSONObject bool; + private JSONArray boolMust; + private JSONObject filter; + private JSONObject filterBool; + private JSONArray filterBoolMust; + private JSONArray filterBoolMustnot; + + public static final String MUST_FLAG = "1"; + public static final String MUST_NOT_FLAG = "0"; + + public static final String QUERY = "query"; + public static final String BOOL = "bool"; + public static final String MUST = "must"; + public static final String MUST_NOT = "must_not"; + public static final String FILTER = "filter"; + + + /** + * 生成查询请求体基础结构: + * { + * "query": { + * "bool": { + * "must" [], + * "filter": { + * "bool": { + * "must": [], + * "must_not": [] + * } + * } + * } + * } + * } + */ + public ElasticSearchQuery() { + this.body = new JSONObject(); + this.query = this.query(); + this.bool = this.bool(); + this.boolMust = this.boolMust(); + this.filter = this.filter(); + this.filterBool = this.filterBool(); + this.filterBoolMust = this.filterBoolMust(); + this.filterBoolMustnot = this.filterBoolMustnot(); + } + + public ElasticSearchQuery(JSONObject body){ + this.body = body; + } + + public JSONObject getBody() { + return body; + } + + private JSONObject query(){ + if(ObjectUtil.isEmpty(this.body.get(QUERY))){ + this.body.put("query",new JSONObject()); + } + return this.body.getJSONObject(QUERY); + + } + + private JSONObject bool() { + JSONObject query = this.query; + if(ObjectUtil.isEmpty(query.get(BOOL))){ + query.put(BOOL,new JSONObject()); + } + return query.getJSONObject(BOOL); + } + + private JSONArray boolMust(){ + JSONObject bool = this.bool; + if(ObjectUtil.isEmpty(bool.get(MUST))){ + bool.put(MUST,new JSONArray()); + } + return bool.getJSONArray(MUST); + } + + private JSONObject filter(){ + JSONObject bool = this.bool; + if(ObjectUtil.isEmpty(bool.get(FILTER))){ + bool.put(FILTER,new JSONObject()); + } + return bool.getJSONObject(FILTER); + } + + private JSONObject filterBool(){ + JSONObject filter = this.filter; + if(ObjectUtil.isEmpty(filter.get(BOOL))){ + filter.put(BOOL,new JSONObject()); + } + return filter.getJSONObject(BOOL); + } + + private JSONArray filterBoolMust(){ + JSONObject bool = this.filterBool; + if(ObjectUtil.isEmpty(bool.get(MUST))){ + bool.put(MUST,new JSONArray()); + } + return bool.getJSONArray(MUST); + } + + private JSONArray filterBoolMustnot(){ + JSONObject bool = this.filterBool; + if(ObjectUtil.isEmpty(bool.get(MUST_NOT))){ + bool.put(MUST_NOT,new JSONArray()); + } + return bool.getJSONArray(MUST_NOT); + } + + public void match(String filed, Serializable value){ + JSONArray boolMust = this.boolMust; + JSONObject match = new JSONObject(); + JSONObject filedJson = new JSONObject(); + filedJson.put(filed,value); + match.put("match",filedJson); + boolMust.add(match); + } + + public void matchPhrase(String filed, Serializable value){ + JSONArray boolMust = this.boolMust; + JSONObject matchPhrase = new JSONObject(); + JSONObject filedJson = new JSONObject(); + filedJson.put(filed,value); + matchPhrase.put("match_phrase",filedJson); + boolMust.add(matchPhrase); + } + + public void term(String filed, Serializable value){ + this.term(filed,value,MUST_FLAG); + } + + public void term(String filed, Serializable value,String mustFlag){ + JSONObject filedJson = new JSONObject(); + filedJson.put(filed,value); + JSONObject term = new JSONObject(); + term.put("term",filedJson); + if(MUST_FLAG.equals(mustFlag)){ + this.filterBoolMust.add(term); + } + if(MUST_NOT_FLAG.equals(mustFlag)){ + this.filterBoolMustnot.add(term); + } + } + + public void terms(String filed,List value){ + this.terms(filed,value,MUST_FLAG); + } + + public void terms(String filed, List value, String mustFlag){ + JSONObject filedJson = new JSONObject(); + filedJson.put(filed,value); + JSONObject terms = new JSONObject(); + terms.put("terms",filedJson); + if(MUST_FLAG.equals(mustFlag)){ + this.filterBoolMust.add(terms); + } + if(MUST_NOT_FLAG.equals(mustFlag)){ + this.filterBoolMustnot.add(terms); + } + } + + public void range(String filed, Serializable from, Serializable to){ + this.range(filed,from,to,MUST_FLAG); + } + + public void range(String filed, Serializable from, Serializable to, String mustFlag){ + JSONObject rangeJson = new JSONObject(); + if(ObjectUtil.isNotEmpty(from)){ + rangeJson.put("from",from); + } + if(ObjectUtil.isNotEmpty(to)){ + rangeJson.put("to",to); + } + JSONObject filedJson = new JSONObject(); + filedJson.put(filed,rangeJson); + JSONObject range = new JSONObject(); + range.put("range",filedJson); + if(MUST_FLAG.equals(mustFlag)){ + this.filterBoolMust.add(range); + } + if(MUST_NOT_FLAG.equals(mustFlag)){ + this.filterBoolMustnot.add(range); + } + } + + public void size(int size){ + this.body.put("size",size); + } + + public void from(int from) { + this.body.put("from",from); + } + + public void sort(String sort, String order){ + JSONObject sortJson = new JSONObject(); + JSONObject orderJson = new JSONObject(); + orderJson.put("order",order); + sortJson.put(sort,orderJson); + this.body.put("sort",sortJson); + } + + public void aggs(String aggsName, String filed){ + JSONObject terms = new JSONObject(); + terms.put("field",filed); + JSONObject aggsTerms = new JSONObject(); + aggsTerms.put("terms",terms); + JSONObject aggsBody = new JSONObject(); + aggsBody.put(aggsName,aggsTerms); + this.body.put("aggs",aggsBody); + } + + public void aggs(JSONObject aggBody){ + this.body.put("aggs",aggBody); + } + + + + public static void main(String[] args) { + ElasticSearchQuery query = new ElasticSearchQuery(); + query.matchPhrase("name","张三"); + query.term("sex","2"); + List deptIds = new ArrayList<>(); + deptIds.add(0L); + deptIds.add(24L); + query.terms("deptId", deptIds); + Date date1 = DateUtil.parse("2020-01-01","yyyy-MM-dd"); + Date date2 = DateUtil.parse("2020-04-01","yyyy-MM-dd"); + query.range("collTime",date1.getTime(),date2.getTime()); + query.term("collState","3",MUST_NOT_FLAG); + query.size(10); + query.from(0); + query.sort("irId","asc"); + System.out.println(query.getBody().toJSONString()); + } + + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/es/ElasticSearchUtil.java b/casic-data/src/main/java/com/casic/missiles/modular/system/es/ElasticSearchUtil.java new file mode 100644 index 0000000..e9da021 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/es/ElasticSearchUtil.java @@ -0,0 +1,172 @@ +package com.casic.missiles.modular.system.es; + +import cn.hutool.core.util.ObjectUtil; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import com.casic.missiles.core.es.EsResponse; +import org.apache.http.nio.entity.NStringEntity; +import org.apache.http.util.EntityUtils; +import org.elasticsearch.client.Request; +import org.elasticsearch.client.RequestOptions; +import org.elasticsearch.client.Response; +import org.elasticsearch.client.RestClient; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.core.env.Environment; +import org.springframework.stereotype.Component; + +import javax.annotation.PostConstruct; +import java.io.IOException; +import java.util.ArrayList; +import java.util.Base64; +import java.util.List; + +/** + * ES工具类 + * + * @author zhangyingjie123 + * @since 2020-11-30 + */ +@Component +public class ElasticSearchUtil { + private static final Logger logger = LoggerFactory.getLogger(ElasticSearchUtil.class); + + @Autowired + private RestClient clientMapping; + @Autowired + private Environment env; + + private static String username; + private static String password; + + private static RestClient client; + + @PostConstruct + public void init(){ + client = clientMapping; + username = env.getProperty("casic.data.es.username"); + password = env.getProperty("casic.data.es.password"); + } + + public static JSONObject selectDocumentById(String index, String type, String id) throws IOException{ + String method = "GET"; + String endPoint = index.concat("/").concat(type).concat("/").concat(id); + Response response = performRequest(method,endPoint,null); + JSONObject result = JSONObject.parseObject(EntityUtils.toString(response.getEntity())); + return result.getJSONObject("_source"); + } + + public static Response addDocumentById(String index, String type, String id, Object entity) throws IOException{ + String method = "POST"; + String endPoint = index.concat("/").concat(type).concat("/"); + if(ObjectUtil.isNotEmpty(id)){ + endPoint.concat(id); + } + endPoint.concat("?refresh=true"); + logger.debug(entity.toString()); + return performRequest(method,endPoint,JSON.toJSONString(entity)); + } + + public static Response deleteDocumentById(String index, String type, String id) throws IOException{ + String method = "DELETE"; + String endPoint = index.concat("/").concat(type).concat("/").concat(id).concat("?refresh=true"); + return performRequest(method,endPoint,null); + } + + public static Response updateDocumentById(String index, String type, String id, Object entity) throws IOException{ + String method = "POST"; + String endPoint = index.concat("/").concat(type).concat("/").concat(id).concat("?refresh=true"); + logger.debug(entity.toString()); + return performRequest(method,endPoint,JSON.toJSONString(entity)); + } + + public static EsResponse searchQuery(String index, String type, ElasticSearchQuery query) throws IOException{ + String method = "POST"; + String entPoint = index.concat("/").concat(type).concat("/").concat("_search"); + logger.debug(query.getBody().toString()); + Response response = performRequest(method, entPoint, query.getBody().toString()); + // 获取response body,转换为json对象 + JSONObject result = JSONObject.parseObject(EntityUtils.toString(response.getEntity())); + return result.toJavaObject(EsResponse.class); + } + + public static Response aggsQuery(String index, String type, ElasticSearchQuery query) throws IOException{ + String method = "POST"; + String entPoint = index.concat("/").concat(type).concat("/").concat("_search"); + logger.debug(query.getBody().toString()); + Response response = performRequest(method, entPoint, query.getBody().toString()); + return response; + } + + public static List searchQueryScroll(String index, String type, ElasticSearchQuery query) throws IOException{ + // 首次查询,提交查询条件,endpoint增加‘?scroll=1m’ + List results = new ArrayList<>(); + String method = "POST"; + String entPoint = index.concat("/").concat(type).concat("/").concat("_search").concat("?scroll=1m"); + logger.debug(query.getBody().toString()); + Response response = performRequest(method, entPoint, query.getBody().toString()); + JSONObject result = JSONObject.parseObject(EntityUtils.toString(response.getEntity())); + EsResponse esResponse = result.toJavaObject(EsResponse.class); + String scrollId = result.getString("_scroll_id"); + if(ObjectUtil.isNotEmpty(esResponse.getDatas())){ + results.addAll(esResponse.getDatas()); + } + // 循环发送scroll请求,直到返回结果为空 + entPoint = "_search/scroll"; + JSONObject scrollBody = new JSONObject(); + scrollBody.put("scroll","1m"); + scrollBody.put("scroll_id",scrollId); + while (esResponse.getDatas().size() > 0){ + method = "GET"; + response = performRequest(method, entPoint, scrollBody.toString()); + result = JSONObject.parseObject(EntityUtils.toString(response.getEntity())); + esResponse = result.toJavaObject(EsResponse.class); + if(ObjectUtil.isNotEmpty(esResponse.getDatas())){ + results.addAll(esResponse.getDatas()); + } + } + // 查询完成后,及时删除scroll,释放资源 + scrollBody.remove("scroll"); + method = "DELETE"; + performRequest(method, entPoint, scrollBody.toString()); + return results; + } + + public static Response bulk(String index,String type,String entity) throws IOException{ + String method = "POST"; + StringBuilder endPoint = new StringBuilder(); + if(ObjectUtil.isNotEmpty(index)){ + endPoint.append(index).append("/"); + } + if(ObjectUtil.isNotEmpty(type)){ + endPoint.append(type).append("/"); + } + endPoint.append("_bulk"); + endPoint.append("?refresh=true"); + logger.debug(entity); + return performRequest(method,endPoint.toString(),entity); + } + + private static Response performRequest(String method, String endpoint, String entity) throws IOException { + //logger.info(method + " " + endpoint); + Request request = new Request(method,endpoint); + if(ObjectUtil.isNotEmpty(entity)){ + request.setEntity(new NStringEntity(entity,"utf-8")); + } + + if(ObjectUtil.isNotEmpty(username) && ObjectUtil.isNotEmpty(password)){ + RequestOptions.Builder builder = RequestOptions.DEFAULT.toBuilder(); + String token = username.concat(":").concat(password); + String base64encode = Base64.getEncoder().encodeToString(token.getBytes("utf-8")); + builder.addHeader("Authorization", "Basic " + base64encode ); + request.setOptions(builder.build()); + } + + + Response response = client.performRequest(request); + logger.debug(response.toString()); + return response; + } + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/event/UserEvent.java b/casic-data/src/main/java/com/casic/missiles/modular/system/event/UserEvent.java deleted file mode 100644 index c6ed867..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/event/UserEvent.java +++ /dev/null @@ -1,23 +0,0 @@ -package com.casic.missiles.modular.system.event; - -import com.casic.missiles.model.application.event.core.ModelEvent; -import com.casic.missiles.model.application.event.type.AbstractEventTypeEnum; -import com.casic.missiles.modular.system.model.User; - -/** - * 用户事件 - * - * @author lwh - */ -public class UserEvent extends ModelEvent { - /** - * Create a new {@code ApplicationEvent}. - * - * @param type 事件类型 - * @param source the object on which the event initially occurred or with - * which the event is associated (never {@code null}) - */ - public UserEvent(AbstractEventTypeEnum type, User source) { - super(type, source); - } -} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/event/listener/UserOneListener.java b/casic-data/src/main/java/com/casic/missiles/modular/system/event/listener/UserOneListener.java deleted file mode 100644 index 4480ef2..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/event/listener/UserOneListener.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.casic.missiles.modular.system.event.listener; - -import com.casic.missiles.core.application.event.UserLoginEvent; -import lombok.extern.slf4j.Slf4j; -import org.springframework.context.event.EventListener; -import org.springframework.stereotype.Component; - -/** - * 用户事件订阅 - * - * @author lwh - */ -@Slf4j -@Component -public class UserOneListener { - @EventListener - public void onApplicationEvent(UserLoginEvent event) { - log.debug("用户1订阅:{}", event); - } -} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/event/listener/UserTwoListener.java b/casic-data/src/main/java/com/casic/missiles/modular/system/event/listener/UserTwoListener.java deleted file mode 100644 index 8447a22..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/event/listener/UserTwoListener.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.casic.missiles.modular.system.event.listener; - -import com.casic.missiles.model.application.event.core.EventSubscriber; -import com.casic.missiles.modular.system.event.UserEvent; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Component; - -/** - * 用户事件订阅 - * - * @author lwh - */ -@Slf4j -@Component -public class UserTwoListener extends EventSubscriber { - @Override - public void onApplicationEvent(UserEvent event) { - log.debug("用户2订阅:{}", event); - } -} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/service/IAlarmRecordService.java b/casic-data/src/main/java/com/casic/missiles/modular/system/service/IAlarmRecordService.java index e0800ae..0bf85d8 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/service/IAlarmRecordService.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/service/IAlarmRecordService.java @@ -1,5 +1,7 @@ package com.casic.missiles.modular.system.service; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.AlarmRecordRequest; import com.casic.missiles.modular.system.model.AlarmRecord; import com.baomidou.mybatisplus.extension.service.IService; @@ -13,4 +15,6 @@ */ public interface IAlarmRecordService extends IService { + Page pageList(Page page, AlarmRecordRequest request); + } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/service/IDataGasService.java b/casic-data/src/main/java/com/casic/missiles/modular/system/service/IDataGasService.java index afb913d..e644294 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/service/IDataGasService.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/service/IDataGasService.java @@ -1,8 +1,11 @@ package com.casic.missiles.modular.system.service; +import com.casic.missiles.modular.system.es.DataGasEs; import com.casic.missiles.modular.system.model.DataGas; import com.baomidou.mybatisplus.extension.service.IService; +import java.io.IOException; + /** *

* 甲烷实时数据表 服务类 @@ -12,5 +15,5 @@ * @since 2023-04-18 */ public interface IDataGasService extends IService { - + void insertDataGasEs(DataGasEs dataGasEs) throws IOException; } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/service/impl/AlarmRecordServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/system/service/impl/AlarmRecordServiceImpl.java index 2d9eb88..1dce8d5 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/service/impl/AlarmRecordServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/service/impl/AlarmRecordServiceImpl.java @@ -1,9 +1,15 @@ package com.casic.missiles.modular.system.service.impl; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.modular.system.dto.AlarmRecordRequest; import com.casic.missiles.modular.system.model.AlarmRecord; import com.casic.missiles.modular.system.dao.AlarmRecordMapper; import com.casic.missiles.modular.system.service.IAlarmRecordService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; /** @@ -17,4 +23,19 @@ @Service public class AlarmRecordServiceImpl extends ServiceImpl implements IAlarmRecordService { + + @Autowired + private AbstractPermissionContext permissionContext; +// @Autowired +// private ICasicUserService casicUserService; + + + @Override + public Page pageList(Page page, AlarmRecordRequest request) { + +// ShiroUser currentUser = permissionContext.getUserService().; + AuthUser user =permissionContext.getAuthService().getLoginUser(); + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + return null; + } } diff --git a/casic-common/pom.xml b/casic-common/pom.xml new file mode 100644 index 0000000..861e1ec --- /dev/null +++ b/casic-common/pom.xml @@ -0,0 +1,60 @@ + + + 4.0.0 + + com.casic + casic-PTZ + 2.0.0 + ../pom.xml + + + casic-common + 2.0.0 + jar + casic-common + casic 的spring boot版本 + + + + + com.casic + casic-core + ${core.version} + provided + + + com.casic + casic-admin-support + ${admin.version} + provided + + + com.casic + casic-export-support + ${extension.version} + + + org.springframework.boot + spring-boot-starter-web + ${boot.version} + provided + + + + com.casic + casic-data-es + 1.0.1.alpha + + + + + + src/main/java + + **/*.xml + + + + + \ No newline at end of file diff --git a/casic-common/src/main/java/com/casic/missiles/modular/system/consts/DataConst.java b/casic-common/src/main/java/com/casic/missiles/modular/system/consts/DataConst.java new file mode 100644 index 0000000..bbe581c --- /dev/null +++ b/casic-common/src/main/java/com/casic/missiles/modular/system/consts/DataConst.java @@ -0,0 +1,8 @@ +package com.casic.missiles.modular.system.consts; + +public class DataConst { + + public static final String DATA_GAS_ES_INDEX = "casic_pantilt_gas"; + + public static final String DATA_GAS_ES_TYPE = "casic_pantilt_gas"; +} diff --git a/casic-data/pom.xml b/casic-data/pom.xml index a3eba7d..3ad2c9c 100644 --- a/casic-data/pom.xml +++ b/casic-data/pom.xml @@ -41,6 +41,11 @@ provided + + com.casic + casic-data-es + 1.0.1.alpha + diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/consts/DataConst.java b/casic-data/src/main/java/com/casic/missiles/modular/system/consts/DataConst.java new file mode 100644 index 0000000..bbe581c --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/consts/DataConst.java @@ -0,0 +1,8 @@ +package com.casic.missiles.modular.system.consts; + +public class DataConst { + + public static final String DATA_GAS_ES_INDEX = "casic_pantilt_gas"; + + public static final String DATA_GAS_ES_TYPE = "casic_pantilt_gas"; +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java b/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java index 4460f11..dfc76ec 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java @@ -5,14 +5,17 @@ import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.AlarmRecordRequest; import com.casic.missiles.modular.system.model.AlarmRecord; import com.casic.missiles.modular.system.service.IAlarmRecordService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseBody; +import javax.validation.Valid; import java.util.List; /** @@ -44,10 +47,12 @@ */ @RequestMapping(value = "/listPage") @ResponseBody - public Object listPage(String condition) { + public Object listPage(@RequestBody @Valid AlarmRecordRequest request) { + + Page page = PageFactory.defaultPage(); - QueryWrapper query = new QueryWrapper<>(); - page = alarmRecordService.page(page,query); +// QueryWrapper query = new QueryWrapper<>(); + page = alarmRecordService.pageList(page,request); return ResponseData.success(super.packForBT(page)); } /** diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/DemoController.java b/casic-data/src/main/java/com/casic/missiles/modular/system/controller/DemoController.java deleted file mode 100644 index 87b6fec..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/DemoController.java +++ /dev/null @@ -1,41 +0,0 @@ -package com.casic.missiles.modular.system.controller; - - -import com.casic.missiles.model.application.event.core.EventPublisher; -import com.casic.missiles.model.application.event.enums.ModelEventTypeEnum; -import com.casic.missiles.model.response.ResponseData; -import com.casic.missiles.modular.system.event.UserEvent; -import com.casic.missiles.modular.system.model.User; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; -import org.springframework.web.bind.annotation.RestController; - -/** - * @ClassName DemoController - * @Description TODO - * @Author lenovo - * @Date 2020/6/13 15:38 - * @Version 1.0 - */ -@RestController -@RequestMapping("/demo") -public class DemoController { - @Autowired - private EventPublisher publisher; - - /** - * 获取mockToken - */ - @PostMapping("/list") - @ResponseBody - public Object list() { - User user = new User(); - user.setAccount("张三"); - publisher.publishEvent(new UserEvent(ModelEventTypeEnum.ADD, user)); - return ResponseData.success(); - } - - -} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/dto/AlarmRecordRequest.java b/casic-data/src/main/java/com/casic/missiles/modular/system/dto/AlarmRecordRequest.java new file mode 100644 index 0000000..9469954 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/dto/AlarmRecordRequest.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.system.dto; + + +import lombok.Data; + +/** + * @author zt + */ +@Data +public class AlarmRecordRequest { + + private Long stationId; + + private Long monitorId; + + private Long lineNum; + + private String alarmType; + + private String alarmStatus; + + private String startTime; + + private String endTime; + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/es/ElasticSearchQuery.java b/casic-data/src/main/java/com/casic/missiles/modular/system/es/ElasticSearchQuery.java new file mode 100644 index 0000000..4d7a38f --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/es/ElasticSearchQuery.java @@ -0,0 +1,257 @@ +package com.casic.missiles.modular.system.es; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; + +import java.io.Serializable; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +/** + * ES查询请求体 + * + * @author zhangyingjie123 + * @since 2020-11-30 + */ +public class ElasticSearchQuery { + private JSONObject body; + private JSONObject query; + private JSONObject bool; + private JSONArray boolMust; + private JSONObject filter; + private JSONObject filterBool; + private JSONArray filterBoolMust; + private JSONArray filterBoolMustnot; + + public static final String MUST_FLAG = "1"; + public static final String MUST_NOT_FLAG = "0"; + + public static final String QUERY = "query"; + public static final String BOOL = "bool"; + public static final String MUST = "must"; + public static final String MUST_NOT = "must_not"; + public static final String FILTER = "filter"; + + + /** + * 生成查询请求体基础结构: + * { + * "query": { + * "bool": { + * "must" [], + * "filter": { + * "bool": { + * "must": [], + * "must_not": [] + * } + * } + * } + * } + * } + */ + public ElasticSearchQuery() { + this.body = new JSONObject(); + this.query = this.query(); + this.bool = this.bool(); + this.boolMust = this.boolMust(); + this.filter = this.filter(); + this.filterBool = this.filterBool(); + this.filterBoolMust = this.filterBoolMust(); + this.filterBoolMustnot = this.filterBoolMustnot(); + } + + public ElasticSearchQuery(JSONObject body){ + this.body = body; + } + + public JSONObject getBody() { + return body; + } + + private JSONObject query(){ + if(ObjectUtil.isEmpty(this.body.get(QUERY))){ + this.body.put("query",new JSONObject()); + } + return this.body.getJSONObject(QUERY); + + } + + private JSONObject bool() { + JSONObject query = this.query; + if(ObjectUtil.isEmpty(query.get(BOOL))){ + query.put(BOOL,new JSONObject()); + } + return query.getJSONObject(BOOL); + } + + private JSONArray boolMust(){ + JSONObject bool = this.bool; + if(ObjectUtil.isEmpty(bool.get(MUST))){ + bool.put(MUST,new JSONArray()); + } + return bool.getJSONArray(MUST); + } + + private JSONObject filter(){ + JSONObject bool = this.bool; + if(ObjectUtil.isEmpty(bool.get(FILTER))){ + bool.put(FILTER,new JSONObject()); + } + return bool.getJSONObject(FILTER); + } + + private JSONObject filterBool(){ + JSONObject filter = this.filter; + if(ObjectUtil.isEmpty(filter.get(BOOL))){ + filter.put(BOOL,new JSONObject()); + } + return filter.getJSONObject(BOOL); + } + + private JSONArray filterBoolMust(){ + JSONObject bool = this.filterBool; + if(ObjectUtil.isEmpty(bool.get(MUST))){ + bool.put(MUST,new JSONArray()); + } + return bool.getJSONArray(MUST); + } + + private JSONArray filterBoolMustnot(){ + JSONObject bool = this.filterBool; + if(ObjectUtil.isEmpty(bool.get(MUST_NOT))){ + bool.put(MUST_NOT,new JSONArray()); + } + return bool.getJSONArray(MUST_NOT); + } + + public void match(String filed, Serializable value){ + JSONArray boolMust = this.boolMust; + JSONObject match = new JSONObject(); + JSONObject filedJson = new JSONObject(); + filedJson.put(filed,value); + match.put("match",filedJson); + boolMust.add(match); + } + + public void matchPhrase(String filed, Serializable value){ + JSONArray boolMust = this.boolMust; + JSONObject matchPhrase = new JSONObject(); + JSONObject filedJson = new JSONObject(); + filedJson.put(filed,value); + matchPhrase.put("match_phrase",filedJson); + boolMust.add(matchPhrase); + } + + public void term(String filed, Serializable value){ + this.term(filed,value,MUST_FLAG); + } + + public void term(String filed, Serializable value,String mustFlag){ + JSONObject filedJson = new JSONObject(); + filedJson.put(filed,value); + JSONObject term = new JSONObject(); + term.put("term",filedJson); + if(MUST_FLAG.equals(mustFlag)){ + this.filterBoolMust.add(term); + } + if(MUST_NOT_FLAG.equals(mustFlag)){ + this.filterBoolMustnot.add(term); + } + } + + public void terms(String filed,List value){ + this.terms(filed,value,MUST_FLAG); + } + + public void terms(String filed, List value, String mustFlag){ + JSONObject filedJson = new JSONObject(); + filedJson.put(filed,value); + JSONObject terms = new JSONObject(); + terms.put("terms",filedJson); + if(MUST_FLAG.equals(mustFlag)){ + this.filterBoolMust.add(terms); + } + if(MUST_NOT_FLAG.equals(mustFlag)){ + this.filterBoolMustnot.add(terms); + } + } + + public void range(String filed, Serializable from, Serializable to){ + this.range(filed,from,to,MUST_FLAG); + } + + public void range(String filed, Serializable from, Serializable to, String mustFlag){ + JSONObject rangeJson = new JSONObject(); + if(ObjectUtil.isNotEmpty(from)){ + rangeJson.put("from",from); + } + if(ObjectUtil.isNotEmpty(to)){ + rangeJson.put("to",to); + } + JSONObject filedJson = new JSONObject(); + filedJson.put(filed,rangeJson); + JSONObject range = new JSONObject(); + range.put("range",filedJson); + if(MUST_FLAG.equals(mustFlag)){ + this.filterBoolMust.add(range); + } + if(MUST_NOT_FLAG.equals(mustFlag)){ + this.filterBoolMustnot.add(range); + } + } + + public void size(int size){ + this.body.put("size",size); + } + + public void from(int from) { + this.body.put("from",from); + } + + public void sort(String sort, String order){ + JSONObject sortJson = new JSONObject(); + JSONObject orderJson = new JSONObject(); + orderJson.put("order",order); + sortJson.put(sort,orderJson); + this.body.put("sort",sortJson); + } + + public void aggs(String aggsName, String filed){ + JSONObject terms = new JSONObject(); + terms.put("field",filed); + JSONObject aggsTerms = new JSONObject(); + aggsTerms.put("terms",terms); + JSONObject aggsBody = new JSONObject(); + aggsBody.put(aggsName,aggsTerms); + this.body.put("aggs",aggsBody); + } + + public void aggs(JSONObject aggBody){ + this.body.put("aggs",aggBody); + } + + + + public static void main(String[] args) { + ElasticSearchQuery query = new ElasticSearchQuery(); + query.matchPhrase("name","张三"); + query.term("sex","2"); + List deptIds = new ArrayList<>(); + deptIds.add(0L); + deptIds.add(24L); + query.terms("deptId", deptIds); + Date date1 = DateUtil.parse("2020-01-01","yyyy-MM-dd"); + Date date2 = DateUtil.parse("2020-04-01","yyyy-MM-dd"); + query.range("collTime",date1.getTime(),date2.getTime()); + query.term("collState","3",MUST_NOT_FLAG); + query.size(10); + query.from(0); + query.sort("irId","asc"); + System.out.println(query.getBody().toJSONString()); + } + + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/es/ElasticSearchUtil.java b/casic-data/src/main/java/com/casic/missiles/modular/system/es/ElasticSearchUtil.java new file mode 100644 index 0000000..e9da021 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/es/ElasticSearchUtil.java @@ -0,0 +1,172 @@ +package com.casic.missiles.modular.system.es; + +import cn.hutool.core.util.ObjectUtil; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import com.casic.missiles.core.es.EsResponse; +import org.apache.http.nio.entity.NStringEntity; +import org.apache.http.util.EntityUtils; +import org.elasticsearch.client.Request; +import org.elasticsearch.client.RequestOptions; +import org.elasticsearch.client.Response; +import org.elasticsearch.client.RestClient; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.core.env.Environment; +import org.springframework.stereotype.Component; + +import javax.annotation.PostConstruct; +import java.io.IOException; +import java.util.ArrayList; +import java.util.Base64; +import java.util.List; + +/** + * ES工具类 + * + * @author zhangyingjie123 + * @since 2020-11-30 + */ +@Component +public class ElasticSearchUtil { + private static final Logger logger = LoggerFactory.getLogger(ElasticSearchUtil.class); + + @Autowired + private RestClient clientMapping; + @Autowired + private Environment env; + + private static String username; + private static String password; + + private static RestClient client; + + @PostConstruct + public void init(){ + client = clientMapping; + username = env.getProperty("casic.data.es.username"); + password = env.getProperty("casic.data.es.password"); + } + + public static JSONObject selectDocumentById(String index, String type, String id) throws IOException{ + String method = "GET"; + String endPoint = index.concat("/").concat(type).concat("/").concat(id); + Response response = performRequest(method,endPoint,null); + JSONObject result = JSONObject.parseObject(EntityUtils.toString(response.getEntity())); + return result.getJSONObject("_source"); + } + + public static Response addDocumentById(String index, String type, String id, Object entity) throws IOException{ + String method = "POST"; + String endPoint = index.concat("/").concat(type).concat("/"); + if(ObjectUtil.isNotEmpty(id)){ + endPoint.concat(id); + } + endPoint.concat("?refresh=true"); + logger.debug(entity.toString()); + return performRequest(method,endPoint,JSON.toJSONString(entity)); + } + + public static Response deleteDocumentById(String index, String type, String id) throws IOException{ + String method = "DELETE"; + String endPoint = index.concat("/").concat(type).concat("/").concat(id).concat("?refresh=true"); + return performRequest(method,endPoint,null); + } + + public static Response updateDocumentById(String index, String type, String id, Object entity) throws IOException{ + String method = "POST"; + String endPoint = index.concat("/").concat(type).concat("/").concat(id).concat("?refresh=true"); + logger.debug(entity.toString()); + return performRequest(method,endPoint,JSON.toJSONString(entity)); + } + + public static EsResponse searchQuery(String index, String type, ElasticSearchQuery query) throws IOException{ + String method = "POST"; + String entPoint = index.concat("/").concat(type).concat("/").concat("_search"); + logger.debug(query.getBody().toString()); + Response response = performRequest(method, entPoint, query.getBody().toString()); + // 获取response body,转换为json对象 + JSONObject result = JSONObject.parseObject(EntityUtils.toString(response.getEntity())); + return result.toJavaObject(EsResponse.class); + } + + public static Response aggsQuery(String index, String type, ElasticSearchQuery query) throws IOException{ + String method = "POST"; + String entPoint = index.concat("/").concat(type).concat("/").concat("_search"); + logger.debug(query.getBody().toString()); + Response response = performRequest(method, entPoint, query.getBody().toString()); + return response; + } + + public static List searchQueryScroll(String index, String type, ElasticSearchQuery query) throws IOException{ + // 首次查询,提交查询条件,endpoint增加‘?scroll=1m’ + List results = new ArrayList<>(); + String method = "POST"; + String entPoint = index.concat("/").concat(type).concat("/").concat("_search").concat("?scroll=1m"); + logger.debug(query.getBody().toString()); + Response response = performRequest(method, entPoint, query.getBody().toString()); + JSONObject result = JSONObject.parseObject(EntityUtils.toString(response.getEntity())); + EsResponse esResponse = result.toJavaObject(EsResponse.class); + String scrollId = result.getString("_scroll_id"); + if(ObjectUtil.isNotEmpty(esResponse.getDatas())){ + results.addAll(esResponse.getDatas()); + } + // 循环发送scroll请求,直到返回结果为空 + entPoint = "_search/scroll"; + JSONObject scrollBody = new JSONObject(); + scrollBody.put("scroll","1m"); + scrollBody.put("scroll_id",scrollId); + while (esResponse.getDatas().size() > 0){ + method = "GET"; + response = performRequest(method, entPoint, scrollBody.toString()); + result = JSONObject.parseObject(EntityUtils.toString(response.getEntity())); + esResponse = result.toJavaObject(EsResponse.class); + if(ObjectUtil.isNotEmpty(esResponse.getDatas())){ + results.addAll(esResponse.getDatas()); + } + } + // 查询完成后,及时删除scroll,释放资源 + scrollBody.remove("scroll"); + method = "DELETE"; + performRequest(method, entPoint, scrollBody.toString()); + return results; + } + + public static Response bulk(String index,String type,String entity) throws IOException{ + String method = "POST"; + StringBuilder endPoint = new StringBuilder(); + if(ObjectUtil.isNotEmpty(index)){ + endPoint.append(index).append("/"); + } + if(ObjectUtil.isNotEmpty(type)){ + endPoint.append(type).append("/"); + } + endPoint.append("_bulk"); + endPoint.append("?refresh=true"); + logger.debug(entity); + return performRequest(method,endPoint.toString(),entity); + } + + private static Response performRequest(String method, String endpoint, String entity) throws IOException { + //logger.info(method + " " + endpoint); + Request request = new Request(method,endpoint); + if(ObjectUtil.isNotEmpty(entity)){ + request.setEntity(new NStringEntity(entity,"utf-8")); + } + + if(ObjectUtil.isNotEmpty(username) && ObjectUtil.isNotEmpty(password)){ + RequestOptions.Builder builder = RequestOptions.DEFAULT.toBuilder(); + String token = username.concat(":").concat(password); + String base64encode = Base64.getEncoder().encodeToString(token.getBytes("utf-8")); + builder.addHeader("Authorization", "Basic " + base64encode ); + request.setOptions(builder.build()); + } + + + Response response = client.performRequest(request); + logger.debug(response.toString()); + return response; + } + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/event/UserEvent.java b/casic-data/src/main/java/com/casic/missiles/modular/system/event/UserEvent.java deleted file mode 100644 index c6ed867..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/event/UserEvent.java +++ /dev/null @@ -1,23 +0,0 @@ -package com.casic.missiles.modular.system.event; - -import com.casic.missiles.model.application.event.core.ModelEvent; -import com.casic.missiles.model.application.event.type.AbstractEventTypeEnum; -import com.casic.missiles.modular.system.model.User; - -/** - * 用户事件 - * - * @author lwh - */ -public class UserEvent extends ModelEvent { - /** - * Create a new {@code ApplicationEvent}. - * - * @param type 事件类型 - * @param source the object on which the event initially occurred or with - * which the event is associated (never {@code null}) - */ - public UserEvent(AbstractEventTypeEnum type, User source) { - super(type, source); - } -} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/event/listener/UserOneListener.java b/casic-data/src/main/java/com/casic/missiles/modular/system/event/listener/UserOneListener.java deleted file mode 100644 index 4480ef2..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/event/listener/UserOneListener.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.casic.missiles.modular.system.event.listener; - -import com.casic.missiles.core.application.event.UserLoginEvent; -import lombok.extern.slf4j.Slf4j; -import org.springframework.context.event.EventListener; -import org.springframework.stereotype.Component; - -/** - * 用户事件订阅 - * - * @author lwh - */ -@Slf4j -@Component -public class UserOneListener { - @EventListener - public void onApplicationEvent(UserLoginEvent event) { - log.debug("用户1订阅:{}", event); - } -} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/event/listener/UserTwoListener.java b/casic-data/src/main/java/com/casic/missiles/modular/system/event/listener/UserTwoListener.java deleted file mode 100644 index 8447a22..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/event/listener/UserTwoListener.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.casic.missiles.modular.system.event.listener; - -import com.casic.missiles.model.application.event.core.EventSubscriber; -import com.casic.missiles.modular.system.event.UserEvent; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Component; - -/** - * 用户事件订阅 - * - * @author lwh - */ -@Slf4j -@Component -public class UserTwoListener extends EventSubscriber { - @Override - public void onApplicationEvent(UserEvent event) { - log.debug("用户2订阅:{}", event); - } -} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/service/IAlarmRecordService.java b/casic-data/src/main/java/com/casic/missiles/modular/system/service/IAlarmRecordService.java index e0800ae..0bf85d8 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/service/IAlarmRecordService.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/service/IAlarmRecordService.java @@ -1,5 +1,7 @@ package com.casic.missiles.modular.system.service; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.AlarmRecordRequest; import com.casic.missiles.modular.system.model.AlarmRecord; import com.baomidou.mybatisplus.extension.service.IService; @@ -13,4 +15,6 @@ */ public interface IAlarmRecordService extends IService { + Page pageList(Page page, AlarmRecordRequest request); + } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/service/IDataGasService.java b/casic-data/src/main/java/com/casic/missiles/modular/system/service/IDataGasService.java index afb913d..e644294 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/service/IDataGasService.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/service/IDataGasService.java @@ -1,8 +1,11 @@ package com.casic.missiles.modular.system.service; +import com.casic.missiles.modular.system.es.DataGasEs; import com.casic.missiles.modular.system.model.DataGas; import com.baomidou.mybatisplus.extension.service.IService; +import java.io.IOException; + /** *

* 甲烷实时数据表 服务类 @@ -12,5 +15,5 @@ * @since 2023-04-18 */ public interface IDataGasService extends IService { - + void insertDataGasEs(DataGasEs dataGasEs) throws IOException; } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/service/impl/AlarmRecordServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/system/service/impl/AlarmRecordServiceImpl.java index 2d9eb88..1dce8d5 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/service/impl/AlarmRecordServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/service/impl/AlarmRecordServiceImpl.java @@ -1,9 +1,15 @@ package com.casic.missiles.modular.system.service.impl; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.modular.system.dto.AlarmRecordRequest; import com.casic.missiles.modular.system.model.AlarmRecord; import com.casic.missiles.modular.system.dao.AlarmRecordMapper; import com.casic.missiles.modular.system.service.IAlarmRecordService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; /** @@ -17,4 +23,19 @@ @Service public class AlarmRecordServiceImpl extends ServiceImpl implements IAlarmRecordService { + + @Autowired + private AbstractPermissionContext permissionContext; +// @Autowired +// private ICasicUserService casicUserService; + + + @Override + public Page pageList(Page page, AlarmRecordRequest request) { + +// ShiroUser currentUser = permissionContext.getUserService().; + AuthUser user =permissionContext.getAuthService().getLoginUser(); + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + return null; + } } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/service/impl/DataGasServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/system/service/impl/DataGasServiceImpl.java index 4a11b07..1aa01e5 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/service/impl/DataGasServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/service/impl/DataGasServiceImpl.java @@ -1,11 +1,16 @@ package com.casic.missiles.modular.system.service.impl; +import com.casic.missiles.modular.system.consts.DataConst; +import com.casic.missiles.modular.system.es.DataGasEs; +import com.casic.missiles.modular.system.es.ElasticSearchUtil; import com.casic.missiles.modular.system.model.DataGas; import com.casic.missiles.modular.system.dao.DataGasMapper; import com.casic.missiles.modular.system.service.IDataGasService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.stereotype.Service; +import java.io.IOException; + /** *

* 甲烷实时数据表 服务实现类 @@ -17,4 +22,8 @@ @Service public class DataGasServiceImpl extends ServiceImpl implements IDataGasService { + @Override + public void insertDataGasEs(DataGasEs dataGasEs) throws IOException { + ElasticSearchUtil.addDocumentById(DataConst.DATA_GAS_ES_INDEX, DataConst.DATA_GAS_ES_TYPE, null, dataGasEs); + } } diff --git a/casic-common/pom.xml b/casic-common/pom.xml new file mode 100644 index 0000000..861e1ec --- /dev/null +++ b/casic-common/pom.xml @@ -0,0 +1,60 @@ + + + 4.0.0 + + com.casic + casic-PTZ + 2.0.0 + ../pom.xml + + + casic-common + 2.0.0 + jar + casic-common + casic 的spring boot版本 + + + + + com.casic + casic-core + ${core.version} + provided + + + com.casic + casic-admin-support + ${admin.version} + provided + + + com.casic + casic-export-support + ${extension.version} + + + org.springframework.boot + spring-boot-starter-web + ${boot.version} + provided + + + + com.casic + casic-data-es + 1.0.1.alpha + + + + + + src/main/java + + **/*.xml + + + + + \ No newline at end of file diff --git a/casic-common/src/main/java/com/casic/missiles/modular/system/consts/DataConst.java b/casic-common/src/main/java/com/casic/missiles/modular/system/consts/DataConst.java new file mode 100644 index 0000000..bbe581c --- /dev/null +++ b/casic-common/src/main/java/com/casic/missiles/modular/system/consts/DataConst.java @@ -0,0 +1,8 @@ +package com.casic.missiles.modular.system.consts; + +public class DataConst { + + public static final String DATA_GAS_ES_INDEX = "casic_pantilt_gas"; + + public static final String DATA_GAS_ES_TYPE = "casic_pantilt_gas"; +} diff --git a/casic-data/pom.xml b/casic-data/pom.xml index a3eba7d..3ad2c9c 100644 --- a/casic-data/pom.xml +++ b/casic-data/pom.xml @@ -41,6 +41,11 @@ provided + + com.casic + casic-data-es + 1.0.1.alpha + diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/consts/DataConst.java b/casic-data/src/main/java/com/casic/missiles/modular/system/consts/DataConst.java new file mode 100644 index 0000000..bbe581c --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/consts/DataConst.java @@ -0,0 +1,8 @@ +package com.casic.missiles.modular.system.consts; + +public class DataConst { + + public static final String DATA_GAS_ES_INDEX = "casic_pantilt_gas"; + + public static final String DATA_GAS_ES_TYPE = "casic_pantilt_gas"; +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java b/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java index 4460f11..dfc76ec 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java @@ -5,14 +5,17 @@ import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.AlarmRecordRequest; import com.casic.missiles.modular.system.model.AlarmRecord; import com.casic.missiles.modular.system.service.IAlarmRecordService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseBody; +import javax.validation.Valid; import java.util.List; /** @@ -44,10 +47,12 @@ */ @RequestMapping(value = "/listPage") @ResponseBody - public Object listPage(String condition) { + public Object listPage(@RequestBody @Valid AlarmRecordRequest request) { + + Page page = PageFactory.defaultPage(); - QueryWrapper query = new QueryWrapper<>(); - page = alarmRecordService.page(page,query); +// QueryWrapper query = new QueryWrapper<>(); + page = alarmRecordService.pageList(page,request); return ResponseData.success(super.packForBT(page)); } /** diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/DemoController.java b/casic-data/src/main/java/com/casic/missiles/modular/system/controller/DemoController.java deleted file mode 100644 index 87b6fec..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/DemoController.java +++ /dev/null @@ -1,41 +0,0 @@ -package com.casic.missiles.modular.system.controller; - - -import com.casic.missiles.model.application.event.core.EventPublisher; -import com.casic.missiles.model.application.event.enums.ModelEventTypeEnum; -import com.casic.missiles.model.response.ResponseData; -import com.casic.missiles.modular.system.event.UserEvent; -import com.casic.missiles.modular.system.model.User; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; -import org.springframework.web.bind.annotation.RestController; - -/** - * @ClassName DemoController - * @Description TODO - * @Author lenovo - * @Date 2020/6/13 15:38 - * @Version 1.0 - */ -@RestController -@RequestMapping("/demo") -public class DemoController { - @Autowired - private EventPublisher publisher; - - /** - * 获取mockToken - */ - @PostMapping("/list") - @ResponseBody - public Object list() { - User user = new User(); - user.setAccount("张三"); - publisher.publishEvent(new UserEvent(ModelEventTypeEnum.ADD, user)); - return ResponseData.success(); - } - - -} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/dto/AlarmRecordRequest.java b/casic-data/src/main/java/com/casic/missiles/modular/system/dto/AlarmRecordRequest.java new file mode 100644 index 0000000..9469954 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/dto/AlarmRecordRequest.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.system.dto; + + +import lombok.Data; + +/** + * @author zt + */ +@Data +public class AlarmRecordRequest { + + private Long stationId; + + private Long monitorId; + + private Long lineNum; + + private String alarmType; + + private String alarmStatus; + + private String startTime; + + private String endTime; + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/es/ElasticSearchQuery.java b/casic-data/src/main/java/com/casic/missiles/modular/system/es/ElasticSearchQuery.java new file mode 100644 index 0000000..4d7a38f --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/es/ElasticSearchQuery.java @@ -0,0 +1,257 @@ +package com.casic.missiles.modular.system.es; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; + +import java.io.Serializable; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +/** + * ES查询请求体 + * + * @author zhangyingjie123 + * @since 2020-11-30 + */ +public class ElasticSearchQuery { + private JSONObject body; + private JSONObject query; + private JSONObject bool; + private JSONArray boolMust; + private JSONObject filter; + private JSONObject filterBool; + private JSONArray filterBoolMust; + private JSONArray filterBoolMustnot; + + public static final String MUST_FLAG = "1"; + public static final String MUST_NOT_FLAG = "0"; + + public static final String QUERY = "query"; + public static final String BOOL = "bool"; + public static final String MUST = "must"; + public static final String MUST_NOT = "must_not"; + public static final String FILTER = "filter"; + + + /** + * 生成查询请求体基础结构: + * { + * "query": { + * "bool": { + * "must" [], + * "filter": { + * "bool": { + * "must": [], + * "must_not": [] + * } + * } + * } + * } + * } + */ + public ElasticSearchQuery() { + this.body = new JSONObject(); + this.query = this.query(); + this.bool = this.bool(); + this.boolMust = this.boolMust(); + this.filter = this.filter(); + this.filterBool = this.filterBool(); + this.filterBoolMust = this.filterBoolMust(); + this.filterBoolMustnot = this.filterBoolMustnot(); + } + + public ElasticSearchQuery(JSONObject body){ + this.body = body; + } + + public JSONObject getBody() { + return body; + } + + private JSONObject query(){ + if(ObjectUtil.isEmpty(this.body.get(QUERY))){ + this.body.put("query",new JSONObject()); + } + return this.body.getJSONObject(QUERY); + + } + + private JSONObject bool() { + JSONObject query = this.query; + if(ObjectUtil.isEmpty(query.get(BOOL))){ + query.put(BOOL,new JSONObject()); + } + return query.getJSONObject(BOOL); + } + + private JSONArray boolMust(){ + JSONObject bool = this.bool; + if(ObjectUtil.isEmpty(bool.get(MUST))){ + bool.put(MUST,new JSONArray()); + } + return bool.getJSONArray(MUST); + } + + private JSONObject filter(){ + JSONObject bool = this.bool; + if(ObjectUtil.isEmpty(bool.get(FILTER))){ + bool.put(FILTER,new JSONObject()); + } + return bool.getJSONObject(FILTER); + } + + private JSONObject filterBool(){ + JSONObject filter = this.filter; + if(ObjectUtil.isEmpty(filter.get(BOOL))){ + filter.put(BOOL,new JSONObject()); + } + return filter.getJSONObject(BOOL); + } + + private JSONArray filterBoolMust(){ + JSONObject bool = this.filterBool; + if(ObjectUtil.isEmpty(bool.get(MUST))){ + bool.put(MUST,new JSONArray()); + } + return bool.getJSONArray(MUST); + } + + private JSONArray filterBoolMustnot(){ + JSONObject bool = this.filterBool; + if(ObjectUtil.isEmpty(bool.get(MUST_NOT))){ + bool.put(MUST_NOT,new JSONArray()); + } + return bool.getJSONArray(MUST_NOT); + } + + public void match(String filed, Serializable value){ + JSONArray boolMust = this.boolMust; + JSONObject match = new JSONObject(); + JSONObject filedJson = new JSONObject(); + filedJson.put(filed,value); + match.put("match",filedJson); + boolMust.add(match); + } + + public void matchPhrase(String filed, Serializable value){ + JSONArray boolMust = this.boolMust; + JSONObject matchPhrase = new JSONObject(); + JSONObject filedJson = new JSONObject(); + filedJson.put(filed,value); + matchPhrase.put("match_phrase",filedJson); + boolMust.add(matchPhrase); + } + + public void term(String filed, Serializable value){ + this.term(filed,value,MUST_FLAG); + } + + public void term(String filed, Serializable value,String mustFlag){ + JSONObject filedJson = new JSONObject(); + filedJson.put(filed,value); + JSONObject term = new JSONObject(); + term.put("term",filedJson); + if(MUST_FLAG.equals(mustFlag)){ + this.filterBoolMust.add(term); + } + if(MUST_NOT_FLAG.equals(mustFlag)){ + this.filterBoolMustnot.add(term); + } + } + + public void terms(String filed,List value){ + this.terms(filed,value,MUST_FLAG); + } + + public void terms(String filed, List value, String mustFlag){ + JSONObject filedJson = new JSONObject(); + filedJson.put(filed,value); + JSONObject terms = new JSONObject(); + terms.put("terms",filedJson); + if(MUST_FLAG.equals(mustFlag)){ + this.filterBoolMust.add(terms); + } + if(MUST_NOT_FLAG.equals(mustFlag)){ + this.filterBoolMustnot.add(terms); + } + } + + public void range(String filed, Serializable from, Serializable to){ + this.range(filed,from,to,MUST_FLAG); + } + + public void range(String filed, Serializable from, Serializable to, String mustFlag){ + JSONObject rangeJson = new JSONObject(); + if(ObjectUtil.isNotEmpty(from)){ + rangeJson.put("from",from); + } + if(ObjectUtil.isNotEmpty(to)){ + rangeJson.put("to",to); + } + JSONObject filedJson = new JSONObject(); + filedJson.put(filed,rangeJson); + JSONObject range = new JSONObject(); + range.put("range",filedJson); + if(MUST_FLAG.equals(mustFlag)){ + this.filterBoolMust.add(range); + } + if(MUST_NOT_FLAG.equals(mustFlag)){ + this.filterBoolMustnot.add(range); + } + } + + public void size(int size){ + this.body.put("size",size); + } + + public void from(int from) { + this.body.put("from",from); + } + + public void sort(String sort, String order){ + JSONObject sortJson = new JSONObject(); + JSONObject orderJson = new JSONObject(); + orderJson.put("order",order); + sortJson.put(sort,orderJson); + this.body.put("sort",sortJson); + } + + public void aggs(String aggsName, String filed){ + JSONObject terms = new JSONObject(); + terms.put("field",filed); + JSONObject aggsTerms = new JSONObject(); + aggsTerms.put("terms",terms); + JSONObject aggsBody = new JSONObject(); + aggsBody.put(aggsName,aggsTerms); + this.body.put("aggs",aggsBody); + } + + public void aggs(JSONObject aggBody){ + this.body.put("aggs",aggBody); + } + + + + public static void main(String[] args) { + ElasticSearchQuery query = new ElasticSearchQuery(); + query.matchPhrase("name","张三"); + query.term("sex","2"); + List deptIds = new ArrayList<>(); + deptIds.add(0L); + deptIds.add(24L); + query.terms("deptId", deptIds); + Date date1 = DateUtil.parse("2020-01-01","yyyy-MM-dd"); + Date date2 = DateUtil.parse("2020-04-01","yyyy-MM-dd"); + query.range("collTime",date1.getTime(),date2.getTime()); + query.term("collState","3",MUST_NOT_FLAG); + query.size(10); + query.from(0); + query.sort("irId","asc"); + System.out.println(query.getBody().toJSONString()); + } + + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/es/ElasticSearchUtil.java b/casic-data/src/main/java/com/casic/missiles/modular/system/es/ElasticSearchUtil.java new file mode 100644 index 0000000..e9da021 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/es/ElasticSearchUtil.java @@ -0,0 +1,172 @@ +package com.casic.missiles.modular.system.es; + +import cn.hutool.core.util.ObjectUtil; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import com.casic.missiles.core.es.EsResponse; +import org.apache.http.nio.entity.NStringEntity; +import org.apache.http.util.EntityUtils; +import org.elasticsearch.client.Request; +import org.elasticsearch.client.RequestOptions; +import org.elasticsearch.client.Response; +import org.elasticsearch.client.RestClient; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.core.env.Environment; +import org.springframework.stereotype.Component; + +import javax.annotation.PostConstruct; +import java.io.IOException; +import java.util.ArrayList; +import java.util.Base64; +import java.util.List; + +/** + * ES工具类 + * + * @author zhangyingjie123 + * @since 2020-11-30 + */ +@Component +public class ElasticSearchUtil { + private static final Logger logger = LoggerFactory.getLogger(ElasticSearchUtil.class); + + @Autowired + private RestClient clientMapping; + @Autowired + private Environment env; + + private static String username; + private static String password; + + private static RestClient client; + + @PostConstruct + public void init(){ + client = clientMapping; + username = env.getProperty("casic.data.es.username"); + password = env.getProperty("casic.data.es.password"); + } + + public static JSONObject selectDocumentById(String index, String type, String id) throws IOException{ + String method = "GET"; + String endPoint = index.concat("/").concat(type).concat("/").concat(id); + Response response = performRequest(method,endPoint,null); + JSONObject result = JSONObject.parseObject(EntityUtils.toString(response.getEntity())); + return result.getJSONObject("_source"); + } + + public static Response addDocumentById(String index, String type, String id, Object entity) throws IOException{ + String method = "POST"; + String endPoint = index.concat("/").concat(type).concat("/"); + if(ObjectUtil.isNotEmpty(id)){ + endPoint.concat(id); + } + endPoint.concat("?refresh=true"); + logger.debug(entity.toString()); + return performRequest(method,endPoint,JSON.toJSONString(entity)); + } + + public static Response deleteDocumentById(String index, String type, String id) throws IOException{ + String method = "DELETE"; + String endPoint = index.concat("/").concat(type).concat("/").concat(id).concat("?refresh=true"); + return performRequest(method,endPoint,null); + } + + public static Response updateDocumentById(String index, String type, String id, Object entity) throws IOException{ + String method = "POST"; + String endPoint = index.concat("/").concat(type).concat("/").concat(id).concat("?refresh=true"); + logger.debug(entity.toString()); + return performRequest(method,endPoint,JSON.toJSONString(entity)); + } + + public static EsResponse searchQuery(String index, String type, ElasticSearchQuery query) throws IOException{ + String method = "POST"; + String entPoint = index.concat("/").concat(type).concat("/").concat("_search"); + logger.debug(query.getBody().toString()); + Response response = performRequest(method, entPoint, query.getBody().toString()); + // 获取response body,转换为json对象 + JSONObject result = JSONObject.parseObject(EntityUtils.toString(response.getEntity())); + return result.toJavaObject(EsResponse.class); + } + + public static Response aggsQuery(String index, String type, ElasticSearchQuery query) throws IOException{ + String method = "POST"; + String entPoint = index.concat("/").concat(type).concat("/").concat("_search"); + logger.debug(query.getBody().toString()); + Response response = performRequest(method, entPoint, query.getBody().toString()); + return response; + } + + public static List searchQueryScroll(String index, String type, ElasticSearchQuery query) throws IOException{ + // 首次查询,提交查询条件,endpoint增加‘?scroll=1m’ + List results = new ArrayList<>(); + String method = "POST"; + String entPoint = index.concat("/").concat(type).concat("/").concat("_search").concat("?scroll=1m"); + logger.debug(query.getBody().toString()); + Response response = performRequest(method, entPoint, query.getBody().toString()); + JSONObject result = JSONObject.parseObject(EntityUtils.toString(response.getEntity())); + EsResponse esResponse = result.toJavaObject(EsResponse.class); + String scrollId = result.getString("_scroll_id"); + if(ObjectUtil.isNotEmpty(esResponse.getDatas())){ + results.addAll(esResponse.getDatas()); + } + // 循环发送scroll请求,直到返回结果为空 + entPoint = "_search/scroll"; + JSONObject scrollBody = new JSONObject(); + scrollBody.put("scroll","1m"); + scrollBody.put("scroll_id",scrollId); + while (esResponse.getDatas().size() > 0){ + method = "GET"; + response = performRequest(method, entPoint, scrollBody.toString()); + result = JSONObject.parseObject(EntityUtils.toString(response.getEntity())); + esResponse = result.toJavaObject(EsResponse.class); + if(ObjectUtil.isNotEmpty(esResponse.getDatas())){ + results.addAll(esResponse.getDatas()); + } + } + // 查询完成后,及时删除scroll,释放资源 + scrollBody.remove("scroll"); + method = "DELETE"; + performRequest(method, entPoint, scrollBody.toString()); + return results; + } + + public static Response bulk(String index,String type,String entity) throws IOException{ + String method = "POST"; + StringBuilder endPoint = new StringBuilder(); + if(ObjectUtil.isNotEmpty(index)){ + endPoint.append(index).append("/"); + } + if(ObjectUtil.isNotEmpty(type)){ + endPoint.append(type).append("/"); + } + endPoint.append("_bulk"); + endPoint.append("?refresh=true"); + logger.debug(entity); + return performRequest(method,endPoint.toString(),entity); + } + + private static Response performRequest(String method, String endpoint, String entity) throws IOException { + //logger.info(method + " " + endpoint); + Request request = new Request(method,endpoint); + if(ObjectUtil.isNotEmpty(entity)){ + request.setEntity(new NStringEntity(entity,"utf-8")); + } + + if(ObjectUtil.isNotEmpty(username) && ObjectUtil.isNotEmpty(password)){ + RequestOptions.Builder builder = RequestOptions.DEFAULT.toBuilder(); + String token = username.concat(":").concat(password); + String base64encode = Base64.getEncoder().encodeToString(token.getBytes("utf-8")); + builder.addHeader("Authorization", "Basic " + base64encode ); + request.setOptions(builder.build()); + } + + + Response response = client.performRequest(request); + logger.debug(response.toString()); + return response; + } + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/event/UserEvent.java b/casic-data/src/main/java/com/casic/missiles/modular/system/event/UserEvent.java deleted file mode 100644 index c6ed867..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/event/UserEvent.java +++ /dev/null @@ -1,23 +0,0 @@ -package com.casic.missiles.modular.system.event; - -import com.casic.missiles.model.application.event.core.ModelEvent; -import com.casic.missiles.model.application.event.type.AbstractEventTypeEnum; -import com.casic.missiles.modular.system.model.User; - -/** - * 用户事件 - * - * @author lwh - */ -public class UserEvent extends ModelEvent { - /** - * Create a new {@code ApplicationEvent}. - * - * @param type 事件类型 - * @param source the object on which the event initially occurred or with - * which the event is associated (never {@code null}) - */ - public UserEvent(AbstractEventTypeEnum type, User source) { - super(type, source); - } -} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/event/listener/UserOneListener.java b/casic-data/src/main/java/com/casic/missiles/modular/system/event/listener/UserOneListener.java deleted file mode 100644 index 4480ef2..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/event/listener/UserOneListener.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.casic.missiles.modular.system.event.listener; - -import com.casic.missiles.core.application.event.UserLoginEvent; -import lombok.extern.slf4j.Slf4j; -import org.springframework.context.event.EventListener; -import org.springframework.stereotype.Component; - -/** - * 用户事件订阅 - * - * @author lwh - */ -@Slf4j -@Component -public class UserOneListener { - @EventListener - public void onApplicationEvent(UserLoginEvent event) { - log.debug("用户1订阅:{}", event); - } -} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/event/listener/UserTwoListener.java b/casic-data/src/main/java/com/casic/missiles/modular/system/event/listener/UserTwoListener.java deleted file mode 100644 index 8447a22..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/event/listener/UserTwoListener.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.casic.missiles.modular.system.event.listener; - -import com.casic.missiles.model.application.event.core.EventSubscriber; -import com.casic.missiles.modular.system.event.UserEvent; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Component; - -/** - * 用户事件订阅 - * - * @author lwh - */ -@Slf4j -@Component -public class UserTwoListener extends EventSubscriber { - @Override - public void onApplicationEvent(UserEvent event) { - log.debug("用户2订阅:{}", event); - } -} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/service/IAlarmRecordService.java b/casic-data/src/main/java/com/casic/missiles/modular/system/service/IAlarmRecordService.java index e0800ae..0bf85d8 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/service/IAlarmRecordService.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/service/IAlarmRecordService.java @@ -1,5 +1,7 @@ package com.casic.missiles.modular.system.service; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.AlarmRecordRequest; import com.casic.missiles.modular.system.model.AlarmRecord; import com.baomidou.mybatisplus.extension.service.IService; @@ -13,4 +15,6 @@ */ public interface IAlarmRecordService extends IService { + Page pageList(Page page, AlarmRecordRequest request); + } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/service/IDataGasService.java b/casic-data/src/main/java/com/casic/missiles/modular/system/service/IDataGasService.java index afb913d..e644294 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/service/IDataGasService.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/service/IDataGasService.java @@ -1,8 +1,11 @@ package com.casic.missiles.modular.system.service; +import com.casic.missiles.modular.system.es.DataGasEs; import com.casic.missiles.modular.system.model.DataGas; import com.baomidou.mybatisplus.extension.service.IService; +import java.io.IOException; + /** *

* 甲烷实时数据表 服务类 @@ -12,5 +15,5 @@ * @since 2023-04-18 */ public interface IDataGasService extends IService { - + void insertDataGasEs(DataGasEs dataGasEs) throws IOException; } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/service/impl/AlarmRecordServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/system/service/impl/AlarmRecordServiceImpl.java index 2d9eb88..1dce8d5 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/service/impl/AlarmRecordServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/service/impl/AlarmRecordServiceImpl.java @@ -1,9 +1,15 @@ package com.casic.missiles.modular.system.service.impl; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.modular.system.dto.AlarmRecordRequest; import com.casic.missiles.modular.system.model.AlarmRecord; import com.casic.missiles.modular.system.dao.AlarmRecordMapper; import com.casic.missiles.modular.system.service.IAlarmRecordService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; /** @@ -17,4 +23,19 @@ @Service public class AlarmRecordServiceImpl extends ServiceImpl implements IAlarmRecordService { + + @Autowired + private AbstractPermissionContext permissionContext; +// @Autowired +// private ICasicUserService casicUserService; + + + @Override + public Page pageList(Page page, AlarmRecordRequest request) { + +// ShiroUser currentUser = permissionContext.getUserService().; + AuthUser user =permissionContext.getAuthService().getLoginUser(); + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + return null; + } } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/service/impl/DataGasServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/system/service/impl/DataGasServiceImpl.java index 4a11b07..1aa01e5 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/service/impl/DataGasServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/service/impl/DataGasServiceImpl.java @@ -1,11 +1,16 @@ package com.casic.missiles.modular.system.service.impl; +import com.casic.missiles.modular.system.consts.DataConst; +import com.casic.missiles.modular.system.es.DataGasEs; +import com.casic.missiles.modular.system.es.ElasticSearchUtil; import com.casic.missiles.modular.system.model.DataGas; import com.casic.missiles.modular.system.dao.DataGasMapper; import com.casic.missiles.modular.system.service.IDataGasService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.stereotype.Service; +import java.io.IOException; + /** *

* 甲烷实时数据表 服务实现类 @@ -17,4 +22,8 @@ @Service public class DataGasServiceImpl extends ServiceImpl implements IDataGasService { + @Override + public void insertDataGasEs(DataGasEs dataGasEs) throws IOException { + ElasticSearchUtil.addDocumentById(DataConst.DATA_GAS_ES_INDEX, DataConst.DATA_GAS_ES_TYPE, null, dataGasEs); + } } diff --git a/casic-server/pom.xml b/casic-server/pom.xml index 66af78a..9981283 100644 --- a/casic-server/pom.xml +++ b/casic-server/pom.xml @@ -77,6 +77,18 @@ **/*.xml + + ${project.basedir}/lib + + * + + + + src/main/resources/config/hiklib + + * + + \ No newline at end of file diff --git a/casic-common/pom.xml b/casic-common/pom.xml new file mode 100644 index 0000000..861e1ec --- /dev/null +++ b/casic-common/pom.xml @@ -0,0 +1,60 @@ + + + 4.0.0 + + com.casic + casic-PTZ + 2.0.0 + ../pom.xml + + + casic-common + 2.0.0 + jar + casic-common + casic 的spring boot版本 + + + + + com.casic + casic-core + ${core.version} + provided + + + com.casic + casic-admin-support + ${admin.version} + provided + + + com.casic + casic-export-support + ${extension.version} + + + org.springframework.boot + spring-boot-starter-web + ${boot.version} + provided + + + + com.casic + casic-data-es + 1.0.1.alpha + + + + + + src/main/java + + **/*.xml + + + + + \ No newline at end of file diff --git a/casic-common/src/main/java/com/casic/missiles/modular/system/consts/DataConst.java b/casic-common/src/main/java/com/casic/missiles/modular/system/consts/DataConst.java new file mode 100644 index 0000000..bbe581c --- /dev/null +++ b/casic-common/src/main/java/com/casic/missiles/modular/system/consts/DataConst.java @@ -0,0 +1,8 @@ +package com.casic.missiles.modular.system.consts; + +public class DataConst { + + public static final String DATA_GAS_ES_INDEX = "casic_pantilt_gas"; + + public static final String DATA_GAS_ES_TYPE = "casic_pantilt_gas"; +} diff --git a/casic-data/pom.xml b/casic-data/pom.xml index a3eba7d..3ad2c9c 100644 --- a/casic-data/pom.xml +++ b/casic-data/pom.xml @@ -41,6 +41,11 @@ provided + + com.casic + casic-data-es + 1.0.1.alpha + diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/consts/DataConst.java b/casic-data/src/main/java/com/casic/missiles/modular/system/consts/DataConst.java new file mode 100644 index 0000000..bbe581c --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/consts/DataConst.java @@ -0,0 +1,8 @@ +package com.casic.missiles.modular.system.consts; + +public class DataConst { + + public static final String DATA_GAS_ES_INDEX = "casic_pantilt_gas"; + + public static final String DATA_GAS_ES_TYPE = "casic_pantilt_gas"; +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java b/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java index 4460f11..dfc76ec 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java @@ -5,14 +5,17 @@ import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.AlarmRecordRequest; import com.casic.missiles.modular.system.model.AlarmRecord; import com.casic.missiles.modular.system.service.IAlarmRecordService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseBody; +import javax.validation.Valid; import java.util.List; /** @@ -44,10 +47,12 @@ */ @RequestMapping(value = "/listPage") @ResponseBody - public Object listPage(String condition) { + public Object listPage(@RequestBody @Valid AlarmRecordRequest request) { + + Page page = PageFactory.defaultPage(); - QueryWrapper query = new QueryWrapper<>(); - page = alarmRecordService.page(page,query); +// QueryWrapper query = new QueryWrapper<>(); + page = alarmRecordService.pageList(page,request); return ResponseData.success(super.packForBT(page)); } /** diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/DemoController.java b/casic-data/src/main/java/com/casic/missiles/modular/system/controller/DemoController.java deleted file mode 100644 index 87b6fec..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/DemoController.java +++ /dev/null @@ -1,41 +0,0 @@ -package com.casic.missiles.modular.system.controller; - - -import com.casic.missiles.model.application.event.core.EventPublisher; -import com.casic.missiles.model.application.event.enums.ModelEventTypeEnum; -import com.casic.missiles.model.response.ResponseData; -import com.casic.missiles.modular.system.event.UserEvent; -import com.casic.missiles.modular.system.model.User; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; -import org.springframework.web.bind.annotation.RestController; - -/** - * @ClassName DemoController - * @Description TODO - * @Author lenovo - * @Date 2020/6/13 15:38 - * @Version 1.0 - */ -@RestController -@RequestMapping("/demo") -public class DemoController { - @Autowired - private EventPublisher publisher; - - /** - * 获取mockToken - */ - @PostMapping("/list") - @ResponseBody - public Object list() { - User user = new User(); - user.setAccount("张三"); - publisher.publishEvent(new UserEvent(ModelEventTypeEnum.ADD, user)); - return ResponseData.success(); - } - - -} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/dto/AlarmRecordRequest.java b/casic-data/src/main/java/com/casic/missiles/modular/system/dto/AlarmRecordRequest.java new file mode 100644 index 0000000..9469954 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/dto/AlarmRecordRequest.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.system.dto; + + +import lombok.Data; + +/** + * @author zt + */ +@Data +public class AlarmRecordRequest { + + private Long stationId; + + private Long monitorId; + + private Long lineNum; + + private String alarmType; + + private String alarmStatus; + + private String startTime; + + private String endTime; + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/es/ElasticSearchQuery.java b/casic-data/src/main/java/com/casic/missiles/modular/system/es/ElasticSearchQuery.java new file mode 100644 index 0000000..4d7a38f --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/es/ElasticSearchQuery.java @@ -0,0 +1,257 @@ +package com.casic.missiles.modular.system.es; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; + +import java.io.Serializable; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +/** + * ES查询请求体 + * + * @author zhangyingjie123 + * @since 2020-11-30 + */ +public class ElasticSearchQuery { + private JSONObject body; + private JSONObject query; + private JSONObject bool; + private JSONArray boolMust; + private JSONObject filter; + private JSONObject filterBool; + private JSONArray filterBoolMust; + private JSONArray filterBoolMustnot; + + public static final String MUST_FLAG = "1"; + public static final String MUST_NOT_FLAG = "0"; + + public static final String QUERY = "query"; + public static final String BOOL = "bool"; + public static final String MUST = "must"; + public static final String MUST_NOT = "must_not"; + public static final String FILTER = "filter"; + + + /** + * 生成查询请求体基础结构: + * { + * "query": { + * "bool": { + * "must" [], + * "filter": { + * "bool": { + * "must": [], + * "must_not": [] + * } + * } + * } + * } + * } + */ + public ElasticSearchQuery() { + this.body = new JSONObject(); + this.query = this.query(); + this.bool = this.bool(); + this.boolMust = this.boolMust(); + this.filter = this.filter(); + this.filterBool = this.filterBool(); + this.filterBoolMust = this.filterBoolMust(); + this.filterBoolMustnot = this.filterBoolMustnot(); + } + + public ElasticSearchQuery(JSONObject body){ + this.body = body; + } + + public JSONObject getBody() { + return body; + } + + private JSONObject query(){ + if(ObjectUtil.isEmpty(this.body.get(QUERY))){ + this.body.put("query",new JSONObject()); + } + return this.body.getJSONObject(QUERY); + + } + + private JSONObject bool() { + JSONObject query = this.query; + if(ObjectUtil.isEmpty(query.get(BOOL))){ + query.put(BOOL,new JSONObject()); + } + return query.getJSONObject(BOOL); + } + + private JSONArray boolMust(){ + JSONObject bool = this.bool; + if(ObjectUtil.isEmpty(bool.get(MUST))){ + bool.put(MUST,new JSONArray()); + } + return bool.getJSONArray(MUST); + } + + private JSONObject filter(){ + JSONObject bool = this.bool; + if(ObjectUtil.isEmpty(bool.get(FILTER))){ + bool.put(FILTER,new JSONObject()); + } + return bool.getJSONObject(FILTER); + } + + private JSONObject filterBool(){ + JSONObject filter = this.filter; + if(ObjectUtil.isEmpty(filter.get(BOOL))){ + filter.put(BOOL,new JSONObject()); + } + return filter.getJSONObject(BOOL); + } + + private JSONArray filterBoolMust(){ + JSONObject bool = this.filterBool; + if(ObjectUtil.isEmpty(bool.get(MUST))){ + bool.put(MUST,new JSONArray()); + } + return bool.getJSONArray(MUST); + } + + private JSONArray filterBoolMustnot(){ + JSONObject bool = this.filterBool; + if(ObjectUtil.isEmpty(bool.get(MUST_NOT))){ + bool.put(MUST_NOT,new JSONArray()); + } + return bool.getJSONArray(MUST_NOT); + } + + public void match(String filed, Serializable value){ + JSONArray boolMust = this.boolMust; + JSONObject match = new JSONObject(); + JSONObject filedJson = new JSONObject(); + filedJson.put(filed,value); + match.put("match",filedJson); + boolMust.add(match); + } + + public void matchPhrase(String filed, Serializable value){ + JSONArray boolMust = this.boolMust; + JSONObject matchPhrase = new JSONObject(); + JSONObject filedJson = new JSONObject(); + filedJson.put(filed,value); + matchPhrase.put("match_phrase",filedJson); + boolMust.add(matchPhrase); + } + + public void term(String filed, Serializable value){ + this.term(filed,value,MUST_FLAG); + } + + public void term(String filed, Serializable value,String mustFlag){ + JSONObject filedJson = new JSONObject(); + filedJson.put(filed,value); + JSONObject term = new JSONObject(); + term.put("term",filedJson); + if(MUST_FLAG.equals(mustFlag)){ + this.filterBoolMust.add(term); + } + if(MUST_NOT_FLAG.equals(mustFlag)){ + this.filterBoolMustnot.add(term); + } + } + + public void terms(String filed,List value){ + this.terms(filed,value,MUST_FLAG); + } + + public void terms(String filed, List value, String mustFlag){ + JSONObject filedJson = new JSONObject(); + filedJson.put(filed,value); + JSONObject terms = new JSONObject(); + terms.put("terms",filedJson); + if(MUST_FLAG.equals(mustFlag)){ + this.filterBoolMust.add(terms); + } + if(MUST_NOT_FLAG.equals(mustFlag)){ + this.filterBoolMustnot.add(terms); + } + } + + public void range(String filed, Serializable from, Serializable to){ + this.range(filed,from,to,MUST_FLAG); + } + + public void range(String filed, Serializable from, Serializable to, String mustFlag){ + JSONObject rangeJson = new JSONObject(); + if(ObjectUtil.isNotEmpty(from)){ + rangeJson.put("from",from); + } + if(ObjectUtil.isNotEmpty(to)){ + rangeJson.put("to",to); + } + JSONObject filedJson = new JSONObject(); + filedJson.put(filed,rangeJson); + JSONObject range = new JSONObject(); + range.put("range",filedJson); + if(MUST_FLAG.equals(mustFlag)){ + this.filterBoolMust.add(range); + } + if(MUST_NOT_FLAG.equals(mustFlag)){ + this.filterBoolMustnot.add(range); + } + } + + public void size(int size){ + this.body.put("size",size); + } + + public void from(int from) { + this.body.put("from",from); + } + + public void sort(String sort, String order){ + JSONObject sortJson = new JSONObject(); + JSONObject orderJson = new JSONObject(); + orderJson.put("order",order); + sortJson.put(sort,orderJson); + this.body.put("sort",sortJson); + } + + public void aggs(String aggsName, String filed){ + JSONObject terms = new JSONObject(); + terms.put("field",filed); + JSONObject aggsTerms = new JSONObject(); + aggsTerms.put("terms",terms); + JSONObject aggsBody = new JSONObject(); + aggsBody.put(aggsName,aggsTerms); + this.body.put("aggs",aggsBody); + } + + public void aggs(JSONObject aggBody){ + this.body.put("aggs",aggBody); + } + + + + public static void main(String[] args) { + ElasticSearchQuery query = new ElasticSearchQuery(); + query.matchPhrase("name","张三"); + query.term("sex","2"); + List deptIds = new ArrayList<>(); + deptIds.add(0L); + deptIds.add(24L); + query.terms("deptId", deptIds); + Date date1 = DateUtil.parse("2020-01-01","yyyy-MM-dd"); + Date date2 = DateUtil.parse("2020-04-01","yyyy-MM-dd"); + query.range("collTime",date1.getTime(),date2.getTime()); + query.term("collState","3",MUST_NOT_FLAG); + query.size(10); + query.from(0); + query.sort("irId","asc"); + System.out.println(query.getBody().toJSONString()); + } + + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/es/ElasticSearchUtil.java b/casic-data/src/main/java/com/casic/missiles/modular/system/es/ElasticSearchUtil.java new file mode 100644 index 0000000..e9da021 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/es/ElasticSearchUtil.java @@ -0,0 +1,172 @@ +package com.casic.missiles.modular.system.es; + +import cn.hutool.core.util.ObjectUtil; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import com.casic.missiles.core.es.EsResponse; +import org.apache.http.nio.entity.NStringEntity; +import org.apache.http.util.EntityUtils; +import org.elasticsearch.client.Request; +import org.elasticsearch.client.RequestOptions; +import org.elasticsearch.client.Response; +import org.elasticsearch.client.RestClient; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.core.env.Environment; +import org.springframework.stereotype.Component; + +import javax.annotation.PostConstruct; +import java.io.IOException; +import java.util.ArrayList; +import java.util.Base64; +import java.util.List; + +/** + * ES工具类 + * + * @author zhangyingjie123 + * @since 2020-11-30 + */ +@Component +public class ElasticSearchUtil { + private static final Logger logger = LoggerFactory.getLogger(ElasticSearchUtil.class); + + @Autowired + private RestClient clientMapping; + @Autowired + private Environment env; + + private static String username; + private static String password; + + private static RestClient client; + + @PostConstruct + public void init(){ + client = clientMapping; + username = env.getProperty("casic.data.es.username"); + password = env.getProperty("casic.data.es.password"); + } + + public static JSONObject selectDocumentById(String index, String type, String id) throws IOException{ + String method = "GET"; + String endPoint = index.concat("/").concat(type).concat("/").concat(id); + Response response = performRequest(method,endPoint,null); + JSONObject result = JSONObject.parseObject(EntityUtils.toString(response.getEntity())); + return result.getJSONObject("_source"); + } + + public static Response addDocumentById(String index, String type, String id, Object entity) throws IOException{ + String method = "POST"; + String endPoint = index.concat("/").concat(type).concat("/"); + if(ObjectUtil.isNotEmpty(id)){ + endPoint.concat(id); + } + endPoint.concat("?refresh=true"); + logger.debug(entity.toString()); + return performRequest(method,endPoint,JSON.toJSONString(entity)); + } + + public static Response deleteDocumentById(String index, String type, String id) throws IOException{ + String method = "DELETE"; + String endPoint = index.concat("/").concat(type).concat("/").concat(id).concat("?refresh=true"); + return performRequest(method,endPoint,null); + } + + public static Response updateDocumentById(String index, String type, String id, Object entity) throws IOException{ + String method = "POST"; + String endPoint = index.concat("/").concat(type).concat("/").concat(id).concat("?refresh=true"); + logger.debug(entity.toString()); + return performRequest(method,endPoint,JSON.toJSONString(entity)); + } + + public static EsResponse searchQuery(String index, String type, ElasticSearchQuery query) throws IOException{ + String method = "POST"; + String entPoint = index.concat("/").concat(type).concat("/").concat("_search"); + logger.debug(query.getBody().toString()); + Response response = performRequest(method, entPoint, query.getBody().toString()); + // 获取response body,转换为json对象 + JSONObject result = JSONObject.parseObject(EntityUtils.toString(response.getEntity())); + return result.toJavaObject(EsResponse.class); + } + + public static Response aggsQuery(String index, String type, ElasticSearchQuery query) throws IOException{ + String method = "POST"; + String entPoint = index.concat("/").concat(type).concat("/").concat("_search"); + logger.debug(query.getBody().toString()); + Response response = performRequest(method, entPoint, query.getBody().toString()); + return response; + } + + public static List searchQueryScroll(String index, String type, ElasticSearchQuery query) throws IOException{ + // 首次查询,提交查询条件,endpoint增加‘?scroll=1m’ + List results = new ArrayList<>(); + String method = "POST"; + String entPoint = index.concat("/").concat(type).concat("/").concat("_search").concat("?scroll=1m"); + logger.debug(query.getBody().toString()); + Response response = performRequest(method, entPoint, query.getBody().toString()); + JSONObject result = JSONObject.parseObject(EntityUtils.toString(response.getEntity())); + EsResponse esResponse = result.toJavaObject(EsResponse.class); + String scrollId = result.getString("_scroll_id"); + if(ObjectUtil.isNotEmpty(esResponse.getDatas())){ + results.addAll(esResponse.getDatas()); + } + // 循环发送scroll请求,直到返回结果为空 + entPoint = "_search/scroll"; + JSONObject scrollBody = new JSONObject(); + scrollBody.put("scroll","1m"); + scrollBody.put("scroll_id",scrollId); + while (esResponse.getDatas().size() > 0){ + method = "GET"; + response = performRequest(method, entPoint, scrollBody.toString()); + result = JSONObject.parseObject(EntityUtils.toString(response.getEntity())); + esResponse = result.toJavaObject(EsResponse.class); + if(ObjectUtil.isNotEmpty(esResponse.getDatas())){ + results.addAll(esResponse.getDatas()); + } + } + // 查询完成后,及时删除scroll,释放资源 + scrollBody.remove("scroll"); + method = "DELETE"; + performRequest(method, entPoint, scrollBody.toString()); + return results; + } + + public static Response bulk(String index,String type,String entity) throws IOException{ + String method = "POST"; + StringBuilder endPoint = new StringBuilder(); + if(ObjectUtil.isNotEmpty(index)){ + endPoint.append(index).append("/"); + } + if(ObjectUtil.isNotEmpty(type)){ + endPoint.append(type).append("/"); + } + endPoint.append("_bulk"); + endPoint.append("?refresh=true"); + logger.debug(entity); + return performRequest(method,endPoint.toString(),entity); + } + + private static Response performRequest(String method, String endpoint, String entity) throws IOException { + //logger.info(method + " " + endpoint); + Request request = new Request(method,endpoint); + if(ObjectUtil.isNotEmpty(entity)){ + request.setEntity(new NStringEntity(entity,"utf-8")); + } + + if(ObjectUtil.isNotEmpty(username) && ObjectUtil.isNotEmpty(password)){ + RequestOptions.Builder builder = RequestOptions.DEFAULT.toBuilder(); + String token = username.concat(":").concat(password); + String base64encode = Base64.getEncoder().encodeToString(token.getBytes("utf-8")); + builder.addHeader("Authorization", "Basic " + base64encode ); + request.setOptions(builder.build()); + } + + + Response response = client.performRequest(request); + logger.debug(response.toString()); + return response; + } + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/event/UserEvent.java b/casic-data/src/main/java/com/casic/missiles/modular/system/event/UserEvent.java deleted file mode 100644 index c6ed867..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/event/UserEvent.java +++ /dev/null @@ -1,23 +0,0 @@ -package com.casic.missiles.modular.system.event; - -import com.casic.missiles.model.application.event.core.ModelEvent; -import com.casic.missiles.model.application.event.type.AbstractEventTypeEnum; -import com.casic.missiles.modular.system.model.User; - -/** - * 用户事件 - * - * @author lwh - */ -public class UserEvent extends ModelEvent { - /** - * Create a new {@code ApplicationEvent}. - * - * @param type 事件类型 - * @param source the object on which the event initially occurred or with - * which the event is associated (never {@code null}) - */ - public UserEvent(AbstractEventTypeEnum type, User source) { - super(type, source); - } -} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/event/listener/UserOneListener.java b/casic-data/src/main/java/com/casic/missiles/modular/system/event/listener/UserOneListener.java deleted file mode 100644 index 4480ef2..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/event/listener/UserOneListener.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.casic.missiles.modular.system.event.listener; - -import com.casic.missiles.core.application.event.UserLoginEvent; -import lombok.extern.slf4j.Slf4j; -import org.springframework.context.event.EventListener; -import org.springframework.stereotype.Component; - -/** - * 用户事件订阅 - * - * @author lwh - */ -@Slf4j -@Component -public class UserOneListener { - @EventListener - public void onApplicationEvent(UserLoginEvent event) { - log.debug("用户1订阅:{}", event); - } -} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/event/listener/UserTwoListener.java b/casic-data/src/main/java/com/casic/missiles/modular/system/event/listener/UserTwoListener.java deleted file mode 100644 index 8447a22..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/event/listener/UserTwoListener.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.casic.missiles.modular.system.event.listener; - -import com.casic.missiles.model.application.event.core.EventSubscriber; -import com.casic.missiles.modular.system.event.UserEvent; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Component; - -/** - * 用户事件订阅 - * - * @author lwh - */ -@Slf4j -@Component -public class UserTwoListener extends EventSubscriber { - @Override - public void onApplicationEvent(UserEvent event) { - log.debug("用户2订阅:{}", event); - } -} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/service/IAlarmRecordService.java b/casic-data/src/main/java/com/casic/missiles/modular/system/service/IAlarmRecordService.java index e0800ae..0bf85d8 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/service/IAlarmRecordService.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/service/IAlarmRecordService.java @@ -1,5 +1,7 @@ package com.casic.missiles.modular.system.service; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.AlarmRecordRequest; import com.casic.missiles.modular.system.model.AlarmRecord; import com.baomidou.mybatisplus.extension.service.IService; @@ -13,4 +15,6 @@ */ public interface IAlarmRecordService extends IService { + Page pageList(Page page, AlarmRecordRequest request); + } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/service/IDataGasService.java b/casic-data/src/main/java/com/casic/missiles/modular/system/service/IDataGasService.java index afb913d..e644294 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/service/IDataGasService.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/service/IDataGasService.java @@ -1,8 +1,11 @@ package com.casic.missiles.modular.system.service; +import com.casic.missiles.modular.system.es.DataGasEs; import com.casic.missiles.modular.system.model.DataGas; import com.baomidou.mybatisplus.extension.service.IService; +import java.io.IOException; + /** *

* 甲烷实时数据表 服务类 @@ -12,5 +15,5 @@ * @since 2023-04-18 */ public interface IDataGasService extends IService { - + void insertDataGasEs(DataGasEs dataGasEs) throws IOException; } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/service/impl/AlarmRecordServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/system/service/impl/AlarmRecordServiceImpl.java index 2d9eb88..1dce8d5 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/service/impl/AlarmRecordServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/service/impl/AlarmRecordServiceImpl.java @@ -1,9 +1,15 @@ package com.casic.missiles.modular.system.service.impl; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.modular.system.dto.AlarmRecordRequest; import com.casic.missiles.modular.system.model.AlarmRecord; import com.casic.missiles.modular.system.dao.AlarmRecordMapper; import com.casic.missiles.modular.system.service.IAlarmRecordService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; /** @@ -17,4 +23,19 @@ @Service public class AlarmRecordServiceImpl extends ServiceImpl implements IAlarmRecordService { + + @Autowired + private AbstractPermissionContext permissionContext; +// @Autowired +// private ICasicUserService casicUserService; + + + @Override + public Page pageList(Page page, AlarmRecordRequest request) { + +// ShiroUser currentUser = permissionContext.getUserService().; + AuthUser user =permissionContext.getAuthService().getLoginUser(); + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + return null; + } } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/service/impl/DataGasServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/system/service/impl/DataGasServiceImpl.java index 4a11b07..1aa01e5 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/service/impl/DataGasServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/service/impl/DataGasServiceImpl.java @@ -1,11 +1,16 @@ package com.casic.missiles.modular.system.service.impl; +import com.casic.missiles.modular.system.consts.DataConst; +import com.casic.missiles.modular.system.es.DataGasEs; +import com.casic.missiles.modular.system.es.ElasticSearchUtil; import com.casic.missiles.modular.system.model.DataGas; import com.casic.missiles.modular.system.dao.DataGasMapper; import com.casic.missiles.modular.system.service.IDataGasService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.stereotype.Service; +import java.io.IOException; + /** *

* 甲烷实时数据表 服务实现类 @@ -17,4 +22,8 @@ @Service public class DataGasServiceImpl extends ServiceImpl implements IDataGasService { + @Override + public void insertDataGasEs(DataGasEs dataGasEs) throws IOException { + ElasticSearchUtil.addDocumentById(DataConst.DATA_GAS_ES_INDEX, DataConst.DATA_GAS_ES_TYPE, null, dataGasEs); + } } diff --git a/casic-server/pom.xml b/casic-server/pom.xml index 66af78a..9981283 100644 --- a/casic-server/pom.xml +++ b/casic-server/pom.xml @@ -77,6 +77,18 @@ **/*.xml + + ${project.basedir}/lib + + * + + + + src/main/resources/config/hiklib + + * + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/task/CollectGasDataTask.java b/casic-server/src/main/java/com/casic/missiles/modular/system/task/CollectGasDataTask.java index d6eb897..84398ca 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/task/CollectGasDataTask.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/task/CollectGasDataTask.java @@ -155,27 +155,4 @@ // } // // -//// class presetRunnable implements Runnable { -//// private String deviceIp; -//// private Integer lineNum; -//// -//// public presetRunnable(String ip, Integer lineNum) { -//// this.deviceIp = ip; -//// this.lineNum = lineNum; -//// } -//// -//// @Override -//// public void run() { -//// // 每隔2小时执行复位操作,并启动巡航 -//// while (true) { -//// try { -//// ihcNetService.preset(deviceIp,lineNum); -//// Thread.sleep(presetInterval * 2000); -//// } catch (InterruptedException e) { -//// e.printStackTrace(); -//// } -//// } -//// } -//// } -// //} diff --git a/casic-common/pom.xml b/casic-common/pom.xml new file mode 100644 index 0000000..861e1ec --- /dev/null +++ b/casic-common/pom.xml @@ -0,0 +1,60 @@ + + + 4.0.0 + + com.casic + casic-PTZ + 2.0.0 + ../pom.xml + + + casic-common + 2.0.0 + jar + casic-common + casic 的spring boot版本 + + + + + com.casic + casic-core + ${core.version} + provided + + + com.casic + casic-admin-support + ${admin.version} + provided + + + com.casic + casic-export-support + ${extension.version} + + + org.springframework.boot + spring-boot-starter-web + ${boot.version} + provided + + + + com.casic + casic-data-es + 1.0.1.alpha + + + + + + src/main/java + + **/*.xml + + + + + \ No newline at end of file diff --git a/casic-common/src/main/java/com/casic/missiles/modular/system/consts/DataConst.java b/casic-common/src/main/java/com/casic/missiles/modular/system/consts/DataConst.java new file mode 100644 index 0000000..bbe581c --- /dev/null +++ b/casic-common/src/main/java/com/casic/missiles/modular/system/consts/DataConst.java @@ -0,0 +1,8 @@ +package com.casic.missiles.modular.system.consts; + +public class DataConst { + + public static final String DATA_GAS_ES_INDEX = "casic_pantilt_gas"; + + public static final String DATA_GAS_ES_TYPE = "casic_pantilt_gas"; +} diff --git a/casic-data/pom.xml b/casic-data/pom.xml index a3eba7d..3ad2c9c 100644 --- a/casic-data/pom.xml +++ b/casic-data/pom.xml @@ -41,6 +41,11 @@ provided + + com.casic + casic-data-es + 1.0.1.alpha + diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/consts/DataConst.java b/casic-data/src/main/java/com/casic/missiles/modular/system/consts/DataConst.java new file mode 100644 index 0000000..bbe581c --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/consts/DataConst.java @@ -0,0 +1,8 @@ +package com.casic.missiles.modular.system.consts; + +public class DataConst { + + public static final String DATA_GAS_ES_INDEX = "casic_pantilt_gas"; + + public static final String DATA_GAS_ES_TYPE = "casic_pantilt_gas"; +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java b/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java index 4460f11..dfc76ec 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java @@ -5,14 +5,17 @@ import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.AlarmRecordRequest; import com.casic.missiles.modular.system.model.AlarmRecord; import com.casic.missiles.modular.system.service.IAlarmRecordService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseBody; +import javax.validation.Valid; import java.util.List; /** @@ -44,10 +47,12 @@ */ @RequestMapping(value = "/listPage") @ResponseBody - public Object listPage(String condition) { + public Object listPage(@RequestBody @Valid AlarmRecordRequest request) { + + Page page = PageFactory.defaultPage(); - QueryWrapper query = new QueryWrapper<>(); - page = alarmRecordService.page(page,query); +// QueryWrapper query = new QueryWrapper<>(); + page = alarmRecordService.pageList(page,request); return ResponseData.success(super.packForBT(page)); } /** diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/DemoController.java b/casic-data/src/main/java/com/casic/missiles/modular/system/controller/DemoController.java deleted file mode 100644 index 87b6fec..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/DemoController.java +++ /dev/null @@ -1,41 +0,0 @@ -package com.casic.missiles.modular.system.controller; - - -import com.casic.missiles.model.application.event.core.EventPublisher; -import com.casic.missiles.model.application.event.enums.ModelEventTypeEnum; -import com.casic.missiles.model.response.ResponseData; -import com.casic.missiles.modular.system.event.UserEvent; -import com.casic.missiles.modular.system.model.User; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; -import org.springframework.web.bind.annotation.RestController; - -/** - * @ClassName DemoController - * @Description TODO - * @Author lenovo - * @Date 2020/6/13 15:38 - * @Version 1.0 - */ -@RestController -@RequestMapping("/demo") -public class DemoController { - @Autowired - private EventPublisher publisher; - - /** - * 获取mockToken - */ - @PostMapping("/list") - @ResponseBody - public Object list() { - User user = new User(); - user.setAccount("张三"); - publisher.publishEvent(new UserEvent(ModelEventTypeEnum.ADD, user)); - return ResponseData.success(); - } - - -} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/dto/AlarmRecordRequest.java b/casic-data/src/main/java/com/casic/missiles/modular/system/dto/AlarmRecordRequest.java new file mode 100644 index 0000000..9469954 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/dto/AlarmRecordRequest.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.system.dto; + + +import lombok.Data; + +/** + * @author zt + */ +@Data +public class AlarmRecordRequest { + + private Long stationId; + + private Long monitorId; + + private Long lineNum; + + private String alarmType; + + private String alarmStatus; + + private String startTime; + + private String endTime; + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/es/ElasticSearchQuery.java b/casic-data/src/main/java/com/casic/missiles/modular/system/es/ElasticSearchQuery.java new file mode 100644 index 0000000..4d7a38f --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/es/ElasticSearchQuery.java @@ -0,0 +1,257 @@ +package com.casic.missiles.modular.system.es; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; + +import java.io.Serializable; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +/** + * ES查询请求体 + * + * @author zhangyingjie123 + * @since 2020-11-30 + */ +public class ElasticSearchQuery { + private JSONObject body; + private JSONObject query; + private JSONObject bool; + private JSONArray boolMust; + private JSONObject filter; + private JSONObject filterBool; + private JSONArray filterBoolMust; + private JSONArray filterBoolMustnot; + + public static final String MUST_FLAG = "1"; + public static final String MUST_NOT_FLAG = "0"; + + public static final String QUERY = "query"; + public static final String BOOL = "bool"; + public static final String MUST = "must"; + public static final String MUST_NOT = "must_not"; + public static final String FILTER = "filter"; + + + /** + * 生成查询请求体基础结构: + * { + * "query": { + * "bool": { + * "must" [], + * "filter": { + * "bool": { + * "must": [], + * "must_not": [] + * } + * } + * } + * } + * } + */ + public ElasticSearchQuery() { + this.body = new JSONObject(); + this.query = this.query(); + this.bool = this.bool(); + this.boolMust = this.boolMust(); + this.filter = this.filter(); + this.filterBool = this.filterBool(); + this.filterBoolMust = this.filterBoolMust(); + this.filterBoolMustnot = this.filterBoolMustnot(); + } + + public ElasticSearchQuery(JSONObject body){ + this.body = body; + } + + public JSONObject getBody() { + return body; + } + + private JSONObject query(){ + if(ObjectUtil.isEmpty(this.body.get(QUERY))){ + this.body.put("query",new JSONObject()); + } + return this.body.getJSONObject(QUERY); + + } + + private JSONObject bool() { + JSONObject query = this.query; + if(ObjectUtil.isEmpty(query.get(BOOL))){ + query.put(BOOL,new JSONObject()); + } + return query.getJSONObject(BOOL); + } + + private JSONArray boolMust(){ + JSONObject bool = this.bool; + if(ObjectUtil.isEmpty(bool.get(MUST))){ + bool.put(MUST,new JSONArray()); + } + return bool.getJSONArray(MUST); + } + + private JSONObject filter(){ + JSONObject bool = this.bool; + if(ObjectUtil.isEmpty(bool.get(FILTER))){ + bool.put(FILTER,new JSONObject()); + } + return bool.getJSONObject(FILTER); + } + + private JSONObject filterBool(){ + JSONObject filter = this.filter; + if(ObjectUtil.isEmpty(filter.get(BOOL))){ + filter.put(BOOL,new JSONObject()); + } + return filter.getJSONObject(BOOL); + } + + private JSONArray filterBoolMust(){ + JSONObject bool = this.filterBool; + if(ObjectUtil.isEmpty(bool.get(MUST))){ + bool.put(MUST,new JSONArray()); + } + return bool.getJSONArray(MUST); + } + + private JSONArray filterBoolMustnot(){ + JSONObject bool = this.filterBool; + if(ObjectUtil.isEmpty(bool.get(MUST_NOT))){ + bool.put(MUST_NOT,new JSONArray()); + } + return bool.getJSONArray(MUST_NOT); + } + + public void match(String filed, Serializable value){ + JSONArray boolMust = this.boolMust; + JSONObject match = new JSONObject(); + JSONObject filedJson = new JSONObject(); + filedJson.put(filed,value); + match.put("match",filedJson); + boolMust.add(match); + } + + public void matchPhrase(String filed, Serializable value){ + JSONArray boolMust = this.boolMust; + JSONObject matchPhrase = new JSONObject(); + JSONObject filedJson = new JSONObject(); + filedJson.put(filed,value); + matchPhrase.put("match_phrase",filedJson); + boolMust.add(matchPhrase); + } + + public void term(String filed, Serializable value){ + this.term(filed,value,MUST_FLAG); + } + + public void term(String filed, Serializable value,String mustFlag){ + JSONObject filedJson = new JSONObject(); + filedJson.put(filed,value); + JSONObject term = new JSONObject(); + term.put("term",filedJson); + if(MUST_FLAG.equals(mustFlag)){ + this.filterBoolMust.add(term); + } + if(MUST_NOT_FLAG.equals(mustFlag)){ + this.filterBoolMustnot.add(term); + } + } + + public void terms(String filed,List value){ + this.terms(filed,value,MUST_FLAG); + } + + public void terms(String filed, List value, String mustFlag){ + JSONObject filedJson = new JSONObject(); + filedJson.put(filed,value); + JSONObject terms = new JSONObject(); + terms.put("terms",filedJson); + if(MUST_FLAG.equals(mustFlag)){ + this.filterBoolMust.add(terms); + } + if(MUST_NOT_FLAG.equals(mustFlag)){ + this.filterBoolMustnot.add(terms); + } + } + + public void range(String filed, Serializable from, Serializable to){ + this.range(filed,from,to,MUST_FLAG); + } + + public void range(String filed, Serializable from, Serializable to, String mustFlag){ + JSONObject rangeJson = new JSONObject(); + if(ObjectUtil.isNotEmpty(from)){ + rangeJson.put("from",from); + } + if(ObjectUtil.isNotEmpty(to)){ + rangeJson.put("to",to); + } + JSONObject filedJson = new JSONObject(); + filedJson.put(filed,rangeJson); + JSONObject range = new JSONObject(); + range.put("range",filedJson); + if(MUST_FLAG.equals(mustFlag)){ + this.filterBoolMust.add(range); + } + if(MUST_NOT_FLAG.equals(mustFlag)){ + this.filterBoolMustnot.add(range); + } + } + + public void size(int size){ + this.body.put("size",size); + } + + public void from(int from) { + this.body.put("from",from); + } + + public void sort(String sort, String order){ + JSONObject sortJson = new JSONObject(); + JSONObject orderJson = new JSONObject(); + orderJson.put("order",order); + sortJson.put(sort,orderJson); + this.body.put("sort",sortJson); + } + + public void aggs(String aggsName, String filed){ + JSONObject terms = new JSONObject(); + terms.put("field",filed); + JSONObject aggsTerms = new JSONObject(); + aggsTerms.put("terms",terms); + JSONObject aggsBody = new JSONObject(); + aggsBody.put(aggsName,aggsTerms); + this.body.put("aggs",aggsBody); + } + + public void aggs(JSONObject aggBody){ + this.body.put("aggs",aggBody); + } + + + + public static void main(String[] args) { + ElasticSearchQuery query = new ElasticSearchQuery(); + query.matchPhrase("name","张三"); + query.term("sex","2"); + List deptIds = new ArrayList<>(); + deptIds.add(0L); + deptIds.add(24L); + query.terms("deptId", deptIds); + Date date1 = DateUtil.parse("2020-01-01","yyyy-MM-dd"); + Date date2 = DateUtil.parse("2020-04-01","yyyy-MM-dd"); + query.range("collTime",date1.getTime(),date2.getTime()); + query.term("collState","3",MUST_NOT_FLAG); + query.size(10); + query.from(0); + query.sort("irId","asc"); + System.out.println(query.getBody().toJSONString()); + } + + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/es/ElasticSearchUtil.java b/casic-data/src/main/java/com/casic/missiles/modular/system/es/ElasticSearchUtil.java new file mode 100644 index 0000000..e9da021 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/es/ElasticSearchUtil.java @@ -0,0 +1,172 @@ +package com.casic.missiles.modular.system.es; + +import cn.hutool.core.util.ObjectUtil; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import com.casic.missiles.core.es.EsResponse; +import org.apache.http.nio.entity.NStringEntity; +import org.apache.http.util.EntityUtils; +import org.elasticsearch.client.Request; +import org.elasticsearch.client.RequestOptions; +import org.elasticsearch.client.Response; +import org.elasticsearch.client.RestClient; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.core.env.Environment; +import org.springframework.stereotype.Component; + +import javax.annotation.PostConstruct; +import java.io.IOException; +import java.util.ArrayList; +import java.util.Base64; +import java.util.List; + +/** + * ES工具类 + * + * @author zhangyingjie123 + * @since 2020-11-30 + */ +@Component +public class ElasticSearchUtil { + private static final Logger logger = LoggerFactory.getLogger(ElasticSearchUtil.class); + + @Autowired + private RestClient clientMapping; + @Autowired + private Environment env; + + private static String username; + private static String password; + + private static RestClient client; + + @PostConstruct + public void init(){ + client = clientMapping; + username = env.getProperty("casic.data.es.username"); + password = env.getProperty("casic.data.es.password"); + } + + public static JSONObject selectDocumentById(String index, String type, String id) throws IOException{ + String method = "GET"; + String endPoint = index.concat("/").concat(type).concat("/").concat(id); + Response response = performRequest(method,endPoint,null); + JSONObject result = JSONObject.parseObject(EntityUtils.toString(response.getEntity())); + return result.getJSONObject("_source"); + } + + public static Response addDocumentById(String index, String type, String id, Object entity) throws IOException{ + String method = "POST"; + String endPoint = index.concat("/").concat(type).concat("/"); + if(ObjectUtil.isNotEmpty(id)){ + endPoint.concat(id); + } + endPoint.concat("?refresh=true"); + logger.debug(entity.toString()); + return performRequest(method,endPoint,JSON.toJSONString(entity)); + } + + public static Response deleteDocumentById(String index, String type, String id) throws IOException{ + String method = "DELETE"; + String endPoint = index.concat("/").concat(type).concat("/").concat(id).concat("?refresh=true"); + return performRequest(method,endPoint,null); + } + + public static Response updateDocumentById(String index, String type, String id, Object entity) throws IOException{ + String method = "POST"; + String endPoint = index.concat("/").concat(type).concat("/").concat(id).concat("?refresh=true"); + logger.debug(entity.toString()); + return performRequest(method,endPoint,JSON.toJSONString(entity)); + } + + public static EsResponse searchQuery(String index, String type, ElasticSearchQuery query) throws IOException{ + String method = "POST"; + String entPoint = index.concat("/").concat(type).concat("/").concat("_search"); + logger.debug(query.getBody().toString()); + Response response = performRequest(method, entPoint, query.getBody().toString()); + // 获取response body,转换为json对象 + JSONObject result = JSONObject.parseObject(EntityUtils.toString(response.getEntity())); + return result.toJavaObject(EsResponse.class); + } + + public static Response aggsQuery(String index, String type, ElasticSearchQuery query) throws IOException{ + String method = "POST"; + String entPoint = index.concat("/").concat(type).concat("/").concat("_search"); + logger.debug(query.getBody().toString()); + Response response = performRequest(method, entPoint, query.getBody().toString()); + return response; + } + + public static List searchQueryScroll(String index, String type, ElasticSearchQuery query) throws IOException{ + // 首次查询,提交查询条件,endpoint增加‘?scroll=1m’ + List results = new ArrayList<>(); + String method = "POST"; + String entPoint = index.concat("/").concat(type).concat("/").concat("_search").concat("?scroll=1m"); + logger.debug(query.getBody().toString()); + Response response = performRequest(method, entPoint, query.getBody().toString()); + JSONObject result = JSONObject.parseObject(EntityUtils.toString(response.getEntity())); + EsResponse esResponse = result.toJavaObject(EsResponse.class); + String scrollId = result.getString("_scroll_id"); + if(ObjectUtil.isNotEmpty(esResponse.getDatas())){ + results.addAll(esResponse.getDatas()); + } + // 循环发送scroll请求,直到返回结果为空 + entPoint = "_search/scroll"; + JSONObject scrollBody = new JSONObject(); + scrollBody.put("scroll","1m"); + scrollBody.put("scroll_id",scrollId); + while (esResponse.getDatas().size() > 0){ + method = "GET"; + response = performRequest(method, entPoint, scrollBody.toString()); + result = JSONObject.parseObject(EntityUtils.toString(response.getEntity())); + esResponse = result.toJavaObject(EsResponse.class); + if(ObjectUtil.isNotEmpty(esResponse.getDatas())){ + results.addAll(esResponse.getDatas()); + } + } + // 查询完成后,及时删除scroll,释放资源 + scrollBody.remove("scroll"); + method = "DELETE"; + performRequest(method, entPoint, scrollBody.toString()); + return results; + } + + public static Response bulk(String index,String type,String entity) throws IOException{ + String method = "POST"; + StringBuilder endPoint = new StringBuilder(); + if(ObjectUtil.isNotEmpty(index)){ + endPoint.append(index).append("/"); + } + if(ObjectUtil.isNotEmpty(type)){ + endPoint.append(type).append("/"); + } + endPoint.append("_bulk"); + endPoint.append("?refresh=true"); + logger.debug(entity); + return performRequest(method,endPoint.toString(),entity); + } + + private static Response performRequest(String method, String endpoint, String entity) throws IOException { + //logger.info(method + " " + endpoint); + Request request = new Request(method,endpoint); + if(ObjectUtil.isNotEmpty(entity)){ + request.setEntity(new NStringEntity(entity,"utf-8")); + } + + if(ObjectUtil.isNotEmpty(username) && ObjectUtil.isNotEmpty(password)){ + RequestOptions.Builder builder = RequestOptions.DEFAULT.toBuilder(); + String token = username.concat(":").concat(password); + String base64encode = Base64.getEncoder().encodeToString(token.getBytes("utf-8")); + builder.addHeader("Authorization", "Basic " + base64encode ); + request.setOptions(builder.build()); + } + + + Response response = client.performRequest(request); + logger.debug(response.toString()); + return response; + } + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/event/UserEvent.java b/casic-data/src/main/java/com/casic/missiles/modular/system/event/UserEvent.java deleted file mode 100644 index c6ed867..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/event/UserEvent.java +++ /dev/null @@ -1,23 +0,0 @@ -package com.casic.missiles.modular.system.event; - -import com.casic.missiles.model.application.event.core.ModelEvent; -import com.casic.missiles.model.application.event.type.AbstractEventTypeEnum; -import com.casic.missiles.modular.system.model.User; - -/** - * 用户事件 - * - * @author lwh - */ -public class UserEvent extends ModelEvent { - /** - * Create a new {@code ApplicationEvent}. - * - * @param type 事件类型 - * @param source the object on which the event initially occurred or with - * which the event is associated (never {@code null}) - */ - public UserEvent(AbstractEventTypeEnum type, User source) { - super(type, source); - } -} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/event/listener/UserOneListener.java b/casic-data/src/main/java/com/casic/missiles/modular/system/event/listener/UserOneListener.java deleted file mode 100644 index 4480ef2..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/event/listener/UserOneListener.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.casic.missiles.modular.system.event.listener; - -import com.casic.missiles.core.application.event.UserLoginEvent; -import lombok.extern.slf4j.Slf4j; -import org.springframework.context.event.EventListener; -import org.springframework.stereotype.Component; - -/** - * 用户事件订阅 - * - * @author lwh - */ -@Slf4j -@Component -public class UserOneListener { - @EventListener - public void onApplicationEvent(UserLoginEvent event) { - log.debug("用户1订阅:{}", event); - } -} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/event/listener/UserTwoListener.java b/casic-data/src/main/java/com/casic/missiles/modular/system/event/listener/UserTwoListener.java deleted file mode 100644 index 8447a22..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/event/listener/UserTwoListener.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.casic.missiles.modular.system.event.listener; - -import com.casic.missiles.model.application.event.core.EventSubscriber; -import com.casic.missiles.modular.system.event.UserEvent; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Component; - -/** - * 用户事件订阅 - * - * @author lwh - */ -@Slf4j -@Component -public class UserTwoListener extends EventSubscriber { - @Override - public void onApplicationEvent(UserEvent event) { - log.debug("用户2订阅:{}", event); - } -} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/service/IAlarmRecordService.java b/casic-data/src/main/java/com/casic/missiles/modular/system/service/IAlarmRecordService.java index e0800ae..0bf85d8 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/service/IAlarmRecordService.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/service/IAlarmRecordService.java @@ -1,5 +1,7 @@ package com.casic.missiles.modular.system.service; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.AlarmRecordRequest; import com.casic.missiles.modular.system.model.AlarmRecord; import com.baomidou.mybatisplus.extension.service.IService; @@ -13,4 +15,6 @@ */ public interface IAlarmRecordService extends IService { + Page pageList(Page page, AlarmRecordRequest request); + } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/service/IDataGasService.java b/casic-data/src/main/java/com/casic/missiles/modular/system/service/IDataGasService.java index afb913d..e644294 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/service/IDataGasService.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/service/IDataGasService.java @@ -1,8 +1,11 @@ package com.casic.missiles.modular.system.service; +import com.casic.missiles.modular.system.es.DataGasEs; import com.casic.missiles.modular.system.model.DataGas; import com.baomidou.mybatisplus.extension.service.IService; +import java.io.IOException; + /** *

* 甲烷实时数据表 服务类 @@ -12,5 +15,5 @@ * @since 2023-04-18 */ public interface IDataGasService extends IService { - + void insertDataGasEs(DataGasEs dataGasEs) throws IOException; } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/service/impl/AlarmRecordServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/system/service/impl/AlarmRecordServiceImpl.java index 2d9eb88..1dce8d5 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/service/impl/AlarmRecordServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/service/impl/AlarmRecordServiceImpl.java @@ -1,9 +1,15 @@ package com.casic.missiles.modular.system.service.impl; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.modular.system.dto.AlarmRecordRequest; import com.casic.missiles.modular.system.model.AlarmRecord; import com.casic.missiles.modular.system.dao.AlarmRecordMapper; import com.casic.missiles.modular.system.service.IAlarmRecordService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; /** @@ -17,4 +23,19 @@ @Service public class AlarmRecordServiceImpl extends ServiceImpl implements IAlarmRecordService { + + @Autowired + private AbstractPermissionContext permissionContext; +// @Autowired +// private ICasicUserService casicUserService; + + + @Override + public Page pageList(Page page, AlarmRecordRequest request) { + +// ShiroUser currentUser = permissionContext.getUserService().; + AuthUser user =permissionContext.getAuthService().getLoginUser(); + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + return null; + } } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/service/impl/DataGasServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/system/service/impl/DataGasServiceImpl.java index 4a11b07..1aa01e5 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/service/impl/DataGasServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/service/impl/DataGasServiceImpl.java @@ -1,11 +1,16 @@ package com.casic.missiles.modular.system.service.impl; +import com.casic.missiles.modular.system.consts.DataConst; +import com.casic.missiles.modular.system.es.DataGasEs; +import com.casic.missiles.modular.system.es.ElasticSearchUtil; import com.casic.missiles.modular.system.model.DataGas; import com.casic.missiles.modular.system.dao.DataGasMapper; import com.casic.missiles.modular.system.service.IDataGasService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.stereotype.Service; +import java.io.IOException; + /** *

* 甲烷实时数据表 服务实现类 @@ -17,4 +22,8 @@ @Service public class DataGasServiceImpl extends ServiceImpl implements IDataGasService { + @Override + public void insertDataGasEs(DataGasEs dataGasEs) throws IOException { + ElasticSearchUtil.addDocumentById(DataConst.DATA_GAS_ES_INDEX, DataConst.DATA_GAS_ES_TYPE, null, dataGasEs); + } } diff --git a/casic-server/pom.xml b/casic-server/pom.xml index 66af78a..9981283 100644 --- a/casic-server/pom.xml +++ b/casic-server/pom.xml @@ -77,6 +77,18 @@ **/*.xml + + ${project.basedir}/lib + + * + + + + src/main/resources/config/hiklib + + * + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/task/CollectGasDataTask.java b/casic-server/src/main/java/com/casic/missiles/modular/system/task/CollectGasDataTask.java index d6eb897..84398ca 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/task/CollectGasDataTask.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/task/CollectGasDataTask.java @@ -155,27 +155,4 @@ // } // // -//// class presetRunnable implements Runnable { -//// private String deviceIp; -//// private Integer lineNum; -//// -//// public presetRunnable(String ip, Integer lineNum) { -//// this.deviceIp = ip; -//// this.lineNum = lineNum; -//// } -//// -//// @Override -//// public void run() { -//// // 每隔2小时执行复位操作,并启动巡航 -//// while (true) { -//// try { -//// ihcNetService.preset(deviceIp,lineNum); -//// Thread.sleep(presetInterval * 2000); -//// } catch (InterruptedException e) { -//// e.printStackTrace(); -//// } -//// } -//// } -//// } -// //} diff --git a/casic-web/pom.xml b/casic-web/pom.xml index 39602e3..14e5aa4 100644 --- a/casic-web/pom.xml +++ b/casic-web/pom.xml @@ -10,7 +10,7 @@ casic-web 2.0.0 - war + jar casic-web casic web启动入口 diff --git a/casic-common/pom.xml b/casic-common/pom.xml new file mode 100644 index 0000000..861e1ec --- /dev/null +++ b/casic-common/pom.xml @@ -0,0 +1,60 @@ + + + 4.0.0 + + com.casic + casic-PTZ + 2.0.0 + ../pom.xml + + + casic-common + 2.0.0 + jar + casic-common + casic 的spring boot版本 + + + + + com.casic + casic-core + ${core.version} + provided + + + com.casic + casic-admin-support + ${admin.version} + provided + + + com.casic + casic-export-support + ${extension.version} + + + org.springframework.boot + spring-boot-starter-web + ${boot.version} + provided + + + + com.casic + casic-data-es + 1.0.1.alpha + + + + + + src/main/java + + **/*.xml + + + + + \ No newline at end of file diff --git a/casic-common/src/main/java/com/casic/missiles/modular/system/consts/DataConst.java b/casic-common/src/main/java/com/casic/missiles/modular/system/consts/DataConst.java new file mode 100644 index 0000000..bbe581c --- /dev/null +++ b/casic-common/src/main/java/com/casic/missiles/modular/system/consts/DataConst.java @@ -0,0 +1,8 @@ +package com.casic.missiles.modular.system.consts; + +public class DataConst { + + public static final String DATA_GAS_ES_INDEX = "casic_pantilt_gas"; + + public static final String DATA_GAS_ES_TYPE = "casic_pantilt_gas"; +} diff --git a/casic-data/pom.xml b/casic-data/pom.xml index a3eba7d..3ad2c9c 100644 --- a/casic-data/pom.xml +++ b/casic-data/pom.xml @@ -41,6 +41,11 @@ provided + + com.casic + casic-data-es + 1.0.1.alpha + diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/consts/DataConst.java b/casic-data/src/main/java/com/casic/missiles/modular/system/consts/DataConst.java new file mode 100644 index 0000000..bbe581c --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/consts/DataConst.java @@ -0,0 +1,8 @@ +package com.casic.missiles.modular.system.consts; + +public class DataConst { + + public static final String DATA_GAS_ES_INDEX = "casic_pantilt_gas"; + + public static final String DATA_GAS_ES_TYPE = "casic_pantilt_gas"; +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java b/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java index 4460f11..dfc76ec 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java @@ -5,14 +5,17 @@ import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.AlarmRecordRequest; import com.casic.missiles.modular.system.model.AlarmRecord; import com.casic.missiles.modular.system.service.IAlarmRecordService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseBody; +import javax.validation.Valid; import java.util.List; /** @@ -44,10 +47,12 @@ */ @RequestMapping(value = "/listPage") @ResponseBody - public Object listPage(String condition) { + public Object listPage(@RequestBody @Valid AlarmRecordRequest request) { + + Page page = PageFactory.defaultPage(); - QueryWrapper query = new QueryWrapper<>(); - page = alarmRecordService.page(page,query); +// QueryWrapper query = new QueryWrapper<>(); + page = alarmRecordService.pageList(page,request); return ResponseData.success(super.packForBT(page)); } /** diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/DemoController.java b/casic-data/src/main/java/com/casic/missiles/modular/system/controller/DemoController.java deleted file mode 100644 index 87b6fec..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/DemoController.java +++ /dev/null @@ -1,41 +0,0 @@ -package com.casic.missiles.modular.system.controller; - - -import com.casic.missiles.model.application.event.core.EventPublisher; -import com.casic.missiles.model.application.event.enums.ModelEventTypeEnum; -import com.casic.missiles.model.response.ResponseData; -import com.casic.missiles.modular.system.event.UserEvent; -import com.casic.missiles.modular.system.model.User; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; -import org.springframework.web.bind.annotation.RestController; - -/** - * @ClassName DemoController - * @Description TODO - * @Author lenovo - * @Date 2020/6/13 15:38 - * @Version 1.0 - */ -@RestController -@RequestMapping("/demo") -public class DemoController { - @Autowired - private EventPublisher publisher; - - /** - * 获取mockToken - */ - @PostMapping("/list") - @ResponseBody - public Object list() { - User user = new User(); - user.setAccount("张三"); - publisher.publishEvent(new UserEvent(ModelEventTypeEnum.ADD, user)); - return ResponseData.success(); - } - - -} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/dto/AlarmRecordRequest.java b/casic-data/src/main/java/com/casic/missiles/modular/system/dto/AlarmRecordRequest.java new file mode 100644 index 0000000..9469954 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/dto/AlarmRecordRequest.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.system.dto; + + +import lombok.Data; + +/** + * @author zt + */ +@Data +public class AlarmRecordRequest { + + private Long stationId; + + private Long monitorId; + + private Long lineNum; + + private String alarmType; + + private String alarmStatus; + + private String startTime; + + private String endTime; + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/es/ElasticSearchQuery.java b/casic-data/src/main/java/com/casic/missiles/modular/system/es/ElasticSearchQuery.java new file mode 100644 index 0000000..4d7a38f --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/es/ElasticSearchQuery.java @@ -0,0 +1,257 @@ +package com.casic.missiles.modular.system.es; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; + +import java.io.Serializable; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +/** + * ES查询请求体 + * + * @author zhangyingjie123 + * @since 2020-11-30 + */ +public class ElasticSearchQuery { + private JSONObject body; + private JSONObject query; + private JSONObject bool; + private JSONArray boolMust; + private JSONObject filter; + private JSONObject filterBool; + private JSONArray filterBoolMust; + private JSONArray filterBoolMustnot; + + public static final String MUST_FLAG = "1"; + public static final String MUST_NOT_FLAG = "0"; + + public static final String QUERY = "query"; + public static final String BOOL = "bool"; + public static final String MUST = "must"; + public static final String MUST_NOT = "must_not"; + public static final String FILTER = "filter"; + + + /** + * 生成查询请求体基础结构: + * { + * "query": { + * "bool": { + * "must" [], + * "filter": { + * "bool": { + * "must": [], + * "must_not": [] + * } + * } + * } + * } + * } + */ + public ElasticSearchQuery() { + this.body = new JSONObject(); + this.query = this.query(); + this.bool = this.bool(); + this.boolMust = this.boolMust(); + this.filter = this.filter(); + this.filterBool = this.filterBool(); + this.filterBoolMust = this.filterBoolMust(); + this.filterBoolMustnot = this.filterBoolMustnot(); + } + + public ElasticSearchQuery(JSONObject body){ + this.body = body; + } + + public JSONObject getBody() { + return body; + } + + private JSONObject query(){ + if(ObjectUtil.isEmpty(this.body.get(QUERY))){ + this.body.put("query",new JSONObject()); + } + return this.body.getJSONObject(QUERY); + + } + + private JSONObject bool() { + JSONObject query = this.query; + if(ObjectUtil.isEmpty(query.get(BOOL))){ + query.put(BOOL,new JSONObject()); + } + return query.getJSONObject(BOOL); + } + + private JSONArray boolMust(){ + JSONObject bool = this.bool; + if(ObjectUtil.isEmpty(bool.get(MUST))){ + bool.put(MUST,new JSONArray()); + } + return bool.getJSONArray(MUST); + } + + private JSONObject filter(){ + JSONObject bool = this.bool; + if(ObjectUtil.isEmpty(bool.get(FILTER))){ + bool.put(FILTER,new JSONObject()); + } + return bool.getJSONObject(FILTER); + } + + private JSONObject filterBool(){ + JSONObject filter = this.filter; + if(ObjectUtil.isEmpty(filter.get(BOOL))){ + filter.put(BOOL,new JSONObject()); + } + return filter.getJSONObject(BOOL); + } + + private JSONArray filterBoolMust(){ + JSONObject bool = this.filterBool; + if(ObjectUtil.isEmpty(bool.get(MUST))){ + bool.put(MUST,new JSONArray()); + } + return bool.getJSONArray(MUST); + } + + private JSONArray filterBoolMustnot(){ + JSONObject bool = this.filterBool; + if(ObjectUtil.isEmpty(bool.get(MUST_NOT))){ + bool.put(MUST_NOT,new JSONArray()); + } + return bool.getJSONArray(MUST_NOT); + } + + public void match(String filed, Serializable value){ + JSONArray boolMust = this.boolMust; + JSONObject match = new JSONObject(); + JSONObject filedJson = new JSONObject(); + filedJson.put(filed,value); + match.put("match",filedJson); + boolMust.add(match); + } + + public void matchPhrase(String filed, Serializable value){ + JSONArray boolMust = this.boolMust; + JSONObject matchPhrase = new JSONObject(); + JSONObject filedJson = new JSONObject(); + filedJson.put(filed,value); + matchPhrase.put("match_phrase",filedJson); + boolMust.add(matchPhrase); + } + + public void term(String filed, Serializable value){ + this.term(filed,value,MUST_FLAG); + } + + public void term(String filed, Serializable value,String mustFlag){ + JSONObject filedJson = new JSONObject(); + filedJson.put(filed,value); + JSONObject term = new JSONObject(); + term.put("term",filedJson); + if(MUST_FLAG.equals(mustFlag)){ + this.filterBoolMust.add(term); + } + if(MUST_NOT_FLAG.equals(mustFlag)){ + this.filterBoolMustnot.add(term); + } + } + + public void terms(String filed,List value){ + this.terms(filed,value,MUST_FLAG); + } + + public void terms(String filed, List value, String mustFlag){ + JSONObject filedJson = new JSONObject(); + filedJson.put(filed,value); + JSONObject terms = new JSONObject(); + terms.put("terms",filedJson); + if(MUST_FLAG.equals(mustFlag)){ + this.filterBoolMust.add(terms); + } + if(MUST_NOT_FLAG.equals(mustFlag)){ + this.filterBoolMustnot.add(terms); + } + } + + public void range(String filed, Serializable from, Serializable to){ + this.range(filed,from,to,MUST_FLAG); + } + + public void range(String filed, Serializable from, Serializable to, String mustFlag){ + JSONObject rangeJson = new JSONObject(); + if(ObjectUtil.isNotEmpty(from)){ + rangeJson.put("from",from); + } + if(ObjectUtil.isNotEmpty(to)){ + rangeJson.put("to",to); + } + JSONObject filedJson = new JSONObject(); + filedJson.put(filed,rangeJson); + JSONObject range = new JSONObject(); + range.put("range",filedJson); + if(MUST_FLAG.equals(mustFlag)){ + this.filterBoolMust.add(range); + } + if(MUST_NOT_FLAG.equals(mustFlag)){ + this.filterBoolMustnot.add(range); + } + } + + public void size(int size){ + this.body.put("size",size); + } + + public void from(int from) { + this.body.put("from",from); + } + + public void sort(String sort, String order){ + JSONObject sortJson = new JSONObject(); + JSONObject orderJson = new JSONObject(); + orderJson.put("order",order); + sortJson.put(sort,orderJson); + this.body.put("sort",sortJson); + } + + public void aggs(String aggsName, String filed){ + JSONObject terms = new JSONObject(); + terms.put("field",filed); + JSONObject aggsTerms = new JSONObject(); + aggsTerms.put("terms",terms); + JSONObject aggsBody = new JSONObject(); + aggsBody.put(aggsName,aggsTerms); + this.body.put("aggs",aggsBody); + } + + public void aggs(JSONObject aggBody){ + this.body.put("aggs",aggBody); + } + + + + public static void main(String[] args) { + ElasticSearchQuery query = new ElasticSearchQuery(); + query.matchPhrase("name","张三"); + query.term("sex","2"); + List deptIds = new ArrayList<>(); + deptIds.add(0L); + deptIds.add(24L); + query.terms("deptId", deptIds); + Date date1 = DateUtil.parse("2020-01-01","yyyy-MM-dd"); + Date date2 = DateUtil.parse("2020-04-01","yyyy-MM-dd"); + query.range("collTime",date1.getTime(),date2.getTime()); + query.term("collState","3",MUST_NOT_FLAG); + query.size(10); + query.from(0); + query.sort("irId","asc"); + System.out.println(query.getBody().toJSONString()); + } + + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/es/ElasticSearchUtil.java b/casic-data/src/main/java/com/casic/missiles/modular/system/es/ElasticSearchUtil.java new file mode 100644 index 0000000..e9da021 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/es/ElasticSearchUtil.java @@ -0,0 +1,172 @@ +package com.casic.missiles.modular.system.es; + +import cn.hutool.core.util.ObjectUtil; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import com.casic.missiles.core.es.EsResponse; +import org.apache.http.nio.entity.NStringEntity; +import org.apache.http.util.EntityUtils; +import org.elasticsearch.client.Request; +import org.elasticsearch.client.RequestOptions; +import org.elasticsearch.client.Response; +import org.elasticsearch.client.RestClient; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.core.env.Environment; +import org.springframework.stereotype.Component; + +import javax.annotation.PostConstruct; +import java.io.IOException; +import java.util.ArrayList; +import java.util.Base64; +import java.util.List; + +/** + * ES工具类 + * + * @author zhangyingjie123 + * @since 2020-11-30 + */ +@Component +public class ElasticSearchUtil { + private static final Logger logger = LoggerFactory.getLogger(ElasticSearchUtil.class); + + @Autowired + private RestClient clientMapping; + @Autowired + private Environment env; + + private static String username; + private static String password; + + private static RestClient client; + + @PostConstruct + public void init(){ + client = clientMapping; + username = env.getProperty("casic.data.es.username"); + password = env.getProperty("casic.data.es.password"); + } + + public static JSONObject selectDocumentById(String index, String type, String id) throws IOException{ + String method = "GET"; + String endPoint = index.concat("/").concat(type).concat("/").concat(id); + Response response = performRequest(method,endPoint,null); + JSONObject result = JSONObject.parseObject(EntityUtils.toString(response.getEntity())); + return result.getJSONObject("_source"); + } + + public static Response addDocumentById(String index, String type, String id, Object entity) throws IOException{ + String method = "POST"; + String endPoint = index.concat("/").concat(type).concat("/"); + if(ObjectUtil.isNotEmpty(id)){ + endPoint.concat(id); + } + endPoint.concat("?refresh=true"); + logger.debug(entity.toString()); + return performRequest(method,endPoint,JSON.toJSONString(entity)); + } + + public static Response deleteDocumentById(String index, String type, String id) throws IOException{ + String method = "DELETE"; + String endPoint = index.concat("/").concat(type).concat("/").concat(id).concat("?refresh=true"); + return performRequest(method,endPoint,null); + } + + public static Response updateDocumentById(String index, String type, String id, Object entity) throws IOException{ + String method = "POST"; + String endPoint = index.concat("/").concat(type).concat("/").concat(id).concat("?refresh=true"); + logger.debug(entity.toString()); + return performRequest(method,endPoint,JSON.toJSONString(entity)); + } + + public static EsResponse searchQuery(String index, String type, ElasticSearchQuery query) throws IOException{ + String method = "POST"; + String entPoint = index.concat("/").concat(type).concat("/").concat("_search"); + logger.debug(query.getBody().toString()); + Response response = performRequest(method, entPoint, query.getBody().toString()); + // 获取response body,转换为json对象 + JSONObject result = JSONObject.parseObject(EntityUtils.toString(response.getEntity())); + return result.toJavaObject(EsResponse.class); + } + + public static Response aggsQuery(String index, String type, ElasticSearchQuery query) throws IOException{ + String method = "POST"; + String entPoint = index.concat("/").concat(type).concat("/").concat("_search"); + logger.debug(query.getBody().toString()); + Response response = performRequest(method, entPoint, query.getBody().toString()); + return response; + } + + public static List searchQueryScroll(String index, String type, ElasticSearchQuery query) throws IOException{ + // 首次查询,提交查询条件,endpoint增加‘?scroll=1m’ + List results = new ArrayList<>(); + String method = "POST"; + String entPoint = index.concat("/").concat(type).concat("/").concat("_search").concat("?scroll=1m"); + logger.debug(query.getBody().toString()); + Response response = performRequest(method, entPoint, query.getBody().toString()); + JSONObject result = JSONObject.parseObject(EntityUtils.toString(response.getEntity())); + EsResponse esResponse = result.toJavaObject(EsResponse.class); + String scrollId = result.getString("_scroll_id"); + if(ObjectUtil.isNotEmpty(esResponse.getDatas())){ + results.addAll(esResponse.getDatas()); + } + // 循环发送scroll请求,直到返回结果为空 + entPoint = "_search/scroll"; + JSONObject scrollBody = new JSONObject(); + scrollBody.put("scroll","1m"); + scrollBody.put("scroll_id",scrollId); + while (esResponse.getDatas().size() > 0){ + method = "GET"; + response = performRequest(method, entPoint, scrollBody.toString()); + result = JSONObject.parseObject(EntityUtils.toString(response.getEntity())); + esResponse = result.toJavaObject(EsResponse.class); + if(ObjectUtil.isNotEmpty(esResponse.getDatas())){ + results.addAll(esResponse.getDatas()); + } + } + // 查询完成后,及时删除scroll,释放资源 + scrollBody.remove("scroll"); + method = "DELETE"; + performRequest(method, entPoint, scrollBody.toString()); + return results; + } + + public static Response bulk(String index,String type,String entity) throws IOException{ + String method = "POST"; + StringBuilder endPoint = new StringBuilder(); + if(ObjectUtil.isNotEmpty(index)){ + endPoint.append(index).append("/"); + } + if(ObjectUtil.isNotEmpty(type)){ + endPoint.append(type).append("/"); + } + endPoint.append("_bulk"); + endPoint.append("?refresh=true"); + logger.debug(entity); + return performRequest(method,endPoint.toString(),entity); + } + + private static Response performRequest(String method, String endpoint, String entity) throws IOException { + //logger.info(method + " " + endpoint); + Request request = new Request(method,endpoint); + if(ObjectUtil.isNotEmpty(entity)){ + request.setEntity(new NStringEntity(entity,"utf-8")); + } + + if(ObjectUtil.isNotEmpty(username) && ObjectUtil.isNotEmpty(password)){ + RequestOptions.Builder builder = RequestOptions.DEFAULT.toBuilder(); + String token = username.concat(":").concat(password); + String base64encode = Base64.getEncoder().encodeToString(token.getBytes("utf-8")); + builder.addHeader("Authorization", "Basic " + base64encode ); + request.setOptions(builder.build()); + } + + + Response response = client.performRequest(request); + logger.debug(response.toString()); + return response; + } + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/event/UserEvent.java b/casic-data/src/main/java/com/casic/missiles/modular/system/event/UserEvent.java deleted file mode 100644 index c6ed867..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/event/UserEvent.java +++ /dev/null @@ -1,23 +0,0 @@ -package com.casic.missiles.modular.system.event; - -import com.casic.missiles.model.application.event.core.ModelEvent; -import com.casic.missiles.model.application.event.type.AbstractEventTypeEnum; -import com.casic.missiles.modular.system.model.User; - -/** - * 用户事件 - * - * @author lwh - */ -public class UserEvent extends ModelEvent { - /** - * Create a new {@code ApplicationEvent}. - * - * @param type 事件类型 - * @param source the object on which the event initially occurred or with - * which the event is associated (never {@code null}) - */ - public UserEvent(AbstractEventTypeEnum type, User source) { - super(type, source); - } -} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/event/listener/UserOneListener.java b/casic-data/src/main/java/com/casic/missiles/modular/system/event/listener/UserOneListener.java deleted file mode 100644 index 4480ef2..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/event/listener/UserOneListener.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.casic.missiles.modular.system.event.listener; - -import com.casic.missiles.core.application.event.UserLoginEvent; -import lombok.extern.slf4j.Slf4j; -import org.springframework.context.event.EventListener; -import org.springframework.stereotype.Component; - -/** - * 用户事件订阅 - * - * @author lwh - */ -@Slf4j -@Component -public class UserOneListener { - @EventListener - public void onApplicationEvent(UserLoginEvent event) { - log.debug("用户1订阅:{}", event); - } -} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/event/listener/UserTwoListener.java b/casic-data/src/main/java/com/casic/missiles/modular/system/event/listener/UserTwoListener.java deleted file mode 100644 index 8447a22..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/event/listener/UserTwoListener.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.casic.missiles.modular.system.event.listener; - -import com.casic.missiles.model.application.event.core.EventSubscriber; -import com.casic.missiles.modular.system.event.UserEvent; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Component; - -/** - * 用户事件订阅 - * - * @author lwh - */ -@Slf4j -@Component -public class UserTwoListener extends EventSubscriber { - @Override - public void onApplicationEvent(UserEvent event) { - log.debug("用户2订阅:{}", event); - } -} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/service/IAlarmRecordService.java b/casic-data/src/main/java/com/casic/missiles/modular/system/service/IAlarmRecordService.java index e0800ae..0bf85d8 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/service/IAlarmRecordService.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/service/IAlarmRecordService.java @@ -1,5 +1,7 @@ package com.casic.missiles.modular.system.service; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.AlarmRecordRequest; import com.casic.missiles.modular.system.model.AlarmRecord; import com.baomidou.mybatisplus.extension.service.IService; @@ -13,4 +15,6 @@ */ public interface IAlarmRecordService extends IService { + Page pageList(Page page, AlarmRecordRequest request); + } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/service/IDataGasService.java b/casic-data/src/main/java/com/casic/missiles/modular/system/service/IDataGasService.java index afb913d..e644294 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/service/IDataGasService.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/service/IDataGasService.java @@ -1,8 +1,11 @@ package com.casic.missiles.modular.system.service; +import com.casic.missiles.modular.system.es.DataGasEs; import com.casic.missiles.modular.system.model.DataGas; import com.baomidou.mybatisplus.extension.service.IService; +import java.io.IOException; + /** *

* 甲烷实时数据表 服务类 @@ -12,5 +15,5 @@ * @since 2023-04-18 */ public interface IDataGasService extends IService { - + void insertDataGasEs(DataGasEs dataGasEs) throws IOException; } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/service/impl/AlarmRecordServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/system/service/impl/AlarmRecordServiceImpl.java index 2d9eb88..1dce8d5 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/service/impl/AlarmRecordServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/service/impl/AlarmRecordServiceImpl.java @@ -1,9 +1,15 @@ package com.casic.missiles.modular.system.service.impl; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.modular.system.dto.AlarmRecordRequest; import com.casic.missiles.modular.system.model.AlarmRecord; import com.casic.missiles.modular.system.dao.AlarmRecordMapper; import com.casic.missiles.modular.system.service.IAlarmRecordService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; /** @@ -17,4 +23,19 @@ @Service public class AlarmRecordServiceImpl extends ServiceImpl implements IAlarmRecordService { + + @Autowired + private AbstractPermissionContext permissionContext; +// @Autowired +// private ICasicUserService casicUserService; + + + @Override + public Page pageList(Page page, AlarmRecordRequest request) { + +// ShiroUser currentUser = permissionContext.getUserService().; + AuthUser user =permissionContext.getAuthService().getLoginUser(); + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + return null; + } } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/service/impl/DataGasServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/system/service/impl/DataGasServiceImpl.java index 4a11b07..1aa01e5 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/service/impl/DataGasServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/service/impl/DataGasServiceImpl.java @@ -1,11 +1,16 @@ package com.casic.missiles.modular.system.service.impl; +import com.casic.missiles.modular.system.consts.DataConst; +import com.casic.missiles.modular.system.es.DataGasEs; +import com.casic.missiles.modular.system.es.ElasticSearchUtil; import com.casic.missiles.modular.system.model.DataGas; import com.casic.missiles.modular.system.dao.DataGasMapper; import com.casic.missiles.modular.system.service.IDataGasService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.stereotype.Service; +import java.io.IOException; + /** *

* 甲烷实时数据表 服务实现类 @@ -17,4 +22,8 @@ @Service public class DataGasServiceImpl extends ServiceImpl implements IDataGasService { + @Override + public void insertDataGasEs(DataGasEs dataGasEs) throws IOException { + ElasticSearchUtil.addDocumentById(DataConst.DATA_GAS_ES_INDEX, DataConst.DATA_GAS_ES_TYPE, null, dataGasEs); + } } diff --git a/casic-server/pom.xml b/casic-server/pom.xml index 66af78a..9981283 100644 --- a/casic-server/pom.xml +++ b/casic-server/pom.xml @@ -77,6 +77,18 @@ **/*.xml + + ${project.basedir}/lib + + * + + + + src/main/resources/config/hiklib + + * + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/task/CollectGasDataTask.java b/casic-server/src/main/java/com/casic/missiles/modular/system/task/CollectGasDataTask.java index d6eb897..84398ca 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/task/CollectGasDataTask.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/task/CollectGasDataTask.java @@ -155,27 +155,4 @@ // } // // -//// class presetRunnable implements Runnable { -//// private String deviceIp; -//// private Integer lineNum; -//// -//// public presetRunnable(String ip, Integer lineNum) { -//// this.deviceIp = ip; -//// this.lineNum = lineNum; -//// } -//// -//// @Override -//// public void run() { -//// // 每隔2小时执行复位操作,并启动巡航 -//// while (true) { -//// try { -//// ihcNetService.preset(deviceIp,lineNum); -//// Thread.sleep(presetInterval * 2000); -//// } catch (InterruptedException e) { -//// e.printStackTrace(); -//// } -//// } -//// } -//// } -// //} diff --git a/casic-web/pom.xml b/casic-web/pom.xml index 39602e3..14e5aa4 100644 --- a/casic-web/pom.xml +++ b/casic-web/pom.xml @@ -10,7 +10,7 @@ casic-web 2.0.0 - war + jar casic-web casic web启动入口 diff --git a/casic-web/src/main/resources/config/application-dev.yml b/casic-web/src/main/resources/config/application-dev.yml index 7fa56d0..a621c2c 100644 --- a/casic-web/src/main/resources/config/application-dev.yml +++ b/casic-web/src/main/resources/config/application-dev.yml @@ -1,6 +1,7 @@ server: port: 11306 - context-path: /pan-tilt + servlet: + context-path: /pan-tilt ################### spring配置 ################### spring: datasource: diff --git a/casic-common/pom.xml b/casic-common/pom.xml new file mode 100644 index 0000000..861e1ec --- /dev/null +++ b/casic-common/pom.xml @@ -0,0 +1,60 @@ + + + 4.0.0 + + com.casic + casic-PTZ + 2.0.0 + ../pom.xml + + + casic-common + 2.0.0 + jar + casic-common + casic 的spring boot版本 + + + + + com.casic + casic-core + ${core.version} + provided + + + com.casic + casic-admin-support + ${admin.version} + provided + + + com.casic + casic-export-support + ${extension.version} + + + org.springframework.boot + spring-boot-starter-web + ${boot.version} + provided + + + + com.casic + casic-data-es + 1.0.1.alpha + + + + + + src/main/java + + **/*.xml + + + + + \ No newline at end of file diff --git a/casic-common/src/main/java/com/casic/missiles/modular/system/consts/DataConst.java b/casic-common/src/main/java/com/casic/missiles/modular/system/consts/DataConst.java new file mode 100644 index 0000000..bbe581c --- /dev/null +++ b/casic-common/src/main/java/com/casic/missiles/modular/system/consts/DataConst.java @@ -0,0 +1,8 @@ +package com.casic.missiles.modular.system.consts; + +public class DataConst { + + public static final String DATA_GAS_ES_INDEX = "casic_pantilt_gas"; + + public static final String DATA_GAS_ES_TYPE = "casic_pantilt_gas"; +} diff --git a/casic-data/pom.xml b/casic-data/pom.xml index a3eba7d..3ad2c9c 100644 --- a/casic-data/pom.xml +++ b/casic-data/pom.xml @@ -41,6 +41,11 @@ provided + + com.casic + casic-data-es + 1.0.1.alpha + diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/consts/DataConst.java b/casic-data/src/main/java/com/casic/missiles/modular/system/consts/DataConst.java new file mode 100644 index 0000000..bbe581c --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/consts/DataConst.java @@ -0,0 +1,8 @@ +package com.casic.missiles.modular.system.consts; + +public class DataConst { + + public static final String DATA_GAS_ES_INDEX = "casic_pantilt_gas"; + + public static final String DATA_GAS_ES_TYPE = "casic_pantilt_gas"; +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java b/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java index 4460f11..dfc76ec 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java @@ -5,14 +5,17 @@ import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.AlarmRecordRequest; import com.casic.missiles.modular.system.model.AlarmRecord; import com.casic.missiles.modular.system.service.IAlarmRecordService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseBody; +import javax.validation.Valid; import java.util.List; /** @@ -44,10 +47,12 @@ */ @RequestMapping(value = "/listPage") @ResponseBody - public Object listPage(String condition) { + public Object listPage(@RequestBody @Valid AlarmRecordRequest request) { + + Page page = PageFactory.defaultPage(); - QueryWrapper query = new QueryWrapper<>(); - page = alarmRecordService.page(page,query); +// QueryWrapper query = new QueryWrapper<>(); + page = alarmRecordService.pageList(page,request); return ResponseData.success(super.packForBT(page)); } /** diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/DemoController.java b/casic-data/src/main/java/com/casic/missiles/modular/system/controller/DemoController.java deleted file mode 100644 index 87b6fec..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/DemoController.java +++ /dev/null @@ -1,41 +0,0 @@ -package com.casic.missiles.modular.system.controller; - - -import com.casic.missiles.model.application.event.core.EventPublisher; -import com.casic.missiles.model.application.event.enums.ModelEventTypeEnum; -import com.casic.missiles.model.response.ResponseData; -import com.casic.missiles.modular.system.event.UserEvent; -import com.casic.missiles.modular.system.model.User; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; -import org.springframework.web.bind.annotation.RestController; - -/** - * @ClassName DemoController - * @Description TODO - * @Author lenovo - * @Date 2020/6/13 15:38 - * @Version 1.0 - */ -@RestController -@RequestMapping("/demo") -public class DemoController { - @Autowired - private EventPublisher publisher; - - /** - * 获取mockToken - */ - @PostMapping("/list") - @ResponseBody - public Object list() { - User user = new User(); - user.setAccount("张三"); - publisher.publishEvent(new UserEvent(ModelEventTypeEnum.ADD, user)); - return ResponseData.success(); - } - - -} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/dto/AlarmRecordRequest.java b/casic-data/src/main/java/com/casic/missiles/modular/system/dto/AlarmRecordRequest.java new file mode 100644 index 0000000..9469954 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/dto/AlarmRecordRequest.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.system.dto; + + +import lombok.Data; + +/** + * @author zt + */ +@Data +public class AlarmRecordRequest { + + private Long stationId; + + private Long monitorId; + + private Long lineNum; + + private String alarmType; + + private String alarmStatus; + + private String startTime; + + private String endTime; + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/es/ElasticSearchQuery.java b/casic-data/src/main/java/com/casic/missiles/modular/system/es/ElasticSearchQuery.java new file mode 100644 index 0000000..4d7a38f --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/es/ElasticSearchQuery.java @@ -0,0 +1,257 @@ +package com.casic.missiles.modular.system.es; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; + +import java.io.Serializable; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +/** + * ES查询请求体 + * + * @author zhangyingjie123 + * @since 2020-11-30 + */ +public class ElasticSearchQuery { + private JSONObject body; + private JSONObject query; + private JSONObject bool; + private JSONArray boolMust; + private JSONObject filter; + private JSONObject filterBool; + private JSONArray filterBoolMust; + private JSONArray filterBoolMustnot; + + public static final String MUST_FLAG = "1"; + public static final String MUST_NOT_FLAG = "0"; + + public static final String QUERY = "query"; + public static final String BOOL = "bool"; + public static final String MUST = "must"; + public static final String MUST_NOT = "must_not"; + public static final String FILTER = "filter"; + + + /** + * 生成查询请求体基础结构: + * { + * "query": { + * "bool": { + * "must" [], + * "filter": { + * "bool": { + * "must": [], + * "must_not": [] + * } + * } + * } + * } + * } + */ + public ElasticSearchQuery() { + this.body = new JSONObject(); + this.query = this.query(); + this.bool = this.bool(); + this.boolMust = this.boolMust(); + this.filter = this.filter(); + this.filterBool = this.filterBool(); + this.filterBoolMust = this.filterBoolMust(); + this.filterBoolMustnot = this.filterBoolMustnot(); + } + + public ElasticSearchQuery(JSONObject body){ + this.body = body; + } + + public JSONObject getBody() { + return body; + } + + private JSONObject query(){ + if(ObjectUtil.isEmpty(this.body.get(QUERY))){ + this.body.put("query",new JSONObject()); + } + return this.body.getJSONObject(QUERY); + + } + + private JSONObject bool() { + JSONObject query = this.query; + if(ObjectUtil.isEmpty(query.get(BOOL))){ + query.put(BOOL,new JSONObject()); + } + return query.getJSONObject(BOOL); + } + + private JSONArray boolMust(){ + JSONObject bool = this.bool; + if(ObjectUtil.isEmpty(bool.get(MUST))){ + bool.put(MUST,new JSONArray()); + } + return bool.getJSONArray(MUST); + } + + private JSONObject filter(){ + JSONObject bool = this.bool; + if(ObjectUtil.isEmpty(bool.get(FILTER))){ + bool.put(FILTER,new JSONObject()); + } + return bool.getJSONObject(FILTER); + } + + private JSONObject filterBool(){ + JSONObject filter = this.filter; + if(ObjectUtil.isEmpty(filter.get(BOOL))){ + filter.put(BOOL,new JSONObject()); + } + return filter.getJSONObject(BOOL); + } + + private JSONArray filterBoolMust(){ + JSONObject bool = this.filterBool; + if(ObjectUtil.isEmpty(bool.get(MUST))){ + bool.put(MUST,new JSONArray()); + } + return bool.getJSONArray(MUST); + } + + private JSONArray filterBoolMustnot(){ + JSONObject bool = this.filterBool; + if(ObjectUtil.isEmpty(bool.get(MUST_NOT))){ + bool.put(MUST_NOT,new JSONArray()); + } + return bool.getJSONArray(MUST_NOT); + } + + public void match(String filed, Serializable value){ + JSONArray boolMust = this.boolMust; + JSONObject match = new JSONObject(); + JSONObject filedJson = new JSONObject(); + filedJson.put(filed,value); + match.put("match",filedJson); + boolMust.add(match); + } + + public void matchPhrase(String filed, Serializable value){ + JSONArray boolMust = this.boolMust; + JSONObject matchPhrase = new JSONObject(); + JSONObject filedJson = new JSONObject(); + filedJson.put(filed,value); + matchPhrase.put("match_phrase",filedJson); + boolMust.add(matchPhrase); + } + + public void term(String filed, Serializable value){ + this.term(filed,value,MUST_FLAG); + } + + public void term(String filed, Serializable value,String mustFlag){ + JSONObject filedJson = new JSONObject(); + filedJson.put(filed,value); + JSONObject term = new JSONObject(); + term.put("term",filedJson); + if(MUST_FLAG.equals(mustFlag)){ + this.filterBoolMust.add(term); + } + if(MUST_NOT_FLAG.equals(mustFlag)){ + this.filterBoolMustnot.add(term); + } + } + + public void terms(String filed,List value){ + this.terms(filed,value,MUST_FLAG); + } + + public void terms(String filed, List value, String mustFlag){ + JSONObject filedJson = new JSONObject(); + filedJson.put(filed,value); + JSONObject terms = new JSONObject(); + terms.put("terms",filedJson); + if(MUST_FLAG.equals(mustFlag)){ + this.filterBoolMust.add(terms); + } + if(MUST_NOT_FLAG.equals(mustFlag)){ + this.filterBoolMustnot.add(terms); + } + } + + public void range(String filed, Serializable from, Serializable to){ + this.range(filed,from,to,MUST_FLAG); + } + + public void range(String filed, Serializable from, Serializable to, String mustFlag){ + JSONObject rangeJson = new JSONObject(); + if(ObjectUtil.isNotEmpty(from)){ + rangeJson.put("from",from); + } + if(ObjectUtil.isNotEmpty(to)){ + rangeJson.put("to",to); + } + JSONObject filedJson = new JSONObject(); + filedJson.put(filed,rangeJson); + JSONObject range = new JSONObject(); + range.put("range",filedJson); + if(MUST_FLAG.equals(mustFlag)){ + this.filterBoolMust.add(range); + } + if(MUST_NOT_FLAG.equals(mustFlag)){ + this.filterBoolMustnot.add(range); + } + } + + public void size(int size){ + this.body.put("size",size); + } + + public void from(int from) { + this.body.put("from",from); + } + + public void sort(String sort, String order){ + JSONObject sortJson = new JSONObject(); + JSONObject orderJson = new JSONObject(); + orderJson.put("order",order); + sortJson.put(sort,orderJson); + this.body.put("sort",sortJson); + } + + public void aggs(String aggsName, String filed){ + JSONObject terms = new JSONObject(); + terms.put("field",filed); + JSONObject aggsTerms = new JSONObject(); + aggsTerms.put("terms",terms); + JSONObject aggsBody = new JSONObject(); + aggsBody.put(aggsName,aggsTerms); + this.body.put("aggs",aggsBody); + } + + public void aggs(JSONObject aggBody){ + this.body.put("aggs",aggBody); + } + + + + public static void main(String[] args) { + ElasticSearchQuery query = new ElasticSearchQuery(); + query.matchPhrase("name","张三"); + query.term("sex","2"); + List deptIds = new ArrayList<>(); + deptIds.add(0L); + deptIds.add(24L); + query.terms("deptId", deptIds); + Date date1 = DateUtil.parse("2020-01-01","yyyy-MM-dd"); + Date date2 = DateUtil.parse("2020-04-01","yyyy-MM-dd"); + query.range("collTime",date1.getTime(),date2.getTime()); + query.term("collState","3",MUST_NOT_FLAG); + query.size(10); + query.from(0); + query.sort("irId","asc"); + System.out.println(query.getBody().toJSONString()); + } + + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/es/ElasticSearchUtil.java b/casic-data/src/main/java/com/casic/missiles/modular/system/es/ElasticSearchUtil.java new file mode 100644 index 0000000..e9da021 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/es/ElasticSearchUtil.java @@ -0,0 +1,172 @@ +package com.casic.missiles.modular.system.es; + +import cn.hutool.core.util.ObjectUtil; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import com.casic.missiles.core.es.EsResponse; +import org.apache.http.nio.entity.NStringEntity; +import org.apache.http.util.EntityUtils; +import org.elasticsearch.client.Request; +import org.elasticsearch.client.RequestOptions; +import org.elasticsearch.client.Response; +import org.elasticsearch.client.RestClient; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.core.env.Environment; +import org.springframework.stereotype.Component; + +import javax.annotation.PostConstruct; +import java.io.IOException; +import java.util.ArrayList; +import java.util.Base64; +import java.util.List; + +/** + * ES工具类 + * + * @author zhangyingjie123 + * @since 2020-11-30 + */ +@Component +public class ElasticSearchUtil { + private static final Logger logger = LoggerFactory.getLogger(ElasticSearchUtil.class); + + @Autowired + private RestClient clientMapping; + @Autowired + private Environment env; + + private static String username; + private static String password; + + private static RestClient client; + + @PostConstruct + public void init(){ + client = clientMapping; + username = env.getProperty("casic.data.es.username"); + password = env.getProperty("casic.data.es.password"); + } + + public static JSONObject selectDocumentById(String index, String type, String id) throws IOException{ + String method = "GET"; + String endPoint = index.concat("/").concat(type).concat("/").concat(id); + Response response = performRequest(method,endPoint,null); + JSONObject result = JSONObject.parseObject(EntityUtils.toString(response.getEntity())); + return result.getJSONObject("_source"); + } + + public static Response addDocumentById(String index, String type, String id, Object entity) throws IOException{ + String method = "POST"; + String endPoint = index.concat("/").concat(type).concat("/"); + if(ObjectUtil.isNotEmpty(id)){ + endPoint.concat(id); + } + endPoint.concat("?refresh=true"); + logger.debug(entity.toString()); + return performRequest(method,endPoint,JSON.toJSONString(entity)); + } + + public static Response deleteDocumentById(String index, String type, String id) throws IOException{ + String method = "DELETE"; + String endPoint = index.concat("/").concat(type).concat("/").concat(id).concat("?refresh=true"); + return performRequest(method,endPoint,null); + } + + public static Response updateDocumentById(String index, String type, String id, Object entity) throws IOException{ + String method = "POST"; + String endPoint = index.concat("/").concat(type).concat("/").concat(id).concat("?refresh=true"); + logger.debug(entity.toString()); + return performRequest(method,endPoint,JSON.toJSONString(entity)); + } + + public static EsResponse searchQuery(String index, String type, ElasticSearchQuery query) throws IOException{ + String method = "POST"; + String entPoint = index.concat("/").concat(type).concat("/").concat("_search"); + logger.debug(query.getBody().toString()); + Response response = performRequest(method, entPoint, query.getBody().toString()); + // 获取response body,转换为json对象 + JSONObject result = JSONObject.parseObject(EntityUtils.toString(response.getEntity())); + return result.toJavaObject(EsResponse.class); + } + + public static Response aggsQuery(String index, String type, ElasticSearchQuery query) throws IOException{ + String method = "POST"; + String entPoint = index.concat("/").concat(type).concat("/").concat("_search"); + logger.debug(query.getBody().toString()); + Response response = performRequest(method, entPoint, query.getBody().toString()); + return response; + } + + public static List searchQueryScroll(String index, String type, ElasticSearchQuery query) throws IOException{ + // 首次查询,提交查询条件,endpoint增加‘?scroll=1m’ + List results = new ArrayList<>(); + String method = "POST"; + String entPoint = index.concat("/").concat(type).concat("/").concat("_search").concat("?scroll=1m"); + logger.debug(query.getBody().toString()); + Response response = performRequest(method, entPoint, query.getBody().toString()); + JSONObject result = JSONObject.parseObject(EntityUtils.toString(response.getEntity())); + EsResponse esResponse = result.toJavaObject(EsResponse.class); + String scrollId = result.getString("_scroll_id"); + if(ObjectUtil.isNotEmpty(esResponse.getDatas())){ + results.addAll(esResponse.getDatas()); + } + // 循环发送scroll请求,直到返回结果为空 + entPoint = "_search/scroll"; + JSONObject scrollBody = new JSONObject(); + scrollBody.put("scroll","1m"); + scrollBody.put("scroll_id",scrollId); + while (esResponse.getDatas().size() > 0){ + method = "GET"; + response = performRequest(method, entPoint, scrollBody.toString()); + result = JSONObject.parseObject(EntityUtils.toString(response.getEntity())); + esResponse = result.toJavaObject(EsResponse.class); + if(ObjectUtil.isNotEmpty(esResponse.getDatas())){ + results.addAll(esResponse.getDatas()); + } + } + // 查询完成后,及时删除scroll,释放资源 + scrollBody.remove("scroll"); + method = "DELETE"; + performRequest(method, entPoint, scrollBody.toString()); + return results; + } + + public static Response bulk(String index,String type,String entity) throws IOException{ + String method = "POST"; + StringBuilder endPoint = new StringBuilder(); + if(ObjectUtil.isNotEmpty(index)){ + endPoint.append(index).append("/"); + } + if(ObjectUtil.isNotEmpty(type)){ + endPoint.append(type).append("/"); + } + endPoint.append("_bulk"); + endPoint.append("?refresh=true"); + logger.debug(entity); + return performRequest(method,endPoint.toString(),entity); + } + + private static Response performRequest(String method, String endpoint, String entity) throws IOException { + //logger.info(method + " " + endpoint); + Request request = new Request(method,endpoint); + if(ObjectUtil.isNotEmpty(entity)){ + request.setEntity(new NStringEntity(entity,"utf-8")); + } + + if(ObjectUtil.isNotEmpty(username) && ObjectUtil.isNotEmpty(password)){ + RequestOptions.Builder builder = RequestOptions.DEFAULT.toBuilder(); + String token = username.concat(":").concat(password); + String base64encode = Base64.getEncoder().encodeToString(token.getBytes("utf-8")); + builder.addHeader("Authorization", "Basic " + base64encode ); + request.setOptions(builder.build()); + } + + + Response response = client.performRequest(request); + logger.debug(response.toString()); + return response; + } + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/event/UserEvent.java b/casic-data/src/main/java/com/casic/missiles/modular/system/event/UserEvent.java deleted file mode 100644 index c6ed867..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/event/UserEvent.java +++ /dev/null @@ -1,23 +0,0 @@ -package com.casic.missiles.modular.system.event; - -import com.casic.missiles.model.application.event.core.ModelEvent; -import com.casic.missiles.model.application.event.type.AbstractEventTypeEnum; -import com.casic.missiles.modular.system.model.User; - -/** - * 用户事件 - * - * @author lwh - */ -public class UserEvent extends ModelEvent { - /** - * Create a new {@code ApplicationEvent}. - * - * @param type 事件类型 - * @param source the object on which the event initially occurred or with - * which the event is associated (never {@code null}) - */ - public UserEvent(AbstractEventTypeEnum type, User source) { - super(type, source); - } -} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/event/listener/UserOneListener.java b/casic-data/src/main/java/com/casic/missiles/modular/system/event/listener/UserOneListener.java deleted file mode 100644 index 4480ef2..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/event/listener/UserOneListener.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.casic.missiles.modular.system.event.listener; - -import com.casic.missiles.core.application.event.UserLoginEvent; -import lombok.extern.slf4j.Slf4j; -import org.springframework.context.event.EventListener; -import org.springframework.stereotype.Component; - -/** - * 用户事件订阅 - * - * @author lwh - */ -@Slf4j -@Component -public class UserOneListener { - @EventListener - public void onApplicationEvent(UserLoginEvent event) { - log.debug("用户1订阅:{}", event); - } -} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/event/listener/UserTwoListener.java b/casic-data/src/main/java/com/casic/missiles/modular/system/event/listener/UserTwoListener.java deleted file mode 100644 index 8447a22..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/event/listener/UserTwoListener.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.casic.missiles.modular.system.event.listener; - -import com.casic.missiles.model.application.event.core.EventSubscriber; -import com.casic.missiles.modular.system.event.UserEvent; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Component; - -/** - * 用户事件订阅 - * - * @author lwh - */ -@Slf4j -@Component -public class UserTwoListener extends EventSubscriber { - @Override - public void onApplicationEvent(UserEvent event) { - log.debug("用户2订阅:{}", event); - } -} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/service/IAlarmRecordService.java b/casic-data/src/main/java/com/casic/missiles/modular/system/service/IAlarmRecordService.java index e0800ae..0bf85d8 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/service/IAlarmRecordService.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/service/IAlarmRecordService.java @@ -1,5 +1,7 @@ package com.casic.missiles.modular.system.service; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.AlarmRecordRequest; import com.casic.missiles.modular.system.model.AlarmRecord; import com.baomidou.mybatisplus.extension.service.IService; @@ -13,4 +15,6 @@ */ public interface IAlarmRecordService extends IService { + Page pageList(Page page, AlarmRecordRequest request); + } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/service/IDataGasService.java b/casic-data/src/main/java/com/casic/missiles/modular/system/service/IDataGasService.java index afb913d..e644294 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/service/IDataGasService.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/service/IDataGasService.java @@ -1,8 +1,11 @@ package com.casic.missiles.modular.system.service; +import com.casic.missiles.modular.system.es.DataGasEs; import com.casic.missiles.modular.system.model.DataGas; import com.baomidou.mybatisplus.extension.service.IService; +import java.io.IOException; + /** *

* 甲烷实时数据表 服务类 @@ -12,5 +15,5 @@ * @since 2023-04-18 */ public interface IDataGasService extends IService { - + void insertDataGasEs(DataGasEs dataGasEs) throws IOException; } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/service/impl/AlarmRecordServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/system/service/impl/AlarmRecordServiceImpl.java index 2d9eb88..1dce8d5 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/service/impl/AlarmRecordServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/service/impl/AlarmRecordServiceImpl.java @@ -1,9 +1,15 @@ package com.casic.missiles.modular.system.service.impl; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.modular.system.dto.AlarmRecordRequest; import com.casic.missiles.modular.system.model.AlarmRecord; import com.casic.missiles.modular.system.dao.AlarmRecordMapper; import com.casic.missiles.modular.system.service.IAlarmRecordService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; /** @@ -17,4 +23,19 @@ @Service public class AlarmRecordServiceImpl extends ServiceImpl implements IAlarmRecordService { + + @Autowired + private AbstractPermissionContext permissionContext; +// @Autowired +// private ICasicUserService casicUserService; + + + @Override + public Page pageList(Page page, AlarmRecordRequest request) { + +// ShiroUser currentUser = permissionContext.getUserService().; + AuthUser user =permissionContext.getAuthService().getLoginUser(); + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + return null; + } } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/service/impl/DataGasServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/system/service/impl/DataGasServiceImpl.java index 4a11b07..1aa01e5 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/service/impl/DataGasServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/service/impl/DataGasServiceImpl.java @@ -1,11 +1,16 @@ package com.casic.missiles.modular.system.service.impl; +import com.casic.missiles.modular.system.consts.DataConst; +import com.casic.missiles.modular.system.es.DataGasEs; +import com.casic.missiles.modular.system.es.ElasticSearchUtil; import com.casic.missiles.modular.system.model.DataGas; import com.casic.missiles.modular.system.dao.DataGasMapper; import com.casic.missiles.modular.system.service.IDataGasService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.stereotype.Service; +import java.io.IOException; + /** *

* 甲烷实时数据表 服务实现类 @@ -17,4 +22,8 @@ @Service public class DataGasServiceImpl extends ServiceImpl implements IDataGasService { + @Override + public void insertDataGasEs(DataGasEs dataGasEs) throws IOException { + ElasticSearchUtil.addDocumentById(DataConst.DATA_GAS_ES_INDEX, DataConst.DATA_GAS_ES_TYPE, null, dataGasEs); + } } diff --git a/casic-server/pom.xml b/casic-server/pom.xml index 66af78a..9981283 100644 --- a/casic-server/pom.xml +++ b/casic-server/pom.xml @@ -77,6 +77,18 @@ **/*.xml + + ${project.basedir}/lib + + * + + + + src/main/resources/config/hiklib + + * + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/task/CollectGasDataTask.java b/casic-server/src/main/java/com/casic/missiles/modular/system/task/CollectGasDataTask.java index d6eb897..84398ca 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/task/CollectGasDataTask.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/task/CollectGasDataTask.java @@ -155,27 +155,4 @@ // } // // -//// class presetRunnable implements Runnable { -//// private String deviceIp; -//// private Integer lineNum; -//// -//// public presetRunnable(String ip, Integer lineNum) { -//// this.deviceIp = ip; -//// this.lineNum = lineNum; -//// } -//// -//// @Override -//// public void run() { -//// // 每隔2小时执行复位操作,并启动巡航 -//// while (true) { -//// try { -//// ihcNetService.preset(deviceIp,lineNum); -//// Thread.sleep(presetInterval * 2000); -//// } catch (InterruptedException e) { -//// e.printStackTrace(); -//// } -//// } -//// } -//// } -// //} diff --git a/casic-web/pom.xml b/casic-web/pom.xml index 39602e3..14e5aa4 100644 --- a/casic-web/pom.xml +++ b/casic-web/pom.xml @@ -10,7 +10,7 @@ casic-web 2.0.0 - war + jar casic-web casic web启动入口 diff --git a/casic-web/src/main/resources/config/application-dev.yml b/casic-web/src/main/resources/config/application-dev.yml index 7fa56d0..a621c2c 100644 --- a/casic-web/src/main/resources/config/application-dev.yml +++ b/casic-web/src/main/resources/config/application-dev.yml @@ -1,6 +1,7 @@ server: port: 11306 - context-path: /pan-tilt + servlet: + context-path: /pan-tilt ################### spring配置 ################### spring: datasource: diff --git a/pom.xml b/pom.xml index 6b35e2e..65fda33 100644 --- a/pom.xml +++ b/pom.xml @@ -11,6 +11,7 @@ casic-server casic-station casic-data + casic-common com.casic