feat(Property): 仪表记录按楼层筛选并优化查询功能

This commit is contained in:
2025-09-13 15:00:49 +08:00
parent 791195e2c6
commit 85b6ed2fae
3 changed files with 45 additions and 26 deletions

View File

@@ -26,49 +26,49 @@ public class TbMeterRecordBo extends BaseEntity {
/** /**
* 记录ID * 记录ID
*/ */
@NotNull(message = "记录ID不能为空", groups = { EditGroup.class }) @NotNull(message = "记录ID不能为空", groups = {EditGroup.class})
private Long id; private Long id;
/** /**
* 仪表编号 * 仪表编号
*/ */
@NotNull(message = "仪表编号不能为空", groups = { AddGroup.class, EditGroup.class }) @NotNull(message = "仪表编号不能为空", groups = {AddGroup.class, EditGroup.class})
private Long meterId; private Long meterId;
/** /**
* 设备类型(1-电表2-水表3-气表) * 设备类型(1-电表2-水表3-气表)
*/ */
@NotNull(message = "仪表类型不能为空", groups = { AddGroup.class, EditGroup.class }) @NotNull(message = "仪表类型不能为空", groups = {AddGroup.class, EditGroup.class})
private Long meterType; private Long meterType;
/** /**
* 抄表员ID * 抄表员ID
*/ */
@NotNull(message = "抄表员ID不能为空", groups = { AddGroup.class, EditGroup.class }) @NotNull(message = "抄表员ID不能为空", groups = {AddGroup.class, EditGroup.class})
private Long readerId; private Long readerId;
/** /**
* 抄表时间 * 抄表时间
*/ */
@NotNull(message = "抄表时间不能为空", groups = { AddGroup.class, EditGroup.class }) @NotNull(message = "抄表时间不能为空", groups = {AddGroup.class, EditGroup.class})
private Date readingTime; private Date readingTime;
/** /**
* 当前读数 * 当前读数
*/ */
@NotNull(message = "当前读数不能为空", groups = { AddGroup.class, EditGroup.class }) @NotNull(message = "当前读数不能为空", groups = {AddGroup.class, EditGroup.class})
private BigDecimal currentReading; private BigDecimal currentReading;
/** /**
* 上次读数 * 上次读数
*/ */
@NotNull(message = "上次读数不能为空", groups = { AddGroup.class, EditGroup.class }) @NotNull(message = "上次读数不能为空", groups = {AddGroup.class, EditGroup.class})
private BigDecimal previousReading; private BigDecimal previousReading;
/** /**
* 抄表方式(1手动 2自动 3用户上报) * 抄表方式(1手动 2自动 3用户上报)
*/ */
@NotNull(message = "抄表方式(1手动 2自动 3用户上报)不能为空", groups = { AddGroup.class, EditGroup.class }) @NotNull(message = "抄表方式(1手动 2自动 3用户上报)不能为空", groups = {AddGroup.class, EditGroup.class})
private Long readingMethod; private Long readingMethod;
/** /**
@@ -76,5 +76,10 @@ public class TbMeterRecordBo extends BaseEntity {
*/ */
private Long imgOssId; private Long imgOssId;
/**
* 仪表楼层
*/
private Long floorId;
} }

View File

@@ -33,6 +33,12 @@ public class TbMeterRecordVo implements Serializable {
@ExcelProperty(value = "记录ID") @ExcelProperty(value = "记录ID")
private Long id; private Long id;
/**
* 仪表名称
*/
@ExcelProperty(value = "仪表名称")
private String meterName;
/** /**
* 仪表编号 * 仪表编号
*/ */
@@ -87,5 +93,4 @@ public class TbMeterRecordVo implements Serializable {
@ExcelProperty(value = "抄表照片") @ExcelProperty(value = "抄表照片")
private Long imgOssId; private Long imgOssId;
} }

View File

@@ -66,7 +66,24 @@ public class TbMeterRecordServiceImpl implements ITbMeterRecordService {
@Override @Override
public TableDataInfo<TbMeterRecordVo> queryPageList(TbMeterRecordBo bo, PageQuery pageQuery) { public TableDataInfo<TbMeterRecordVo> queryPageList(TbMeterRecordBo bo, PageQuery pageQuery) {
LambdaQueryWrapper<TbMeterRecord> lqw = buildQueryWrapper(bo); LambdaQueryWrapper<TbMeterRecord> lqw = buildQueryWrapper(bo);
// 楼层筛选
List<TbMeterInfoVo> infoList = tbMeterInfoService.queryList(new TbMeterInfoBo());
if (bo.getFloorId() != null) {
// 获取对应楼层的仪表ID
Collection<Long> meterIds = infoList.stream().filter(o -> o.getFloorId().equals(bo.getFloorId())).map(TbMeterInfoVo::getId).toList();
if (CollUtil.isNotEmpty(meterIds)) {
lqw.in(TbMeterRecord::getMeterId, meterIds);
} else {
// 添加恒假条件,确保返回空结果
lqw.apply("1 = 0");
}
}
Page<TbMeterRecordVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw); Page<TbMeterRecordVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
result.getRecords().forEach(o -> o.setMeterName(infoList.stream().filter(s -> s.getId().equals(o.getMeterId())).findFirst().map(TbMeterInfoVo::getMeterName).orElse(null)));
return TableDataInfo.build(result); return TableDataInfo.build(result);
} }
@@ -83,17 +100,16 @@ public class TbMeterRecordServiceImpl implements ITbMeterRecordService {
} }
private LambdaQueryWrapper<TbMeterRecord> buildQueryWrapper(TbMeterRecordBo bo) { private LambdaQueryWrapper<TbMeterRecord> buildQueryWrapper(TbMeterRecordBo bo) {
Map<String, Object> params = bo.getParams();
LambdaQueryWrapper<TbMeterRecord> lqw = Wrappers.lambdaQuery(); LambdaQueryWrapper<TbMeterRecord> lqw = Wrappers.lambdaQuery();
lqw.orderByAsc(TbMeterRecord::getId); lqw.orderByDesc(TbMeterRecord::getReadingTime);
lqw.eq(bo.getMeterId() != null, TbMeterRecord::getMeterId, bo.getMeterId()); lqw.eq(bo.getMeterId() != null, TbMeterRecord::getMeterId, bo.getMeterId());
lqw.eq(bo.getMeterType() != null, TbMeterRecord::getMeterType, bo.getMeterType());
lqw.eq(bo.getReaderId() != null, TbMeterRecord::getReaderId, bo.getReaderId()); lqw.eq(bo.getReaderId() != null, TbMeterRecord::getReaderId, bo.getReaderId());
lqw.eq(bo.getImgOssId() != null, TbMeterRecord::getImgOssId, bo.getImgOssId());
lqw.eq(bo.getMeterType() != null, TbMeterRecord::getMeterType, bo.getMeterType());
lqw.eq(bo.getReadingTime() != null, TbMeterRecord::getReadingTime, bo.getReadingTime()); lqw.eq(bo.getReadingTime() != null, TbMeterRecord::getReadingTime, bo.getReadingTime());
lqw.eq(bo.getReadingMethod() != null, TbMeterRecord::getReadingMethod, bo.getReadingMethod());
lqw.eq(bo.getCurrentReading() != null, TbMeterRecord::getCurrentReading, bo.getCurrentReading()); lqw.eq(bo.getCurrentReading() != null, TbMeterRecord::getCurrentReading, bo.getCurrentReading());
lqw.eq(bo.getPreviousReading() != null, TbMeterRecord::getPreviousReading, bo.getPreviousReading()); lqw.eq(bo.getPreviousReading() != null, TbMeterRecord::getPreviousReading, bo.getPreviousReading());
lqw.eq(bo.getReadingMethod() != null, TbMeterRecord::getReadingMethod, bo.getReadingMethod());
lqw.eq(bo.getImgOssId() != null, TbMeterRecord::getImgOssId, bo.getImgOssId());
return lqw; return lqw;
} }
@@ -107,11 +123,7 @@ public class TbMeterRecordServiceImpl implements ITbMeterRecordService {
public Boolean insertByBo(TbMeterRecordBo bo) { public Boolean insertByBo(TbMeterRecordBo bo) {
TbMeterRecord add = MapstructUtils.convert(bo, TbMeterRecord.class); TbMeterRecord add = MapstructUtils.convert(bo, TbMeterRecord.class);
validEntityBeforeSave(add); validEntityBeforeSave(add);
boolean flag = baseMapper.insert(add) > 0; return baseMapper.insert(add) > 0;
if (flag) {
bo.setId(add.getId());
}
return flag;
} }
/** /**
@@ -143,9 +155,6 @@ public class TbMeterRecordServiceImpl implements ITbMeterRecordService {
*/ */
@Override @Override
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) { public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
if (isValid) {
//TODO 做一些业务上的校验,判断是否需要校验
}
return baseMapper.deleteByIds(ids) > 0; return baseMapper.deleteByIds(ids) > 0;
} }
@@ -203,9 +212,9 @@ public class TbMeterRecordServiceImpl implements ITbMeterRecordService {
// 获取当前读数 // 获取当前读数
int meterCode = Integer.parseInt(info.getMeterCode()); int meterCode = Integer.parseInt(info.getMeterCode());
if (meterCode + 1 <= result.getCollectionValue().size()){ if (meterCode + 1 <= result.getCollectionValue().size()) {
record.setCurrentReading(BigDecimal.valueOf(result.getCollectionValue().get(meterCode))); record.setCurrentReading(BigDecimal.valueOf(result.getCollectionValue().get(meterCode)));
}else { } else {
record.setCurrentReading(BigDecimal.ZERO); record.setCurrentReading(BigDecimal.ZERO);
} }
@@ -227,10 +236,10 @@ public class TbMeterRecordServiceImpl implements ITbMeterRecordService {
// 通信状态改为离线 // 通信状态改为离线
TbMeterInfoBo bo = new TbMeterInfoBo(); TbMeterInfoBo bo = new TbMeterInfoBo();
bo.setId(info.getId()); bo.setId(info.getId());
if (record.getCurrentReading().compareTo(BigDecimal.ZERO) == 0){ if (record.getCurrentReading().compareTo(BigDecimal.ZERO) == 0) {
bo.setCommunicationState(0L); bo.setCommunicationState(0L);
record.setCurrentReading(record.getPreviousReading()); record.setCurrentReading(record.getPreviousReading());
}else { } else {
bo.setCommunicationState(1L); bo.setCommunicationState(1L);
} }
tbMeterInfoService.updateByBo(bo); tbMeterInfoService.updateByBo(bo);