From 8fe5fc4329d9c7f216695ba9d683724d1208713a Mon Sep 17 00:00:00 2001 From: chentaisen <14615430+chentaisen@user.noreply.gitee.com> Date: Fri, 20 Sep 2024 22:21:17 +0800 Subject: [PATCH] jich --- .../cloud-warn-common/pom.xml | 38 +++++ .../com/muyu/platform/domain/WarnLogs.java | 91 +++++++++++ .../com/muyu/platform/domain/WarnRule.java | 77 +++++++++ .../muyu/platform/domain/WarnStrategy.java | 57 +++++++ .../muyu/platform/domain/wx/AccessToken.java | 20 +++ .../com/muyu/platform/domain/wx/Message.java | 27 ++++ .../cloud-warn-server/pom.xml | 38 +++++ .../com/muyu/platform/WarnApplication.java | 21 +++ .../controller/WarnLogsController.java | 110 +++++++++++++ .../controller/WarnRuleController.java | 110 +++++++++++++ .../controller/WarnStrategyController.java | 110 +++++++++++++ .../platform/controller/WxTestController.java | 153 ++++++++++++++++++ .../muyu/platform/mapper/WarnLogsMapper.java | 17 ++ .../muyu/platform/mapper/WarnRuleMapper.java | 17 ++ .../platform/mapper/WarnStrategyMapper.java | 17 ++ .../com/muyu/platform/message/Article.java | 28 ++++ .../com/muyu/platform/message/NewMessage.java | 34 ++++ .../platform/service/IWarnLogsService.java | 37 +++++ .../platform/service/IWarnRuleService.java | 37 +++++ .../service/IWarnStrategyService.java | 37 +++++ .../service/impl/WarnLogsServiceImpl.java | 92 +++++++++++ .../service/impl/WarnRuleServiceImpl.java | 87 ++++++++++ .../service/impl/WarnStrategyServiceImpl.java | 74 +++++++++ .../com/muyu/platform/util/OkHttpUtils.java | 36 +++++ .../com/muyu/platform/util/TokenUtil.java | 35 ++++ .../src/main/resources/banner.txt | 2 + .../src/main/resources/bootstrap.yml | 48 ++++++ .../src/main/resources/logback/dev.xml | 74 +++++++++ .../src/main/resources/logback/prod.xml | 81 ++++++++++ .../src/main/resources/logback/test.xml | 81 ++++++++++ .../mapper/platform/WarnLogsMapper.xml | 96 +++++++++++ .../mapper/platform/WarnRuleMapper.xml | 86 ++++++++++ .../mapper/platform/WarnStrategyMapper.xml | 66 ++++++++ 33 files changed, 1934 insertions(+) create mode 100644 cloud-modules/cloud-modules-warn/cloud-warn-common/src/main/java/com/muyu/platform/domain/WarnLogs.java create mode 100644 cloud-modules/cloud-modules-warn/cloud-warn-common/src/main/java/com/muyu/platform/domain/WarnRule.java create mode 100644 cloud-modules/cloud-modules-warn/cloud-warn-common/src/main/java/com/muyu/platform/domain/WarnStrategy.java create mode 100644 cloud-modules/cloud-modules-warn/cloud-warn-common/src/main/java/com/muyu/platform/domain/wx/AccessToken.java create mode 100644 cloud-modules/cloud-modules-warn/cloud-warn-common/src/main/java/com/muyu/platform/domain/wx/Message.java create mode 100644 cloud-modules/cloud-modules-warn/cloud-warn-server/src/main/java/com/muyu/platform/WarnApplication.java create mode 100644 cloud-modules/cloud-modules-warn/cloud-warn-server/src/main/java/com/muyu/platform/controller/WarnLogsController.java create mode 100644 cloud-modules/cloud-modules-warn/cloud-warn-server/src/main/java/com/muyu/platform/controller/WarnRuleController.java create mode 100644 cloud-modules/cloud-modules-warn/cloud-warn-server/src/main/java/com/muyu/platform/controller/WarnStrategyController.java create mode 100644 cloud-modules/cloud-modules-warn/cloud-warn-server/src/main/java/com/muyu/platform/controller/WxTestController.java create mode 100644 cloud-modules/cloud-modules-warn/cloud-warn-server/src/main/java/com/muyu/platform/mapper/WarnLogsMapper.java create mode 100644 cloud-modules/cloud-modules-warn/cloud-warn-server/src/main/java/com/muyu/platform/mapper/WarnRuleMapper.java create mode 100644 cloud-modules/cloud-modules-warn/cloud-warn-server/src/main/java/com/muyu/platform/mapper/WarnStrategyMapper.java create mode 100644 cloud-modules/cloud-modules-warn/cloud-warn-server/src/main/java/com/muyu/platform/message/Article.java create mode 100644 cloud-modules/cloud-modules-warn/cloud-warn-server/src/main/java/com/muyu/platform/message/NewMessage.java create mode 100644 cloud-modules/cloud-modules-warn/cloud-warn-server/src/main/java/com/muyu/platform/service/IWarnLogsService.java create mode 100644 cloud-modules/cloud-modules-warn/cloud-warn-server/src/main/java/com/muyu/platform/service/IWarnRuleService.java create mode 100644 cloud-modules/cloud-modules-warn/cloud-warn-server/src/main/java/com/muyu/platform/service/IWarnStrategyService.java create mode 100644 cloud-modules/cloud-modules-warn/cloud-warn-server/src/main/java/com/muyu/platform/service/impl/WarnLogsServiceImpl.java create mode 100644 cloud-modules/cloud-modules-warn/cloud-warn-server/src/main/java/com/muyu/platform/service/impl/WarnRuleServiceImpl.java create mode 100644 cloud-modules/cloud-modules-warn/cloud-warn-server/src/main/java/com/muyu/platform/service/impl/WarnStrategyServiceImpl.java create mode 100644 cloud-modules/cloud-modules-warn/cloud-warn-server/src/main/java/com/muyu/platform/util/OkHttpUtils.java create mode 100644 cloud-modules/cloud-modules-warn/cloud-warn-server/src/main/java/com/muyu/platform/util/TokenUtil.java create mode 100644 cloud-modules/cloud-modules-warn/cloud-warn-server/src/main/resources/banner.txt create mode 100644 cloud-modules/cloud-modules-warn/cloud-warn-server/src/main/resources/bootstrap.yml create mode 100644 cloud-modules/cloud-modules-warn/cloud-warn-server/src/main/resources/logback/dev.xml create mode 100644 cloud-modules/cloud-modules-warn/cloud-warn-server/src/main/resources/logback/prod.xml create mode 100644 cloud-modules/cloud-modules-warn/cloud-warn-server/src/main/resources/logback/test.xml create mode 100644 cloud-modules/cloud-modules-warn/cloud-warn-server/src/main/resources/mapper/platform/WarnLogsMapper.xml create mode 100644 cloud-modules/cloud-modules-warn/cloud-warn-server/src/main/resources/mapper/platform/WarnRuleMapper.xml create mode 100644 cloud-modules/cloud-modules-warn/cloud-warn-server/src/main/resources/mapper/platform/WarnStrategyMapper.xml diff --git a/cloud-modules/cloud-modules-warn/cloud-warn-common/pom.xml b/cloud-modules/cloud-modules-warn/cloud-warn-common/pom.xml index 3180695..fa7ca2f 100644 --- a/cloud-modules/cloud-modules-warn/cloud-warn-common/pom.xml +++ b/cloud-modules/cloud-modules-warn/cloud-warn-common/pom.xml @@ -92,5 +92,43 @@ + + + com.squareup.okhttp3 + okhttp + 4.9.3 + + + com.thoughtworks.xstream + xstream + 1.4.20 + + + org.projectlombok + lombok + 1.18.34 + + + org.springframework.boot + spring-boot-starter + 3.3.2 + + + org.springframework.boot + spring-boot-starter-web + 3.3.2 + + + + org.dom4j + dom4j + 2.1.3 + + + com.alibaba.fastjson2 + fastjson2 + 2.0.43 + + diff --git a/cloud-modules/cloud-modules-warn/cloud-warn-common/src/main/java/com/muyu/platform/domain/WarnLogs.java b/cloud-modules/cloud-modules-warn/cloud-warn-common/src/main/java/com/muyu/platform/domain/WarnLogs.java new file mode 100644 index 0000000..b5da687 --- /dev/null +++ b/cloud-modules/cloud-modules-warn/cloud-warn-common/src/main/java/com/muyu/platform/domain/WarnLogs.java @@ -0,0 +1,91 @@ +package com.muyu.platform.domain; + +import java.util.Date; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.muyu.common.core.annotation.Excel; +import com.muyu.common.core.web.domain.BaseEntity; +import lombok.*; +import lombok.experimental.SuperBuilder; +import org.apache.commons.lang3.builder.ToStringBuilder; +import org.apache.commons.lang3.builder.ToStringStyle; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.annotation.IdType; + +/** + * 预警日志对象 warn_logs + * + * @author muyu + * @date 2024-09-20 + */ + +@Data +@Setter +@Getter +@SuperBuilder +@NoArgsConstructor +@AllArgsConstructor +@TableName("warn_logs") +public class WarnLogs { + private static final long serialVersionUID = 1L; + + /** 预警日志id */ + @TableId( type = IdType.AUTO) + private Long id; + + /** 车辆vin码 */ + @Excel(name = "车辆vin码") + private String vin; + + /** 规则id */ + @Excel(name = "规则id") + private Long warnRuleId; + + /** 开始时间 */ + @JsonFormat(pattern = "yyyy-MM-dd") + @Excel(name = "开始时间", width = 30, dateFormat = "yyyy-MM-dd") + private Date startTime; + + /** 结束时间 */ + @JsonFormat(pattern = "yyyy-MM-dd") + @Excel(name = "结束时间", width = 30, dateFormat = "yyyy-MM-dd") + private Date endTime; + + /** 最大值 */ + @Excel(name = "最大值") + private Long maxValue; + + /** 最小值 */ + @Excel(name = "最小值") + private Long minValue; + + /** 平均值 */ + @Excel(name = "平均值") + private Long avgValue; + + /** 中位数 */ + @Excel(name = "中位数") + private Long medianValue; + + /** 是否发送预警 */ + @Excel(name = "是否发送预警") + private Long status; + + + + @Override + public String toString() { + return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) + .append("id", getId()) + .append("vin", getVin()) + .append("warnRuleId", getWarnRuleId()) + .append("startTime", getStartTime()) + .append("endTime", getEndTime()) + .append("maxValue", getMaxValue()) + .append("minValue", getMinValue()) + .append("avgValue", getAvgValue()) + .append("medianValue", getMedianValue()) + .append("status", getStatus()) + .toString(); + } +} diff --git a/cloud-modules/cloud-modules-warn/cloud-warn-common/src/main/java/com/muyu/platform/domain/WarnRule.java b/cloud-modules/cloud-modules-warn/cloud-warn-common/src/main/java/com/muyu/platform/domain/WarnRule.java new file mode 100644 index 0000000..9915516 --- /dev/null +++ b/cloud-modules/cloud-modules-warn/cloud-warn-common/src/main/java/com/muyu/platform/domain/WarnRule.java @@ -0,0 +1,77 @@ +package com.muyu.platform.domain; + +import com.muyu.common.core.annotation.Excel; +import com.muyu.common.core.web.domain.BaseEntity; +import lombok.*; +import lombok.experimental.SuperBuilder; +import org.apache.commons.lang3.builder.ToStringBuilder; +import org.apache.commons.lang3.builder.ToStringStyle; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.annotation.IdType; + +/** + * 预警规则对象 warn_rule + * + * @author muyu + * @date 2024-09-20 + */ + +@Data +@Setter +@Getter +@SuperBuilder +@NoArgsConstructor +@AllArgsConstructor +@TableName("warn_rule") +public class WarnRule{ + private static final long serialVersionUID = 1L; + + /** 规则id */ + @TableId( type = IdType.AUTO) + private Long id; + + /** 规则名称 */ + @Excel(name = "规则名称") + private String ruleName; + + /** 策略id */ + @Excel(name = "策略id") + private Long strategyId; + + /** 报文数据类型id */ + @Excel(name = "报文数据类型id") + private Long msgTypeId; + + /** 滑窗时间 */ + @Excel(name = "滑窗时间") + private Long slideTime; + + /** 滑窗频率 */ + @Excel(name = "滑窗频率") + private Long slideFrequency; + + /** 最大值 */ + @Excel(name = "最大值") + private Long maxValue; + + /** 最小值 */ + @Excel(name = "最小值") + private Long minValue; + + + + @Override + public String toString() { + return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) + .append("id", getId()) + .append("ruleName", getRuleName()) + .append("strategyId", getStrategyId()) + .append("msgTypeId", getMsgTypeId()) + .append("slideTime", getSlideTime()) + .append("slideFrequency", getSlideFrequency()) + .append("maxValue", getMaxValue()) + .append("minValue", getMinValue()) + .toString(); + } +} diff --git a/cloud-modules/cloud-modules-warn/cloud-warn-common/src/main/java/com/muyu/platform/domain/WarnStrategy.java b/cloud-modules/cloud-modules-warn/cloud-warn-common/src/main/java/com/muyu/platform/domain/WarnStrategy.java new file mode 100644 index 0000000..1726024 --- /dev/null +++ b/cloud-modules/cloud-modules-warn/cloud-warn-common/src/main/java/com/muyu/platform/domain/WarnStrategy.java @@ -0,0 +1,57 @@ +package com.muyu.platform.domain; + +import com.muyu.common.core.annotation.Excel; +import com.muyu.common.core.web.domain.BaseEntity; +import lombok.*; +import lombok.experimental.SuperBuilder; +import org.apache.commons.lang3.builder.ToStringBuilder; +import org.apache.commons.lang3.builder.ToStringStyle; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.annotation.IdType; + +/** + * 预警策略对象 warn_strategy + * + * @author muyu + * @date 2024-09-20 + */ + +@Data +@Setter +@Getter +@SuperBuilder +@NoArgsConstructor +@AllArgsConstructor +@TableName("warn_strategy") +public class WarnStrategy{ + private static final long serialVersionUID = 1L; + + /** 策略id */ + @TableId( type = IdType.AUTO) + private Long id; + + /** 车辆类型id */ + @Excel(name = "车辆类型id") + private Long carTypeId; + + /** 策略名称 */ + @Excel(name = "策略名称") + private String strategyName; + + /** 报文模版id */ + @Excel(name = "报文模版id") + private Long msgId; + + + + @Override + public String toString() { + return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) + .append("id", getId()) + .append("carTypeId", getCarTypeId()) + .append("strategyName", getStrategyName()) + .append("msgId", getMsgId()) + .toString(); + } +} diff --git a/cloud-modules/cloud-modules-warn/cloud-warn-common/src/main/java/com/muyu/platform/domain/wx/AccessToken.java b/cloud-modules/cloud-modules-warn/cloud-warn-common/src/main/java/com/muyu/platform/domain/wx/AccessToken.java new file mode 100644 index 0000000..3236fc6 --- /dev/null +++ b/cloud-modules/cloud-modules-warn/cloud-warn-common/src/main/java/com/muyu/platform/domain/wx/AccessToken.java @@ -0,0 +1,20 @@ +package com.muyu.platform.domain.wx; + +import lombok.Data; + +/** + * @author 24415 + */ +@Data +public class AccessToken { + + + private String access_token; + + private Long expires_in; + + public void setExpiresTime(Long expiresIn) { + this.expires_in = System.currentTimeMillis() + expiresIn * 1000; + } + +} diff --git a/cloud-modules/cloud-modules-warn/cloud-warn-common/src/main/java/com/muyu/platform/domain/wx/Message.java b/cloud-modules/cloud-modules-warn/cloud-warn-common/src/main/java/com/muyu/platform/domain/wx/Message.java new file mode 100644 index 0000000..f9019a9 --- /dev/null +++ b/cloud-modules/cloud-modules-warn/cloud-warn-common/src/main/java/com/muyu/platform/domain/wx/Message.java @@ -0,0 +1,27 @@ +package com.muyu.platform.domain.wx; + +import com.thoughtworks.xstream.annotations.XStreamAlias; +import lombok.Data; + +/** + * @Author: Chen + * @name:Message + */ +@Data +@XStreamAlias("xml") +public class Message { + @XStreamAlias("ToUserName") + private String toUserName; + + @XStreamAlias("FromUserName") + private String fromUserName; + + @XStreamAlias("CreateTime") + private Long createTime; + + @XStreamAlias("MsgType") + private String msgType; + + @XStreamAlias("Content") + private String content; +} diff --git a/cloud-modules/cloud-modules-warn/cloud-warn-server/pom.xml b/cloud-modules/cloud-modules-warn/cloud-warn-server/pom.xml index 415e450..13b8bbc 100644 --- a/cloud-modules/cloud-modules-warn/cloud-warn-server/pom.xml +++ b/cloud-modules/cloud-modules-warn/cloud-warn-server/pom.xml @@ -22,5 +22,43 @@ cloud-warn-common 3.6.3 + + + com.squareup.okhttp3 + okhttp + 4.9.3 + + + com.thoughtworks.xstream + xstream + 1.4.20 + + + org.projectlombok + lombok + 1.18.34 + + + org.springframework.boot + spring-boot-starter + 3.3.2 + + + org.springframework.boot + spring-boot-starter-web + 3.3.2 + + + + org.dom4j + dom4j + 2.1.3 + + + com.alibaba.fastjson2 + fastjson2 + 2.0.43 + + diff --git a/cloud-modules/cloud-modules-warn/cloud-warn-server/src/main/java/com/muyu/platform/WarnApplication.java b/cloud-modules/cloud-modules-warn/cloud-warn-server/src/main/java/com/muyu/platform/WarnApplication.java new file mode 100644 index 0000000..e40942f --- /dev/null +++ b/cloud-modules/cloud-modules-warn/cloud-warn-server/src/main/java/com/muyu/platform/WarnApplication.java @@ -0,0 +1,21 @@ +package com.muyu.platform; + +import com.muyu.common.security.annotation.EnableCustomConfig; +import com.muyu.common.security.annotation.EnableMyFeignClients; +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +/** + * @Author Chen + * @name:WxApplication + * @Date:2024/9/16 20:39 + */ +@EnableCustomConfig +//@EnableCustomSwagger2 +@EnableMyFeignClients +@SpringBootApplication +public class WarnApplication { + public static void main(String[] args) { + SpringApplication.run(WarnApplication.class); + } +} diff --git a/cloud-modules/cloud-modules-warn/cloud-warn-server/src/main/java/com/muyu/platform/controller/WarnLogsController.java b/cloud-modules/cloud-modules-warn/cloud-warn-server/src/main/java/com/muyu/platform/controller/WarnLogsController.java new file mode 100644 index 0000000..c9807ee --- /dev/null +++ b/cloud-modules/cloud-modules-warn/cloud-warn-server/src/main/java/com/muyu/platform/controller/WarnLogsController.java @@ -0,0 +1,110 @@ +package com.muyu.platform.controller; + +import java.util.Arrays; +import java.util.List; +import jakarta.servlet.http.HttpServletResponse; +import javax.annotation.Resource; +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.muyu.common.security.annotation.RequiresPermissions; +import com.muyu.platform.domain.WarnLogs; +import com.muyu.platform.service.IWarnLogsService; +import com.muyu.common.core.web.controller.BaseController; +import com.muyu.common.core.domain.Result; +import com.muyu.common.core.utils.poi.ExcelUtil; +import com.muyu.common.security.utils.SecurityUtils; +import org.springframework.validation.annotation.Validated; +import com.muyu.common.core.web.page.TableDataInfo; + +/** + * 预警日志Controller + * + * @author muyu + * @date 2024-09-20 + */ +@RestController +@RequestMapping("/logs") +public class WarnLogsController extends BaseController +{ + @Resource + private IWarnLogsService warnLogsService; + + /** + * 查询预警日志列表 + */ + @RequiresPermissions("platform:logs:list") + @GetMapping("/list") + public Result> list(WarnLogs warnLogs) + { + startPage(); + List list = warnLogsService.selectWarnLogsList(warnLogs); + return getDataTable(list); + } + + /** + * 导出预警日志列表 + */ + @RequiresPermissions("platform:logs:export") + @PostMapping("/export") + public void export(HttpServletResponse response, WarnLogs warnLogs) + { + List list = warnLogsService.selectWarnLogsList(warnLogs); + ExcelUtil util = new ExcelUtil(WarnLogs.class); + util.exportExcel(response, list, "预警日志数据"); + } + + /** + * 获取预警日志详细信息 + */ + @RequiresPermissions("platform:logs:query") + @GetMapping(value = "/{id}") + public Result> getInfo(@PathVariable("id") Long id) + { + return success(warnLogsService.selectWarnLogsById(id)); + } + + /** + * 新增预警日志 + */ + @RequiresPermissions("platform:logs:add") + @PostMapping + public Result add( + @Validated @RequestBody WarnLogs warnLogs) + { + if (warnLogsService.checkIdUnique(warnLogs)) { + return error("新增 预警日志 '" + warnLogs + "'失败,预警日志已存在"); + } + return toAjax(warnLogsService.save(warnLogs)); + } + + /** + * 修改预警日志 + */ + @RequiresPermissions("platform:logs:edit") + @PutMapping + public Result edit( + @Validated @RequestBody WarnLogs warnLogs) + { + if (!warnLogsService.checkIdUnique(warnLogs)) { + return error("修改 预警日志 '" + warnLogs + "'失败,预警日志不存在"); + } + return toAjax(warnLogsService.updateById(warnLogs)); + } + + /** + * 删除预警日志 + */ + @RequiresPermissions("platform:logs:remove") + @DeleteMapping("/{ids}") + public Result remove(@PathVariable("ids") Long[] ids) + { + warnLogsService.removeBatchByIds(Arrays.asList(ids)); + return success(); + } +} diff --git a/cloud-modules/cloud-modules-warn/cloud-warn-server/src/main/java/com/muyu/platform/controller/WarnRuleController.java b/cloud-modules/cloud-modules-warn/cloud-warn-server/src/main/java/com/muyu/platform/controller/WarnRuleController.java new file mode 100644 index 0000000..9ae401b --- /dev/null +++ b/cloud-modules/cloud-modules-warn/cloud-warn-server/src/main/java/com/muyu/platform/controller/WarnRuleController.java @@ -0,0 +1,110 @@ +package com.muyu.platform.controller; + +import java.util.Arrays; +import java.util.List; +import jakarta.servlet.http.HttpServletResponse; +import javax.annotation.Resource; +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.muyu.common.security.annotation.RequiresPermissions; +import com.muyu.platform.domain.WarnRule; +import com.muyu.platform.service.IWarnRuleService; +import com.muyu.common.core.web.controller.BaseController; +import com.muyu.common.core.domain.Result; +import com.muyu.common.core.utils.poi.ExcelUtil; +import com.muyu.common.security.utils.SecurityUtils; +import org.springframework.validation.annotation.Validated; +import com.muyu.common.core.web.page.TableDataInfo; + +/** + * 预警规则Controller + * + * @author muyu + * @date 2024-09-20 + */ +@RestController +@RequestMapping("/rule") +public class WarnRuleController extends BaseController +{ + @Resource + private IWarnRuleService warnRuleService; + + /** + * 查询预警规则列表 + */ + @RequiresPermissions("platform:rule:list") + @GetMapping("/list") + public Result> list(WarnRule warnRule) + { + startPage(); + List list = warnRuleService.selectWarnRuleList(warnRule); + return getDataTable(list); + } + + /** + * 导出预警规则列表 + */ + @RequiresPermissions("platform:rule:export") + @PostMapping("/export") + public void export(HttpServletResponse response, WarnRule warnRule) + { + List list = warnRuleService.selectWarnRuleList(warnRule); + ExcelUtil util = new ExcelUtil(WarnRule.class); + util.exportExcel(response, list, "预警规则数据"); + } + + /** + * 获取预警规则详细信息 + */ + @RequiresPermissions("platform:rule:query") + @GetMapping(value = "/{id}") + public Result> getInfo(@PathVariable("id") Long id) + { + return success(warnRuleService.selectWarnRuleById(id)); + } + + /** + * 新增预警规则 + */ + @RequiresPermissions("platform:rule:add") + @PostMapping + public Result add( + @Validated @RequestBody WarnRule warnRule) + { + if (warnRuleService.checkIdUnique(warnRule)) { + return error("新增 预警规则 '" + warnRule + "'失败,预警规则已存在"); + } + return toAjax(warnRuleService.save(warnRule)); + } + + /** + * 修改预警规则 + */ + @RequiresPermissions("platform:rule:edit") + @PutMapping + public Result edit( + @Validated @RequestBody WarnRule warnRule) + { + if (!warnRuleService.checkIdUnique(warnRule)) { + return error("修改 预警规则 '" + warnRule + "'失败,预警规则不存在"); + } + return toAjax(warnRuleService.updateById(warnRule)); + } + + /** + * 删除预警规则 + */ + @RequiresPermissions("platform:rule:remove") + @DeleteMapping("/{ids}") + public Result remove(@PathVariable("ids") Long[] ids) + { + warnRuleService.removeBatchByIds(Arrays.asList(ids)); + return success(); + } +} diff --git a/cloud-modules/cloud-modules-warn/cloud-warn-server/src/main/java/com/muyu/platform/controller/WarnStrategyController.java b/cloud-modules/cloud-modules-warn/cloud-warn-server/src/main/java/com/muyu/platform/controller/WarnStrategyController.java new file mode 100644 index 0000000..4a7c769 --- /dev/null +++ b/cloud-modules/cloud-modules-warn/cloud-warn-server/src/main/java/com/muyu/platform/controller/WarnStrategyController.java @@ -0,0 +1,110 @@ +package com.muyu.platform.controller; + +import java.util.Arrays; +import java.util.List; +import jakarta.servlet.http.HttpServletResponse; +import javax.annotation.Resource; +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.muyu.common.security.annotation.RequiresPermissions; +import com.muyu.platform.domain.WarnStrategy; +import com.muyu.platform.service.IWarnStrategyService; +import com.muyu.common.core.web.controller.BaseController; +import com.muyu.common.core.domain.Result; +import com.muyu.common.core.utils.poi.ExcelUtil; +import com.muyu.common.security.utils.SecurityUtils; +import org.springframework.validation.annotation.Validated; +import com.muyu.common.core.web.page.TableDataInfo; + +/** + * 预警策略Controller + * + * @author muyu + * @date 2024-09-20 + */ +@RestController +@RequestMapping("/strategy") +public class WarnStrategyController extends BaseController +{ + @Resource + private IWarnStrategyService warnStrategyService; + + /** + * 查询预警策略列表 + */ + @RequiresPermissions("platform:strategy:list") + @GetMapping("/list") + public Result> list(WarnStrategy warnStrategy) + { + startPage(); + List list = warnStrategyService.selectWarnStrategyList(warnStrategy); + return getDataTable(list); + } + + /** + * 导出预警策略列表 + */ + @RequiresPermissions("platform:strategy:export") + @PostMapping("/export") + public void export(HttpServletResponse response, WarnStrategy warnStrategy) + { + List list = warnStrategyService.selectWarnStrategyList(warnStrategy); + ExcelUtil util = new ExcelUtil(WarnStrategy.class); + util.exportExcel(response, list, "预警策略数据"); + } + + /** + * 获取预警策略详细信息 + */ + @RequiresPermissions("platform:strategy:query") + @GetMapping(value = "/{id}") + public Result> getInfo(@PathVariable("id") Long id) + { + return success(warnStrategyService.selectWarnStrategyById(id)); + } + + /** + * 新增预警策略 + */ + @RequiresPermissions("platform:strategy:add") + @PostMapping + public Result add( + @Validated @RequestBody WarnStrategy warnStrategy) + { + if (warnStrategyService.checkIdUnique(warnStrategy)) { + return error("新增 预警策略 '" + warnStrategy + "'失败,预警策略已存在"); + } + return toAjax(warnStrategyService.save(warnStrategy)); + } + + /** + * 修改预警策略 + */ + @RequiresPermissions("platform:strategy:edit") + @PutMapping + public Result edit( + @Validated @RequestBody WarnStrategy warnStrategy) + { + if (!warnStrategyService.checkIdUnique(warnStrategy)) { + return error("修改 预警策略 '" + warnStrategy + "'失败,预警策略不存在"); + } + return toAjax(warnStrategyService.updateById(warnStrategy)); + } + + /** + * 删除预警策略 + */ + @RequiresPermissions("platform:strategy:remove") + @DeleteMapping("/{ids}") + public Result remove(@PathVariable("ids") Long[] ids) + { + warnStrategyService.removeBatchByIds(Arrays.asList(ids)); + return success(); + } +} diff --git a/cloud-modules/cloud-modules-warn/cloud-warn-server/src/main/java/com/muyu/platform/controller/WxTestController.java b/cloud-modules/cloud-modules-warn/cloud-warn-server/src/main/java/com/muyu/platform/controller/WxTestController.java new file mode 100644 index 0000000..c7b15ee --- /dev/null +++ b/cloud-modules/cloud-modules-warn/cloud-warn-server/src/main/java/com/muyu/platform/controller/WxTestController.java @@ -0,0 +1,153 @@ +package com.muyu.platform.controller; + + +import com.muyu.platform.domain.wx.Message; +import com.muyu.platform.message.Article; +import com.muyu.platform.message.NewMessage; +import com.muyu.platform.util.TokenUtil; +import com.thoughtworks.xstream.XStream; +import io.micrometer.common.util.StringUtils; +import jakarta.servlet.ServletInputStream; +import jakarta.servlet.http.HttpServletRequest; +import org.dom4j.Document; +import org.dom4j.DocumentException; +import org.dom4j.Element; +import org.dom4j.io.SAXReader; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import java.io.IOException; +import java.security.MessageDigest; +import java.security.NoSuchAlgorithmException; +import java.util.*; + +/** + * @Author: Chen + * @name:GetWxController + */ +@RestController +public class WxTestController { + + + @PostMapping("/") + public String receiveMessage(HttpServletRequest request) { + ServletInputStream inputStream = null; + HashMap map = new HashMap<>(); + try { + inputStream = request.getInputStream(); + SAXReader saxReader = new SAXReader(); + //读取request输入流,获得Document对象 + Document document = saxReader.read(inputStream); + //获得root结点 + Element rootElement = document.getRootElement(); + //获取所有的子节点 + List elements = rootElement.elements(); + for (Element element : elements) { + map.put(element.getName(), element.getStringValue()); + } + + + } catch (IOException e) { + throw new RuntimeException(e); + } catch (DocumentException e) { + throw new RuntimeException(e); + } + System.out.println(map); + //回复消息 + String message = ""; + if ("图文".equals(map.get("Content"))) { + message = getReplyNewsMessage(map); + } else { + message = getReplyMessage(map); + + } + return message; + } + + /** + * 获得回复的消息内容 + * + * @param map + * @return + */ + private String getReplyMessage(HashMap map) { + Message message = new Message(); + message.setToUserName(map.get("FromUserName")); + message.setFromUserName(map.get("ToUserName")); +// message.setMsgType(map.get("MsgType")); + message.setMsgType("text"); + message.setCreateTime(System.currentTimeMillis() / 1000); + message.setContent("自动回复:您好"); + //XStream将java对象转换为xml字符串 + XStream xStream = new XStream(); + xStream.processAnnotations(Message.class); + String xml = xStream.toXML(message); + return xml; + } + + + @GetMapping("/") + public String check(@RequestParam("signature") String signature, @RequestParam("timestamp") String timestamp, + @RequestParam("nonce") String nonce, @RequestParam("echostr") String echostr) { + + //1.将token、timestamp、nonce三个参数进行字典排序 + String token = "asdasd"; + List list = Arrays.asList(token, timestamp, nonce); + //排序 + Collections.sort(list); + //2.将三个参数字符串拼接成一个字符串进行sha1加密 + StringBuilder stringBuilder = new StringBuilder(); + for (String s : list) { + stringBuilder.append(s); + } + //加密 + try { + MessageDigest instance = MessageDigest.getInstance("sha1"); + //使用sha1进行加密,获得byte数组 + byte[] digest = instance.digest(stringBuilder.toString().getBytes()); + StringBuilder sum = new StringBuilder(); + for (byte b : digest) { + sum.append(Integer.toHexString((b >> 4) & 15)); + sum.append(Integer.toHexString(b & 15)); + } + //3.开发者获得加密后的字符串可与signature对比,标识该请求来源于微信 + if (!StringUtils.isEmpty(signature) && signature.equals(sum.toString())) { + return echostr; + } + + } catch (NoSuchAlgorithmException e) { + throw new RuntimeException(e); + } + return null; + } + + @PostMapping("/test") + public void test() { + String accessToken = TokenUtil.getAccessToken(); + System.out.println(accessToken); + } + + private String getReplyNewsMessage(Map map) { + NewMessage newsMessage = new NewMessage(); + newsMessage.setToUserName(map.get("FromUserName")); + newsMessage.setFromUserName(map.get("ToUserName")); + newsMessage.setMsgType("news"); + newsMessage.setCreateTime(System.currentTimeMillis() / 1000); + newsMessage.setArticleCount(1); + List
articles = new ArrayList<>(); + Article article = new Article(); + article.setTitle("oneone哦恩恩"); + article.setDescription("详细描述--------------信息"); + article.setUrl("https://www.baidu.com"); + article.setPicUrl("http://mmbiz.qpic.cn/mmbiz_jpg/RiaWwmABEMmkFKQMeQZLLYaxknlzE9CxSozVSH42iaXiaQcia5hPPUicuNYbS8dG99zsMZ1ic266ialM42Mbn8SkN54kA/0"); + articles.add(article); + newsMessage.setArticles(articles); + //XStream将java对象转换为xml字符串 + XStream xStream = new XStream(); + xStream.processAnnotations(NewMessage.class); + String xml = xStream.toXML(newsMessage); + return xml; + } +} diff --git a/cloud-modules/cloud-modules-warn/cloud-warn-server/src/main/java/com/muyu/platform/mapper/WarnLogsMapper.java b/cloud-modules/cloud-modules-warn/cloud-warn-server/src/main/java/com/muyu/platform/mapper/WarnLogsMapper.java new file mode 100644 index 0000000..69e67b3 --- /dev/null +++ b/cloud-modules/cloud-modules-warn/cloud-warn-server/src/main/java/com/muyu/platform/mapper/WarnLogsMapper.java @@ -0,0 +1,17 @@ +package com.muyu.platform.mapper; + +import java.util.List; +import com.muyu.platform.domain.WarnLogs; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; + +/** + * 预警日志Mapper接口 + * + * @author muyu + * @date 2024-09-20 + */ +@Mapper +public interface WarnLogsMapper extends BaseMapper{ + +} diff --git a/cloud-modules/cloud-modules-warn/cloud-warn-server/src/main/java/com/muyu/platform/mapper/WarnRuleMapper.java b/cloud-modules/cloud-modules-warn/cloud-warn-server/src/main/java/com/muyu/platform/mapper/WarnRuleMapper.java new file mode 100644 index 0000000..a16dfcd --- /dev/null +++ b/cloud-modules/cloud-modules-warn/cloud-warn-server/src/main/java/com/muyu/platform/mapper/WarnRuleMapper.java @@ -0,0 +1,17 @@ +package com.muyu.platform.mapper; + +import java.util.List; +import com.muyu.platform.domain.WarnRule; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; + +/** + * 预警规则Mapper接口 + * + * @author muyu + * @date 2024-09-20 + */ +@Mapper +public interface WarnRuleMapper extends BaseMapper{ + +} diff --git a/cloud-modules/cloud-modules-warn/cloud-warn-server/src/main/java/com/muyu/platform/mapper/WarnStrategyMapper.java b/cloud-modules/cloud-modules-warn/cloud-warn-server/src/main/java/com/muyu/platform/mapper/WarnStrategyMapper.java new file mode 100644 index 0000000..4d9397e --- /dev/null +++ b/cloud-modules/cloud-modules-warn/cloud-warn-server/src/main/java/com/muyu/platform/mapper/WarnStrategyMapper.java @@ -0,0 +1,17 @@ +package com.muyu.platform.mapper; + +import java.util.List; +import com.muyu.platform.domain.WarnStrategy; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; + +/** + * 预警策略Mapper接口 + * + * @author muyu + * @date 2024-09-20 + */ +@Mapper +public interface WarnStrategyMapper extends BaseMapper{ + +} diff --git a/cloud-modules/cloud-modules-warn/cloud-warn-server/src/main/java/com/muyu/platform/message/Article.java b/cloud-modules/cloud-modules-warn/cloud-warn-server/src/main/java/com/muyu/platform/message/Article.java new file mode 100644 index 0000000..7f0b9b5 --- /dev/null +++ b/cloud-modules/cloud-modules-warn/cloud-warn-server/src/main/java/com/muyu/platform/message/Article.java @@ -0,0 +1,28 @@ +package com.muyu.platform.message; + +import com.thoughtworks.xstream.annotations.XStreamAlias; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * @ClassName Article + * @Description 描述 + * @Author Chen + * @Date 2024/9/18 19:13 + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +@XStreamAlias("item") +public class Article { + @XStreamAlias("Title") + private String title; + @XStreamAlias("Description") + private String description; + @XStreamAlias("PicUrl") + private String picUrl; + @XStreamAlias("Url") + private String url; + +} diff --git a/cloud-modules/cloud-modules-warn/cloud-warn-server/src/main/java/com/muyu/platform/message/NewMessage.java b/cloud-modules/cloud-modules-warn/cloud-warn-server/src/main/java/com/muyu/platform/message/NewMessage.java new file mode 100644 index 0000000..17630d2 --- /dev/null +++ b/cloud-modules/cloud-modules-warn/cloud-warn-server/src/main/java/com/muyu/platform/message/NewMessage.java @@ -0,0 +1,34 @@ +package com.muyu.platform.message; + +import com.thoughtworks.xstream.annotations.XStreamAlias; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.List; + +/** + * @ClassName NewMessage + * @Description 描述 + * @Author Chen + * @Date 2024/9/18 19:08 + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +@XStreamAlias("xml") +public class NewMessage { + @XStreamAlias("ToUserName") + private String toUserName; + @XStreamAlias("FromUserName") + private String fromUserName; + @XStreamAlias("CreateTime") + private long createTime; + @XStreamAlias("MsgType") + private String msgType; + @XStreamAlias("ArticleCount") + private int articleCount; + @XStreamAlias("Articles") + private List
articles; + +} diff --git a/cloud-modules/cloud-modules-warn/cloud-warn-server/src/main/java/com/muyu/platform/service/IWarnLogsService.java b/cloud-modules/cloud-modules-warn/cloud-warn-server/src/main/java/com/muyu/platform/service/IWarnLogsService.java new file mode 100644 index 0000000..2b90b3e --- /dev/null +++ b/cloud-modules/cloud-modules-warn/cloud-warn-server/src/main/java/com/muyu/platform/service/IWarnLogsService.java @@ -0,0 +1,37 @@ +package com.muyu.platform.service; + +import java.util.List; +import com.muyu.platform.domain.WarnLogs; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + * 预警日志Service接口 + * + * @author muyu + * @date 2024-09-20 + */ +public interface IWarnLogsService extends IService { + /** + * 精确查询预警日志 + * + * @param id 预警日志主键 + * @return 预警日志 + */ + public WarnLogs selectWarnLogsById(Long id); + + /** + * 查询预警日志列表 + * + * @param warnLogs 预警日志 + * @return 预警日志集合 + */ + public List selectWarnLogsList(WarnLogs warnLogs); + + /** + * 判断 预警日志 id是否唯一 + * @param warnLogs 预警日志 + * @return 结果 + */ + Boolean checkIdUnique(WarnLogs warnLogs); + +} diff --git a/cloud-modules/cloud-modules-warn/cloud-warn-server/src/main/java/com/muyu/platform/service/IWarnRuleService.java b/cloud-modules/cloud-modules-warn/cloud-warn-server/src/main/java/com/muyu/platform/service/IWarnRuleService.java new file mode 100644 index 0000000..cf3aedc --- /dev/null +++ b/cloud-modules/cloud-modules-warn/cloud-warn-server/src/main/java/com/muyu/platform/service/IWarnRuleService.java @@ -0,0 +1,37 @@ +package com.muyu.platform.service; + +import java.util.List; +import com.muyu.platform.domain.WarnRule; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + * 预警规则Service接口 + * + * @author muyu + * @date 2024-09-20 + */ +public interface IWarnRuleService extends IService { + /** + * 精确查询预警规则 + * + * @param id 预警规则主键 + * @return 预警规则 + */ + public WarnRule selectWarnRuleById(Long id); + + /** + * 查询预警规则列表 + * + * @param warnRule 预警规则 + * @return 预警规则集合 + */ + public List selectWarnRuleList(WarnRule warnRule); + + /** + * 判断 预警规则 id是否唯一 + * @param warnRule 预警规则 + * @return 结果 + */ + Boolean checkIdUnique(WarnRule warnRule); + +} diff --git a/cloud-modules/cloud-modules-warn/cloud-warn-server/src/main/java/com/muyu/platform/service/IWarnStrategyService.java b/cloud-modules/cloud-modules-warn/cloud-warn-server/src/main/java/com/muyu/platform/service/IWarnStrategyService.java new file mode 100644 index 0000000..d83376b --- /dev/null +++ b/cloud-modules/cloud-modules-warn/cloud-warn-server/src/main/java/com/muyu/platform/service/IWarnStrategyService.java @@ -0,0 +1,37 @@ +package com.muyu.platform.service; + +import java.util.List; +import com.muyu.platform.domain.WarnStrategy; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + * 预警策略Service接口 + * + * @author muyu + * @date 2024-09-20 + */ +public interface IWarnStrategyService extends IService { + /** + * 精确查询预警策略 + * + * @param id 预警策略主键 + * @return 预警策略 + */ + public WarnStrategy selectWarnStrategyById(Long id); + + /** + * 查询预警策略列表 + * + * @param warnStrategy 预警策略 + * @return 预警策略集合 + */ + public List selectWarnStrategyList(WarnStrategy warnStrategy); + + /** + * 判断 预警策略 id是否唯一 + * @param warnStrategy 预警策略 + * @return 结果 + */ + Boolean checkIdUnique(WarnStrategy warnStrategy); + +} diff --git a/cloud-modules/cloud-modules-warn/cloud-warn-server/src/main/java/com/muyu/platform/service/impl/WarnLogsServiceImpl.java b/cloud-modules/cloud-modules-warn/cloud-warn-server/src/main/java/com/muyu/platform/service/impl/WarnLogsServiceImpl.java new file mode 100644 index 0000000..32fc441 --- /dev/null +++ b/cloud-modules/cloud-modules-warn/cloud-warn-server/src/main/java/com/muyu/platform/service/impl/WarnLogsServiceImpl.java @@ -0,0 +1,92 @@ +package com.muyu.platform.service.impl; + +import java.util.List; +import org.springframework.stereotype.Service; +import com.muyu.platform.mapper.WarnLogsMapper; +import com.muyu.platform.domain.WarnLogs; +import com.muyu.platform.service.IWarnLogsService; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.muyu.common.core.utils.StringUtils; +import org.springframework.util.Assert; + +/** + * 预警日志Service业务层处理 + * + * @author muyu + * @date 2024-09-20 + */ +@Service +public class WarnLogsServiceImpl + extends ServiceImpl + implements IWarnLogsService { + + /** + * 精确查询预警日志 + * + * @param id 预警日志主键 + * @return 预警日志 + */ + @Override + public WarnLogs selectWarnLogsById(Long id) + { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + Assert.notNull(id, "id不可为空"); + queryWrapper.eq(WarnLogs::getId, id); + return this.getOne(queryWrapper); + } + + + /** + * 查询预警日志列表 + * + * @param warnLogs 预警日志 + * @return 预警日志 + */ + @Override + public List selectWarnLogsList(WarnLogs warnLogs) + { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + if (StringUtils.isNotEmpty(warnLogs.getVin())){ + queryWrapper.eq(WarnLogs::getVin, warnLogs.getVin()); + } + if (StringUtils.isNotNull(warnLogs.getWarnRuleId())){ + queryWrapper.eq(WarnLogs::getWarnRuleId, warnLogs.getWarnRuleId()); + } + if (StringUtils.isNotNull(warnLogs.getStartTime())){ + queryWrapper.eq(WarnLogs::getStartTime, warnLogs.getStartTime()); + } + if (StringUtils.isNotNull(warnLogs.getEndTime())){ + queryWrapper.eq(WarnLogs::getEndTime, warnLogs.getEndTime()); + } + if (StringUtils.isNotNull(warnLogs.getMaxValue())){ + queryWrapper.eq(WarnLogs::getMaxValue, warnLogs.getMaxValue()); + } + if (StringUtils.isNotNull(warnLogs.getMinValue())){ + queryWrapper.eq(WarnLogs::getMinValue, warnLogs.getMinValue()); + } + if (StringUtils.isNotNull(warnLogs.getAvgValue())){ + queryWrapper.eq(WarnLogs::getAvgValue, warnLogs.getAvgValue()); + } + if (StringUtils.isNotNull(warnLogs.getMedianValue())){ + queryWrapper.eq(WarnLogs::getMedianValue, warnLogs.getMedianValue()); + } + if (StringUtils.isNotNull(warnLogs.getStatus())){ + queryWrapper.eq(WarnLogs::getStatus, warnLogs.getStatus()); + } + return this.list(queryWrapper); + } + + /** + * 唯一 判断 + * @param warnLogs 预警日志 + * @return 预警日志 + */ + @Override + public Boolean checkIdUnique(WarnLogs warnLogs) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(WarnLogs::getId, warnLogs.getId()); + return this.count(queryWrapper) > 0; + } + +} diff --git a/cloud-modules/cloud-modules-warn/cloud-warn-server/src/main/java/com/muyu/platform/service/impl/WarnRuleServiceImpl.java b/cloud-modules/cloud-modules-warn/cloud-warn-server/src/main/java/com/muyu/platform/service/impl/WarnRuleServiceImpl.java new file mode 100644 index 0000000..fddf687 --- /dev/null +++ b/cloud-modules/cloud-modules-warn/cloud-warn-server/src/main/java/com/muyu/platform/service/impl/WarnRuleServiceImpl.java @@ -0,0 +1,87 @@ +package com.muyu.platform.service.impl; + +import java.util.List; + +import com.muyu.platform.mapper.WarnRuleMapper; +import org.springframework.stereotype.Service; +import com.muyu.platform.domain.WarnRule; +import com.muyu.platform.service.IWarnRuleService; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.muyu.common.core.utils.StringUtils; +import org.springframework.util.Assert; + +/** + * 预警规则Service业务层处理 + * + * @author muyu + * @date 2024-09-20 + */ +@Service +public class WarnRuleServiceImpl + extends ServiceImpl + implements IWarnRuleService { + + /** + * 精确查询预警规则 + * + * @param id 预警规则主键 + * @return 预警规则 + */ + @Override + public WarnRule selectWarnRuleById(Long id) + { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + Assert.notNull(id, "id不可为空"); + queryWrapper.eq(WarnRule::getId, id); + return this.getOne(queryWrapper); + } + + + /** + * 查询预警规则列表 + * + * @param warnRule 预警规则 + * @return 预警规则 + */ + @Override + public List selectWarnRuleList(WarnRule warnRule) + { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + if (StringUtils.isNotEmpty(warnRule.getRuleName())){ + queryWrapper.like(WarnRule::getRuleName, warnRule.getRuleName()); + } + if (StringUtils.isNotNull(warnRule.getStrategyId())){ + queryWrapper.eq(WarnRule::getStrategyId, warnRule.getStrategyId()); + } + if (StringUtils.isNotNull(warnRule.getMsgTypeId())){ + queryWrapper.eq(WarnRule::getMsgTypeId, warnRule.getMsgTypeId()); + } + if (StringUtils.isNotNull(warnRule.getSlideTime())){ + queryWrapper.eq(WarnRule::getSlideTime, warnRule.getSlideTime()); + } + if (StringUtils.isNotNull(warnRule.getSlideFrequency())){ + queryWrapper.eq(WarnRule::getSlideFrequency, warnRule.getSlideFrequency()); + } + if (StringUtils.isNotNull(warnRule.getMaxValue())){ + queryWrapper.eq(WarnRule::getMaxValue, warnRule.getMaxValue()); + } + if (StringUtils.isNotNull(warnRule.getMinValue())){ + queryWrapper.eq(WarnRule::getMinValue, warnRule.getMinValue()); + } + return this.list(queryWrapper); + } + + /** + * 唯一 判断 + * @param warnRule 预警规则 + * @return 预警规则 + */ + @Override + public Boolean checkIdUnique(WarnRule warnRule) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(WarnRule::getId, warnRule.getId()); + return this.count(queryWrapper) > 0; + } + +} diff --git a/cloud-modules/cloud-modules-warn/cloud-warn-server/src/main/java/com/muyu/platform/service/impl/WarnStrategyServiceImpl.java b/cloud-modules/cloud-modules-warn/cloud-warn-server/src/main/java/com/muyu/platform/service/impl/WarnStrategyServiceImpl.java new file mode 100644 index 0000000..738bb3f --- /dev/null +++ b/cloud-modules/cloud-modules-warn/cloud-warn-server/src/main/java/com/muyu/platform/service/impl/WarnStrategyServiceImpl.java @@ -0,0 +1,74 @@ +package com.muyu.platform.service.impl; + +import java.util.List; +import org.springframework.stereotype.Service; +import com.muyu.platform.mapper.WarnStrategyMapper; +import com.muyu.platform.domain.WarnStrategy; +import com.muyu.platform.service.IWarnStrategyService; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.muyu.common.core.utils.StringUtils; +import org.springframework.util.Assert; + +/** + * 预警策略Service业务层处理 + * + * @author muyu + * @date 2024-09-20 + */ +@Service +public class WarnStrategyServiceImpl + extends ServiceImpl + implements IWarnStrategyService { + + /** + * 精确查询预警策略 + * + * @param id 预警策略主键 + * @return 预警策略 + */ + @Override + public WarnStrategy selectWarnStrategyById(Long id) + { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + Assert.notNull(id, "id不可为空"); + queryWrapper.eq(WarnStrategy::getId, id); + return this.getOne(queryWrapper); + } + + + /** + * 查询预警策略列表 + * + * @param warnStrategy 预警策略 + * @return 预警策略 + */ + @Override + public List selectWarnStrategyList(WarnStrategy warnStrategy) + { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + if (StringUtils.isNotNull(warnStrategy.getCarTypeId())){ + queryWrapper.eq(WarnStrategy::getCarTypeId, warnStrategy.getCarTypeId()); + } + if (StringUtils.isNotNull(warnStrategy.getStrategyName())){ + queryWrapper.like(WarnStrategy::getStrategyName, warnStrategy.getStrategyName()); + } + if (StringUtils.isNotNull(warnStrategy.getMsgId())){ + queryWrapper.eq(WarnStrategy::getMsgId, warnStrategy.getMsgId()); + } + return this.list(queryWrapper); + } + + /** + * 唯一 判断 + * @param warnStrategy 预警策略 + * @return 预警策略 + */ + @Override + public Boolean checkIdUnique(WarnStrategy warnStrategy) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(WarnStrategy::getId, warnStrategy.getId()); + return this.count(queryWrapper) > 0; + } + +} diff --git a/cloud-modules/cloud-modules-warn/cloud-warn-server/src/main/java/com/muyu/platform/util/OkHttpUtils.java b/cloud-modules/cloud-modules-warn/cloud-warn-server/src/main/java/com/muyu/platform/util/OkHttpUtils.java new file mode 100644 index 0000000..d684491 --- /dev/null +++ b/cloud-modules/cloud-modules-warn/cloud-warn-server/src/main/java/com/muyu/platform/util/OkHttpUtils.java @@ -0,0 +1,36 @@ +package com.muyu.platform.util; + +import okhttp3.*; + +import java.io.IOException; + +public class OkHttpUtils { + + private static final OkHttpClient client = new OkHttpClient(); + + public static String sendGetRequest(String urlString) { + Request request = new Request.Builder() + .url(urlString) + .build(); + try (Response response = client.newCall(request).execute()) { + return response.body().string(); + } catch (IOException e) { + e.printStackTrace(); + return null; + } + } + + public static String sendPostRequest(String urlString, String params) { + RequestBody requestBody = RequestBody.create(params, MediaType.parse("application/json; charset=utf-8")); + Request request = new Request.Builder() + .url(urlString) + .post(requestBody) + .build(); + try (Response response = client.newCall(request).execute()) { + return response.body().string(); + } catch (IOException e) { + e.printStackTrace(); + return null; + } + } +} diff --git a/cloud-modules/cloud-modules-warn/cloud-warn-server/src/main/java/com/muyu/platform/util/TokenUtil.java b/cloud-modules/cloud-modules-warn/cloud-warn-server/src/main/java/com/muyu/platform/util/TokenUtil.java new file mode 100644 index 0000000..ddf7109 --- /dev/null +++ b/cloud-modules/cloud-modules-warn/cloud-warn-server/src/main/java/com/muyu/platform/util/TokenUtil.java @@ -0,0 +1,35 @@ +package com.muyu.platform.util; + +import com.alibaba.fastjson2.JSON; +import com.muyu.platform.domain.wx.AccessToken; +import org.springframework.stereotype.Component; + +/** + * @Author: Chen //redisService.setCacheObject("WECHAT_TOKEN",wechatToken.getAccessToken(),wechatToken.getExpiresIn(), TimeUnit.SECONDS); + * @name:TokenUtil + */ +@Component +public class TokenUtil { + private final static String APP_ID = "wx591e88abd208c297"; + + private final static String APP_SECRET = "64d92a751ef24acc8d37b2e6d7672491"; + + private static AccessToken accessToken = new AccessToken(); + + + public static void getToken() { + String url = String.format("https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=%s&secret=%s", APP_ID, APP_SECRET); + String request = OkHttpUtils.sendGetRequest(url); + AccessToken wechatToken = JSON.parseObject(request, AccessToken.class); + if (wechatToken != null) { + accessToken.setExpiresTime(wechatToken.getExpires_in()); + accessToken.setAccess_token(wechatToken.getAccess_token()); + } + } + + public static String getAccessToken() { + getToken(); + return accessToken.getAccess_token(); + } + +} diff --git a/cloud-modules/cloud-modules-warn/cloud-warn-server/src/main/resources/banner.txt b/cloud-modules/cloud-modules-warn/cloud-warn-server/src/main/resources/banner.txt new file mode 100644 index 0000000..0dd5eee --- /dev/null +++ b/cloud-modules/cloud-modules-warn/cloud-warn-server/src/main/resources/banner.txt @@ -0,0 +1,2 @@ +Spring Boot Version: ${spring-boot.version} +Spring Application Name: ${spring.application.name} diff --git a/cloud-modules/cloud-modules-warn/cloud-warn-server/src/main/resources/bootstrap.yml b/cloud-modules/cloud-modules-warn/cloud-warn-server/src/main/resources/bootstrap.yml new file mode 100644 index 0000000..e2b3575 --- /dev/null +++ b/cloud-modules/cloud-modules-warn/cloud-warn-server/src/main/resources/bootstrap.yml @@ -0,0 +1,48 @@ +# Tomcat +server: + port: 10003 + +# nacos线上地址 +nacos: + addr: 106.54.193.225:8848 + user-name: nacos + password: nacos + namespace: one + +# Spring +spring: + main: + allow-bean-definition-overriding: true + application: + # 应用名称 + name: cloud-warn + profiles: + # 环境配置 + active: dev + cloud: + nacos: + discovery: + # 服务注册地址 + server-addr: ${nacos.addr} + # 命名空间 + namespace: ${nacos.namespace} + config: + # 服务注册地址 + server-addr: ${nacos.addr} + # 命名空间 + namespace: ${nacos.namespace} + # 配置文件格式 + file-extension: yml + # 共享配置 + shared-configs: + # 系统共享配置 + - application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension} + # 系统环境Config共享配置 + - application-config-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension} + # xxl-job 配置文件 + - application-xxl-config-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension} + # engine配置 + - engine-config-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension} +logging: + level: + com.muyu.system.mapper: DEBUG diff --git a/cloud-modules/cloud-modules-warn/cloud-warn-server/src/main/resources/logback/dev.xml b/cloud-modules/cloud-modules-warn/cloud-warn-server/src/main/resources/logback/dev.xml new file mode 100644 index 0000000..8b99495 --- /dev/null +++ b/cloud-modules/cloud-modules-warn/cloud-warn-server/src/main/resources/logback/dev.xml @@ -0,0 +1,74 @@ + + + + + + + + + + + ${log.pattern} + + + + + + ${log.path}/info.log + + + + ${log.path}/info.%d{yyyy-MM-dd}.log + + 60 + + + ${log.pattern} + + + + INFO + + ACCEPT + + DENY + + + + + ${log.path}/error.log + + + + ${log.path}/error.%d{yyyy-MM-dd}.log + + 60 + + + ${log.pattern} + + + + ERROR + + ACCEPT + + DENY + + + + + + + + + + + + + + + + + + diff --git a/cloud-modules/cloud-modules-warn/cloud-warn-server/src/main/resources/logback/prod.xml b/cloud-modules/cloud-modules-warn/cloud-warn-server/src/main/resources/logback/prod.xml new file mode 100644 index 0000000..0fe8654 --- /dev/null +++ b/cloud-modules/cloud-modules-warn/cloud-warn-server/src/main/resources/logback/prod.xml @@ -0,0 +1,81 @@ + + + + + + + + + + + + ${log.sky.pattern} + + + + + + ${log.path}/info.log + + + + ${log.path}/info.%d{yyyy-MM-dd}.log + + 60 + + + + + INFO + + ACCEPT + + DENY + + + + + ${log.path}/error.log + + + + ${log.path}/error.%d{yyyy-MM-dd}.log + + 60 + + + + + ERROR + + ACCEPT + + DENY + + + + + + + + ${log.sky.pattern} + + + + + + + + + + + + + + + + + + + + diff --git a/cloud-modules/cloud-modules-warn/cloud-warn-server/src/main/resources/logback/test.xml b/cloud-modules/cloud-modules-warn/cloud-warn-server/src/main/resources/logback/test.xml new file mode 100644 index 0000000..0fe8654 --- /dev/null +++ b/cloud-modules/cloud-modules-warn/cloud-warn-server/src/main/resources/logback/test.xml @@ -0,0 +1,81 @@ + + + + + + + + + + + + ${log.sky.pattern} + + + + + + ${log.path}/info.log + + + + ${log.path}/info.%d{yyyy-MM-dd}.log + + 60 + + + + + INFO + + ACCEPT + + DENY + + + + + ${log.path}/error.log + + + + ${log.path}/error.%d{yyyy-MM-dd}.log + + 60 + + + + + ERROR + + ACCEPT + + DENY + + + + + + + + ${log.sky.pattern} + + + + + + + + + + + + + + + + + + + + diff --git a/cloud-modules/cloud-modules-warn/cloud-warn-server/src/main/resources/mapper/platform/WarnLogsMapper.xml b/cloud-modules/cloud-modules-warn/cloud-warn-server/src/main/resources/mapper/platform/WarnLogsMapper.xml new file mode 100644 index 0000000..ec2bd4d --- /dev/null +++ b/cloud-modules/cloud-modules-warn/cloud-warn-server/src/main/resources/mapper/platform/WarnLogsMapper.xml @@ -0,0 +1,96 @@ + + + + + + + + + + + + + + + + + + + select id, vin, warn_rule_id, start_time, end_time, max_value, min_value, avg_value, median_value, status from warn_logs + + + + + + + + insert into warn_logs + + vin, + warn_rule_id, + start_time, + end_time, + max_value, + min_value, + avg_value, + median_value, + status, + + + #{vin}, + #{warnRuleId}, + #{startTime}, + #{endTime}, + #{maxValue}, + #{minValue}, + #{avgValue}, + #{medianValue}, + #{status}, + + + + + update warn_logs + + vin = #{vin}, + warn_rule_id = #{warnRuleId}, + start_time = #{startTime}, + end_time = #{endTime}, + max_value = #{maxValue}, + min_value = #{minValue}, + avg_value = #{avgValue}, + median_value = #{medianValue}, + status = #{status}, + + where id = #{id} + + + + delete from warn_logs where id = #{id} + + + + delete from warn_logs where id in + + #{id} + + + \ No newline at end of file diff --git a/cloud-modules/cloud-modules-warn/cloud-warn-server/src/main/resources/mapper/platform/WarnRuleMapper.xml b/cloud-modules/cloud-modules-warn/cloud-warn-server/src/main/resources/mapper/platform/WarnRuleMapper.xml new file mode 100644 index 0000000..39e0ea9 --- /dev/null +++ b/cloud-modules/cloud-modules-warn/cloud-warn-server/src/main/resources/mapper/platform/WarnRuleMapper.xml @@ -0,0 +1,86 @@ + + + + + + + + + + + + + + + + + select id, rule_name, strategy_id, msg_type_id, slide_time, slide_frequency, max_value, min_value from warn_rule + + + + + + + + insert into warn_rule + + rule_name, + strategy_id, + msg_type_id, + slide_time, + slide_frequency, + max_value, + min_value, + + + #{ruleName}, + #{strategyId}, + #{msgTypeId}, + #{slideTime}, + #{slideFrequency}, + #{maxValue}, + #{minValue}, + + + + + update warn_rule + + rule_name = #{ruleName}, + strategy_id = #{strategyId}, + msg_type_id = #{msgTypeId}, + slide_time = #{slideTime}, + slide_frequency = #{slideFrequency}, + max_value = #{maxValue}, + min_value = #{minValue}, + + where id = #{id} + + + + delete from warn_rule where id = #{id} + + + + delete from warn_rule where id in + + #{id} + + + \ No newline at end of file diff --git a/cloud-modules/cloud-modules-warn/cloud-warn-server/src/main/resources/mapper/platform/WarnStrategyMapper.xml b/cloud-modules/cloud-modules-warn/cloud-warn-server/src/main/resources/mapper/platform/WarnStrategyMapper.xml new file mode 100644 index 0000000..ef7feb6 --- /dev/null +++ b/cloud-modules/cloud-modules-warn/cloud-warn-server/src/main/resources/mapper/platform/WarnStrategyMapper.xml @@ -0,0 +1,66 @@ + + + + + + + + + + + + + select id, car_type_id, strategy_name, msg_id from warn_strategy + + + + + + + + insert into warn_strategy + + car_type_id, + strategy_name, + msg_id, + + + #{carTypeId}, + #{strategyName}, + #{msgId}, + + + + + update warn_strategy + + car_type_id = #{carTypeId}, + strategy_name = #{strategyName}, + msg_id = #{msgId}, + + where id = #{id} + + + + delete from warn_strategy where id = #{id} + + + + delete from warn_strategy where id in + + #{id} + + + \ No newline at end of file