package com.ruoyi.business.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.basic.entity.Supply;
import com.ruoyi.business.dto.EquipmentManagementDto;
import com.ruoyi.business.dto.EquipmentUsageRecordDto;
import com.ruoyi.business.entity.EquipmentManagement;
import com.ruoyi.business.entity.EquipmentUsageRecord;
import com.ruoyi.business.mapper.EquipmentManagementMapper;
import com.ruoyi.business.mapper.EquipmentUsageRecordMapper;
import com.ruoyi.business.service.EquipmentUsageRecordService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.common.utils.bean.BeanUtils;
import org.springframework.stereotype.Service;
import lombok.RequiredArgsConstructor;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.function.Function;
import java.util.stream.Collectors;
/**
*
* 设备使用记录表 服务实现类
*
*
* @author ld
* @since 2025-07-07
*/
@Service
@RequiredArgsConstructor
public class EquipmentUsageRecordServiceImpl extends ServiceImpl implements EquipmentUsageRecordService {
private final EquipmentUsageRecordMapper equipmentUsageRecordMapper;
private final EquipmentManagementMapper equipmentManagementMapper;
@Override
public IPage selectUsageRecordList(Page page, EquipmentUsageRecordDto equipmentUsageRecordDto) {
Page entityPage = equipmentUsageRecordMapper.selectPage(page, null);
IPage dtoPage = new Page<>();
BeanUtils.copyProperties(entityPage, dtoPage);
List eqIds = entityPage.getRecords().stream().map(EquipmentUsageRecord::getEquipmentId).toList();
//批量查询
Map equipmentManagementMap;
if (!eqIds.isEmpty()) {
List infos = equipmentManagementMapper.selectList(new LambdaQueryWrapper().in(EquipmentManagement::getId, eqIds));
equipmentManagementMap = infos.stream().collect(Collectors.toMap(EquipmentManagement::getId, Function.identity()));
} else {
equipmentManagementMap = new HashMap<>();
}
//匹配数据
List dtoRecords = entityPage.getRecords().stream().map(entity -> {
EquipmentUsageRecordDto dto = new EquipmentUsageRecordDto();
BeanUtils.copyProperties(entity, dto);
EquipmentManagement equipment = equipmentManagementMap.get(entity.getEquipmentId());
if (equipment != null) {
dto.setEquipmentNo(equipment.getEquipmentNo());
dto.setEquipmentName(equipment.getEquipmentName());
}
return dto;
}).toList();
dtoPage.setRecords(dtoRecords);
return dtoPage;
}
@Override
public int addOrEditUsageRecord(EquipmentUsageRecordDto equipmentUsageRecordDto) {
EquipmentUsageRecord equipmentUsageRecord = new EquipmentUsageRecord();
BeanUtils.copyProperties(equipmentUsageRecordDto, equipmentUsageRecord);
if (Objects.isNull(equipmentUsageRecordDto.getId())) {
return equipmentUsageRecordMapper.insert(equipmentUsageRecord);
} else {
return equipmentUsageRecordMapper.updateById(equipmentUsageRecord);
}
}
}