From 806cbe242deee0ddbcdc9dc898150c3af836cc0d Mon Sep 17 00:00:00 2001 From: elkers <elkers@163.com> Date: 星期三, 09 四月 2025 19:21:52 +0800 Subject: [PATCH] 显示数据 --- src/main/java/com/nanjing/water/service/DataUploadRecordService.java | 407 ++++++++++++++++++ src/main/java/com/nanjing/water/host/controller/CommonParametersController.java | 128 +++++ src/main/java/com/nanjing/water/repository/po/DataUploadRecordPO.java | 95 ++++ src/main/java/com/nanjing/water/repository/vo/DataUploadRecordVO.java | 54 ++ src/main/java/com/nanjing/water/repository/mapper/DataUploadRecordMapper.java | 10 src/main/java/com/nanjing/water/repository/po/CommonParametersPO.java | 3 src/main/java/com/nanjing/water/entity/request/datauploadrecord/ReqModifyDataUploadRecord.java | 66 +++ src/main/java/com/nanjing/water/entity/request/datauploadrecord/ReqCreateDataUploadRecord.java | 62 ++ src/main/java/com/nanjing/water/repository/po/WaterFacilityParameterPO.java | 10 src/main/resources/application-dev.yml | 2 src/main/java/com/nanjing/water/entity/request/alarmhistory/ReqCreateAlarmHistory.java | 5 src/main/java/com/nanjing/water/host/controller/DataUploadRecordController.java | 113 +++++ src/main/java/com/nanjing/water/entity/search/SearchDataUploadRecord.java | 14 src/main/java/com/nanjing/water/repository/impl/AlarmHistoryMapperImpl.java | 11 src/main/java/com/nanjing/water/repository/impl/DataUploadRecordMapperImpl.java | 137 ++++++ src/main/java/com/nanjing/water/repository/po/AlarmHistoryPO.java | 7 src/main/java/com/nanjing/water/entity/request/alarmhistory/ReqModifyAlarmHistory.java | 7 src/main/java/com/nanjing/water/host/mqtt/CountVO.java | 12 src/main/java/com/nanjing/water/service/AlarmHistoryService.java | 12 src/main/java/com/nanjing/water/service/convert/DataUploadRecordConvert.java | 48 ++ src/main/java/com/nanjing/water/repository/mapper/AlarmHistoryMapper.java | 5 src/main/java/com/nanjing/water/host/controller/WaterFacilityParameterController.java | 10 src/main/java/com/nanjing/water/service/WaterFacilityParameterService.java | 45 ++ src/test/java/com/nanjing/water/DateTimeTest.java | 9 src/main/java/com/nanjing/water/repository/vo/WaterFacilityVO.java | 3 25 files changed, 1,238 insertions(+), 37 deletions(-) diff --git a/src/main/java/com/nanjing/water/entity/request/alarmhistory/ReqCreateAlarmHistory.java b/src/main/java/com/nanjing/water/entity/request/alarmhistory/ReqCreateAlarmHistory.java index 52d2d92..c37110b 100644 --- a/src/main/java/com/nanjing/water/entity/request/alarmhistory/ReqCreateAlarmHistory.java +++ b/src/main/java/com/nanjing/water/entity/request/alarmhistory/ReqCreateAlarmHistory.java @@ -54,10 +54,7 @@ * 是否处理 */ private Integer isSolve; - /** - * 是否确认(10误报 20已证实,200已处理) - */ - private Integer isConfirm; + /** * 最后报警时间 */ diff --git a/src/main/java/com/nanjing/water/entity/request/alarmhistory/ReqModifyAlarmHistory.java b/src/main/java/com/nanjing/water/entity/request/alarmhistory/ReqModifyAlarmHistory.java index c2e881b..20f543a 100644 --- a/src/main/java/com/nanjing/water/entity/request/alarmhistory/ReqModifyAlarmHistory.java +++ b/src/main/java/com/nanjing/water/entity/request/alarmhistory/ReqModifyAlarmHistory.java @@ -45,7 +45,7 @@ /** * 报警参数 */ - private Integer code; + private String code; /** * 报警描述 */ @@ -58,10 +58,7 @@ * 是否处理 */ private Integer isSolve; - /** - * 是否确认(10误报 20已证实,200已处理) - */ - private Integer isConfirm; + /** * 最后报警时间 */ diff --git a/src/main/java/com/nanjing/water/entity/request/datauploadrecord/ReqCreateDataUploadRecord.java b/src/main/java/com/nanjing/water/entity/request/datauploadrecord/ReqCreateDataUploadRecord.java new file mode 100644 index 0000000..a61d4aa --- /dev/null +++ b/src/main/java/com/nanjing/water/entity/request/datauploadrecord/ReqCreateDataUploadRecord.java @@ -0,0 +1,62 @@ +/** +# __----~~~~~~~~~~~------___ +# . . ~~//====...... __--~ ~~ +# -. \_|// |||\\ ~~~~~~::::... /~ +# ___-==_ _-~o~ \/ ||| \\ _/~~- +# __---~~~.==~||\=_ -_--~/_-~|- |\\ \\ _/~ +# _-~~ .=~ | \\-_ '-~7 /- / || \ / +# .~ .~ | \\ -_ / /- / || \ / +# / ____ / | \\ ~-_/ /|- _/ .|| \ / +# |~~ ~~|--~~~~--_ \ ~==-/ | \~--===~~ .\ +# ' ~-| /| |-~\~~ __--~~ +# |-~~-_/ | | ~\_ _-~ /\ +# / \ \__ \/~ \__ +# _--~ _/ | .-~~____--~-/ ~~==. +# ((->/~ '.|||' -_| ~~-/ , . _|| +# -_ ~\ ~~---l__i__i__i--~~_/ +# _-~-__ ~) \--______________--~~ +# //.-~~~-~_--~- |-------~~~~~~~~ +# //.-~~~--\ +# 神兽保佑 +# 永无BUG! +*/ +package com.nanjing.water.entity.request.datauploadrecord; + +import lombok.Data; +import java.math.BigDecimal; + +/** + * 数据上报记录 + * @author lin.liu + */ +@Data +public class ReqCreateDataUploadRecord { + /** + * 关联设备 + */ + private Long facilityId; + /** + * 设备名称 + */ + private String facilityName; + /** + * 字段名 + */ + private String columnsCode; + /** + * 字段展示 + */ + private String columnsShow; + /** + * 字段值 + */ + private BigDecimal columnsValue; + /** + * 数据上传时间 + */ + private Long uploadTime; + /** + * 数据上传日期 + */ + private String uploadDate; +} diff --git a/src/main/java/com/nanjing/water/entity/request/datauploadrecord/ReqModifyDataUploadRecord.java b/src/main/java/com/nanjing/water/entity/request/datauploadrecord/ReqModifyDataUploadRecord.java new file mode 100644 index 0000000..7cac228 --- /dev/null +++ b/src/main/java/com/nanjing/water/entity/request/datauploadrecord/ReqModifyDataUploadRecord.java @@ -0,0 +1,66 @@ +/** +# __----~~~~~~~~~~~------___ +# . . ~~//====...... __--~ ~~ +# -. \_|// |||\\ ~~~~~~::::... /~ +# ___-==_ _-~o~ \/ ||| \\ _/~~- +# __---~~~.==~||\=_ -_--~/_-~|- |\\ \\ _/~ +# _-~~ .=~ | \\-_ '-~7 /- / || \ / +# .~ .~ | \\ -_ / /- / || \ / +# / ____ / | \\ ~-_/ /|- _/ .|| \ / +# |~~ ~~|--~~~~--_ \ ~==-/ | \~--===~~ .\ +# ' ~-| /| |-~\~~ __--~~ +# |-~~-_/ | | ~\_ _-~ /\ +# / \ \__ \/~ \__ +# _--~ _/ | .-~~____--~-/ ~~==. +# ((->/~ '.|||' -_| ~~-/ , . _|| +# -_ ~\ ~~---l__i__i__i--~~_/ +# _-~-__ ~) \--______________--~~ +# //.-~~~-~_--~- |-------~~~~~~~~ +# //.-~~~--\ +# 神兽保佑 +# 永无BUG! +*/ +package com.nanjing.water.entity.request.datauploadrecord; + +import lombok.Data; +import java.math.BigDecimal; + +/** + * 数据上报记录 + * @author lin.liu + */ +@Data +public class ReqModifyDataUploadRecord { + /** + * 主键 + */ + private Long id; + /** + * 关联设备 + */ + private Long facilityId; + /** + * 设备名称 + */ + private String facilityName; + /** + * 字段名 + */ + private String columnsCode; + /** + * 字段展示 + */ + private String columnsShow; + /** + * 字段值 + */ + private BigDecimal columnsValue; + /** + * 数据上传时间 + */ + private Long uploadTime; + /** + * 数据上传日期 + */ + private String uploadDate; +} diff --git a/src/main/java/com/nanjing/water/entity/search/SearchDataUploadRecord.java b/src/main/java/com/nanjing/water/entity/search/SearchDataUploadRecord.java new file mode 100644 index 0000000..0171b51 --- /dev/null +++ b/src/main/java/com/nanjing/water/entity/search/SearchDataUploadRecord.java @@ -0,0 +1,14 @@ +package com.nanjing.water.entity.search; + +import lombok.Data; + +import com.nanjing.water.entity.dto.SearchBasicDTO; + +/** + * 数据上报记录 + * @author lin.liu + */ +@Data +public class SearchDataUploadRecord extends SearchBasicDTO { + +} diff --git a/src/main/java/com/nanjing/water/host/controller/CommonParametersController.java b/src/main/java/com/nanjing/water/host/controller/CommonParametersController.java new file mode 100644 index 0000000..f8f5d8b --- /dev/null +++ b/src/main/java/com/nanjing/water/host/controller/CommonParametersController.java @@ -0,0 +1,128 @@ +/** +# __----~~~~~~~~~~~------___ +# . . ~~//====...... __--~ ~~ +# -. \_|// |||\\ ~~~~~~::::... /~ +# ___-==_ _-~o~ \/ ||| \\ _/~~- +# __---~~~.==~||\=_ -_--~/_-~|- |\\ \\ _/~ +# _-~~ .=~ | \\-_ '-~7 /- / || \ / +# .~ .~ | \\ -_ / /- / || \ / +# / ____ / | \\ ~-_/ /|- _/ .|| \ / +# |~~ ~~|--~~~~--_ \ ~==-/ | \~--===~~ .\ +# ' ~-| /| |-~\~~ __--~~ +# |-~~-_/ | | ~\_ _-~ /\ +# / \ \__ \/~ \__ +# _--~ _/ | .-~~____--~-/ ~~==. +# ((->/~ '.|||' -_| ~~-/ , . _|| +# -_ ~\ ~~---l__i__i__i--~~_/ +# _-~-__ ~) \--______________--~~ +# //.-~~~-~_--~- |-------~~~~~~~~ +# //.-~~~--\ +# 神兽保佑 +# 永无BUG! +*/ +package com.nanjing.water.host.controller; + + +import com.nanjing.water.common.ExecutedResult; +import com.nanjing.water.common.PagerResult; +import com.nanjing.water.common.util.ParameterUtil; +import com.nanjing.water.common.validator.ParameterValidateResult; +import com.nanjing.water.common.validator.ParameterValidator; +import com.nanjing.water.entity.request.commonparameters.ReqCreateCommonParameters; +import com.nanjing.water.entity.request.commonparameters.ReqModifyCommonParameters; +import com.nanjing.water.entity.search.SearchCommonParameters; +import com.nanjing.water.host.BasicController; +import com.nanjing.water.repository.vo.CommonParametersVO; +import com.nanjing.water.service.CommonParametersService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +/** + * 130.公共参数 + * @author lin.liu + * @description 公共参数 + * @order 130 + */ +@RestController +@RequestMapping(value = "commonParameters") +public class CommonParametersController extends BasicController { + @Autowired + private CommonParametersService service; + + /** + * 创建[公共参数] + * @author lin.liu + * @description 创建[公共参数] + */ + @PostMapping(value = "create") + public ExecutedResult<Long> create(@RequestBody ReqCreateCommonParameters request) { + //#region 参数验证 + ParameterValidator validator = new ParameterValidator() + // 非空 + .addNotNullOrEmpty(ParameterUtil.named("名称"), request.getName()) + .addNotNullOrEmpty(ParameterUtil.named("标识"), request.getMark()) + // 限制最大长度 + //.addLengthMax(ParameterUtil.named("名称"), request.getName(), ConstantFactory.LENGTH_MAX50) + ; + ParameterValidateResult result = validator.validate(); + if (result.getIsFiled()) { + return failed(result.getErrorMsg()); + } + //#endregion + return this.service.create(request); + } + + /** + * 编辑[公共参数] + * @author lin.liu + * @description 编辑[公共参数] + */ + @PostMapping(value = "modify") + public ExecutedResult<String> modify(@RequestBody ReqModifyCommonParameters 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 this.service.modify(request); + } + + /** + * 获取[公共参数] + * @author lin.liu + * @description 获取[公共参数] + */ + @GetMapping(value = "get") + public ExecutedResult<CommonParametersVO> get(@RequestParam Long id) { + return this.service.get(id); + } + /** + * 删除[公共参数] + * @author lin.liu + * @description 删除[公共参数] + */ + @GetMapping(value = "remove") + public ExecutedResult<String> remove(@RequestParam Long id) { + return this.service.remove(id); + } + + + /** + * 查询[公共参数] + * @author lin.liu + * @description 查询[公共参数] + */ + @PostMapping(value = "search") + public ExecutedResult<PagerResult<CommonParametersVO>> search(@RequestBody SearchCommonParameters request) { + return this.service.search(request); + } +} diff --git a/src/main/java/com/nanjing/water/host/controller/DataUploadRecordController.java b/src/main/java/com/nanjing/water/host/controller/DataUploadRecordController.java new file mode 100644 index 0000000..1b126d2 --- /dev/null +++ b/src/main/java/com/nanjing/water/host/controller/DataUploadRecordController.java @@ -0,0 +1,113 @@ +/** +# __----~~~~~~~~~~~------___ +# . . ~~//====...... __--~ ~~ +# -. \_|// |||\\ ~~~~~~::::... /~ +# ___-==_ _-~o~ \/ ||| \\ _/~~- +# __---~~~.==~||\=_ -_--~/_-~|- |\\ \\ _/~ +# _-~~ .=~ | \\-_ '-~7 /- / || \ / +# .~ .~ | \\ -_ / /- / || \ / +# / ____ / | \\ ~-_/ /|- _/ .|| \ / +# |~~ ~~|--~~~~--_ \ ~==-/ | \~--===~~ .\ +# ' ~-| /| |-~\~~ __--~~ +# |-~~-_/ | | ~\_ _-~ /\ +# / \ \__ \/~ \__ +# _--~ _/ | .-~~____--~-/ ~~==. +# ((->/~ '.|||' -_| ~~-/ , . _|| +# -_ ~\ ~~---l__i__i__i--~~_/ +# _-~-__ ~) \--______________--~~ +# //.-~~~-~_--~- |-------~~~~~~~~ +# //.-~~~--\ +# 神兽保佑 +# 永无BUG! +*/ +package com.nanjing.water.host.controller; + +import com.nanjing.water.common.ExecutedResult; +import com.nanjing.water.common.PagerResult; +import com.nanjing.water.common.util.ParameterUtil; +import com.nanjing.water.common.validator.ParameterValidateResult; +import com.nanjing.water.common.validator.ParameterValidator; +import com.nanjing.water.entity.request.ReqListId; +import com.nanjing.water.host.BasicController; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import java.util.List; +import com.nanjing.water.service.DataUploadRecordService; +import com.nanjing.water.entity.request.datauploadrecord.ReqCreateDataUploadRecord; +import com.nanjing.water.entity.request.datauploadrecord.ReqModifyDataUploadRecord; +import com.nanjing.water.entity.search.SearchDataUploadRecord; +import com.nanjing.water.repository.vo.DataUploadRecordVO; + +/** + * 9000.数据上报记录 + * @author lin.liu + * @order 9000 + */ +@RestController +@RequestMapping(value = "dataUploadRecord") +public class DataUploadRecordController extends BasicController { + @Autowired + private DataUploadRecordService service; + + /** + * 创建[数据上报记录] + * @author lin.liu + */ + @PostMapping(value = "create") + public ExecutedResult<Long> create(@RequestBody ReqCreateDataUploadRecord 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 lin.liu + */ + @PostMapping(value = "modify") + public ExecutedResult<String> modify(@RequestBody ReqModifyDataUploadRecord 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 lin.liu + */ + @GetMapping(value = "get/{id}") + public ExecutedResult<DataUploadRecordVO> get(@PathVariable Long id) { + return service.get(id); + } + + /** + * 查询[数据上报记录] + * @author lin.liu + */ + @PostMapping(value = "search") + public ExecutedResult<PagerResult<DataUploadRecordVO>> search(@RequestBody SearchDataUploadRecord request) { + return service.search(request); + } +} diff --git a/src/main/java/com/nanjing/water/host/controller/WaterFacilityParameterController.java b/src/main/java/com/nanjing/water/host/controller/WaterFacilityParameterController.java index 9323370..2e59d9b 100644 --- a/src/main/java/com/nanjing/water/host/controller/WaterFacilityParameterController.java +++ b/src/main/java/com/nanjing/water/host/controller/WaterFacilityParameterController.java @@ -33,6 +33,7 @@ import com.nanjing.water.host.BasicController; import com.nanjing.water.repository.po.WaterFacilityParameterPO; import com.nanjing.water.repository.vo.WaterFacilityParameterVO; +import com.nanjing.water.repository.vo.WaterFacilityVO; import com.nanjing.water.service.WaterFacilityParameterService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; @@ -126,4 +127,13 @@ public ExecutedResult<PagerResult<WaterFacilityParameterVO>> search(@RequestBody SearchWaterFacilityParameter request) { return this.service.search(request); } + /** + * 获取最新数据 + * @author lin.liu + * @description 查询[设备设定参数] + */ + @PostMapping(value = "getData") + public ExecutedResult<List<WaterFacilityVO>> getData() { + return this.service.getData(); + } } diff --git a/src/main/java/com/nanjing/water/host/mqtt/CountVO.java b/src/main/java/com/nanjing/water/host/mqtt/CountVO.java new file mode 100644 index 0000000..accb623 --- /dev/null +++ b/src/main/java/com/nanjing/water/host/mqtt/CountVO.java @@ -0,0 +1,12 @@ +package com.nanjing.water.host.mqtt; + +import lombok.Data; + +@Data +public class CountVO { + private String name; + + private String code; + + private String value; +} diff --git a/src/main/java/com/nanjing/water/repository/impl/AlarmHistoryMapperImpl.java b/src/main/java/com/nanjing/water/repository/impl/AlarmHistoryMapperImpl.java index 3958153..2537c54 100644 --- a/src/main/java/com/nanjing/water/repository/impl/AlarmHistoryMapperImpl.java +++ b/src/main/java/com/nanjing/water/repository/impl/AlarmHistoryMapperImpl.java @@ -135,18 +135,13 @@ return super.getList(listId); } + public Integer deleteList(Long facilityId, String code){ + return DB.deleteList(facilityId,code); + } public List<AlarmHistoryPO> getListByTime(Long beginTime,Long endTime) { LambdaQueryWrapper<AlarmHistoryPO> queryWrapper = this.query(); queryWrapper.between(AlarmHistoryPO::getLastTime,beginTime,endTime); return super.selectList(queryWrapper); - } - public AlarmHistoryPO getListByFacilityId(Long facilityId,Integer code) { - LambdaQueryWrapper<AlarmHistoryPO> queryWrapper = this.query(); - queryWrapper.eq(AlarmHistoryPO::getFacilityId,facilityId); - queryWrapper.eq(AlarmHistoryPO::getCode,code); - queryWrapper.ne(AlarmHistoryPO::getIsConfirm,30); - queryWrapper.ne(AlarmHistoryPO::getIsConfirm,200); - return super.selectOne(queryWrapper); } } diff --git a/src/main/java/com/nanjing/water/repository/impl/DataUploadRecordMapperImpl.java b/src/main/java/com/nanjing/water/repository/impl/DataUploadRecordMapperImpl.java new file mode 100644 index 0000000..62accd1 --- /dev/null +++ b/src/main/java/com/nanjing/water/repository/impl/DataUploadRecordMapperImpl.java @@ -0,0 +1,137 @@ +/** +# __----~~~~~~~~~~~------___ +# . . ~~//====...... __--~ ~~ +# -. \_|// |||\\ ~~~~~~::::... /~ +# ___-==_ _-~o~ \/ ||| \\ _/~~- +# __---~~~.==~||\=_ -_--~/_-~|- |\\ \\ _/~ +# _-~~ .=~ | \\-_ '-~7 /- / || \ / +# .~ .~ | \\ -_ / /- / || \ / +# / ____ / | \\ ~-_/ /|- _/ .|| \ / +# |~~ ~~|--~~~~--_ \ ~==-/ | \~--===~~ .\ +# ' ~-| /| |-~\~~ __--~~ +# |-~~-_/ | | ~\_ _-~ /\ +# / \ \__ \/~ \__ +# _--~ _/ | .-~~____--~-/ ~~==. +# ((->/~ '.|||' -_| ~~-/ , . _|| +# -_ ~\ ~~---l__i__i__i--~~_/ +# _-~-__ ~) \--______________--~~ +# //.-~~~-~_--~- |-------~~~~~~~~ +# //.-~~~--\ +# 神兽保佑 +# 永无BUG! +*/ +package com.nanjing.water.repository.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.nanjing.water.common.PagerResult; +import com.nanjing.water.common.enums.EYesOrNo; +import com.nanjing.water.common.util.*; +import com.nanjing.water.entity.dto.*; +import com.nanjing.water.entity.enums.*; +import com.nanjing.water.repository.BasicMapperImpl; +import org.springframework.stereotype.Repository; + +import java.util.List; +import com.nanjing.water.entity.search.SearchDataUploadRecord; +import com.nanjing.water.repository.mapper.DataUploadRecordMapper; +import com.nanjing.water.repository.po.DataUploadRecordPO; + +/** + * 数据上报记录 + * @author lin.liu + */ +@Repository +public class DataUploadRecordMapperImpl extends BasicMapperImpl<DataUploadRecordPO, DataUploadRecordMapper> { + DataUploadRecordMapperImpl(DataUploadRecordMapper mapper) { + super(mapper); + } + + @Override + public PagerResult<DataUploadRecordPO> search(SearchBasicDTO request) { + // 还原查询条件真实类型 + SearchDataUploadRecord search = (SearchDataUploadRecord)request; + // 查询条件 + LambdaQueryWrapper<DataUploadRecordPO> queryWrapper = this.query(); + // 非逻辑删除 + queryWrapper.eq(DataUploadRecordPO::getIsDelete, EYesOrNo.NO.getValue()); + // 状态 + //queryWrapper.eq(NumericUtil.tryParseInt(search.getStatus()).compareTo(0) > 0, DataUploadRecordPO::getStatus, search.getStatus()); + // 状态列表 + //queryWrapper.in(ListUtil.isNotNullOrEmpty(search.getListStatus()), DataUploadRecordPO::getStatus, search.getListStatus()); + + // 数据创建时间-起始 + queryWrapper.ge(NumericUtil.tryParseLong(search.getCreateTimeStart()).compareTo(0L) > 0, DataUploadRecordPO::getCreateTime, search.getCreateTimeStart()); + // 数据创建时间-截止 + queryWrapper.le(NumericUtil.tryParseLong(search.getCreateTimeEnd()).compareTo(0L) > 0, DataUploadRecordPO::getCreateTime, search.getCreateTimeEnd()); + // 关键字 + //if (StringUtil.isNotNullOrEmpty(search.getKeywords())) { + // queryWrapper.and(q -> + // q.like(DataUploadRecordPO::getName, search.getKeywords()) + // .or().like(DataUploadRecordPO::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(DataUploadRecordPO::getId); + break; + // 数据创建时间 + case CREATE_TIME: + queryWrapper.orderByAsc(DataUploadRecordPO::getCreateTime); + break; + // 最后更新时间 + case UPDATE_TIME: + queryWrapper.orderByAsc(DataUploadRecordPO::getUpdateTime); + break; + } + } else { + // 倒叙排序 + switch (orderBy) { + // 主键 + case ID: + queryWrapper.orderByDesc(DataUploadRecordPO::getId); + break; + // 数据创建时间 + case CREATE_TIME: + queryWrapper.orderByDesc(DataUploadRecordPO::getCreateTime); + break; + // 最后更新时间 + case UPDATE_TIME: + queryWrapper.orderByDesc(DataUploadRecordPO::getUpdateTime); + break; + } + } + } + } else { + queryWrapper.orderByDesc(DataUploadRecordPO::getId); + } + Page<DataUploadRecordPO> pageResult = super.selectPage(new Page<>(search.getPage(), search.getLimit()), queryWrapper); + return new PagerResult<>(pageResult.getSize(), pageResult.getCurrent(), pageResult.getTotal(), pageResult.getRecords()); + } + + public Boolean add(DataUploadRecordPO item) { + int rowCount = super.insert(item); + return rowCount == 1; + } + + public Boolean addNotIncrement(DataUploadRecordPO item) { + int rowCount = super.insert(item); + return rowCount == 1; + } + + public DataUploadRecordPO getById(Long id) { + return super.get(id); + } + + public List<DataUploadRecordPO> getListById(List<Long> listId) { + return super.getList(listId); + } +} diff --git a/src/main/java/com/nanjing/water/repository/mapper/AlarmHistoryMapper.java b/src/main/java/com/nanjing/water/repository/mapper/AlarmHistoryMapper.java index bb0f0c2..0d7ee9f 100644 --- a/src/main/java/com/nanjing/water/repository/mapper/AlarmHistoryMapper.java +++ b/src/main/java/com/nanjing/water/repository/mapper/AlarmHistoryMapper.java @@ -2,10 +2,15 @@ import com.nanjing.water.repository.BasicMapper; import com.nanjing.water.repository.po.AlarmHistoryPO; +import org.apache.ibatis.annotations.Delete; +import org.apache.ibatis.annotations.Select; /** * 报警信息 mapper * @author lin.liu */ public interface AlarmHistoryMapper extends BasicMapper<AlarmHistoryPO> { + + @Delete("DELETE FROM alarm_history where facility_id=#{facilityId} and code=#{code}") + Integer deleteList(Long facilityId, String code); } diff --git a/src/main/java/com/nanjing/water/repository/mapper/DataUploadRecordMapper.java b/src/main/java/com/nanjing/water/repository/mapper/DataUploadRecordMapper.java new file mode 100644 index 0000000..1833422 --- /dev/null +++ b/src/main/java/com/nanjing/water/repository/mapper/DataUploadRecordMapper.java @@ -0,0 +1,10 @@ +package com.nanjing.water.repository.mapper; + +import com.nanjing.water.repository.BasicMapper;import com.nanjing.water.repository.po.DataUploadRecordPO; + +/** + * 数据上报记录 mapper + * @author lin.liu + */ +public interface DataUploadRecordMapper extends BasicMapper<DataUploadRecordPO> { +} diff --git a/src/main/java/com/nanjing/water/repository/po/AlarmHistoryPO.java b/src/main/java/com/nanjing/water/repository/po/AlarmHistoryPO.java index 53cc88b..ec9ae63 100644 --- a/src/main/java/com/nanjing/water/repository/po/AlarmHistoryPO.java +++ b/src/main/java/com/nanjing/water/repository/po/AlarmHistoryPO.java @@ -55,7 +55,7 @@ * 报警参数 */ @TableField(value = "code") - private Integer code; + private String code; /** * 报警描述 */ @@ -71,11 +71,6 @@ */ @TableField(value = "is_solve") private Integer isSolve; - /** - * 是否确认(10误报 20已证实,200已处理) - */ - @TableField(value = "is_confirm") - private Integer isConfirm; /** * 是否删除 */ diff --git a/src/main/java/com/nanjing/water/repository/po/CommonParametersPO.java b/src/main/java/com/nanjing/water/repository/po/CommonParametersPO.java index bba05cd..bf2115b 100644 --- a/src/main/java/com/nanjing/water/repository/po/CommonParametersPO.java +++ b/src/main/java/com/nanjing/water/repository/po/CommonParametersPO.java @@ -77,4 +77,7 @@ @TableLogic @TableField(value = "is_delete") private Integer isDelete; + + @TableField(value = "parameter_type") + private Integer parameterType; } diff --git a/src/main/java/com/nanjing/water/repository/po/DataUploadRecordPO.java b/src/main/java/com/nanjing/water/repository/po/DataUploadRecordPO.java new file mode 100644 index 0000000..ca001e9 --- /dev/null +++ b/src/main/java/com/nanjing/water/repository/po/DataUploadRecordPO.java @@ -0,0 +1,95 @@ +/** +# __----~~~~~~~~~~~------___ +# . . ~~//====...... __--~ ~~ +# -. \_|// |||\\ ~~~~~~::::... /~ +# ___-==_ _-~o~ \/ ||| \\ _/~~- +# __---~~~.==~||\=_ -_--~/_-~|- |\\ \\ _/~ +# _-~~ .=~ | \\-_ '-~7 /- / || \ / +# .~ .~ | \\ -_ / /- / || \ / +# / ____ / | \\ ~-_/ /|- _/ .|| \ / +# |~~ ~~|--~~~~--_ \ ~==-/ | \~--===~~ .\ +# ' ~-| /| |-~\~~ __--~~ +# |-~~-_/ | | ~\_ _-~ /\ +# / \ \__ \/~ \__ +# _--~ _/ | .-~~____--~-/ ~~==. +# ((->/~ '.|||' -_| ~~-/ , . _|| +# -_ ~\ ~~---l__i__i__i--~~_/ +# _-~-__ ~) \--______________--~~ +# //.-~~~-~_--~- |-------~~~~~~~~ +# //.-~~~--\ +# 神兽保佑 +# 永无BUG! +*/ +package com.nanjing.water.repository.po; + +import lombok.Data; + +import com.baomidou.mybatisplus.annotation.*; + +import java.io.Serializable; +import java.sql.Timestamp; +import java.math.BigDecimal; + +/** + * 数据上报记录 + * @author lin.liu + */ +@Data +@TableName("data_upload_record") +public class DataUploadRecordPO implements Serializable { + /** + * 主键 + */ + private Long id; + /** + * 关联设备 + */ + @TableField(value = "facility_id") + private Long facilityId; + /** + * 设备名称 + */ + @TableField(value = "facility_name") + private String facilityName; + /** + * 字段名 + */ + @TableField(value = "columns_code") + private String columnsCode; + /** + * 字段展示 + */ + @TableField(value = "columns_show") + private String columnsShow; + /** + * 字段值 + */ + @TableField(value = "columns_value") + private BigDecimal columnsValue; + /** + * 是否删除(逻辑删除) + */ + @TableLogic + @TableField(value = "is_delete") + private Integer isDelete; + /** + * 数据创建时间 + */ + @TableField(value = "create_time") + private Long createTime; + /** + * 数据更新时间 + */ + @TableField(value = "update_time") + private Timestamp updateTime; + /** + * 数据上传时间 + */ + @TableField(value = "upload_time") + private Long uploadTime; + /** + * 数据上传日期 + */ + @TableField(value = "upload_date") + private String uploadDate; +} diff --git a/src/main/java/com/nanjing/water/repository/po/WaterFacilityParameterPO.java b/src/main/java/com/nanjing/water/repository/po/WaterFacilityParameterPO.java index 9eecc71..225a822 100644 --- a/src/main/java/com/nanjing/water/repository/po/WaterFacilityParameterPO.java +++ b/src/main/java/com/nanjing/water/repository/po/WaterFacilityParameterPO.java @@ -92,4 +92,14 @@ */ @TableField(value = "last_time") private String lastTime; + /** + * 排序 + */ + @TableField(value = "sort") + private Integer sort; + /** + * 绑定参数类型(1环境参数 2运行参数) + */ + @TableField(value = "parameter_type") + private Integer parameterType; } diff --git a/src/main/java/com/nanjing/water/repository/vo/DataUploadRecordVO.java b/src/main/java/com/nanjing/water/repository/vo/DataUploadRecordVO.java new file mode 100644 index 0000000..bfd48b2 --- /dev/null +++ b/src/main/java/com/nanjing/water/repository/vo/DataUploadRecordVO.java @@ -0,0 +1,54 @@ +/** +# __----~~~~~~~~~~~------___ +# . . ~~//====...... __--~ ~~ +# -. \_|// |||\\ ~~~~~~::::... /~ +# ___-==_ _-~o~ \/ ||| \\ _/~~- +# __---~~~.==~||\=_ -_--~/_-~|- |\\ \\ _/~ +# _-~~ .=~ | \\-_ '-~7 /- / || \ / +# .~ .~ | \\ -_ / /- / || \ / +# / ____ / | \\ ~-_/ /|- _/ .|| \ / +# |~~ ~~|--~~~~--_ \ ~==-/ | \~--===~~ .\ +# ' ~-| /| |-~\~~ __--~~ +# |-~~-_/ | | ~\_ _-~ /\ +# / \ \__ \/~ \__ +# _--~ _/ | .-~~____--~-/ ~~==. +# ((->/~ '.|||' -_| ~~-/ , . _|| +# -_ ~\ ~~---l__i__i__i--~~_/ +# _-~-__ ~) \--______________--~~ +# //.-~~~-~_--~- |-------~~~~~~~~ +# //.-~~~--\ +# 神兽保佑 +# 永无BUG! +*/ +package com.nanjing.water.repository.vo; + +import lombok.Data; + +import com.nanjing.water.common.util.LocalDateTimeUtil; +import com.nanjing.water.common.util.NumericUtil; +import java.util.Objects; +import com.nanjing.water.repository.po.DataUploadRecordPO; + +/** + * 数据上报记录 + * @author lin.liu + */ +@Data +public class DataUploadRecordVO extends DataUploadRecordPO 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/nanjing/water/repository/vo/WaterFacilityVO.java b/src/main/java/com/nanjing/water/repository/vo/WaterFacilityVO.java index 1d0ce24..4f5b401 100644 --- a/src/main/java/com/nanjing/water/repository/vo/WaterFacilityVO.java +++ b/src/main/java/com/nanjing/water/repository/vo/WaterFacilityVO.java @@ -27,6 +27,8 @@ import com.nanjing.water.repository.po.WaterFacilityPO; import lombok.Data; +import java.util.ArrayList; +import java.util.List; import java.util.Objects; /** @@ -37,6 +39,7 @@ public class WaterFacilityVO extends WaterFacilityPO implements BasicVO { private String pointName; private String facilityTypeName; + private List<WaterFacilityParameterVO> parameterVOList; @Override public String getCreateTimeView() { diff --git a/src/main/java/com/nanjing/water/service/AlarmHistoryService.java b/src/main/java/com/nanjing/water/service/AlarmHistoryService.java index 5a74497..4a2324b 100644 --- a/src/main/java/com/nanjing/water/service/AlarmHistoryService.java +++ b/src/main/java/com/nanjing/water/service/AlarmHistoryService.java @@ -55,15 +55,7 @@ public ExecutedResult<String> create(ReqCreateAlarmHistory request) { //查询报警记录是否存在 - AlarmHistoryPO historyPO = mapper.getListByFacilityId(request.getFacilityId(), request.getCode()); - if(Objects.nonNull(historyPO)){ - historyPO.setTotalCount(historyPO.getTotalCount()+1); - historyPO.setLastTime(LocalDateTimeUtil.nowTimeStamp()); - int i = mapper.updateById(historyPO); - if (i != 1) { - return ExecutedResult.failed("创建[报警信息]失败。"); - } - }else { + // 转换po AlarmHistoryPO item = AlarmHistoryConvert.INSTANCE.toCreate(request); // 设置记录创建时间 @@ -75,7 +67,6 @@ if (rowCount != 1) { return ExecutedResult.failed("创建[报警信息]失败。"); } - } return ExecutedResult.success(); } @@ -102,7 +93,6 @@ return ExecutedResult.failed(checkExists.getMsg()); } AlarmHistoryPO data = checkExists.getData(); - data.setIsConfirm(status); int i = mapper.updateById(data); if(i!=1){ return ExecutedResult.failed("编辑[报警信息]失败。"); diff --git a/src/main/java/com/nanjing/water/service/DataUploadRecordService.java b/src/main/java/com/nanjing/water/service/DataUploadRecordService.java new file mode 100644 index 0000000..7e5e689 --- /dev/null +++ b/src/main/java/com/nanjing/water/service/DataUploadRecordService.java @@ -0,0 +1,407 @@ +/** +# __----~~~~~~~~~~~------___ +# . . ~~//====...... __--~ ~~ +# -. \_|// |||\\ ~~~~~~::::... /~ +# ___-==_ _-~o~ \/ ||| \\ _/~~- +# __---~~~.==~||\=_ -_--~/_-~|- |\\ \\ _/~ +# _-~~ .=~ | \\-_ '-~7 /- / || \ / +# .~ .~ | \\ -_ / /- / || \ / +# / ____ / | \\ ~-_/ /|- _/ .|| \ / +# |~~ ~~|--~~~~--_ \ ~==-/ | \~--===~~ .\ +# ' ~-| /| |-~\~~ __--~~ +# |-~~-_/ | | ~\_ _-~ /\ +# / \ \__ \/~ \__ +# _--~ _/ | .-~~____--~-/ ~~==. +# ((->/~ '.|||' -_| ~~-/ , . _|| +# -_ ~\ ~~---l__i__i__i--~~_/ +# _-~-__ ~) \--______________--~~ +# //.-~~~-~_--~- |-------~~~~~~~~ +# //.-~~~--\ +# 神兽保佑 +# 永无BUG! +*/ +package com.nanjing.water.service; + +import com.baomidou.mybatisplus.core.toolkit.Sequence; +import com.google.gson.Gson; +import com.google.gson.JsonArray; +import com.google.gson.JsonObject; +import com.google.gson.reflect.TypeToken; +import com.nanjing.water.common.*; +import com.nanjing.water.common.enums.*; +import com.nanjing.water.common.model.Tuple; +import com.nanjing.water.common.util.*; +import com.nanjing.water.host.mqtt.CountVO; +import com.nanjing.water.repository.impl.*; +import com.nanjing.water.repository.po.*; +import org.apache.commons.lang3.BooleanUtils; +import org.slf4j.Logger; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.lang.reflect.Type; +import java.util.*; +import java.util.regex.Matcher; +import java.util.regex.Pattern; +import java.util.stream.Collectors; + +import com.nanjing.water.entity.request.datauploadrecord.ReqCreateDataUploadRecord; +import com.nanjing.water.entity.request.datauploadrecord.ReqModifyDataUploadRecord; +import com.nanjing.water.entity.search.SearchDataUploadRecord; +import com.nanjing.water.repository.vo.DataUploadRecordVO; +import com.nanjing.water.service.convert.DataUploadRecordConvert; + +/** + * 数据上报记录 + * @author lin.liu + */ +@Service +public class DataUploadRecordService extends BaseService { + private static final Logger ERROR_LOGGER = LoggerUtil.get(ELogger.SYS_ERROR); + @Autowired + private DataUploadRecordMapperImpl mapper; + @Autowired + private WaterFacilityMapperImpl waterFacilityMapper; + @Autowired + private WaterFacilityParameterMapperImpl waterFacilityParameterMapper; + @Autowired + private WaterMonitoryPointMapperImpl waterMonitoryPointMapper; + @Autowired + private AlarmHistoryMapperImpl alarmHistoryMapper; + + public ExecutedResult<Long> create(ReqCreateDataUploadRecord request) { + // 转换po + DataUploadRecordPO item = DataUploadRecordConvert.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()); + } + + public ExecutedResult<String> modify(ReqModifyDataUploadRecord request) { + // 验证记录是否存在 + ExecutedResult<DataUploadRecordPO> checkExists = this.check4Id(request.getId()); + if (checkExists.isFailed()) { + return ExecutedResult.failed(checkExists.getMsg()); + } + // 转换po + DataUploadRecordPO item = DataUploadRecordConvert.INSTANCE.toModify(request); + + int rowCount = mapper.updateById(item); + if (rowCount != 1) { + return ExecutedResult.failed("编辑[数据上报记录]失败。"); + } + return ExecutedResult.success(); + } + + public ExecutedResult<DataUploadRecordVO> get(Long id) { + DataUploadRecordVO result = new DataUploadRecordVO(); + + DataUploadRecordPO find = mapper.get(id); + if (null != find) { + // 转换vo + result = DataUploadRecordConvert.INSTANCE.toVo(find); + } + return ExecutedResult.success(result); + } + +// public ExecutedResult<String> stop(Long id) { +// // 验证记录是否存在 +// ExecutedResult<DataUploadRecordPO> checkExists = this.check4Id(id); +// if (checkExists.isFailed()) { +// return ExecutedResult.failed(checkExists.getMsg()); +// } +// DataUploadRecordPO item = new DataUploadRecordPO(); +// 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<DataUploadRecordPO> checkExists = this.check4Id(id); +// if (checkExists.isFailed()) { +// return ExecutedResult.failed(checkExists.getMsg()); +// } +// DataUploadRecordPO item = new DataUploadRecordPO(); +// 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<DataUploadRecordPO> checkExists = this.check4Id(request.getId()); +// if (checkExists.isFailed()) { +// return ExecutedResult.failed(checkExists.getMsg()); +// } +// DataUploadRecordPO item = new DataUploadRecordPO(); +// 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<DataUploadRecordPO>> checkExists = this.check4Id(listId); +// if (checkExists.isFailed()) { +// return ExecutedResult.failed(checkExists.getMsg()); +// } +// +// List<DataUploadRecordPO> listUpdate = request.getList().stream() +// .map(c -> { +// DataUploadRecordPO item = new DataUploadRecordPO(); +// 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<DataUploadRecordVO>> getList(List<Long> listId) { + List<DataUploadRecordVO> result = new ArrayList<>(); + + List<DataUploadRecordPO> list = mapper.getList(listId); + if (ListUtil.isNotNullOrEmpty(list)) { + // 转换vo + result = DataUploadRecordConvert.INSTANCE.toVo(list); + } + return ExecutedResult.success(result); + } + + public ExecutedResult<PagerResult<DataUploadRecordVO>> search(SearchDataUploadRecord 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<DataUploadRecordPO> pageList = mapper.search(search); + List<DataUploadRecordVO> listVo = new ArrayList<>(); + List<DataUploadRecordPO> list = pageList.getList(); + if (ListUtil.isNotNullOrEmpty(list)) { + pageList.setLastId(list.get(list.size() - 1).getId()); + // 转换vo + listVo = DataUploadRecordConvert.INSTANCE.toVo(list); + } + PagerResult<DataUploadRecordVO> result = new PagerResult<>(pageList.getLimit(), pageList.getPage(), pageList.getTotal(), listVo); + result.setLastId(pageList.getLastId()); + return ExecutedResult.success(result); + } + + protected ExecutedResult<DataUploadRecordPO> check4Id(Long id) { + DataUploadRecordPO exists = mapper.get(id); + if (Objects.isNull(exists)) { + return ExecutedResult.failed("[数据上报记录]不存在:" + id); + } + return ExecutedResult.success(exists); + } + protected ExecutedResult<List<DataUploadRecordPO>> check4Id(List<Long> listId) { + // 从数据库查找数据上报记录 + List<DataUploadRecordPO> list = mapper.getList(listId); + if (ListUtil.isNullOrEmpty(list)) { + return ExecutedResult.failed("[数据上报记录]不存在." + listId); + } + // 数据库找到的id列表 + List<Long> listIdFind = list.stream().map(DataUploadRecordPO::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); + } + /** + * mqtt收到消息 + * @param topic 主题 + * @param msg 消息内容 + */ + public void mqttReceived(String topic, String msg) { + String action = "mqtt收到消息"; + if (StringUtil.isNullOrEmpty(topic)) { + ERROR_LOGGER.error(action, "主题不能为空"); + return; + } + if (StringUtil.isNullOrEmpty(msg)) { + ERROR_LOGGER.error(action, "消息不能为空"); + return; + } + Gson gson = new Gson(); + JsonObject object = gson.fromJson(msg, JsonObject.class); + String asJsonObject = object.get("time").getAsString(); + Type listType = new TypeToken<List<CountVO>>() { + }.getType(); + //获取data数据 + JsonArray data = object.getAsJsonArray("Data"); + List<CountVO> listVo = gson.fromJson(data, listType); + for(CountVO vo:listVo){ + String[] split = vo.getName().split("-"); + vo.setName(split[0]); + vo.setCode(split[1]); + } + List<WaterFacilityPO> facilityPOList = waterFacilityMapper.getList(); + List<WaterFacilityParameterPO> parameterPOList = waterFacilityParameterMapper.getList(); + // List<AlarmHistoryPO> historyPOList = alarmHistoryMapper.getList(); + //根据设备编号分组 + Map<String, List<CountVO>> collect = listVo.stream().collect(Collectors.groupingBy(CountVO::getName)); + for (Map.Entry<String, List<CountVO>> entry : collect.entrySet()) { + //获取设备信息 + WaterFacilityPO facilityPO = facilityPOList.stream().filter(x -> x.getFacilityCode().equals(entry.getKey())).findFirst().orElse(null); + //获取设备所属监控点 + List<WaterFacilityParameterPO>parameterList=new ArrayList<>(); + //循环上报数据 + for(CountVO vo:entry.getValue()){ + //保存数据 + WaterFacilityParameterPO parameterPO1 = parameterPOList.stream().filter(item -> item.getFacilityId().equals(facilityPO.getId()) && item.getColumnsCode().equals(vo.getCode())).findFirst().orElse(null); + if(Objects.nonNull(parameterPO1)){ + parameterPO1.setColumnValue(vo.getValue()); + parameterPO1.setLastTime(asJsonObject); + parameterList.add(parameterPO1); + } + //判断报警 + // AlarmHistoryPO alarmHistoryPO=null; +// if(ListUtil.isNotNullOrEmpty(historyPOList)){ +// alarmHistoryPO = historyPOList.stream().filter(item -> item.getFacilityId().equals(parameterPO1.getFacilityId()) && item.getCode().equals(parameterPO1.getColumnsCode()) && item.getIsSolve() == 0).findFirst().orElse(null); +// } + switch (vo.getCode()){ + case "QF1": + //1号空开吸合关闭报警 + QFCreateAlarm(facilityPO,parameterPO1, vo.getValue() ); + break; + case "QF2": + //2号空开吸合关闭报警 + QFCreateAlarm(facilityPO,parameterPO1, vo.getValue()); + break; + case "QF3": + //3号空开吸合关闭报警 + QFCreateAlarm(facilityPO,parameterPO1, vo.getValue()); + break; + case "QF4": + //4号空开吸合关闭报警 + QFCreateAlarm(facilityPO,parameterPO1, vo.getValue()); + break; + case "B001Fault": + //1号泵综合故障 + faultCreateAlarm(facilityPO,parameterPO1, vo.getValue()); + break; + case "B002Fault": + //2号泵综合故障 + faultCreateAlarm(facilityPO,parameterPO1, vo.getValue()); + break; + case "SQ": + //水侵报警 + SQFaultCreateAlarm(facilityPO,parameterPO1, vo.getValue()); + break; + case "H1001Fault": + //高水位报警 + faultCreateAlarm(facilityPO,parameterPO1, vo.getValue()); + break; + case "L1001Fault": + //低水位报警 + faultCreateAlarm(facilityPO,parameterPO1, vo.getValue()); + break; + } + } + waterFacilityParameterMapper.updateById(parameterList); + + } + } + + public void QFCreateAlarm(WaterFacilityPO facilityPO,WaterFacilityParameterPO parameterPO,String value){ + if(value.equals("false")){ + alarmHistoryMapper.deleteList(parameterPO.getFacilityId(),parameterPO.getColumnsCode()); + AlarmHistoryPO alarmHistoryPO=new AlarmHistoryPO(); + alarmHistoryPO.setFacilityId(facilityPO.getId()); + alarmHistoryPO.setFacilityName(facilityPO.getFacilityName()); + alarmHistoryPO.setCode(parameterPO.getColumnsCode()); + alarmHistoryPO.setDescription(parameterPO.getColumnsShow()+"关闭"); + alarmHistoryPO.setCreateTime(LocalDateTimeUtil.nowTimeStamp()); + alarmHistoryPO.setLastTime(LocalDateTimeUtil.nowTimeStamp()); + alarmHistoryMapper.insert(alarmHistoryPO); + + + } + } + public void faultCreateAlarm(WaterFacilityPO facilityPO,WaterFacilityParameterPO parameterPO,String value){ + if(value.equals("true")){ + alarmHistoryMapper.deleteList(parameterPO.getFacilityId(),parameterPO.getColumnsCode()); + AlarmHistoryPO alarmHistoryPO=new AlarmHistoryPO(); + alarmHistoryPO.setFacilityId(facilityPO.getId()); + alarmHistoryPO.setFacilityName(facilityPO.getFacilityName()); + alarmHistoryPO.setCode(parameterPO.getColumnsCode()); + alarmHistoryPO.setDescription(parameterPO.getColumnsShow()+"关闭"); + alarmHistoryPO.setCreateTime(LocalDateTimeUtil.nowTimeStamp()); + alarmHistoryPO.setLastTime(LocalDateTimeUtil.nowTimeStamp()); + alarmHistoryMapper.insert(alarmHistoryPO); + + + } + } + public void SQFaultCreateAlarm(WaterFacilityPO facilityPO,WaterFacilityParameterPO parameterPO,String value){ + if(value.equals("1")){ + alarmHistoryMapper.deleteList(parameterPO.getFacilityId(),parameterPO.getColumnsCode()); + AlarmHistoryPO alarmHistoryPO=new AlarmHistoryPO(); + alarmHistoryPO.setFacilityId(facilityPO.getId()); + alarmHistoryPO.setFacilityName(facilityPO.getFacilityName()); + alarmHistoryPO.setCode(parameterPO.getColumnsCode()); + alarmHistoryPO.setDescription(parameterPO.getColumnsShow()+"关闭"); + alarmHistoryPO.setCreateTime(LocalDateTimeUtil.nowTimeStamp()); + alarmHistoryPO.setLastTime(LocalDateTimeUtil.nowTimeStamp()); + alarmHistoryMapper.insert(alarmHistoryPO); + + + } + } +} diff --git a/src/main/java/com/nanjing/water/service/WaterFacilityParameterService.java b/src/main/java/com/nanjing/water/service/WaterFacilityParameterService.java index b95bd5c..06ca0df 100644 --- a/src/main/java/com/nanjing/water/service/WaterFacilityParameterService.java +++ b/src/main/java/com/nanjing/water/service/WaterFacilityParameterService.java @@ -36,9 +36,12 @@ import com.nanjing.water.repository.po.WaterFacilityPO; import com.nanjing.water.repository.po.WaterFacilityParameterPO; import com.nanjing.water.repository.vo.WaterFacilityParameterVO; +import com.nanjing.water.repository.vo.WaterFacilityVO; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.math.BigDecimal; +import java.math.RoundingMode; import java.util.ArrayList; import java.util.List; import java.util.Objects; @@ -253,7 +256,49 @@ result.setLastId(pageList.getLastId()); return ExecutedResult.success(result); } + public ExecutedResult<List<WaterFacilityVO>> getData(){ + List<WaterFacilityVO>result=new ArrayList<>(); + //获取泵房数据 + List<WaterFacilityPO> facilityPOList = waterFacilityMapper.getList(); + //获取泵房设备参数 + List<WaterFacilityParameterPO> parameterPOList = mapper.getList(); + if(ListUtil.isNotNullOrEmpty(facilityPOList)){ + result = CopierUtil.mapTo(facilityPOList, WaterFacilityVO.class); + for(WaterFacilityVO facilityVO:result){ + List<WaterFacilityParameterPO> collect = parameterPOList.stream().filter(x -> x.getFacilityId().equals(facilityVO.getId())).collect(Collectors.toList()); + if(ListUtil.isNotNullOrEmpty(collect)){ + List<WaterFacilityParameterVO>parameterVOList=CopierUtil.mapTo(collect, WaterFacilityParameterVO.class); + for(WaterFacilityParameterVO parameterVO:parameterVOList){ + boolean matches = parameterVO.getColumnValue().matches("-?\\d+(\\.\\d+)?"); + if (matches) { + BigDecimal value = new BigDecimal(parameterVO.getColumnValue()).setScale(3, BigDecimal.ROUND_DOWN); + parameterVO.setColumnValue(value.toString()); + } + if("false".equals(parameterVO.getColumnValue())){ + parameterVO.setColumnValue("关"); + } + if("true".equals(parameterVO.getColumnValue())){ + parameterVO.setColumnValue("开"); + } +// if(parameterVO.getColumnsCode().equals("B001Time")||parameterVO.getColumnsCode().equals("B002Time")){ +// BigDecimal bigDecimal=new BigDecimal(parameterVO.getColumnValue()).setScale(2,RoundingMode.DOWN); +// if(bigDecimal.compareTo(new BigDecimal(60).setScale(2,RoundingMode.DOWN))>0){ +// BigDecimal data = bigDecimal.divide(new BigDecimal(60),2,BigDecimal.ROUND_HALF_UP); +// parameterVO.setColumnValue(data+"分"); +// } +// if(bigDecimal.compareTo(new BigDecimal(3600))>0){ +// BigDecimal data = bigDecimal.divide(new BigDecimal(3600),2,BigDecimal.ROUND_HALF_UP); +// parameterVO.setColumnValue(data+"时"); +// } +// } + } + facilityVO.setParameterVOList(parameterVOList); + } + } + } + return ExecutedResult.success(result); + } protected ExecutedResult<WaterFacilityParameterPO> check4Id(Long id) { WaterFacilityParameterPO exists = mapper.get(id); if (Objects.isNull(exists)) { diff --git a/src/main/java/com/nanjing/water/service/convert/DataUploadRecordConvert.java b/src/main/java/com/nanjing/water/service/convert/DataUploadRecordConvert.java new file mode 100644 index 0000000..4f4d72b --- /dev/null +++ b/src/main/java/com/nanjing/water/service/convert/DataUploadRecordConvert.java @@ -0,0 +1,48 @@ +/** +# __----~~~~~~~~~~~------___ +# . . ~~//====...... __--~ ~~ +# -. \_|// |||\\ ~~~~~~::::... /~ +# ___-==_ _-~o~ \/ ||| \\ _/~~- +# __---~~~.==~||\=_ -_--~/_-~|- |\\ \\ _/~ +# _-~~ .=~ | \\-_ '-~7 /- / || \ / +# .~ .~ | \\ -_ / /- / || \ / +# / ____ / | \\ ~-_/ /|- _/ .|| \ / +# |~~ ~~|--~~~~--_ \ ~==-/ | \~--===~~ .\ +# ' ~-| /| |-~\~~ __--~~ +# |-~~-_/ | | ~\_ _-~ /\ +# / \ \__ \/~ \__ +# _--~ _/ | .-~~____--~-/ ~~==. +# ((->/~ '.|||' -_| ~~-/ , . _|| +# -_ ~\ ~~---l__i__i__i--~~_/ +# _-~-__ ~) \--______________--~~ +# //.-~~~-~_--~- |-------~~~~~~~~ +# //.-~~~--\ +# 神兽保佑 +# 永无BUG! +*/ +package com.nanjing.water.service.convert; + +import com.nanjing.water.entity.request.datauploadrecord.ReqCreateDataUploadRecord; +import com.nanjing.water.entity.request.datauploadrecord.ReqModifyDataUploadRecord; +import com.nanjing.water.repository.po.DataUploadRecordPO; +import com.nanjing.water.repository.vo.DataUploadRecordVO; + +import org.mapstruct.Mapper; +import org.mapstruct.factory.Mappers; + +import java.util.List; + +/** + * 数据上报记录 + * @author {#=author} + */ +@Mapper +public interface DataUploadRecordConvert { + DataUploadRecordConvert INSTANCE = Mappers.getMapper(DataUploadRecordConvert.class); + + DataUploadRecordPO toCreate(ReqCreateDataUploadRecord request); + DataUploadRecordPO toModify(ReqModifyDataUploadRecord request); + + DataUploadRecordVO toVo(DataUploadRecordPO item); + List<DataUploadRecordVO> toVo(List<DataUploadRecordPO> list); +} diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml index 21bf1f3..a7ee327 100644 --- a/src/main/resources/application-dev.yml +++ b/src/main/resources/application-dev.yml @@ -6,7 +6,7 @@ date-format: yyyy-MM-dd HH:mm:ss datasource: driver-class-name: org.postgresql.Driver - url: jdbc:postgresql://113.250.189.120:57654/test_db1 + url: jdbc:postgresql://113.250.189.120:57654/nanjing_water_system username: lunhan password: lunhan.20240330 druid: diff --git a/src/test/java/com/nanjing/water/DateTimeTest.java b/src/test/java/com/nanjing/water/DateTimeTest.java index da891cd..07d51b2 100644 --- a/src/test/java/com/nanjing/water/DateTimeTest.java +++ b/src/test/java/com/nanjing/water/DateTimeTest.java @@ -5,11 +5,16 @@ import org.junit.runner.RunWith; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; +import java.math.BigDecimal; +import java.math.RoundingMode; + @RunWith(SpringJUnit4ClassRunner.class) public class DateTimeTest { @Test public void time2BCDTest() { - String timeStr = LocalDateTimeUtil.nowTimeBCD("yyMMddHHmmss"); - System.out.println(timeStr); + BigDecimal a=BigDecimal.valueOf(80); + BigDecimal b = BigDecimal.valueOf(60); + BigDecimal bigDecimal = a.divide(b,2,BigDecimal.ROUND_HALF_UP); + System.out.println(bigDecimal); } } -- Gitblit v1.9.3