diff --git a/das/src/main/java/com/das/modules/page/controller/WindSpeedCorrectController.java b/das/src/main/java/com/das/modules/page/controller/WindSpeedCorrectController.java index b05a57eb..b044bd2c 100644 --- a/das/src/main/java/com/das/modules/page/controller/WindSpeedCorrectController.java +++ b/das/src/main/java/com/das/modules/page/controller/WindSpeedCorrectController.java @@ -31,6 +31,8 @@ public class WindSpeedCorrectController { windSpeedCorrectService.importWindSpeedCorrect( file); return R.success("导入成功"); } + + /** 获取风机风速功率修正系数列表 */ @PostMapping("/getList") public R> getList(@RequestBody SysPowerCurveFactorDto dto) { diff --git a/das/src/main/java/com/das/modules/page/service/impl/WindSpeedCorrectServiceImpl.java b/das/src/main/java/com/das/modules/page/service/impl/WindSpeedCorrectServiceImpl.java index b1d40044..f416ad1a 100644 --- a/das/src/main/java/com/das/modules/page/service/impl/WindSpeedCorrectServiceImpl.java +++ b/das/src/main/java/com/das/modules/page/service/impl/WindSpeedCorrectServiceImpl.java @@ -5,6 +5,7 @@ import cn.hutool.core.io.IoUtil; import cn.hutool.poi.excel.ExcelReader; import cn.hutool.poi.excel.ExcelUtil; import cn.hutool.poi.excel.ExcelWriter; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.das.common.config.SessionUtil; import com.das.common.exceptions.ServiceException; @@ -12,7 +13,6 @@ import com.das.common.utils.BeanCopyUtils; import com.das.common.utils.PageDataInfo; import com.das.common.utils.PageQuery; import com.das.modules.auth.domain.vo.SysUserVo; -import com.das.modules.cache.domain.WindSpeedCoefValue; import com.das.modules.cache.service.CacheService; import com.das.modules.equipment.entity.SysEquipment; import com.das.modules.equipment.mapper.SysEquipmentMapper; @@ -26,6 +26,7 @@ import com.das.modules.page.service.WindSpeedCorrectService; import jakarta.servlet.ServletOutputStream; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; +import org.apache.commons.collections4.CollectionUtils; import org.apache.poi.ss.usermodel.HorizontalAlignment; import org.apache.poi.ss.usermodel.Sheet; import org.apache.poi.ss.usermodel.VerticalAlignment; @@ -33,6 +34,7 @@ import org.apache.poi.ss.usermodel.Workbook; import org.apache.poi.ss.util.CellRangeAddress; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import org.springframework.web.multipart.MultipartFile; import java.io.IOException; @@ -57,6 +59,7 @@ public class WindSpeedCorrectServiceImpl implements WindSpeedCorrectService { @Autowired private CacheService cacheService; + @Transactional(rollbackFor = Exception.class) @Override public void importWindSpeedCorrect(MultipartFile file) throws IOException { // 通过文件获取输入流 @@ -93,6 +96,38 @@ public class WindSpeedCorrectServiceImpl implements WindSpeedCorrectService { sysPowerCurveFactor.setRevision(1); listData.add(sysPowerCurveFactor); } + //过滤重复数据 + List existingData = sysPowerCurveFactorMapper.selectList(new QueryWrapper() + .lambda() + .in(SysPowerCurveFactor::getTurbineId, listData.stream().map(SysPowerCurveFactor::getTurbineId).collect(Collectors.toList())) + .in(SysPowerCurveFactor::getSpeedMin, listData.stream().map(SysPowerCurveFactor::getSpeedMin).collect(Collectors.toList())) + .in(SysPowerCurveFactor::getSpeedMax, listData.stream().map(SysPowerCurveFactor::getSpeedMax).collect(Collectors.toList())) + .in(SysPowerCurveFactor::getFactorK, listData.stream().map(SysPowerCurveFactor::getFactorK).collect(Collectors.toList())) + .in(SysPowerCurveFactor::getFactorB, listData.stream().map(SysPowerCurveFactor::getFactorB).collect(Collectors.toList()))); + //过滤SpeedMax为null的数据 + List collect = listData.stream().filter(item -> item.getSpeedMax() == null).collect(Collectors.toList()); + if (CollectionUtils.isNotEmpty(collect)){ + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.isNull("speed_max"); + List sysPowerCurveFactors = sysPowerCurveFactorMapper.selectList(queryWrapper); + for (SysPowerCurveFactor sysPowerCurveFactor : collect) { + for (SysPowerCurveFactor powerCurveFactor : sysPowerCurveFactors) { + if (sysPowerCurveFactor.getTurbineId().equals(powerCurveFactor.getTurbineId()) + && sysPowerCurveFactor.getSpeedMin().equals(powerCurveFactor.getSpeedMin()) + && sysPowerCurveFactor.getFactorK()== powerCurveFactor.getFactorK() + && sysPowerCurveFactor.getFactorB()==powerCurveFactor.getFactorB()) { + existingData.add(powerCurveFactor); + } + } + } + } + // 删除重复的数据 + if (!existingData.isEmpty()) { + List idsToDelete = existingData.stream() + .map(SysPowerCurveFactor::getId) + .collect(Collectors.toList()); + sysPowerCurveFactorMapper.deleteBatchIds(idsToDelete); + } //批量插入数据库 sysPowerCurveFactorMapper.insertBatch(listData); //更新缓存数据