From 3a0f24e5517b574a203cec8088fdd3d9165862aa Mon Sep 17 00:00:00 2001 From: ‘liusuyi’ <1951119284@qq.com> Date: 星期二, 06 六月 2023 17:05:24 +0800 Subject: [PATCH] 增加管线泄露报警入库 --- ard-work/src/main/java/com/ruoyi/utils/mqtt/MqttConsumer.java | 174 ++++++++ ard-work/src/main/java/com/ruoyi/alarm/globalAlarm/service/IGlobalAlarmService.java | 2 ard-work/src/main/java/com/ruoyi/utils/mqtt/PropertiesUtil.java | 54 ++ ard-work/src/main/java/com/ruoyi/inspect/service/impl/ArdVideoInspectTaskStepServiceImpl.java | 4 ard-work/src/main/java/com/ruoyi/config/AsyncConfiguration.java | 23 + ard-work/src/main/resources/mapper/alarm/ArdAlarmTubeMapper.xml | 117 +++++ ard-work/src/main/java/com/ruoyi/alarm/tubeAlarm/service/impl/ArdAlarmTubeServiceImpl.java | 90 ++++ ruoyi-admin/src/main/resources/application.yml | 2 ard-work/src/main/resources/mapper/inspect/ArdVideoInspectRecordMapper.xml | 4 ard-work/pom.xml | 6 ard-work/src/main/java/com/ruoyi/alarm/tubeAlarm/mapper/ArdAlarmTubeMapper.java | 62 ++ ard-work/src/main/java/com/ruoyi/alarm/tubeAlarm/service/IArdAlarmTubeService.java | 62 ++ ard-work/src/main/resources/mapper/alarmpoints/ArdTubesDetailsMapper.xml | 2 ruoyi-admin/src/main/resources/application-druid.yml | 10 ard-work/src/main/java/com/ruoyi/alarm/globalAlarm/service/GlobalAlarmServiceImpl.java | 42 + ard-work/src/main/java/com/ruoyi/alarm/tubeAlarm/domain/ArdAlarmTube.java | 210 ++++++++++ ruoyi-admin/src/main/resources/logback.xml | 19 ruoyi-framework/src/main/java/com/ruoyi/framework/aspectj/LogAspect.java | 116 ++--- ard-work/src/main/java/com/ruoyi/inspect/service/impl/ArdVideoInspectTaskServiceImpl.java | 2 ruoyi-admin/src/main/resources/application-ard.yml | 12 ard-work/src/main/java/com/ruoyi/alarm/tubeAlarm/controller/ArdAlarmTubeController.java | 105 +++++ ard-work/src/main/java/com/ruoyi/utils/mqtt/MqttConsumerCallback.java | 100 ++++ 22 files changed, 1,131 insertions(+), 87 deletions(-) diff --git a/ard-work/pom.xml b/ard-work/pom.xml index 2b2665c..004fd48 100644 --- a/ard-work/pom.xml +++ b/ard-work/pom.xml @@ -77,6 +77,12 @@ <artifactId>forest-spring-boot-starter</artifactId> <version>1.5.22</version> </dependency> + <!--mqtt--> + <dependency> + <groupId>org.springframework.integration</groupId> + <artifactId>spring-integration-mqtt</artifactId> + <version>6.0.3</version> + </dependency> <dependency> <groupId>com.ruoyi</groupId> <artifactId>ruoyi-system</artifactId> diff --git a/ard-work/src/main/java/com/ruoyi/alarm/globalAlarm/service/GlobalAlarmServiceImpl.java b/ard-work/src/main/java/com/ruoyi/alarm/globalAlarm/service/GlobalAlarmServiceImpl.java index 823bd40..bf0c6cd 100644 --- a/ard-work/src/main/java/com/ruoyi/alarm/globalAlarm/service/GlobalAlarmServiceImpl.java +++ b/ard-work/src/main/java/com/ruoyi/alarm/globalAlarm/service/GlobalAlarmServiceImpl.java @@ -1,8 +1,18 @@ package com.ruoyi.alarm.globalAlarm.service; +import com.alibaba.fastjson2.JSONObject; import com.ruoyi.alarm.globalAlarm.domain.GlobalAlarmCondition; import com.ruoyi.alarm.stealAlarm.domain.ArdAlarmStealelec; import com.ruoyi.alarm.stealAlarm.mapper.ArdAlarmStealelecMapper; +import com.ruoyi.alarm.tubeAlarm.domain.ArdAlarmTube; +import com.ruoyi.alarm.tubeAlarm.mapper.ArdAlarmTubeMapper; +import com.ruoyi.alarm.tubeAlarm.service.IArdAlarmTubeService; +import com.ruoyi.alarmpoints.tube.domain.ArdTubes; +import com.ruoyi.alarmpoints.tube.domain.ArdTubesDetails; +import com.ruoyi.alarmpoints.tube.mapper.ArdTubesDetailsMapper; +import com.ruoyi.alarmpoints.tube.mapper.ArdTubesMapper; +import com.ruoyi.common.utils.uuid.UUID; +import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Service; import javax.annotation.Resource; @@ -20,7 +30,12 @@ public class GlobalAlarmServiceImpl implements IGlobalAlarmService { @Resource ArdAlarmStealelecMapper ardAlarmStealelecMapper; - + @Resource + IArdAlarmTubeService ardAlarmTubeService; + @Resource + ArdTubesMapper ardTubesMapper; + @Resource + ArdTubesDetailsMapper ardTubesDetailsMapper; @Override public List<Object> selectAlarmLogs(GlobalAlarmCondition condition) { switch (condition.getCommand()) { @@ -32,4 +47,29 @@ } } + @Override + @Async("alarmExecutor") + public void receiveAlarm(String topic,String message) + { + switch (topic) + { + case "tube": + ArdAlarmTube ardAlarmTube = JSONObject.parseObject(message,ArdAlarmTube.class); + ardAlarmTube.setId(UUID.randomUUID().toString().replace("-","")); + ArdTubesDetails atd=new ArdTubesDetails(); + atd.setReelNumber(ardAlarmTube.getTubeId()); + List<ArdTubesDetails> ardTubesDetails = ardTubesDetailsMapper.selectArdTubesDetailsList(atd); + if(ardTubesDetails.size()>0) + { + String tubeId = ardTubesDetails.get(0).getTubeId(); + ArdTubes ardTubes = ardTubesMapper.selectArdTubesById(tubeId); + ardAlarmTube.setTubeName(ardTubes.getName()); + ardAlarmTube.setColor(ardTubes.getColor()); + ardAlarmTube.setPipeDiameter(ardTubes.getPipeDiameter()); + ardAlarmTube.setTubeType(ardTubes.getType()); + } + int i = ardAlarmTubeService.insertArdAlarmTube(ardAlarmTube); + break; + } + } } diff --git a/ard-work/src/main/java/com/ruoyi/alarm/globalAlarm/service/IGlobalAlarmService.java b/ard-work/src/main/java/com/ruoyi/alarm/globalAlarm/service/IGlobalAlarmService.java index 633c937..d376822 100644 --- a/ard-work/src/main/java/com/ruoyi/alarm/globalAlarm/service/IGlobalAlarmService.java +++ b/ard-work/src/main/java/com/ruoyi/alarm/globalAlarm/service/IGlobalAlarmService.java @@ -13,4 +13,6 @@ **/ public interface IGlobalAlarmService { public List<Object> selectAlarmLogs(GlobalAlarmCondition condition); + + public void receiveAlarm(String topic,String message); } diff --git a/ard-work/src/main/java/com/ruoyi/alarm/tubeAlarm/controller/ArdAlarmTubeController.java b/ard-work/src/main/java/com/ruoyi/alarm/tubeAlarm/controller/ArdAlarmTubeController.java new file mode 100644 index 0000000..5b74143 --- /dev/null +++ b/ard-work/src/main/java/com/ruoyi/alarm/tubeAlarm/controller/ArdAlarmTubeController.java @@ -0,0 +1,105 @@ +package com.ruoyi.alarm.tubeAlarm.controller; + +import java.util.List; +import javax.servlet.http.HttpServletResponse; + +import com.ruoyi.alarm.tubeAlarm.domain.ArdAlarmTube; +import com.ruoyi.alarm.tubeAlarm.service.IArdAlarmTubeService; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; +import com.ruoyi.common.annotation.Log; +import com.ruoyi.common.core.controller.BaseController; +import com.ruoyi.common.core.domain.AjaxResult; +import com.ruoyi.common.enums.BusinessType; +import com.ruoyi.common.utils.poi.ExcelUtil; +import com.ruoyi.common.core.page.TableDataInfo; + +/** + * 绠$嚎娉勯湶鎶ヨController + * + * @author 鍒樿嫃涔� + * @date 2023-06-06 + */ +@RestController +@RequestMapping("/alarm/tubeAlarm") +public class ArdAlarmTubeController extends BaseController +{ + @Autowired + private IArdAlarmTubeService ardAlarmTubeService; + + /** + * 鏌ヨ绠$嚎娉勯湶鎶ヨ鍒楄〃 + */ + @PreAuthorize("@ss.hasPermi('alarm:tubeAlarm:list')") + @GetMapping("/list") + public TableDataInfo list(ArdAlarmTube ardAlarmTube) + { + startPage(); + List<ArdAlarmTube> list = ardAlarmTubeService.selectArdAlarmTubeList(ardAlarmTube); + return getDataTable(list); + } + + /** + * 瀵煎嚭绠$嚎娉勯湶鎶ヨ鍒楄〃 + */ + @PreAuthorize("@ss.hasPermi('alarm:tubeAlarm:export')") + @Log(title = "绠$嚎娉勯湶鎶ヨ", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(HttpServletResponse response, ArdAlarmTube ardAlarmTube) + { + List<ArdAlarmTube> list = ardAlarmTubeService.selectArdAlarmTubeList(ardAlarmTube); + ExcelUtil<ArdAlarmTube> util = new ExcelUtil<ArdAlarmTube>(ArdAlarmTube.class); + util.exportExcel(response, list, "绠$嚎娉勯湶鎶ヨ鏁版嵁"); + } + + /** + * 鑾峰彇绠$嚎娉勯湶鎶ヨ璇︾粏淇℃伅 + */ + @PreAuthorize("@ss.hasPermi('alarm:tubeAlarm:query')") + @GetMapping(value = "/{id}") + public AjaxResult getInfo(@PathVariable("id") String id) + { + return success(ardAlarmTubeService.selectArdAlarmTubeById(id)); + } + + /** + * 鏂板绠$嚎娉勯湶鎶ヨ + */ + @PreAuthorize("@ss.hasPermi('alarm:tubeAlarm:add')") + @Log(title = "绠$嚎娉勯湶鎶ヨ", businessType = BusinessType.INSERT) + @PostMapping + public AjaxResult add(@RequestBody ArdAlarmTube ardAlarmTube) + { + return toAjax(ardAlarmTubeService.insertArdAlarmTube(ardAlarmTube)); + } + + /** + * 淇敼绠$嚎娉勯湶鎶ヨ + */ + @PreAuthorize("@ss.hasPermi('alarm:tubeAlarm:edit')") + @Log(title = "绠$嚎娉勯湶鎶ヨ", businessType = BusinessType.UPDATE) + @PutMapping + public AjaxResult edit(@RequestBody ArdAlarmTube ardAlarmTube) + { + return toAjax(ardAlarmTubeService.updateArdAlarmTube(ardAlarmTube)); + } + + /** + * 鍒犻櫎绠$嚎娉勯湶鎶ヨ + */ + @PreAuthorize("@ss.hasPermi('alarm:tubeAlarm:remove')") + @Log(title = "绠$嚎娉勯湶鎶ヨ", businessType = BusinessType.DELETE) + @DeleteMapping("/{ids}") + public AjaxResult remove(@PathVariable String[] ids) + { + return toAjax(ardAlarmTubeService.deleteArdAlarmTubeByIds(ids)); + } +} diff --git a/ard-work/src/main/java/com/ruoyi/alarm/tubeAlarm/domain/ArdAlarmTube.java b/ard-work/src/main/java/com/ruoyi/alarm/tubeAlarm/domain/ArdAlarmTube.java new file mode 100644 index 0000000..0912d84 --- /dev/null +++ b/ard-work/src/main/java/com/ruoyi/alarm/tubeAlarm/domain/ArdAlarmTube.java @@ -0,0 +1,210 @@ +package com.ruoyi.alarm.tubeAlarm.domain; + +import java.util.Date; +import com.fasterxml.jackson.annotation.JsonFormat; +import org.apache.commons.lang3.builder.ToStringBuilder; +import org.apache.commons.lang3.builder.ToStringStyle; +import com.ruoyi.common.annotation.Excel; +import com.ruoyi.common.core.domain.BaseEntity; + +/** + * 绠$嚎娉勯湶鎶ヨ瀵硅薄 ard_alarm_tube + * + * @author 鍒樿嫃涔� + * @date 2023-06-06 + */ +public class ArdAlarmTube extends BaseEntity +{ + private static final long serialVersionUID = 1L; + + /** 涓婚敭 */ + private String id; + + /** 鎶ヨ涓绘満 */ + @Excel(name = "鎶ヨ涓绘満") + private String host; + + /** 绠$嚎id */ + @Excel(name = "绠$嚎id") + private String tubeId; + + /** 绠$嚎鍚嶇О */ + @Excel(name = "绠$嚎鍚嶇О") + private String tubeName; + + /** 绠$嚎绫诲瀷-娌圭-姘寸 */ + @Excel(name = "绠$嚎绫诲瀷-娌圭-姘寸") + private String tubeType; + + /** 绠″緞 */ + @Excel(name = "绠″緞") + private String pipeDiameter; + + /** 棰滆壊 */ + @Excel(name = "棰滆壊") + private String color; + + /** 浣嶇疆 */ + @Excel(name = "浣嶇疆") + private String position; + + /** 绫诲瀷GXALARM */ + @Excel(name = "绫诲瀷GXALARM") + private String type; + + /** 绫诲瀷涓枃 */ + @Excel(name = "绫诲瀷涓枃") + private String alarmType; + + /** 鎶ヨ鏃堕棿 */ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @Excel(name = "鎶ヨ鏃堕棿", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") + private Date alarmTime; + + /** 鐢ㄦ埛鍚� */ + @Excel(name = "鐢ㄦ埛鍚�") + private String watcher; + + /** 鏌ョ湅鏃堕棿 */ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @Excel(name = "鏌ョ湅鏃堕棿", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") + private Date viewTime; + + public void setId(String id) + { + this.id = id; + } + + public String getId() + { + return id; + } + public void setHost(String host) + { + this.host = host; + } + + public String getHost() + { + return host; + } + public void setTubeId(String tubeId) + { + this.tubeId = tubeId; + } + + public String getTubeId() + { + return tubeId; + } + public void setTubeName(String tubeName) + { + this.tubeName = tubeName; + } + + public String getTubeName() + { + return tubeName; + } + public void setTubeType(String tubeType) + { + this.tubeType = tubeType; + } + + public String getTubeType() + { + return tubeType; + } + public void setPipeDiameter(String pipeDiameter) + { + this.pipeDiameter = pipeDiameter; + } + + public String getPipeDiameter() + { + return pipeDiameter; + } + public void setColor(String color) + { + this.color = color; + } + + public String getColor() + { + return color; + } + public void setPosition(String position) + { + this.position = position; + } + + public String getPosition() + { + return position; + } + public void setType(String type) + { + this.type = type; + } + + public String getType() + { + return type; + } + public void setAlarmType(String alarmType) + { + this.alarmType = alarmType; + } + + public String getAlarmType() + { + return alarmType; + } + public void setAlarmTime(Date alarmTime) + { + this.alarmTime = alarmTime; + } + + public Date getAlarmTime() + { + return alarmTime; + } + public void setWatcher(String watcher) + { + this.watcher = watcher; + } + + public String getWatcher() + { + return watcher; + } + public void setViewTime(Date viewTime) + { + this.viewTime = viewTime; + } + + public Date getViewTime() + { + return viewTime; + } + + @Override + public String toString() { + return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) + .append("id", getId()) + .append("host", getHost()) + .append("tubeId", getTubeId()) + .append("tubeName", getTubeName()) + .append("tubeType", getTubeType()) + .append("pipeDiameter", getPipeDiameter()) + .append("color", getColor()) + .append("position", getPosition()) + .append("type", getType()) + .append("alarmType", getAlarmType()) + .append("alarmTime", getAlarmTime()) + .append("watcher", getWatcher()) + .append("createTime", getCreateTime()) + .append("viewTime", getViewTime()) + .toString(); + } +} diff --git a/ard-work/src/main/java/com/ruoyi/alarm/tubeAlarm/mapper/ArdAlarmTubeMapper.java b/ard-work/src/main/java/com/ruoyi/alarm/tubeAlarm/mapper/ArdAlarmTubeMapper.java new file mode 100644 index 0000000..3347f00 --- /dev/null +++ b/ard-work/src/main/java/com/ruoyi/alarm/tubeAlarm/mapper/ArdAlarmTubeMapper.java @@ -0,0 +1,62 @@ +package com.ruoyi.alarm.tubeAlarm.mapper; + +import java.util.List; +import com.ruoyi.alarm.tubeAlarm.domain.ArdAlarmTube; + + +/** + * 绠$嚎娉勯湶鎶ヨMapper鎺ュ彛 + * + * @author 鍒樿嫃涔� + * @date 2023-06-06 + */ +public interface ArdAlarmTubeMapper +{ + /** + * 鏌ヨ绠$嚎娉勯湶鎶ヨ + * + * @param id 绠$嚎娉勯湶鎶ヨ涓婚敭 + * @return 绠$嚎娉勯湶鎶ヨ + */ + public ArdAlarmTube selectArdAlarmTubeById(String id); + + /** + * 鏌ヨ绠$嚎娉勯湶鎶ヨ鍒楄〃 + * + * @param ardAlarmTube 绠$嚎娉勯湶鎶ヨ + * @return 绠$嚎娉勯湶鎶ヨ闆嗗悎 + */ + public List<ArdAlarmTube> selectArdAlarmTubeList(ArdAlarmTube ardAlarmTube); + + /** + * 鏂板绠$嚎娉勯湶鎶ヨ + * + * @param ardAlarmTube 绠$嚎娉勯湶鎶ヨ + * @return 缁撴灉 + */ + public int insertArdAlarmTube(ArdAlarmTube ardAlarmTube); + + /** + * 淇敼绠$嚎娉勯湶鎶ヨ + * + * @param ardAlarmTube 绠$嚎娉勯湶鎶ヨ + * @return 缁撴灉 + */ + public int updateArdAlarmTube(ArdAlarmTube ardAlarmTube); + + /** + * 鍒犻櫎绠$嚎娉勯湶鎶ヨ + * + * @param id 绠$嚎娉勯湶鎶ヨ涓婚敭 + * @return 缁撴灉 + */ + public int deleteArdAlarmTubeById(String id); + + /** + * 鎵归噺鍒犻櫎绠$嚎娉勯湶鎶ヨ + * + * @param ids 闇�瑕佸垹闄ょ殑鏁版嵁涓婚敭闆嗗悎 + * @return 缁撴灉 + */ + public int deleteArdAlarmTubeByIds(String[] ids); +} diff --git a/ard-work/src/main/java/com/ruoyi/alarm/tubeAlarm/service/IArdAlarmTubeService.java b/ard-work/src/main/java/com/ruoyi/alarm/tubeAlarm/service/IArdAlarmTubeService.java new file mode 100644 index 0000000..007cb65 --- /dev/null +++ b/ard-work/src/main/java/com/ruoyi/alarm/tubeAlarm/service/IArdAlarmTubeService.java @@ -0,0 +1,62 @@ +package com.ruoyi.alarm.tubeAlarm.service; + +import java.util.List; + +import com.ruoyi.alarm.tubeAlarm.domain.ArdAlarmTube; + +/** + * 绠$嚎娉勯湶鎶ヨService鎺ュ彛 + * + * @author 鍒樿嫃涔� + * @date 2023-06-06 + */ +public interface IArdAlarmTubeService +{ + /** + * 鏌ヨ绠$嚎娉勯湶鎶ヨ + * + * @param id 绠$嚎娉勯湶鎶ヨ涓婚敭 + * @return 绠$嚎娉勯湶鎶ヨ + */ + public ArdAlarmTube selectArdAlarmTubeById(String id); + + /** + * 鏌ヨ绠$嚎娉勯湶鎶ヨ鍒楄〃 + * + * @param ardAlarmTube 绠$嚎娉勯湶鎶ヨ + * @return 绠$嚎娉勯湶鎶ヨ闆嗗悎 + */ + public List<ArdAlarmTube> selectArdAlarmTubeList(ArdAlarmTube ardAlarmTube); + + /** + * 鏂板绠$嚎娉勯湶鎶ヨ + * + * @param ardAlarmTube 绠$嚎娉勯湶鎶ヨ + * @return 缁撴灉 + */ + public int insertArdAlarmTube(ArdAlarmTube ardAlarmTube); + + /** + * 淇敼绠$嚎娉勯湶鎶ヨ + * + * @param ardAlarmTube 绠$嚎娉勯湶鎶ヨ + * @return 缁撴灉 + */ + public int updateArdAlarmTube(ArdAlarmTube ardAlarmTube); + + /** + * 鎵归噺鍒犻櫎绠$嚎娉勯湶鎶ヨ + * + * @param ids 闇�瑕佸垹闄ょ殑绠$嚎娉勯湶鎶ヨ涓婚敭闆嗗悎 + * @return 缁撴灉 + */ + public int deleteArdAlarmTubeByIds(String[] ids); + + /** + * 鍒犻櫎绠$嚎娉勯湶鎶ヨ淇℃伅 + * + * @param id 绠$嚎娉勯湶鎶ヨ涓婚敭 + * @return 缁撴灉 + */ + public int deleteArdAlarmTubeById(String id); +} diff --git a/ard-work/src/main/java/com/ruoyi/alarm/tubeAlarm/service/impl/ArdAlarmTubeServiceImpl.java b/ard-work/src/main/java/com/ruoyi/alarm/tubeAlarm/service/impl/ArdAlarmTubeServiceImpl.java new file mode 100644 index 0000000..3b07736 --- /dev/null +++ b/ard-work/src/main/java/com/ruoyi/alarm/tubeAlarm/service/impl/ArdAlarmTubeServiceImpl.java @@ -0,0 +1,90 @@ +package com.ruoyi.alarm.tubeAlarm.service.impl; + +import com.ruoyi.alarm.tubeAlarm.domain.ArdAlarmTube; +import com.ruoyi.alarm.tubeAlarm.mapper.ArdAlarmTubeMapper; +import com.ruoyi.alarm.tubeAlarm.service.IArdAlarmTubeService; +import com.ruoyi.common.utils.DateUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + + +/** + * 绠$嚎娉勯湶鎶ヨService涓氬姟灞傚鐞� + * + * @author 鍒樿嫃涔� + * @date 2023-06-06 + */ +@Service +public class ArdAlarmTubeServiceImpl implements IArdAlarmTubeService { + @Autowired + private ArdAlarmTubeMapper ardAlarmTubeMapper; + + /** + * 鏌ヨ绠$嚎娉勯湶鎶ヨ + * + * @param id 绠$嚎娉勯湶鎶ヨ涓婚敭 + * @return 绠$嚎娉勯湶鎶ヨ + */ + @Override + public ArdAlarmTube selectArdAlarmTubeById(String id) { + return ardAlarmTubeMapper.selectArdAlarmTubeById(id); + } + + /** + * 鏌ヨ绠$嚎娉勯湶鎶ヨ鍒楄〃 + * + * @param ardAlarmTube 绠$嚎娉勯湶鎶ヨ + * @return 绠$嚎娉勯湶鎶ヨ + */ + @Override + public List<ArdAlarmTube> selectArdAlarmTubeList(ArdAlarmTube ardAlarmTube) { + return ardAlarmTubeMapper.selectArdAlarmTubeList(ardAlarmTube); + } + + /** + * 鏂板绠$嚎娉勯湶鎶ヨ + * + * @param ardAlarmTube 绠$嚎娉勯湶鎶ヨ + * @return 缁撴灉 + */ + @Override + public int insertArdAlarmTube(ArdAlarmTube ardAlarmTube) { + ardAlarmTube.setCreateTime(DateUtils.getNowDate()); + return ardAlarmTubeMapper.insertArdAlarmTube(ardAlarmTube); + } + + /** + * 淇敼绠$嚎娉勯湶鎶ヨ + * + * @param ardAlarmTube 绠$嚎娉勯湶鎶ヨ + * @return 缁撴灉 + */ + @Override + public int updateArdAlarmTube(ArdAlarmTube ardAlarmTube) { + return ardAlarmTubeMapper.updateArdAlarmTube(ardAlarmTube); + } + + /** + * 鎵归噺鍒犻櫎绠$嚎娉勯湶鎶ヨ + * + * @param ids 闇�瑕佸垹闄ょ殑绠$嚎娉勯湶鎶ヨ涓婚敭 + * @return 缁撴灉 + */ + @Override + public int deleteArdAlarmTubeByIds(String[] ids) { + return ardAlarmTubeMapper.deleteArdAlarmTubeByIds(ids); + } + + /** + * 鍒犻櫎绠$嚎娉勯湶鎶ヨ淇℃伅 + * + * @param id 绠$嚎娉勯湶鎶ヨ涓婚敭 + * @return 缁撴灉 + */ + @Override + public int deleteArdAlarmTubeById(String id) { + return ardAlarmTubeMapper.deleteArdAlarmTubeById(id); + } +} diff --git a/ard-work/src/main/java/com/ruoyi/device/hiksdk/config/AsyncConfiguration.java b/ard-work/src/main/java/com/ruoyi/config/AsyncConfiguration.java similarity index 61% rename from ard-work/src/main/java/com/ruoyi/device/hiksdk/config/AsyncConfiguration.java rename to ard-work/src/main/java/com/ruoyi/config/AsyncConfiguration.java index e6274ab..2f1cf49 100644 --- a/ard-work/src/main/java/com/ruoyi/device/hiksdk/config/AsyncConfiguration.java +++ b/ard-work/src/main/java/com/ruoyi/config/AsyncConfiguration.java @@ -1,4 +1,4 @@ -package com.ruoyi.device.hiksdk.config; +package com.ruoyi.config; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @@ -38,4 +38,25 @@ executor.initialize(); return executor; } + @Bean("alarmExecutor") + public Executor alarmExecutor(){ + ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor(); + //閰嶇疆鏍稿績绾跨▼鏁� + executor.setCorePoolSize(15); + //閰嶇疆鏈�澶х嚎绋嬫暟 + executor.setMaxPoolSize(30); + //閰嶇疆闃熷垪澶у皬 + executor.setQueueCapacity(1000); + //绾跨▼鐨勫悕绉板墠缂� + executor.setThreadNamePrefix("alarmExecutor-"); + //绾跨▼娲昏穬鏃堕棿锛堢锛� + //executor.setKeepAliveSeconds(60); + //绛夊緟鎵�鏈変换鍔$粨鏉熷悗鍐嶅叧闂嚎绋嬫睜 + executor.setWaitForTasksToCompleteOnShutdown(true); + //璁剧疆鎷掔粷绛栫暐 + //executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy()); + //鎵ц鍒濆鍖� + executor.initialize(); + return executor; + } } diff --git a/ard-work/src/main/java/com/ruoyi/inspect/service/impl/ArdVideoInspectTaskServiceImpl.java b/ard-work/src/main/java/com/ruoyi/inspect/service/impl/ArdVideoInspectTaskServiceImpl.java index 19077f2..ba0dfcf 100644 --- a/ard-work/src/main/java/com/ruoyi/inspect/service/impl/ArdVideoInspectTaskServiceImpl.java +++ b/ard-work/src/main/java/com/ruoyi/inspect/service/impl/ArdVideoInspectTaskServiceImpl.java @@ -642,4 +642,4 @@ return timeList; } -} \ No newline at end of file +} diff --git a/ard-work/src/main/java/com/ruoyi/inspect/service/impl/ArdVideoInspectTaskStepServiceImpl.java b/ard-work/src/main/java/com/ruoyi/inspect/service/impl/ArdVideoInspectTaskStepServiceImpl.java index a610283..4b02b0a 100644 --- a/ard-work/src/main/java/com/ruoyi/inspect/service/impl/ArdVideoInspectTaskStepServiceImpl.java +++ b/ard-work/src/main/java/com/ruoyi/inspect/service/impl/ArdVideoInspectTaskStepServiceImpl.java @@ -9,6 +9,8 @@ import com.ruoyi.inspect.domain.ArdVideoInspectTaskStep; import com.ruoyi.inspect.service.IArdVideoInspectTaskStepService; +import javax.annotation.Resource; + /** * 瑙嗛宸℃姝ラService涓氬姟灞傚鐞� * @@ -17,7 +19,7 @@ */ @Service public class ArdVideoInspectTaskStepServiceImpl implements IArdVideoInspectTaskStepService { - @Autowired + @Resource private ArdVideoInspectTaskStepMapper ardVideoInspectTaskStepMapper; /** diff --git a/ard-work/src/main/java/com/ruoyi/utils/mqtt/MqttConsumer.java b/ard-work/src/main/java/com/ruoyi/utils/mqtt/MqttConsumer.java new file mode 100644 index 0000000..3c36909 --- /dev/null +++ b/ard-work/src/main/java/com/ruoyi/utils/mqtt/MqttConsumer.java @@ -0,0 +1,174 @@ +package com.ruoyi.utils.mqtt; + +import lombok.extern.slf4j.Slf4j; +import org.eclipse.paho.client.mqttv3.*; +import org.eclipse.paho.client.mqttv3.persist.MemoryPersistence; +import org.springframework.boot.ApplicationArguments; +import org.springframework.boot.ApplicationRunner; +import org.springframework.stereotype.Component; +import java.io.UnsupportedEncodingException; +/** + * @Description: mqtt娑堣垂瀹㈡埛绔� + * @ClassName: MqttConsumer + * @Author: 鍒樿嫃涔� + * @Date: 2023骞�05鏈�29鏃�9:55 + * @Version: 1.0 + **/ +@Component +@Slf4j(topic = "mqtt") +public class MqttConsumer implements ApplicationRunner { + + private static MqttClient client; + + @Override + public void run(ApplicationArguments args) { + log.info("鍒濆鍖栧苟鍚姩mqtt......"); + if(PropertiesUtil.MQTT_ENABLED) + { + this.connect(); + } + } + + /** + * 杩炴帴mqtt鏈嶅姟鍣� + */ + private void connect() { + try { + // 1 鍒涘缓瀹㈡埛绔� + getClient(); + // 2 璁剧疆閰嶇疆 + MqttConnectOptions options = getOptions(); + String[] topic = PropertiesUtil.MQTT_TOPIC.split(","); + // 3 娑堟伅鍙戝竷璐ㄩ噺 + int[] qos = getQos(topic.length); + // 4 鏈�鍚庤缃� + create(options, topic, qos); + } catch (Exception e) { + log.error("mqtt杩炴帴寮傚父锛�" + e); + } + } + + /** + * 鍒涘缓瀹㈡埛绔� --- 1 --- + */ + public void getClient() { + try { + if (null == client) { + client = new MqttClient(PropertiesUtil.MQTT_HOST, PropertiesUtil.MQTT_CLIENT_ID, new MemoryPersistence()); + } + log.info("--鍒涘缓mqtt瀹㈡埛绔�"); + } catch (Exception e) { + log.error("鍒涘缓mqtt瀹㈡埛绔紓甯革細" + e); + } + } + + /** + * 鐢熸垚閰嶇疆瀵硅薄锛岀敤鎴峰悕锛屽瘑鐮佺瓑 --- 2 --- + */ + public MqttConnectOptions getOptions() { + MqttConnectOptions options = new MqttConnectOptions(); + //璁剧疆鐢ㄦ埛鍚嶅瘑鐮� + options.setUserName(PropertiesUtil.MQTT_USER_NAME); + options.setPassword(PropertiesUtil.MQTT_PASSWORD.toCharArray()); + // 璁剧疆瓒呮椂鏃堕棿 + options.setConnectionTimeout(PropertiesUtil.MQTT_TIMEOUT); + // 璁剧疆浼氳瘽蹇冭烦鏃堕棿 + options.setKeepAliveInterval(PropertiesUtil.MQTT_KEEP_ALIVE); + // 鏄惁娓呴櫎session + options.setCleanSession(false); + log.info("--鐢熸垚mqtt閰嶇疆瀵硅薄"); + return options; + } + + /** + * qos --- 3 --- + */ + public int[] getQos(int length) { + + int[] qos = new int[length]; + for (int i = 0; i < length; i++) { + /** + * MQTT鍗忚涓湁涓夌娑堟伅鍙戝竷鏈嶅姟璐ㄩ噺: + * + * QOS0锛� 鈥滆嚦澶氫竴娆♀�濓紝娑堟伅鍙戝竷瀹屽叏渚濊禆搴曞眰 TCP/IP 缃戠粶銆備細鍙戠敓娑堟伅涓㈠け鎴栭噸澶嶃�傝繖涓�绾у埆鍙敤浜庡涓嬫儏鍐碉紝鐜浼犳劅鍣ㄦ暟鎹紝涓㈠け涓�娆¤璁板綍鏃犳墍璋擄紝鍥犱负涓嶄箙鍚庤繕浼氭湁绗簩娆″彂閫併�� + * QOS1锛� 鈥滆嚦灏戜竴娆♀�濓紝纭繚娑堟伅鍒拌揪锛屼絾娑堟伅閲嶅鍙兘浼氬彂鐢熴�� + * QOS2锛� 鈥滃彧鏈変竴娆♀�濓紝纭繚娑堟伅鍒拌揪涓�娆°�傝繖涓�绾у埆鍙敤浜庡涓嬫儏鍐碉紝鍦ㄨ璐圭郴缁熶腑锛屾秷鎭噸澶嶆垨涓㈠け浼氬鑷翠笉姝g‘鐨勭粨鏋滐紝璧勬簮寮�閿�澶� + */ + qos[i] = 1; + } + log.info("--璁剧疆娑堟伅鍙戝竷璐ㄩ噺"); + return qos; + } + + /** + * 瑁呰浇鍚勭瀹炰緥鍜岃闃呬富棰� --- 4 --- + */ + public void create(MqttConnectOptions options, String[] topic, int[] qos) { + try { + client.setCallback(new MqttConsumerCallback(client, options, topic, qos)); + log.info("--娣诲姞鍥炶皟澶勭悊绫�"); + client.connect(options); + } catch (Exception e) { + log.info("瑁呰浇瀹炰緥鎴栬闃呬富棰樺紓甯革細" + e); + } + } + + /** + * 璁㈤槄鏌愪釜涓婚 + * + * @param topic + * @param qos + */ + public void subscribe(String topic, int qos) { + try { + log.info("topic:" + topic); + client.subscribe(topic, qos); + } catch (MqttException e) { + e.printStackTrace(); + } + } + + /** + * 鍙戝竷锛岄潪鎸佷箙鍖� + * + * qos鏍规嵁鏂囨。璁剧疆涓�1 + * + * @param topic + * @param msg + */ + public static void publish(String topic, String msg) { + publish(1, false, topic, msg); + } + + /** + * 鍙戝竷 + */ + public static void publish(int qos, boolean retained, String topic, String pushMessage) { + log.info("銆愪富棰樸��:" + topic + "銆恞os銆�:" + qos + "銆恜ushMessage銆�:" + pushMessage); + MqttMessage message = new MqttMessage(); + message.setQos(qos); + message.setRetained(retained); + try { + message.setPayload(pushMessage.getBytes("UTF-8")); + } catch (UnsupportedEncodingException e) { + log.error("mqtt缂栫爜寮傚父锛�" + e.getMessage()); + } + MqttTopic mTopic = client.getTopic(topic); + if (null == mTopic) { + log.error("topic锛�" + topic + " 涓嶅瓨鍦�"); + } + MqttDeliveryToken token; + try { + token = mTopic.publish(message); + token.waitForCompletion(); + if (token.isComplete()) { + log.info("娑堟伅鍙戦�佹垚鍔�"); + } + } catch (MqttPersistenceException e) { + e.printStackTrace(); + } catch (MqttException e) { + e.printStackTrace(); + } + } +} + diff --git a/ard-work/src/main/java/com/ruoyi/utils/mqtt/MqttConsumerCallback.java b/ard-work/src/main/java/com/ruoyi/utils/mqtt/MqttConsumerCallback.java new file mode 100644 index 0000000..0920641 --- /dev/null +++ b/ard-work/src/main/java/com/ruoyi/utils/mqtt/MqttConsumerCallback.java @@ -0,0 +1,100 @@ +package com.ruoyi.utils.mqtt; + +import com.ruoyi.alarm.globalAlarm.service.GlobalAlarmServiceImpl; +import com.ruoyi.common.utils.spring.SpringUtils; +import lombok.extern.slf4j.Slf4j; +import org.eclipse.paho.client.mqttv3.*; + +import java.nio.charset.StandardCharsets; +import java.util.Arrays; + +/** + * @Description: mqtt鍥炶皟澶勭悊绫� + * @ClassName: MqttConsumerCallback + * @Author: 鍒樿嫃涔� + * @Date: 2023骞�05鏈�29鏃�9:55 + * @Version: 1.0 + **/ +@Slf4j(topic = "mqtt") +public class MqttConsumerCallback implements MqttCallbackExtended { + + private MqttClient client; + private MqttConnectOptions options; + private String[] topic; + private int[] qos; + + public MqttConsumerCallback(MqttClient client, MqttConnectOptions options, String[] topic, int[] qos) { + this.client = client; + this.options = options; + this.topic = topic; + this.qos = qos; + } + + /** + * 鏂紑閲嶈繛 + */ + @Override + public void connectionLost(Throwable cause) { + log.info("MQTT杩炴帴鏂紑锛屽彂璧烽噸杩�......"); + try { + while (!client.isConnected()) { + Thread.sleep(5000); + if (null != client && !client.isConnected()) { + client.reconnect(); + log.error("灏濊瘯閲嶆柊杩炴帴"); + } else { + client.connect(options); + log.error("灏濊瘯寤虹珛鏂拌繛鎺�"); + } + } + } catch (Exception e) { + e.printStackTrace(); + } + } + + /** + * 鎺ユ敹鍒版秷鎭皟鐢ㄤ护鐗屼腑璋冪敤 + */ + @Override + public void deliveryComplete(IMqttDeliveryToken token) { + + //log.info("deliveryComplete---------" + Arrays.toString(topic)); + } + + /** + * 娑堟伅澶勭悊 + */ + @Override + public void messageArrived(String topic, MqttMessage message) { + try { + // subscribe鍚庡緱鍒扮殑娑堟伅浼氭墽琛屽埌杩欓噷闈� + log.info("鎺ユ敹娑堟伅 銆愪富棰樸��:" + topic + " 銆愬唴瀹广��:" + new String(message.getPayload())); + //杩涜涓氬姟澶勭悊(鎺ユ敹鎶ヨ鏁版嵁) + GlobalAlarmServiceImpl globalAlarmService = SpringUtils.getBean(GlobalAlarmServiceImpl.class); + globalAlarmService.receiveAlarm(topic, new String(message.getPayload(), StandardCharsets.UTF_8)); + } catch (Exception e) { + log.info("澶勭悊mqtt娑堟伅寮傚父:" + e); + } + } + + /** + * mqtt杩炴帴鍚庤闃呬富棰� + */ + @Override + public void connectComplete(boolean b, String s) { + try { + if (null != topic && null != qos) { + if (client.isConnected()) { + client.subscribe(topic, qos); + log.info("mqtt杩炴帴鎴愬姛锛屽鎴风ID锛�" + PropertiesUtil.MQTT_CLIENT_ID); + log.info("--璁㈤槄涓婚:锛�" + Arrays.toString(topic)); + } else { + log.info("mqtt杩炴帴澶辫触锛屽鎴风ID锛�" + PropertiesUtil.MQTT_CLIENT_ID); + } + } + } catch (Exception e) { + log.info("mqtt璁㈤槄涓婚寮傚父:" + e); + } + } +} + diff --git a/ard-work/src/main/java/com/ruoyi/utils/mqtt/PropertiesUtil.java b/ard-work/src/main/java/com/ruoyi/utils/mqtt/PropertiesUtil.java new file mode 100644 index 0000000..0d9b555 --- /dev/null +++ b/ard-work/src/main/java/com/ruoyi/utils/mqtt/PropertiesUtil.java @@ -0,0 +1,54 @@ +package com.ruoyi.utils.mqtt; + +import org.springframework.beans.factory.config.YamlPropertiesFactoryBean; +import org.springframework.core.io.ClassPathResource; +import org.springframework.core.io.Resource; +import org.springframework.stereotype.Component; + +import java.util.Objects; +import java.util.Properties; + +/** + * @Description: 鑾峰彇閰嶇疆淇℃伅 + * @ClassName: PropertiesUtil + * @Author: 鍒樿嫃涔� + * @Date: 2023骞�06鏈�06鏃�9:40 + * @Version: 1.0 + **/ +@Component +public class PropertiesUtil { + + public static String MQTT_HOST; + public static String MQTT_CLIENT_ID; + public static String MQTT_USER_NAME; + public static String MQTT_PASSWORD; + public static String MQTT_TOPIC; + public static Integer MQTT_TIMEOUT; + public static Integer MQTT_KEEP_ALIVE; + public static Boolean MQTT_ENABLED; + static { + MQTT_HOST = getYmlNew("mqtt.host"); + MQTT_CLIENT_ID = getYmlNew("mqtt.clientId"); + MQTT_USER_NAME = getYmlNew("mqtt.username"); + MQTT_PASSWORD = getYmlNew("mqtt.password"); + MQTT_TOPIC = getYmlNew("mqtt.topic"); + MQTT_TIMEOUT = Integer.valueOf(Objects.requireNonNull(getYmlNew("mqtt.timeout"))); + MQTT_KEEP_ALIVE = Integer.valueOf(Objects.requireNonNull(getYmlNew("mqtt.keepalive"))); + MQTT_ENABLED = Boolean.valueOf(getYmlNew("mqtt.enabled")); + } + + public static String getYmlNew(String key) { + Resource resource = new ClassPathResource("application-ard.yml"); + Properties properties; + try { + YamlPropertiesFactoryBean yamlFactory = new YamlPropertiesFactoryBean(); + yamlFactory.setResources(resource); + properties = yamlFactory.getObject(); + } catch (Exception e) { + e.printStackTrace(); + return null; + } + assert properties != null; + return properties.get(key).toString(); + } +} diff --git a/ard-work/src/main/resources/mapper/alarm/ArdAlarmTubeMapper.xml b/ard-work/src/main/resources/mapper/alarm/ArdAlarmTubeMapper.xml new file mode 100644 index 0000000..14e49fe --- /dev/null +++ b/ard-work/src/main/resources/mapper/alarm/ArdAlarmTubeMapper.xml @@ -0,0 +1,117 @@ +<?xml version="1.0" encoding="UTF-8" ?> +<!DOCTYPE mapper +PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" +"http://mybatis.org/dtd/mybatis-3-mapper.dtd"> +<mapper namespace="com.ruoyi.alarm.tubeAlarm.mapper.ArdAlarmTubeMapper"> + + <resultMap type="ArdAlarmTube" id="ArdAlarmTubeResult"> + <result property="id" column="id" /> + <result property="host" column="host" /> + <result property="tubeId" column="tube_id" /> + <result property="tubeName" column="tube_name" /> + <result property="tubeType" column="tube_type" /> + <result property="pipeDiameter" column="pipe_diameter" /> + <result property="color" column="color" /> + <result property="position" column="position" /> + <result property="type" column="type" /> + <result property="alarmType" column="alarm_type" /> + <result property="alarmTime" column="alarm_time" /> + <result property="watcher" column="watcher" /> + <result property="createTime" column="create_time" /> + <result property="viewTime" column="view_time" /> + </resultMap> + + <sql id="selectArdAlarmTubeVo"> + select id, host, tube_id, tube_name, tube_type, pipe_diameter, color, position, type, alarm_type, alarm_time, watcher, create_time, view_time from ard_alarm_tube + </sql> + + <select id="selectArdAlarmTubeList" parameterType="ArdAlarmTube" resultMap="ArdAlarmTubeResult"> + <include refid="selectArdAlarmTubeVo"/> + <where> + <if test="host != null and host != ''"> and host = #{host}</if> + <if test="tubeId != null "> and tube_id = #{tubeId}</if> + <if test="tubeName != null and tubeName != ''"> and tube_name like '%'||#{tubeName}||'%'</if> + <if test="tubeType != null and tubeType != ''"> and tube_type = #{tubeType}</if> + <if test="pipeDiameter != null and pipeDiameter != ''"> and pipe_diameter = #{pipeDiameter}</if> + <if test="color != null and color != ''"> and color = #{color}</if> + <if test="position != null and position != ''"> and position = #{position}</if> + <if test="type != null and type != ''"> and type = #{type}</if> + <if test="alarmType != null and alarmType != ''"> and alarm_type = #{alarmType}</if> + <if test="alarmTime != null "> and alarm_time = #{alarmTime}</if> + <if test="watcher != null and watcher != ''"> and watcher = #{watcher}</if> + <if test="viewTime != null "> and view_time = #{viewTime}</if> + </where> + </select> + + <select id="selectArdAlarmTubeById" parameterType="String" resultMap="ArdAlarmTubeResult"> + <include refid="selectArdAlarmTubeVo"/> + where id = #{id} + </select> + + <insert id="insertArdAlarmTube" parameterType="ArdAlarmTube"> + insert into ard_alarm_tube + <trim prefix="(" suffix=")" suffixOverrides=","> + <if test="id != null">id,</if> + <if test="host != null">host,</if> + <if test="tubeId != null">tube_id,</if> + <if test="tubeName != null">tube_name,</if> + <if test="tubeType != null">tube_type,</if> + <if test="pipeDiameter != null">pipe_diameter,</if> + <if test="color != null">color,</if> + <if test="position != null">position,</if> + <if test="type != null">type,</if> + <if test="alarmType != null">alarm_type,</if> + <if test="alarmTime != null">alarm_time,</if> + <if test="watcher != null">watcher,</if> + <if test="createTime != null">create_time,</if> + <if test="viewTime != null">view_time,</if> + </trim> + <trim prefix="values (" suffix=")" suffixOverrides=","> + <if test="id != null">#{id},</if> + <if test="host != null">#{host},</if> + <if test="tubeId != null">#{tubeId},</if> + <if test="tubeName != null">#{tubeName},</if> + <if test="tubeType != null">#{tubeType},</if> + <if test="pipeDiameter != null">#{pipeDiameter},</if> + <if test="color != null">#{color},</if> + <if test="position != null">#{position},</if> + <if test="type != null">#{type},</if> + <if test="alarmType != null">#{alarmType},</if> + <if test="alarmTime != null">#{alarmTime},</if> + <if test="watcher != null">#{watcher},</if> + <if test="createTime != null">#{createTime},</if> + <if test="viewTime != null">#{viewTime},</if> + </trim> + </insert> + + <update id="updateArdAlarmTube" parameterType="ArdAlarmTube"> + update ard_alarm_tube + <trim prefix="SET" suffixOverrides=","> + <if test="host != null">host = #{host},</if> + <if test="tubeId != null">tube_id = #{tubeId},</if> + <if test="tubeName != null">tube_name = #{tubeName},</if> + <if test="tubeType != null">tube_type = #{tubeType},</if> + <if test="pipeDiameter != null">pipe_diameter = #{pipeDiameter},</if> + <if test="color != null">color = #{color},</if> + <if test="position != null">position = #{position},</if> + <if test="type != null">type = #{type},</if> + <if test="alarmType != null">alarm_type = #{alarmType},</if> + <if test="alarmTime != null">alarm_time = #{alarmTime},</if> + <if test="watcher != null">watcher = #{watcher},</if> + <if test="createTime != null">create_time = #{createTime},</if> + <if test="viewTime != null">view_time = #{viewTime},</if> + </trim> + where id = #{id} + </update> + + <delete id="deleteArdAlarmTubeById" parameterType="String"> + delete from ard_alarm_tube where id = #{id} + </delete> + + <delete id="deleteArdAlarmTubeByIds" parameterType="String"> + delete from ard_alarm_tube where id in + <foreach item="id" collection="array" open="(" separator="," close=")"> + #{id} + </foreach> + </delete> +</mapper> \ No newline at end of file diff --git a/ard-work/src/main/resources/mapper/alarmpoints/ArdTubesDetailsMapper.xml b/ard-work/src/main/resources/mapper/alarmpoints/ArdTubesDetailsMapper.xml index c2b3bd1..50a0aad 100644 --- a/ard-work/src/main/resources/mapper/alarmpoints/ArdTubesDetailsMapper.xml +++ b/ard-work/src/main/resources/mapper/alarmpoints/ArdTubesDetailsMapper.xml @@ -68,7 +68,7 @@ </select> <select id="selectArdTubesDetailsByReelNumber" parameterType="String" resultMap="ArdTubesDetailsResult"> <include refid="selectArdTubesDetailsVo"/> - where reel_number = #{reelNumber} and tube_id=#{tubeId} + where reel_number = #{reelNumber} </select> <insert id="insertArdTubesDetails" parameterType="ArdTubesDetails"> insert into ard_tubes_details diff --git a/ard-work/src/main/resources/mapper/inspect/ArdVideoInspectRecordMapper.xml b/ard-work/src/main/resources/mapper/inspect/ArdVideoInspectRecordMapper.xml index 0215eb9..b98e0c6 100644 --- a/ard-work/src/main/resources/mapper/inspect/ArdVideoInspectRecordMapper.xml +++ b/ard-work/src/main/resources/mapper/inspect/ArdVideoInspectRecordMapper.xml @@ -15,7 +15,7 @@ </resultMap> <sql id="selectArdVideoInspectRecordVo"> - select id, start_time, end_time, record_file_path, step_id, dept_id, user_id from ard_video_inspect_record + select id, start_time, end_time, record_file_path, step_id, dept_id, user_id,well_name from ard_video_inspect_record </sql> <select id="selectArdVideoInspectRecordList" parameterType="ArdVideoInspectRecord" resultMap="ArdVideoInspectRecordResult"> @@ -36,7 +36,7 @@ <if test="startTime != null and startTime != ''">and start_time like ('${startTime}%')</if> <if test="stepId != null and stepId != ''">and step_id = #{stepId}</if> </where> - + order by start_time desc </select> <!--鎸夋湀浠界粺璁℃枃浠舵暟閲�--> <select id="selectArdVideoInspectRecordCountByStartMonth" parameterType="String" resultType="java.util.HashMap"> diff --git a/ruoyi-admin/src/main/resources/application-ard.yml b/ruoyi-admin/src/main/resources/application-ard.yml index 3c47288..0e8fe6a 100644 --- a/ruoyi-admin/src/main/resources/application-ard.yml +++ b/ruoyi-admin/src/main/resources/application-ard.yml @@ -13,4 +13,14 @@ connect-timeout: 3000 # 杩炴帴瓒呮椂鏃堕棿锛屽崟浣嶄负姣, 榛樿鍊间负2000 retry-count: 0 # 璇锋眰澶辫触鍚庨噸璇曟鏁帮紝榛樿涓�0娆′笉閲嶈瘯 ssl-protocol: SSLv3 # 鍗曞悜楠岃瘉鐨凥TTPS鐨勯粯璁SL鍗忚锛岄粯璁や负SSLv3 - logEnabled: true # 鎵撳紑鎴栧叧闂棩蹇楋紝榛樿涓簍rue \ No newline at end of file + logEnabled: true # 鎵撳紑鎴栧叧闂棩蹇楋紝榛樿涓簍rue +#mqtt +mqtt: + host: tcp://192.168.1.15:1883 + clientId: m3 + username: admin + password: xzx12345 + topic: tube + timeout: 100 + keepalive: 60 + enabled: true diff --git a/ruoyi-admin/src/main/resources/application-druid.yml b/ruoyi-admin/src/main/resources/application-druid.yml index 7e14d70..63e097b 100644 --- a/ruoyi-admin/src/main/resources/application-druid.yml +++ b/ruoyi-admin/src/main/resources/application-druid.yml @@ -6,12 +6,12 @@ druid: # 涓诲簱鏁版嵁婧� master: - url: jdbc:postgresql://111.40.46.199:15432/ry-vue?stringtype=unspecified - username: postgres - password: Yykj.2021 -# url: jdbc:postgresql://127.0.0.1:5432/ry-vue?stringtype=unspecified +# url: jdbc:postgresql://111.40.46.199:15432/ry-vue?stringtype=unspecified # username: postgres -# password: postgres +# password: Yykj.2021 + url: jdbc:postgresql://192.168.1.15:5432/ry-vue?stringtype=unspecified + username: postgres + password: postgres # 浠庡簱鏁版嵁婧� slave: # 浠庢暟鎹簮寮�鍏�/榛樿鍏抽棴 diff --git a/ruoyi-admin/src/main/resources/application.yml b/ruoyi-admin/src/main/resources/application.yml index 3ae70a3..b069583 100644 --- a/ruoyi-admin/src/main/resources/application.yml +++ b/ruoyi-admin/src/main/resources/application.yml @@ -36,7 +36,7 @@ # 鏃ュ織閰嶇疆 logging: level: - com.ruoyi.inspect: debug + com.ruoyi.inspect: info org.springframework: warn # 鐢ㄦ埛閰嶇疆 diff --git a/ruoyi-admin/src/main/resources/logback.xml b/ruoyi-admin/src/main/resources/logback.xml index 5193496..86ca1cd 100644 --- a/ruoyi-admin/src/main/resources/logback.xml +++ b/ruoyi-admin/src/main/resources/logback.xml @@ -134,6 +134,19 @@ <pattern>${log.pattern}</pattern> </encoder> </appender> + <!--mqtt鏃ュ織杈撳嚭--> + <appender name="mqtt" class="ch.qos.logback.core.rolling.RollingFileAppender"> + <file>${log.path}/mqtt.log</file> + <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> + <!--鎸夊ぉ鍥炴粴daily--> + <fileNamePattern>${log.path}/mqtt.%d{yyyy-MM-dd}.log</fileNamePattern> + <!--鏃ュ織鏈�澶х殑鍘嗗彶60澶�--> + <maxHistory>60</maxHistory> + </rollingPolicy> + <encoder> + <pattern>${log.pattern}</pattern> + </encoder> + </appender> <!--PatrolInspectionTask鏃ュ織杈撳嚭--> <appender name="PatrolInspectionTask" class="ch.qos.logback.core.rolling.RollingFileAppender"> <file>${log.path}/PatrolInspectionTask.log</file> @@ -186,8 +199,12 @@ <logger name="websocket" level="INFO"> <appender-ref ref="websocket"/> </logger> - <!--websocket鏃ュ織鎵撳嵃绛夌骇--> + <!--鍏夌數宸℃鏃ュ織鎵撳嵃绛夌骇--> <logger name="PatrolInspectionTask" level="INFO"> <appender-ref ref="PatrolInspectionTask"/> </logger> + <!--mqtt鏃ュ織鎵撳嵃绛夌骇--> + <logger name="mqtt" level="INFO"> + <appender-ref ref="mqtt"/> + </logger> </configuration> \ No newline at end of file diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/aspectj/LogAspect.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/aspectj/LogAspect.java index e86d052..5c4d408 100644 --- a/ruoyi-framework/src/main/java/com/ruoyi/framework/aspectj/LogAspect.java +++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/aspectj/LogAspect.java @@ -4,6 +4,7 @@ import java.util.Map; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; + import org.aspectj.lang.JoinPoint; import org.aspectj.lang.annotation.AfterReturning; import org.aspectj.lang.annotation.AfterThrowing; @@ -29,17 +30,18 @@ /** * 鎿嶄綔鏃ュ織璁板綍澶勭悊 - * + * * @author ruoyi */ @Aspect @Component -public class LogAspect -{ +public class LogAspect { private static final Logger log = LoggerFactory.getLogger(LogAspect.class); - /** 鎺掗櫎鏁忔劅灞炴�у瓧娈� */ - public static final String[] EXCLUDE_PROPERTIES = { "password", "oldPassword", "newPassword", "confirmPassword" }; + /** + * 鎺掗櫎鏁忔劅灞炴�у瓧娈� + */ + public static final String[] EXCLUDE_PROPERTIES = {"password", "oldPassword", "newPassword", "confirmPassword"}; /** * 澶勭悊瀹岃姹傚悗鎵ц @@ -47,27 +49,23 @@ * @param joinPoint 鍒囩偣 */ @AfterReturning(pointcut = "@annotation(controllerLog)", returning = "jsonResult") - public void doAfterReturning(JoinPoint joinPoint, Log controllerLog, Object jsonResult) - { + public void doAfterReturning(JoinPoint joinPoint, Log controllerLog, Object jsonResult) { handleLog(joinPoint, controllerLog, null, jsonResult); } /** * 鎷︽埅寮傚父鎿嶄綔 - * + * * @param joinPoint 鍒囩偣 - * @param e 寮傚父 + * @param e 寮傚父 */ @AfterThrowing(value = "@annotation(controllerLog)", throwing = "e") - public void doAfterThrowing(JoinPoint joinPoint, Log controllerLog, Exception e) - { + public void doAfterThrowing(JoinPoint joinPoint, Log controllerLog, Exception e) { handleLog(joinPoint, controllerLog, e, null); } - protected void handleLog(final JoinPoint joinPoint, Log controllerLog, final Exception e, Object jsonResult) - { - try - { + protected void handleLog(final JoinPoint joinPoint, Log controllerLog, final Exception e, Object jsonResult) { + try { // 鑾峰彇褰撳墠鐨勭敤鎴� LoginUser loginUser = SecurityUtils.getLoginUser(); @@ -78,13 +76,11 @@ String ip = IpUtils.getIpAddr(ServletUtils.getRequest()); operLog.setOperIp(ip); operLog.setOperUrl(StringUtils.substring(ServletUtils.getRequest().getRequestURI(), 0, 255)); - if (loginUser != null) - { + if (loginUser != null) { operLog.setOperName(loginUser.getUsername()); } - if (e != null) - { + if (e != null) { operLog.setStatus(BusinessStatus.FAIL.ordinal()); operLog.setErrorMsg(StringUtils.substring(e.getMessage(), 0, 2000)); } @@ -97,16 +93,15 @@ // 澶勭悊璁剧疆娉ㄨВ涓婄殑鍙傛暟 getControllerMethodDescription(joinPoint, controllerLog, operLog, jsonResult); //鍒ゆ柇鐘舵�佺爜 - Map resultMap=(Map)jsonResult; - if(resultMap.get("code").equals(500)) - { - operLog.setStatus(BusinessStatus.FAIL.ordinal()); + Map resultMap = (Map) jsonResult; + if (StringUtils.isNotNull(resultMap)) { + if (resultMap.get("code").equals(500)) { + operLog.setStatus(BusinessStatus.FAIL.ordinal()); + } } // 淇濆瓨鏁版嵁搴� AsyncManager.me().execute(AsyncFactory.recordOper(operLog)); - } - catch (Exception exp) - { + } catch (Exception exp) { // 璁板綍鏈湴寮傚父鏃ュ織 log.error("寮傚父淇℃伅:{}", exp.getMessage()); exp.printStackTrace(); @@ -115,13 +110,12 @@ /** * 鑾峰彇娉ㄨВ涓鏂规硶鐨勬弿杩颁俊鎭� 鐢ㄤ簬Controller灞傛敞瑙� - * - * @param log 鏃ュ織 + * + * @param log 鏃ュ織 * @param operLog 鎿嶄綔鏃ュ織 * @throws Exception */ - public void getControllerMethodDescription(JoinPoint joinPoint, Log log, SysOperLog operLog, Object jsonResult) throws Exception - { + public void getControllerMethodDescription(JoinPoint joinPoint, Log log, SysOperLog operLog, Object jsonResult) throws Exception { // 璁剧疆action鍔ㄤ綔 operLog.setBusinessType(log.businessType().ordinal()); // 璁剧疆鏍囬 @@ -129,34 +123,28 @@ // 璁剧疆鎿嶄綔浜虹被鍒� operLog.setOperatorType(log.operatorType().ordinal()); // 鏄惁闇�瑕佷繚瀛榬equest锛屽弬鏁板拰鍊� - if (log.isSaveRequestData()) - { + if (log.isSaveRequestData()) { // 鑾峰彇鍙傛暟鐨勪俊鎭紝浼犲叆鍒版暟鎹簱涓�� setRequestValue(joinPoint, operLog); } // 鏄惁闇�瑕佷繚瀛榬esponse锛屽弬鏁板拰鍊� - if (log.isSaveResponseData() && StringUtils.isNotNull(jsonResult)) - { + if (log.isSaveResponseData() && StringUtils.isNotNull(jsonResult)) { operLog.setJsonResult(StringUtils.substring(JSON.toJSONString(jsonResult), 0, 2000)); } } /** * 鑾峰彇璇锋眰鐨勫弬鏁帮紝鏀惧埌log涓� - * + * * @param operLog 鎿嶄綔鏃ュ織 * @throws Exception 寮傚父 */ - private void setRequestValue(JoinPoint joinPoint, SysOperLog operLog) throws Exception - { + private void setRequestValue(JoinPoint joinPoint, SysOperLog operLog) throws Exception { String requestMethod = operLog.getRequestMethod(); - if (HttpMethod.PUT.name().equals(requestMethod) || HttpMethod.POST.name().equals(requestMethod)) - { + if (HttpMethod.PUT.name().equals(requestMethod) || HttpMethod.POST.name().equals(requestMethod)) { String params = argsArrayToString(joinPoint.getArgs()); operLog.setOperParam(StringUtils.substring(params, 0, 2000)); - } - else - { + } else { Map<?, ?> paramsMap = ServletUtils.getParamMap(ServletUtils.getRequest()); operLog.setOperParam(StringUtils.substring(JSON.toJSONString(paramsMap, excludePropertyPreFilter()), 0, 2000)); } @@ -165,22 +153,15 @@ /** * 鍙傛暟鎷艰 */ - private String argsArrayToString(Object[] paramsArray) - { + private String argsArrayToString(Object[] paramsArray) { String params = ""; - if (paramsArray != null && paramsArray.length > 0) - { - for (Object o : paramsArray) - { - if (StringUtils.isNotNull(o) && !isFilterObject(o)) - { - try - { + if (paramsArray != null && paramsArray.length > 0) { + for (Object o : paramsArray) { + if (StringUtils.isNotNull(o) && !isFilterObject(o)) { + try { String jsonObj = JSON.toJSONString(o, excludePropertyPreFilter()); params += jsonObj.toString() + " "; - } - catch (Exception e) - { + } catch (Exception e) { } } } @@ -191,38 +172,29 @@ /** * 蹇界暐鏁忔劅灞炴�� */ - public PropertyPreExcludeFilter excludePropertyPreFilter() - { + public PropertyPreExcludeFilter excludePropertyPreFilter() { return new PropertyPreExcludeFilter().addExcludes(EXCLUDE_PROPERTIES); } /** * 鍒ゆ柇鏄惁闇�瑕佽繃婊ょ殑瀵硅薄銆� - * + * * @param o 瀵硅薄淇℃伅銆� * @return 濡傛灉鏄渶瑕佽繃婊ょ殑瀵硅薄锛屽垯杩斿洖true锛涘惁鍒欒繑鍥瀎alse銆� */ @SuppressWarnings("rawtypes") - public boolean isFilterObject(final Object o) - { + public boolean isFilterObject(final Object o) { Class<?> clazz = o.getClass(); - if (clazz.isArray()) - { + if (clazz.isArray()) { return clazz.getComponentType().isAssignableFrom(MultipartFile.class); - } - else if (Collection.class.isAssignableFrom(clazz)) - { + } else if (Collection.class.isAssignableFrom(clazz)) { Collection collection = (Collection) o; - for (Object value : collection) - { + for (Object value : collection) { return value instanceof MultipartFile; } - } - else if (Map.class.isAssignableFrom(clazz)) - { + } else if (Map.class.isAssignableFrom(clazz)) { Map map = (Map) o; - for (Object value : map.entrySet()) - { + for (Object value : map.entrySet()) { Map.Entry entry = (Map.Entry) value; return entry.getValue() instanceof MultipartFile; } -- Gitblit v1.9.3