From 49aaecfb0617b0e6043147c86f3d303e9f24867e Mon Sep 17 00:00:00 2001 From: liulin <lin.liu@88.com> Date: 星期三, 09 七月 2025 20:27:56 +0800 Subject: [PATCH] 修改yml配置 --- src/main/java/com/fengdu/gas/entity/response/facility/FacilityCount.java | 35 src/main/java/com/fengdu/gas/host/controller/WaterFacilityParameterController.java | 6 src/main/java/com/fengdu/gas/entity/request/alarmscheme/ReqModifyAlarmScheme.java | 62 + src/main/java/com/fengdu/gas/entity/request/test/TestPayVO.java | 28 src/test/java/com/fengdu/gas/GenCodeGauss.java | 2 src/main/java/com/fengdu/gas/entity/request/waterfacility/ReqCreateWaterFacility.java | 4 src/main/java/com/fengdu/gas/entity/search/SearchFacilityAlarmRecord.java | 5 src/main/java/com/fengdu/gas/service/WaterFacilityService.java | 209 ++-- src/main/resources/application-prod.yml | 2 src/main/java/com/fengdu/gas/host/controller/AlarmSchemeController.java | 113 ++ src/main/java/com/fengdu/gas/host/controller/TestInfoServiceController.java | 214 ----- src/main/java/com/fengdu/gas/entity/response/alarm/FacilityAlarm.java | 23 pom.xml | 2 src/main/java/com/fengdu/gas/host/mqtt/PushCallback.java | 23 src/main/java/com/fengdu/gas/repository/po/FacilityAlarmRecordPO.java | 20 src/main/java/com/fengdu/gas/service/DataUploadRecordService.java | 28 src/main/java/com/fengdu/gas/entity/search/SearchAlarmScheme.java | 14 src/main/java/com/fengdu/gas/repository/po/WaterMonitoryPointPO.java | 10 src/main/resources/application-dev.yml | 8 src/main/java/com/fengdu/gas/repository/mapper/FacilityAlarmRecordMapper.java | 11 src/main/java/com/fengdu/gas/repository/vo/UserWorkOrderVO.java | 54 src/main/java/com/fengdu/gas/service/FacilityAlarmRecordService.java | 42 src/main/java/com/fengdu/gas/common/enums/EFacilityState.java | 56 + src/main/java/com/fengdu/gas/service/convert/AlarmSchemeConvert.java | 48 + src/main/java/com/fengdu/gas/host/controller/visualized/FacilityDataController.java | 17 src/main/java/com/fengdu/gas/service/AlarmSchemeService.java | 245 ++++++ src/main/java/com/fengdu/gas/entity/request/waterfacilityparameter/ReqAddParameter.java | 17 src/main/java/com/fengdu/gas/host/controller/visualized/StatisticsDataController.java | 31 src/main/java/com/fengdu/gas/entity/request/facilityalarmrecord/ReqCreateFacilityAlarmRecord.java | 10 src/main/java/com/fengdu/gas/repository/mapper/AlarmSchemeMapper.java | 10 src/main/java/com/fengdu/gas/service/TestInfoService.java | 442 +++++----- src/main/java/com/fengdu/gas/repository/impl/WaterFacilityParameterMapperImpl.java | 7 src/main/java/com/fengdu/gas/service/WaterFacilityParameterService.java | 43 /dev/null | 36 src/main/java/com/fengdu/gas/entity/request/alarmscheme/ReqCreateAlarmScheme.java | 58 + src/main/java/com/fengdu/gas/repository/po/WaterFacilityPO.java | 10 src/main/java/com/fengdu/gas/repository/vo/AlarmSchemeVO.java | 54 + src/main/java/com/fengdu/gas/repository/impl/FacilityAlarmRecordMapperImpl.java | 5 src/main/java/com/fengdu/gas/repository/po/UserWorkOrderPO.java | 10 src/main/java/com/fengdu/gas/host/controller/visualized/HomeDataController.java | 58 + src/main/java/com/fengdu/gas/repository/impl/AlarmSchemeMapperImpl.java | 137 +++ src/main/java/com/fengdu/gas/entity/response/facility/FacilityData.java | 53 + src/main/java/com/fengdu/gas/service/UserWorkOrderService.java | 14 src/main/java/com/fengdu/gas/repository/po/AlarmSchemePO.java | 90 ++ 44 files changed, 1,746 insertions(+), 620 deletions(-) diff --git a/pom.xml b/pom.xml index 2c1b1b5..d43a014 100644 --- a/pom.xml +++ b/pom.xml @@ -320,7 +320,7 @@ <!--指定生成文档的使用的配置文件,配置文件放在自己的 目中 项 --> <configFile>./src/main/resources/smart-doc.json</configFile> <!--指定 目名称 项 --> - <projectName>xxx项目-xxx服务-接口文档</projectName> + <projectName>丰都气体监测项目-api服务-接口文档</projectName> <!-- <!–smart-doc 实现自动分析依赖树加载第三方 依 的源 ,如果一些框架依 加 不到 致 , 使用 赖 码 赖库 载 导 报错 这时请 excludes 排除掉–> <excludes> diff --git a/src/main/java/com/fengdu/gas/common/enums/EFacilityState.java b/src/main/java/com/fengdu/gas/common/enums/EFacilityState.java new file mode 100644 index 0000000..351bc8f --- /dev/null +++ b/src/main/java/com/fengdu/gas/common/enums/EFacilityState.java @@ -0,0 +1,56 @@ +package com.fengdu.gas.common.enums; + +import java.util.Arrays; +import java.util.Objects; + +public enum EFacilityState { + NO("停止", 0), + YES("运行", 1), + + ONE("一级报警", 2), + + TWO("二级报警",3) + ; + + + private String desc;//枚举描述 + private Integer value;//枚举值 + + public Integer getValue() { + return value; + } + public String getDesc() { + return desc; + } + + /** + * 构造方法 + * @param desc 枚举描述 + * @param value 枚举值 + */ + EFacilityState(String desc, Integer value) { + this.desc = desc; + this.value = value; + } + + /** + * 根据值获取枚举 + * + * @param value 枚举值 + * @return + */ + public static EFacilityState getByValue(Integer value) { + return Arrays.stream(EFacilityState.values()) + .filter(e -> Objects.equals(e.getValue(), value)) + .findFirst() + .orElse(null); + } + + @Override + public String toString() { + return "EFacilityState{" + + "desc='" + desc + '\'' + + ", value=" + value + + '}'; + } +} diff --git a/src/main/java/com/fengdu/gas/entity/request/alarmscheme/ReqCreateAlarmScheme.java b/src/main/java/com/fengdu/gas/entity/request/alarmscheme/ReqCreateAlarmScheme.java new file mode 100644 index 0000000..5cdedaf --- /dev/null +++ b/src/main/java/com/fengdu/gas/entity/request/alarmscheme/ReqCreateAlarmScheme.java @@ -0,0 +1,58 @@ +/** +# __----~~~~~~~~~~~------___ +# . . ~~//====...... __--~ ~~ +# -. \_|// |||\\ ~~~~~~::::... /~ +# ___-==_ _-~o~ \/ ||| \\ _/~~- +# __---~~~.==~||\=_ -_--~/_-~|- |\\ \\ _/~ +# _-~~ .=~ | \\-_ '-~7 /- / || \ / +# .~ .~ | \\ -_ / /- / || \ / +# / ____ / | \\ ~-_/ /|- _/ .|| \ / +# |~~ ~~|--~~~~--_ \ ~==-/ | \~--===~~ .\ +# ' ~-| /| |-~\~~ __--~~ +# |-~~-_/ | | ~\_ _-~ /\ +# / \ \__ \/~ \__ +# _--~ _/ | .-~~____--~-/ ~~==. +# ((->/~ '.|||' -_| ~~-/ , . _|| +# -_ ~\ ~~---l__i__i__i--~~_/ +# _-~-__ ~) \--______________--~~ +# //.-~~~-~_--~- |-------~~~~~~~~ +# //.-~~~--\ +# 神兽保佑 +# 永无BUG! +*/ +package com.fengdu.gas.entity.request.alarmscheme; + +import lombok.Data; +import java.math.BigDecimal; + +/** + * 报警规则配置 + * @author zr + */ +@Data +public class ReqCreateAlarmScheme { + /** + * 设备参数code + */ + private String columnsCode; + /** + * 参数名称 + */ + private String columnsShow; + /** + * 低报警值 + */ + private BigDecimal lowAlarm; + /** + * 高报警值 + */ + private BigDecimal tallAlarm; + /** + * 通知人员 + */ + private String informUser; + /** + * 备注 + */ + private String remark; +} diff --git a/src/main/java/com/fengdu/gas/entity/request/alarmscheme/ReqModifyAlarmScheme.java b/src/main/java/com/fengdu/gas/entity/request/alarmscheme/ReqModifyAlarmScheme.java new file mode 100644 index 0000000..7557003 --- /dev/null +++ b/src/main/java/com/fengdu/gas/entity/request/alarmscheme/ReqModifyAlarmScheme.java @@ -0,0 +1,62 @@ +/** +# __----~~~~~~~~~~~------___ +# . . ~~//====...... __--~ ~~ +# -. \_|// |||\\ ~~~~~~::::... /~ +# ___-==_ _-~o~ \/ ||| \\ _/~~- +# __---~~~.==~||\=_ -_--~/_-~|- |\\ \\ _/~ +# _-~~ .=~ | \\-_ '-~7 /- / || \ / +# .~ .~ | \\ -_ / /- / || \ / +# / ____ / | \\ ~-_/ /|- _/ .|| \ / +# |~~ ~~|--~~~~--_ \ ~==-/ | \~--===~~ .\ +# ' ~-| /| |-~\~~ __--~~ +# |-~~-_/ | | ~\_ _-~ /\ +# / \ \__ \/~ \__ +# _--~ _/ | .-~~____--~-/ ~~==. +# ((->/~ '.|||' -_| ~~-/ , . _|| +# -_ ~\ ~~---l__i__i__i--~~_/ +# _-~-__ ~) \--______________--~~ +# //.-~~~-~_--~- |-------~~~~~~~~ +# //.-~~~--\ +# 神兽保佑 +# 永无BUG! +*/ +package com.fengdu.gas.entity.request.alarmscheme; + +import lombok.Data; +import java.math.BigDecimal; + +/** + * 报警规则配置 + * @author zr + */ +@Data +public class ReqModifyAlarmScheme { + /** + * null + */ + private Long id; + /** + * 设备参数code + */ + private String columnsCode; + /** + * 参数名称 + */ + private String columnsShow; + /** + * 低报警值 + */ + private BigDecimal lowAlarm; + /** + * 高报警值 + */ + private BigDecimal tallAlarm; + /** + * 通知人员 + */ + private String informUser; + /** + * 备注 + */ + private String remark; +} diff --git a/src/main/java/com/fengdu/gas/entity/request/facilityalarmrecord/ReqCreateFacilityAlarmRecord.java b/src/main/java/com/fengdu/gas/entity/request/facilityalarmrecord/ReqCreateFacilityAlarmRecord.java index 2cc3e60..f537362 100644 --- a/src/main/java/com/fengdu/gas/entity/request/facilityalarmrecord/ReqCreateFacilityAlarmRecord.java +++ b/src/main/java/com/fengdu/gas/entity/request/facilityalarmrecord/ReqCreateFacilityAlarmRecord.java @@ -54,6 +54,16 @@ * 参数名称 */ private String columnsName; + + private Integer alarmType; + + private String columnsValue; + + private String minValue; + + private String maxValue; + + /** * 报警描述 */ diff --git a/src/main/java/com/fengdu/gas/entity/request/test/TestPayVO.java b/src/main/java/com/fengdu/gas/entity/request/test/TestPayVO.java new file mode 100644 index 0000000..42c79d7 --- /dev/null +++ b/src/main/java/com/fengdu/gas/entity/request/test/TestPayVO.java @@ -0,0 +1,28 @@ +package com.fengdu.gas.entity.request.test; + +import lombok.Data; + +@Data +public class TestPayVO { + private String service; + private String mer_no; + private String account_type; + private String card_no; + private String real_name; + private String bank_code; + private String id_type; + private String id_no; + private String notify_url; + private String goods_name; + private String goods_num; + private String goods_price; + private String goods_type; + private String order_no; + private String order_amount; + private String order_time; + private String currency; + private String pay_comments; + private String remark; + + +} diff --git a/src/main/java/com/fengdu/gas/entity/request/waterfacility/ReqCreateWaterFacility.java b/src/main/java/com/fengdu/gas/entity/request/waterfacility/ReqCreateWaterFacility.java index c0ebb5b..03b3d80 100644 --- a/src/main/java/com/fengdu/gas/entity/request/waterfacility/ReqCreateWaterFacility.java +++ b/src/main/java/com/fengdu/gas/entity/request/waterfacility/ReqCreateWaterFacility.java @@ -47,6 +47,10 @@ */ private Long pointId; /** + * 监控点名称 + */ + private String pointName; + /** * 是否在线 */ private Integer isOnline; diff --git a/src/main/java/com/fengdu/gas/entity/request/waterfacilityparameter/ReqAddParameter.java b/src/main/java/com/fengdu/gas/entity/request/waterfacilityparameter/ReqAddParameter.java new file mode 100644 index 0000000..03f004b --- /dev/null +++ b/src/main/java/com/fengdu/gas/entity/request/waterfacilityparameter/ReqAddParameter.java @@ -0,0 +1,17 @@ +package com.fengdu.gas.entity.request.waterfacilityparameter; + +import lombok.Data; + +import java.util.List; + +@Data +public class ReqAddParameter { + /** + * 设备id + */ + private Long facilityId; + /** + * 参数列表 + */ + private List<ReqCreateWaterFacilityParameter> parameterList; +} diff --git a/src/main/java/com/fengdu/gas/entity/response/alarm/FacilityAlarm.java b/src/main/java/com/fengdu/gas/entity/response/alarm/FacilityAlarm.java new file mode 100644 index 0000000..137dd47 --- /dev/null +++ b/src/main/java/com/fengdu/gas/entity/response/alarm/FacilityAlarm.java @@ -0,0 +1,23 @@ +package com.fengdu.gas.entity.response.alarm; + +import lombok.Data; + +@Data +public class FacilityAlarm { + /** + * 报警名称 + */ + private String name; + /** + * 最小报警值 + */ + private String minValue; + /** + * 最大报警值 + */ + private String maxValue; + /** + * 报警次数 + */ + private Integer count; +} diff --git a/src/main/java/com/fengdu/gas/entity/response/facility/FacilityCount.java b/src/main/java/com/fengdu/gas/entity/response/facility/FacilityCount.java new file mode 100644 index 0000000..abc808c --- /dev/null +++ b/src/main/java/com/fengdu/gas/entity/response/facility/FacilityCount.java @@ -0,0 +1,35 @@ +package com.fengdu.gas.entity.response.facility; + +import lombok.Data; + +@Data +public class FacilityCount { + /** + * 监控点id + */ + private Long pointId; + /** + * 监控点名称 + */ + private String pointName; + /** + * 甲烷传感器数量 + */ + private Integer methaneCount; + /** + * 硫化氢传感器数量 + */ + private Integer hyrothionCount; + /** + * 风机数量 + */ + private Integer facilityFanCount; + /** + * 终端设备台数 + */ + private Integer boxCount; + /** + * 总设备数量 + */ + private Integer sumCount; +} diff --git a/src/main/java/com/fengdu/gas/entity/response/facility/FacilityData.java b/src/main/java/com/fengdu/gas/entity/response/facility/FacilityData.java new file mode 100644 index 0000000..98380ce --- /dev/null +++ b/src/main/java/com/fengdu/gas/entity/response/facility/FacilityData.java @@ -0,0 +1,53 @@ +package com.fengdu.gas.entity.response.facility; + +import lombok.Data; + +import java.math.BigDecimal; + +@Data +public class FacilityData { + /** + * 监测点id + */ + private Long pointId; + /** + * 监测点名称名称 + */ + private String pointName; + /** + * 左边距 + */ + private String left; + /** + * 上边距 + */ + private String top; + /** + * 设备id + */ + private Long facilityId; + /** + * 设备名称 + */ + private String facilityName; + /** + * 设备状态 + */ + private String facilityState; + /** + * 设备风机状态 + */ + private String facilityFanState; + /** + * 设备甲烷值 + */ + private BigDecimal methaneValue; + /** + * 硫化氢值 + */ + private BigDecimal hyrothionValue; + /** + * 温度 + */ + private BigDecimal temperature; +} diff --git a/src/main/java/com/fengdu/gas/entity/search/SearchAlarmScheme.java b/src/main/java/com/fengdu/gas/entity/search/SearchAlarmScheme.java new file mode 100644 index 0000000..57bbca1 --- /dev/null +++ b/src/main/java/com/fengdu/gas/entity/search/SearchAlarmScheme.java @@ -0,0 +1,14 @@ +package com.fengdu.gas.entity.search; + +import lombok.Data; + +import com.fengdu.gas.entity.dto.SearchBasicDTO; + +/** + * 报警规则配置 + * @author zr + */ +@Data +public class SearchAlarmScheme extends SearchBasicDTO { + +} diff --git a/src/main/java/com/fengdu/gas/entity/search/SearchFacilityAlarmRecord.java b/src/main/java/com/fengdu/gas/entity/search/SearchFacilityAlarmRecord.java index 1f17a61..90dc086 100644 --- a/src/main/java/com/fengdu/gas/entity/search/SearchFacilityAlarmRecord.java +++ b/src/main/java/com/fengdu/gas/entity/search/SearchFacilityAlarmRecord.java @@ -10,5 +10,8 @@ */ @Data public class SearchFacilityAlarmRecord extends SearchBasicDTO { - + /** + *1本日 2本月 3本年 + */ + private Integer dateType; } diff --git a/src/main/java/com/fengdu/gas/host/controller/AlarmSchemeController.java b/src/main/java/com/fengdu/gas/host/controller/AlarmSchemeController.java new file mode 100644 index 0000000..4d72f9b --- /dev/null +++ b/src/main/java/com/fengdu/gas/host/controller/AlarmSchemeController.java @@ -0,0 +1,113 @@ +/** +# __----~~~~~~~~~~~------___ +# . . ~~//====...... __--~ ~~ +# -. \_|// |||\\ ~~~~~~::::... /~ +# ___-==_ _-~o~ \/ ||| \\ _/~~- +# __---~~~.==~||\=_ -_--~/_-~|- |\\ \\ _/~ +# _-~~ .=~ | \\-_ '-~7 /- / || \ / +# .~ .~ | \\ -_ / /- / || \ / +# / ____ / | \\ ~-_/ /|- _/ .|| \ / +# |~~ ~~|--~~~~--_ \ ~==-/ | \~--===~~ .\ +# ' ~-| /| |-~\~~ __--~~ +# |-~~-_/ | | ~\_ _-~ /\ +# / \ \__ \/~ \__ +# _--~ _/ | .-~~____--~-/ ~~==. +# ((->/~ '.|||' -_| ~~-/ , . _|| +# -_ ~\ ~~---l__i__i__i--~~_/ +# _-~-__ ~) \--______________--~~ +# //.-~~~-~_--~- |-------~~~~~~~~ +# //.-~~~--\ +# 神兽保佑 +# 永无BUG! +*/ +package com.fengdu.gas.host.controller; + +import com.fengdu.gas.common.ExecutedResult; +import com.fengdu.gas.common.PagerResult; +import com.fengdu.gas.common.util.ParameterUtil; +import com.fengdu.gas.common.validator.ParameterValidateResult; +import com.fengdu.gas.common.validator.ParameterValidator; +import com.fengdu.gas.entity.request.ReqListId; +import com.fengdu.gas.host.BasicController; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import java.util.List; +import com.fengdu.gas.service.AlarmSchemeService; +import com.fengdu.gas.entity.request.alarmscheme.ReqCreateAlarmScheme; +import com.fengdu.gas.entity.request.alarmscheme.ReqModifyAlarmScheme; +import com.fengdu.gas.entity.search.SearchAlarmScheme; +import com.fengdu.gas.repository.vo.AlarmSchemeVO; + +/** + * 9000.报警规则配置 + * @author zr + * @order 9000 + */ +@RestController +@RequestMapping(value = "alarmScheme") +public class AlarmSchemeController extends BasicController { + @Autowired + private AlarmSchemeService service; + + /** + * 创建[报警规则配置] + * @author zr + */ + @PostMapping(value = "create") + public ExecutedResult<Long> create(@RequestBody ReqCreateAlarmScheme request) { + //#region 参数验证 + ParameterValidator validator = new ParameterValidator() + // 非空 + //.addNotNullOrEmpty(ParameterUtil.named("名称"), request.getName()) + // 限制最大长度 + //.addLengthMax(ParameterUtil.named("名称"), request.getName(), ConstantFactory.LENGTH_MAX50) + ; + ParameterValidateResult result = validator.validate(); + if (result.getIsFiled()) { + return failed(result.getErrorMsg()); + } + //#endregion + return service.create(request); + } + + /** + * 编辑[报警规则配置] + * @author zr + */ + @PostMapping(value = "modify") + public ExecutedResult<String> modify(@RequestBody ReqModifyAlarmScheme request) { + //#region 参数验证 + ParameterValidator validator = new ParameterValidator() + // 必须大于0 + .addGreater(ParameterUtil.named("[报警规则配置]id"), request.getId(), 0L) + // 非空 + //.addNotNullOrEmpty(ParameterUtil.named("名称"), request.getName()) + // 限制最大长度 + //.addLengthMax(ParameterUtil.named("名称"), request.getName(), ConstantFactory.LENGTH_MAX50) + ; + ParameterValidateResult result = validator.validate(); + if (result.getIsFiled()) { + return failed(result.getErrorMsg()); + } + //#endregion + return service.modify(request); + } + + /** + * 获取[报警规则配置] + * @author zr + */ + @GetMapping(value = "get/{id}") + public ExecutedResult<AlarmSchemeVO> get(@PathVariable Long id) { + return service.get(id); + } + + /** + * 查询[报警规则配置] + * @author zr + */ + @PostMapping(value = "search") + public ExecutedResult<PagerResult<AlarmSchemeVO>> search(@RequestBody SearchAlarmScheme request) { + return service.search(request); + } +} diff --git a/src/main/java/com/fengdu/gas/host/controller/TestInfoServiceController.java b/src/main/java/com/fengdu/gas/host/controller/TestInfoServiceController.java index a35b2d7..f44c150 100644 --- a/src/main/java/com/fengdu/gas/host/controller/TestInfoServiceController.java +++ b/src/main/java/com/fengdu/gas/host/controller/TestInfoServiceController.java @@ -12,6 +12,7 @@ import com.fengdu.gas.entity.request.ReqSetSort; import com.fengdu.gas.entity.request.test.ReqCreateTestInfo; import com.fengdu.gas.entity.request.test.ReqModifyTestInfo; +import com.fengdu.gas.entity.request.test.TestPayVO; import com.fengdu.gas.entity.search.SearchTestInfo; import com.fengdu.gas.service.TestInfoService; import com.fengdu.gas.host.BasicController; @@ -36,222 +37,27 @@ public class TestInfoServiceController extends BasicController { @Autowired private TestInfoService service; + /** - * 创建[测试信息] + * 测试支付信息 * * @author lin.liu * @date 2021/11/23 */ - @PostMapping(value = "create") - public ExecutedResult<Long> create(@RequestBody ReqCreateTestInfo request) { - //#region 参数验证 - ParameterValidator validator = new ParameterValidator() - // 非空 - .addNotNullOrEmpty(ParameterUtil.named("名称"), request.getName()) - // 限制最大长度 - .addLengthMax(ParameterUtil.named("名称"), request.getName(), ConstantFactory.LENGTH_MAX50) - // 必须大于0 - .addGreater(ParameterUtil.named("用户id"), request.getUserId(), 0L) - // 必须是手机号码(正则) - .addMustMobile(ParameterUtil.named("电话"), request.getPhone()) - // 金额大于0 - .addGreaterThan(ParameterUtil.named("余额"), request.getBalance(), BigDecimal.ZERO) - // 必须是枚举值 - .addMustEnum(ParameterUtil.named("性别"), request.getSex(), ESex.class) - // 必须是日期字符串(yyyy-MM-dd) - .addMustDate(ParameterUtil.named("生日"), request.getBirthday()) - // 必须大于0 - .addGreater(ParameterUtil.named("排序值"), request.getSort(), 0) - // 限制最大长度 - .addLengthMax(ParameterUtil.named("备注"), request.getComment(), ConstantFactory.LENGTH_MAX500); - ParameterValidateResult result = validator.validate(); - if (result.getIsFiled()) { - return failed(result.getErrorMsg()); - } - //#endregion - return this.service.create(request); + @PostMapping(value = "pay") + public ExecutedResult<String> pay() throws Exception { + return this.service.testPay(); } /** - * 编辑[测试信息] + * 测试支付信息 * * @author lin.liu * @date 2021/11/23 */ - @PostMapping(value = "modify") - public ExecutedResult<String> modify(@RequestBody ReqModifyTestInfo request) { - //#region 参数验证 - ParameterValidator validator = new ParameterValidator() - // 必须大于0 - .addGreater(ParameterUtil.named("[测试信息]id"), request.getId(), 0L) - // 非空 - .addNotNullOrEmpty(ParameterUtil.named("名称"), request.getName()) - // 限制最大长度 - .addLengthMax(ParameterUtil.named("名称"), request.getName(), ConstantFactory.LENGTH_MAX50) - // 必须大于0 - .addGreater(ParameterUtil.named("用户id"), request.getUserId(), 0L) - // 必须是手机号码(正则) - .addMustMobile(ParameterUtil.named("电话"), request.getPhone()) - // 金额大于0 - .addGreaterThan(ParameterUtil.named("余额"), request.getBalance(), BigDecimal.ZERO) - // 必须是枚举值 - .addMustEnum(ParameterUtil.named("性别"), request.getSex(), ESex.class) - // 必须是日期字符串(yyyy-MM-dd) - .addMustDate(ParameterUtil.named("生日"), request.getBirthday()) - // 必须大于0 - .addGreater(ParameterUtil.named("排序值"), request.getSort(), 0) - // 限制最大长度 - .addLengthMax(ParameterUtil.named("备注"), request.getComment(), ConstantFactory.LENGTH_MAX500); - ParameterValidateResult result = validator.validate(); - if (result.getIsFiled()) { - return failed(result.getErrorMsg()); - } - //#endregion - return this.service.modify(request); + @PostMapping(value = "confirmPay") + public ExecutedResult<String> confirmPay() throws Exception { + return this.service.confirmPay(); } - /** - * 获取[测试信息] - * - * @author lin.liu - * @date 2021/11/23 - */ - @GetMapping(value = "get/{id}") - public ExecutedResult<TestInfoVO> get(@PathVariable Long id) { - return this.service.get(id); - } - - /** - * 根据id批量获取[测试信息] - * - * @author lin.liu - * @date 2021/11/23 - */ - @PostMapping(value = "getList") - public ExecutedResult<List<TestInfoVO>> getList(@RequestBody ReqListId request) { - //#region 参数验证 - ParameterValidator validator = new ParameterValidator() - // 不能为空 - .addNotNullOrEmpty(ParameterUtil.named("[测试信息]id列表"), request.getListId()) - ; - ParameterValidateResult result = validator.validate(); - if (result.getIsFiled()) { - return failed(result.getErrorMsg()); - } - //#endregion - return this.service.getList(request.getListId()); - } - - /** - * [测试信息]设置排序值 - * - * @author lin.liu - * @date 2021/11/23 - */ - @PostMapping(value = "setSort") - public ExecutedResult<String> setSort(@RequestBody ReqSetSort request) { - //#region 参数验证 - ParameterValidator validator = new ParameterValidator() - // 必须大于0 - .addGreater(ParameterUtil.named("[测试信息]id"), request.getId(), 0L) - // 必须大于0 - .addGreaterThan(ParameterUtil.named("排序值"), request.getSort(), 0) - ; - ParameterValidateResult result = validator.validate(); - if (result.getIsFiled()) { - return failed(result.getErrorMsg()); - } - //#endregion - return this.service.setSort(request); - } - - /** - * [测试信息]批量设置排序值 - * - * @author lin.liu - * @date 2021/11/23 - */ - @PostMapping(value = "listSetSort") - ExecutedResult<String> listSetSort(ReqListSetSort request) { - //#region 参数验证 - ParameterValidator validator = new ParameterValidator() - // 不能为空 - .addNotNullOrEmpty(ParameterUtil.named("[测试信息]排序设置列表"), request.getList()) - ; - ParameterValidateResult result = validator.validate(); - if (result.getIsFiled()) { - return failed(result.getErrorMsg()); - } - //#endregion - return this.service.listSetSort(request); - } - - /** - * 停用[测试信息] - * - * @param id [测试]id - * @author lin.liu - * @date 2021/11/23 - */ - @PostMapping(value = "stop/{id}") - public ExecutedResult<String> stop(@PathVariable Long id) { - return this.service.stop(id); - } - - /** - * 启用[测试信息] - * - * @param id [测试]id - * @author lin.liu - * @date 2021/11/23 - */ - @PostMapping(value = "enable/{id}") - public ExecutedResult<String> enable(@PathVariable Long id) { - return this.service.enable(id); - } - - /** - * 删除[测试信息] - * - * @param id [测试]id - * @author lin.liu - * @date 2021/11/23 - */ - @PostMapping(value = "remove/{id}") - public ExecutedResult<String> remove(@PathVariable Long id) { - return this.service.remove(id); - } - - /** - * 批量删除[测试信息] - * - * @author lin.liu - * @date 2021/11/23 - */ - @PostMapping(value = "removeList") - public ExecutedResult<String> removeList(@RequestBody ReqListId request) { - //#region 参数验证 - ParameterValidator validator = new ParameterValidator() - // 不能为空 - .addNotNullOrEmpty(ParameterUtil.named("[测试信息]id列表"), request.getListId()) - ; - ParameterValidateResult result = validator.validate(); - if (result.getIsFiled()) { - return failed(result.getErrorMsg()); - } - //#endregion - return this.service.removeList(request.getListId()); - } - - /** - * 查询[测试信息] - * - * @author lin.liu - * @date 2021/11/23 - */ - @NonLogin - @PostMapping(value = "search") - public ExecutedResult<PagerResult<TestInfoVO>> search(@RequestBody SearchTestInfo request) { - return this.service.search(request); - } } diff --git a/src/main/java/com/fengdu/gas/host/controller/WaterFacilityParameterController.java b/src/main/java/com/fengdu/gas/host/controller/WaterFacilityParameterController.java index 0316fa4..4fb8c2a 100644 --- a/src/main/java/com/fengdu/gas/host/controller/WaterFacilityParameterController.java +++ b/src/main/java/com/fengdu/gas/host/controller/WaterFacilityParameterController.java @@ -28,6 +28,7 @@ import com.fengdu.gas.common.validator.ParameterValidateResult; import com.fengdu.gas.common.validator.ParameterValidator; import com.fengdu.gas.entity.request.ReqListId; +import com.fengdu.gas.entity.request.waterfacilityparameter.ReqAddParameter; import com.fengdu.gas.host.BasicController; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; @@ -54,11 +55,12 @@ * @author zr */ @PostMapping(value = "create") - public ExecutedResult<Long> create(@RequestBody ReqCreateWaterFacilityParameter request) { + public ExecutedResult<String> create(@RequestBody ReqAddParameter request) { //#region 参数验证 ParameterValidator validator = new ParameterValidator() // 非空 - //.addNotNullOrEmpty(ParameterUtil.named("名称"), request.getName()) + .addNotNullOrEmpty(ParameterUtil.named("设备id"), request.getFacilityId()) + .addNotNullOrEmpty(ParameterUtil.named("参数列表"), request.getParameterList()) // 限制最大长度 //.addLengthMax(ParameterUtil.named("名称"), request.getName(), ConstantFactory.LENGTH_MAX50) ; diff --git a/src/main/java/com/fengdu/gas/host/controller/visualized/FacilityDataController.java b/src/main/java/com/fengdu/gas/host/controller/visualized/FacilityDataController.java new file mode 100644 index 0000000..d44d0bd --- /dev/null +++ b/src/main/java/com/fengdu/gas/host/controller/visualized/FacilityDataController.java @@ -0,0 +1,17 @@ +package com.fengdu.gas.host.controller.visualized; + +import com.fengdu.gas.host.BasicController; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + * 10000.可视化数据大屏设备管理 + * @author zr + * @order 10000 + */ +@RestController +@RequestMapping(value = "facilityData") +public class FacilityDataController extends BasicController { + /*****************************设备管理**********************************/ + +} diff --git a/src/main/java/com/fengdu/gas/host/controller/visualized/HomeDataController.java b/src/main/java/com/fengdu/gas/host/controller/visualized/HomeDataController.java new file mode 100644 index 0000000..603b640 --- /dev/null +++ b/src/main/java/com/fengdu/gas/host/controller/visualized/HomeDataController.java @@ -0,0 +1,58 @@ +package com.fengdu.gas.host.controller.visualized; + +import com.fengdu.gas.common.ExecutedResult; +import com.fengdu.gas.common.PagerResult; +import com.fengdu.gas.common.util.ParameterUtil; +import com.fengdu.gas.common.validator.ParameterValidateResult; +import com.fengdu.gas.common.validator.ParameterValidator; +import com.fengdu.gas.entity.request.commonparameters.ReqModifyCommonParameters; +import com.fengdu.gas.entity.response.facility.FacilityCount; +import com.fengdu.gas.entity.response.facility.FacilityData; +import com.fengdu.gas.entity.search.SearchUserWorkOrder; +import com.fengdu.gas.host.BasicController; +import com.fengdu.gas.repository.vo.UserWorkOrderVO; +import com.fengdu.gas.service.UserWorkOrderService; +import com.fengdu.gas.service.WaterFacilityService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * 10000.可视化数据大屏首页总览 + * @author zr + * @order 10000 + */ +@RestController +@RequestMapping(value = "homeData") +public class HomeDataController extends BasicController { + @Autowired + private WaterFacilityService waterFacilityService; + @Autowired + private UserWorkOrderService userWorkOrderService; + /** + * 查询设备 + * @author zr + */ + @PostMapping(value = "getFacilityList") + public ExecutedResult<List<FacilityData>> getFacilityList() { + return waterFacilityService.getFacilityList(); + } + + /** + * 区域设备数量统计 + * @author zr + */ + @PostMapping(value = "deviceCount") + public ExecutedResult<List<FacilityCount>> deviceCount() { + return waterFacilityService.deviceCount(); + } + /** + * 工单统计 + * @author zr + */ + @PostMapping(value = "workOrderList") + public ExecutedResult<PagerResult<UserWorkOrderVO>> workOrderList(@ RequestBody SearchUserWorkOrder search) { + return userWorkOrderService.search(search); + } +} diff --git a/src/main/java/com/fengdu/gas/host/controller/visualized/StatisticsDataController.java b/src/main/java/com/fengdu/gas/host/controller/visualized/StatisticsDataController.java new file mode 100644 index 0000000..82bcb63 --- /dev/null +++ b/src/main/java/com/fengdu/gas/host/controller/visualized/StatisticsDataController.java @@ -0,0 +1,31 @@ +package com.fengdu.gas.host.controller.visualized; + +import com.fengdu.gas.common.ExecutedResult; +import com.fengdu.gas.common.PagerResult; +import com.fengdu.gas.entity.response.alarm.FacilityAlarm; +import com.fengdu.gas.entity.search.SearchFacilityAlarmRecord; +import com.fengdu.gas.entity.search.SearchUserWorkOrder; +import com.fengdu.gas.host.BasicController; +import com.fengdu.gas.repository.vo.FacilityAlarmRecordVO; +import com.fengdu.gas.repository.vo.UserWorkOrderVO; +import com.fengdu.gas.service.FacilityAlarmRecordService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * 10000.可视化数据大屏数据统计 + * @author zr + * @order 10000 + */ +@RestController +@RequestMapping(value = "statisticsData") +public class StatisticsDataController extends BasicController { +@Autowired +private FacilityAlarmRecordService facilityAlarmRecordService; + @PostMapping(value = "getAlarmList") + public ExecutedResult<List<FacilityAlarm>> getAlarmList(Integer dateType) { + return facilityAlarmRecordService.getAlarmList(dateType); + } +} diff --git a/src/main/java/com/fengdu/gas/host/controller/visualized/visualizedDataController.java b/src/main/java/com/fengdu/gas/host/controller/visualized/visualizedDataController.java deleted file mode 100644 index d8dbf18..0000000 --- a/src/main/java/com/fengdu/gas/host/controller/visualized/visualizedDataController.java +++ /dev/null @@ -1,36 +0,0 @@ -package com.fengdu.gas.host.controller.visualized; - -import com.fengdu.gas.host.BasicController; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; - -/** - * 10000.可视化数据管理 - * @author zr - * @order 10000 - */ -@RestController -@RequestMapping(value = "visualizedData") -public class visualizedDataController extends BasicController { - - - /*****************************首页总览**********************************/ - - - - - - - - - /*****************************数据统计**********************************/ - - - - - - - - /*****************************设备管理**********************************/ - -} diff --git a/src/main/java/com/fengdu/gas/host/mqtt/PushCallback.java b/src/main/java/com/fengdu/gas/host/mqtt/PushCallback.java index af46fc6..1b019b6 100644 --- a/src/main/java/com/fengdu/gas/host/mqtt/PushCallback.java +++ b/src/main/java/com/fengdu/gas/host/mqtt/PushCallback.java @@ -3,13 +3,17 @@ import com.fengdu.gas.common.enums.ELogger; import com.fengdu.gas.common.util.LoggerUtil; +import com.fengdu.gas.common.util.SpringUtil; import com.fengdu.gas.common.util.ThreadPoolUtil; +import com.fengdu.gas.service.DataUploadRecordService; import org.eclipse.paho.client.mqttv3.IMqttDeliveryToken; import org.eclipse.paho.client.mqttv3.MqttCallback; import org.eclipse.paho.client.mqttv3.MqttMessage; import org.slf4j.Logger; +import org.springframework.beans.factory.annotation.Autowired; import java.nio.charset.StandardCharsets; +import java.util.Objects; ; @@ -32,7 +36,8 @@ public class PushCallback implements MqttCallback { private static final Logger LOGGER_DEBUG = LoggerUtil.get(ELogger.DEBUG); private static final Logger LOGGER_ERROR = LoggerUtil.get(ELogger.SYS_ERROR); - + @Autowired + DataUploadRecordService dataUploadService; private MQTTSubsribe mqttSubsribe; public PushCallback(MQTTSubsribe mqttSubsribe) { @@ -74,8 +79,20 @@ //这里可以针对收到的消息做处理 ThreadPoolUtil.getDefaultPool().execute(() -> { try { - //调用方法 - //dataUploadYwjRecordService.mqttReceived(topic, msg); + if (Objects.nonNull(dataUploadService)) { + //调用方法 + dataUploadService.mqttReceived(topic, msg); + } else { + try { + System.out.println("dataUploadService bean尚未初始化..."); + dataUploadService = SpringUtil.getBean(DataUploadRecordService.class); + System.out.println("dataUploadService 初始化bean成功!"); + } catch (Exception ignored) {} + if (Objects.nonNull(dataUploadService)) { + //调用方法 + dataUploadService.mqttReceived(topic, msg); + } + } } catch (Exception e) { LOGGER_ERROR.error("messageArrived", e); } diff --git a/src/main/java/com/fengdu/gas/repository/impl/AlarmSchemeMapperImpl.java b/src/main/java/com/fengdu/gas/repository/impl/AlarmSchemeMapperImpl.java new file mode 100644 index 0000000..b16fd0b --- /dev/null +++ b/src/main/java/com/fengdu/gas/repository/impl/AlarmSchemeMapperImpl.java @@ -0,0 +1,137 @@ +/** +# __----~~~~~~~~~~~------___ +# . . ~~//====...... __--~ ~~ +# -. \_|// |||\\ ~~~~~~::::... /~ +# ___-==_ _-~o~ \/ ||| \\ _/~~- +# __---~~~.==~||\=_ -_--~/_-~|- |\\ \\ _/~ +# _-~~ .=~ | \\-_ '-~7 /- / || \ / +# .~ .~ | \\ -_ / /- / || \ / +# / ____ / | \\ ~-_/ /|- _/ .|| \ / +# |~~ ~~|--~~~~--_ \ ~==-/ | \~--===~~ .\ +# ' ~-| /| |-~\~~ __--~~ +# |-~~-_/ | | ~\_ _-~ /\ +# / \ \__ \/~ \__ +# _--~ _/ | .-~~____--~-/ ~~==. +# ((->/~ '.|||' -_| ~~-/ , . _|| +# -_ ~\ ~~---l__i__i__i--~~_/ +# _-~-__ ~) \--______________--~~ +# //.-~~~-~_--~- |-------~~~~~~~~ +# //.-~~~--\ +# 神兽保佑 +# 永无BUG! +*/ +package com.fengdu.gas.repository.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.fengdu.gas.common.PagerResult; +import com.fengdu.gas.common.enums.EYesOrNo; +import com.fengdu.gas.common.util.*; +import com.fengdu.gas.entity.dto.*; +import com.fengdu.gas.entity.enums.*; +import com.fengdu.gas.repository.BasicMapperImpl; +import org.springframework.stereotype.Repository; + +import java.util.List; +import com.fengdu.gas.entity.search.SearchAlarmScheme; +import com.fengdu.gas.repository.mapper.AlarmSchemeMapper; +import com.fengdu.gas.repository.po.AlarmSchemePO; + +/** + * 报警规则配置 + * @author zr + */ +@Repository +public class AlarmSchemeMapperImpl extends BasicMapperImpl<AlarmSchemePO, AlarmSchemeMapper> { + AlarmSchemeMapperImpl(AlarmSchemeMapper mapper) { + super(mapper); + } + + @Override + public PagerResult<AlarmSchemePO> search(SearchBasicDTO request) { + // 还原查询条件真实类型 + SearchAlarmScheme search = (SearchAlarmScheme)request; + // 查询条件 + LambdaQueryWrapper<AlarmSchemePO> queryWrapper = this.query(); + // 非逻辑删除 + queryWrapper.eq(AlarmSchemePO::getIsDelete, EYesOrNo.NO.getValue()); + // 状态 + //queryWrapper.eq(NumericUtil.tryParseInt(search.getStatus()).compareTo(0) > 0, AlarmSchemePO::getStatus, search.getStatus()); + // 状态列表 + //queryWrapper.in(ListUtil.isNotNullOrEmpty(search.getListStatus()), AlarmSchemePO::getStatus, search.getListStatus()); + + // 数据创建时间-起始 + queryWrapper.ge(NumericUtil.tryParseLong(search.getCreateTimeStart()).compareTo(0L) > 0, AlarmSchemePO::getCreateTime, search.getCreateTimeStart()); + // 数据创建时间-截止 + queryWrapper.le(NumericUtil.tryParseLong(search.getCreateTimeEnd()).compareTo(0L) > 0, AlarmSchemePO::getCreateTime, search.getCreateTimeEnd()); + // 关键字 + //if (StringUtil.isNotNullOrEmpty(search.getKeywords())) { + // queryWrapper.and(q -> + // q.like(AlarmSchemePO::getName, search.getKeywords()) + // .or().like(AlarmSchemePO::getPhone, search.getKeywords()) + // ); + //} + + // 排序处理 + if (ListUtil.isNotNullOrEmpty(search.getOrderBy())) { + for (OrderByDTO item : search.getOrderBy()) { + EOrderBy orderBy = EOrderBy.getByValue(item.getOrderBy()); + // 顺序排序 + if (item.getIsAsc()) { + switch (orderBy) { + // 主键 + case ID: + queryWrapper.orderByAsc(AlarmSchemePO::getId); + break; + // 数据创建时间 + case CREATE_TIME: + queryWrapper.orderByAsc(AlarmSchemePO::getCreateTime); + break; + // 最后更新时间 + case UPDATE_TIME: + queryWrapper.orderByAsc(AlarmSchemePO::getUpdateTime); + break; + } + } else { + // 倒叙排序 + switch (orderBy) { + // 主键 + case ID: + queryWrapper.orderByDesc(AlarmSchemePO::getId); + break; + // 数据创建时间 + case CREATE_TIME: + queryWrapper.orderByDesc(AlarmSchemePO::getCreateTime); + break; + // 最后更新时间 + case UPDATE_TIME: + queryWrapper.orderByDesc(AlarmSchemePO::getUpdateTime); + break; + } + } + } + } else { + queryWrapper.orderByDesc(AlarmSchemePO::getId); + } + Page<AlarmSchemePO> pageResult = super.selectPage(new Page<>(search.getPage(), search.getLimit()), queryWrapper); + return new PagerResult<>(pageResult.getSize(), pageResult.getCurrent(), pageResult.getTotal(), pageResult.getRecords()); + } + + public Boolean add(AlarmSchemePO item) { + int rowCount = super.insert(item); + return rowCount == 1; + } + + public Boolean addNotIncrement(AlarmSchemePO item) { + int rowCount = super.insert(item); + return rowCount == 1; + } + + public AlarmSchemePO getById(Long id) { + return super.get(id); + } + + public List<AlarmSchemePO> getListById(List<Long> listId) { + return super.getList(listId); + } +} diff --git a/src/main/java/com/fengdu/gas/repository/impl/FacilityAlarmRecordMapperImpl.java b/src/main/java/com/fengdu/gas/repository/impl/FacilityAlarmRecordMapperImpl.java index 25163d0..e4f1b0c 100644 --- a/src/main/java/com/fengdu/gas/repository/impl/FacilityAlarmRecordMapperImpl.java +++ b/src/main/java/com/fengdu/gas/repository/impl/FacilityAlarmRecordMapperImpl.java @@ -29,6 +29,7 @@ import com.fengdu.gas.common.util.*; import com.fengdu.gas.entity.dto.*; import com.fengdu.gas.entity.enums.*; +import com.fengdu.gas.entity.response.alarm.FacilityAlarm; import com.fengdu.gas.repository.BasicMapperImpl; import org.springframework.stereotype.Repository; @@ -134,4 +135,8 @@ public List<FacilityAlarmRecordPO> getListById(List<Long> listId) { return super.getList(listId); } + + public List<FacilityAlarm> getByDateType(String beginTime,String endTime){ + return DB.getByDateType(beginTime,endTime); + } } diff --git a/src/main/java/com/fengdu/gas/repository/impl/WaterFacilityParameterMapperImpl.java b/src/main/java/com/fengdu/gas/repository/impl/WaterFacilityParameterMapperImpl.java index f7ffb5b..18994c8 100644 --- a/src/main/java/com/fengdu/gas/repository/impl/WaterFacilityParameterMapperImpl.java +++ b/src/main/java/com/fengdu/gas/repository/impl/WaterFacilityParameterMapperImpl.java @@ -126,7 +126,12 @@ int rowCount = super.insert(item); return rowCount == 1; } - + public List<WaterFacilityParameterPO> getListByFacilityId(Long facilityId) { + LambdaQueryWrapper<WaterFacilityParameterPO> queryWrapper = this.query(); + queryWrapper.eq(WaterFacilityParameterPO::getFacilityId,facilityId); + queryWrapper.eq(WaterFacilityParameterPO::getIsDelete,EYesOrNo.NO.getValue()); + return DB.selectList(queryWrapper); + } public WaterFacilityParameterPO getById(Long id) { return super.get(id); } diff --git a/src/main/java/com/fengdu/gas/repository/mapper/AlarmSchemeMapper.java b/src/main/java/com/fengdu/gas/repository/mapper/AlarmSchemeMapper.java new file mode 100644 index 0000000..649e666 --- /dev/null +++ b/src/main/java/com/fengdu/gas/repository/mapper/AlarmSchemeMapper.java @@ -0,0 +1,10 @@ +package com.fengdu.gas.repository.mapper; + +import com.fengdu.gas.repository.BasicMapper;import com.fengdu.gas.repository.po.AlarmSchemePO; + +/** + * 报警规则配置 mapper + * @author zr + */ +public interface AlarmSchemeMapper extends BasicMapper<AlarmSchemePO> { +} diff --git a/src/main/java/com/fengdu/gas/repository/mapper/FacilityAlarmRecordMapper.java b/src/main/java/com/fengdu/gas/repository/mapper/FacilityAlarmRecordMapper.java index a03181b..87e9f54 100644 --- a/src/main/java/com/fengdu/gas/repository/mapper/FacilityAlarmRecordMapper.java +++ b/src/main/java/com/fengdu/gas/repository/mapper/FacilityAlarmRecordMapper.java @@ -1,10 +1,19 @@ package com.fengdu.gas.repository.mapper; -import com.fengdu.gas.repository.BasicMapper;import com.fengdu.gas.repository.po.FacilityAlarmRecordPO; +import com.fengdu.gas.entity.response.alarm.FacilityAlarm; +import com.fengdu.gas.repository.BasicMapper; +import com.fengdu.gas.repository.po.FacilityAlarmRecordPO; +import org.apache.ibatis.annotations.Select; + +import java.util.List; /** * 设备报警记录 mapper * @author zr */ public interface FacilityAlarmRecordMapper extends BasicMapper<FacilityAlarmRecordPO> { + @Select("SELECT description AS NAME ,MIN(min_value) AS minValue ,MAX(max_value) AS maxValue,COUNT(id) AS count FROM facility_alarm_record \n" + + "WHERE is_delete=0 AND latest_alarm_time BETWEEN #{beginTime} AND #{endTime} '\n" + + "GROUP BY description\n") + List<FacilityAlarm> getByDateType(String beginTime, String endTime); } diff --git a/src/main/java/com/fengdu/gas/repository/po/AlarmSchemePO.java b/src/main/java/com/fengdu/gas/repository/po/AlarmSchemePO.java new file mode 100644 index 0000000..600f696 --- /dev/null +++ b/src/main/java/com/fengdu/gas/repository/po/AlarmSchemePO.java @@ -0,0 +1,90 @@ +/** +# __----~~~~~~~~~~~------___ +# . . ~~//====...... __--~ ~~ +# -. \_|// |||\\ ~~~~~~::::... /~ +# ___-==_ _-~o~ \/ ||| \\ _/~~- +# __---~~~.==~||\=_ -_--~/_-~|- |\\ \\ _/~ +# _-~~ .=~ | \\-_ '-~7 /- / || \ / +# .~ .~ | \\ -_ / /- / || \ / +# / ____ / | \\ ~-_/ /|- _/ .|| \ / +# |~~ ~~|--~~~~--_ \ ~==-/ | \~--===~~ .\ +# ' ~-| /| |-~\~~ __--~~ +# |-~~-_/ | | ~\_ _-~ /\ +# / \ \__ \/~ \__ +# _--~ _/ | .-~~____--~-/ ~~==. +# ((->/~ '.|||' -_| ~~-/ , . _|| +# -_ ~\ ~~---l__i__i__i--~~_/ +# _-~-__ ~) \--______________--~~ +# //.-~~~-~_--~- |-------~~~~~~~~ +# //.-~~~--\ +# 神兽保佑 +# 永无BUG! +*/ +package com.fengdu.gas.repository.po; + +import lombok.Data; + +import com.baomidou.mybatisplus.annotation.*; + +import java.io.Serializable; +import java.sql.Timestamp; +import java.math.BigDecimal; + +/** + * 报警规则配置 + * @author zr + */ +@Data +@TableName("alarm_scheme") +public class AlarmSchemePO implements Serializable { + /** + * null + */ + private Long id; + /** + * 设备参数code + */ + @TableField(value = "columns_code") + private String columnsCode; + /** + * 参数名称 + */ + @TableField(value = "columns_show") + private String columnsShow; + /** + * 低报警值 + */ + @TableField(value = "low_alarm") + private BigDecimal lowAlarm; + /** + * 高报警值 + */ + @TableField(value = "tall_alarm") + private BigDecimal tallAlarm; + /** + * 通知人员 + */ + @TableField(value = "inform_user") + private String informUser; + /** + * 备注 + */ + @TableField(value = "remark") + private String remark; + /** + * 是否删除 + */ + @TableLogic + @TableField(value = "is_delete") + private Integer isDelete; + /** + * 创建时间 + */ + @TableField(value = "create_time") + private Long createTime; + /** + * 修改时间 + */ + @TableField(value = "update_time") + private Timestamp updateTime; +} diff --git a/src/main/java/com/fengdu/gas/repository/po/FacilityAlarmRecordPO.java b/src/main/java/com/fengdu/gas/repository/po/FacilityAlarmRecordPO.java index f792c4e..20fc61e 100644 --- a/src/main/java/com/fengdu/gas/repository/po/FacilityAlarmRecordPO.java +++ b/src/main/java/com/fengdu/gas/repository/po/FacilityAlarmRecordPO.java @@ -61,21 +61,37 @@ @TableField(value = "facility_name") private String facilityName; /** + * 报警类型(1 一级报警 2二级报警) + */ + @TableField(value = "alarm_type") + private Integer alarmType; + /** * 参数编码 */ @TableField(value = "columns_code") private String columnsCode; /** - * 参数名称 + * 报警值 */ @TableField(value = "columns_name") private String columnsName; + /** * 参数名称 */ - @TableField(value = "columns_name") + @TableField(value = "columns_value") private String columnsValue; /** + * 最小报警值 + */ + @TableField(value = "min_value") + private String minValue; + /** + * 最大报警值 + */ + @TableField(value = "max_value") + private String maxValue; + /** * 报警描述 */ @TableField(value = "description") diff --git a/src/main/java/com/fengdu/gas/repository/po/UserWorkOrderPO.java b/src/main/java/com/fengdu/gas/repository/po/UserWorkOrderPO.java index 8c0f2ba..2fff3b9 100644 --- a/src/main/java/com/fengdu/gas/repository/po/UserWorkOrderPO.java +++ b/src/main/java/com/fengdu/gas/repository/po/UserWorkOrderPO.java @@ -56,6 +56,16 @@ @TableField(value = "type") private Integer type; /** + * 所属监测点编号 + */ + @TableField(value = "point_code") + private String pointCode; + /** + * 所属设备编号 + */ + @TableField(value = "facility_code") + private String facilityCode; + /** * 内容描述 */ @TableField(value = "content") diff --git a/src/main/java/com/fengdu/gas/repository/po/WaterFacilityPO.java b/src/main/java/com/fengdu/gas/repository/po/WaterFacilityPO.java index f0ce533..7fc8117 100644 --- a/src/main/java/com/fengdu/gas/repository/po/WaterFacilityPO.java +++ b/src/main/java/com/fengdu/gas/repository/po/WaterFacilityPO.java @@ -86,6 +86,16 @@ @TableField(value = "facility_url") private String facilityUrl; /** + * 设备状态 + */ + @TableField(value = "facility_state") + private Integer facilityState; + /** + * 设备风机运行状态 + */ + @TableField(value = "facility_fan_state") + private Integer facilityFanState; + /** * 数据创建时间 */ @TableField(value = "create_time") diff --git a/src/main/java/com/fengdu/gas/repository/po/WaterMonitoryPointPO.java b/src/main/java/com/fengdu/gas/repository/po/WaterMonitoryPointPO.java index b1122fc..7847881 100644 --- a/src/main/java/com/fengdu/gas/repository/po/WaterMonitoryPointPO.java +++ b/src/main/java/com/fengdu/gas/repository/po/WaterMonitoryPointPO.java @@ -61,6 +61,16 @@ @TableField(value = "remark") private String remark; /** + * 左边距 + */ + @TableField(value = "left_margin") + private String leftMargin; + /** + * 上边距 + */ + @TableField(value = "top_margin") + private String topMargin; + /** * 监控点图片 */ @TableField(value = "image_rul") diff --git a/src/main/java/com/fengdu/gas/repository/vo/AlarmSchemeVO.java b/src/main/java/com/fengdu/gas/repository/vo/AlarmSchemeVO.java new file mode 100644 index 0000000..6499c52 --- /dev/null +++ b/src/main/java/com/fengdu/gas/repository/vo/AlarmSchemeVO.java @@ -0,0 +1,54 @@ +/** +# __----~~~~~~~~~~~------___ +# . . ~~//====...... __--~ ~~ +# -. \_|// |||\\ ~~~~~~::::... /~ +# ___-==_ _-~o~ \/ ||| \\ _/~~- +# __---~~~.==~||\=_ -_--~/_-~|- |\\ \\ _/~ +# _-~~ .=~ | \\-_ '-~7 /- / || \ / +# .~ .~ | \\ -_ / /- / || \ / +# / ____ / | \\ ~-_/ /|- _/ .|| \ / +# |~~ ~~|--~~~~--_ \ ~==-/ | \~--===~~ .\ +# ' ~-| /| |-~\~~ __--~~ +# |-~~-_/ | | ~\_ _-~ /\ +# / \ \__ \/~ \__ +# _--~ _/ | .-~~____--~-/ ~~==. +# ((->/~ '.|||' -_| ~~-/ , . _|| +# -_ ~\ ~~---l__i__i__i--~~_/ +# _-~-__ ~) \--______________--~~ +# //.-~~~-~_--~- |-------~~~~~~~~ +# //.-~~~--\ +# 神兽保佑 +# 永无BUG! +*/ +package com.fengdu.gas.repository.vo; + +import lombok.Data; + +import com.fengdu.gas.common.util.LocalDateTimeUtil; +import com.fengdu.gas.common.util.NumericUtil; +import java.util.Objects; +import com.fengdu.gas.repository.po.AlarmSchemePO; + +/** + * 报警规则配置 + * @author zr + */ +@Data +public class AlarmSchemeVO extends AlarmSchemePO implements BasicVO { + + @Override + public String getCreateTimeView() { + if (NumericUtil.tryParseLong(this.getCreateTime()).compareTo(0L) > 0) { + return LocalDateTimeUtil.toFormatString(this.getCreateTime()); + } + return ""; + } + + @Override + public String getUpdateTimeView() { + if (Objects.isNull(this.getUpdateTime())) { + return ""; + } + return LocalDateTimeUtil.toFormatFullString(this.getUpdateTime()); + } +} diff --git a/src/main/java/com/fengdu/gas/repository/vo/UserWorkOrderVO.java b/src/main/java/com/fengdu/gas/repository/vo/UserWorkOrderVO.java index 63118d8..3f1b6d1 100644 --- a/src/main/java/com/fengdu/gas/repository/vo/UserWorkOrderVO.java +++ b/src/main/java/com/fengdu/gas/repository/vo/UserWorkOrderVO.java @@ -1,32 +1,35 @@ /** -# __----~~~~~~~~~~~------___ -# . . ~~//====...... __--~ ~~ -# -. \_|// |||\\ ~~~~~~::::... /~ -# ___-==_ _-~o~ \/ ||| \\ _/~~- -# __---~~~.==~||\=_ -_--~/_-~|- |\\ \\ _/~ -# _-~~ .=~ | \\-_ '-~7 /- / || \ / -# .~ .~ | \\ -_ / /- / || \ / -# / ____ / | \\ ~-_/ /|- _/ .|| \ / -# |~~ ~~|--~~~~--_ \ ~==-/ | \~--===~~ .\ -# ' ~-| /| |-~\~~ __--~~ -# |-~~-_/ | | ~\_ _-~ /\ -# / \ \__ \/~ \__ -# _--~ _/ | .-~~____--~-/ ~~==. -# ((->/~ '.|||' -_| ~~-/ , . _|| -# -_ ~\ ~~---l__i__i__i--~~_/ -# _-~-__ ~) \--______________--~~ -# //.-~~~-~_--~- |-------~~~~~~~~ -# //.-~~~--\ -# 神兽保佑 -# 永无BUG! -*/ + # __----~~~~~~~~~~~------___ + # . . ~~//====...... __--~ ~~ + # -. \_|// |||\\ ~~~~~~::::... /~ + # ___-==_ _-~o~ \/ ||| \\ _/~~- + # __---~~~.==~||\=_ -_--~/_-~|- |\\ \\ _/~ + # _-~~ .=~ | \\-_ '-~7 /- / || \ / + # .~ .~ | \\ -_ / /- / || \ / + # / ____ / | \\ ~-_/ /|- _/ .|| \ / + # |~~ ~~|--~~~~--_ \ ~==-/ | \~--===~~ .\ + # ' ~-| /| |-~\~~ __--~~ + # |-~~-_/ | | ~\_ _-~ /\ + # / \ \__ \/~ \__ + # _--~ _/ | .-~~____--~-/ ~~==. + # ((->/~ '.|||' -_| ~~-/ , . _|| + # -_ ~\ ~~---l__i__i__i--~~_/ + # _-~-__ ~) \--______________--~~ + # //.-~~~-~_--~- |-------~~~~~~~~ + # //.-~~~--\ + # 神兽保佑 + # 永无BUG! + */ package com.fengdu.gas.repository.vo; +import com.fengdu.gas.entity.enums.EExecuteType; import lombok.Data; import com.fengdu.gas.common.util.LocalDateTimeUtil; import com.fengdu.gas.common.util.NumericUtil; + import java.util.Objects; + import com.fengdu.gas.repository.po.UserWorkOrderPO; /** @@ -35,6 +38,8 @@ */ @Data public class UserWorkOrderVO extends UserWorkOrderPO implements BasicVO { + private String pointName; + private String facilityName; @Override public String getCreateTimeView() { @@ -51,4 +56,11 @@ } return LocalDateTimeUtil.toFormatFullString(this.getUpdateTime()); } + + public String getExecuteStateView() { + if (Objects.isNull(this.getExecuteState())) { + return ""; + } + return EExecuteType.getByValue(this.getExecuteState()).getDesc(); + } } diff --git a/src/main/java/com/fengdu/gas/service/AlarmSchemeService.java b/src/main/java/com/fengdu/gas/service/AlarmSchemeService.java new file mode 100644 index 0000000..af18e52 --- /dev/null +++ b/src/main/java/com/fengdu/gas/service/AlarmSchemeService.java @@ -0,0 +1,245 @@ +/** +# __----~~~~~~~~~~~------___ +# . . ~~//====...... __--~ ~~ +# -. \_|// |||\\ ~~~~~~::::... /~ +# ___-==_ _-~o~ \/ ||| \\ _/~~- +# __---~~~.==~||\=_ -_--~/_-~|- |\\ \\ _/~ +# _-~~ .=~ | \\-_ '-~7 /- / || \ / +# .~ .~ | \\ -_ / /- / || \ / +# / ____ / | \\ ~-_/ /|- _/ .|| \ / +# |~~ ~~|--~~~~--_ \ ~==-/ | \~--===~~ .\ +# ' ~-| /| |-~\~~ __--~~ +# |-~~-_/ | | ~\_ _-~ /\ +# / \ \__ \/~ \__ +# _--~ _/ | .-~~____--~-/ ~~==. +# ((->/~ '.|||' -_| ~~-/ , . _|| +# -_ ~\ ~~---l__i__i__i--~~_/ +# _-~-__ ~) \--______________--~~ +# //.-~~~-~_--~- |-------~~~~~~~~ +# //.-~~~--\ +# 神兽保佑 +# 永无BUG! +*/ +package com.fengdu.gas.service; + +import com.fengdu.gas.common.*; +import com.fengdu.gas.common.enums.*; +import com.fengdu.gas.common.model.Tuple; +import com.fengdu.gas.common.util.*; +import com.fengdu.gas.repository.vo.UserWorkOrderVO; +import org.apache.commons.lang3.BooleanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import java.util.*; +import java.util.stream.Collectors; +import com.fengdu.gas.repository.impl.AlarmSchemeMapperImpl; +import com.fengdu.gas.repository.po.AlarmSchemePO; +import com.fengdu.gas.entity.request.alarmscheme.ReqCreateAlarmScheme; +import com.fengdu.gas.entity.request.alarmscheme.ReqModifyAlarmScheme; +import com.fengdu.gas.entity.search.SearchAlarmScheme; +import com.fengdu.gas.repository.vo.AlarmSchemeVO; +import com.fengdu.gas.service.convert.AlarmSchemeConvert; + +/** + * 报警规则配置 + * @author zr + */ +@Service +public class AlarmSchemeService extends BaseService { + @Autowired + private AlarmSchemeMapperImpl mapper; + + public ExecutedResult<Long> create(ReqCreateAlarmScheme request) { + // 转换po + AlarmSchemePO item = CopierUtil.mapTo(request, AlarmSchemePO.class); + // 设置状态 + //item.setStatus(EState.NORMAL.getValue()); + // 设置记录创建时间 + item.setCreateTime(LocalDateTimeUtil.nowTimeStamp()); + // 是否删除(逻辑删除)初始值 + item.setIsDelete(EYesOrNo.NO.getValue()); + + int rowCount = mapper.insert(item); + if (rowCount != 1) { + return ExecutedResult.failed("创建[报警规则配置]失败。"); + } + return ExecutedResult.success(item.getId()); + } + + public ExecutedResult<String> modify(ReqModifyAlarmScheme request) { + // 验证记录是否存在 + ExecutedResult<AlarmSchemePO> checkExists = this.check4Id(request.getId()); + if (checkExists.isFailed()) { + return ExecutedResult.failed(checkExists.getMsg()); + } + // 转换po + AlarmSchemePO item = AlarmSchemeConvert.INSTANCE.toModify(request); + + int rowCount = mapper.updateById(item); + if (rowCount != 1) { + return ExecutedResult.failed("编辑[报警规则配置]失败。"); + } + return ExecutedResult.success(); + } + + public ExecutedResult<AlarmSchemeVO> get(Long id) { + AlarmSchemeVO result = new AlarmSchemeVO(); + + AlarmSchemePO find = mapper.get(id); + if (null != find) { + // 转换vo + result = AlarmSchemeConvert.INSTANCE.toVo(find); + } + return ExecutedResult.success(result); + } + +// public ExecutedResult<String> stop(Long id) { +// // 验证记录是否存在 +// ExecutedResult<AlarmSchemePO> checkExists = this.check4Id(id); +// if (checkExists.isFailed()) { +// return ExecutedResult.failed(checkExists.getMsg()); +// } +// AlarmSchemePO item = new AlarmSchemePO(); +// item.setId(id); +// item.setStatus(EState.DISABLED.getValue()); +// +// int rowCount = mapper.updateById(item); +// if (rowCount != 1) { +// return ExecutedResult.failed("停用[报警规则配置]失败。"); +// } +// return ExecutedResult.success(); +// } +// +// public ExecutedResult<String> enable(Long id) { +// // 验证记录是否存在 +// ExecutedResult<AlarmSchemePO> checkExists = this.check4Id(id); +// if (checkExists.isFailed()) { +// return ExecutedResult.failed(checkExists.getMsg()); +// } +// AlarmSchemePO item = new AlarmSchemePO(); +// item.setId(id); +// item.setStatus(EState.NORMAL.getValue()); +// +// int rowCount = mapper.updateById(item); +// if (rowCount != 1) { +// return ExecutedResult.failed("启用[报警规则配置]失败。"); +// } +// return ExecutedResult.success(); +// } +// +// public ExecutedResult<String> setSort(ReqSetSort request) { +// // 验证记录是否存在 +// ExecutedResult<AlarmSchemePO> checkExists = this.check4Id(request.getId()); +// if (checkExists.isFailed()) { +// return ExecutedResult.failed(checkExists.getMsg()); +// } +// AlarmSchemePO item = new AlarmSchemePO(); +// item.setId(request.getId()); +// item.setSort(request.getSort()); +// +// int rowCount = mapper.updateById(item); +// if (rowCount != 1) { +// return ExecutedResult.failed("设置[报警规则配置]排序值失败。"); +// } +// return ExecutedResult.success(); +// } +// +// public ExecutedResult<String> listSetSort(ReqListSetSort request) { +// // id列表 +// List<Long> listId = request.getList().stream().map(ReqSetSort::getId).collect(Collectors.toList()); +// // 验证记录是否存在 +// ExecutedResult<List<AlarmSchemePO>> checkExists = this.check4Id(listId); +// if (checkExists.isFailed()) { +// return ExecutedResult.failed(checkExists.getMsg()); +// } +// +// List<AlarmSchemePO> listUpdate = request.getList().stream() +// .map(c -> { +// AlarmSchemePO item = new AlarmSchemePO(); +// item.setId(c.getId()); +// item.setSort(c.getSort()); +// return item; +// }) +// .collect(Collectors.toList()); +// Boolean result = mapper.modifyList(listUpdate); +// if (result) { +// return ExecutedResult.success(); +// } +// return ExecutedResult.failed("[报警规则配置]设置排序值失败"); +// } +// +// public ExecutedResult<String> remove(Long id) { +// Boolean result = mapper.deleteLogic(id); +// if (BooleanUtils.isFalse(result)) { +// return ExecutedResult.failed("删除[报警规则配置]失败。"); +// } +// return ExecutedResult.success(); +// } +// +// public ExecutedResult<String> removeList(List<Long> ids) { +// Boolean result = mapper.deleteLogic(ids); +// if (BooleanUtils.isFalse(result)) { +// return ExecutedResult.failed("删除[报警规则配置]失败。"); +// } +// return ExecutedResult.success(); +// } + + public ExecutedResult<List<AlarmSchemeVO>> getList(List<Long> listId) { + List<AlarmSchemeVO> result = new ArrayList<>(); + + List<AlarmSchemePO> list = mapper.getList(listId); + if (ListUtil.isNotNullOrEmpty(list)) { + // 转换vo + result = AlarmSchemeConvert.INSTANCE.toVo(list); + } + return ExecutedResult.success(result); + } + + public ExecutedResult<PagerResult<AlarmSchemeVO>> search(SearchAlarmScheme search) { + // 处理创建时间范围-查询参数 + Tuple<String, String> createTimeRange = ParameterUtil.getTimeRange(search.getCreateTimeRange()); + if (StringUtil.isNotNullOrEmpty(createTimeRange.getItem1())) { + search.setCreateTimeStart(LocalDateTimeUtil.getTimeStamp(createTimeRange.getItem1()).getTime()); + } + if (StringUtil.isNotNullOrEmpty(createTimeRange.getItem2())) { + search.setCreateTimeEnd(LocalDateTimeUtil.getTimeStamp(createTimeRange.getItem2()).getTime()); + } + + PagerResult<AlarmSchemePO> pageList = mapper.search(search); + List<AlarmSchemeVO> listVo = new ArrayList<>(); + List<AlarmSchemePO> list = pageList.getList(); + if (ListUtil.isNotNullOrEmpty(list)) { + pageList.setLastId(list.get(list.size() - 1).getId()); + // 转换vo + listVo = AlarmSchemeConvert.INSTANCE.toVo(list); + } + PagerResult<AlarmSchemeVO> result = new PagerResult<>(pageList.getLimit(), pageList.getPage(), pageList.getTotal(), listVo); + result.setLastId(pageList.getLastId()); + return ExecutedResult.success(result); + } + + protected ExecutedResult<AlarmSchemePO> check4Id(Long id) { + AlarmSchemePO exists = mapper.get(id); + if (Objects.isNull(exists)) { + return ExecutedResult.failed("[报警规则配置]不存在:" + id); + } + return ExecutedResult.success(exists); + } + protected ExecutedResult<List<AlarmSchemePO>> check4Id(List<Long> listId) { + // 从数据库查找报警规则配置 + List<AlarmSchemePO> list = mapper.getList(listId); + if (ListUtil.isNullOrEmpty(list)) { + return ExecutedResult.failed("[报警规则配置]不存在." + listId); + } + // 数据库找到的id列表 + List<Long> listIdFind = list.stream().map(AlarmSchemePO::getId).collect(Collectors.toList()); + // 数量不一致 + if (listId.size() != listIdFind.size()) { + // 筛选数据库不存在的报警规则配置 + List<Long> listIdNotFound = listId.stream().filter(c -> !listIdFind.contains(c)).collect(Collectors.toList()); + if (ListUtil.isNullOrEmpty(list)) { + return ExecutedResult.failed("[报警规则配置]不存在." + listIdNotFound); + } + } + return ExecutedResult.success(list); + }} diff --git a/src/main/java/com/fengdu/gas/service/DataUploadRecordService.java b/src/main/java/com/fengdu/gas/service/DataUploadRecordService.java index b4e854d..621cc16 100644 --- a/src/main/java/com/fengdu/gas/service/DataUploadRecordService.java +++ b/src/main/java/com/fengdu/gas/service/DataUploadRecordService.java @@ -33,6 +33,7 @@ import com.google.gson.JsonObject; import com.google.gson.JsonParser; import org.apache.commons.lang3.BooleanUtils; +import org.slf4j.Logger; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -67,7 +68,8 @@ private DataUploadRecordMonthMapperImpl dataUploadRecordMonthMapper; @Autowired private WaterFacilityParameterMapperImpl waterFacilityParameterMapper; - + private static final Logger DEBUG_LOGGER = LoggerUtil.get(ELogger.DEBUG); + private static final Logger ERROR_LOGGER = LoggerUtil.get(ELogger.SYS_ERROR); public ExecutedResult<Long> create(ReqCreateDataUploadRecord request) { // 转换po DataUploadRecordPO item = DataUploadRecordConvert.INSTANCE.toCreate(request); @@ -202,9 +204,31 @@ // } // return ExecutedResult.success(); // } + /** + * mqtt收到消息 + * @param topic 主题 + * @param msg 消息内容 + */ + public void mqttReceived(String topic, String msg) { + if (StringUtil.isNullOrEmpty(topic)) { + ERROR_LOGGER.error("主题不能为空"); + return; + } + if (StringUtil.isNullOrEmpty(msg)) { + ERROR_LOGGER.error("消息不能为空"); + return; + } + if (msg.startsWith("{\"platform")) { + return; + } + //报文解析 + //添加参数报警记录 + List<WaterFacilityPO> facilityPOList = waterFacilityMapper.getList(); + FacilityAlarmRecordPO recordPO=new FacilityAlarmRecordPO(); + + } public ExecutedResult<String> dataUpload(Long startTime, Long endTime, Integer type) { List<WaterFacilityPO> facilityPOList = waterFacilityMapper.getList(); - List<WaterMonitoryPointPO> pointPOList = waterMonitoryPointMapper.getList(); //获取所有设备参数 List<WaterFacilityParameterPO> parameterPOList = waterFacilityParameterMapper.getList(); diff --git a/src/main/java/com/fengdu/gas/service/FacilityAlarmRecordService.java b/src/main/java/com/fengdu/gas/service/FacilityAlarmRecordService.java index de75a51..88f1990 100644 --- a/src/main/java/com/fengdu/gas/service/FacilityAlarmRecordService.java +++ b/src/main/java/com/fengdu/gas/service/FacilityAlarmRecordService.java @@ -22,10 +22,13 @@ */ package com.fengdu.gas.service; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.fengdu.gas.common.*; import com.fengdu.gas.common.enums.*; import com.fengdu.gas.common.model.Tuple; import com.fengdu.gas.common.util.*; +import com.fengdu.gas.entity.response.alarm.FacilityAlarm; +import com.fengdu.gas.repository.po.AlarmSchemePO; import org.apache.commons.lang3.BooleanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -50,7 +53,7 @@ public ExecutedResult<Long> create(ReqCreateFacilityAlarmRecord request) { // 转换po - FacilityAlarmRecordPO item = FacilityAlarmRecordConvert.INSTANCE.toCreate(request); + FacilityAlarmRecordPO item = CopierUtil.mapTo(request, FacilityAlarmRecordPO.class); // 设置状态 //item.setStatus(EState.NORMAL.getValue()); // 设置记录创建时间 @@ -193,16 +196,37 @@ } return ExecutedResult.success(result); } - - public ExecutedResult<PagerResult<FacilityAlarmRecordVO>> search(SearchFacilityAlarmRecord search) { + public ExecutedResult<List<FacilityAlarm>> getAlarmList(Integer dateType){ + List<FacilityAlarm> result=new ArrayList<>(); // 处理创建时间范围-查询参数 - Tuple<String, String> createTimeRange = ParameterUtil.getTimeRange(search.getCreateTimeRange()); - if (StringUtil.isNotNullOrEmpty(createTimeRange.getItem1())) { - search.setCreateTimeStart(LocalDateTimeUtil.getTimeStamp(createTimeRange.getItem1()).getTime()); + if(dateType!=null&&dateType>0) { + Long beginTime = 0L; + Long endTime = 0L; + switch (dateType) { + case 1: + beginTime = LocalDateTimeUtil.getTimeStamp(LocalDateTimeUtils.todayStartTime()).getTime(); + endTime = LocalDateTimeUtil.getTimeStamp(LocalDateTimeUtils.todayEndTime()).getTime(); + break; + case 2: + beginTime = LocalDateTimeUtil.getTimeStamp(LocalDateTimeUtils.weekStartTime()).getTime(); + endTime = LocalDateTimeUtil.getTimeStamp(LocalDateTimeUtils.weekEndTime()).getTime(); + break; + case 3: + beginTime = LocalDateTimeUtil.getTimeStamp(LocalDateTimeUtils.monthStartTime()).getTime(); + endTime = LocalDateTimeUtil.getTimeStamp(LocalDateTimeUtils.monthEndTime()).getTime(); + break; + case 4: + beginTime = LocalDateTimeUtil.getTimeStamp(LocalDateTimeUtils.yearStartTime()).getTime(); + endTime = LocalDateTimeUtil.getTimeStamp(LocalDateTimeUtils.yearEndTime()).getTime(); + break; + } + if (beginTime > 0&&endTime > 0) { + result= mapper.getByDateType(LocalDateTimeUtil.toFormatString(beginTime),LocalDateTimeUtil.toFormatString(endTime)); + } } - if (StringUtil.isNotNullOrEmpty(createTimeRange.getItem2())) { - search.setCreateTimeEnd(LocalDateTimeUtil.getTimeStamp(createTimeRange.getItem2()).getTime()); - } + return ExecutedResult.success(result); + } + public ExecutedResult<PagerResult<FacilityAlarmRecordVO>> search(SearchFacilityAlarmRecord search) { PagerResult<FacilityAlarmRecordPO> pageList = mapper.search(search); List<FacilityAlarmRecordVO> listVo = new ArrayList<>(); diff --git a/src/main/java/com/fengdu/gas/service/TestInfoService.java b/src/main/java/com/fengdu/gas/service/TestInfoService.java index efb660d..58fe0e5 100644 --- a/src/main/java/com/fengdu/gas/service/TestInfoService.java +++ b/src/main/java/com/fengdu/gas/service/TestInfoService.java @@ -1,5 +1,6 @@ package com.fengdu.gas.service; +import com.fengdu.gas.entity.request.test.TestPayVO; import com.fengdu.gas.repository.po.TestInfoPO; import com.fengdu.gas.service.convert.TestInfoConvert; import com.fengdu.gas.common.ExecutedResult; @@ -15,10 +16,30 @@ import com.fengdu.gas.entity.search.SearchTestInfo; import com.fengdu.gas.repository.impl.TestInfoMapperImpl; import com.fengdu.gas.repository.vo.TestInfoVO; +import com.google.gson.Gson; import org.apache.commons.lang3.BooleanUtils; +import org.apache.http.HttpStatus; +import org.apache.http.client.entity.UrlEncodedFormEntity; +import org.apache.http.client.methods.CloseableHttpResponse; +import org.apache.http.client.methods.HttpPost; +import org.apache.http.entity.StringEntity; +import org.apache.http.impl.client.CloseableHttpClient; +import org.apache.http.impl.client.HttpClients; +import org.apache.http.message.BasicNameValuePair; +import org.apache.http.util.EntityUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import javax.crypto.Cipher; +import javax.crypto.KeyGenerator; +import javax.crypto.SecretKey; +import java.io.*; +import java.net.HttpURLConnection; +import java.net.URL; +import java.security.KeyStore; +import java.security.NoSuchAlgorithmException; +import java.security.Signature; +import java.security.interfaces.RSAPrivateCrtKey; import java.util.*; import java.util.stream.Collectors; @@ -29,222 +50,237 @@ public class TestInfoService extends BaseService { @Autowired private TestInfoMapperImpl mapper; + //私钥 + private final static String PRIVATE_KEY=""; + private final static String PASSWORD=""; - public ExecutedResult<Long> create(ReqCreateTestInfo request) { - // 转换po - TestInfoPO item = TestInfoConvert.INSTANCE.toCreate(request); - // 设置状态 - item.setStatus(EState.NORMAL.getValue()); - // 设置记录创建时间 - item.setCreateTime(LocalDateTimeUtil.nowTimeStamp()); - // 非逻辑删除 - item.setIsDelete(EYesOrNo.NO.getValue()); - - int rowCount = mapper.insert(item); - if (rowCount != 1) { - return ExecutedResult.failed("创建[测试信息]失败。"); - } - return ExecutedResult.success(item.getId()); + /** + * AES256加密 + * @param data + * @return + * @throws Exception + */ + public String AES256(String data) throws Exception { + KeyGenerator keyGenerator = KeyGenerator.getInstance("AES"); + keyGenerator.init(256); // 初始化密钥生成器,指定AES-256 + SecretKey key = keyGenerator.generateKey(); + Cipher cipher = Cipher.getInstance("AES/GCM/NoPadding"); + cipher.init(Cipher.ENCRYPT_MODE, key); + byte[] encrypted = cipher.doFinal(data.getBytes("UTF-8")); + return Base64.getEncoder().encodeToString(encrypted); } - public ExecutedResult<String> modify(ReqModifyTestInfo request) { - // 验证记录是否存在 - ExecutedResult<TestInfoPO> checkExists = this.check4Id(request.getId()); - if (checkExists.isFailed()) { - return ExecutedResult.failed(checkExists.getMsg()); + /** + * Base64加密 + * @param data + * @return + */ + public String Base64(String data) { + String encodedString = Base64.getEncoder().encodeToString(data.getBytes()); + return encodedString; + } + public static String getKeyAndValueStr(Map<String, String> map) { + String result = ""; + try { + List<Map.Entry<String, String>> infoIds = new ArrayList<>(map.entrySet()); + // 对所有传入参数按照字段名的 ASCII 码从小到大排序(字典序) + Collections.sort(infoIds, Comparator.comparing(Map.Entry::getKey)); + // 构造签名键值对的格式 + StringBuilder sb = new StringBuilder(); + for (Map.Entry<String, String> item : infoIds) { + if (item.getKey() != null && item.getKey() != "") { + String key = item.getKey(); + String val = item.getValue(); + if (!(val == "" || val == null)) { + sb.append(key + "=" + val + "&"); + } + } + } + result = sb.toString().substring(0, sb.length() - 1); + } catch (Exception e) { + return null; } - - // 转换po - TestInfoPO item = TestInfoConvert.INSTANCE.toModify(request); - - int rowCount = mapper.updateById(item); - if (rowCount != 1) { - return ExecutedResult.failed("编辑[测试信息]失败。"); - } - return ExecutedResult.success(); + return result; } - public ExecutedResult<TestInfoVO> get(Long id) { - TestInfoVO result = new TestInfoVO(); - TestInfoPO find = mapper.selectById(id); - if (null != find) { - result = TestInfoConvert.INSTANCE.toVo(find); + /** + * 测试支付 + * @return + * @throws Exception + */ + public ExecutedResult<String> testPay() throws Exception { + CloseableHttpClient client = HttpClients.createDefault(); + HttpPost httpPost = new HttpPost("https://test.sumpay.cn/entrance/gateway.htm"); + List<BasicNameValuePair> pairList = new ArrayList<>(); + Map<String, String> map = new HashMap<>(); + map.put("service", "fosun.sumpay.api.orderpay.order.apply"); + map.put("version","1.0"); + map.put("format","JSON"); + map.put("app_id",); + map.put("timestamp","20250313142521"); + map.put("terminal_type","api"); + map.put("mer_no", "200102833852");//商户号 + map.put("account_type", "01");//付款方账户类型 + map.put("card_no", AES256("6217007200125513450"));//付款方账户号 + map.put("real_name", AES256("尹勇"));//付款方账户名 + //map.put("bank_code","");//银行代码 + //map.put("id_type","1");//证件类型 + //map.put("id_no",AES256(""));//证件号码 + //map.put("notify_url");//商户后台通知URL + map.put("goods_name", Base64("测试001"));//商品名称 + map.put("goods_num", "1");//商品数量 + map.put("goods_price", "0.11");//商品价格 + map.put("goods_type", "1");//商品类型 + map.put("order_no", "111111111111111");//订单号 + map.put("order_amount", "0.11");//订单金额 + map.put("order_time", "20250313142521");//订单时间 + map.put("currency", "CNY");//币种 + // map.put("pay_comments");//附言 + //map.put("remark");//备注字段 + Map<String, String> map1 = new HashMap<>(); + for (Map.Entry<String, String> entry : map.entrySet()) { + map1.put(entry.getKey(), entry.getValue()); } - return ExecutedResult.success(result); - } + //map转换字符串&拼接并排序 + String keyAndValueStr = getKeyAndValueStr(map); + //签名处理 + String msg = signMsg(keyAndValueStr, PRIVATE_KEY, PASSWORD, "UTF-8"); + map1.put("sign_type","CERT"); + map1.put("sign",msg); - public ExecutedResult<String> stop(Long id) { - // 验证记录是否存在 - ExecutedResult<TestInfoPO> checkExists = this.check4Id(id); - if (checkExists.isFailed()) { - return ExecutedResult.failed(checkExists.getMsg()); + for(String key:map1.keySet()){ + pairList.add(new BasicNameValuePair(key,map1.get(key))); } - - TestInfoPO item = new TestInfoPO(); - item.setId(id); - item.setStatus(EState.DISABLED.getValue()); - - int rowCount = mapper.updateById(item); - if (rowCount != 1) { - return ExecutedResult.failed("停用[测试信息]失败。"); - } - return ExecutedResult.success(); - } - - public ExecutedResult<String> enable(Long id) { - // 验证记录是否存在 - ExecutedResult<TestInfoPO> checkExists = this.check4Id(id); - if (checkExists.isFailed()) { - return ExecutedResult.failed(checkExists.getMsg()); - } - - TestInfoPO item = new TestInfoPO(); - item.setId(id); - item.setStatus(EState.NORMAL.getValue()); - - int rowCount = mapper.updateById(item); - if (rowCount != 1) { - return ExecutedResult.failed("启用[测试信息]失败。"); - } - return ExecutedResult.success(); - } - - public ExecutedResult<String> setSort(ReqSetSort request) { - // 验证记录是否存在 - ExecutedResult<TestInfoPO> checkExists = this.check4Id(request.getId()); - if (checkExists.isFailed()) { - return ExecutedResult.failed(checkExists.getMsg()); - } - - TestInfoPO item = new TestInfoPO(); - item.setId(request.getId()); - item.setSort(request.getSort()); - - int rowCount = mapper.updateById(item); - if (rowCount != 1) { - return ExecutedResult.failed("[测试信息]设置排序值失败。"); - } - return ExecutedResult.success(); - } - - public ExecutedResult<String> listSetSort(ReqListSetSort request) { - // id列表 - List<Long> listId = request.getList().stream().map(ReqSetSort::getId).collect(Collectors.toList()); - // 验证记录是否存在 - ExecutedResult<List<TestInfoPO>> checkExists = this.check4Id(listId); - if (checkExists.isFailed()) { - return ExecutedResult.failed(checkExists.getMsg()); - } - - List<TestInfoPO> listUpdate = request.getList().stream() - .map(c -> { - TestInfoPO item = new TestInfoPO(); - item.setId(c.getId()); - item.setSort(c.getSort()); - return item; - }) - .collect(Collectors.toList()); - Boolean result = mapper.modifyList(listUpdate); - if (result) { - return ExecutedResult.success(); - } - return ExecutedResult.failed("[测试信息]设置排序值失败"); - } - - public ExecutedResult<String> remove(Long id) { - // 验证记录是否存在 - ExecutedResult<TestInfoPO> checkExists = this.check4Id(id); - if (checkExists.isFailed()) { - return ExecutedResult.failed(checkExists.getMsg()); - } - - Boolean result = mapper.deleteLogic(id); - if (BooleanUtils.isFalse(result)) { - return ExecutedResult.failed("删除[测试信息]失败。"); - } - return ExecutedResult.success(); - } - - public ExecutedResult<String> removeList(List<Long> listId) { - // 验证记录是否存在 - ExecutedResult<List<TestInfoPO>> checkExists = this.check4Id(listId); - if (checkExists.isFailed()) { - return ExecutedResult.failed(checkExists.getMsg()); - } - - Boolean result = mapper.deleteLogic(listId); - if (BooleanUtils.isFalse(result)) { - return ExecutedResult.failed("删除[测试信息]失败。"); - } - return ExecutedResult.success(); - } - - public ExecutedResult<List<TestInfoVO>> getList(List<Long> listId) { - List<TestInfoVO> result = new ArrayList<>(); - - List<TestInfoPO> list = mapper.getList(listId); - if (ListUtil.isNotNullOrEmpty(list)) { - result = CopierUtil.mapTo(list, TestInfoVO.class); - } - return ExecutedResult.success(result); - } - - public ExecutedResult<PagerResult<TestInfoVO>> search(SearchTestInfo search) { - // 处理创建时间范围-查询参数 - Tuple<String, String> createTimeRange = ParameterUtil.getTimeRange(search.getCreateTimeRange()); - if (StringUtil.isNotNullOrEmpty(createTimeRange.getItem1())) { - search.setCreateTimeStart(LocalDateTimeUtil.getTimeStamp(createTimeRange.getItem1()).getTime()); - } - if (StringUtil.isNotNullOrEmpty(createTimeRange.getItem2())) { - search.setCreateTimeEnd(LocalDateTimeUtil.getTimeStamp(createTimeRange.getItem2()).getTime()); - } - - PagerResult<TestInfoPO> pageList = mapper.search(search); - List<TestInfoVO> listVo = new ArrayList<>(); - List<TestInfoPO> list = pageList.getList(); - if (ListUtil.isNotNullOrEmpty(list)) { - pageList.setLastId(list.get(list.size() - 1).getId()); - // 转换vo - listVo = TestInfoConvert.INSTANCE.toVo(list); - } - PagerResult<TestInfoVO> result = new PagerResult<>(pageList.getLimit(), pageList.getPage(), pageList.getTotal(), listVo); - result.setLastId(pageList.getLastId()); - return ExecutedResult.success(result); - } - - protected ExecutedResult<TestInfoPO> check4Id(Long id) { - TestInfoPO exists = mapper.get(id); - if (Objects.isNull(exists)) { - return ExecutedResult.failed("[测试信息]不存在:" + id); - } - return ExecutedResult.success(exists); - } - protected ExecutedResult<List<TestInfoPO>> check4Id(List<Long> listId) { - // 从数据库查找测试信息 - List<TestInfoPO> list = mapper.getList(listId); - if (ListUtil.isNullOrEmpty(list)) { - return ExecutedResult.failed("[测试信息]不存在." + listId); - } - // 数据库找到的id列表 - List<Long> listIdFind = list.stream().map(TestInfoPO::getId).collect(Collectors.toList()); - // 数量不一致 - if (listId.size() != listIdFind.size()) { - // 筛选数据库不存在的测试信息 - List<Long> listIdNotFound = listId.stream().filter(c -> !listIdFind.contains(c)).collect(Collectors.toList()); - if (ListUtil.isNullOrEmpty(list)) { - return ExecutedResult.failed("[测试信息]不存在." + listIdNotFound); + UrlEncodedFormEntity entity = new UrlEncodedFormEntity(pairList, "UTF-8"); + httpPost.setEntity(entity); + try { + // 执行请求并获取响应 + CloseableHttpResponse response = client.execute(httpPost); + try { + if(response.getStatusLine().getStatusCode()== HttpStatus.SC_OK){ + String data=EntityUtils.toString(response.getEntity(),"UTF-8"); + System.out.println(data); + }else { + throw new RuntimeException("接口连接失败"); + } + // 处理响应... + } finally { + response.close(); + } + } catch (IOException e) { + e.printStackTrace(); + } finally { + try { + client.close(); + } catch (IOException e) { + e.printStackTrace(); } } - return ExecutedResult.success(list); + return ExecutedResult.success(); } - - protected Map<Long, TestInfoPO> getMap4Id(List<Long> listId) { - List<TestInfoPO> list = mapper.getList(listId); - if (ListUtil.isNullOrEmpty(list)) { - return new HashMap<>(0); + /** + * 订单支付确认接口 + * @return + * @throws Exception + */ + public ExecutedResult<String> confirmPay() throws Exception { + CloseableHttpClient client = HttpClients.createDefault(); + HttpPost httpPost = new HttpPost("https://test.sumpay.cn/entrance/gateway.htm"); + List<BasicNameValuePair> pairList = new ArrayList<>(); + Map<String, String> map = new HashMap<>(); + map.put("service", "fosun.sumpay.api.orderpay.order.apply"); + map.put("version","1.0"); + map.put("format","JSON"); + map.put("app_id",); + map.put("timestamp","20250313142521"); + map.put("terminal_type","api"); + map.put("mer_no", "200102833852");//商户号 + map.put("order_no", "111111111111111");//订单号 + map.put("serial_no", "");//入账流水号 + Map<String, String> map1 = new HashMap<>(); + for (Map.Entry<String, String> entry : map.entrySet()) { + map1.put(entry.getKey(), entry.getValue()); } - return list.stream().collect(Collectors.toMap(TestInfoPO::getId, c -> c)); - } + //map转换字符串&拼接并排序 + String keyAndValueStr = getKeyAndValueStr(map); + //签名处理 + String msg = signMsg(keyAndValueStr, PRIVATE_KEY, PASSWORD, "UTF-8"); + map1.put("sign_type","CERT"); + map1.put("sign",msg); + for(String key:map1.keySet()){ + pairList.add(new BasicNameValuePair(key,map1.get(key))); + } + UrlEncodedFormEntity entity = new UrlEncodedFormEntity(pairList, "UTF-8"); + httpPost.setEntity(entity); + try { + // 执行请求并获取响应 + CloseableHttpResponse response = client.execute(httpPost); + try { + if(response.getStatusLine().getStatusCode()== HttpStatus.SC_OK){ + String data=EntityUtils.toString(response.getEntity(),"UTF-8"); + System.out.println(data); + }else { + throw new RuntimeException("接口连接失败"); + } + // 处理响应... + } finally { + response.close(); + } + } catch (IOException e) { + e.printStackTrace(); + } finally { + try { + client.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + return ExecutedResult.success(); + } + /** + * 签名处理 + * @param privateKeyPath:私钥 + * @param plaintext:原始字符串 + * @param passWord:证书密码 + * @param charset :UTF-8 + * @return + */ + public String signMsg(String plaintext, String privateKeyPath, String passWord, String charset) { + try { + InputStream keyFile = new FileInputStream(new File(privateKeyPath)); + KeyStore ks = KeyStore.getInstance("PKCS12"); + try { + ks.load(keyFile, passWord.toCharArray()); + } catch (Throwable ex) { + if (keyFile != null) + keyFile.close(); + throw new RuntimeException("加载私钥失败",ex); + } + Enumeration<String> myEnum = ks.aliases(); + String keyAlias = null; + RSAPrivateCrtKey prikey = null; + /* IBM JDK必须使用While循环取最后一个别名,才能得到个人私钥别名 */ + while (myEnum.hasMoreElements()) { + keyAlias = myEnum.nextElement(); + if (ks.isKeyEntry(keyAlias)) { + prikey = (RSAPrivateCrtKey) ks.getKey(keyAlias, passWord.toCharArray()); + break; + } + } + if (prikey == null) { + throw new RuntimeException("没有找到匹配私钥"); + } else { + Signature sign = Signature.getInstance("SHA256withRSA"); + sign.initSign(prikey); + sign.update(plaintext.getBytes(charset)); + return org.apache.commons.codec.binary.Base64.encodeBase64String(sign.sign()); + } + } catch (RuntimeException e) { + throw e; + } catch (Throwable e) { + throw new RuntimeException("签名失败",e); + } + } } diff --git a/src/main/java/com/fengdu/gas/service/UserWorkOrderService.java b/src/main/java/com/fengdu/gas/service/UserWorkOrderService.java index e9fffe6..64e7691 100644 --- a/src/main/java/com/fengdu/gas/service/UserWorkOrderService.java +++ b/src/main/java/com/fengdu/gas/service/UserWorkOrderService.java @@ -26,6 +26,8 @@ import com.fengdu.gas.common.enums.*; import com.fengdu.gas.common.model.Tuple; import com.fengdu.gas.common.util.*; +import com.fengdu.gas.repository.impl.WaterFacilityMapperImpl; +import com.fengdu.gas.repository.po.WaterFacilityPO; import org.apache.commons.lang3.BooleanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -47,6 +49,8 @@ public class UserWorkOrderService extends BaseService { @Autowired private UserWorkOrderMapperImpl mapper; + @Autowired + private WaterFacilityMapperImpl waterFacilityMapper; public ExecutedResult<Long> create(ReqCreateUserWorkOrder request) { // 转换po @@ -210,7 +214,15 @@ if (ListUtil.isNotNullOrEmpty(list)) { pageList.setLastId(list.get(list.size() - 1).getId()); // 转换vo - listVo = UserWorkOrderConvert.INSTANCE.toVo(list); + listVo = CopierUtil.mapTo(list, UserWorkOrderVO.class); + List<WaterFacilityPO> facilityPOList = waterFacilityMapper.getList(); + for(UserWorkOrderVO vo:listVo){ + WaterFacilityPO waterFacilityPO = facilityPOList.stream().filter(item -> item.getFacilityCode().equals(vo.getFacilityCode())).findFirst().orElse(null); + if(Objects.nonNull(waterFacilityPO)){ + vo.setPointName(waterFacilityPO.getPointName()); + vo.setFacilityName(waterFacilityPO.getFacilityName()); + } + } } PagerResult<UserWorkOrderVO> result = new PagerResult<>(pageList.getLimit(), pageList.getPage(), pageList.getTotal(), listVo); result.setLastId(pageList.getLastId()); diff --git a/src/main/java/com/fengdu/gas/service/WaterFacilityParameterService.java b/src/main/java/com/fengdu/gas/service/WaterFacilityParameterService.java index 302ef34..35bda99 100644 --- a/src/main/java/com/fengdu/gas/service/WaterFacilityParameterService.java +++ b/src/main/java/com/fengdu/gas/service/WaterFacilityParameterService.java @@ -26,6 +26,9 @@ import com.fengdu.gas.common.enums.*; import com.fengdu.gas.common.model.Tuple; import com.fengdu.gas.common.util.*; +import com.fengdu.gas.entity.request.waterfacilityparameter.ReqAddParameter; +import com.fengdu.gas.repository.impl.WaterFacilityMapperImpl; +import com.fengdu.gas.repository.po.WaterFacilityPO; import org.apache.commons.lang3.BooleanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -47,22 +50,34 @@ public class WaterFacilityParameterService extends BaseService { @Autowired private WaterFacilityParameterMapperImpl mapper; + @Autowired + private WaterFacilityMapperImpl waterFacilityMapper; - public ExecutedResult<Long> create(ReqCreateWaterFacilityParameter request) { - // 转换po - WaterFacilityParameterPO item = WaterFacilityParameterConvert.INSTANCE.toCreate(request); - // 设置状态 - //item.setStatus(EState.NORMAL.getValue()); - // 设置记录创建时间 - item.setCreateTime(LocalDateTimeUtil.nowTimeStamp()); - // 是否删除(逻辑删除)初始值 - item.setIsDelete(EYesOrNo.NO.getValue()); - - int rowCount = mapper.insert(item); - if (rowCount != 1) { - return ExecutedResult.failed("创建[设备设定参数]失败。"); + public ExecutedResult<String> create(ReqAddParameter request) { + WaterFacilityPO facilityPO = waterFacilityMapper.get(request.getFacilityId()); + if (Objects.isNull(facilityPO)) { + return ExecutedResult.failed("所属设备[id=" + request.getFacilityId() + "]不存在。"); } - return ExecutedResult.success(item.getId()); + List<WaterFacilityParameterPO> list = mapper.getListByFacilityId(request.getFacilityId()); + if (ListUtil.isNotNullOrEmpty(request.getParameterList())) { + for (ReqCreateWaterFacilityParameter x : request.getParameterList()) { + WaterFacilityParameterPO parameterPO = list.stream().filter(item -> item.getFacilityId().equals(request.getFacilityId()) && item.getColumnsCode().equals(x.getColumnsCode())).findFirst().orElse(null); + if(Objects.isNull(parameterPO)) { + WaterFacilityParameterPO item = new WaterFacilityParameterPO(); + item.setId(SnowFlakeUtil.getId()); + item.setFacilityId(facilityPO.getId()); + item.setFacilityCode(facilityPO.getFacilityCode()); + item.setCreateTime(LocalDateTimeUtil.nowTimeStamp()); + item.setColumnsUnits(x.getColumnsUnits()); + item.setColumnsCode(x.getColumnsCode()); + item.setColumnsShow(x.getColumnsShow()); + item.setColumnValue(""); + item.setLastTime(""); + this.mapper.insert(item); + } + } + } + return ExecutedResult.success("添加成功"); } public ExecutedResult<String> modify(ReqModifyWaterFacilityParameter request) { diff --git a/src/main/java/com/fengdu/gas/service/WaterFacilityService.java b/src/main/java/com/fengdu/gas/service/WaterFacilityService.java index 27e051b..8b2b2fe 100644 --- a/src/main/java/com/fengdu/gas/service/WaterFacilityService.java +++ b/src/main/java/com/fengdu/gas/service/WaterFacilityService.java @@ -1,36 +1,46 @@ /** -# __----~~~~~~~~~~~------___ -# . . ~~//====...... __--~ ~~ -# -. \_|// |||\\ ~~~~~~::::... /~ -# ___-==_ _-~o~ \/ ||| \\ _/~~- -# __---~~~.==~||\=_ -_--~/_-~|- |\\ \\ _/~ -# _-~~ .=~ | \\-_ '-~7 /- / || \ / -# .~ .~ | \\ -_ / /- / || \ / -# / ____ / | \\ ~-_/ /|- _/ .|| \ / -# |~~ ~~|--~~~~--_ \ ~==-/ | \~--===~~ .\ -# ' ~-| /| |-~\~~ __--~~ -# |-~~-_/ | | ~\_ _-~ /\ -# / \ \__ \/~ \__ -# _--~ _/ | .-~~____--~-/ ~~==. -# ((->/~ '.|||' -_| ~~-/ , . _|| -# -_ ~\ ~~---l__i__i__i--~~_/ -# _-~-__ ~) \--______________--~~ -# //.-~~~-~_--~- |-------~~~~~~~~ -# //.-~~~--\ -# 神兽保佑 -# 永无BUG! -*/ + # __----~~~~~~~~~~~------___ + # . . ~~//====...... __--~ ~~ + # -. \_|// |||\\ ~~~~~~::::... /~ + # ___-==_ _-~o~ \/ ||| \\ _/~~- + # __---~~~.==~||\=_ -_--~/_-~|- |\\ \\ _/~ + # _-~~ .=~ | \\-_ '-~7 /- / || \ / + # .~ .~ | \\ -_ / /- / || \ / + # / ____ / | \\ ~-_/ /|- _/ .|| \ / + # |~~ ~~|--~~~~--_ \ ~==-/ | \~--===~~ .\ + # ' ~-| /| |-~\~~ __--~~ + # |-~~-_/ | | ~\_ _-~ /\ + # / \ \__ \/~ \__ + # _--~ _/ | .-~~____--~-/ ~~==. + # ((->/~ '.|||' -_| ~~-/ , . _|| + # -_ ~\ ~~---l__i__i__i--~~_/ + # _-~-__ ~) \--______________--~~ + # //.-~~~-~_--~- |-------~~~~~~~~ + # //.-~~~--\ + # 神兽保佑 + # 永无BUG! + */ package com.fengdu.gas.service; import com.fengdu.gas.common.*; import com.fengdu.gas.common.enums.*; import com.fengdu.gas.common.model.Tuple; import com.fengdu.gas.common.util.*; +import com.fengdu.gas.entity.response.facility.FacilityCount; +import com.fengdu.gas.entity.response.facility.FacilityData; +import com.fengdu.gas.repository.impl.WaterFacilityParameterMapperImpl; +import com.fengdu.gas.repository.impl.WaterMonitoryPointMapperImpl; +import com.fengdu.gas.repository.po.WaterFacilityParameterPO; +import com.fengdu.gas.repository.po.WaterMonitoryPointPO; import org.apache.commons.lang3.BooleanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; + +import java.math.BigDecimal; import java.util.*; import java.util.stream.Collectors; +import java.util.stream.Stream; + import com.fengdu.gas.repository.impl.WaterFacilityMapperImpl; import com.fengdu.gas.repository.po.WaterFacilityPO; import com.fengdu.gas.entity.request.waterfacility.ReqCreateWaterFacility; @@ -47,10 +57,14 @@ public class WaterFacilityService extends BaseService { @Autowired private WaterFacilityMapperImpl mapper; + @Autowired + private WaterFacilityParameterMapperImpl waterFacilityParameterMapper; + @Autowired + private WaterMonitoryPointMapperImpl waterMonitoryPointMapper; public ExecutedResult<Long> create(ReqCreateWaterFacility request) { // 转换po - WaterFacilityPO item = WaterFacilityConvert.INSTANCE.toCreate(request); + WaterFacilityPO item = CopierUtil.mapTo(request, WaterFacilityPO.class); // 设置状态 //item.setStatus(EState.NORMAL.getValue()); // 设置记录创建时间 @@ -92,96 +106,63 @@ return ExecutedResult.success(result); } -// public ExecutedResult<String> stop(Long id) { -// // 验证记录是否存在 -// ExecutedResult<WaterFacilityPO> checkExists = this.check4Id(id); -// if (checkExists.isFailed()) { -// return ExecutedResult.failed(checkExists.getMsg()); -// } -// WaterFacilityPO item = new WaterFacilityPO(); -// item.setId(id); -// item.setStatus(EState.DISABLED.getValue()); -// -// int rowCount = mapper.updateById(item); -// if (rowCount != 1) { -// return ExecutedResult.failed("停用[设备信息]失败。"); -// } -// return ExecutedResult.success(); -// } -// -// public ExecutedResult<String> enable(Long id) { -// // 验证记录是否存在 -// ExecutedResult<WaterFacilityPO> checkExists = this.check4Id(id); -// if (checkExists.isFailed()) { -// return ExecutedResult.failed(checkExists.getMsg()); -// } -// WaterFacilityPO item = new WaterFacilityPO(); -// item.setId(id); -// item.setStatus(EState.NORMAL.getValue()); -// -// int rowCount = mapper.updateById(item); -// if (rowCount != 1) { -// return ExecutedResult.failed("启用[设备信息]失败。"); -// } -// return ExecutedResult.success(); -// } -// -// public ExecutedResult<String> setSort(ReqSetSort request) { -// // 验证记录是否存在 -// ExecutedResult<WaterFacilityPO> checkExists = this.check4Id(request.getId()); -// if (checkExists.isFailed()) { -// return ExecutedResult.failed(checkExists.getMsg()); -// } -// WaterFacilityPO item = new WaterFacilityPO(); -// item.setId(request.getId()); -// item.setSort(request.getSort()); -// -// int rowCount = mapper.updateById(item); -// if (rowCount != 1) { -// return ExecutedResult.failed("设置[设备信息]排序值失败。"); -// } -// return ExecutedResult.success(); -// } -// -// public ExecutedResult<String> listSetSort(ReqListSetSort request) { -// // id列表 -// List<Long> listId = request.getList().stream().map(ReqSetSort::getId).collect(Collectors.toList()); -// // 验证记录是否存在 -// ExecutedResult<List<WaterFacilityPO>> checkExists = this.check4Id(listId); -// if (checkExists.isFailed()) { -// return ExecutedResult.failed(checkExists.getMsg()); -// } -// -// List<WaterFacilityPO> listUpdate = request.getList().stream() -// .map(c -> { -// WaterFacilityPO item = new WaterFacilityPO(); -// item.setId(c.getId()); -// item.setSort(c.getSort()); -// return item; -// }) -// .collect(Collectors.toList()); -// Boolean result = mapper.modifyList(listUpdate); -// if (result) { -// return ExecutedResult.success(); -// } -// return ExecutedResult.failed("[设备信息]设置排序值失败"); -// } -// -// public ExecutedResult<String> remove(Long id) { -// Boolean result = mapper.deleteLogic(id); -// if (BooleanUtils.isFalse(result)) { -// return ExecutedResult.failed("删除[设备信息]失败。"); -// } -// return ExecutedResult.success(); -// } -// -// public ExecutedResult<String> removeList(List<Long> ids) { -// Boolean result = mapper.deleteLogic(ids); -// if (BooleanUtils.isFalse(result)) { -// return ExecutedResult.failed("删除[设备信息]失败。"); -// } -// return ExecutedResult.success(); -// } + public ExecutedResult<List<FacilityData>> getFacilityList() { + List<FacilityData> result = new ArrayList<>(); + List<WaterMonitoryPointPO> pointPOList = waterMonitoryPointMapper.getList(); + List<WaterFacilityPO> facilityPOList = mapper.getList(); + List<WaterFacilityParameterPO> parameterPOList = waterFacilityParameterMapper.getList(); + for (WaterFacilityPO facilityPO : facilityPOList) { + WaterMonitoryPointPO pointPO = pointPOList.stream().filter(item -> item.getId().equals(facilityPO.getPointId())).findFirst().orElse(null); + FacilityData data = new FacilityData(); + data.setPointId(facilityPO.getPointId()); + data.setPointName(facilityPO.getPointName()); + data.setLeft(pointPO.getLeftMargin()); + data.setTop(pointPO.getTopMargin()); + data.setFacilityId(facilityPO.getId()); + data.setFacilityName(facilityPO.getFacilityName()); + data.setFacilityState(EFacilityState.getByValue(facilityPO.getFacilityState()).getDesc()); + data.setFacilityFanState(EFacilityState.getByValue(facilityPO.getFacilityFanState()).getDesc()); + List<WaterFacilityParameterPO> poList = parameterPOList.stream().filter(item -> item.getFacilityId().equals(facilityPO.getId())).collect(Collectors.toList()); + if (ListUtil.isNotNullOrEmpty(poList)) { + //获取甲烷值 + String methaneValue = poList.stream().filter(item -> item.getColumnsCode().equals("JW001")).map(WaterFacilityParameterPO::getColumnValue).findFirst().orElse(null); + //获取硫化氢值 + String hyrothionValue = poList.stream().filter(item -> item.getColumnsCode().equals("LHQ001")).map(WaterFacilityParameterPO::getColumnValue).findFirst().orElse(null); + //获取温度 + String temperature = poList.stream().filter(item -> item.getColumnsCode().equals("WD001")).map(WaterFacilityParameterPO::getColumnValue).findFirst().orElse(null); + + if (StringUtil.isNotNullOrEmpty(methaneValue)) + data.setMethaneValue(new BigDecimal(methaneValue)); + if (StringUtil.isNotNullOrEmpty(hyrothionValue)) + data.setHyrothionValue(new BigDecimal(hyrothionValue)); + if (StringUtil.isNotNullOrEmpty(temperature)) + data.setTemperature(new BigDecimal(temperature)); + } + result.add(data); + } + return ExecutedResult.success(result); + } + public ExecutedResult<List<FacilityCount>> deviceCount(){ + List<FacilityCount> result = new ArrayList<>(); + List<WaterMonitoryPointPO> pointPOList = waterMonitoryPointMapper.getList(); + List<WaterFacilityPO> facilityPOList = mapper.getList(); + for(WaterMonitoryPointPO po:pointPOList){ + List<WaterFacilityPO> collect = facilityPOList.stream().filter(item -> item.getPointId().equals(po.getId())).collect(Collectors.toList()); + if(ListUtil.isNotNullOrEmpty(collect)&&collect.size()>0){ + FacilityCount count=new FacilityCount(); + count.setPointId(po.getId()); + count.setPointName(po.getPointName()); + count.setFacilityFanCount(collect.size()); + count.setMethaneCount(collect.size()); + count.setHyrothionCount(collect.size()); + count.setBoxCount(collect.size()); + int i = count.getFacilityFanCount() + count.getMethaneCount() + count.getHyrothionCount() + count.getBoxCount(); + count.setSumCount( i); + result.add(count); + } + } + return ExecutedResult.success(result); + } public ExecutedResult<List<WaterFacilityVO>> getList(List<Long> listId) { List<WaterFacilityVO> result = new ArrayList<>(); @@ -224,6 +205,7 @@ } return ExecutedResult.success(exists); } + protected ExecutedResult<List<WaterFacilityPO>> check4Id(List<Long> listId) { // 从数据库查找设备信息 List<WaterFacilityPO> list = mapper.getList(listId); @@ -241,4 +223,5 @@ } } return ExecutedResult.success(list); - }} + } +} diff --git a/src/main/java/com/fengdu/gas/service/convert/AlarmSchemeConvert.java b/src/main/java/com/fengdu/gas/service/convert/AlarmSchemeConvert.java new file mode 100644 index 0000000..ba8fb91 --- /dev/null +++ b/src/main/java/com/fengdu/gas/service/convert/AlarmSchemeConvert.java @@ -0,0 +1,48 @@ +/** +# __----~~~~~~~~~~~------___ +# . . ~~//====...... __--~ ~~ +# -. \_|// |||\\ ~~~~~~::::... /~ +# ___-==_ _-~o~ \/ ||| \\ _/~~- +# __---~~~.==~||\=_ -_--~/_-~|- |\\ \\ _/~ +# _-~~ .=~ | \\-_ '-~7 /- / || \ / +# .~ .~ | \\ -_ / /- / || \ / +# / ____ / | \\ ~-_/ /|- _/ .|| \ / +# |~~ ~~|--~~~~--_ \ ~==-/ | \~--===~~ .\ +# ' ~-| /| |-~\~~ __--~~ +# |-~~-_/ | | ~\_ _-~ /\ +# / \ \__ \/~ \__ +# _--~ _/ | .-~~____--~-/ ~~==. +# ((->/~ '.|||' -_| ~~-/ , . _|| +# -_ ~\ ~~---l__i__i__i--~~_/ +# _-~-__ ~) \--______________--~~ +# //.-~~~-~_--~- |-------~~~~~~~~ +# //.-~~~--\ +# 神兽保佑 +# 永无BUG! +*/ +package com.fengdu.gas.service.convert; + +import com.fengdu.gas.entity.request.alarmscheme.ReqCreateAlarmScheme; +import com.fengdu.gas.entity.request.alarmscheme.ReqModifyAlarmScheme; +import com.fengdu.gas.repository.po.AlarmSchemePO; +import com.fengdu.gas.repository.vo.AlarmSchemeVO; + +import org.mapstruct.Mapper; +import org.mapstruct.factory.Mappers; + +import java.util.List; + +/** + * 报警规则配置 + * @author {#=author} + */ +@Mapper +public interface AlarmSchemeConvert { + AlarmSchemeConvert INSTANCE = Mappers.getMapper(AlarmSchemeConvert.class); + + AlarmSchemePO toCreate(ReqCreateAlarmScheme request); + AlarmSchemePO toModify(ReqModifyAlarmScheme request); + + AlarmSchemeVO toVo(AlarmSchemePO item); + List<AlarmSchemeVO> toVo(List<AlarmSchemePO> list); +} diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml index 04208da..eea38ea 100644 --- a/src/main/resources/application-dev.yml +++ b/src/main/resources/application-dev.yml @@ -44,10 +44,10 @@ # mybatis-plus 配置: -#mybatis-plus: -# configuration: -# ### 开启打印sql配置 -# log-impl: org.apache.ibatis.logging.stdout.StdOutImpl +mybatis-plus: + configuration: + ### 开启打印sql配置 + log-impl: org.apache.ibatis.logging.stdout.StdOutImpl mqtt: # 是否启用 diff --git a/src/main/resources/application-prod.yml b/src/main/resources/application-prod.yml index c7e21f7..eba5ea8 100644 --- a/src/main/resources/application-prod.yml +++ b/src/main/resources/application-prod.yml @@ -55,7 +55,7 @@ -# quartz定时任务配置 + #quartz定时任务配置 quartz: # 是否启用 enable: false diff --git a/src/test/java/com/fengdu/gas/GenCodeGauss.java b/src/test/java/com/fengdu/gas/GenCodeGauss.java index 057df0e..a349682 100644 --- a/src/test/java/com/fengdu/gas/GenCodeGauss.java +++ b/src/test/java/com/fengdu/gas/GenCodeGauss.java @@ -243,7 +243,7 @@ * 只生成以下配置的表 */ private static final List<String> ONLY_TABLES = Arrays.asList( - "data_upload_record","data_upload_record_day","data_upload_record_hour","data_upload_record_month" + "alarm_scheme" ); public static void main(String[] args) { -- Gitblit v1.9.3