diff --git a/src/main/java/com/gxwebsoft/apps/entity/EquipmentRecord.java b/src/main/java/com/gxwebsoft/apps/entity/EquipmentRecord.java index 2752144..893d695 100644 --- a/src/main/java/com/gxwebsoft/apps/entity/EquipmentRecord.java +++ b/src/main/java/com/gxwebsoft/apps/entity/EquipmentRecord.java @@ -80,4 +80,8 @@ public class EquipmentRecord implements Serializable { @TableField(exist = false) private String realName; + @ApiModelProperty(value = "设备的使用时间,精确到0.1天") + @TableField(exist = false) + private Float duration; + } diff --git a/src/main/java/com/gxwebsoft/apps/service/impl/EquipmentRecordServiceImpl.java b/src/main/java/com/gxwebsoft/apps/service/impl/EquipmentRecordServiceImpl.java index 153194a..1e9a44e 100644 --- a/src/main/java/com/gxwebsoft/apps/service/impl/EquipmentRecordServiceImpl.java +++ b/src/main/java/com/gxwebsoft/apps/service/impl/EquipmentRecordServiceImpl.java @@ -5,11 +5,15 @@ import com.gxwebsoft.apps.mapper.EquipmentRecordMapper; import com.gxwebsoft.apps.service.EquipmentRecordService; import com.gxwebsoft.apps.entity.EquipmentRecord; import com.gxwebsoft.apps.param.EquipmentRecordParam; +import com.gxwebsoft.common.core.utils.LocalDateUtil; import com.gxwebsoft.common.core.web.PageParam; import com.gxwebsoft.common.core.web.PageResult; import org.springframework.stereotype.Service; +import java.time.Duration; +import java.time.LocalDateTime; import java.util.List; +import static com.gxwebsoft.apps.constants.EquipmentConstants.EVENT_TYPE_UNBIND; /** * 前世今生Service实现 @@ -25,6 +29,28 @@ public class EquipmentRecordServiceImpl extends ServiceImpl page = new PageParam<>(param); page.setDefaultOrder("create_time desc"); List list = baseMapper.selectPageRel(page, param); + + //计算换电记录中的设备使用时间,这里的数量不多,可以在每次查询过程中计算 + if (!list.isEmpty() && param.getUserId()!=0 && param.getOrderId()!=0) {//如果是换电记录中的查询 + if (list.size() == 1){//如果记录只有一条 + EquipmentRecord equipmentRecord = list.get(0); + LocalDateTime startTime = LocalDateUtil.date2LocalDateTime(equipmentRecord.getCreateTime()); + Duration duration = Duration.between(startTime, LocalDateTime.now()); + equipmentRecord.setDuration(Float.parseFloat(String.format("%.1f",duration.toHours()/24.0f))); + } else {//记录有多条 + EquipmentRecord lastUnbindRecord = null; + for (EquipmentRecord record : list) { + if (record.getEventType().equals(EVENT_TYPE_UNBIND)) {//先找到解绑记录 + lastUnbindRecord = record; + } else if (lastUnbindRecord != null && record.getEquipmentCode().equals(lastUnbindRecord.getEquipmentCode())) {//再往下找相同订单的 + LocalDateTime startTime = LocalDateUtil.date2LocalDateTime(record.getCreateTime()); + LocalDateTime endTime = LocalDateUtil.date2LocalDateTime(lastUnbindRecord.getCreateTime()); + Duration duration = Duration.between(startTime, endTime); + lastUnbindRecord.setDuration(Float.parseFloat(String.format("%.1f",duration.toHours()/24.0f))); + } + } + } + } return new PageResult<>(list, page.getTotal()); }