Commit 018c0b4e authored by ZWT's avatar ZWT

feat(能源管理系统): 间开制度管理

1.开发中短期间开优化模块-中短期优化详情接口,完成接口冒烟测试并生成接口文档;
2.开发间开优化历史模块-优化历史分页列表接口,完成接口冒烟测试并生成接口文档;

BREAKING CHANGE: 无

Closes 无

[skip ci]
parent 77105a08
package pps.core.space.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import pps.core.common.entity.BaseModel;
import xstartup.annotation.XText;
......@@ -15,6 +18,9 @@ import java.util.Date;
* @date 2023/09/05
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class SpaceInstitutionDetailView extends BaseModel implements Serializable {
@XText("组织机构ID")
......@@ -56,4 +62,32 @@ public class SpaceInstitutionDetailView extends BaseModel implements Serializabl
@XText("启动间隔(分钟)")
@TableField
private Integer startInterval;
/**
* 长期优化周期
*/
@XText("长期优化周期")
@TableField(exist = false)
private String longExecutionCycle;
/**
* 长期优化时间
*/
@XText("长期优化时间")
@TableField(exist = false)
private String longOptimizeDeadline;
/**
* 中短期优化周期
*/
@XText("中短期优化周期")
@TableField(exist = false)
private String midExecutionCycle;
/**
* 中短期优化时间
*/
@XText("中短期优化时间")
@TableField(exist = false)
private String midOptimizeDeadline;
}
......@@ -16,4 +16,12 @@ public interface SpaceInstitutionDetailViewMapper {
SpaceInstitutionDetailView selectOne(SpaceInstitutionDetailView record);
List<SpaceInstitutionDetailView> selectList(SpaceInstitutionDetailView record);
/**
* 查询优化历史记录列表
*
* @param record 记录
* @return {@link List}<{@link SpaceInstitutionDetailView}>
*/
List<SpaceInstitutionDetailView> selectOptimizeHistoryList(SpaceInstitutionDetailView record);
}
......@@ -12,14 +12,8 @@ import pps.core.common.constant.BusinessConstant;
import pps.core.common.entity.BaseModel;
import pps.core.common.session.PpsUserSession;
import pps.core.common.utils.BaseUtils;
import pps.core.space.entity.SpaceInstitutionDetailEnt;
import pps.core.space.entity.SpaceInstitutionDurationEnt;
import pps.core.space.entity.SpaceInstitutionWellheadEnt;
import pps.core.space.entity.SpaceInstitutionWellheadView;
import pps.core.space.mapper.SpaceInstitutionDetailMapper;
import pps.core.space.mapper.SpaceInstitutionDurationMapper;
import pps.core.space.mapper.SpaceInstitutionWellheadMapper;
import pps.core.space.mapper.SpaceInstitutionWellheadViewMapper;
import pps.core.space.entity.*;
import pps.core.space.mapper.*;
import pps.core.space.service.data.space_institution_detail.*;
import pps.core.space.service.data.space_institution_duration.GetSpaceInstitutionDurationViewOutput;
import pps.core.space.service.data.space_institution_wellhead.CreateSpaceInstitutionWellheadInput;
......@@ -358,6 +352,36 @@ public class SpaceInstitutionDetailService {
});
}
/**
* 间开优化历史--分页列表
*
* @param context 上下文
* @param input 输入
* @return {@link XPageResult}<{@link QueryOptimizeHistoryViewOutput}>
*/
@XApiAnonymous
@XApiGet
@XText("间开优化历史--分页列表")
public XPageResult<QueryOptimizeHistoryViewOutput> queryOptimizeHistoryView(XContext context, QueryOptimizeHistoryViewInput input) {
SpaceInstitutionDetailViewMapper mapper = context.getBean(SpaceInstitutionDetailViewMapper.class);
PageHelper.startPage(input.getPage(), input.getLimit());
List<SpaceInstitutionDetailView> historyList = mapper.selectOptimizeHistoryList(SpaceInstitutionDetailView.builder()
.ouId(input.getOuId())
.build()
);
PageInfo<SpaceInstitutionDetailView> pageInfo = new PageInfo<>(historyList);
List<QueryOptimizeHistoryViewOutput> outputs = XCopyUtils.copyNewList(pageInfo.getList(), QueryOptimizeHistoryViewOutput.class);
if (CollUtil.isNotEmpty(outputs)) {
Map<String, String> lineNameMap = ServiceUtil.getPowerLineNameMap(context, outputs.stream()
.map(QueryOptimizeHistoryViewOutput::getLineId)
.distinct()
.collect(Collectors.toList())
);
outputs.forEach(o -> o.setLineName(lineNameMap.get(o.getLineId())));
}
return XPageResult.success(outputs, input, pageInfo.getTotal());
}
/*-----------------------------------private-----------------------------------*/
/**
......
package pps.core.space.service.data.space_institution_detail;
import jakarta.validation.constraints.NotBlank;
import lombok.Data;
import xstartup.annotation.XText;
import xstartup.base.data.XPageInput;
/**
* 间开优化历史
*
* @author ZWT
* @date 2023/09/08
*/
@Data
public class QueryOptimizeHistoryViewInput extends XPageInput {
@XText("组织机构ID")
@NotBlank(message = "缺少组织机构ID")
private String ouId;
@XText("线路ID")
private String lineId;
}
package pps.core.space.service.data.space_institution_detail;
import lombok.Data;
import xstartup.annotation.XText;
/**
* 间开优化历史
*
* @author ZWT
* @date 2023/09/08
*/
@Data
public class QueryOptimizeHistoryViewOutput {
@XText("ID")
private String id;
@XText("组织机构ID")
private String ouId;
@XText("线路ID")
private String lineId;
@XText("线路名称")
private String lineName;
@XText("电网类型key(字典获取)")
private String gridTypeKey;
@XText("制度名称")
private String institutionName;
@XText("长期优化周期")
private String longExecutionCycle;
@XText("长期优化时间")
private String longOptimizeDeadline;
@XText("中短期优化周期")
private String midExecutionCycle;
@XText("中短期优化时间")
private String midOptimizeDeadline;
}
......@@ -58,4 +58,57 @@
where
id=#{id}
</select>
<resultMap id="ExtendResultMap" type="pps.core.space.entity.SpaceInstitutionDetailView" extends="BaseResultMap">
<result column="long_execution_cycle" property="longExecutionCycle" jdbcType="VARCHAR"/>
<result column="long_optimize_deadline" property="longOptimizeDeadline" jdbcType="VARCHAR"/>
<result column="mid_execution_cycle" property="midExecutionCycle" jdbcType="VARCHAR"/>
<result column="mid_optimize_deadline" property="midOptimizeDeadline" jdbcType="VARCHAR"/>
</resultMap>
<select id="selectOptimizeHistoryList" parameterType="pps.core.space.entity.SpaceInstitutionDetailView"
resultMap="ExtendResultMap">
WITH institution_detail AS (SELECT id,
ou_id,
line_id,
grid_type_key,
institution_name,
institution_start_date,
institution_end_date,
optimize_deadline,
optimize_state,
is_current_basic,
start_interval
FROM space_institution_detail
WHERE is_current_basic = 0
AND ou_id = #{ouId}),
long_period
AS (SELECT row_number() over ( PARTITION BY institution_id ORDER BY optimize_deadline DESC ) AS line_number, institution_id,
execution_cycle,
optimize_state,
optimize_deadline
FROM space_optimize_long_period
WHERE institution_id IN (SELECT id FROM institution_detail)),
mid_period
AS (SELECT row_number() over ( PARTITION BY institution_id ORDER BY optimize_deadline DESC ) AS line_number, institution_id,
execution_cycle,
optimize_state,
optimize_deadline
FROM space_optimize_mid_period
WHERE institution_id IN (SELECT id FROM institution_detail))
SELECT d.id,
d.ou_id,
d.line_id,
d.grid_type_key,
d.institution_name,
l.execution_cycle AS long_execution_cycle,
l.optimize_deadline AS long_optimize_deadline,
m.execution_cycle AS mid_execution_cycle,
m.optimize_deadline AS mid_optimize_deadline
FROM institution_detail d
LEFT JOIN long_period l ON d.id = l.institution_id
AND l.line_number = 1
LEFT JOIN mid_period m ON d.id = m.institution_id
AND m.line_number = 1
</select>
</mapper>
\ No newline at end of file
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment