ansteel-biz/src/main/java/com/iailab/module/ansteel/api/controller/admin/PowerController.java
@@ -3,6 +3,7 @@ import cn.hutool.core.util.NumberUtil; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.iailab.framework.common.exception.ErrorCode; import com.iailab.framework.common.exception.enums.GlobalErrorCodeConstants; import com.iailab.framework.common.pojo.CommonResult; import com.iailab.framework.common.pojo.PageResult; @@ -38,6 +39,7 @@ import java.util.*; import java.util.stream.Collectors; import static com.iailab.framework.common.pojo.CommonResult.error; import static com.iailab.framework.common.pojo.CommonResult.success; /** @@ -472,14 +474,14 @@ } @GetMapping("/control-main/list") @Operation(summary = "功率因数-管控变电站列表") @Operation(summary = "功率因数-管控变电站列表(已废弃)") public CommonResult<List<PowerControlMainDTO>> getPowerControlMainList(@RequestParam Map<String, Object> params) { List<PowerControlMainEntity> list = powerControlMainService.list(params); return success(ConvertUtils.sourceToTarget(list, PowerControlMainDTO.class)); } @PostMapping("/control-main/update") @Operation(summary = "功率因数-管控变电站修改上下限") @Operation(summary = "功率因数-管控变电站修改上下限(已废弃)") public CommonResult<Boolean> updatePowerControlMain(@RequestBody PowerControlMainDTO dto) { if (StringUtils.isBlank(dto.getId())) { return CommonResult.error(GlobalErrorCodeConstants.BAD_REQUEST); @@ -493,7 +495,7 @@ } @GetMapping("/control-det/list") @Operation(summary = "功率因数-管控功率因数详情") @Operation(summary = "功率因数-管控功率因数详情(已废弃)") public CommonResult<List<PowerControlDetDTO>> getPowerControlDetList(@RequestParam Map<String, Object> params) { List<PowerControlDetDTO> result = new ArrayList<>(); String name = (String) params.get("name"); @@ -508,18 +510,13 @@ result = ConvertUtils.sourceToTarget(list, PowerControlDetDTO.class); result.forEach(item -> { // 设置随机数据,0.8左右 Random rand = new Random(); int min = 700; int max = 900; int randomNumber = rand.nextInt(max - min + 1) + min; BigDecimal rv = new BigDecimal(randomNumber * 0.001).setScale(4, BigDecimal.ROUND_HALF_UP); /*BigDecimal rv = new BigDecimal(randomNumber * 0.001).setScale(4, BigDecimal.ROUND_HALF_UP); item.setValue(rv); if (item.getLimitL() != null && rv.compareTo(item.getLimitL()) < 0) { item.setStatus(1); } else { item.setStatus(0); } }*/ }); return success(result); } @@ -1109,20 +1106,36 @@ return success(result); } @GetMapping("/power-maxDemand/page") @Operation(summary = "负荷移植-最大需量折叠分页列表") public CommonResult<PageResult<PowerMaxDemandMainDTO>> getPowerMaxDemandMainPage(@Validated PowerMaxDemandMainPageReqVO reqVO) { PageResult<PowerMaxDemandMainDTO> page = powerMaxDemandMainService.page(reqVO); List<String> parentIds = page.getList() .stream() .map(PowerMaxDemandMainDTO::getId) .collect(Collectors.toList()); List<PowerMaxdemandDetEntity> children = powerMaxdemandDetService.selectListByRelIds(parentIds); Map<String, List<PowerMaxdemandDetEntity>> childrenMap = children.stream() .collect(Collectors.groupingBy(PowerMaxdemandDetEntity::getRelId)); page.getList().forEach( dto -> dto.setChildren(childrenMap.getOrDefault(dto.getId(), Collections.emptyList())) ); return success(BeanUtils.toBean(page, PowerMaxDemandMainDTO.class)); @PostMapping("/power-maxdemand/page") @Operation(summary = "负荷移植-最大需量发生记录分页") public CommonResult<PageResult<PowerMaxDemandMainDTO>> getPowerMaxDemandMainPage(@RequestBody PowerMaxDemandMainPageReqVO reqVO) { if (StringUtils.isBlank(reqVO.getCode())) { log.info("code is blank"); return error(GlobalErrorCodeConstants.BAD_REQUEST); } PageResult<PowerMaxdemandMainEntity> page = powerMaxDemandMainService.page(reqVO); PageResult<PowerMaxDemandMainDTO> result = BeanUtils.toBean(page, PowerMaxDemandMainDTO.class); result.getList().forEach(dto0 -> { List<PowerMaxdemandDetEntity> detList0 = powerMaxdemandDetService.selectListByRelId(dto0.getId(), dto0.getOccurTime()); dto0.setChildren(ConvertUtils.sourceToTarget(detList0, PowerMaxdemandDetDTO.class)); if (!CollectionUtils.isEmpty(dto0.getChildren())) { dto0.getChildren().forEach(dto1 -> { List<PowerMaxdemandDetEntity> detList1 = powerMaxdemandDetService.selectListByRelId(dto1.getId(), dto1.getOccurTime()); dto1.setChildren(ConvertUtils.sourceToTarget(detList1, PowerMaxdemandDetDTO.class)); }); } }); return success(result); } @PostMapping("/power-maxdemand/det-list") @Operation(summary = "负荷移植-最大需量发生记录详情") public CommonResult<List<PowerMaxdemandDetDTO>> getPowerMaxDemandDetList(@RequestParam Map<String, Object> params) { String relId = (String) params.get("relId"); if (StringUtils.isBlank(relId)) { return error(GlobalErrorCodeConstants.BAD_REQUEST); } List<PowerMaxdemandDetEntity> list = powerMaxdemandDetService.selectListByRelId(relId); return success(ConvertUtils.sourceToTarget(list, PowerMaxdemandDetDTO.class)); } } ansteel-biz/src/main/java/com/iailab/module/ansteel/api/dto/PowerMaxDemandMainDTO.java
@@ -1,7 +1,5 @@ package com.iailab.module.ansteel.api.dto; import com.baomidou.mybatisplus.annotation.TableId; import com.iailab.module.ansteel.power.entity.PowerMaxdemandDetEntity; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; @@ -35,5 +33,5 @@ private BigDecimal maxDemand; @Schema(description = "最大需量详情") private List<PowerMaxdemandDetEntity> children; private List<PowerMaxdemandDetDTO> children; } ansteel-biz/src/main/java/com/iailab/module/ansteel/api/dto/PowerMaxdemandDetDTO.java
对比新文件 @@ -0,0 +1,37 @@ package com.iailab.module.ansteel.api.dto; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import java.io.Serializable; import java.math.BigDecimal; import java.util.Date; import java.util.List; /** * @author PanZhibao * @Description * @createTime 2025年05月12日 */ @Data public class PowerMaxdemandDetDTO implements Serializable { private static final long serialVersionUID = 1L; @Schema(description = "id") private String id; @Schema(description = "发生时间") private Date occurTime; @Schema(description = "编号") private String code; @Schema(description = "名称") private String name; @Schema(description = "最大需量") private BigDecimal maxDemand; @Schema(description = "最大需量详情") private List<PowerMaxdemandDetDTO> children; } ansteel-biz/src/main/java/com/iailab/module/ansteel/api/dto/PreDataViewDTO.java
@@ -80,4 +80,7 @@ @Schema(description = "历史预测值") private List<Object[]> preData; @Schema(description = "累积值") private List<Object[]> culData; } ansteel-biz/src/main/java/com/iailab/module/ansteel/api/service/impl/DataServiceImpl.java
@@ -3,16 +3,17 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.iailab.framework.common.util.date.DateUtils; import com.iailab.framework.common.util.object.ConvertUtils; import com.iailab.module.ansteel.api.dao.*; import com.iailab.module.ansteel.api.dao.MainProcessIndexDayDao; import com.iailab.module.ansteel.api.dao.MainProcessIndexTeamDao; import com.iailab.module.ansteel.api.dto.*; import com.iailab.module.ansteel.api.service.DataService; import com.iailab.module.ansteel.common.constant.CommonConstant; import com.iailab.module.ansteel.common.enums.ProcessConfDataTypeEnum; import com.iailab.module.ansteel.power.dao.*; import com.iailab.module.ansteel.power.entity.PowerCapacitorStatusEntity; import com.iailab.module.ansteel.power.entity.PowerControlDetEntity; import com.iailab.module.ansteel.power.entity.PowerControlMainEntity; import com.iailab.module.ansteel.power.entity.PowerNetFactorEntity; import com.iailab.module.ansteel.api.service.DataService; import com.iailab.module.ansteel.common.constant.CommonConstant; import com.iailab.module.data.api.ind.IndItemApi; import com.iailab.module.data.api.ind.dto.ApiIndItemQueryDTO; import com.iailab.module.data.api.ind.dto.ApiIndItemValueDTO; @@ -32,9 +33,8 @@ import java.math.BigDecimal; import java.util.*; import java.util.concurrent.atomic.AtomicReference; import java.util.stream.Collectors; import static com.iailab.framework.common.pojo.CommonResult.success; @Slf4j @Service @@ -180,6 +180,7 @@ int lengthRight = tMap.get(CommonConstant.LENGTH_RIGHT) == null ? predictItem.getPredictLength() : new BigDecimal(tMap.get(CommonConstant.LENGTH_RIGHT)).intValue(); String trendsDataH = tMap.get(CommonConstant.TRENDSDATA_H) == null ? null : tMap.get(CommonConstant.TRENDSDATA_H); String trendsDataL = tMap.get(CommonConstant.TRENDSDATA_L) == null ? null : tMap.get(CommonConstant.TRENDSDATA_L); String culIndex = tMap.get(CommonConstant.CUL_INDEX) == null ? null : tMap.get(CommonConstant.CUL_INDEX);//累计量 Date[] timeArray = calResultTime(predictItem, reqVO.getStartTime(), reqVO.getEndTime(), lengthLeft, lengthRight); Date startTime = timeArray[1]; @@ -221,6 +222,19 @@ preDataView.setTrendsDataL(newList); } List<Object[]> culData = new ArrayList<>(); double leiji = 0; if (StringUtils.isNotBlank(culIndex) && !CollectionUtils.isEmpty(preDataView.getCurData())) { for(int i = 0; i < preDataView.getCurData().size(); i++) { Object[] item = preDataView.getCurData().get(i); Object[] dataItem = new Object[2]; dataItem[0] = item[0]; leiji = leiji + new BigDecimal(item[1].toString()).doubleValue(); dataItem[1] = new BigDecimal(leiji).divide(new BigDecimal(60), 2, BigDecimal.ROUND_HALF_UP) ; culData.add(dataItem); } } preDataView.setCulData(culData); preDataView.setPreData(resultOld.getDataView().getPreDataL()); result.setPreDataView(preDataView); return result; ansteel-biz/src/main/java/com/iailab/module/ansteel/api/vo/PowerMaxDemandMainPageReqVO.java
@@ -1,5 +1,6 @@ package com.iailab.module.ansteel.api.vo; import com.fasterxml.jackson.annotation.JsonFormat; import com.iailab.framework.common.pojo.PageParam; import com.iailab.module.ansteel.power.entity.PowerMaxdemandDetEntity; import io.swagger.v3.oas.annotations.media.Schema; @@ -25,4 +26,12 @@ @Schema(description = "名称") private String code; @Schema(description = "开始时间") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private Date startTime; @Schema(description = "结束时间") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private Date endTime; } ansteel-biz/src/main/java/com/iailab/module/ansteel/common/constant/CommonConstant.java
@@ -48,6 +48,8 @@ String RESULT_INDEX = "RESULT_INDEX"; String CUL_INDEX = "CUL_INDEX"; String LENGTH_LEFT = "LENGTH_LEFT"; String LENGTH_RIGHT = "LENGTH_RIGHT"; ansteel-biz/src/main/java/com/iailab/module/ansteel/job/task/RunPowerMaxdemandTask.java
@@ -109,39 +109,15 @@ mainEntity.setOccurTime(occurTime); mainEntity.setMaxDemand(todayMax); String mainId = powerMaxdemandMainService.add(mainEntity); Map<String, Object> params1 = new HashMap<>(); params1.put("groupName", demand.getName()); List<PowerNetDropdownEntity> dropdownList = powerNetDropdownService.list(params1); if (CollectionUtils.isEmpty(dropdownList)) { logger.info("dropdownList is empty"); // 插入第一层children List<PowerMaxdemandDetEntity> detList0 = powerMaxdemandDetService.addList(mainId, demand.getName(), occurTime); if(CollectionUtils.isEmpty(detList0)){ logger.info("detList0 is empty"); continue; } Calendar calendar1 = Calendar.getInstance(); calendar1.setTime(occurTime); calendar1.add(Calendar.MINUTE, 1); for (PowerNetDropdownEntity dropdown : dropdownList) { if (StringUtils.isBlank(dropdown.getExt1())) { logger.info(dropdown.getNodeCode() + ":dropdown.getExt1() is empty"); continue; } logger.info(dropdown.getNodeCode() + ":dropdown.getExt1() = " + dropdown.getExt1()); ApiPointValueQueryDTO pointValueQuery1 = new ApiPointValueQueryDTO(); pointValueQuery1.setStart(occurTime); pointValueQuery1.setEnd(calendar1.getTime()); pointValueQuery1.setPointNo(dropdown.getExt1()); List<ApiPointValueDTO> valueList1 = dataPointApi.queryPointHistoryValue(pointValueQuery1); if (CollectionUtils.isEmpty(valueList1)) { logger.info("valueList1 is empty"); continue; } PowerMaxdemandDetEntity detEntity = new PowerMaxdemandDetEntity(); detEntity.setRelId(mainId); detEntity.setCode(dropdown.getNodeCode()); detEntity.setName(dropdown.getNodeName()); detEntity.setOccurTime(occurTime); detEntity.setMaxDemand(BigDecimal.valueOf(valueList1.get(0).getV())); powerMaxdemandDetService.add(detEntity); for (PowerMaxdemandDetEntity detEntity : detList0) { // 插入第二层children powerMaxdemandDetService.addList(detEntity.getId(), detEntity.getName(), occurTime); } } logger.info("RunPowerMaxdemandTask end"); ansteel-biz/src/main/java/com/iailab/module/ansteel/power/dao/PowerMaxdemandMainDao.java
@@ -1,15 +1,11 @@ package com.iailab.module.ansteel.power.dao; import com.baomidou.mybatisplus.core.metadata.IPage; import com.iailab.framework.common.dao.BaseDao; import com.iailab.framework.common.pojo.PageResult; import com.iailab.framework.mybatis.core.mapper.BaseMapperX; import com.iailab.framework.mybatis.core.query.LambdaQueryWrapperX; import com.iailab.module.ansteel.api.dto.PowerMaxDemandMainDTO; import com.iailab.module.ansteel.api.vo.PowerMaxDemandMainPageReqVO; import com.iailab.module.ansteel.power.entity.PowerMaxdemandMainEntity; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; /** * @author PanZhibao @@ -18,10 +14,14 @@ */ @Mapper public interface PowerMaxdemandMainDao extends BaseMapperX<PowerMaxdemandMainEntity> { IPage<PowerMaxDemandMainDTO> getPage(IPage<PowerMaxdemandMainEntity> page, @Param("params") PowerMaxDemandMainPageReqVO reqVO); default IPage<PowerMaxDemandMainDTO> selectPage(PowerMaxDemandMainPageReqVO params) { return getPage(getPage(params), params); default PageResult<PowerMaxdemandMainEntity> selectPage(PowerMaxDemandMainPageReqVO reqVO) { return selectPage(reqVO, new LambdaQueryWrapperX<PowerMaxdemandMainEntity>() .likeIfPresent(PowerMaxdemandMainEntity::getName, reqVO.getName()) .eqIfPresent(PowerMaxdemandMainEntity::getCode, reqVO.getCode()) .geIfPresent(PowerMaxdemandMainEntity::getOccurTime, reqVO.getStartTime()) .le(PowerMaxdemandMainEntity::getOccurTime, reqVO.getEndTime()) .orderByDesc(PowerMaxdemandMainEntity::getOccurTime)); } } ansteel-biz/src/main/java/com/iailab/module/ansteel/power/service/PowerMaxdemandDetService.java
@@ -1,8 +1,8 @@ package com.iailab.module.ansteel.power.service; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.iailab.module.ansteel.power.entity.PowerMaxdemandDetEntity; import java.util.Date; import java.util.List; /** @@ -14,5 +14,11 @@ void add(PowerMaxdemandDetEntity entity); List<PowerMaxdemandDetEntity> addList(String relId, String groupName, Date occurTime); List<PowerMaxdemandDetEntity> selectListByRelIds(List<String> relIds); List<PowerMaxdemandDetEntity> selectListByRelId(String relId, Date occurTime); List<PowerMaxdemandDetEntity> selectListByRelId(String relId); } ansteel-biz/src/main/java/com/iailab/module/ansteel/power/service/PowerMaxdemandMainService.java
@@ -16,7 +16,7 @@ */ public interface PowerMaxdemandMainService { PageResult<PowerMaxDemandMainDTO> page(PowerMaxDemandMainPageReqVO reqVO); PageResult<PowerMaxdemandMainEntity> page(PowerMaxDemandMainPageReqVO reqVO); String add(PowerMaxdemandMainEntity entity); ansteel-biz/src/main/java/com/iailab/module/ansteel/power/service/impl/PowerMaxdemandDetServiceImpl.java
@@ -3,14 +3,21 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.iailab.module.ansteel.power.dao.PowerMaxdemandDetDao; import com.iailab.module.ansteel.power.entity.PowerMaxdemandDetEntity; import com.iailab.module.ansteel.power.entity.PowerNetDropdownEntity; import com.iailab.module.ansteel.power.service.PowerMaxdemandDetService; import com.iailab.module.ansteel.power.service.PowerNetDropdownService; import com.iailab.module.data.api.point.DataPointApi; import com.iailab.module.data.api.point.dto.ApiPointValueDTO; import com.iailab.module.data.api.point.dto.ApiPointValueQueryDTO; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; import javax.annotation.Resource; import java.util.Collections; import java.util.List; import java.util.UUID; import java.math.BigDecimal; import java.util.*; /** * @author PanZhibao @@ -24,6 +31,12 @@ @Resource private PowerMaxdemandDetDao powerMaxdemandDetDao; @Autowired private PowerNetDropdownService powerNetDropdownService; @Resource private DataPointApi dataPointApi; @Override public void add(PowerMaxdemandDetEntity entity) { entity.setId(UUID.randomUUID().toString()); @@ -31,8 +44,68 @@ } @Override public List<PowerMaxdemandDetEntity> addList(String relId, String groupName, Date occurTime) { List<PowerMaxdemandDetEntity> result = new ArrayList<>(); Map<String, Object> params1 = new HashMap<>(); params1.put("groupName", groupName); List<PowerNetDropdownEntity> dropdownList = powerNetDropdownService.list(params1); if (CollectionUtils.isEmpty(dropdownList)) { log.info("dropdownList is empty"); return result; } Calendar calendar1 = Calendar.getInstance(); calendar1.setTime(occurTime); calendar1.add(Calendar.MINUTE, 1); int sort0 = 0; for (PowerNetDropdownEntity dropdown : dropdownList) { if (StringUtils.isBlank(dropdown.getExt1())) { log.info(dropdown.getNodeCode() + ":dropdown.getExt1() is empty"); continue; } log.info(dropdown.getNodeCode() + ":dropdown.getExt1() = " + dropdown.getExt1()); ApiPointValueQueryDTO pointValueQuery1 = new ApiPointValueQueryDTO(); pointValueQuery1.setStart(occurTime); pointValueQuery1.setEnd(calendar1.getTime()); pointValueQuery1.setPointNo(dropdown.getExt1()); List<ApiPointValueDTO> valueList1 = dataPointApi.queryPointHistoryValue(pointValueQuery1); if (CollectionUtils.isEmpty(valueList1)) { log.info("valueList1 is empty"); continue; } PowerMaxdemandDetEntity detEntity0 = new PowerMaxdemandDetEntity(); detEntity0.setRelId(relId); detEntity0.setCode(dropdown.getNodeCode()); detEntity0.setName(dropdown.getNodeName()); detEntity0.setOccurTime(occurTime); detEntity0.setMaxDemand(BigDecimal.valueOf(valueList1.get(0).getV())); detEntity0.setSort(sort0); this.add(detEntity0); sort0 ++; result.add(detEntity0); } return result; } @Override public List<PowerMaxdemandDetEntity> selectListByRelIds(List<String> relIds) { return powerMaxdemandDetDao.selectList( new QueryWrapper<PowerMaxdemandDetEntity>().in("rel_id", relIds)); } @Override public List<PowerMaxdemandDetEntity> selectListByRelId(String relId, Date occurTime) { return powerMaxdemandDetDao.selectList( new QueryWrapper<PowerMaxdemandDetEntity>() .eq("rel_id", relId) .eq("occur_time", occurTime) .orderByAsc("sort")); } @Override public List<PowerMaxdemandDetEntity> selectListByRelId(String relId) { return powerMaxdemandDetDao.selectList( new QueryWrapper<PowerMaxdemandDetEntity>() .eq("rel_id", relId) .orderByAsc("sort")); } } ansteel-biz/src/main/java/com/iailab/module/ansteel/power/service/impl/PowerMaxdemandMainServiceImpl.java
@@ -1,15 +1,11 @@ package com.iailab.module.ansteel.power.service.impl; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.iailab.framework.common.constant.Constant; import com.iailab.framework.common.pojo.PageResult; import com.iailab.module.ansteel.api.dto.PowerMaxDemandMainDTO; import com.iailab.module.ansteel.api.vo.PowerMaxDemandMainPageReqVO; import com.iailab.module.ansteel.power.dao.PowerMaxdemandMainDao; import com.iailab.module.ansteel.power.entity.PowerMaxdemandMainEntity; import com.iailab.module.ansteel.power.service.PowerMaxdemandMainService; import com.iailab.module.model.api.mcs.dto.StAlarmAndSuggestRespVO; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -18,8 +14,6 @@ import java.math.BigDecimal; import java.util.*; import java.util.stream.Collectors; import static org.bouncycastle.pqc.jcajce.provider.util.WrapUtil.getWrapper; /** * @author PanZhibao @@ -34,9 +28,8 @@ private PowerMaxdemandMainDao powerMaxdemandMainDao; @Override public PageResult<PowerMaxDemandMainDTO> page(PowerMaxDemandMainPageReqVO reqVO) { IPage<PowerMaxDemandMainDTO> page = powerMaxdemandMainDao.selectPage(reqVO); return new PageResult<>(page.getRecords(), page.getTotal()); public PageResult<PowerMaxdemandMainEntity> page(PowerMaxDemandMainPageReqVO reqVO) { return powerMaxdemandMainDao.selectPage(reqVO); } @Override doc/鞍钢数据接口文档_250512.docBinary files differ