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); //更新缓存数据 diff --git a/ui/dasadmin/src/views/backend/home/windMatrix.vue b/ui/dasadmin/src/views/backend/home/windMatrix.vue index de99fcce..2964a3a7 100644 --- a/ui/dasadmin/src/views/backend/home/windMatrix.vue +++ b/ui/dasadmin/src/views/backend/home/windMatrix.vue @@ -98,13 +98,13 @@ 标杆设置 标杆取消 @@ -120,6 +120,7 @@ import { adminBaseRoutePath } from '/@/router/static/adminBase' import ContextMenu from '/@/views/backend/auth/model/contextMenu.vue' import { sendCommandReq, sendManualCommandReq } from '/@/api/backend/control/request' import {ElMessage, ElMessageBox} from "element-plus"; +import {equipUpdate} from '/@/api/backend/index.ts' const router = useRouter() const props = defineProps({ @@ -190,7 +191,9 @@ const realTimeData = ref({ locked: 0, deviceId: '', name:'', - standard:'' + code:'', + standard:'', + iotModelId:'' }) const windContextMenu = (event: any,curnodeData) => { contextMenuPos.value.x = event.pageX @@ -199,7 +202,9 @@ const windContextMenu = (event: any,curnodeData) => { realTimeData.value.locked=curnodeData.attributeMap.locked realTimeData.value.deviceId=curnodeData.irn realTimeData.value.name=curnodeData.name + realTimeData.value.code=curnodeData.deviceCode realTimeData.value.standard=curnodeData.standard + realTimeData.value.iotModelId=curnodeData.modelId OperateVisible.value = true } const sendCommand = (type: 'setTurbineFastStart' | 'setTurbineStop' | 'setTurbineResetStatusCode') => { @@ -254,6 +259,31 @@ const sendManualCommand = (type: 1 | 0) => { }) } + + +const editstandard = (type: 1 | 0) => { + const standardName = type === 0 ? '取消风机标杆' : '设置风机标杆' + ElMessageBox.confirm('确认' + standardName + '吗?', '', { + confirmButtonText: '确认', + cancelButtonText: '取消', + type: 'warning', + }).then(() => { + equipUpdate({ + id: realTimeData.value.deviceId, + code: realTimeData.value.code, + name:realTimeData.value.name, + iotModelId: realTimeData.value.iotModelId, + standard: type + }).then((res) => { + if (res.code == 200) { + ElMessage.success('设置成功') + } else { + ElMessage.error('设置失败') + } + }) + }) +} +