package com.aps.core.service.impl; import java.math.BigDecimal; import java.time.LocalDateTime; import java.util.List; import java.util.stream.Stream; import com.aps.common.core.utils.DateUtils; import com.aps.common.core.utils.uuid.IdUtils; import com.aps.core.domain.ApsResourceGroupTemp; import com.aps.core.mapper.ApsResourceGroupTempMapper; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.aps.core.mapper.ApsResourceGroupMapper; import com.aps.core.domain.ApsResourceGroup; import com.aps.core.service.IApsResourceGroupService; import org.springframework.transaction.annotation.Transactional; /** * 资源组Service业务层处理 * * @author ruoyi * @date 2025-04-10 */ @Service public class ApsResourceGroupServiceImpl implements IApsResourceGroupService { @Autowired private ApsResourceGroupMapper apsResourceGroupMapper; @Autowired private ApsResourceGroupTempMapper apsResourceGroupTempMapper; /** * 查询资源组 * * @param id 资源组主键 * @return 资源组 */ @Override public ApsResourceGroup selectApsResourceGroupById(String id) { return apsResourceGroupMapper.selectApsResourceGroupById(id); } /** * 查询资源组列表 * * @param apsResourceGroup 资源组 * @return 资源组 */ @Override public List selectApsResourceGroupList(ApsResourceGroup apsResourceGroup) { return apsResourceGroupMapper.selectApsResourceGroupList(apsResourceGroup); } /** * 新增资源组 * * @param apsResourceGroup 资源组 * @return 结果 */ @Override public int insertApsResourceGroup(ApsResourceGroup apsResourceGroup) { apsResourceGroup.setCreateTime(DateUtils.getNowDate()); return apsResourceGroupMapper.insertApsResourceGroup(apsResourceGroup); } /** * 修改资源组 * * @param apsResourceGroup 资源组 * @return 结果 */ @Override public int updateApsResourceGroup(ApsResourceGroup apsResourceGroup) { apsResourceGroup.setUpdateTime(DateUtils.getNowDate()); return apsResourceGroupMapper.updateApsResourceGroup(apsResourceGroup); } /** * 批量删除资源组 * * @param ids 需要删除的资源组主键 * @return 结果 */ @Override public int deleteApsResourceGroupByIds(String[] ids) { return apsResourceGroupMapper.deleteApsResourceGroupByIds(ids); } /** * 删除资源组信息 * * @param id 资源组主键 * @return 结果 */ @Override public int deleteApsResourceGroupById(String id) { return apsResourceGroupMapper.deleteApsResourceGroupById(id); } /** * 导入数据 * @param tempList * @return 批次号 */ @Override public String importData(List tempList) { String batchNum= IdUtils.fastUUID(); if (!tempList.isEmpty()) { tempList.forEach(temp->{ temp.setId(IdUtils.simpleUUID()); //计算逻辑:理论产能=设备数量x每日理论时间x截止需求日剩余天数 BigDecimal devicesQuantity = new BigDecimal(temp.getDevicesQuantity()); BigDecimal restDays = new BigDecimal(temp.getRestDays()); temp.setTheoryCapacity(devicesQuantity.multiply(temp.getTheoryHours()).multiply(restDays)); temp.setBatchNumber(batchNum); temp.setCreateTime(DateUtils.getNowDate()); apsResourceGroupTempMapper.insertApsResourceGroupTemp(temp); }); } return batchNum; } /** * 确认数据 * @param batchNum * @param requestDate */ @Transactional public void confirmData(String batchNum, LocalDateTime requestDate){ ApsResourceGroupTemp param = new ApsResourceGroupTemp(); param.setBatchNumber(batchNum); List tempList = apsResourceGroupTempMapper.selectApsResourceGroupTempList(param); List groupName = tempList.stream().map(x -> x.getResourceGroupName()).distinct().toList(); if (!tempList.isEmpty()) { /*根据资源组名称删除旧的数据*/ apsResourceGroupMapper.deleteResourceGroupByNames(groupName.toArray(new String[0])); Stream apsResourceGroupStream = tempList.stream().map(x -> x.getApsResourceGroup()); apsResourceGroupStream.forEach(x->{ x.setRequestDate(requestDate); x.setCreateTime(DateUtils.getNowDate()); apsResourceGroupMapper.insertApsResourceGroup(x); }); apsResourceGroupMapper.deleteApsResourceGroupTempByBatchNumber(batchNum); } } }