Merge branch 'main' of https://git.jsspisoft.com/ry-das
This commit is contained in:
commit
ffaa497d0b
@ -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) {
|
||||||
|
@ -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);
|
||||||
//更新缓存数据
|
//更新缓存数据
|
||||||
|
@ -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">
|
||||||
|
Loading…
Reference in New Issue
Block a user