This commit is contained in:
zhouhuang 2024-12-16 17:03:03 +08:00
commit ffaa497d0b
3 changed files with 71 additions and 4 deletions

View File

@ -31,6 +31,8 @@ public class WindSpeedCorrectController {
windSpeedCorrectService.importWindSpeedCorrect( file); windSpeedCorrectService.importWindSpeedCorrect( file);
return R.success("导入成功"); return R.success("导入成功");
} }
/** 获取风机风速功率修正系数列表 */ /** 获取风机风速功率修正系数列表 */
@PostMapping("/getList") @PostMapping("/getList")
public R<PageDataInfo<SysPowerCurveFactorVo>> getList(@RequestBody SysPowerCurveFactorDto dto) { public R<PageDataInfo<SysPowerCurveFactorVo>> getList(@RequestBody SysPowerCurveFactorDto dto) {

View File

@ -5,6 +5,7 @@ import cn.hutool.core.io.IoUtil;
import cn.hutool.poi.excel.ExcelReader; import cn.hutool.poi.excel.ExcelReader;
import cn.hutool.poi.excel.ExcelUtil; import cn.hutool.poi.excel.ExcelUtil;
import cn.hutool.poi.excel.ExcelWriter; import cn.hutool.poi.excel.ExcelWriter;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.das.common.config.SessionUtil; import com.das.common.config.SessionUtil;
import com.das.common.exceptions.ServiceException; 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.PageDataInfo;
import com.das.common.utils.PageQuery; import com.das.common.utils.PageQuery;
import com.das.modules.auth.domain.vo.SysUserVo; 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.cache.service.CacheService;
import com.das.modules.equipment.entity.SysEquipment; import com.das.modules.equipment.entity.SysEquipment;
import com.das.modules.equipment.mapper.SysEquipmentMapper; 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.ServletOutputStream;
import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.poi.ss.usermodel.HorizontalAlignment; import org.apache.poi.ss.usermodel.HorizontalAlignment;
import org.apache.poi.ss.usermodel.Sheet; import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.VerticalAlignment; 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.apache.poi.ss.util.CellRangeAddress;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
import java.io.IOException; import java.io.IOException;
@ -57,6 +59,7 @@ public class WindSpeedCorrectServiceImpl implements WindSpeedCorrectService {
@Autowired @Autowired
private CacheService cacheService; private CacheService cacheService;
@Transactional(rollbackFor = Exception.class)
@Override @Override
public void importWindSpeedCorrect(MultipartFile file) throws IOException { public void importWindSpeedCorrect(MultipartFile file) throws IOException {
// 通过文件获取输入流 // 通过文件获取输入流
@ -93,6 +96,38 @@ public class WindSpeedCorrectServiceImpl implements WindSpeedCorrectService {
sysPowerCurveFactor.setRevision(1); sysPowerCurveFactor.setRevision(1);
listData.add(sysPowerCurveFactor); listData.add(sysPowerCurveFactor);
} }
//过滤重复数据
List<SysPowerCurveFactor> existingData = sysPowerCurveFactorMapper.selectList(new QueryWrapper<SysPowerCurveFactor>()
.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<SysPowerCurveFactor> collect = listData.stream().filter(item -> item.getSpeedMax() == null).collect(Collectors.toList());
if (CollectionUtils.isNotEmpty(collect)){
QueryWrapper<SysPowerCurveFactor> queryWrapper = new QueryWrapper<>();
queryWrapper.isNull("speed_max");
List<SysPowerCurveFactor> 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<Long> idsToDelete = existingData.stream()
.map(SysPowerCurveFactor::getId)
.collect(Collectors.toList());
sysPowerCurveFactorMapper.deleteBatchIds(idsToDelete);
}
//批量插入数据库 //批量插入数据库
sysPowerCurveFactorMapper.insertBatch(listData); sysPowerCurveFactorMapper.insertBatch(listData);
//更新缓存数据 //更新缓存数据

View File

@ -98,13 +98,13 @@
<el-button <el-button
class="control-btn" class="control-btn"
type="primary" type="primary"
@click="" @click="editstandard(1)"
v-if="realTimeData.standard == 0" v-if="realTimeData.standard == 0"
>标杆设置</el-button> >标杆设置</el-button>
<el-button <el-button
class="control-btn" class="control-btn"
type="primary" type="primary"
@click="" @click="editstandard(0)"
v-else v-else
>标杆取消</el-button> >标杆取消</el-button>
</div> </div>
@ -120,6 +120,7 @@ import { adminBaseRoutePath } from '/@/router/static/adminBase'
import ContextMenu from '/@/views/backend/auth/model/contextMenu.vue' import ContextMenu from '/@/views/backend/auth/model/contextMenu.vue'
import { sendCommandReq, sendManualCommandReq } from '/@/api/backend/control/request' import { sendCommandReq, sendManualCommandReq } from '/@/api/backend/control/request'
import {ElMessage, ElMessageBox} from "element-plus"; import {ElMessage, ElMessageBox} from "element-plus";
import {equipUpdate} from '/@/api/backend/index.ts'
const router = useRouter() const router = useRouter()
const props = defineProps({ const props = defineProps({
@ -190,7 +191,9 @@ const realTimeData = ref<any>({
locked: 0, locked: 0,
deviceId: '', deviceId: '',
name:'', name:'',
standard:'' code:'',
standard:'',
iotModelId:''
}) })
const windContextMenu = (event: any,curnodeData) => { const windContextMenu = (event: any,curnodeData) => {
contextMenuPos.value.x = event.pageX contextMenuPos.value.x = event.pageX
@ -199,7 +202,9 @@ const windContextMenu = (event: any,curnodeData) => {
realTimeData.value.locked=curnodeData.attributeMap.locked realTimeData.value.locked=curnodeData.attributeMap.locked
realTimeData.value.deviceId=curnodeData.irn realTimeData.value.deviceId=curnodeData.irn
realTimeData.value.name=curnodeData.name realTimeData.value.name=curnodeData.name
realTimeData.value.code=curnodeData.deviceCode
realTimeData.value.standard=curnodeData.standard realTimeData.value.standard=curnodeData.standard
realTimeData.value.iotModelId=curnodeData.modelId
OperateVisible.value = true OperateVisible.value = true
} }
const sendCommand = (type: 'setTurbineFastStart' | 'setTurbineStop' | 'setTurbineResetStatusCode') => { 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('设置失败')
}
})
})
}
</script> </script>
<style scoped lang="scss"> <style scoped lang="scss">