ansteel-biz/db/mysql.sql
@@ -808,7 +808,7 @@ CREATE TABLE `t_power_maxdemand_main` ( `id` varchar(36) NOT NULL COMMENT 'id', `occur_time` datetimeL COMMENT '发生时间', `occur_time` datetime COMMENT '发生时间', `code` varchar(50) NULL DEFAULT NULL COMMENT '编号', `name` varchar(50) NULL DEFAULT NULL COMMENT '名称', `max_demand` decimal(10, 2) NULL DEFAULT NULL COMMENT '最大需量', ansteel-biz/src/main/java/com/iailab/module/ansteel/api/controller/admin/PowerController.java
@@ -2,12 +2,21 @@ 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.enums.GlobalErrorCodeConstants; import com.iailab.framework.common.pojo.CommonResult; import com.iailab.framework.common.pojo.PageResult; import com.iailab.framework.common.util.date.DateUtils; import com.iailab.framework.common.util.object.BeanUtils; import com.iailab.framework.common.util.object.ConvertUtils; import com.iailab.framework.tenant.core.context.TenantContextHolder; import com.iailab.module.ansteel.api.dto.*; import com.iailab.module.ansteel.api.vo.PowerMaxDemandMainPageReqVO; import com.iailab.module.ansteel.common.utils.DecimalUtil; import com.iailab.module.ansteel.job.dto.ScheduleJobDTO; import com.iailab.module.ansteel.job.entity.ScheduleJobEntity; import com.iailab.module.ansteel.job.service.ScheduleJobService; import com.iailab.module.ansteel.job.vo.ScheduleJobReqVO; import com.iailab.module.ansteel.power.entity.*; import com.iailab.module.ansteel.power.service.*; import com.iailab.module.data.api.point.DataPointApi; @@ -20,7 +29,9 @@ import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.util.CollectionUtils; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import java.math.BigDecimal; @@ -79,6 +90,11 @@ @Autowired private PowerVoltageStatusService powerVoltageStatusService; @Autowired private PowerMaxdemandMainService powerMaxDemandMainService; @Autowired private PowerMaxdemandDetService powerMaxdemandDetService; @GetMapping("/net-factor/list") @Operation(summary = "功率因数-电网拓扑") @@ -1092,4 +1108,21 @@ } 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)); } } ansteel-biz/src/main/java/com/iailab/module/ansteel/api/dto/PowerMaxDemandMainDTO.java
对比新文件 @@ -0,0 +1,39 @@ 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; import java.io.Serializable; import java.math.BigDecimal; import java.util.Date; import java.util.List; /** * @author dyk * @date 2025年04月18日 */ @Data public class PowerMaxDemandMainDTO 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<PowerMaxdemandDetEntity> children; } ansteel-biz/src/main/java/com/iailab/module/ansteel/api/vo/PowerMaxDemandMainPageReqVO.java
对比新文件 @@ -0,0 +1,28 @@ package com.iailab.module.ansteel.api.vo; import com.iailab.framework.common.pojo.PageParam; import com.iailab.module.ansteel.power.entity.PowerMaxdemandDetEntity; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import javax.validation.constraints.Max; import javax.validation.constraints.Min; import javax.validation.constraints.NotNull; import java.io.Serializable; import java.math.BigDecimal; import java.util.Date; import java.util.List; /** * @author dyk * @date 2025年05月09日 */ @Data public class PowerMaxDemandMainPageReqVO extends PageParam { @Schema(description = "编号") private String name; @Schema(description = "名称") private String code; } ansteel-biz/src/main/java/com/iailab/module/ansteel/job/task/RunPowerMaxdemandTask.java
@@ -71,17 +71,18 @@ return; } for (PowerDemandEntity demand : demandList) { // 查询今天的最大需量 logger.info("查询今天的最大需量"); ApiPointValueQueryDTO pointValueQuery0 = new ApiPointValueQueryDTO(); pointValueQuery0.setStart(dayStart); pointValueQuery0.setEnd(nowTime); pointValueQuery0.setPointNo(demand.getCurDemand()); Map<String, Object> maxValue = dataPointApi.queryPointMaxValue(pointValueQuery0); BigDecimal todayMax = BigDecimal.ZERO; if (CollectionUtils.isEmpty(maxValue) && maxValue.containsKey(demand.getCurDemand())) { todayMax = new BigDecimal(maxValue.get(demand.getCurDemand()).toString()); if (CollectionUtils.isEmpty(maxValue)) { logger.info("maxValue is empty"); continue; } BigDecimal todayMax = new BigDecimal(maxValue.get(demand.getCurDemand()).toString()); logger.info("todayMax=" + todayMax); List<ApiPointValueDTO> valueList = dataPointApi.queryPointHistoryValue(pointValueQuery0); if (CollectionUtils.isEmpty(valueList)) { logger.info("valueList is empty"); @@ -95,7 +96,7 @@ } } // 查询本月需量发生记录 logger.info("查询本月需量发生记录"); BigDecimal monthMax = powerMaxdemandMainService.getMax(demand.getCode(), monStart, nowTime); // 保存记录 @@ -110,19 +111,21 @@ String mainId = powerMaxdemandMainService.add(mainEntity); Map<String, Object> params1 = new HashMap<>(); params1.put("pCode", demand.getCode()); params1.put("groupName", demand.getName()); List<PowerNetDropdownEntity> dropdownList = powerNetDropdownService.list(params1); if (CollectionUtils.isEmpty(dropdownList)) { logger.info("dropdownList is empty"); continue; } for (PowerNetDropdownEntity dropdown : dropdownList) { if (StringUtils.isBlank(dropdown.getExt1())) { 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()); ansteel-biz/src/main/java/com/iailab/module/ansteel/power/dao/PowerMaxdemandMainDao.java
@@ -1,8 +1,15 @@ 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 @@ -10,5 +17,11 @@ * @createTime 2025年05月07日 */ @Mapper public interface PowerMaxdemandMainDao extends BaseDao<PowerMaxdemandMainEntity> { 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); } } ansteel-biz/src/main/java/com/iailab/module/ansteel/power/service/PowerMaxdemandDetService.java
@@ -1,6 +1,9 @@ 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.List; /** * @author PanZhibao @@ -10,4 +13,6 @@ public interface PowerMaxdemandDetService { void add(PowerMaxdemandDetEntity entity); List<PowerMaxdemandDetEntity> selectListByRelIds(List<String> relIds); } ansteel-biz/src/main/java/com/iailab/module/ansteel/power/service/PowerMaxdemandMainService.java
@@ -1,9 +1,13 @@ package com.iailab.module.ansteel.power.service; 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.entity.PowerMaxdemandMainEntity; import java.math.BigDecimal; import java.util.Date; import java.util.Map; /** * @author PanZhibao @@ -12,7 +16,10 @@ */ public interface PowerMaxdemandMainService { PageResult<PowerMaxDemandMainDTO> page(PowerMaxDemandMainPageReqVO reqVO); String add(PowerMaxdemandMainEntity entity); BigDecimal getMax(String code, Date start, Date end); } ansteel-biz/src/main/java/com/iailab/module/ansteel/power/service/impl/PowerMaxdemandDetServiceImpl.java
@@ -1,5 +1,6 @@ package com.iailab.module.ansteel.power.service.impl; 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.service.PowerMaxdemandDetService; @@ -7,6 +8,8 @@ import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.util.Collections; import java.util.List; import java.util.UUID; /** @@ -26,4 +29,10 @@ entity.setId(UUID.randomUUID().toString()); powerMaxdemandDetDao.insert(entity); } @Override public List<PowerMaxdemandDetEntity> selectListByRelIds(List<String> relIds) { return powerMaxdemandDetDao.selectList( new QueryWrapper<PowerMaxdemandDetEntity>().in("rel_id", relIds)); } } ansteel-biz/src/main/java/com/iailab/module/ansteel/power/service/impl/PowerMaxdemandMainServiceImpl.java
@@ -1,20 +1,25 @@ 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; import org.springframework.util.CollectionUtils; import java.math.BigDecimal; import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.UUID; import java.util.*; import java.util.stream.Collectors; import static org.bouncycastle.pqc.jcajce.provider.util.WrapUtil.getWrapper; /** * @author PanZhibao @@ -29,6 +34,12 @@ private PowerMaxdemandMainDao powerMaxdemandMainDao; @Override public PageResult<PowerMaxDemandMainDTO> page(PowerMaxDemandMainPageReqVO reqVO) { IPage<PowerMaxDemandMainDTO> page = powerMaxdemandMainDao.selectPage(reqVO); return new PageResult<>(page.getRecords(), page.getTotal()); } @Override public String add(PowerMaxdemandMainEntity entity) { entity.setId(UUID.randomUUID().toString()); powerMaxdemandMainDao.insert(entity); ansteel-biz/src/main/resources/application.yaml
@@ -179,6 +179,8 @@ - t_power_adjusted_factor - t_power_net_dropdown - t_power_voltage_status - t_power_maxdemand_main - t_power_maxdemand_det - t_peak_valley_flat - t_coking_overview_ind - t_gas_pred_conf doc/鞍钢数据接口文档_master.docBinary files differ