海南版本提交

This commit is contained in:
hzj
2024-03-18 15:21:28 +08:00
parent 5b7763b265
commit 5fff26c276
27 changed files with 1647 additions and 274 deletions

View File

@@ -1,40 +1,35 @@
package com.njcn.advance.controller.carrycapacity;
import cn.afterturn.easypoi.excel.ExcelExportUtil;
import cn.afterturn.easypoi.excel.entity.ExportParams;
import cn.afterturn.easypoi.excel.entity.enmus.ExcelType;
import com.alibaba.nacos.shaded.com.google.common.collect.Maps;
import com.njcn.advance.pojo.carrycapacity.excel.CarryCapcityDataIEexcel;
import com.njcn.advance.pojo.carrycapacity.excel.CarryCapcityDataPEexcel;
import com.njcn.advance.pojo.carrycapacity.excel.CarryCapcityDataQEexcel;
import com.njcn.advance.pojo.carrycapacity.excel.CarryCapcityDataVEexcel;
import com.alibaba.excel.EasyExcel;
import com.njcn.advance.pojo.carrycapacity.excel.CarryCapcityDataEexcel;
import com.njcn.advance.pojo.carrycapacity.param.CarryCapacityCalParam;
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.vo.*;
import com.njcn.advance.pojo.carrycapacity.vo.CarryCapacityDResultVO;
import com.njcn.advance.pojo.carrycapacity.vo.CarryCapacityDataIVO;
import com.njcn.advance.pojo.carrycapacity.vo.CarryCapacityDataQVO;
import com.njcn.advance.pojo.carrycapacity.vo.CarryCapacityDataVO;
import com.njcn.advance.service.carrycapacity.CarryCapcityService;
import com.njcn.advance.utils.EasyExcelUtil;
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.device.pq.pojo.vo.TerminalTree;
import com.njcn.poi.util.PoiUtil;
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.compress.utils.Lists;
import org.apache.poi.ss.usermodel.Workbook;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
/**
@@ -113,49 +108,19 @@ public class CarryCapacityController extends BaseController {
@ResponseBody
@ApiOperation("导出数据集模板")
@GetMapping(value = "getExcelTemplate")
public HttpResult<String> getExcelTemplate(HttpServletResponse response) {
final List<Map<String, Object>> sheetsList = Lists.newArrayList();
Map<String, Object> exportMap = Maps.newHashMap();
final ExportParams exportParams = new ExportParams(null, "电流幅值", ExcelType.HSSF);
// 以下3个参数为API中写死的参数名 分别是sheet配置/导出类(注解定义)/数据集
exportMap.put("title", exportParams);
exportMap.put("entity", CarryCapcityDataIEexcel.class);
exportMap.put("data", new ArrayList<>());
// 加入多sheet配置列表
sheetsList.add(exportMap);
Map<String, Object> exportMap2 = Maps.newHashMap();
final ExportParams exportParams2 = new ExportParams(null, "电压", ExcelType.XSSF);
// 以下3个参数为API中写死的参数名 分别是sheet配置/导出类(注解定义)/数据集
exportMap2.put("title", exportParams2);
exportMap2.put("entity", CarryCapcityDataVEexcel.class);
exportMap2.put("data", new ArrayList<>());
// 加入多sheet配置列表
sheetsList.add(exportMap2);
Map<String, Object> exportMap3 = Maps.newHashMap();
final ExportParams exportParams3 = new ExportParams(null, "有功功率", ExcelType.XSSF);
// 以下3个参数为API中写死的参数名 分别是sheet配置/导出类(注解定义)/数据集
exportMap3.put("title", exportParams3);
exportMap3.put("entity", CarryCapcityDataPEexcel.class);
exportMap3.put("data", new ArrayList<>());
// 加入多sheet配置列表
sheetsList.add(exportMap3);
Map<String, Object> exportMap4 = Maps.newHashMap();
final ExportParams exportParams4 = new ExportParams(null, "无功功率", ExcelType.XSSF);
// 以下3个参数为API中写死的参数名 分别是sheet配置/导出类(注解定义)/数据集
exportMap4.put("title", exportParams4);
exportMap4.put("entity", CarryCapcityDataQEexcel.class);
exportMap4.put("data", new ArrayList<>());
// 加入多sheet配置列表
sheetsList.add(exportMap4);
Workbook workbook = ExcelExportUtil.exportExcel(sheetsList, ExcelType.XSSF);
public HttpResult<String> getExcelTemplate(HttpServletResponse response) throws IOException {
String fileName = "数据集.xlsx";
ExportParams exportExcel = new ExportParams("数据集", "数据集");
PoiUtil.exportFileByWorkbook(workbook, fileName, response);
String sheetName = "数据集模版.xlsx";
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, "数据集模版");

View File

@@ -2,6 +2,7 @@ package com.njcn.advance.controller.carrycapacity;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.njcn.advance.pojo.carrycapacity.param.CarryCapacityResultParam;
import com.njcn.advance.pojo.carrycapacity.po.CarryCapacityResultPO;
import com.njcn.advance.pojo.carrycapacity.vo.CarryCapacityDResultVO;
import com.njcn.advance.service.carrycapacity.CarryCapacityResultPOService;
import com.njcn.common.pojo.annotation.OperateInfo;
@@ -15,10 +16,9 @@ import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
@@ -45,7 +45,14 @@ public class CarryCapacityResultController extends BaseController {
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, vo, methodDescribe);
}
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
@PostMapping("/remove")
@ApiOperation("承载能力评估用户批量删除")
public HttpResult<Boolean> remove(@RequestParam("ids") List<String> ids) {
String methodDescribe = getMethodDescribe("remove");
Boolean flag = carryCapacityResultPOService.lambdaUpdate().in(CarryCapacityResultPO::getId, ids).set(CarryCapacityResultPO::getStatus, 0).update();
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, flag, methodDescribe);
}
}

View File

@@ -1,7 +1,9 @@
package com.njcn.advance.controller.carrycapacity;
import com.njcn.advance.pojo.carrycapacity.param.CarryCapacityStrategyParam;
import com.njcn.advance.pojo.carrycapacity.vo.CarryCapacityStrategyDhlVO;
import com.njcn.advance.pojo.carrycapacity.vo.CarryCapacityStrategyVO;
import com.njcn.advance.service.carrycapacity.CarryCapacityStrategyDhlPOService;
import com.njcn.advance.service.carrycapacity.CarryCapacityStrategyPOService;
import com.njcn.common.pojo.annotation.OperateInfo;
import com.njcn.common.pojo.enums.common.LogEnum;
@@ -36,10 +38,12 @@ public class CarryCapacityStrategyController extends BaseController {
private final CarryCapacityStrategyPOService carryCapacityStrategyPOService;
private final CarryCapacityStrategyDhlPOService carryCapacityStrategyDhlPOService;
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
@PostMapping("/add")
@ApiOperation("用户新增承载能力评估策略")
@ApiOperation("用户新增承载能力评估策略(光伏)")
@ApiImplicitParam(name = "carryCapacityStrategyParam", value = "新增参数", required = true)
public HttpResult<Boolean> add(@RequestBody @Validated CarryCapacityStrategyParam carryCapacityStrategyParam) {
String methodDescribe = getMethodDescribe("add");
@@ -47,8 +51,17 @@ public class CarryCapacityStrategyController extends BaseController {
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, flag, methodDescribe);
}
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
@PostMapping("/addList")
@ApiOperation("用户新增承载能力评估策略组(光伏)")
@ApiImplicitParam(name = "carryCapacityStrategyParamList", value = "新增参数", required = true)
public HttpResult<Boolean> addList(@RequestBody @Validated List<CarryCapacityStrategyParam> carryCapacityStrategyParamList) {
String methodDescribe = getMethodDescribe("addList");
Boolean flag = carryCapacityStrategyPOService.addList(carryCapacityStrategyParamList);
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, flag, methodDescribe);
}
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
@PostMapping("/queyDetail")
@ApiOperation("承载能力评估策略初始化查询")
@ApiOperation("承载能力评估策略初始化查询(光伏)")
public HttpResult<List<CarryCapacityStrategyVO>> queyDetail() {
String methodDescribe = getMethodDescribe("queyDetail");
List<CarryCapacityStrategyVO> carryCapacityStrategyVOList = carryCapacityStrategyPOService.queyDetail();
@@ -64,4 +77,23 @@ public class CarryCapacityStrategyController extends BaseController {
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, flag, methodDescribe);
}
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
@PostMapping("/adddhl")
@ApiOperation("用户新增承载能力评估策略(电弧炉)")
@ApiImplicitParam(name = "capacityStrategyDhlVO", value = "新增参数", required = true)
public HttpResult<Boolean> adddhl(@RequestBody @Validated CarryCapacityStrategyDhlVO capacityStrategyDhlVO) {
String methodDescribe = getMethodDescribe("adddhl");
Boolean flag = carryCapacityStrategyDhlPOService.adddhl(capacityStrategyDhlVO);
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, flag, methodDescribe);
}
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
@PostMapping("/queyDetailDhl")
@ApiOperation("承载能力评估策略初始化查询(电弧炉)")
public HttpResult<List<CarryCapacityStrategyDhlVO>> queyDetailDhl() {
String methodDescribe = getMethodDescribe("queyDetailDhl");
List<CarryCapacityStrategyDhlVO> car = carryCapacityStrategyDhlPOService.queyDetailDhl();
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, car, 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.CarryCapacityStrategyDhlPO;
/**
*
* Description:
* Date: 2024/3/15 10:45【需求编号】
*
* @author clam
* @version V1.0.0
*/
public interface CarryCapacityStrategyDhlPOMapper extends BaseMapper<CarryCapacityStrategyDhlPO> {
}

View File

@@ -0,0 +1,30 @@
<?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.CarryCapacityStrategyDhlPOMapper">
<resultMap id="BaseResultMap" type="com.njcn.advance.pojo.carrycapacity.po.CarryCapacityStrategyDhlPO">
<!--@mbg.generated-->
<!--@Table carry_capacity_strategy_dhl-->
<result column="id" jdbcType="INTEGER" property="id" />
<result column="type" jdbcType="VARCHAR" property="type" />
<result column="comparison_operators_1" jdbcType="VARCHAR" property="comparisonOperators1" />
<result column="count_1" jdbcType="INTEGER" property="count1" />
<result column="comparison_operators_2" jdbcType="VARCHAR" property="comparisonOperators2" />
<result column="count_2" jdbcType="INTEGER" property="count2" />
<result column="comparison_operators_3" jdbcType="VARCHAR" property="comparisonOperators3" />
<result column="count_3" jdbcType="INTEGER" property="count3" />
<result column="proto_flag" jdbcType="INTEGER" property="protoFlag" />
<result column="comparison_operators_4" jdbcType="VARCHAR" property="comparisonOperators4" />
<result column="count_4" jdbcType="INTEGER" property="count4" />
<result column="user_flag" jdbcType="INTEGER" property="userFlag" />
<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-->
id, `type`, comparison_operators_1, count_1, comparison_operators_2, count_2, comparison_operators_3,
count_3, proto_flag, comparison_operators_4, count_4, user_flag, create_by, create_time,
update_by, update_time
</sql>
</mapper>

View File

@@ -0,0 +1,23 @@
package com.njcn.advance.service.carrycapacity;
import com.njcn.advance.pojo.carrycapacity.po.CarryCapacityStrategyDhlPO;
import com.baomidou.mybatisplus.extension.service.IService;
import com.njcn.advance.pojo.carrycapacity.vo.CarryCapacityStrategyDhlVO;
import java.util.List;
/**
*
* Description:
* Date: 2024/3/15 10:45【需求编号】
*
* @author clam
* @version V1.0.0
*/
public interface CarryCapacityStrategyDhlPOService extends IService<CarryCapacityStrategyDhlPO>{
List<CarryCapacityStrategyDhlVO> queyDetailDhl();
Boolean adddhl(CarryCapacityStrategyDhlVO capacityStrategyDhlVO);
}

View File

@@ -23,4 +23,6 @@ public interface CarryCapacityStrategyPOService extends IService<CarryCapacitySt
List<CarryCapacityStrategyVO> queyDetail();
Boolean restore();
Boolean addList(List<CarryCapacityStrategyParam> carryCapacityStrategyParamList);
}

View File

@@ -1,5 +1,6 @@
package com.njcn.advance.service.carrycapacity.impl;
import cn.hutool.json.JSONUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -13,6 +14,7 @@ import com.njcn.advance.service.carrycapacity.CarryCapacityResultPOService;
import com.njcn.advance.service.carrycapacity.CarryCapacityUserPOService;
import lombok.RequiredArgsConstructor;
import org.apache.commons.lang.StringUtils;
import org.apache.commons.lang3.ObjectUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
@@ -54,6 +56,11 @@ public class CarryCapacityResultPOServiceImpl extends ServiceImpl<CarryCapacityR
return carryCapacityUserPO.getUserName();
}).collect(Collectors.toList());
vo.setUserName(collect1.stream().collect(Collectors.joining(",")));
if (ObjectUtils.isNotEmpty(temp.getIResultList()) ){
String iResultList = temp.getIResultList();
List<CarryCapacityDResultVO.CarryCapacityIResult> list = JSONUtil.toList(JSONUtil.toJsonStr(iResultList), CarryCapacityDResultVO.CarryCapacityIResult.class);
vo.setIResultList(list);
}
return vo;
}).collect(Collectors.toList());
returnpage.setRecords(collect);

View File

@@ -0,0 +1,57 @@
package com.njcn.advance.service.carrycapacity.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.njcn.advance.mapper.carrycapacity.CarryCapacityStrategyDhlPOMapper;
import com.njcn.advance.pojo.carrycapacity.po.CarryCapacityStrategyDhlPO;
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 java.util.List;
import java.util.stream.Collectors;
/**
*
* Description:
* Date: 2024/3/15 10:45【需求编号】
*
* @author clam
* @version V1.0.0
*/
@Service
public class CarryCapacityStrategyDhlPOServiceImpl extends ServiceImpl<CarryCapacityStrategyDhlPOMapper, CarryCapacityStrategyDhlPO> implements CarryCapacityStrategyDhlPOService{
@Override
public List<CarryCapacityStrategyDhlVO> queyDetailDhl() {
List<CarryCapacityStrategyDhlPO> list = this.lambdaQuery().eq(CarryCapacityStrategyDhlPO::getUserFlag, 1).list();
List<CarryCapacityStrategyDhlVO> collect = list.stream().map(t -> {
CarryCapacityStrategyDhlVO vo = new CarryCapacityStrategyDhlVO();
vo.setCount1(t.getCount1());
vo.setCount2(t.getCount2());
vo.setCount3(t.getCount3());
vo.setComparisonOperators1(t.getComparisonOperators1());
vo.setComparisonOperators2(t.getComparisonOperators2());
vo.setComparisonOperators3(t.getComparisonOperators3());
vo.setId(t.getId());
vo.setProtoFlag(t.getProtoFlag());
vo.setType(t.getType());
return vo;
}).collect(Collectors.toList());
return collect;
}
@Override
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.setProtoFlag(2);
boolean save = this.save(carryCapacityStrategyDhlPO);
return save;
}
}

View File

@@ -1,17 +1,26 @@
package com.njcn.advance.service.carrycapacity.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.njcn.advance.enums.AdvanceResponseEnum;
import com.njcn.advance.mapper.carrycapacity.CarryCapacityStrategyDhlPOMapper;
import com.njcn.advance.mapper.carrycapacity.CarryCapacityStrategyPOMapper;
import com.njcn.advance.pojo.carrycapacity.param.CarryCapacityStrategyParam;
import com.njcn.advance.pojo.carrycapacity.po.CarryCapacityStrategyDhlPO;
import com.njcn.advance.pojo.carrycapacity.po.CarryCapacityStrategyPO;
import com.njcn.advance.pojo.carrycapacity.vo.CarryCapacityStrategyVO;
import com.njcn.advance.service.carrycapacity.CarryCapacityStrategyPOService;
import com.njcn.common.pojo.exception.BusinessException;
import lombok.RequiredArgsConstructor;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.UUID;
import java.util.stream.Collectors;
/**
@@ -23,8 +32,9 @@ import java.util.stream.Collectors;
* @version V1.0.0
*/
@Service
@RequiredArgsConstructor
public class CarryCapacityStrategyPOServiceImpl extends ServiceImpl<CarryCapacityStrategyPOMapper, CarryCapacityStrategyPO> implements CarryCapacityStrategyPOService{
private final CarryCapacityStrategyDhlPOMapper carryCapacityStrategyDhlPOMapper;
@Override
@Transactional(rollbackFor = {Exception.class})
public Boolean add(CarryCapacityStrategyParam carryCapacityStrategyParam) {
@@ -32,6 +42,7 @@ public class CarryCapacityStrategyPOServiceImpl extends ServiceImpl<CarryCapacit
BeanUtils.copyProperties(carryCapacityStrategyParam, carryCapacityStrategyPO);
//将原始策略处理为不启用
this.lambdaUpdate().eq(CarryCapacityStrategyPO::getResult, carryCapacityStrategyParam.getResult())
.eq(CarryCapacityStrategyPO::getId, carryCapacityStrategyParam.getId())
.eq(CarryCapacityStrategyPO::getIndexResult, carryCapacityStrategyParam.getIndexResult())
.eq(CarryCapacityStrategyPO::getProtoFlag, 1)
.set(CarryCapacityStrategyPO::getUserFlag,2)
@@ -39,6 +50,7 @@ public class CarryCapacityStrategyPOServiceImpl extends ServiceImpl<CarryCapacit
QueryWrapper<CarryCapacityStrategyPO> lambdaQuery = new QueryWrapper<>();
lambdaQuery.lambda()
.eq(CarryCapacityStrategyPO::getResult, carryCapacityStrategyParam.getResult())
.eq(CarryCapacityStrategyPO::getId, carryCapacityStrategyParam.getId())
.eq(CarryCapacityStrategyPO::getIndexResult, carryCapacityStrategyParam.getIndexResult())
.eq(CarryCapacityStrategyPO::getProtoFlag, 2);
//将客户对应策略删除
@@ -52,13 +64,29 @@ public class CarryCapacityStrategyPOServiceImpl extends ServiceImpl<CarryCapacit
@Override
public List<CarryCapacityStrategyVO> queyDetail() {
List<CarryCapacityStrategyVO> result = new ArrayList<>();
List<CarryCapacityStrategyPO> list = this.lambdaQuery().eq(CarryCapacityStrategyPO::getUserFlag, 1).list();
List<CarryCapacityStrategyVO> collect = list.stream().map(temp -> {
Map<Integer, Map<String, List<CarryCapacityStrategyPO>>> collect = list.stream().collect(Collectors.groupingBy(CarryCapacityStrategyPO::getResult,
Collectors.groupingBy(CarryCapacityStrategyPO::getId)));
collect.forEach((key, value) -> {
CarryCapacityStrategyVO vo = new CarryCapacityStrategyVO();
BeanUtils.copyProperties(temp, vo);
return vo;
}).collect(Collectors.toList());
return collect;
vo.setResult(key);
List<CarryCapacityStrategyVO.CarryCapacityStrategysingleVO> capacityStrategysingleVOList =new ArrayList<>();
value.forEach((k, v) -> {
CarryCapacityStrategyVO.CarryCapacityStrategysingleVO vo1 = new CarryCapacityStrategyVO.CarryCapacityStrategysingleVO();
vo1.setId(k);
vo1.setCarryCapacityStrategyIndexVOList(v.stream().map(temp -> {
CarryCapacityStrategyVO.CarryCapacityStrategysingleVO.CarryCapacityStrategyIndexVO vo2 = new CarryCapacityStrategyVO.CarryCapacityStrategysingleVO.CarryCapacityStrategyIndexVO();
BeanUtils.copyProperties(temp, vo2);
return vo2;
}).collect(Collectors.toList()));
capacityStrategysingleVOList.add(vo1);
});
vo.setCapacityStrategysingleVOList(capacityStrategysingleVOList);
result.add(vo);
});
return result;
}
@Override
@@ -67,12 +95,45 @@ public class CarryCapacityStrategyPOServiceImpl extends ServiceImpl<CarryCapacit
QueryWrapper<CarryCapacityStrategyPO> lambdaQuery = new QueryWrapper<>();
lambdaQuery.lambda()
.eq(CarryCapacityStrategyPO::getProtoFlag, 2);
this.remove(lambdaQuery
);
this.remove(lambdaQuery);
//将原始策略处理为启用
boolean update = this.lambdaUpdate().eq(CarryCapacityStrategyPO::getProtoFlag, 1)
.set(CarryCapacityStrategyPO::getUserFlag, 1)
.update();
//电弧炉初始化
QueryWrapper<CarryCapacityStrategyDhlPO> lambdaQuery2 = new QueryWrapper<>();
lambdaQuery2.lambda()
.eq(CarryCapacityStrategyDhlPO::getProtoFlag, 2);
carryCapacityStrategyDhlPOMapper.delete(lambdaQuery2);
UpdateWrapper<CarryCapacityStrategyDhlPO> lambdaQuery3 = new UpdateWrapper<>();
lambdaQuery3.lambda()
.eq(CarryCapacityStrategyDhlPO::getProtoFlag, 1)
.set(CarryCapacityStrategyDhlPO::getUserFlag, 1);
carryCapacityStrategyDhlPOMapper.update(null,lambdaQuery3);
return update;
}
@Override
public Boolean addList(List<CarryCapacityStrategyParam> carryCapacityStrategyParamList) {
UUID uuid = UUID.randomUUID();
if(4!=carryCapacityStrategyParamList.size()){
throw new BusinessException(AdvanceResponseEnum.UNCOMPLETE_STRATEGY);
}
List<CarryCapacityStrategyPO> collect = carryCapacityStrategyParamList.stream().map(temp -> {
CarryCapacityStrategyPO po = new CarryCapacityStrategyPO();
BeanUtils.copyProperties(temp, po);
po.setId(uuid.toString());
//新增客户策略;
po.setProtoFlag(2);
po.setUserFlag(1);
return po;
}).collect(Collectors.toList());
boolean b = this.saveBatch(collect);
return b;
}
}

View File

@@ -60,6 +60,7 @@ public class CarryCapacityUserPOServiceImpl extends ServiceImpl<CarryCapacityUse
Page<CarryCapacityUserPO> returnpage = new Page<> (pageParm.getPageNum ( ), pageParm.getPageSize ( ));
QueryWrapper<CarryCapacityUserPO> queryWrapper = new QueryWrapper<>();
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())
.between(StringUtils.isNotBlank(pageParm.getStartTime()) && StringUtils.isNotBlank(pageParm.getEndTime()) ,CarryCapacityUserPO::getCreateTime,pageParm.getStartTime(),pageParm.getEndTime()).
orderByDesc(CarryCapacityUserPO::getCreateTime);

View File

@@ -1,8 +1,5 @@
package com.njcn.advance.service.carrycapacity.impl;
import cn.afterturn.easypoi.excel.ExcelImportUtil;
import cn.afterturn.easypoi.excel.entity.ImportParams;
import cn.afterturn.easypoi.excel.entity.result.ExcelImportResult;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.date.LocalDateTimeUtil;
import cn.hutool.json.JSONUtil;
@@ -19,6 +16,7 @@ import com.njcn.advance.pojo.carrycapacity.po.CarryCapacityUserPO;
import com.njcn.advance.pojo.carrycapacity.vo.*;
import com.njcn.advance.service.carrycapacity.*;
import com.njcn.advance.utils.CZNLPG;
import com.njcn.advance.utils.EasyExcelUtil;
import com.njcn.advance.utils.Utils;
import com.njcn.common.pojo.exception.BusinessException;
import com.njcn.common.utils.PubUtils;
@@ -43,20 +41,22 @@ import com.njcn.system.enums.DicDataEnum;
import com.njcn.system.pojo.po.DictData;
import lombok.RequiredArgsConstructor;
import lombok.SneakyThrows;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile;
import java.io.InputStream;
import java.time.LocalDate;
import java.time.LocalTime;
import java.time.ZoneId;
import java.time.format.DateTimeFormatter;
import java.time.temporal.ChronoUnit;
import java.util.*;
import java.util.stream.Collectors;
import java.util.stream.Stream;
import static com.njcn.advance.pojo.carrycapacity.vo.CarryCapacityStrategyVO.CarryCapacityStrategysingleVO;
/**
* Description:
* Date: 2024/1/31 14:42【需求编号】
@@ -80,7 +80,7 @@ public class CarryCapcityServiceImpl implements CarryCapcityService {
private final RedisUtil redisUtil;
private final CarryCapacityResultPOService carryCapacityResultPOService;
private final CarryCapacityUserPOService carryCapacityUserPOService;
private static final double DEFAULTVALUE=3.1415926;
private static final double DEFAULTVALUE=31415.926;
private final FileStorageUtil fileStorageUtil;
@@ -260,12 +260,8 @@ public class CarryCapcityServiceImpl implements CarryCapcityService {
if(CollectionUtil.isEmpty(dataHarmPowerPList)){
throw new BusinessException(AdvanceResponseEnum.DATA_NOT_FOUND);
}else {
//数据清洗取近一周的配变每日9时~15时段的负载率数据中概率95%小值所对应时刻的有功功率和无功功率值
List<Double> listP = dataHarmPowerPList.stream().filter(temp -> Utils.isTimeInRange(temp.getTime(), LocalTime.of(9, 0), LocalTime.of(15, 0)))
.filter(temp -> temp.getValue()!=DEFAULTVALUE&&Objects.nonNull(temp.getValue()))
.map(CarryCapcityData::getValue)
.collect(Collectors.toList());
if (listP.size()<minDataNum){
if (!checkData(dataHarmPowerPList,startDate,endDate,timeInterval)){
throw new BusinessException(AdvanceResponseEnum.DATA_NOT_FOUND);
}
@@ -280,55 +276,45 @@ public class CarryCapcityServiceImpl implements CarryCapcityService {
"' and time >= '" + startTime + "'and time <= '" +endTime + "'"+"group by time("+timeInterval+"m) ,* fill(3.1415926)"+InfluxDBPublicParam.TIME_ZONE;
dataHarmPowerQList = dataHarmPowerQMapper.getSqlResult(SqlQ1);
//数据缺失填补
//数据校验
linearInterpolation(dataHarmPowerQList);
redisUtil.saveByKey(lineId+"#"+LocalDateTimeUtil.format(startDate, formatter)+"#"+LocalDateTimeUtil.format(endDate, formatter)+"#"+"Q",
dataHarmPowerQList);
if(CollectionUtil.isEmpty(dataHarmPowerQList)){
throw new BusinessException(AdvanceResponseEnum.DATA_NOT_FOUND);
}else {
if (!checkData(dataHarmPowerQList,startDate,endDate,timeInterval)){
throw new BusinessException(AdvanceResponseEnum.DATA_NOT_FOUND);
}
}
linearInterpolation(dataHarmPowerQList);
// redisUtil.saveByKey(lineId+"#"+LocalDateTimeUtil.format(startDate, formatter)+"#"+LocalDateTimeUtil.format(endDate, formatter)+"#"+"Q",
// dataHarmPowerQList);
//电流
// StringBuilder stringBuilder1 = new StringBuilder();
// StringBuilder stringBuilder2 = new StringBuilder();
// for (int i = 2; i <=25 ; i++) {
// if (i==25){
// stringBuilder1.append("mean(i_").append(i).append(") AS i_").append(i);
// } else {
// stringBuilder1.append("mean(i_").append(i).append(") AS i_").append(i).append(",");
// }
// }
// stringBuilder2.append ("line_id='").append (lineId).append ("' and ").append(InfluxDBPublicParam.TIME + " >= '").append(startTime).append("' and ").append(InfluxDBPublicParam.TIME).append(" <= '").append(endTime).append("' group by time(").append(timeInterval).append("m),* fill(3.1415926) ").append(InfluxDBPublicParam.TIME_ZONE);
// String sqlI1 = "select "+stringBuilder1+" from "+ InfluxDBPublicParam.DATA_I+" where value_type='CP95' and phasic_type!='T' and "+stringBuilder2;
// dataIList = dataIMapper.getSqlResult(sqlI1);
// //数据校验
// //数据缺失填补
// linearInterpolationI(dataIList);
// redisUtil.saveByKey(lineId+"#"+LocalDateTimeUtil.format(startDate, formatter)+"#"+LocalDateTimeUtil.format(endDate, formatter)+"#"+"I",
// dataIList);
//前2周的数据用于计算首端电流模型参数
String forwardStartTime = LocalDateTimeUtil.format(queryParam.getStartTime()
// .plusWeeks(-1)
.plusWeeks(-1)
, formatter) + " 00:00:00";
String forwardEndTime = LocalDateTimeUtil.format(queryParam.getEndTime()
// .plusWeeks(-1)
.plusWeeks(-1)
, formatter) + " 23:59:00";
String SqlP2 = "select mean(p)*1000 as value from data_harmpower_p where value_type='CP95' and phasic_type!='T' and line_id='"+lineId+
"' and time >= '" + forwardStartTime + "'and time <= '" +forwardEndTime + "'"+"group by time("+timeInterval+"m) ,* fill(3.1415926)"+InfluxDBPublicParam.TIME_ZONE;
dataHarmPowerP2List = dataHarmPowerPMapper.getSqlResult(SqlP2);
//数据校验
// if(CollectionUtil.isEmpty(dataHarmPowerPList2)){
// throw new BusinessException(AdvanceResponseEnum.DATA_NOT_FOUND);
// }else {
// //数据清洗取近一周的配变每日9时~15时段的负载率数据中概率95%小值所对应时刻的有功功率和无功功率值
// List<Double> listP = dataHarmPowerPList2.stream().filter(temp -> Utils.isTimeInRange(temp.getTime(), LocalTime.of(9, 0), LocalTime.of(15, 0)))
// .filter(temp -> temp.getValue()!=DEFAULTVALUE&&Objects.nonNull(temp.getValue()))
// .map(CarryCapcityData::getValue)
// .collect(Collectors.toList());
// if (listP.size()<minDataNum){
// throw new BusinessException(AdvanceResponseEnum.DATA_NOT_FOUND);
// }
// }
if(CollectionUtil.isEmpty(dataHarmPowerP2List)){
throw new BusinessException(AdvanceResponseEnum.DATA_NOT_FOUND);
}else {
if (!checkData(dataHarmPowerP2List,startDate2,endDate2,timeInterval)){
throw new BusinessException(AdvanceResponseEnum.DATA_NOT_FOUND);
}
}
//数据缺失填补
linearInterpolation(dataHarmPowerP2List);
@@ -338,6 +324,17 @@ public class CarryCapcityServiceImpl implements CarryCapcityService {
"' and time >= '" + forwardStartTime + "'and time <= '" +forwardEndTime + "'"+"group by time("+timeInterval+"m) ,* fill(3.1415926)"+InfluxDBPublicParam.TIME_ZONE;
dataHarmPowerQ2List = dataHarmPowerQMapper.getSqlResult(SqlQ2);
//数据校验
//数据校验
if(CollectionUtil.isEmpty(dataHarmPowerQ2List)){
throw new BusinessException(AdvanceResponseEnum.DATA_NOT_FOUND);
}else {
if (!checkData(dataHarmPowerQ2List,startDate2,endDate2,timeInterval)){
throw new BusinessException(AdvanceResponseEnum.DATA_NOT_FOUND);
}
}
//数据缺失填补
linearInterpolation(dataHarmPowerQ2List);
@@ -347,17 +344,26 @@ public class CarryCapcityServiceImpl implements CarryCapcityService {
"' and time >= '" + forwardStartTime + "'and time <= '" +forwardEndTime + "'"+"group by time("+timeInterval+"m) ,* fill(3.1415926)"+InfluxDBPublicParam.TIME_ZONE;
dataHarmPowerU2List = dataVMapper.getSqlResult(SqlU2);
//数据校验
//数据校验
if(CollectionUtil.isEmpty(dataHarmPowerU2List)){
throw new BusinessException(AdvanceResponseEnum.DATA_NOT_FOUND);
}else {
if (!checkData(dataHarmPowerU2List,startDate2,endDate2,timeInterval)){
throw new BusinessException(AdvanceResponseEnum.DATA_NOT_FOUND);
}
}
//数据缺失填补
linearInterpolation(dataHarmPowerU2List);
redisUtil.saveByKey(lineId+"#"+LocalDateTimeUtil.format(startDate2, formatter)+"#"+LocalDateTimeUtil.format(endDate2, formatter)+"#"+"P",
dataHarmPowerP2List);
redisUtil.saveByKey(lineId+"#"+LocalDateTimeUtil.format(startDate2, formatter)+"#"+LocalDateTimeUtil.format(endDate2, formatter)+"#"+"Q",
dataHarmPowerQ2List);
redisUtil.saveByKey(lineId+"#"+LocalDateTimeUtil.format(startDate2, formatter)+"#"+LocalDateTimeUtil.format(endDate2, formatter)+"#"+"U",
dataHarmPowerU2List);
redisUtil.saveByKey(lineId+"#"+LocalDateTimeUtil.format(startDate, formatter)+"#"+LocalDateTimeUtil.format(endDate, formatter)+"#"+"I",
dataIList);
// redisUtil.saveByKey(lineId+"#"+LocalDateTimeUtil.format(startDate2, formatter)+"#"+LocalDateTimeUtil.format(endDate2, formatter)+"#"+"P",
// dataHarmPowerP2List);
// redisUtil.saveByKey(lineId+"#"+LocalDateTimeUtil.format(startDate2, formatter)+"#"+LocalDateTimeUtil.format(endDate2, formatter)+"#"+"Q",
// dataHarmPowerQ2List);
// redisUtil.saveByKey(lineId+"#"+LocalDateTimeUtil.format(startDate2, formatter)+"#"+LocalDateTimeUtil.format(endDate2, formatter)+"#"+"U",
// dataHarmPowerU2List);
// redisUtil.saveByKey(lineId+"#"+LocalDateTimeUtil.format(startDate, formatter)+"#"+LocalDateTimeUtil.format(endDate, formatter)+"#"+"I",
// dataIList);
}
@@ -406,7 +412,12 @@ public class CarryCapcityServiceImpl implements CarryCapcityService {
Integer timeInterval = data.getTimeInterval();
// Integer timeInterval =10;
//根据时间间隔算出最低数据量 7天*6小时*60分钟*3项*90%/时间间隔
int minDataNum = 7*6*60*3*90/(100*timeInterval);
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
LocalDate startDate = queryParam.getStartTime();
LocalDate endDate = queryParam.getEndTime();
String startTime = LocalDateTimeUtil.format(queryParam.getStartTime(), formatter) + " 00:00:00";
String endTime = LocalDateTimeUtil.format(queryParam.getEndTime(), formatter) + " 23:59:00";
@@ -415,6 +426,15 @@ public class CarryCapcityServiceImpl implements CarryCapcityService {
String SqlQ1 = "select mean(q)*1000 as value from data_harmpower_q where value_type='CP95' and phasic_type!='T' and line_id='"+lineId+
"' and time >= '" + startTime + "'and time <= '" +endTime + "'"+"group by time("+timeInterval+"m) ,* fill(3.1415926)"+InfluxDBPublicParam.TIME_ZONE;
List<CarryCapcityData> dataHarmPowerList = dataHarmPowerQMapper.getSqlResult(SqlQ1);
if(CollectionUtil.isEmpty(dataHarmPowerList)){
throw new BusinessException(AdvanceResponseEnum.DATA_NOT_FOUND);
}else {
if (!checkData(dataHarmPowerList,startDate,endDate,timeInterval)){
throw new BusinessException(AdvanceResponseEnum.DATA_NOT_FOUND);
}
}
//数据缺失填补
linearInterpolation(dataHarmPowerList);
carryCapacityDataQVO.setData(dataHarmPowerList);
@@ -448,6 +468,8 @@ public class CarryCapcityServiceImpl implements CarryCapcityService {
//时间间隔
Integer timeInterval = data.getTimeInterval();
// Integer timeInterval =10;
//根据时间间隔算出最低数据量 7天*6小时*60分钟*3项*90%/时间间隔
int minDataNum = 7*6*60*3*90/(100*timeInterval);
LocalDate startDate = queryParam.getStartTime();
LocalDate endDate = queryParam.getEndTime();
@@ -468,6 +490,20 @@ public class CarryCapcityServiceImpl implements CarryCapcityService {
stringBuilder2.append ("line_id='").append (lineId).append ("' and ").append(InfluxDBPublicParam.TIME + " >= '").append(startTime).append("' and ").append(InfluxDBPublicParam.TIME).append(" <= '").append(endTime).append("' group by time(").append(timeInterval).append("m),* fill(3.1415926) ").append(InfluxDBPublicParam.TIME_ZONE);
String sqlI1 = "select "+stringBuilder1+" from "+ InfluxDBPublicParam.DATA_I+" where value_type='CP95' and phasic_type!='T' and "+stringBuilder2;
List<DataI> dataI = dataIMapper.getSqlResult(sqlI1);
if(CollectionUtil.isEmpty(dataI)){
throw new BusinessException(AdvanceResponseEnum.DATA_NOT_FOUND);
}else {
List<CarryCapcityData> i_list = dataI.stream().map(temp -> {
CarryCapcityData carryCapcityData = new CarryCapcityData();
BeanUtils.copyProperties(temp, carryCapcityData);
carryCapcityData.setValue(temp.getI2());
return carryCapcityData;
}).collect(Collectors.toList());
if (!checkData(i_list,startDate,endDate,timeInterval)){
throw new BusinessException(AdvanceResponseEnum.DATA_NOT_FOUND);
}
}
//数据缺失填补
linearInterpolationI(dataI);
List<CarryCapcityData> i_list = dataI.stream().map(temp -> {
@@ -604,16 +640,23 @@ public class CarryCapcityServiceImpl implements CarryCapcityService {
//1-安全2-III级预警3-II级预警4-I 级预警,依次执行策略看是否符合
for (int i = 1; i < 5; i++) {
int finalI = i;
boolean b = StrategyReslut(carryCapacityStrategyVOList, i, 1, safe_count);
boolean b1 = StrategyReslut(carryCapacityStrategyVOList, i, 2, warn_count3);
boolean b2 = StrategyReslut(carryCapacityStrategyVOList, i, 3, warn_count2);
boolean b3 = StrategyReslut(carryCapacityStrategyVOList, i, 4, warn_count1);
if(b&&b1&&b2&&b3){
boolean b = StrategyReslut(carryCapacityStrategyVOList, i,safe_count, warn_count1, warn_count2, warn_count3 );
if(b){
carryCapacityDResultVO.setReslutLevel(i);
break;
}
}
CarryCapacityResultPO carryCapacityResultPO = new CarryCapacityResultPO();
List<CarryCapacityResultPO> list1 = carryCapacityResultPOService.lambdaQuery().eq(CarryCapacityResultPO::getLineId, calParam.getLineId())
.eq(CarryCapacityResultPO::getUserId, calParam.getUserId())
.eq(CarryCapacityResultPO::getStartTime, calParam.getStartTime())
.eq(CarryCapacityResultPO::getEndTime, calParam.getEndTime())
.eq(CarryCapacityResultPO::getStatus, 1).list();
if (CollectionUtil.isNotEmpty(list1)) {
throw new BusinessException(AdvanceResponseEnum.EXISTENCE_EVALUATION_RESULT);
}
carryCapacityResultPO.setLineId(calParam.getLineId());
carryCapacityResultPO.setUserId(calParam.getUserId());
@@ -681,7 +724,7 @@ public class CarryCapcityServiceImpl implements CarryCapcityService {
//前一周的数据
ExcelDataDTO excelDataDTO = ParsingFile(startDate, endDate, excelDataParam.getFile());
ExcelDataDTO excelDataDTO = ParsingFile(startDate, endDate, excelDataParam.getFile().getInputStream());
List<CarryCapcityData> dataHarmPowerPList =excelDataDTO.getDataHarmPowerPList();
List<CarryCapcityData> dataHarmPowerQList =excelDataDTO.getDataHarmPowerQList();
List<DataI> dataIList =excelDataDTO.getDataIList();
@@ -690,74 +733,62 @@ public class CarryCapcityServiceImpl implements CarryCapcityService {
List<CarryCapcityData> dataHarmPowerQ2List =excelDataDTO.getDataHarmPowerQ2List();
List<CarryCapcityData> dataHarmPowerUList =excelDataDTO.getDataHarmPowerU2List();
//数据校验
//数据校验
if(CollectionUtil.isEmpty(dataHarmPowerPList)){
throw new BusinessException(AdvanceResponseEnum.DATA_NOT_FOUND);
}else {
//数据清洗取近一周的配变每日9时~15时段的负载率数据中概率95%小值所对应时刻的有功功率和无功功率值
List<Double> tempList = dataHarmPowerPList.stream().filter(temp -> Utils.isTimeInRange(temp.getTime(), LocalTime.of(9, 0), LocalTime.of(15, 0)))
.filter(temp -> temp.getValue()!=DEFAULTVALUE&&Objects.nonNull(temp.getValue()))
.map(CarryCapcityData::getValue)
.collect(Collectors.toList());
if (tempList.size()<minDataNum){
throw new BusinessException(AdvanceResponseEnum.DATA_UNDERRUN);
if (!checkData(dataHarmPowerPList,startDate,endDate,timeInterval)){
throw new BusinessException(AdvanceResponseEnum.DATA_NOT_FOUND);
}
}
linearInterpolation(dataHarmPowerPList);
//数据校验
if(CollectionUtil.isEmpty(dataHarmPowerP2List)){
throw new BusinessException(AdvanceResponseEnum.DATA_NOT_FOUND);
}else {
//数据清洗取近一周的配变每日9时~15时段的负载率数据中概率95%小值所对应时刻的有功功率和无功功率值
List<Double> tempList = dataHarmPowerP2List.stream().filter(temp -> Utils.isTimeInRange(temp.getTime(), LocalTime.of(9, 0), LocalTime.of(15, 0)))
.filter(temp -> temp.getValue()!=DEFAULTVALUE&&Objects.nonNull(temp.getValue()))
.map(CarryCapcityData::getValue)
.collect(Collectors.toList());
if (tempList.size()<minDataNum){
throw new BusinessException(AdvanceResponseEnum.DATA_UNDERRUN);
if (!checkData(dataHarmPowerP2List,startDate2,endDate2,timeInterval)){
throw new BusinessException(AdvanceResponseEnum.DATA_NOT_FOUND);
}
}
linearInterpolation(dataHarmPowerP2List);
//数据校验
if(CollectionUtil.isEmpty(dataHarmPowerQList)){
throw new BusinessException(AdvanceResponseEnum.DATA_NOT_FOUND);
}else {
//数据清洗取近一周的配变每日9时~15时段的负载率数据中概率95%小值所对应时刻的有功功率和无功功率值
List<Double> tempList = dataHarmPowerQList.stream().filter(temp -> Utils.isTimeInRange(temp.getTime(), LocalTime.of(9, 0), LocalTime.of(15, 0)))
.filter(temp -> temp.getValue()!=DEFAULTVALUE&&Objects.nonNull(temp.getValue()))
.map(CarryCapcityData::getValue)
.collect(Collectors.toList());
if (tempList.size()<minDataNum){
throw new BusinessException(AdvanceResponseEnum.DATA_UNDERRUN);
if (!checkData(dataHarmPowerQList,startDate,endDate,timeInterval)){
throw new BusinessException(AdvanceResponseEnum.DATA_NOT_FOUND);
}
}
linearInterpolation(dataHarmPowerQList);
//数据校验
if(CollectionUtil.isEmpty(dataHarmPowerQ2List)){
throw new BusinessException(AdvanceResponseEnum.DATA_NOT_FOUND);
}else {
//数据清洗取近一周的配变每日9时~15时段的负载率数据中概率95%小值所对应时刻的有功功率和无功功率值
List<Double> tempList = dataHarmPowerQ2List.stream().filter(temp -> Utils.isTimeInRange(temp.getTime(), LocalTime.of(9, 0), LocalTime.of(15, 0)))
.filter(temp -> temp.getValue()!=DEFAULTVALUE&&Objects.nonNull(temp.getValue()))
.map(CarryCapcityData::getValue)
.collect(Collectors.toList());
if (tempList.size()<minDataNum){
throw new BusinessException(AdvanceResponseEnum.DATA_UNDERRUN);
if (!checkData(dataHarmPowerQ2List,startDate2,endDate2,timeInterval)){
throw new BusinessException(AdvanceResponseEnum.DATA_NOT_FOUND);
}
}
linearInterpolation(dataHarmPowerQ2List);
//数据校验
if(CollectionUtil.isEmpty(dataHarmPowerUList)){
throw new BusinessException(AdvanceResponseEnum.DATA_NOT_FOUND);
}else {
//数据清洗取近一周的配变每日9时~15时段的负载率数据中概率95%小值所对应时刻的有功功率和无功功率值
List<Double> tempList = dataHarmPowerUList.stream().filter(temp -> Utils.isTimeInRange(temp.getTime(), LocalTime.of(9, 0), LocalTime.of(15, 0)))
.filter(temp -> temp.getValue()!=DEFAULTVALUE&&Objects.nonNull(temp.getValue()))
.map(CarryCapcityData::getValue)
.collect(Collectors.toList());
if (tempList.size()<minDataNum){
throw new BusinessException(AdvanceResponseEnum.DATA_UNDERRUN);
if (!checkData(dataHarmPowerUList,startDate2,endDate2,timeInterval)){
throw new BusinessException(AdvanceResponseEnum.DATA_NOT_FOUND);
}
}
linearInterpolation(dataHarmPowerUList);
@@ -765,13 +796,15 @@ public class CarryCapcityServiceImpl implements CarryCapcityService {
if(CollectionUtil.isEmpty(dataIList)){
throw new BusinessException(AdvanceResponseEnum.DATA_NOT_FOUND);
}else {
//数据清洗取近一周的配变每日9时~15时段的负载率数据中概率95%小值所对应时刻的有功功率和无功功率值
List<Double> tempList = dataIList.stream().filter(temp -> Utils.isTimeInRange(temp.getTime(), LocalTime.of(9, 0), LocalTime.of(15, 0)))
.filter(temp -> temp.getI2()!=DEFAULTVALUE&&Objects.nonNull(temp.getI2()))
.map(DataI::getI2)
.collect(Collectors.toList());
if (tempList.size()<minDataNum){
throw new BusinessException(AdvanceResponseEnum.DATA_UNDERRUN);
List<CarryCapcityData> i_list = dataIList.stream().map(temp -> {
CarryCapcityData carryCapcityData = new CarryCapcityData();
BeanUtils.copyProperties(temp, carryCapcityData);
carryCapcityData.setValue(temp.getI2());
return carryCapcityData;
}).collect(Collectors.toList());
if (!checkData(i_list,startDate,endDate,timeInterval)){
throw new BusinessException(AdvanceResponseEnum.DATA_NOT_FOUND);
}
}
linearInterpolationI(dataIList);
@@ -895,6 +928,10 @@ public class CarryCapcityServiceImpl implements CarryCapcityService {
@Override
public CarryCapacityDResultVO carryCapacityEvaluate(CarryCapacityEvaluateParam calParam) {
CarryCapacityDResultVO vo = new CarryCapacityDResultVO();
List<CarryCapacityDResultVO.CarryCapacityIResult> carryCapacityIResultList = new ArrayList<>();
String userType = calParam.getUserList().get(0).getUserType();
String code = dicDataFeignClient.getDicDataById(userType).getData().getCode();
//用户协议容量
double sumCapacity = 0.00;
if (CollectionUtil.isEmpty(calParam.getUserList())){
@@ -907,7 +944,26 @@ public class CarryCapcityServiceImpl implements CarryCapcityService {
}
double rate = sumCapacity / calParam.getShortCapacity();
vo.setFirstResult(rate*100);
if(rate>0.001){
CarryCapacityResultPO carryCapacityResultPO = new CarryCapacityResultPO();
carryCapacityResultPO.setFirstResult(rate*100);
carryCapacityResultPO.setUserId( String.join(",", calParam.getUserList().stream().map(CarryCapacityUserVO::getUserId).collect(Collectors.toList())));
carryCapacityResultPO.setEvaluateDate(LocalDate.now());
carryCapacityResultPO.setEvaluateType(userType);
carryCapacityResultPO.setStatus(1);
carryCapacityResultPO.setPtType(calParam.getPtType());
carryCapacityResultPO.setConnectionMode(calParam.getConnectionMode());
carryCapacityResultPO.setK(calParam.getK());
carryCapacityResultPO.setUserMode(calParam.getUserMode());
carryCapacityResultPO.setScale(calParam.getScale());
carryCapacityResultPO.setShortCapacity(calParam.getShortCapacity());
carryCapacityResultPO.setDeviceCapacity(calParam.getDeviceCapacity());
carryCapacityResultPO.setStatus(1);
if(rate<0.001){
carryCapacityResultPO.setReslutLevel(6);
carryCapacityResultPOService.save(carryCapacityResultPO);
return vo;
}
@@ -934,9 +990,7 @@ public class CarryCapcityServiceImpl implements CarryCapcityService {
Overlimit overlimit = new Overlimit();
COverlimitUtil.iHarm(overlimit,Float.valueOf(sacaleValue),(float) sumCapacity,calParam.getDeviceCapacity(),calParam.getShortCapacity());
String userType = calParam.getUserList().get(0).getUserType();
String code = dicDataFeignClient.getDicDataById(userType).getData().getCode();
List<CarryCapacityDResultVO.CarryCapacityIResult> carryCapacityIResultList = new ArrayList<>();
if(DicDataEnum.Charging_Station_Users.getCode().equals(code)){
integerList.stream().forEach(temp->{
@@ -1004,22 +1058,16 @@ public class CarryCapcityServiceImpl implements CarryCapcityService {
});
}
vo.setIResultList(carryCapacityIResultList);
CarryCapacityResultPO carryCapacityResultPO = new CarryCapacityResultPO();
carryCapacityResultPO.setFirstResult(rate*100);
carryCapacityResultPO.setIResultList(JSONUtil.toJsonStr(carryCapacityIResultList));
carryCapacityResultPO.setEvaluateDate(LocalDate.now());
carryCapacityResultPO.setEvaluateType(userType);
List<CarryCapacityDResultVO.CarryCapacityIResult> list = JSONUtil.toList(JSONUtil.toJsonStr(carryCapacityIResultList), CarryCapacityDResultVO.CarryCapacityIResult.class);
carryCapacityResultPO.setStatus(1);
carryCapacityResultPOService.save(carryCapacityResultPO);
return vo;
}
public static ExcelDataDTO ParsingFile(LocalDate startDate, LocalDate endDate, MultipartFile file) throws Exception{
public static ExcelDataDTO ParsingFile(LocalDate startDate, LocalDate endDate, InputStream is) throws Exception{
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
List<CarryCapcityData> dataHarmPowerPList = new ArrayList<>();
List<CarryCapcityData> dataHarmPowerQList= new ArrayList<>();
@@ -1035,76 +1083,80 @@ public class CarryCapcityServiceImpl implements CarryCapcityService {
List<CarryCapcityData> dataHarmPowerU2List= new ArrayList<>();
try {
// 根据file得到Workbook,主要是要根据这个对象获取,传过来的excel有几个sheet页
Workbook workbook = new XSSFWorkbook(file.getInputStream());
StringBuilder sb=new StringBuilder();
ImportParams params = new ImportParams();
// 循环工作表Sheet
for (int numSheet = 0; numSheet < workbook.getNumberOfSheets(); numSheet++) {
// 表头在第几行
params.setTitleRows(0);
// 距离表头中间有几行不要的数据
params.setStartRows(0);
// 第几个sheet页
params.setStartSheetIndex(numSheet);
// 验证数据
params.setNeedVerify(true);
if(numSheet==0){
ExcelImportResult<CarryCapcityDataIEexcel> result =ExcelImportUtil.importExcelMore(file.getInputStream(),
CarryCapcityDataIEexcel.class, params);
List<CarryCapcityDataEexcel> objects = EasyExcelUtil.syncReadModel( is, CarryCapcityDataEexcel.class, 0,3);
List<CarryCapcityDataIEexcel > iEexcelList = new ArrayList<>();
List<CarryCapcityDataVEexcel> vEexcelList = new ArrayList<>();
List<CarryCapcityDataPEexcel> pEexcelList = new ArrayList<>();
List<CarryCapcityDataQEexcel> qEexcelList = new ArrayList<>();
objects.stream().forEach(temp->{
CarryCapcityDataIEexcel carryCapcityDataIEexcel = new CarryCapcityDataIEexcel();
CarryCapcityDataVEexcel carryCapcityDataVEexcel = new CarryCapcityDataVEexcel();
CarryCapcityDataPEexcel carryCapcityDataPEexcel = new CarryCapcityDataPEexcel();
CarryCapcityDataQEexcel carryCapcityDataQEexcel = new CarryCapcityDataQEexcel();
List<CarryCapcityDataIEexcel > successList = result.getList();
List<DataI> collect = successList.stream().map(CarryCapcityDataIEexcel::excelToPO).flatMap(Collection::stream).collect(Collectors.toList());
dataIList = collect.stream().filter(
item -> Utils.isTimeInRange(item.getTime(), startDate, endDate)
).collect(Collectors.toList());
BeanUtils.copyProperties(temp,carryCapcityDataIEexcel);
carryCapcityDataIEexcel.setTime(temp.getTime().atZone(ZoneId.systemDefault()).toInstant());
carryCapcityDataIEexcel.setValueType("CP95");
carryCapcityDataVEexcel.setTime(temp.getTime().atZone(ZoneId.systemDefault()).toInstant());
carryCapcityDataVEexcel.setValueType("CP95");
carryCapcityDataVEexcel.setValue_a(Double.valueOf(temp.getU_a()));
carryCapcityDataVEexcel.setValue_b(Double.valueOf(temp.getU_b()));
carryCapcityDataVEexcel.setValue_c(Double.valueOf(temp.getU_c()));
}else if(numSheet==1){
ExcelImportResult<CarryCapcityDataVEexcel> result = ExcelImportUtil.importExcelMore(file.getInputStream(),
CarryCapcityDataVEexcel.class, params);
carryCapcityDataPEexcel.setTime(temp.getTime().atZone(ZoneId.systemDefault()).toInstant());
carryCapcityDataPEexcel.setValueType("CP95");
carryCapcityDataPEexcel.setValue_a(Double.valueOf(temp.getP_a()));
carryCapcityDataPEexcel.setValue_b(Double.valueOf(temp.getP_b()));
carryCapcityDataPEexcel.setValue_c(Double.valueOf(temp.getP_c()));
// 校验合格的数据
List<CarryCapcityDataVEexcel> successList = result.getList();
List<CarryCapcityData> collect = successList.stream().map(CarryCapcityDataVEexcel::excelToPO).flatMap(Collection::stream).collect(Collectors.toList());
// 业务逻辑
dataHarmPowerU2List = collect.stream().filter(
item -> Utils.isTimeInRange(item.getTime(), startDate2, endDate2)
).collect(Collectors.toList());
}
else if(numSheet==2){
ExcelImportResult<CarryCapcityDataPEexcel> result = ExcelImportUtil.importExcelMore(file.getInputStream(),
CarryCapcityDataPEexcel.class, params);
carryCapcityDataQEexcel.setTime(temp.getTime().atZone(ZoneId.systemDefault()).toInstant());
carryCapcityDataQEexcel.setValueType("CP95");
carryCapcityDataQEexcel.setValue_a(Double.valueOf(temp.getQ_a()));
carryCapcityDataQEexcel.setValue_b(Double.valueOf(temp.getQ_b()));
carryCapcityDataQEexcel.setValue_c(Double.valueOf(temp.getQ_c()));
iEexcelList.add(carryCapcityDataIEexcel);
vEexcelList.add(carryCapcityDataVEexcel);
pEexcelList.add(carryCapcityDataPEexcel);
qEexcelList.add(carryCapcityDataQEexcel);
// 校验合格的数据
List<CarryCapcityDataPEexcel> successList = result.getList();
List<CarryCapcityData> collect = successList.stream().map(CarryCapcityDataPEexcel::excelToPO).flatMap(Collection::stream).collect(Collectors.toList());
dataHarmPowerPList = collect.stream().filter(
item -> Utils.isTimeInRange(item.getTime(), startDate, endDate)
).collect(Collectors.toList());
dataHarmPowerP2List = collect.stream().filter(
item -> Utils.isTimeInRange(item.getTime(), startDate2, endDate2)
).collect(Collectors.toList());
});
// 业务逻辑
}
else if(numSheet==3){
ExcelImportResult<CarryCapcityDataQEexcel> result = ExcelImportUtil.importExcelMore(file.getInputStream(),
CarryCapcityDataQEexcel.class, params);
// 校验合格的数据
List<CarryCapcityDataQEexcel> successList = result.getList();
List<CarryCapcityData> collect = successList.stream().map(CarryCapcityDataQEexcel::excelToPO).flatMap(Collection::stream).collect(Collectors.toList());
dataHarmPowerQList = collect.stream().filter(
item -> Utils.isTimeInRange(item.getTime(), startDate, endDate)
).collect(Collectors.toList());
dataHarmPowerQ2List = collect.stream().filter(
item -> Utils.isTimeInRange(item.getTime(), startDate2, endDate2)
).collect(Collectors.toList());
// 业务逻辑
}
}
List<DataI> collect = iEexcelList.stream().map(CarryCapcityDataIEexcel::excelToPO).flatMap(Collection::stream).collect(Collectors.toList());
dataIList = collect.stream().filter(
item -> Utils.isTimeInRange(item.getTime(), startDate, endDate)
).collect(Collectors.toList());
// 校验合格的数据
List<CarryCapcityData> collect2 = vEexcelList.stream().map(CarryCapcityDataVEexcel::excelToPO).flatMap(Collection::stream).collect(Collectors.toList());
// 业务逻辑
dataHarmPowerU2List = collect2.stream().filter(
item -> Utils.isTimeInRange(item.getTime(), startDate2, endDate2)
).collect(Collectors.toList());
// 校验合格的数据
List<CarryCapcityData> collect3 = pEexcelList.stream().map(CarryCapcityDataPEexcel::excelToPO).flatMap(Collection::stream).collect(Collectors.toList());
dataHarmPowerPList = collect3.stream().filter(
item -> Utils.isTimeInRange(item.getTime(), startDate, endDate)
).collect(Collectors.toList());
dataHarmPowerP2List = collect3.stream().filter(
item -> Utils.isTimeInRange(item.getTime(), startDate2, endDate2)
).collect(Collectors.toList());
List<CarryCapcityData> collect4 = qEexcelList.stream().map(CarryCapcityDataQEexcel::excelToPO).flatMap(Collection::stream).collect(Collectors.toList());
dataHarmPowerQList = collect4.stream().filter(
item -> Utils.isTimeInRange(item.getTime(), startDate, endDate)
).collect(Collectors.toList());
dataHarmPowerQ2List = collect4.stream().filter(
item -> Utils.isTimeInRange(item.getTime(), startDate2, endDate2)
).collect(Collectors.toList());
} catch (Exception e) {
throw new BusinessException(AdvanceResponseEnum.DOCUMENT_FORMAT_ERROR);
}
@@ -1285,14 +1337,67 @@ public class CarryCapcityServiceImpl implements CarryCapcityService {
throw new IllegalArgumentException("无效的操作符");
}
}
private static boolean StrategyReslut(List<CarryCapacityStrategyVO> carryCapacityStrategyVOList, int result_level, int index_result_level,int result_count) {
private static boolean StrategyReslut(List<CarryCapacityStrategyVO> carryCapacityStrategyVOList, int result_level, int safe_count,int warn_count1,int warn_count2,int warn_count3) {
CarryCapacityStrategyVO carryCapacityStrategyVO = carryCapacityStrategyVOList.stream()
.filter(temp -> temp.getResult() == result_level)
.filter(temp -> temp.getIndexResult() == index_result_level)
.collect(Collectors.toList()).get(0);
boolean b1 = compareNumbers(result_count, carryCapacityStrategyVO.getCount(), carryCapacityStrategyVO.getComparisonOperators());
return b1;
//每个策略组结果
List<Boolean> list = new ArrayList<>();
List<CarryCapacityStrategysingleVO> capacityStrategysingleVOList = carryCapacityStrategyVO.getCapacityStrategysingleVOList();
capacityStrategysingleVOList.forEach(temp -> {
CarryCapacityStrategysingleVO.CarryCapacityStrategyIndexVO carryCapacityStrategyIndexVO = temp.getCarryCapacityStrategyIndexVOList().stream()
.filter(temp1 -> temp1.getIndexResult() == 1)
.collect(Collectors.toList()).get(0);
boolean b1 = compareNumbers(safe_count, carryCapacityStrategyIndexVO.getCount(), carryCapacityStrategyIndexVO.getComparisonOperators());
CarryCapacityStrategysingleVO.CarryCapacityStrategyIndexVO carryCapacityStrategyIndexVO2 = temp.getCarryCapacityStrategyIndexVOList().stream()
.filter(temp1 -> temp1.getIndexResult() == 2)
.collect(Collectors.toList()).get(0);
boolean b2 = compareNumbers(warn_count3, carryCapacityStrategyIndexVO2.getCount(), carryCapacityStrategyIndexVO2.getComparisonOperators());
CarryCapacityStrategysingleVO.CarryCapacityStrategyIndexVO carryCapacityStrategyIndexVO3 = temp.getCarryCapacityStrategyIndexVOList().stream()
.filter(temp1 -> temp1.getIndexResult() == 3)
.collect(Collectors.toList()).get(0);
boolean b3 = compareNumbers(warn_count2, carryCapacityStrategyIndexVO3.getCount(), carryCapacityStrategyIndexVO3.getComparisonOperators());
CarryCapacityStrategysingleVO.CarryCapacityStrategyIndexVO carryCapacityStrategyIndexVO4 = temp.getCarryCapacityStrategyIndexVOList().stream()
.filter(temp1 -> temp1.getIndexResult() == 4)
.collect(Collectors.toList()).get(0);
boolean b4 = compareNumbers(warn_count1, carryCapacityStrategyIndexVO4.getCount(), carryCapacityStrategyIndexVO4.getComparisonOperators());
Boolean flag =b1&&b2&&b3&&b4;
list.add(flag);
});
long count = list.stream().filter(temp -> temp == true).count();
return count>0;
}
private static boolean checkData(List<CarryCapcityData> list,LocalDate startTime,LocalDate endTime,int timeInterval){
boolean flag = false;
long daysBetween = ChronoUnit.DAYS.between(startTime, endTime);
//根据时间间隔算出最低数据量 1天*6小时*60分钟*90%/时间间隔算出一天一个的数据
int minDataNum = 1*6*60*3*80/(100*timeInterval);
//合格天数》=3通过
int days =0;
for (long i = 0; i <= daysBetween; i++) {
LocalDate currentDay = startTime.plusDays(i);
long count = list.stream()
.filter(temp -> Utils.isTimeInRange(temp.getTime(), LocalTime.of(9, 0), LocalTime.of(15, 0)))
.filter(temp -> temp.getValue()!=DEFAULTVALUE&&Objects.nonNull(temp.getValue()))
.filter(temp -> temp.getTime().atZone(ZoneId.systemDefault()).toLocalDate().equals(currentDay)).count();
if(count>=minDataNum){
days++;
}
}
if(days>=3) {
flag = true;
}
return flag;
}
}