海南版本提交

This commit is contained in:
hzj
2024-03-22 08:59:10 +08:00
parent 0bc9186375
commit 2e0607028b
18 changed files with 499 additions and 217 deletions

View File

@@ -112,14 +112,14 @@ public class CarryCapacityController extends BaseController {
String sheetName = "数据集模版.xlsx";
String sheetName = "数据集模版";
List<CarryCapcityDataEexcel> excels = new ArrayList<>();
CarryCapcityDataEexcel exportHeadersExcel = new CarryCapcityDataEexcel();
excels.add(exportHeadersExcel);
EasyExcel.write(response.getOutputStream(), CarryCapcityDataEexcel.class)
.sheet(sheetName)
.doWrite(excels);
EasyExcelUtil.writeWithSheetsWeb(response, "数据集模版");
EasyExcelUtil.writeWithSheetsWeb(response, "数据集模版.xlsx");

View File

@@ -0,0 +1,84 @@
package com.njcn.advance.controller.carrycapacity;
import com.njcn.advance.pojo.carrycapacity.param.CarryCapacityDeviceParam;
import com.njcn.advance.pojo.carrycapacity.po.CarryCapacityDevicePO;
import com.njcn.advance.service.carrycapacity.CarryCapacityDevicePOService;
import com.njcn.common.pojo.annotation.OperateInfo;
import com.njcn.common.pojo.enums.common.LogEnum;
import com.njcn.common.pojo.enums.response.CommonResponseEnum;
import com.njcn.common.pojo.response.HttpResult;
import com.njcn.common.utils.HttpResultUtil;
import com.njcn.web.controller.BaseController;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor;
import org.apache.commons.lang.StringUtils;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* @author hongawen
* @version 1.0.0
* @date 2023年07月21日 10:06
*/
@RestController
@RequestMapping("carrycapacitydev")
@Api(tags = "承载能力评估用户设备")
@RequiredArgsConstructor
public class CarryCapacityDevController extends BaseController {
private final CarryCapacityDevicePOService carryCapacityDevicePOService;
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
@PostMapping("/add")
@ApiOperation("承载能力评估用户设备新增")
@ApiImplicitParam(name = "capacityDeviceParam", value = "新增参数", required = true)
public HttpResult<Boolean> add(@RequestBody @Validated CarryCapacityDeviceParam capacityDeviceParam) {
String methodDescribe = getMethodDescribe("add");
Boolean flag = carryCapacityDevicePOService.add(capacityDeviceParam);
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, flag, methodDescribe);
}
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
@PostMapping("/remove")
@ApiOperation("承载能力评估用户设备批量删除")
@ApiImplicitParam(name = "devIds", value = "用户id集合", required = true)
public HttpResult<Boolean> remove(@RequestParam("devIds") List<String> devIds) {
String methodDescribe = getMethodDescribe("remove");
Boolean flag = carryCapacityDevicePOService.removeByIds(devIds);
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, flag, methodDescribe);
}
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
@PostMapping("/update")
@ApiOperation("承载能力评估用户设备编辑")
@ApiImplicitParam(name = "deviceParam", value = "编辑参数", required = true)
public HttpResult<Boolean> update(@RequestBody @Validated CarryCapacityDeviceParam.CarryCapacityDeviceUpdateParam deviceParam) {
String methodDescribe = getMethodDescribe("update");
Boolean flag = carryCapacityDevicePOService.updateDevice(deviceParam);
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, flag, methodDescribe);
}
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
@PostMapping("/queyDeviceList")
@ApiOperation("承载能力评估用户设备查询")
@ApiImplicitParam(name = "deviceParam", value = "编辑参数", required = true)
public HttpResult<List<CarryCapacityDevicePO>> queyDeviceList(@RequestBody @Validated CarryCapacityDeviceParam.CarryCapacityDeviceQueryParam deviceParam) {
String methodDescribe = getMethodDescribe("queyDeviceList");
List<CarryCapacityDevicePO> list = carryCapacityDevicePOService.lambdaQuery()
.eq(StringUtils.isNotBlank(deviceParam.getDevId()), CarryCapacityDevicePO::getDevId, deviceParam.getDevId())
.eq(StringUtils.isNotBlank(deviceParam.getUserId()), CarryCapacityDevicePO::getUserId, deviceParam.getUserId()).list();
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, list, methodDescribe);
}
}

View File

@@ -0,0 +1,15 @@
package com.njcn.advance.mapper.carrycapacity;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.njcn.advance.pojo.carrycapacity.po.CarryCapacityDevicePO;
/**
*
* Description:
* Date: 2024/3/19 16:36【需求编号】
*
* @author clam
* @version V1.0.0
*/
public interface CarryCapacityDevicePOMapper extends BaseMapper<CarryCapacityDevicePO> {
}

View File

@@ -0,0 +1,19 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.njcn.advance.mapper.carrycapacity.CarryCapacityDevicePOMapper">
<resultMap id="BaseResultMap" type="com.njcn.advance.pojo.carrycapacity.po.CarryCapacityDevicePO">
<!--@mbg.generated-->
<!--@Table carry_capacity_device-->
<id column="dev_id" jdbcType="VARCHAR" property="devId" />
<result column="dev_name" jdbcType="VARCHAR" property="devName" />
<result column="protocol_capacity" jdbcType="DOUBLE" property="protocolCapacity" />
<result column="create_by" jdbcType="VARCHAR" property="createBy" />
<result column="create_time" jdbcType="TIMESTAMP" property="createTime" />
<result column="update_by" jdbcType="VARCHAR" property="updateBy" />
<result column="update_time" jdbcType="TIMESTAMP" property="updateTime" />
</resultMap>
<sql id="Base_Column_List">
<!--@mbg.generated-->
dev_id, dev_name, protocol_capacity, create_by, create_time, update_by, update_time
</sql>
</mapper>

View File

@@ -0,0 +1,20 @@
package com.njcn.advance.service.carrycapacity;
import com.baomidou.mybatisplus.extension.service.IService;
import com.njcn.advance.pojo.carrycapacity.param.CarryCapacityDeviceParam;
import com.njcn.advance.pojo.carrycapacity.po.CarryCapacityDevicePO;
/**
*
* Description:
* Date: 2024/3/19 16:36【需求编号】
*
* @author clam
* @version V1.0.0
*/
public interface CarryCapacityDevicePOService extends IService<CarryCapacityDevicePO>{
Boolean updateDevice(CarryCapacityDeviceParam.CarryCapacityDeviceUpdateParam deviceParam);
Boolean add(CarryCapacityDeviceParam capacityDeviceParam);
}

View File

@@ -0,0 +1,40 @@
package com.njcn.advance.service.carrycapacity.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.njcn.advance.mapper.carrycapacity.CarryCapacityDevicePOMapper;
import com.njcn.advance.pojo.carrycapacity.param.CarryCapacityDeviceParam;
import com.njcn.advance.pojo.carrycapacity.po.CarryCapacityDevicePO;
import com.njcn.advance.service.carrycapacity.CarryCapacityDevicePOService;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
/**
*
* Description:
* Date: 2024/3/19 16:36【需求编号】
*
* @author clam
* @version V1.0.0
*/
@Service
public class CarryCapacityDevicePOServiceImpl extends ServiceImpl<CarryCapacityDevicePOMapper, CarryCapacityDevicePO> implements CarryCapacityDevicePOService{
@Override
@Transactional(rollbackFor = Exception.class)
public Boolean updateDevice(CarryCapacityDeviceParam.CarryCapacityDeviceUpdateParam deviceParam) {
return this.lambdaUpdate().eq(CarryCapacityDevicePO::getDevId, deviceParam.getDevId())
.set(CarryCapacityDevicePO::getDevName, deviceParam.getDevName())
.set(CarryCapacityDevicePO::getProtocolCapacity, deviceParam.getProtocolCapacity())
.update();
}
@Override
@Transactional(rollbackFor = Exception.class)
public Boolean add(CarryCapacityDeviceParam capacityDeviceParam) {
CarryCapacityDevicePO carryCapacityDevicePO = new CarryCapacityDevicePO();
BeanUtils.copyProperties(capacityDeviceParam,carryCapacityDevicePO);
boolean save = this.save(carryCapacityDevicePO);
return save;
}
}

View File

@@ -12,6 +12,8 @@ import com.njcn.advance.pojo.carrycapacity.po.CarryCapacityUserPO;
import com.njcn.advance.pojo.carrycapacity.vo.CarryCapacityDResultVO;
import com.njcn.advance.service.carrycapacity.CarryCapacityResultPOService;
import com.njcn.advance.service.carrycapacity.CarryCapacityUserPOService;
import com.njcn.device.pq.api.LineFeignClient;
import com.njcn.device.pq.pojo.vo.LineDetailVO;
import lombok.RequiredArgsConstructor;
import org.apache.commons.lang.StringUtils;
import org.apache.commons.lang3.ObjectUtils;
@@ -20,6 +22,7 @@ import org.springframework.stereotype.Service;
import java.util.Arrays;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;
/**
@@ -34,7 +37,7 @@ import java.util.stream.Collectors;
@RequiredArgsConstructor
public class CarryCapacityResultPOServiceImpl extends ServiceImpl<CarryCapacityResultPOMapper, CarryCapacityResultPO> implements CarryCapacityResultPOService{
private final CarryCapacityUserPOService carryCapacityUserPOService;
private final LineFeignClient lineFeignClient;
@Override
public IPage<CarryCapacityDResultVO> queryResultList(CarryCapacityResultParam.CarryCapacityResultPageParam queryParam) {
Page<CarryCapacityDResultVO> returnpage = new Page<> (queryParam.getPageNum ( ), queryParam.getPageSize ( ));
@@ -44,6 +47,7 @@ public class CarryCapacityResultPOServiceImpl extends ServiceImpl<CarryCapacityR
QueryWrapper<CarryCapacityResultPO> queryWrapper = new QueryWrapper<>();
queryWrapper.lambda().eq(StringUtils.isNotBlank(queryParam.getEvaluateType()) ,CarryCapacityResultPO::getEvaluateType,queryParam.getEvaluateType())
.between(StringUtils.isNotBlank(queryParam.getStartTime()) && StringUtils.isNotBlank(queryParam.getEndTime()) ,CarryCapacityResultPO::getEvaluateDate,queryParam.getStartTime(),queryParam.getEndTime())
.eq(CarryCapacityResultPO::getStatus,1)
.orderByDesc(CarryCapacityResultPO::getEvaluateDate);
IPage<CarryCapacityResultPO> page = this.page(temppage, queryWrapper);
@@ -61,6 +65,14 @@ public class CarryCapacityResultPOServiceImpl extends ServiceImpl<CarryCapacityR
List<CarryCapacityDResultVO.CarryCapacityIResult> list = JSONUtil.toList(JSONUtil.toJsonStr(iResultList), CarryCapacityDResultVO.CarryCapacityIResult.class);
vo.setIResultList(list);
}
if(Objects.nonNull(vo.getLineId())){
LineDetailVO data = lineFeignClient.getLineSubGdDetail(vo.getLineId()).getData();
vo.setLineName(data.getGdName()+"->"
+data.getSubName()+"->"
+data.getDevName()+"->"
+data.getLineName());
}
return vo;
}).collect(Collectors.toList());
returnpage.setRecords(collect);

View File

@@ -7,6 +7,7 @@ import com.njcn.advance.pojo.carrycapacity.vo.CarryCapacityStrategyDhlVO;
import com.njcn.advance.service.carrycapacity.CarryCapacityStrategyDhlPOService;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
import java.util.stream.Collectors;
@@ -31,9 +32,11 @@ public class CarryCapacityStrategyDhlPOServiceImpl extends ServiceImpl<CarryCapa
vo.setCount1(t.getCount1());
vo.setCount2(t.getCount2());
vo.setCount3(t.getCount3());
vo.setCount4(t.getCount4());
vo.setComparisonOperators1(t.getComparisonOperators1());
vo.setComparisonOperators2(t.getComparisonOperators2());
vo.setComparisonOperators3(t.getComparisonOperators3());
vo.setComparisonOperators4(t.getComparisonOperators4());
vo.setId(t.getId());
vo.setProtoFlag(t.getProtoFlag());
vo.setType(t.getType());
@@ -43,12 +46,14 @@ public class CarryCapacityStrategyDhlPOServiceImpl extends ServiceImpl<CarryCapa
}
@Override
@Transactional(rollbackFor = Exception.class)
public Boolean adddhl(CarryCapacityStrategyDhlVO capacityStrategyDhlVO) {
this.lambdaUpdate().eq(CarryCapacityStrategyDhlPO::getId, capacityStrategyDhlVO.getId()).
set(CarryCapacityStrategyDhlPO::getUserFlag, 2).update();
CarryCapacityStrategyDhlPO carryCapacityStrategyDhlPO = new CarryCapacityStrategyDhlPO();
BeanUtils.copyProperties(capacityStrategyDhlVO,carryCapacityStrategyDhlPO);
carryCapacityStrategyDhlPO.setId(null);
carryCapacityStrategyDhlPO.setUserFlag(1);
carryCapacityStrategyDhlPO.setProtoFlag(2);
boolean save = this.save(carryCapacityStrategyDhlPO);
return save;

View File

@@ -1,5 +1,6 @@
package com.njcn.advance.service.carrycapacity.impl;
import cn.hutool.core.collection.CollectionUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -62,6 +63,7 @@ public class CarryCapacityUserPOServiceImpl extends ServiceImpl<CarryCapacityUse
queryWrapper.lambda().eq(StringUtils.isNotBlank(pageParm.getUserId()) ,CarryCapacityUserPO::getUserId,pageParm.getUserId())
.eq(StringUtils.isNotBlank(pageParm.getVoltage()) ,CarryCapacityUserPO::getVoltage,pageParm.getVoltage())
.eq(StringUtils.isNotBlank(pageParm.getUserType()) ,CarryCapacityUserPO::getUserType,pageParm.getUserType())
.in(CollectionUtil.isNotEmpty(pageParm.getUserTypeList()) ,CarryCapacityUserPO::getUserType,pageParm.getUserTypeList())
.between(StringUtils.isNotBlank(pageParm.getStartTime()) && StringUtils.isNotBlank(pageParm.getEndTime()) ,CarryCapacityUserPO::getCreateTime,pageParm.getStartTime(),pageParm.getEndTime()).
orderByDesc(CarryCapacityUserPO::getCreateTime);

View File

@@ -11,6 +11,7 @@ import com.njcn.advance.pojo.carrycapacity.param.CarryCapacityEvaluateParam;
import com.njcn.advance.pojo.carrycapacity.param.CarryCapacityQueryDataParam;
import com.njcn.advance.pojo.carrycapacity.param.ExcelDataParam;
import com.njcn.advance.pojo.carrycapacity.po.CarryCapacityDataPO;
import com.njcn.advance.pojo.carrycapacity.po.CarryCapacityDevicePO;
import com.njcn.advance.pojo.carrycapacity.po.CarryCapacityResultPO;
import com.njcn.advance.pojo.carrycapacity.po.CarryCapacityUserPO;
import com.njcn.advance.pojo.carrycapacity.vo.*;
@@ -86,120 +87,6 @@ public class CarryCapcityServiceImpl implements CarryCapcityService {
private final DicDataFeignClient dicDataFeignClient;
//光伏评估
// void photovoltaicEvaluate(double S_T, double S_pv) {
// //电压等级
//
// List<DataHarmPowerP> dataHarmPowerPList = null;
// List<DataHarmPowerQ> dataHarmPowerQList = null;
//
// Integer voltage = null;
// //数据清洗取近一周的配变每日9时~15时段的负载率数据中概率95%小值所对应时刻的有功功率和无功功率值
// List<Double> listP = dataHarmPowerPList.stream().filter(temp -> Utils.isTimeInRange(temp.getTime(), LocalTime.of(9, 0), LocalTime.of(15, 0)))
// .map(DataHarmPowerP::getP)
// .collect(Collectors.toList());
//
// List<Double> listQ = dataHarmPowerQList.stream().filter(temp -> Utils.isTimeInRange(temp.getTime(), LocalTime.of(9, 0), LocalTime.of(15, 0)))
// .map(DataHarmPowerQ::getQ)
// .collect(Collectors.toList());
// //todo 检查数据是否缺失校验数据完整性
// double P_βmin = CZNLPG.calculatePercentile(listP, 1);
// double Q_βmin = CZNLPG.calculatePercentile(listQ, 1);
//
//
// double P_pv = S_pv * Integer.valueOf(CarryingCapacityEnum.K.getValue());
// double Bt = CZNLPG.calculateB(P_βmin, Q_βmin, Double.valueOf(CarryingCapacityEnum.K.getValue()), S_T, S_pv, P_pv);
//
// CZNLPG.calculatePF_T(P_βmin, Q_βmin,Double.valueOf(CarryingCapacityEnum.K.getValue()),S_pv);
// //前2周的数据
// List<DataHarmPowerP> dataHarmPowerPList2 = null;
// List<DataHarmPowerQ> dataHarmPowerQList2 = null;
// List<DataV> DataVList2 = null;
// List<String> phaseType = Stream.of("A", "B", "C").collect(Collectors.toList());
// //存储UA, UB,UC;
// List<Double> uList = new ArrayList<>();
//
// phaseType.stream().forEach(phase -> {
// List<Double> listP2 = dataHarmPowerPList2.stream().filter(temp -> Utils.isTimeInRange(temp.getTime(), LocalTime.of(9, 0), LocalTime.of(15, 0)))
// .filter(temp -> temp.getPhaseType().equals(phase))
// .map(DataHarmPowerP::getP)
// .collect(Collectors.toList());
//
// List<Double> listQ2 = dataHarmPowerQList2.stream().filter(temp -> Utils.isTimeInRange(temp.getTime(), LocalTime.of(9, 0), LocalTime.of(15, 0)))
// .filter(temp -> temp.getPhaseType().equals(phase))
// .map(DataHarmPowerQ::getQ)
// .collect(Collectors.toList());
//
// List<Double> listV2 = DataVList2.stream().filter(temp -> Utils.isTimeInRange(temp.getTime(), LocalTime.of(9, 0), LocalTime.of(15, 0)))
// .filter(temp -> temp.getPhasicType().equals(phase))
// .map(DataV::getRms)
// .collect(Collectors.toList());
// //todo 抽取5000条数据抽取方式待确定)
// Double[] res = new Double[3];
// CZNLPG.cznlpgDataTrain(listV2, listP2, listQ2, listV2.size(), res);
// //前一周数据计算p_minq_min
// List<Double> listPPhase = dataHarmPowerPList.stream().filter(temp -> Utils.isTimeInRange(temp.getTime(), LocalTime.of(9, 0), LocalTime.of(15, 0)))
// .filter(temp -> temp.getPhaseType().equals(phase))
// .map(DataHarmPowerP::getP)
// .collect(Collectors.toList());
//
// List<Double> listQPhase = dataHarmPowerQList.stream().filter(temp -> Utils.isTimeInRange(temp.getTime(), LocalTime.of(9, 0), LocalTime.of(15, 0)))
// .filter(temp -> temp.getPhaseType().equals(phase))
// .map(DataHarmPowerQ::getQ)
// .collect(Collectors.toList());
// //todo 检查数据是否缺失校验数据完整性
// double p_min = CZNLPG.calculatePercentile(listPPhase, 1);
// double q_min = CZNLPG.calculatePercentile(listQPhase, 1);
//
// double U = CZNLPG.calculateU(res[0], res[1], res[2], p_min, Double.valueOf(CarryingCapacityEnum.K.getValue()), q_min, S_pv, voltage);
// uList.add(U);
// });
// //取uList最大值
// double U_T = uList.stream().mapToDouble(Double::doubleValue)
// .max()
// .getAsDouble();
//
//
// List<Double> i_Th_List = new ArrayList<>();
//
// List<DataI> dataIList = null;
// List<Integer> integerList = Stream.of(2, 3, 4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25).collect(Collectors.toList());
//
// integerList.stream().forEach(temp->{
// List<Double> iList = new ArrayList<>();
// phaseType.stream().forEach(phase -> {
//
// List<DataI> tempDataIList = dataIList.stream().filter(temp1 -> Utils.isTimeInRange(temp1.getTime(), LocalTime.of(9, 0), LocalTime.of(15, 0)))
// .filter(temp1 -> temp1.getPhaseType().equals(phase))
// .collect(Collectors.toList());
// //todo 检查数据是否缺失校验数据完整性
//
// List<Double> attributeValueByPropertyName = Utils.getAttributeValueByPropertyName(tempDataIList, "i" + temp);
// double I_cp95 = CZNLPG.calculatePercentile(attributeValueByPropertyName, 0);
// double I_phase = CZNLPG.calculateITm(I_cp95, Double.valueOf(CarryingCapacityEnum.K.getValue()),
// voltage, S_pv, Double.valueOf(CarryingCapacityEnum.getValueByCode("K_H_" + temp)),
// Double.valueOf(CarryingCapacityEnum.getValueByCode("I_INV_" + temp)));
// iList.add(I_phase);
// });
// double I_th = iList.stream().mapToDouble(Double::doubleValue)
// .max()
// .getAsDouble();
// i_Th_List.add(I_th);
//
// });
// //todo 根据监测点查找限值
//
//
//
//
//
//
//
//
//
//
//
// }
@Override
public CarryCapacityDataVO queryCarryCapacityData(CarryCapacityQueryDataParam queryParam) {
@@ -930,24 +817,23 @@ public class CarryCapcityServiceImpl implements CarryCapcityService {
CarryCapacityDResultVO vo = new CarryCapacityDResultVO();
List<CarryCapacityDResultVO.CarryCapacityIResult> carryCapacityIResultList = new ArrayList<>();
String userType = calParam.getUserList().get(0).getUserType();
List<CarryCapacityDevicePO> devList = calParam.getDevList();
if(CollectionUtil.isEmpty(devList)){
throw new BusinessException(AdvanceResponseEnum.DEVICE_LOST);
}
String userId = devList.get(0).getUserId();
CarryCapacityUserPO carryCapacityUserPO = carryCapacityUserPOService.queyDetailUserById(userId);
String userType = carryCapacityUserPO.getUserType();
String code = dicDataFeignClient.getDicDataById(userType).getData().getCode();
//用户协议容量
double sumCapacity = 0.00;
if (CollectionUtil.isEmpty(calParam.getUserList())){
double sumCapacity = carryCapacityUserPO.getProtocolCapacity();
throw new BusinessException(AdvanceResponseEnum.USER_LOST);
}else {
sumCapacity = calParam.getUserList().stream().mapToDouble(CarryCapacityUserVO::getProtocolCapacity).sum();
}
double rate = sumCapacity / calParam.getShortCapacity();
vo.setFirstResult(rate*100);
CarryCapacityResultPO carryCapacityResultPO = new CarryCapacityResultPO();
carryCapacityResultPO.setFirstResult(rate*100);
carryCapacityResultPO.setUserId( String.join(",", calParam.getUserList().stream().map(CarryCapacityUserVO::getUserId).collect(Collectors.toList())));
carryCapacityResultPO.setUserId( userId);
carryCapacityResultPO.setEvaluateDate(LocalDate.now());
carryCapacityResultPO.setEvaluateType(userType);
carryCapacityResultPO.setStatus(1);
@@ -962,7 +848,7 @@ public class CarryCapcityServiceImpl implements CarryCapcityService {
carryCapacityResultPO.setStatus(1);
if(rate<0.001){
carryCapacityResultPO.setReslutLevel(6);
carryCapacityResultPO.setReslutLevel(1);
carryCapacityResultPOService.save(carryCapacityResultPO);
return vo;
}
@@ -974,18 +860,23 @@ public class CarryCapcityServiceImpl implements CarryCapcityService {
//设备电压等级单位KV
String sacaleValue = dicDataFeignClient.getDicDataById(calParam.getScale()).getData().getValue();
//用户电压等级
DictData data = dicDataFeignClient.getDicDataById(calParam.getUserList().get(0).getVoltage()).getData();
// //用户电压等级
DictData data = dicDataFeignClient.getDicDataById(carryCapacityUserPO.getVoltage()).getData();
float userSacaleValue = Float.valueOf(data.getValue())* (data.getCode().contains("k")?1000:1);
//用户模式专变用户,公变用户
String userMode = dicDataFeignClient.getDicDataById(calParam.getUserMode()).getData().getCode();
//变压器连接方式接线方式
String connectionMode = dicDataFeignClient.getDicDataById(calParam.getConnectionMode()).getData().getCode();
String connectionMode;
if(Objects.nonNull(calParam.getConnectionMode())&&!"".equals(calParam.getConnectionMode())){
connectionMode = dicDataFeignClient.getDicDataById(calParam.getConnectionMode()).getData().getCode();
} else {
connectionMode = "";
}
List<Integer> integerList = Stream.of( 3,5,7,9,11,13,15,17,19).collect(Collectors.toList());
List<Integer> integerList = Stream.of(2, 3, 4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20).collect(Collectors.toList());
//基波电流I_1:设备容量(转成KVA*1000)*K功率因数转成kW/更号3*电压等级转成Kv
Double I_1 = calParam.getDeviceCapacity()*1000*calParam.getK()/(Math.sqrt(3)*Double.valueOf(sacaleValue));
Overlimit overlimit = new Overlimit();
COverlimitUtil.iHarm(overlimit,Float.valueOf(sacaleValue),(float) sumCapacity,calParam.getDeviceCapacity(),calParam.getShortCapacity());
@@ -995,18 +886,33 @@ public class CarryCapcityServiceImpl implements CarryCapcityService {
integerList.stream().forEach(temp->{
CarryCapacityDResultVO.CarryCapacityIResult carryCapacityIResultVO = new CarryCapacityDResultVO.CarryCapacityIResult();
//低压侧
Double I_h = I_1*(Double.valueOf(CarryingCapacityEnum.getValueByCode("CP_I_" + temp)))/100;
if(!DicDataEnum.YNyn.getCode().equals(connectionMode)&&temp%3==0){
I_h =0.00;
}else {
//专变用户的话是经过变压器的高压侧进行考核,公变用户的正常是在低压侧进行考核
if (DicDataEnum.SPECIAL_USER.getCode().equals(userMode)) {
I_h = I_h / (Double.valueOf(sacaleValue) * 1000 / userSacaleValue);
List<Double> Ilist = new ArrayList<>();
devList.forEach(carryCapacityDevicePO -> {
DictData devScaledata = dicDataFeignClient.getDicDataById(carryCapacityDevicePO.getDevScale()).getData();
Double devScaleValue = Float.valueOf(devScaledata.getValue())* (devScaledata.getCode().contains("k")?1:0.0001);
//基波电流I_1:设备容量(转成KVA*1000)*K功率因数转成kW/更号3*电压等级转成Kv
Double I_1 = carryCapacityDevicePO.getProtocolCapacity()*1000*calParam.getK()/(Math.sqrt(3)*Double.valueOf(devScaleValue));
//低压侧
Double I_h = I_1*(Double.valueOf(CarryingCapacityEnum.getValueByCode("CP_I_" + temp)))/100;
//当变压器连接方式为YNyn零序电流可以流通计算变压器高压侧的谐波电流零序电流次数为3、6、9、12、否则为0
if(!DicDataEnum.YNyn.getCode().equals(connectionMode)&&temp%3==0){
I_h =0.00;
}
Ilist.add(I_h);
});
//将变压器下多个设备电流合并
Double mergeI = mergeIList(Ilist,temp);
//专变用户的话是经过变压器的高压侧进行考核,公变用户的正常是在低压侧进行考核
if (DicDataEnum.SPECIAL_USER.getCode().equals(userMode)) {
mergeI = mergeI / (Double.valueOf(sacaleValue) * 1000 / userSacaleValue);
}
carryCapacityIResultVO.setTime(temp);
carryCapacityIResultVO.setI(I_h);
carryCapacityIResultVO.setI(mergeI);
double getUharm = PubUtils.getValueByMethod(overlimit, "getIharm", temp);
carryCapacityIResultVO.setI_limit(getUharm);
carryCapacityIResultList.add(carryCapacityIResultVO);
@@ -1016,18 +922,32 @@ public class CarryCapcityServiceImpl implements CarryCapcityService {
integerList.stream().forEach(temp->{
CarryCapacityDResultVO.CarryCapacityIResult carryCapacityIResultVO = new CarryCapacityDResultVO.CarryCapacityIResult();
//低压侧
Double I_h = I_1*(Double.valueOf(CarryingCapacityEnum.getValueByCode("EAF_I_" + temp)))/100;
if(!DicDataEnum.YNyn.getCode().equals(connectionMode)&&temp%3==0){
I_h =0.00;
}else {
//专变用户的话是经过变压器的高压侧进行考核,公变用户的正常是在低压侧进行考核
if (DicDataEnum.SPECIAL_USER.getCode().equals(userMode)) {
I_h = I_h / (Double.valueOf(sacaleValue) * 1000 / userSacaleValue);
List<Double> Ilist = new ArrayList<>();
devList.forEach(carryCapacityDevicePO -> {
DictData devScaledata = dicDataFeignClient.getDicDataById(carryCapacityDevicePO.getDevScale()).getData();
Double devScaleValue = Float.valueOf(devScaledata.getValue())* (devScaledata.getCode().contains("k")?1:0.0001);
//基波电流I_1:设备容量(转成KVA*1000)*K功率因数转成kW/更号3*电压等级转成Kv
Double I_1 = carryCapacityDevicePO.getProtocolCapacity()*1000*calParam.getK()/(Math.sqrt(3)*Double.valueOf(devScaleValue));
//低压侧
Double I_h = I_1*(Double.valueOf(CarryingCapacityEnum.getValueByCode("EAF_I_" + temp)))/100;
//当变压器连接方式为YNyn零序电流可以流通计算变压器高压侧的谐波电流零序电流次数为3、6、9、12、否则为0
if(!DicDataEnum.YNyn.getCode().equals(connectionMode)&&temp%3==0){
I_h =0.00;
}
Ilist.add(I_h);
});
//将变压器下多个设备电流合并
Double mergeI = mergeIList(Ilist,temp);
//专变用户的话是经过变压器的高压侧进行考核,公变用户的正常是在低压侧进行考核
if (DicDataEnum.SPECIAL_USER.getCode().equals(userMode)) {
mergeI = mergeI / (Double.valueOf(sacaleValue) * 1000 / userSacaleValue);
}
carryCapacityIResultVO.setTime(temp);
carryCapacityIResultVO.setI(I_h);
carryCapacityIResultVO.setI(mergeI);
double getUharm = PubUtils.getValueByMethod(overlimit, "getIharm", temp);
carryCapacityIResultVO.setI_limit(getUharm);
carryCapacityIResultList.add(carryCapacityIResultVO);
@@ -1036,22 +956,33 @@ public class CarryCapcityServiceImpl implements CarryCapcityService {
}
else if (DicDataEnum.Electrified_Rail_Users.getCode().equals(code)) {
integerList.stream().forEach(temp->{
if(temp%2==0){
return;
}
CarryCapacityDResultVO.CarryCapacityIResult carryCapacityIResultVO = new CarryCapacityDResultVO.CarryCapacityIResult();
//低压侧
Double I_h = I_1*(Double.valueOf(CarryingCapacityEnum.getValueByCode("ER_I_" + temp)))/100;
if(!DicDataEnum.YNyn.getCode().equals(connectionMode)&&temp%3==0){
I_h =0.00;
}else {
//专变用户的话是经过变压器的高压侧进行考核,公变用户的正常是在低压侧进行考核
if (DicDataEnum.SPECIAL_USER.getCode().equals(userMode)) {
I_h = I_h / (Double.valueOf(sacaleValue) * 1000 / userSacaleValue);
List<Double> Ilist = new ArrayList<>();
devList.forEach(carryCapacityDevicePO -> {
DictData devScaledata = dicDataFeignClient.getDicDataById(carryCapacityDevicePO.getDevScale()).getData();
Double devScaleValue = Float.valueOf(devScaledata.getValue())* (devScaledata.getCode().contains("k")?1:0.0001);
//基波电流I_1:设备容量(转成KVA*1000)*K功率因数转成kW/更号3*电压等级转成Kv
Double I_1 = carryCapacityDevicePO.getProtocolCapacity()*1000*calParam.getK()/(Math.sqrt(3)*Double.valueOf(devScaleValue));
//低压侧
Double I_h = I_1*(Double.valueOf(CarryingCapacityEnum.getValueByCode("ER_I_" + temp)))/100;
//当变压器连接方式为YNyn零序电流可以流通计算变压器高压侧的谐波电流零序电流次数为3、6、9、12、否则为0
if(!DicDataEnum.YNyn.getCode().equals(connectionMode)&&temp%3==0){
I_h =0.00;
}
Ilist.add(I_h);
});
//将变压器下多个设备电流合并
Double mergeI = mergeIList(Ilist,temp);
//专变用户的话是经过变压器的高压侧进行考核,公变用户的正常是在低压侧进行考核
if (DicDataEnum.SPECIAL_USER.getCode().equals(userMode)) {
mergeI = mergeI / (Double.valueOf(sacaleValue) * 1000 / userSacaleValue);
}
carryCapacityIResultVO.setTime(temp);
carryCapacityIResultVO.setI(I_h);
carryCapacityIResultVO.setI(mergeI);
double getUharm = PubUtils.getValueByMethod(overlimit, "getIharm", temp);
carryCapacityIResultVO.setI_limit(getUharm);
carryCapacityIResultList.add(carryCapacityIResultVO);
@@ -1059,13 +990,34 @@ public class CarryCapcityServiceImpl implements CarryCapcityService {
}
vo.setIResultList(carryCapacityIResultList);
carryCapacityResultPO.setIResultList(JSONUtil.toJsonStr(carryCapacityIResultList));
long count = carryCapacityIResultList.stream().filter(temp -> temp.getI() > temp.getI_limit()).count();
carryCapacityResultPO.setReslutLevel(count==0?1:6);
carryCapacityResultPOService.save(carryCapacityResultPO);
return vo;
}
private Double mergeIList(List<Double> ilist, Integer temp) {
Double result = 0.00;
if (ilist.size()==1){
return ilist.get(0);
}else {
result = ilist.get(0);
for (int i = 1; i < ilist.size(); i++) {
Double sum = result*result +ilist.get(i)*ilist.get(i)+ Double.valueOf(CarryingCapacityEnum.getValueByCode("K_H_" + (i + 2)))*result*ilist.get(i);
result =Math.sqrt(sum);
}
}
return result;
}
public static ExcelDataDTO ParsingFile(LocalDate startDate, LocalDate endDate, InputStream is) throws Exception{
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");