Commit c8807de3 authored by tianchao's avatar tianchao
parents 8234caa5 edd50cd5
......@@ -16,6 +16,11 @@ public class BusinessConstant {
*/
public static final String PARENT_OU_ID = "00000000-0000-0000-0000-000000000000";
/**
* 线路标志id
*/
public static final String LINE_FLAG_ID = "000";
/**
* 光伏电站
*/
......@@ -113,7 +118,7 @@ public class BusinessConstant {
/**
* 一天结束时间
*/
public static final String END_OF_DAY_TIME = "23:59";
public static final String END_OF_DAY_TIME = "24:00";
/**
* 一天开始时间
......
......@@ -96,20 +96,6 @@ public class BaseUtils {
return StringUtils.replace(UUID.randomUUID().toString(), "-", "");
}
/**
* 获取月份执行周期
*
* @param date 日期
* @return {@link String}
*/
public static String getExecutionCycleForMonth(Date date) {
StringBuilder stringBuilder = new StringBuilder();
stringBuilder.append(DateUtil.format(DateUtil.beginOfDay(date), BusinessConstant.DATE_FORMAT_DAY_C))
.append('-')
.append(DateUtil.format(DateUtil.endOfMonth(date), BusinessConstant.DATE_FORMAT_DAY_C));
return stringBuilder.toString();
}
/**
* 获取周执行周期
*
......@@ -134,12 +120,27 @@ public class BaseUtils {
*/
public static String getExecutionCycleForCalibration(Date date, int offset) {
StringBuilder stringBuilder = new StringBuilder();
stringBuilder.append(DateUtil.format(DateUtil.beginOfDay(date), BusinessConstant.DATE_FORMAT_DAY_C))
stringBuilder.append(DateUtil.format(date, BusinessConstant.DATE_FORMAT_DAY_C))
.append('-')
.append(DateUtil.format(DateUtil.offsetDay(date, offset), BusinessConstant.DATE_FORMAT_DAY_C));
return stringBuilder.toString();
}
/**
* 获取校准执行周期
*
* @param startDate 开始日期
* @param endDate 结束日期
* @return {@link String}
*/
public static String getExecutionCycleForCalibration(Date startDate, Date endDate) {
StringBuilder stringBuilder = new StringBuilder();
stringBuilder.append(DateUtil.format(startDate, BusinessConstant.DATE_FORMAT_DAY_C))
.append('-')
.append(DateUtil.format(endDate, BusinessConstant.DATE_FORMAT_DAY_C));
return stringBuilder.toString();
}
/**
* 获取时差分钟
*
......
......@@ -18,4 +18,14 @@ public interface SystemAreaService {
@XText("查询地区详细地址")
XSingleResult<AddressInfoModel> getAddressInfo(XContext context, GetSysAreaInput input);
/**
* 地区Cloud服务-条件查询地区
*
* @param context 上下文
* @param input 输入
* @return {@link XSingleResult}<{@link GetSysAreaOutput}>
*/
@XText("地区Cloud服务-条件查询地区")
XSingleResult<GetSysAreaOutput> getSysAreaByParam(XContext context, GetSysAreaInput input);
}
package pps.cloud.system.service.data;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* 地区入参
*
* @author ZWT
* @date 2023/10/10
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class GetSysAreaInput {
private Integer id;
private String name;
......@@ -8,37 +24,4 @@ public class GetSysAreaInput {
private Integer parentId;
private Integer lev;
public Integer getId() {
return this.id;
}
public void setId(Integer value) {
this.id = value;
}
public String getName() {
return this.name;
}
public void setName(String value) {
this.name = value;
}
public Integer getParentId() {
return this.parentId;
}
public void setParentId(Integer value) {
this.parentId = value;
}
public Integer getLev() {
return this.lev;
}
public void setLev(Integer value) {
this.lev = value;
}
}
......@@ -155,4 +155,11 @@ public class SysOrganizationView implements Serializable {
@XText("线路ID")
@TableField(exist = false)
private String lineId;
/**
* 电网类型key
*/
@XText("电网类型key(字典获取)")
@TableField(exist = false)
private String gridTypeKey;
}
package pps.core.system.service;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import org.apache.commons.lang3.ObjectUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;
import pps.cloud.system.service.SystemAreaService;
import pps.cloud.system.service.data.AddressInfoModel;
import pps.cloud.system.service.data.GetSysAreaInput;
......@@ -20,6 +20,7 @@ import xstartup.data.XSingleResult;
import xstartup.feature.api.annotation.XApiPost;
import java.util.List;
import java.util.Objects;
@XService
public class SystemAreaServiceImpl implements SystemAreaService {
......@@ -40,33 +41,56 @@ public class SystemAreaServiceImpl implements SystemAreaService {
Integer sysAreaId = input.getId();
SysAreaMapper mapper = context.getBean(SysAreaMapper.class);
AddressInfoModel model = new AddressInfoModel();
QueryWrapper<SysAreaEnt> queryWrapper =new QueryWrapper<>();
queryWrapper.lambda().eq(SysAreaEnt::getId,sysAreaId);
QueryWrapper<SysAreaEnt> queryWrapper = new QueryWrapper<>();
queryWrapper.lambda().eq(SysAreaEnt::getId, sysAreaId);
SysAreaEnt sysAreaEnt = mapper.selectOne(queryWrapper);
if(ObjectUtils.isNotEmpty(sysAreaEnt)){
if(sysAreaEnt.getLev()==0){
if (ObjectUtils.isNotEmpty(sysAreaEnt)) {
if (sysAreaEnt.getLev() == 0) {
model.setArea(String.valueOf(sysAreaEnt.getId()));
}
while (!StringUtils.equals("0",String.valueOf(sysAreaEnt.getParentId()))){
if(sysAreaEnt.getLev()==1){
while (!StringUtils.equals("0", String.valueOf(sysAreaEnt.getParentId()))) {
if (sysAreaEnt.getLev() == 1) {
model.setProvince(String.valueOf(sysAreaEnt.getId()));
}
if(sysAreaEnt.getLev()==2){
if (sysAreaEnt.getLev() == 2) {
model.setCity(String.valueOf(sysAreaEnt.getId()));
}
if(sysAreaEnt.getLev()==3){
if (sysAreaEnt.getLev() == 3) {
model.setCounty(String.valueOf(sysAreaEnt.getId()));
}
QueryWrapper<SysAreaEnt> query =new QueryWrapper<>();
query.lambda().eq(SysAreaEnt::getId,sysAreaEnt.getParentId());
QueryWrapper<SysAreaEnt> query = new QueryWrapper<>();
query.lambda().eq(SysAreaEnt::getId, sysAreaEnt.getParentId());
sysAreaEnt = mapper.selectOne(query);
if(sysAreaEnt.getLev()==0){
if (sysAreaEnt.getLev() == 0) {
model.setArea(String.valueOf(sysAreaEnt.getId()));
}
}
}
return XSingleResult.success(model);
}
/**
* 地区Cloud服务-条件查询地区
*
* @param context 上下文
* @param input 输入
* @return {@link XSingleResult}<{@link GetSysAreaOutput}>
*/
@XApiPost
@Override
public XSingleResult<GetSysAreaOutput> getSysAreaByParam(XContext context, GetSysAreaInput input) {
Integer id = input.getId();
String name = input.getName();
Integer parentId = input.getParentId();
SysAreaMapper mapper = context.getBean(SysAreaMapper.class);
SysAreaEnt sysAreaEnt = mapper.selectOne(new LambdaQueryWrapper<SysAreaEnt>()
.eq(Objects.nonNull(id), SysAreaEnt::getId, id)
.eq(Objects.nonNull(parentId), SysAreaEnt::getParentId, parentId)
.eq(StringUtils.isNotEmpty(name), SysAreaEnt::getName, name)
.last("LIMIT 1")
);
return XSingleResult.success(XCopyUtils.copyNewObject(sysAreaEnt, GetSysAreaOutput.class));
}
}
......@@ -23,4 +23,10 @@ public class DynamicQuerySysOrganizationOutput {
@XText("线路ID")
private String lineId;
/**
* 电网类型key
*/
@XText("电网类型key(字典获取)")
private String gridTypeKey;
}
......@@ -558,6 +558,7 @@
<resultMap id="ExtendResultMap" type="pps.core.system.entity.SysOrganizationView" extends="BaseResultMap">
<result column="line_id" property="lineId" jdbcType="VARCHAR"/>
<result column="grid_type_key" property="gridTypeKey" jdbcType="VARCHAR"/>
</resultMap>
<select id="selectLineList" parameterType="pps.core.system.entity.SysOrganizationView"
......@@ -577,7 +578,8 @@
(SELECT o.id,
o.ou_name AS ou_name,
'' AS line_id,
'ORG' AS ou_level
'ORG' AS ou_level,
'' AS grid_type_key
FROM sys_organization o
LEFT JOIN sys_organization_rel r ON o.id = r.ou_id
WHERE r.parent_ou_id = #{id}
......@@ -585,7 +587,11 @@
AND o.is_deleted = 1
ORDER BY r.sort)
UNION ALL
(SELECT ou_id AS id, line_name AS ou_name, id AS line_id, 'LINE' AS ou_level
(SELECT ou_id AS id,
line_name AS ou_name,
id AS line_id,
'LINE' AS ou_level,
grid_type_key
FROM base_power_line
WHERE ou_id = #{id}
AND is_deleted = 1
......
......@@ -8,6 +8,7 @@ import pps.cloud.base.service.data.base_power_line.GetBasePowerLineViewOutput;
import pps.cloud.base.service.data.base_power_line_plant.DynamicQueryBasePowerLinePlantInput;
import pps.cloud.base.service.data.base_power_line_plant.DynamicQueryBasePowerLinePlantOutput;
import pps.cloud.base.service.data.base_power_line_storage.DynamicQueryBasePowerLineStorageInput;
import pps.cloud.base.service.data.base_power_line_storage.DynamicQueryBasePowerLineStorageOutput;
import pps.cloud.base.service.data.base_power_line_storage.DynamicQueryBasePowerLineStorageViewOutput;
import pps.cloud.base.service.data.base_power_line_wellhead.DynamicQueryBasePowerLineWellheadInput;
import pps.cloud.base.service.data.base_power_line_wellhead.DynamicQueryBasePowerLineWellheadViewOutput;
......@@ -82,5 +83,16 @@ public interface IBasePowerLineCloudService {
*/
@XText("输电线路配置Cloud模块--条件查询线路关联储能设备参数平均值")
@XApiPost
XListResult<DynamicQueryBasePowerLineStorageViewOutput> queryPowerLineStorageListByLineIds(XContext context, DynamicQueryBasePowerLineStorageInput input);
XListResult<DynamicQueryBasePowerLineStorageViewOutput> queryPowerLineStorageAvgByLineIds(XContext context, DynamicQueryBasePowerLineStorageInput input);
/**
* 输电线路配置Cloud模块--条件查询线路关联储能设备信息
*
* @param context 上下文
* @param input 输入
* @return {@link XListResult}<{@link DynamicQueryBasePowerLineStorageOutput}>
*/
@XText("输电线路配置Cloud模块--条件查询线路关联储能设备信息")
@XApiPost
XListResult<DynamicQueryBasePowerLineStorageOutput> queryPowerLineStorageListByLineIds(XContext context, DynamicQueryBasePowerLineStorageInput input);
}
package pps.cloud.base.service.data.base_power_line_storage;
import lombok.Data;
import xstartup.annotation.XText;
/**
* 输电线路储能配置
*
* @author ZWT
* @date 2023/08/25
*/
@Data
public class DynamicQueryBasePowerLineStorageOutput {
@XText("线路ID")
private String lineId;
@XText("储能设备ID")
private String storageId;
}
......@@ -50,7 +50,24 @@ public class BasePhotovoltaicPlantEnt extends BaseModel implements Serializable
@XText("组织机构name")
@TableField
private String ouName;
@XText("光伏设备规格型号name(字典获取)")
@TableField
private String photovoltaicModelName;
@XText("经度(°)")
@TableField
private BigDecimal longitude;
@XText("纬度(°)")
@TableField
private BigDecimal latitude;
@XText("高程(m)")
@TableField
private BigDecimal elevation;
@XText("地区编码")
@TableField
private Integer areaCode;
}
......@@ -48,6 +48,7 @@ public class BasePhotovoltaicPlantView extends BaseModel implements Serializable
@XText("组织机构name")
@TableField
private String ouName;
@XText("光伏设备规格型号name(字典获取)")
@TableField
private String photovoltaicModelName;
......@@ -59,4 +60,20 @@ public class BasePhotovoltaicPlantView extends BaseModel implements Serializable
@XText("所属省份")
@TableField(exist = false)
private String provinceCode;
@XText("经度(°)")
@TableField
private BigDecimal longitude;
@XText("纬度(°)")
@TableField
private BigDecimal latitude;
@XText("高程(m)")
@TableField
private BigDecimal elevation;
@XText("地区编码")
@TableField
private Integer areaCode;
}
......@@ -5,9 +5,17 @@ import pps.core.base.entity.BasePhotovoltaicPlantView;
import java.util.List;
@Repository(value="pps.core.base.mapper.BasePhotovoltaicPlantViewMapper")
/**
* 光伏电站
*
* @author ZWT
* @date 2023/10/10
*/
@Repository(value = "pps.core.base.mapper.BasePhotovoltaicPlantViewMapper")
public interface BasePhotovoltaicPlantViewMapper {
BasePhotovoltaicPlantView selectOne(BasePhotovoltaicPlantView record);
List<BasePhotovoltaicPlantView> selectList(BasePhotovoltaicPlantView record);
List<BasePhotovoltaicPlantView> selectPlantDetailList(BasePhotovoltaicPlantView record);
}
......@@ -131,7 +131,7 @@ public class BaseDieselGeneratorService {
QueryWrapper<BaseDieselGeneratorEnt> queryWrapper = new QueryWrapper<>();
if (StringUtils.isNotEmpty(input.getLineId())) {
queryWrapper.lambda()
.notExists("SELECT 1 FROM base_power_line_diesel w WHERE base_diesel_generator.id = w.diesel_id AND w.is_deleted = 1 AND w.line_id <> {0}", input.getLineId())
.notExists(!StringUtils.equals(BusinessConstant.LINE_FLAG_ID, input.getLineId()), "SELECT 1 FROM base_power_line_diesel w WHERE base_diesel_generator.id = w.diesel_id AND w.is_deleted = 1 AND w.line_id <> {0}", input.getLineId())
.eq(BaseDieselGeneratorEnt::getOuId, input.getOuId());
} else {
List<String> allListByOuId = ServiceUtil.getOrgIdsByPath(context, input.getOuId());
......
......@@ -131,7 +131,7 @@ public class BaseEnergyStorageDeviceService {
QueryWrapper<BaseEnergyStorageDeviceEnt> queryWrapper = new QueryWrapper<>();
if (StringUtils.isNotEmpty(input.getLineId())) {
queryWrapper.lambda()
.notExists("SELECT 1 FROM base_power_line_storage w WHERE base_energy_storage_device.id = w.storage_id AND w.is_deleted = 1 AND w.line_id <> {0}", input.getLineId())
.notExists(!StringUtils.equals(BusinessConstant.LINE_FLAG_ID, input.getLineId()), "SELECT 1 FROM base_power_line_storage w WHERE base_energy_storage_device.id = w.storage_id AND w.is_deleted = 1 AND w.line_id <> {0}", input.getLineId())
.eq(BaseEnergyStorageDeviceEnt::getOuId, input.getOuId());
} else {
List<String> allListByOuId = ServiceUtil.getOrgIdsByPath(context, input.getOuId());
......
......@@ -5,6 +5,9 @@ import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import org.apache.commons.lang3.StringUtils;
import pps.cloud.system.service.SystemAreaService;
import pps.cloud.system.service.data.GetSysAreaInput;
import pps.cloud.system.service.data.GetSysAreaOutput;
import pps.core.base.entity.BasePhotovoltaicPlantEnt;
import pps.core.base.entity.BasePowerLineEnt;
import pps.core.base.entity.BasePowerLinePlantEnt;
......@@ -39,6 +42,7 @@ import xstartup.helper.XTransactionHelper;
import java.util.List;
import java.util.Objects;
import java.util.Optional;
/**
......@@ -50,33 +54,53 @@ import java.util.Objects;
@XService
public class BasePhotovoltaicPlantService {
@XText("新增")
/**
* 光伏电站模块--新增
* POST /base/base-photovoltaic-plant/create-base-photovoltaic-plant
* 接口ID:105466278
* 接口地址:https://app.apifox.com/project/3196988/apis/api-105466278
*
* @param context 上下文
* @param input 输入
* @return {@link XServiceResult}
*/
@XText("光伏电站模块--新增")
@XApiAnonymous
@XApiPost
public XServiceResult createBasePhotovoltaicPlant(XContext context, CreateBasePhotovoltaicPlantInput input) {
return XTransactionHelper.begin(context, () -> {
BasePhotovoltaicPlantMapper mapper = context.getBean(BasePhotovoltaicPlantMapper.class);
BasePhotovoltaicPlantEnt entity = XCopyUtils.copyNewObject(input, BasePhotovoltaicPlantEnt.class);
PpsUserSession session = context.getSession(PpsUserSession.class);
BasePhotovoltaicPlantEnt entity = XCopyUtils.copyNewObject(input, BasePhotovoltaicPlantEnt.class);
BaseUtils.setBaseModelDefault(entity, session);
return XTransactionHelper.begin(context, () -> {
BasePhotovoltaicPlantMapper mapper = context.getBean(BasePhotovoltaicPlantMapper.class);
mapper.insert(entity);
return XServiceResult.OK;
});
}
@XText("更新")
/**
* 光伏电站模块--修改
* POST /base/base-photovoltaic-plant/update-base-photovoltaic-plant
* 接口ID:105466279
* 接口地址:https://app.apifox.com/project/3196988/apis/api-105466279
*
* @param context 上下文
* @param input 输入
* @return {@link XServiceResult}
*/
@XText("光伏电站模块--修改")
@XApiAnonymous
@XApiPost
public XServiceResult updateBasePhotovoltaicPlant(XContext context, UpdateBasePhotovoltaicPlantInput input) {
return XTransactionHelper.begin(context, () -> {
PpsUserSession session = context.getSession(PpsUserSession.class);
BasePhotovoltaicPlantMapper mapper = context.getBean(BasePhotovoltaicPlantMapper.class);
BasePhotovoltaicPlantEnt entity = this.selectOneByPlantId(input.getId(), mapper);
if (Objects.isNull(entity)) {
return XServiceResult.error(context, XError.NotFound);
}
XCopyUtils.copyObject(input, entity);
PpsUserSession session = context.getSession(PpsUserSession.class);
BaseUtils.setBaseModelDefault(entity, session);
return XTransactionHelper.begin(context, () -> {
mapper.updateById(entity);
return XServiceResult.OK;
});
......@@ -106,7 +130,17 @@ public class BasePhotovoltaicPlantService {
});
}
@XText("根据id获取详情")
/**
* 光伏电站模块--详情
* GET /base/base-photovoltaic-plant/get-base-photovoltaic-plant
* 接口ID:105466276
* 接口地址:https://app.apifox.com/project/3196988/apis/api-105466276
*
* @param context 上下文
* @param input 输入
* @return {@link XSingleResult}<{@link GetBasePhotovoltaicPlantOutput}>
*/
@XText("光伏电站模块--详情")
@XApiAnonymous
@XApiGet
public XSingleResult<GetBasePhotovoltaicPlantOutput> getBasePhotovoltaicPlant(XContext context, GetBasePhotovoltaicPlantInput input) {
......@@ -124,11 +158,16 @@ public class BasePhotovoltaicPlantService {
if (Objects.nonNull(organizationView)) {
output.setProvince(organizationView.getProvinceName());
}
output.setAreaName(Optional.ofNullable(this.getSysAreaInfo(context, GetSysAreaInput.builder()
.id(entity.getAreaCode())
.build()))
.map(GetSysAreaOutput::getName)
.orElse(null));
return XSingleResult.success(output);
}
/**
* 分页查询
* 光伏电站模块--分页查询
* GET /base/base-photovoltaic-plant/query-base-photovoltaic-plant
* 接口ID:105466277
* 接口地址:https://app.apifox.com/project/3196988/apis/api-105466277
......@@ -137,7 +176,7 @@ public class BasePhotovoltaicPlantService {
* @param input 输入
* @return {@link XPageResult}<{@link QueryBasePhotovoltaicPlantOutput}>
*/
@XText("分页查询")
@XText("光伏电站模块--分页查询")
@XApiAnonymous
@XApiGet
public XPageResult<QueryBasePhotovoltaicPlantOutput> queryBasePhotovoltaicPlant(XContext context, QueryBasePhotovoltaicPlantInput input) {
......@@ -146,7 +185,7 @@ public class BasePhotovoltaicPlantService {
QueryWrapper<BasePhotovoltaicPlantEnt> queryWrapper = new QueryWrapper<>();
if (StringUtils.isNotEmpty(input.getLineId())) {
queryWrapper.lambda()
.notExists("SELECT 1 FROM base_power_line_plant w WHERE base_photovoltaic_plant.id = w.plant_id AND w.is_deleted = 1 AND w.line_id <> {0}", input.getLineId())
.notExists(!StringUtils.equals(BusinessConstant.LINE_FLAG_ID, input.getLineId()), "SELECT 1 FROM base_power_line_plant w WHERE base_photovoltaic_plant.id = w.plant_id AND w.is_deleted = 1 AND w.line_id <> {0}", input.getLineId())
.eq(BasePhotovoltaicPlantEnt::getOuId, input.getOuId());
} else {
List<String> allListByOuId = ServiceUtil.getOrgIdsByPath(context, input.getOuId());
......@@ -230,4 +269,18 @@ public class BasePhotovoltaicPlantService {
return mapper.selectOne(new LambdaQueryWrapper<BasePhotovoltaicPlantEnt>()
.eq(BaseModel::getId, plantId));
}
/**
* 获取系统区域信息
*
* @param context 上下文
* @param input 输入
* @return {@link GetSysAreaOutput}
*/
private GetSysAreaOutput getSysAreaInfo(XContext context, GetSysAreaInput input) {
SystemAreaService systemAreaService = context.getBean(SystemAreaService.class);
XSingleResult<GetSysAreaOutput> singleResult = systemAreaService.getSysAreaByParam(context, input);
singleResult.throwIfFail();
return singleResult.getResult();
}
}
......@@ -11,17 +11,12 @@ import pps.cloud.base.service.data.base_power_line.GetBasePowerLineViewOutput;
import pps.cloud.base.service.data.base_power_line_plant.DynamicQueryBasePowerLinePlantInput;
import pps.cloud.base.service.data.base_power_line_plant.DynamicQueryBasePowerLinePlantOutput;
import pps.cloud.base.service.data.base_power_line_storage.DynamicQueryBasePowerLineStorageInput;
import pps.cloud.base.service.data.base_power_line_storage.DynamicQueryBasePowerLineStorageOutput;
import pps.cloud.base.service.data.base_power_line_storage.DynamicQueryBasePowerLineStorageViewOutput;
import pps.cloud.base.service.data.base_power_line_wellhead.DynamicQueryBasePowerLineWellheadInput;
import pps.cloud.base.service.data.base_power_line_wellhead.DynamicQueryBasePowerLineWellheadViewOutput;
import pps.core.base.entity.BasePowerLineEnt;
import pps.core.base.entity.BasePowerLinePlantEnt;
import pps.core.base.entity.BasePowerLineStorageView;
import pps.core.base.entity.BasePowerLineWellheadView;
import pps.core.base.mapper.BasePowerLineMapper;
import pps.core.base.mapper.BasePowerLinePlantMapper;
import pps.core.base.mapper.BasePowerLineStorageViewMapper;
import pps.core.base.mapper.BasePowerLineWellheadViewMapper;
import pps.core.base.entity.*;
import pps.core.base.mapper.*;
import pps.core.common.constant.BusinessConstant;
import pps.core.common.entity.BaseModel;
import xstartup.annotation.XService;
......@@ -30,7 +25,6 @@ import xstartup.base.util.XCopyUtils;
import xstartup.data.XListResult;
import xstartup.data.XSingleResult;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
......@@ -56,8 +50,7 @@ public class BasePowerLineCloudServiceImpl implements IBasePowerLineCloudService
BasePowerLineEnt entity = mapper.selectOne(new LambdaQueryWrapper<BasePowerLineEnt>()
.eq(BaseModel::getId, input.getId())
);
GetBasePowerLineViewOutput output = XCopyUtils.copyNewObject(entity, GetBasePowerLineViewOutput.class);
return XSingleResult.success(output);
return XSingleResult.success(XCopyUtils.copyNewObject(entity, GetBasePowerLineViewOutput.class));
}
/**
......@@ -90,8 +83,7 @@ public class BasePowerLineCloudServiceImpl implements IBasePowerLineCloudService
.eq(StringUtils.isNotBlank(strategyId), BasePowerLineEnt::getStrategyId, strategyId)
.orderByDesc(BaseModel::getModifyTime)
);
List<DynamicQueryBasePowerLineOutput> lineOutputList = XCopyUtils.copyNewList(selectList, DynamicQueryBasePowerLineOutput.class);
return XListResult.success(lineOutputList);
return XListResult.success(XCopyUtils.copyNewList(selectList, DynamicQueryBasePowerLineOutput.class));
}
/**
......@@ -110,13 +102,7 @@ public class BasePowerLineCloudServiceImpl implements IBasePowerLineCloudService
.wellheadIds(input.getWellheadIds())
.build()
);
List<DynamicQueryBasePowerLineWellheadViewOutput> outputs;
if (CollUtil.isEmpty(wellheadViews)) {
outputs = new ArrayList<>(0);
} else {
outputs = XCopyUtils.copyNewList(wellheadViews, DynamicQueryBasePowerLineWellheadViewOutput.class);
}
return XListResult.success(outputs);
return XListResult.success(XCopyUtils.copyNewList(wellheadViews, DynamicQueryBasePowerLineWellheadViewOutput.class));
}
/**
......@@ -137,16 +123,10 @@ public class BasePowerLineCloudServiceImpl implements IBasePowerLineCloudService
.eq(StringUtils.isNotBlank(plantId), BasePowerLinePlantEnt::getPlantId, plantId)
.in(CollUtil.isNotEmpty(lineIds), BasePowerLinePlantEnt::getLineId, lineIds)
);
List<DynamicQueryBasePowerLinePlantOutput> outputs;
if (CollUtil.isEmpty(list)) {
outputs = new ArrayList<>(0);
} else {
outputs = XCopyUtils.copyNewList(
return XListResult.success(XCopyUtils.copyNewList(
list,
DynamicQueryBasePowerLinePlantOutput.class
);
}
return XListResult.success(outputs);
));
}
/**
......@@ -157,18 +137,32 @@ public class BasePowerLineCloudServiceImpl implements IBasePowerLineCloudService
* @return {@link XListResult}<{@link DynamicQueryBasePowerLineStorageViewOutput}>
*/
@Override
public XListResult<DynamicQueryBasePowerLineStorageViewOutput> queryPowerLineStorageListByLineIds(XContext context, DynamicQueryBasePowerLineStorageInput input) {
public XListResult<DynamicQueryBasePowerLineStorageViewOutput> queryPowerLineStorageAvgByLineIds(XContext context, DynamicQueryBasePowerLineStorageInput input) {
BasePowerLineStorageViewMapper mapper = context.getBean(BasePowerLineStorageViewMapper.class);
List<BasePowerLineStorageView> list = mapper.selectStorageAverageByLineIds(input.getLineIds());
List<DynamicQueryBasePowerLineStorageViewOutput> outputs;
if (CollUtil.isEmpty(list)) {
outputs = new ArrayList<>(0);
} else {
outputs = XCopyUtils.copyNewList(
return XListResult.success(XCopyUtils.copyNewList(
list,
DynamicQueryBasePowerLineStorageViewOutput.class
);
));
}
return XListResult.success(outputs);
/**
* 输电线路配置Cloud模块--条件查询线路关联储能设备信息
*
* @param context 上下文
* @param input 输入
* @return {@link XListResult}<{@link DynamicQueryBasePowerLineStorageOutput}>
*/
@Override
public XListResult<DynamicQueryBasePowerLineStorageOutput> queryPowerLineStorageListByLineIds(XContext context, DynamicQueryBasePowerLineStorageInput input) {
BasePowerLineStorageMapper storageMapper = context.getBean(BasePowerLineStorageMapper.class);
List<BasePowerLineStorageEnt> list = storageMapper.selectList(new LambdaQueryWrapper<BasePowerLineStorageEnt>()
.eq(BaseModel::getIsDeleted, BusinessConstant.ONE)
.in(BasePowerLineStorageEnt::getLineId, input.getLineIds())
);
return XListResult.success(XCopyUtils.copyNewList(
list,
DynamicQueryBasePowerLineStorageOutput.class
));
}
}
\ No newline at end of file
package pps.core.base.service;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.lang.UUID;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
......@@ -187,41 +186,43 @@ public class BasePriceStrategyService {
public XSingleResult<GetBasePriceStrategyOutput> getBasePriceStrategy(XContext context, GetBasePriceStrategyInput input) {
BasePriceStrategyMapper mapper = context.getBean(BasePriceStrategyMapper.class);
String strategyId = input.getId();
QueryWrapper<BasePriceStrategyEnt> queryWrapper = new QueryWrapper<>();
queryWrapper.lambda()
BasePriceStrategyEnt entity = mapper.selectOne(new LambdaQueryWrapper<BasePriceStrategyEnt>()
.select(BasePriceStrategyEnt::getId,
BasePriceStrategyEnt::getPolicyName,
BasePriceStrategyEnt::getAreaCode,
BasePriceStrategyEnt::getStrategyYear,
BasePriceStrategyEnt::getIsFixedPrice,
BasePriceStrategyEnt::getFixedElectricityPrice)
.eq(BasePriceStrategyEnt::getId, strategyId);
BasePriceStrategyEnt entity = mapper.selectOne(queryWrapper);
.eq(BasePriceStrategyEnt::getId, strategyId)
.eq(BaseModel::getIsDeleted, BusinessConstant.ONE)
);
if (Objects.isNull(entity)) {
return XSingleResult.error(context, XError.NotFound);
}
GetBasePriceStrategyOutput output = XCopyUtils.copyNewObject(entity, GetBasePriceStrategyOutput.class);
//查月份
BasePriceStrategyMonthMapper monthMapper = context.getBean(BasePriceStrategyMonthMapper.class);
List<BasePriceStrategyMonthEnt> monthEntList = monthMapper.selectList(new QueryWrapper<BasePriceStrategyMonthEnt>()
.lambda()
List<BasePriceStrategyMonthEnt> monthEntList = monthMapper.selectList(new LambdaQueryWrapper<BasePriceStrategyMonthEnt>()
.select(BasePriceStrategyMonthEnt::getId, BasePriceStrategyMonthEnt::getStrategyMonth)
.eq(BasePriceStrategyMonthEnt::getStrategyId, strategyId)
.eq(BaseModel::getIsDeleted, BusinessConstant.ONE)
.last(" ORDER BY strategy_month + 0 ")
);
if (CollUtil.isNotEmpty(monthEntList)) {
List<GetBasePriceStrategyMonthOutput> months = XCopyUtils.copyNewList(monthEntList, GetBasePriceStrategyMonthOutput.class);
//查明细
BasePriceStrategyDetailMapper detailMapper = context.getBean(BasePriceStrategyDetailMapper.class);
List<BasePriceStrategyDetailEnt> detailEntList = detailMapper.selectList(new QueryWrapper<BasePriceStrategyDetailEnt>()
.lambda()
List<BasePriceStrategyDetailEnt> detailEntList = detailMapper.selectList(new LambdaQueryWrapper<BasePriceStrategyDetailEnt>()
.select(BasePriceStrategyDetailEnt::getStrategyMonth,
BasePriceStrategyDetailEnt::getPeriodTypeKey,
BasePriceStrategyDetailEnt::getStartTime,
BasePriceStrategyDetailEnt::getEndTime,
BasePriceStrategyDetailEnt::getElectrovalence,
BasePriceStrategyDetailEnt::getInternalSettlementPrice)
.eq(BasePriceStrategyDetailEnt::getStrategyId, strategyId));
.eq(BasePriceStrategyDetailEnt::getStrategyId, strategyId)
.eq(BaseModel::getIsDeleted, BusinessConstant.ONE)
.orderByAsc(BasePriceStrategyDetailEnt::getStartTime)
);
if (CollUtil.isNotEmpty(detailEntList)) {
Map<String, String> dictMap = ServiceUtil.getDictMap(context, BusinessConstant.TIME_FRAME);
List<GetBasePriceStrategyDetailOutput> detailOutputs = XCopyUtils.copyNewList(detailEntList, GetBasePriceStrategyDetailOutput.class);
......
......@@ -134,7 +134,7 @@ public class BaseWellheadService {
QueryWrapper<BaseWellheadEnt> queryWrapper = new QueryWrapper<>();
if (StringUtils.isNotEmpty(input.getLineId())) {
queryWrapper.lambda()
.notExists("SELECT 1 FROM base_power_line_wellhead w WHERE base_wellhead.id = w.wellhead_id AND w.is_deleted = 1 AND w.line_id <> {0}", input.getLineId())
.notExists(!StringUtils.equals(BusinessConstant.LINE_FLAG_ID, input.getLineId()), "SELECT 1 FROM base_power_line_wellhead w WHERE base_wellhead.id = w.wellhead_id AND w.is_deleted = 1 AND w.line_id <> {0}", input.getLineId())
.eq(BaseWellheadEnt::getOuId, input.getOuId());
} else {
List<String> allListByOuId = ServiceUtil.getOrgIdsByPath(context, input.getOuId());
......
......@@ -5,6 +5,12 @@ import xstartup.annotation.XText;
import java.math.BigDecimal;
/**
* 光伏电站
*
* @author ZWT
* @date 2023/10/10
*/
@Data
public class CreateBasePhotovoltaicPlantInput {
......@@ -28,9 +34,22 @@ public class CreateBasePhotovoltaicPlantInput {
@XText("阵列朝向")
private BigDecimal arrayOrientation;
@XText("组织机构name")
private String ouName;
@XText("光伏设备规格型号name(字典获取)")
private String photovoltaicModelName;
@XText("经度(°)")
private BigDecimal longitude;
@XText("纬度(°)")
private BigDecimal latitude;
@XText("高程(m)")
private BigDecimal elevation;
@XText("地区编码")
private Integer areaCode;
}
package pps.core.base.service.data.base_photovoltaic_plant;
import lombok.Data;
import xstartup.annotation.XText;
import java.math.BigDecimal;
import java.util.Date;
@Data
public class CreateBasePhotovoltaicPlantOutput {
@XText("ID")
private String id;
@XText("是否删除(0_是;1_否)")
private Integer isDeleted;
@XText("创建人ID")
private String createById;
@XText("创建人名称")
private String createByName;
@XText("创建时间")
private Date createTime;
@XText("修改人ID")
private String modifyById;
@XText("修改人名称")
private String modifyByName;
@XText("修改时间")
private Date modifyTime;
@XText("组织机构ID")
private String ouId;
@XText("电站名称")
private String stationName;
@XText("出厂编号")
private String makerNumber;
@XText("光伏设备规格型号key(字典获取)")
private String photovoltaicModelKey;
@XText("安装倾角")
private BigDecimal mountingAngle;
@XText("装机总量(KWP)")
private BigDecimal totalPower;
@XText("阵列朝向")
private BigDecimal arrayOrientation;
@XText("组织机构name")
private String ouName;
@XText("光伏设备规格型号name(字典获取)")
private String photovoltaicModelName;
}
......@@ -2,9 +2,10 @@ package pps.core.base.service.data.base_photovoltaic_plant;
import lombok.Data;
import xstartup.annotation.XText;
@Data
public class DeleteBasePhotovoltaicPlantInput {
@XText("ID")
private String id;
}
\ No newline at end of file
package pps.core.base.service.data.base_photovoltaic_plant;
import lombok.Data;
import xstartup.annotation.XText;
import java.math.BigDecimal;
import java.util.Date;
@Data
public class DeleteBasePhotovoltaicPlantOutput {
@XText("ID")
private String id;
@XText("是否删除(0_是;1_否)")
private Integer isDeleted;
@XText("创建人ID")
private String createById;
@XText("创建人名称")
private String createByName;
@XText("创建时间")
private Date createTime;
@XText("修改人ID")
private String modifyById;
@XText("修改人名称")
private String modifyByName;
@XText("修改时间")
private Date modifyTime;
@XText("组织机构ID")
private String ouId;
@XText("电站名称")
private String stationName;
@XText("出厂编号")
private String makerNumber;
@XText("光伏设备规格型号key(字典获取)")
private String photovoltaicModelKey;
@XText("安装倾角")
private BigDecimal mountingAngle;
@XText("装机总量(KWP)")
private BigDecimal totalPower;
@XText("阵列朝向")
private BigDecimal arrayOrientation;
@XText("组织机构name")
private String ouName;
@XText("光伏设备规格型号name(字典获取)")
private String photovoltaicModelName;
}
package pps.core.base.service.data.base_photovoltaic_plant;
import lombok.Data;
import xstartup.annotation.XText;
import java.math.BigDecimal;
import java.util.Date;
@Data
public class DynamicQueryBasePhotovoltaicPlantInput {
@XText("ID")
private String id;
@XText("是否删除(0_是;1_否)")
private Integer isDeleted;
@XText("创建人ID")
private String createById;
@XText("创建人名称")
private String createByName;
@XText("创建时间")
private Date createTime;
@XText("修改人ID")
private String modifyById;
@XText("修改人名称")
private String modifyByName;
@XText("修改时间")
private Date modifyTime;
@XText("组织机构ID")
private String ouId;
@XText("电站名称")
private String stationName;
@XText("出厂编号")
private String makerNumber;
@XText("光伏设备规格型号key(字典获取)")
private String photovoltaicModelKey;
@XText("安装倾角")
private BigDecimal mountingAngle;
@XText("装机总量(KWP)")
private BigDecimal totalPower;
@XText("阵列朝向")
private BigDecimal arrayOrientation;
@XText("组织机构name")
private String ouName;
@XText("光伏设备规格型号name(字典获取)")
private String photovoltaicModelName;
}
package pps.core.base.service.data.base_photovoltaic_plant;
import lombok.Data;
import xstartup.annotation.XText;
import java.math.BigDecimal;
import java.util.Date;
@Data
public class DynamicQueryBasePhotovoltaicPlantOutput {
@XText("ID")
private String id;
@XText("是否删除(0_是;1_否)")
private Integer isDeleted;
@XText("创建人ID")
private String createById;
@XText("创建人名称")
private String createByName;
@XText("创建时间")
private Date createTime;
@XText("修改人ID")
private String modifyById;
@XText("修改人名称")
private String modifyByName;
@XText("修改时间")
private Date modifyTime;
@XText("组织机构ID")
private String ouId;
@XText("电站名称")
private String stationName;
@XText("出厂编号")
private String makerNumber;
@XText("光伏设备规格型号key(字典获取)")
private String photovoltaicModelKey;
@XText("安装倾角")
private BigDecimal mountingAngle;
@XText("装机总量(KWP)")
private BigDecimal totalPower;
@XText("阵列朝向")
private BigDecimal arrayOrientation;
@XText("组织机构name")
private String ouName;
@XText("光伏设备规格型号name(字典获取)")
private String photovoltaicModelName;
}
package pps.core.base.service.data.base_photovoltaic_plant;
import lombok.Data;
import xstartup.annotation.XText;
import java.math.BigDecimal;
import java.util.Date;
@Data
public class DynamicQueryBasePhotovoltaicPlantViewOutput {
@XText("ID")
private String id;
@XText("是否删除(0_是;1_否)")
private Integer isDeleted;
@XText("创建人ID")
private String createById;
@XText("创建人名称")
private String createByName;
@XText("创建时间")
private Date createTime;
@XText("修改人ID")
private String modifyById;
@XText("修改人名称")
private String modifyByName;
@XText("修改时间")
private Date modifyTime;
@XText("组织机构ID")
private String ouId;
@XText("电站名称")
private String stationName;
@XText("出厂编号")
private String makerNumber;
@XText("光伏设备规格型号key(字典获取)")
private String photovoltaicModelKey;
@XText("安装倾角")
private BigDecimal mountingAngle;
@XText("装机总量(KWP)")
private BigDecimal totalPower;
@XText("阵列朝向")
private BigDecimal arrayOrientation;
@XText("组织机构name")
private String ouName;
@XText("光伏设备规格型号name(字典获取)")
private String photovoltaicModelName;
}
......@@ -2,11 +2,10 @@ package pps.core.base.service.data.base_photovoltaic_plant;
import lombok.Data;
import xstartup.annotation.XText;
@Data
public class GetBasePhotovoltaicPlantInput {
@XText("ID")
private String id;
}
\ No newline at end of file
......@@ -4,34 +4,19 @@ import lombok.Data;
import xstartup.annotation.XText;
import java.math.BigDecimal;
import java.util.Date;
/**
* 光伏电站
*
* @author ZWT
* @date 2023/10/10
*/
@Data
public class GetBasePhotovoltaicPlantOutput {
@XText("ID")
private String id;
@XText("是否删除(1_是;0_否)")
private Integer isDeleted;
@XText("创建人ID")
private String createById;
@XText("创建人名称")
private String createByName;
@XText("创建时间")
private Date createTime;
@XText("修改人ID")
private String modifyById;
@XText("修改人名称")
private String modifyByName;
@XText("修改时间")
private Date modifyTime;
@XText("组织机构ID")
private String ouId;
......@@ -62,4 +47,18 @@ public class GetBasePhotovoltaicPlantOutput {
@XText("所在地区")
private String province;
@XText("经度(°)")
private BigDecimal longitude;
@XText("纬度(°)")
private BigDecimal latitude;
@XText("高程(m)")
private BigDecimal elevation;
@XText("地区编码")
private Integer areaCode;
@XText("地区名称")
private String areaName;
}
package pps.core.base.service.data.base_photovoltaic_plant;
import lombok.Data;
import xstartup.annotation.XText;
import java.math.BigDecimal;
import java.util.Date;
@Data
public class GetBasePhotovoltaicPlantViewInput {
@XText("ID")
private String id;
@XText("是否删除(0_是;1_否)")
private Integer isDeleted;
@XText("创建人ID")
private String createById;
@XText("创建人名称")
private String createByName;
@XText("创建时间")
private Date createTime;
@XText("修改人ID")
private String modifyById;
@XText("修改人名称")
private String modifyByName;
@XText("修改时间")
private Date modifyTime;
@XText("组织机构ID")
private String ouId;
@XText("电站名称")
private String stationName;
@XText("出厂编号")
private String makerNumber;
@XText("光伏设备规格型号key(字典获取)")
private String photovoltaicModelKey;
@XText("安装倾角")
private BigDecimal mountingAngle;
@XText("装机总量(KWP)")
private BigDecimal totalPower;
@XText("阵列朝向")
private BigDecimal arrayOrientation;
@XText("组织机构name")
private String ouName;
@XText("光伏设备规格型号name(字典获取)")
private String photovoltaicModelName;
}
package pps.core.base.service.data.base_photovoltaic_plant;
import lombok.Data;
import xstartup.annotation.XText;
import java.math.BigDecimal;
import java.util.Date;
@Data
public class GetBasePhotovoltaicPlantViewOutput {
@XText("ID")
private String id;
@XText("是否删除(0_是;1_否)")
private Integer isDeleted;
@XText("创建人ID")
private String createById;
@XText("创建人名称")
private String createByName;
@XText("创建时间")
private Date createTime;
@XText("修改人ID")
private String modifyById;
@XText("修改人名称")
private String modifyByName;
@XText("修改时间")
private Date modifyTime;
@XText("组织机构ID")
private String ouId;
@XText("电站名称")
private String stationName;
@XText("出厂编号")
private String makerNumber;
@XText("光伏设备规格型号key(字典获取)")
private String photovoltaicModelKey;
@XText("安装倾角")
private BigDecimal mountingAngle;
@XText("装机总量(KWP)")
private BigDecimal totalPower;
@XText("阵列朝向")
private BigDecimal arrayOrientation;
@XText("组织机构name")
private String ouName;
@XText("光伏设备规格型号name(字典获取)")
private String photovoltaicModelName;
}
package pps.core.base.service.data.base_photovoltaic_plant;
import lombok.Data;
import xstartup.annotation.XText;
import java.math.BigDecimal;
import java.util.Date;
@Data
public class GetSysOrganizationAndPlantViewOutput {
@XText("主键")
private String id;
......@@ -62,6 +64,7 @@ public class GetSysOrganizationAndPlantViewOutput {
@XText("父级id")
private String parentOuId;
private String type;
@XText("经度")
......@@ -73,187 +76,6 @@ public class GetSysOrganizationAndPlantViewOutput {
@XText("高程")
private BigDecimal elevation;
public BigDecimal getLongitude() {
return longitude;
}
public void setLongitude(BigDecimal longitude) {
this.longitude = longitude;
}
public BigDecimal getLatitude() {
return latitude;
}
public void setLatitude(BigDecimal latitude) {
this.latitude = latitude;
}
public BigDecimal getElevation() {
return elevation;
}
public void setElevation(BigDecimal elevation) {
this.elevation = elevation;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public String getId() {
return this.id;
}
public void setId(String value) {
this.id = value;
}
public String getOuCode() {
return this.ouCode;
}
public void setOuCode(String value) {
this.ouCode = value;
}
public String getOuName() {
return this.ouName;
}
public void setOuName(String value) {
this.ouName = value;
}
public String getShortName() {
return this.shortName;
}
public void setShortName(String value) {
this.shortName = value;
}
public String getOuLevel() {
return this.ouLevel;
}
public void setOuLevel(String value) {
this.ouLevel = value;
}
public String getDescription() {
return this.description;
}
public void setDescription(String value) {
this.description = value;
}
public String getCreateById() {
return this.createById;
}
public void setCreateById(String value) {
this.createById = value;
}
public String getCreateByName() {
return this.createByName;
}
public void setCreateByName(String value) {
this.createByName = value;
}
public Date getCreateTime() {
return this.createTime;
}
public void setCreateTime(Date value) {
this.createTime = value;
}
public String getModifyById() {
return this.modifyById;
}
public void setModifyById(String value) {
this.modifyById = value;
}
public String getModifyByName() {
return this.modifyByName;
}
public void setModifyByName(String value) {
this.modifyByName = value;
}
public Date getModifyTime() {
return this.modifyTime;
}
public void setModifyTime(Date value) {
this.modifyTime = value;
}
public String getPostCode() {
return this.postCode;
}
public void setPostCode(String value) {
this.postCode = value;
}
public String getPostAddress() {
return this.postAddress;
}
public void setPostAddress(String value) {
this.postAddress = value;
}
public String getFaxNo() {
return this.faxNo;
}
public void setFaxNo(String value) {
this.faxNo = value;
}
public String getPhone() {
return this.phone;
}
public void setPhone(String value) {
this.phone = value;
}
public String getCountry() {
return this.country;
}
public void setCountry(String value) {
this.country = value;
}
public Integer getProvince() {
return this.province;
}
public void setProvince(Integer value) {
this.province = value;
}
public String getParentOuId() {
return parentOuId;
}
public void setParentOuId(String parentOuId) {
this.parentOuId = parentOuId;
}
@XText("地区编码")
private Integer areaCode;
}
......@@ -46,4 +46,16 @@ public class QueryBasePhotovoltaicPlantInput extends XPageInput {
@XText("线路ID")
private String lineId;
@XText("经度(°)")
private BigDecimal longitude;
@XText("纬度(°)")
private BigDecimal latitude;
@XText("高程(m)")
private BigDecimal elevation;
@XText("地区编码")
private Integer areaCode;
}
......@@ -43,4 +43,16 @@ public class QueryBasePhotovoltaicPlantOutput {
@XText("光伏设备规格型号name(字典获取)")
private String photovoltaicModelName;
@XText("经度(°)")
private BigDecimal longitude;
@XText("纬度(°)")
private BigDecimal latitude;
@XText("高程(m)")
private BigDecimal elevation;
@XText("地区编码")
private Integer areaCode;
}
package pps.core.base.service.data.base_photovoltaic_plant;
import lombok.Data;
import xstartup.annotation.XText;
import xstartup.base.data.XPageInput;
import java.math.BigDecimal;
import java.util.Date;
@Data
public class QueryBasePhotovoltaicPlantViewInput extends XPageInput {
@XText("ID")
private String id;
@XText("是否删除(0_是;1_否)")
private Integer isDeleted;
@XText("创建人ID")
private String createById;
@XText("创建人名称")
private String createByName;
@XText("创建时间")
private Date createTime;
@XText("修改人ID")
private String modifyById;
@XText("修改人名称")
private String modifyByName;
@XText("修改时间")
private Date modifyTime;
@XText("组织机构ID")
private String ouId;
@XText("电站名称")
private String stationName;
@XText("出厂编号")
private String makerNumber;
@XText("光伏设备规格型号key(字典获取)")
private String photovoltaicModelKey;
@XText("安装倾角")
private BigDecimal mountingAngle;
@XText("装机总量(KWP)")
private BigDecimal totalPower;
@XText("阵列朝向")
private BigDecimal arrayOrientation;
@XText("组织机构name")
private String ouName;
@XText("光伏设备规格型号name(字典获取)")
private String photovoltaicModelName;
}
package pps.core.base.service.data.base_photovoltaic_plant;
import lombok.Data;
import xstartup.annotation.XText;
import xstartup.base.data.XPageInput;
import java.math.BigDecimal;
import java.util.Date;
@Data
public class QueryBasePhotovoltaicPlantViewOutput extends XPageInput {
@XText("ID")
private String id;
@XText("是否删除(0_是;1_否)")
private Integer isDeleted;
@XText("创建人ID")
private String createById;
@XText("创建人名称")
private String createByName;
@XText("创建时间")
private Date createTime;
@XText("修改人ID")
private String modifyById;
@XText("修改人名称")
private String modifyByName;
@XText("修改时间")
private Date modifyTime;
@XText("组织机构ID")
private String ouId;
@XText("电站名称")
private String stationName;
@XText("出厂编号")
private String makerNumber;
@XText("光伏设备规格型号key(字典获取)")
private String photovoltaicModelKey;
@XText("安装倾角")
private BigDecimal mountingAngle;
@XText("装机总量(KWP)")
private BigDecimal totalPower;
@XText("阵列朝向")
private BigDecimal arrayOrientation;
@XText("组织机构name")
private String ouName;
@XText("光伏设备规格型号name(字典获取)")
private String photovoltaicModelName;
}
......@@ -4,8 +4,16 @@ import lombok.Data;
import xstartup.annotation.XText;
import java.math.BigDecimal;
/**
* 光伏电站
*
* @author ZWT
* @date 2023/10/10
*/
@Data
public class UpdateBasePhotovoltaicPlantInput {
@XText("ID")
private String id;
......@@ -32,7 +40,19 @@ public class UpdateBasePhotovoltaicPlantInput {
@XText("组织机构name")
private String ouName;
@XText("光伏设备规格型号name(字典获取)")
private String photovoltaicModelName;
@XText("经度(°)")
private BigDecimal longitude;
@XText("纬度(°)")
private BigDecimal latitude;
@XText("高程(m)")
private BigDecimal elevation;
@XText("地区编码")
private Integer areaCode;
}
\ No newline at end of file
package pps.core.base.service.data.base_photovoltaic_plant;
import lombok.Data;
import xstartup.annotation.XText;
import java.math.BigDecimal;
import java.util.Date;
@Data
public class UpdateBasePhotovoltaicPlantOutput {
@XText("ID")
private String id;
@XText("是否删除(0_是;1_否)")
private Integer isDeleted;
@XText("创建人ID")
private String createById;
@XText("创建人名称")
private String createByName;
@XText("创建时间")
private Date createTime;
@XText("修改人ID")
private String modifyById;
@XText("修改人名称")
private String modifyByName;
@XText("修改时间")
private Date modifyTime;
@XText("组织机构ID")
private String ouId;
@XText("电站名称")
private String stationName;
@XText("出厂编号")
private String makerNumber;
@XText("光伏设备规格型号key(字典获取)")
private String photovoltaicModelKey;
@XText("安装倾角")
private BigDecimal mountingAngle;
@XText("装机总量(KWP)")
private BigDecimal totalPower;
@XText("阵列朝向")
private BigDecimal arrayOrientation;
@XText("组织机构name")
private String ouName;
@XText("光伏设备规格型号name(字典获取)")
private String photovoltaicModelName;
}
......@@ -2,28 +2,33 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="pps.core.base.mapper.BasePhotovoltaicPlantViewMapper">
<resultMap id="BaseResultMap" type="pps.core.base.entity.BasePhotovoltaicPlantView">
<id column="id" property="id" jdbcType="VARCHAR" />
<result column="is_deleted" property="isDeleted" jdbcType="INTEGER" />
<result column="create_by_id" property="createById" jdbcType="VARCHAR" />
<result column="create_by_name" property="createByName" jdbcType="VARCHAR" />
<result column="create_time" property="createTime" jdbcType="DATE" />
<result column="modify_by_id" property="modifyById" jdbcType="VARCHAR" />
<result column="modify_by_name" property="modifyByName" jdbcType="VARCHAR" />
<result column="modify_time" property="modifyTime" jdbcType="DATE" />
<result column="ou_id" property="ouId" jdbcType="VARCHAR" />
<result column="ou_name" property="ouName" jdbcType="VARCHAR" />
<result column="station_name" property="stationName" jdbcType="VARCHAR" />
<result column="maker_number" property="makerNumber" jdbcType="VARCHAR" />
<result column="photovoltaic_model_key" property="photovoltaicModelKey" jdbcType="VARCHAR" />
<result column="photovoltaic_model_name" property="photovoltaicModelName" jdbcType="VARCHAR" />
<result column="mounting_angle" property="mountingAngle" jdbcType="DECIMAL" />
<result column="total_power" property="totalPower" jdbcType="DECIMAL" />
<result column="array_orientation" property="arrayOrientation" jdbcType="DECIMAL" />
<result column="city_code" property="cityCode" jdbcType="VARCHAR" />
<result column="province_code" property="provinceCode" jdbcType="VARCHAR" />
<id column="id" property="id" jdbcType="VARCHAR"/>
<result column="is_deleted" property="isDeleted" jdbcType="INTEGER"/>
<result column="create_by_id" property="createById" jdbcType="VARCHAR"/>
<result column="create_by_name" property="createByName" jdbcType="VARCHAR"/>
<result column="create_time" property="createTime" jdbcType="DATE"/>
<result column="modify_by_id" property="modifyById" jdbcType="VARCHAR"/>
<result column="modify_by_name" property="modifyByName" jdbcType="VARCHAR"/>
<result column="modify_time" property="modifyTime" jdbcType="DATE"/>
<result column="ou_id" property="ouId" jdbcType="VARCHAR"/>
<result column="ou_name" property="ouName" jdbcType="VARCHAR"/>
<result column="station_name" property="stationName" jdbcType="VARCHAR"/>
<result column="maker_number" property="makerNumber" jdbcType="VARCHAR"/>
<result column="photovoltaic_model_key" property="photovoltaicModelKey" jdbcType="VARCHAR"/>
<result column="photovoltaic_model_name" property="photovoltaicModelName" jdbcType="VARCHAR"/>
<result column="mounting_angle" property="mountingAngle" jdbcType="DECIMAL"/>
<result column="total_power" property="totalPower" jdbcType="DECIMAL"/>
<result column="array_orientation" property="arrayOrientation" jdbcType="DECIMAL"/>
<result column="city_code" property="cityCode" jdbcType="VARCHAR"/>
<result column="province_code" property="provinceCode" jdbcType="VARCHAR"/>
<result column="longitude" property="longitude" jdbcType="DECIMAL"/>
<result column="latitude" property="latitude" jdbcType="DECIMAL"/>
<result column="elevation" property="elevation" jdbcType="DECIMAL"/>
<result column="area_code" property="areaCode" jdbcType="INTEGER"/>
</resultMap>
<sql id="Base_Column_List">
id,
id
,
is_deleted,
create_by_id,
create_by_name,
......@@ -39,25 +44,29 @@
photovoltaic_model_name,
mounting_angle,
total_power,
array_orientation
array_orientation,
longitude,
latitude,
elevation,
area_code
</sql>
<select id="selectOne" parameterType="pps.core.base.entity.BasePhotovoltaicPlantView" resultMap="BaseResultMap">
select
<include refid="Base_Column_List" />
<include refid="Base_Column_List"/>
from base_photovoltaic_plant
where
id=#{id}
</select>
<select id="selectList" parameterType="pps.core.base.entity.BasePhotovoltaicPlantView" resultMap="BaseResultMap">
select
<include refid="Base_Column_List" />
<include refid="Base_Column_List"/>
from base_photovoltaic_plant
where
id=#{id}
</select>
<select id="selectPlantDetailList" parameterType="pps.core.base.entity.BasePhotovoltaicPlantView" resultMap="BaseResultMap">
select
p.id,
<select id="selectPlantDetailList" parameterType="pps.core.base.entity.BasePhotovoltaicPlantView"
resultMap="BaseResultMap">
select p.id,
p.is_deleted,
p.create_by_id,
p.create_by_name,
......@@ -73,14 +82,12 @@
p.photovoltaic_model_name,
p.mounting_angle,
p.total_power,
p.array_orientation ,
sa.city_code ,
p.array_orientation,
sa.city_code,
sa.province_code
from
base_photovoltaic_plant p
from base_photovoltaic_plant p
join sys_organization so on so.id = p.ou_id
left join sys_area sa on sa.id = so.province
where
p.is_deleted = #{isDeleted}
where p.is_deleted = #{isDeleted}
</select>
</mapper>
\ No newline at end of file
......@@ -60,7 +60,7 @@
AND l.wellhead_id = #{wellheadId}
</if>
ORDER BY
l.create_time ASC
l.start_seq ASC
</select>
<select id="selectWellheadListByParam" parameterType="pps.core.base.entity.BasePowerLineWellheadView"
......
......@@ -29,4 +29,8 @@ public class SpaceOptimizeLongWellheadEnt extends BaseModel implements Serializa
@XText("井号")
@TableField
private String wellNumber;
@XText("启动顺序")
@TableField
private Integer startSeq;
}
......@@ -27,4 +27,8 @@ public class SpaceOptimizeLongWellheadView extends BaseModel implements Serializ
@XText("井号")
@TableField
private String wellNumber;
@XText("启动顺序")
@TableField
private Integer startSeq;
}
......@@ -29,4 +29,8 @@ public class SpaceOptimizeMidWellheadEnt extends BaseModel implements Serializab
@XText("井号")
@TableField
private String wellNumber;
@XText("启动顺序")
@TableField
private Integer startSeq;
}
......@@ -27,4 +27,8 @@ public class SpaceOptimizeMidWellheadView extends BaseModel implements Serializa
@XText("井号")
@TableField
private String wellNumber;
@XText("启动顺序")
@TableField
private Integer startSeq;
}
......@@ -29,4 +29,8 @@ public class SpaceOptimizeShortWellheadEnt extends BaseModel implements Serializ
@XText("井号")
@TableField
private String wellNumber;
@XText("启动顺序")
@TableField
private Integer startSeq;
}
......@@ -33,4 +33,8 @@ public class SpaceOptimizeShortWellheadView extends BaseModel implements Seriali
@XText("井号")
@TableField
private String wellNumber;
@XText("启动顺序")
@TableField
private Integer startSeq;
}
......@@ -27,4 +27,8 @@ public class SpaceOptimizeWellheadDTO extends BaseModel implements Serializable
@XText("井号")
@TableField
private String wellNumber;
@XText("启动顺序")
@TableField
private Integer startSeq;
}
......@@ -18,6 +18,7 @@ public enum BusinessError implements XError {
UnableToOptimize(2106, "无法优化"),
LackOfHistoryRecord(2107, "缺少历史记录"),
CannotBeDeleted(2108, "基础制度无法删除"),
Expired(2109, "已过期,无法重新校准"),
;
private int code;
......
......@@ -271,7 +271,7 @@ public class SpaceCalibrationService {
.eq(BaseModel::getIsDeleted, BusinessConstant.ONE)
.eq(SpaceOptimizeMidPeriodEnt::getInstitutionId, historyEnt.getInstitutionId())
.ge(SpaceOptimizeMidPeriodEnt::getOptimizeDeadline, inputDate)
.le(BaseModel::getCreateTime, inputDate)
.apply("DATE_FORMAT( create_time, '%Y-%m-%d' ) <= {0}", inputDate)
.orderByDesc(BaseModel::getCreateTime)
.last("LIMIT 1")
);
......@@ -291,7 +291,7 @@ public class SpaceCalibrationService {
.eq(BaseModel::getIsDeleted, BusinessConstant.ONE)
.eq(SpaceOptimizeLongPeriodEnt::getInstitutionId, historyEnt.getInstitutionId())
.ge(SpaceOptimizeLongPeriodEnt::getOptimizeDeadline, inputDate)
.le(BaseModel::getCreateTime, inputDate)
.apply("DATE_FORMAT( create_time, '%Y-%m-%d' ) <= {0}", inputDate)
.orderByDesc(BaseModel::getCreateTime)
.last("LIMIT 1")
);
......
......@@ -191,16 +191,16 @@ public class SpaceInstitutionDetailService extends SpaceOptimizeBaseService {
.map(SpaceInstitutionWellheadEnt::getWellheadId)
.collect(Collectors.toList()));
}
List<DynamicQueryBasePowerLineWellheadViewOutput> powerLineWellheadList = this.getPowerLineWellheadList(context, wellheadInput);
if (CollUtil.isNotEmpty(powerLineWellheadList)) {
powerLineWellheadList.forEach(wellhead -> {
SpaceInstitutionWellheadEnt ent = new SpaceInstitutionWellheadEnt();
ent.setWellheadId(wellhead.getWellheadId());
ent.setWellNumber(wellhead.getWellNumber());
ent.setRunTypeKey(wellhead.getRunTypeKey());
wellheadEntList.add(ent);
});
}
// List<DynamicQueryBasePowerLineWellheadViewOutput> powerLineWellheadList = this.getPowerLineWellheadList(context, wellheadInput);
// if (CollUtil.isNotEmpty(powerLineWellheadList)) {
// powerLineWellheadList.forEach(wellhead -> {
// SpaceInstitutionWellheadEnt ent = new SpaceInstitutionWellheadEnt();
// ent.setWellheadId(wellhead.getWellheadId());
// ent.setWellNumber(wellhead.getWellNumber());
// ent.setRunTypeKey(wellhead.getRunTypeKey());
// wellheadEntList.add(ent);
// });
// }
if (CollUtil.isNotEmpty(wellheadEntList)) {
List<GetSpaceInstitutionWellheadViewOutput> wellheadViewOutputs = XCopyUtils.copyNewList(wellheadEntList, GetSpaceInstitutionWellheadViewOutput.class);
Map<String, String> runTypeMap = ServiceUtil.getDictMap(context, BusinessConstant.RUN_TYPE);
......@@ -339,6 +339,10 @@ public class SpaceInstitutionDetailService extends SpaceOptimizeBaseService {
@XApiPost
@XText("校准历史--重新优化")
public XServiceResult anewOptimizeInstitution(XContext context, UpdateSpaceInstitutionDetailInput input) {
String historyId = input.getHistoryId();
if (StringUtils.isEmpty(historyId)) {
return XServiceResult.error(context, BusinessError.LackOfHistoryRecord);
}
PpsUserSession session = context.getSession(PpsUserSession.class);
String institutionId = input.getId();
SpaceInstitutionDetailMapper mapper = context.getBean(SpaceInstitutionDetailMapper.class);
......@@ -346,6 +350,14 @@ public class SpaceInstitutionDetailService extends SpaceOptimizeBaseService {
if (Objects.isNull(detail)) {
return XServiceResult.error(context, XError.NotFound);
}
//查校准历史详情
SpaceCalibrationHistoryMapper historyMapper = context.getBean(SpaceCalibrationHistoryMapper.class);
SpaceCalibrationHistoryEnt historyEnt = historyMapper.selectById(historyId);
//过了校准日期不能再校准
Date calibrationDate = historyEnt.getCalibrationDate();
if (DateUtil.date().compareTo(calibrationDate) > 0) {
return XServiceResult.error(context, BusinessError.Expired);
}
return XTransactionHelper.begin(context, () -> {
this.updateInstitutionDetail(context, session, mapper, institutionId, input, detail);
//制度优化
......@@ -354,6 +366,38 @@ public class SpaceInstitutionDetailService extends SpaceOptimizeBaseService {
});
}
/**
* 间开优化历史--分页列表
*
* @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-----------------------------------*/
/**
* 制度优化
*
......@@ -364,8 +408,9 @@ public class SpaceInstitutionDetailService extends SpaceOptimizeBaseService {
String institutionId = detail.getId();
//取制度开始时间,判断是否可以执行
Date institutionStartDate = detail.getInstitutionStartDate();
Date institutionEndDate = detail.getInstitutionEndDate();
DateTime currentTime = DateUtil.date();
if (currentTime.compareTo(institutionStartDate) >= 0) {
if (currentTime.compareTo(institutionStartDate) >= 0 && currentTime.compareTo(institutionEndDate) <= 0) {
List<SpaceOptimizePeriodDTO> longPeriodDTOList = new ArrayList<>(32);
List<SpaceOptimizeWellheadDTO> longWellheadDTOList = new ArrayList<>(64);
List<SpaceOptimizeDurationDTO> longDurationDTOList = new ArrayList<>(128);
......@@ -375,49 +420,16 @@ public class SpaceInstitutionDetailService extends SpaceOptimizeBaseService {
List<SpaceOptimizeDurationDTO> midDurationDTOList = new ArrayList<>(128);
List<SpaceOptimizeDurationDTO> midUnOptimizeDurationList = new ArrayList<>(128);
DateTime endOfMonth = DateUtil.endOfMonth(currentTime);
if (endOfMonth.compareTo(institutionEndDate) > 0) {
endOfMonth = DateUtil.endOfDay(institutionEndDate);
}
DateTime endOfWeek = DateUtil.endOfWeek(currentTime);
String lineId = detail.getLineId();
//取年份
int year = currentTime.year();
int monthIndex = currentTime.month();
//月份要加一
int monthNum = monthIndex + 1;
//上一月
int lastMonthNum = monthIndex;
int lastYear = year;
if (monthIndex == 0) {
lastMonthNum = 12;
lastYear = year - 1;
if (endOfWeek.compareTo(institutionEndDate) > 0) {
endOfWeek = DateUtil.endOfDay(institutionEndDate);
}
SpaceOptimizeLineRelation relation = super.getOptimizeLineRelation(context, ListUtil.toList(detail));
//长期间开优化
this.institutionalOptimization(context, longPeriodDTOList, longWellheadDTOList, longDurationDTOList, longUnOptimizeDurationList, relation,
detail, BaseUtils.getExecutionCycleForMonth(currentTime), endOfMonth, monthNum, DynamicQueryPlantPredictedPowerInput.builder()
.plantIds(relation.getPlantIdsByLineIdMap().get(lineId))
.yearTime(String.valueOf(year))
.monthTime(BaseUtils.getMonthString(monthNum))
.dateType(BusinessConstant.ZERO)
.build(),
DynamicQueryStoragePredictedPowerInput.builder()
.storageIds(relation.getPlantIdsByLineIdMap().get(detail.getLineId()))
.yearTime(String.valueOf(lastYear))
.monthTime(BaseUtils.getMonthString(lastMonthNum))
.build());
//中短期间开优化
this.institutionalOptimization(context, midPeriodDTOList, midWellheadDTOList, midDurationDTOList, midUnOptimizeDurationList, relation,
detail, BaseUtils.getExecutionCycleForWeek(currentTime), endOfWeek, monthNum,
DynamicQueryPlantPredictedPowerInput.builder()
.plantIds(relation.getPlantIdsByLineIdMap().get(lineId))
.startTime(DateUtil.beginOfWeek(currentTime).toString(BusinessConstant.DATE_FORMAT_DAY))
.endTime(DateUtil.beginOfWeek(DateUtil.nextWeek()).toString(BusinessConstant.DATE_FORMAT_DAY))
.dateType(BusinessConstant.ONE)
.build(),
DynamicQueryStoragePredictedPowerInput.builder()
.storageIds(relation.getPlantIdsByLineIdMap().get(lineId))
.startTime(DateUtil.offsetDay(currentTime, -7).toString(BusinessConstant.DATE_FORMAT_DAY))
.endTime(currentTime.toString(BusinessConstant.DATE_FORMAT_DAY))
.build()
);
String lineId = detail.getLineId();
String longExecutionCycle;
String midExecutionCycle;
//逻辑删除已创建的长期优化数据
SpaceOptimizeLongPeriodMapper longPeriodMapper = context.getBean(SpaceOptimizeLongPeriodMapper.class);
List<SpaceOptimizeLongPeriodEnt> longPeriodEntList = longPeriodMapper.selectList(new LambdaQueryWrapper<SpaceOptimizeLongPeriodEnt>()
......@@ -426,8 +438,10 @@ public class SpaceInstitutionDetailService extends SpaceOptimizeBaseService {
.eq(SpaceOptimizeLongPeriodEnt::getInstitutionId, institutionId)
.eq(SpaceOptimizeLongPeriodEnt::getLineId, lineId)
.eq(SpaceOptimizeLongPeriodEnt::getOptimizeDeadline, endOfMonth)
.orderByDesc(BaseModel::getCreateTime)
);
if (CollUtil.isNotEmpty(longPeriodEntList)) {
longExecutionCycle = longPeriodEntList.get(0).getExecutionCycle();
List<String> longIds = longPeriodEntList.stream()
.map(BaseModel::getId)
.collect(Collectors.toList());
......@@ -446,6 +460,8 @@ public class SpaceInstitutionDetailService extends SpaceOptimizeBaseService {
.set(BaseModel::getIsDeleted, BusinessConstant.ZERO)
.in(SpaceOptimizeLongDurationEnt::getLongPeriodId, longIds)
);
} else {
longExecutionCycle = BaseUtils.getExecutionCycleForCalibration(currentTime, endOfMonth);
}
//逻辑删除已创建的中短期优化数据
SpaceOptimizeMidPeriodMapper midPeriodMapper = context.getBean(SpaceOptimizeMidPeriodMapper.class);
......@@ -455,8 +471,10 @@ public class SpaceInstitutionDetailService extends SpaceOptimizeBaseService {
.eq(SpaceOptimizeMidPeriodEnt::getInstitutionId, institutionId)
.eq(SpaceOptimizeMidPeriodEnt::getLineId, lineId)
.eq(SpaceOptimizeMidPeriodEnt::getOptimizeDeadline, endOfWeek)
.orderByDesc(BaseModel::getCreateTime)
);
if (CollUtil.isNotEmpty(midPeriodEntList)) {
midExecutionCycle = midPeriodEntList.get(0).getExecutionCycle();
List<String> midIds = midPeriodEntList.stream()
.map(BaseModel::getId)
.collect(Collectors.toList());
......@@ -475,7 +493,17 @@ public class SpaceInstitutionDetailService extends SpaceOptimizeBaseService {
.set(BaseModel::getIsDeleted, BusinessConstant.ZERO)
.in(SpaceOptimizeMidDurationEnt::getMidPeriodId, midIds)
);
} else {
midExecutionCycle = BaseUtils.getExecutionCycleForWeek(currentTime);
}
//查电站关联信息
SpaceOptimizeLineRelation relation = super.getOptimizeLineRelation(context, ListUtil.toList(detail));
//长期间开优化
this.institutionalOptimization(context, longPeriodDTOList, longWellheadDTOList, longDurationDTOList, longUnOptimizeDurationList,
relation, detail, endOfMonth, currentTime, BusinessConstant.ZERO, longExecutionCycle);
//中短期间开优化
this.institutionalOptimization(context, midPeriodDTOList, midWellheadDTOList, midDurationDTOList, midUnOptimizeDurationList,
relation, detail, endOfWeek, currentTime, BusinessConstant.ONE, midExecutionCycle);
//创建长期优化数据
int size;
SpaceOptimizeViewMapper optimizeViewMapper = context.getBean(SpaceOptimizeViewMapper.class);
......@@ -555,39 +583,6 @@ public class SpaceInstitutionDetailService extends SpaceOptimizeBaseService {
}
}
/**
* 间开优化历史--分页列表
*
* @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-----------------------------------*/
/**
* 条件查询输电线路井口列表
*
......@@ -692,27 +687,79 @@ public class SpaceInstitutionDetailService extends SpaceOptimizeBaseService {
* @param unOptimizeDurationList 取消优化工期列表
* @param relation 关系
* @param detail 细节
* @param executionCycle 执行周期
* @param optimizeDeadline 优化截止日期
* @param monthNum 月份
* @param plantPowerInput 电厂功率输入
* @param storagePowerinput 存储电源输入
* @param currentTime 当前时间
* @param dateFlag 日期标志
* @param executionCycle 执行周期
*/
private void institutionalOptimization(XContext context, List<SpaceOptimizePeriodDTO> periodDTOList, List<SpaceOptimizeWellheadDTO> wellheadDTOList,
List<SpaceOptimizeDurationDTO> durationDTOList, List<SpaceOptimizeDurationDTO> unOptimizeDurationList,
SpaceOptimizeLineRelation relation, SpaceInstitutionDetailEnt detail,
String executionCycle, Date optimizeDeadline, int monthNum,
DynamicQueryPlantPredictedPowerInput plantPowerInput, DynamicQueryStoragePredictedPowerInput storagePowerinput) {
Date optimizeDeadline, DateTime currentTime, int dateFlag, String executionCycle) {
//取年份
int year = currentTime.year();
int monthIndex = currentTime.month();
//月份要加一
int monthNum = monthIndex + 1;
DynamicQueryPlantPredictedPowerInput plantPowerInput;
DynamicQueryStoragePredictedPowerInput storagePowerinput;
//创建记录
String periodId = super.createOptimizePeriod(periodDTOList, detail.getId(), detail.getLineId(), executionCycle, optimizeDeadline);
switch (detail.getGridTypeKey()) {
//并网型优化
case "1":
if (0 == dateFlag) {
plantPowerInput = DynamicQueryPlantPredictedPowerInput.builder()
.plantIds(relation.getPlantIdsByLineIdMap().get(detail.getLineId()))
.yearTime(String.valueOf(year))
.monthTime(BaseUtils.getMonthString(monthNum))
.dateType(BusinessConstant.ZERO)
.build();
} else {
plantPowerInput = DynamicQueryPlantPredictedPowerInput.builder()
.plantIds(relation.getPlantIdsByLineIdMap().get(detail.getLineId()))
.startTime(DateUtil.beginOfWeek(currentTime).toString(BusinessConstant.DATE_FORMAT_DAY))
.endTime(DateUtil.beginOfWeek(DateUtil.nextWeek()).toString(BusinessConstant.DATE_FORMAT_DAY))
.dateType(BusinessConstant.ONE)
.build();
}
super.gridConnectedOptimization(context, wellheadDTOList, durationDTOList, unOptimizeDurationList,
relation.getWellheadsByInstitutionIdIdMap().get(detail.getId()), detail, monthNum, periodId, plantPowerInput);
break;
//离网型优化
case "0":
//上一月
int lastMonthNum = monthIndex;
int lastYear = year;
if (monthIndex == 0) {
lastMonthNum = 12;
lastYear = year - 1;
}
if (0 == dateFlag) {
plantPowerInput = DynamicQueryPlantPredictedPowerInput.builder()
.plantIds(relation.getPlantIdsByLineIdMap().get(detail.getLineId()))
.yearTime(String.valueOf(year))
.monthTime(BaseUtils.getMonthString(monthNum))
.dateType(BusinessConstant.ZERO)
.build();
storagePowerinput = DynamicQueryStoragePredictedPowerInput.builder()
.storageIds(relation.getStorageIdsByLineIdMap().get(detail.getLineId()))
.yearTime(String.valueOf(lastYear))
.monthTime(BaseUtils.getMonthString(lastMonthNum))
.build();
} else {
plantPowerInput = DynamicQueryPlantPredictedPowerInput.builder()
.plantIds(relation.getPlantIdsByLineIdMap().get(detail.getLineId()))
.startTime(DateUtil.beginOfWeek(currentTime).toString(BusinessConstant.DATE_FORMAT_DAY))
.endTime(DateUtil.beginOfWeek(DateUtil.nextWeek()).toString(BusinessConstant.DATE_FORMAT_DAY))
.dateType(BusinessConstant.ONE)
.build();
storagePowerinput = DynamicQueryStoragePredictedPowerInput.builder()
.storageIds(relation.getStorageIdsByLineIdMap().get(detail.getLineId()))
.startTime(DateUtil.offsetDay(currentTime, -7).toString(BusinessConstant.DATE_FORMAT_DAY))
.endTime(currentTime.toString(BusinessConstant.DATE_FORMAT_DAY))
.build();
}
super.offGridOptimization(context, wellheadDTOList, durationDTOList, unOptimizeDurationList,
relation.getWellheadsByInstitutionIdIdMap().get(detail.getId()),
relation.getStorageAvgMap(), detail, periodId,
......
......@@ -13,6 +13,7 @@ import pps.cloud.base.service.IBaseWellheadCloudService;
import pps.cloud.base.service.data.base_power_line_plant.DynamicQueryBasePowerLinePlantInput;
import pps.cloud.base.service.data.base_power_line_plant.DynamicQueryBasePowerLinePlantOutput;
import pps.cloud.base.service.data.base_power_line_storage.DynamicQueryBasePowerLineStorageInput;
import pps.cloud.base.service.data.base_power_line_storage.DynamicQueryBasePowerLineStorageOutput;
import pps.cloud.base.service.data.base_power_line_storage.DynamicQueryBasePowerLineStorageViewOutput;
import pps.cloud.base.service.data.base_price_strategy_detail.GetBasePriceStrategyDetailInput;
import pps.cloud.base.service.data.base_price_strategy_detail.GetBasePriceStrategyDetailOutput;
......@@ -113,7 +114,8 @@ public class SpaceOptimizeBaseService {
)
)
//取线路关联所有储能电站计算平均功率
.storageAvgMap(this.getPowerLineStorageListByLineIds(context, lineIds))
.storageAvgMap(this.getPowerLineStorageAvgByLineIds(context, lineIds))
.storageIdsByLineIdMap(this.getPowerLineStorageListByLineIds(context, lineIds))
.build();
}
......@@ -247,7 +249,7 @@ public class SpaceOptimizeBaseService {
for (int w = 0, wellheadSize = wellheadViewList.size(); w < wellheadSize; w++) {
SpaceInstitutionWellheadView wellhead = wellheadViewList.get(w);
String wellheadId = wellhead.getWellheadId();
String recordId = this.createOptimizeWellhead(wellheadDTOList, periodId, wellheadId, wellhead.getWellNumber());
String recordId = this.createOptimizeWellhead(wellheadDTOList, periodId, wellheadId, wellhead.getWellNumber(), wellhead.getStartSeq());
//取当前井口最大发电量
BigDecimal serviceRating = wellhead.getServiceRating();
List<SpaceInstitutionDurationEnt> durationConfigList = durationMap.get(wellheadId);
......@@ -366,7 +368,7 @@ public class SpaceOptimizeBaseService {
//逐15分钟计算光伏出力-井场运行功率之和,获得光伏出力不足时间段,并计算储能可用时长
Iterator<DynamicQueryStoragePredictedPowerOutput> iterator = averageEnergyStorageList.iterator();
for (DynamicQueryPlantPredictedPowerOutput avg : subAvgPowerList) {
if (avg.getPower().compareTo(totalOperatingPower) >= 0) {
if (totalOperatingPower.compareTo(avg.getPower()) >= 0) {
//电量不足,计算储能可用时长
avg.setBatteryLowFlag(false);
String hourTime = avg.getHourTime();
......@@ -407,6 +409,9 @@ public class SpaceOptimizeBaseService {
if (createTime.compareTo(openTime) >= 0 && createTime.compareTo(closeTime) <= 0) {
String endString = createTime.offsetNew(DateField.MINUTE, 15).toString(BusinessConstant.MINUTES_FORMAT);
String startString = createTime.toString(BusinessConstant.MINUTES_FORMAT);
if (StringUtils.equals(endString, BusinessConstant.START_OF_DAY_TIME)) {
endString = BusinessConstant.END_OF_DAY_TIME;
}
//电量满足跳过
if (avg.getBatteryLowFlag()) {
//创建光伏
......@@ -433,6 +438,62 @@ public class SpaceOptimizeBaseService {
}
}
}
//时间段优化
if (CollUtil.isNotEmpty(durationDTOList)) {
List<SpaceOptimizeDurationDTO> finallyList = new ArrayList<>(durationDTOList.size());
List<SpaceOptimizeDurationDTO> offList = new ArrayList<>(durationDTOList.size());
for (SpaceOptimizeDurationDTO durationDTO : durationDTOList) {
if (StringUtils.equals(periodId, durationDTO.getPeriodId())) {
offList.add(durationDTO);
} else {
finallyList.add(durationDTO);
}
}
//优化
if (CollUtil.isNotEmpty(offList)) {
Map<String, List<SpaceOptimizeDurationDTO>> collect = offList.stream()
.collect(Collectors.groupingBy(SpaceOptimizeDurationDTO::getWellheadId));
for (String wellheadId : collect.keySet()) {
List<SpaceOptimizeDurationDTO> list = collect.get(wellheadId).stream()
.sorted(Comparator.comparing(SpaceOptimizeDurationDTO::getOpenWellTime))
.collect(Collectors.toList());
int size = list.size();
if (size == 1) {
finallyList.add(list.get(0));
continue;
}
List<SpaceOptimizeDurationDTO> temporarilyList = CollUtil.newArrayList(list.get(0));
for (int i = 1; i < size; i++) {
SpaceOptimizeDurationDTO end = temporarilyList.get(temporarilyList.size() - 1);
SpaceOptimizeDurationDTO durationDTO = list.get(i);
boolean equals = StringUtils.equals(end.getGenerationTypeKey(), durationDTO.getGenerationTypeKey());
//判断类型和时间段
if (!equals) {
SpaceOptimizeDurationDTO begin = temporarilyList.get(0);
begin.setCloseWellTime(end.getCloseWellTime());
finallyList.add(begin);
temporarilyList = new ArrayList<>(12);
} else if (equals &&
!StringUtils.equals(end.getCloseWellTime(), durationDTO.getOpenWellTime()) &&
!StringUtils.equals(end.getId(), durationDTO.getId())
) {
SpaceOptimizeDurationDTO begin = temporarilyList.get(0);
begin.setCloseWellTime(end.getCloseWellTime());
finallyList.add(begin);
temporarilyList = new ArrayList<>(12);
}
temporarilyList.add(durationDTO);
if (i == size - 1) {
SpaceOptimizeDurationDTO begin = temporarilyList.get(0);
begin.setCloseWellTime(end.getCloseWellTime());
finallyList.add(begin);
}
}
}
CollUtil.clear(durationDTOList);
finallyList.forEach(f -> durationDTOList.add(f));
}
}
}
}
......@@ -480,15 +541,17 @@ public class SpaceOptimizeBaseService {
* @param periodId 期间id
* @param wellheadId 井口id
* @param wellNumber 井号
* @param startSeq 开始seq
* @return {@link String}
*/
public String createOptimizeWellhead(List<SpaceOptimizeWellheadDTO> wellheadDTOList, String periodId,
String wellheadId, String wellNumber) {
String wellheadId, String wellNumber, Integer startSeq) {
SpaceOptimizeWellheadDTO wellheadDTO = new SpaceOptimizeWellheadDTO();
BaseUtils.setBaseModelDefaultForJob(wellheadDTO);
wellheadDTO.setPeriodId(periodId);
wellheadDTO.setWellheadId(wellheadId);
wellheadDTO.setWellNumber(wellNumber);
wellheadDTO.setStartSeq(startSeq);
wellheadDTOList.add(wellheadDTO);
return wellheadDTO.getId();
}
......@@ -585,7 +648,7 @@ public class SpaceOptimizeBaseService {
for (int w = 0, wellheadSize = wellheadViewList.size(); w < wellheadSize; w++) {
SpaceInstitutionWellheadView wellhead = wellheadViewList.get(w);
String wellheadId = wellhead.getWellheadId();
String recordId = this.createOptimizeWellhead(wellheadDTOList, periodId, wellheadId, wellhead.getWellNumber());
String recordId = this.createOptimizeWellhead(wellheadDTOList, periodId, wellheadId, wellhead.getWellNumber(), wellhead.getStartSeq());
//取当前井口最大发电量
BigDecimal serviceRating = wellhead.getServiceRating();
List<SpaceInstitutionDurationEnt> durationConfigList = durationMap.get(wellheadId);
......@@ -732,7 +795,7 @@ public class SpaceOptimizeBaseService {
for (int w = 0, wellheadSize = wellheadViewList.size(); w < wellheadSize; w++) {
SpaceInstitutionWellheadView wellhead = wellheadViewList.get(w);
String wellheadId = wellhead.getWellheadId();
String recordId = this.createOptimizeWellhead(wellheadDTOList, periodId, wellheadId, wellhead.getWellNumber());
String recordId = this.createOptimizeWellhead(wellheadDTOList, periodId, wellheadId, wellhead.getWellNumber(), wellhead.getStartSeq());
List<SpaceInstitutionDurationEnt> durationConfigList = durationMap.get(wellheadId);
if (CollUtil.isEmpty(durationConfigList)) {
//没有设置时间段,无法优化
......@@ -811,7 +874,7 @@ public class SpaceOptimizeBaseService {
if (CollUtil.isNotEmpty(unOptimizeWellheadList)) {
for (SpaceInstitutionWellheadView wellhead : unOptimizeWellheadList) {
String wellheadId = wellhead.getWellheadId();
String recordId = this.createOptimizeWellhead(wellheadDTOList, periodId, wellheadId, wellhead.getWellNumber());
String recordId = this.createOptimizeWellhead(wellheadDTOList, periodId, wellheadId, wellhead.getWellNumber(), wellhead.getStartSeq());
switch (wellhead.getIntervalTypeKey()) {
//小间开(不优化)
case "0":
......@@ -956,9 +1019,9 @@ public class SpaceOptimizeBaseService {
* @param lineIds 线路ID
* @return {@link Map}<{@link String}, {@link List}<{@link DynamicQueryBasePowerLineStorageViewOutput}>>
*/
private Map<String, List<DynamicQueryBasePowerLineStorageViewOutput>> getPowerLineStorageListByLineIds(XContext context, Set<String> lineIds) {
private Map<String, List<DynamicQueryBasePowerLineStorageViewOutput>> getPowerLineStorageAvgByLineIds(XContext context, Set<String> lineIds) {
IBasePowerLineCloudService cloudService = context.getBean(IBasePowerLineCloudService.class);
XListResult<DynamicQueryBasePowerLineStorageViewOutput> result = cloudService.queryPowerLineStorageListByLineIds(context,
XListResult<DynamicQueryBasePowerLineStorageViewOutput> result = cloudService.queryPowerLineStorageAvgByLineIds(context,
DynamicQueryBasePowerLineStorageInput.builder()
.lineIds(lineIds)
.build()
......@@ -975,6 +1038,34 @@ public class SpaceOptimizeBaseService {
return collect;
}
/**
* 查询线路下所有储能设备ID
*
* @param context 上下文
* @param lineIds 线路ID
* @return {@link Map}<{@link String}, {@link List}<{@link String}>>
*/
private Map<String, List<String>> getPowerLineStorageListByLineIds(XContext context, Set<String> lineIds) {
IBasePowerLineCloudService cloudService = context.getBean(IBasePowerLineCloudService.class);
XListResult<DynamicQueryBasePowerLineStorageOutput> result = cloudService.queryPowerLineStorageListByLineIds(context,
DynamicQueryBasePowerLineStorageInput.builder()
.lineIds(lineIds)
.build());
result.throwIfFail();
List<DynamicQueryBasePowerLineStorageOutput> list = result.getResult();
Map<String, List<String>> collect;
if (CollUtil.isEmpty(list)) {
collect = new HashMap<>(0);
} else {
collect = list.stream()
.collect(
Collectors.groupingBy(DynamicQueryBasePowerLineStorageOutput::getLineId,
Collectors.mapping(DynamicQueryBasePowerLineStorageOutput::getStorageId, Collectors.toList()))
);
}
return collect;
}
/**
* 为间开井口列表设置发电功率
*
......
......@@ -20,6 +20,7 @@ import xstartup.data.XServiceResult;
import xstartup.helper.XTransactionHelper;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
/**
......@@ -61,12 +62,15 @@ public class SpaceOptimizeLongCloudServiceImpl extends SpaceOptimizeBaseService
List<SpaceOptimizeWellheadDTO> wellheadDTOList = new ArrayList<>(64);
List<SpaceOptimizeDurationDTO> durationDTOList = new ArrayList<>(128);
List<SpaceOptimizeDurationDTO> unOptimizeDurationList = new ArrayList<>(128);
String executionCycleForMonth = BaseUtils.getExecutionCycleForMonth(date);
DateTime optimizeDeadline = DateUtil.endOfMonth(date);
//优化
for (SpaceInstitutionDetailEnt detail : detailEntList) {
Date institutionEndDate = detail.getInstitutionEndDate();
DateTime optimizeDeadline = DateUtil.endOfMonth(date);
if (optimizeDeadline.compareTo(institutionEndDate) > 0) {
optimizeDeadline = DateUtil.endOfDay(institutionEndDate);
}
//创建记录
String periodId = super.createOptimizePeriod(periodDTOList, detail.getId(), detail.getLineId(), executionCycleForMonth, optimizeDeadline);
String periodId = super.createOptimizePeriod(periodDTOList, detail.getId(), detail.getLineId(), BaseUtils.getExecutionCycleForCalibration(date, optimizeDeadline), optimizeDeadline);
switch (detail.getGridTypeKey()) {
//并网型优化
case "1":
......@@ -84,7 +88,7 @@ public class SpaceOptimizeLongCloudServiceImpl extends SpaceOptimizeBaseService
super.offGridOptimization(context, wellheadDTOList, durationDTOList, unOptimizeDurationList, relation.getWellheadsByInstitutionIdIdMap().get(detail.getId()),
relation.getStorageAvgMap(), detail, periodId,
DynamicQueryStoragePredictedPowerInput.builder()
.storageIds(relation.getPlantIdsByLineIdMap().get(detail.getLineId()))
.storageIds(relation.getStorageIdsByLineIdMap().get(detail.getLineId()))
.yearTime(String.valueOf(lastYear))
.monthTime(lastMonth)
.build(),
......
......@@ -97,7 +97,6 @@ public class SpaceOptimizeLongPeriodService extends SpaceOptimizeBaseService {
return XSingleResult.error(context, XError.NotFound);
}
GetSpaceOptimizeLongPeriodViewOutput output = XCopyUtils.copyNewObject(period, GetSpaceOptimizeLongPeriodViewOutput.class);
output.setDateList(ServiceUtil.getOptimizeDateList(period.getCreateTime(), period.getOptimizeDeadline()));
//查间开制度详情
SpaceInstitutionDetailMapper detailMapper = context.getBean(SpaceInstitutionDetailMapper.class);
SpaceInstitutionDetailEnt detailEnt = detailMapper.selectById(period.getInstitutionId());
......@@ -113,12 +112,18 @@ public class SpaceOptimizeLongPeriodService extends SpaceOptimizeBaseService {
} else {
output.setStrategyDetailList(new ArrayList<>(0));
}
DateTime beginOfMonth = DateUtil.beginOfMonth(period.getOptimizeDeadline());
if (beginOfMonth.compareTo(detailEnt.getInstitutionStartDate()) < 0) {
beginOfMonth = DateUtil.date(detailEnt.getInstitutionStartDate());
}
output.setDateList(ServiceUtil.getOptimizeDateList(beginOfMonth, period.getOptimizeDeadline()));
output.setGridTypeKey(detailEnt.getGridTypeKey());
//查井口列表
SpaceOptimizeLongWellheadMapper wellheadMapper = context.getBean(SpaceOptimizeLongWellheadMapper.class);
List<SpaceOptimizeLongWellheadEnt> wellheadList = wellheadMapper.selectList(new LambdaQueryWrapper<SpaceOptimizeLongWellheadEnt>()
.eq(SpaceOptimizeLongWellheadEnt::getLongPeriodId, longPeriodId)
.eq(BaseModel::getIsDeleted, BusinessConstant.ONE)
.orderByAsc(SpaceOptimizeLongWellheadEnt::getStartSeq)
);
if (CollUtil.isNotEmpty(wellheadList)) {
List<GetSpaceOptimizeLongWellheadOutput> wellheadOutputs = XCopyUtils.copyNewList(wellheadList, GetSpaceOptimizeLongWellheadOutput.class);
......
......@@ -20,6 +20,7 @@ import xstartup.data.XServiceResult;
import xstartup.helper.XTransactionHelper;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
/**
......@@ -53,14 +54,18 @@ public class SpaceOptimizeMidCloudServiceImpl extends SpaceOptimizeBaseService i
List<SpaceOptimizeDurationDTO> durationDTOList = new ArrayList<>(128);
List<SpaceOptimizeDurationDTO> unOptimizeDurationList = new ArrayList<>(128);
String executionCycleForWeek = BaseUtils.getExecutionCycleForWeek(date);
//优化截止日期
DateTime optimizeDeadline = DateUtil.endOfWeek(date);
//日期查询范围结束条件,下周一
String nextWeek = DateUtil.beginOfWeek(DateUtil.nextWeek()).toString(BusinessConstant.DATE_FORMAT_DAY);
//优化
for (SpaceInstitutionDetailEnt detail : detailEntList) {
String detailId = detail.getId();
String lineId = detail.getLineId();
Date institutionEndDate = detail.getInstitutionEndDate();
//优化截止日期
DateTime optimizeDeadline = DateUtil.endOfWeek(date);
if (optimizeDeadline.compareTo(institutionEndDate) > 0) {
optimizeDeadline = DateUtil.endOfDay(institutionEndDate);
}
//创建记录
String periodId = super.createOptimizePeriod(periodDTOList, detailId, lineId, executionCycleForWeek, optimizeDeadline);
switch (detail.getGridTypeKey()) {
......@@ -81,7 +86,7 @@ public class SpaceOptimizeMidCloudServiceImpl extends SpaceOptimizeBaseService i
super.offGridOptimization(context, wellheadDTOList, durationDTOList, unOptimizeDurationList,
relation.getWellheadsByInstitutionIdIdMap().get(detail.getId()), relation.getStorageAvgMap(), detail, periodId,
DynamicQueryStoragePredictedPowerInput.builder()
.storageIds(relation.getPlantIdsByLineIdMap().get(detail.getLineId()))
.storageIds(relation.getStorageIdsByLineIdMap().get(detail.getLineId()))
.startTime(DateUtil.beginOfWeek(lastWeek).toString(BusinessConstant.DATE_FORMAT_DAY))
.endTime(DateUtil.endOfWeek(lastWeek).toString(BusinessConstant.DATE_FORMAT_DAY))
.build(),
......
package pps.core.space.service;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.github.pagehelper.PageHelper;
......@@ -95,7 +96,6 @@ public class SpaceOptimizeMidPeriodService extends SpaceOptimizeBaseService {
return XSingleResult.error(context, XError.NotFound);
}
GetSpaceOptimizeMidPeriodViewOutput output = XCopyUtils.copyNewObject(period, GetSpaceOptimizeMidPeriodViewOutput.class);
output.setDateList(ServiceUtil.getOptimizeDateList(period.getCreateTime(), period.getOptimizeDeadline()));
//查间开制度详情
SpaceInstitutionDetailMapper detailMapper = context.getBean(SpaceInstitutionDetailMapper.class);
SpaceInstitutionDetailEnt detailEnt = detailMapper.selectById(period.getInstitutionId());
......@@ -111,12 +111,18 @@ public class SpaceOptimizeMidPeriodService extends SpaceOptimizeBaseService {
} else {
output.setStrategyDetailList(new ArrayList<>(0));
}
DateTime beginOfWeek = DateUtil.beginOfWeek(period.getOptimizeDeadline());
if (beginOfWeek.compareTo(detailEnt.getInstitutionStartDate()) < 0) {
beginOfWeek = DateUtil.date(detailEnt.getInstitutionStartDate());
}
output.setDateList(ServiceUtil.getOptimizeDateList(beginOfWeek, period.getOptimizeDeadline()));
output.setGridTypeKey(detailEnt.getGridTypeKey());
//查井口列表
SpaceOptimizeMidWellheadMapper wellheadMapper = context.getBean(SpaceOptimizeMidWellheadMapper.class);
List<SpaceOptimizeMidWellheadEnt> wellheadList = wellheadMapper.selectList(new LambdaQueryWrapper<SpaceOptimizeMidWellheadEnt>()
.eq(SpaceOptimizeMidWellheadEnt::getMidPeriodId, midPeriodId)
.eq(BaseModel::getIsDeleted, BusinessConstant.ONE)
.orderByAsc(SpaceOptimizeMidWellheadEnt::getStartSeq)
);
if (CollUtil.isNotEmpty(wellheadList)) {
List<GetSpaceOptimizeMidWellheadOutput> wellheadOutputs = XCopyUtils.copyNewList(wellheadList, GetSpaceOptimizeMidWellheadOutput.class);
......
......@@ -107,7 +107,7 @@ public class SpaceOptimizeShortCloudServiceImpl extends SpaceOptimizeBaseService
if (CollUtil.isNotEmpty(unOptimizeWellheadList)) {
for (SpaceInstitutionWellheadEnt wellhead : unOptimizeWellheadList) {
String wellheadId = wellhead.getWellheadId();
String recordId = super.createOptimizeWellhead(wellheadDTOList, periodId, wellheadId, wellhead.getWellNumber());
String recordId = super.createOptimizeWellhead(wellheadDTOList, periodId, wellheadId, wellhead.getWellNumber(), wellhead.getStartSeq());
switch (wellhead.getIntervalTypeKey()) {
//小间开(不优化)
case "0":
......@@ -166,7 +166,7 @@ public class SpaceOptimizeShortCloudServiceImpl extends SpaceOptimizeBaseService
}
for (SpaceInstitutionWellheadEnt wellhead : needToOptimizeWellheadList) {
String wellheadId = wellhead.getWellheadId();
String recordId = super.createOptimizeWellhead(wellheadDTOList, periodId, wellheadId, wellhead.getWellNumber());
String recordId = super.createOptimizeWellhead(wellheadDTOList, periodId, wellheadId, wellhead.getWellNumber(), wellhead.getStartSeq());
if (!durationListMap.containsKey(wellheadId)) {
continue;
}
......
......@@ -36,4 +36,9 @@ public class SpaceOptimizeLineRelation {
* 储能设备参数平均值Map
*/
Map<String, List<DynamicQueryBasePowerLineStorageViewOutput>> storageAvgMap;
/**
* 储能设备Map
*/
Map<String, List<String>> storageIdsByLineIdMap;
}
......@@ -48,4 +48,10 @@ public class UpdateSpaceInstitutionDetailInput {
*/
@XText("间开制度井口配置")
List<UpdateSpaceInstitutionWellheadInput> wellheadList;
/**
* 校准历史ID
*/
@XText("校准历史ID")
private String historyId;
}
......@@ -221,7 +221,7 @@ public class ServiceUtil {
}
}
if (i == last) {
//如果结束时间不是23:59,初始化最终关井时间
//如果结束时间不是24:00,初始化最终关井时间
if (!StringUtils.equals(BusinessConstant.END_OF_DAY_TIME, closeWellTime)) {
allList.add(
SpaceOptimizeDateDuration.builder()
......
......@@ -83,6 +83,7 @@
start_interval
FROM space_institution_detail
WHERE is_current_basic = 0
AND is_deleted = 1
AND ou_id = #{ouId}),
long_period
AS (SELECT row_number() over ( PARTITION BY institution_id ORDER BY optimize_deadline DESC ) AS line_number,id,
......@@ -91,7 +92,8 @@
optimize_state,
optimize_deadline
FROM space_optimize_long_period
WHERE institution_id IN (SELECT id FROM institution_detail)),
WHERE institution_id IN (SELECT id FROM institution_detail)
AND is_deleted = 1),
mid_period
AS (SELECT row_number() over ( PARTITION BY institution_id ORDER BY optimize_deadline DESC ) AS line_number,id,
institution_id,
......@@ -99,7 +101,8 @@
optimize_state,
optimize_deadline
FROM space_optimize_mid_period
WHERE institution_id IN (SELECT id FROM institution_detail))
WHERE institution_id IN (SELECT id FROM institution_detail)
AND is_deleted = 1)
SELECT d.id,
d.ou_id,
d.line_id,
......
......@@ -110,9 +110,9 @@
wellhead_id,
well_number,
run_type_key,
interval_type_key,
IFNULL( interval_type_key, '999' ) AS interval_type_key,
interval_describe,
start_seq,
IFNULL( start_seq, 0 ) AS start_seq,
open_well_day,
close_well_day,
run_duration
......
......@@ -60,7 +60,7 @@
JOIN space_optimize_long_period p ON d.id = p.institution_id
WHERE p.is_deleted = 1
AND p.line_id = #{lineId}
ORDER BY p.optimize_deadline DESC
ORDER BY p.create_time DESC
</select>
<insert id="batchInsertList" parameterType="list">
......
......@@ -13,6 +13,7 @@
<result column="long_period_id" property="longPeriodId" jdbcType="VARCHAR"/>
<result column="wellhead_id" property="wellheadId" jdbcType="VARCHAR"/>
<result column="well_number" property="wellNumber" jdbcType="VARCHAR"/>
<result column="start_seq" property="startSeq" jdbcType="INTEGER"/>
</resultMap>
<sql id="Base_Column_List">
id
......@@ -26,7 +27,8 @@
modify_time,
long_period_id,
wellhead_id,
well_number
well_number,
start_seq
</sql>
<select id="selectOne" parameterType="pps.core.space.entity.SpaceOptimizeLongWellheadView"
resultMap="BaseResultMap">
......
......@@ -60,6 +60,6 @@
JOIN space_optimize_mid_period p ON d.id = p.institution_id
WHERE p.is_deleted = 1
AND p.line_id = #{lineId}
ORDER BY p.optimize_deadline DESC
ORDER BY p.create_time DESC
</select>
</mapper>
\ No newline at end of file
<?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="pps.core.space.mapper.SpaceOptimizeMidWellheadViewMapper">
<resultMap id="BaseResultMap" type="pps.core.space.entity.SpaceOptimizeMidWellheadView">
<id column="id" property="id" jdbcType="VARCHAR"/>
<result column="is_deleted" property="isDeleted" jdbcType="INTEGER"/>
<result column="create_by_id" property="createById" jdbcType="VARCHAR"/>
<result column="create_by_name" property="createByName" jdbcType="VARCHAR"/>
<result column="create_time" property="createTime" jdbcType="DATE"/>
<result column="modify_by_id" property="modifyById" jdbcType="VARCHAR"/>
<result column="modify_by_name" property="modifyByName" jdbcType="VARCHAR"/>
<result column="modify_time" property="modifyTime" jdbcType="DATE"/>
<result column="mid_period_id" property="midPeriodId" jdbcType="VARCHAR"/>
<result column="wellhead_id" property="wellheadId" jdbcType="VARCHAR"/>
<result column="well_number" property="wellNumber" jdbcType="VARCHAR"/>
<result column="start_seq" property="startSeq" jdbcType="INTEGER"/>
</resultMap>
<sql id="Base_Column_List">
id
,
is_deleted,
create_by_id,
create_by_name,
create_time,
modify_by_id,
modify_by_name,
modify_time,
mid_period_id,
wellhead_id,
well_number,
start_seq
</sql>
<select id="selectOne" parameterType="pps.core.space.entity.SpaceOptimizeMidWellheadView" resultMap="BaseResultMap">
select
<include refid="Base_Column_List"/>
from space_optimize_mid_wellhead
where
id=#{id}
</select>
<select id="selectList" parameterType="pps.core.space.entity.SpaceOptimizeMidWellheadView"
resultMap="BaseResultMap">
select
<include refid="Base_Column_List"/>
from space_optimize_mid_wellhead
where
id=#{id}
</select>
</mapper>
\ No newline at end of file
......@@ -13,6 +13,7 @@
<result column="short_period_id" property="shortPeriodId" jdbcType="VARCHAR"/>
<result column="wellhead_id" property="wellheadId" jdbcType="VARCHAR"/>
<result column="well_number" property="wellNumber" jdbcType="VARCHAR"/>
<result column="start_seq" property="startSeq" jdbcType="INTEGER"/>
</resultMap>
<sql id="Base_Column_List">
id
......@@ -26,7 +27,8 @@
modify_time,
short_period_id,
wellhead_id,
well_number
well_number,
start_seq
</sql>
<select id="selectOne" parameterType="pps.core.space.entity.SpaceOptimizeShortWellheadView"
resultMap="BaseResultMap">
......
......@@ -27,7 +27,7 @@
<insert id="longWellheadBatchInsertList" parameterType="list">
INSERT INTO space_optimize_long_wellhead ( id, create_by_id, create_by_name, create_time,
modify_by_id, modify_by_name, modify_time, long_period_id, wellhead_id, well_number )
modify_by_id, modify_by_name, modify_time, long_period_id, wellhead_id, well_number, start_seq)
VALUES
<foreach collection="list" item="item" separator=",">
(
......@@ -40,7 +40,8 @@
#{item.modifyTime},
#{item.periodId},
#{item.wellheadId},
#{item.wellNumber}
#{item.wellNumber},
#{item.startSeq}
)
</foreach>
</insert>
......@@ -115,7 +116,7 @@
<insert id="midWellheadBatchInsertList" parameterType="list">
INSERT INTO space_optimize_mid_wellhead ( id, create_by_id, create_by_name, create_time,
modify_by_id, modify_by_name, modify_time, mid_period_id, wellhead_id, well_number )
modify_by_id, modify_by_name, modify_time, mid_period_id, wellhead_id, well_number, start_seq)
VALUES
<foreach collection="list" item="item" separator=",">
(
......@@ -128,7 +129,8 @@
#{item.modifyTime},
#{item.periodId},
#{item.wellheadId},
#{item.wellNumber}
#{item.wellNumber},
#{item.startSeq}
)
</foreach>
</insert>
......@@ -201,7 +203,7 @@
<insert id="shortWellheadBatchInsertList" parameterType="list">
INSERT INTO space_optimize_short_wellhead (id, create_by_id, create_by_name, create_time, modify_by_id,
modify_by_name, modify_time, short_period_id, wellhead_id, well_number)
modify_by_name, modify_time, short_period_id, wellhead_id, well_number, start_seq)
VALUES
<foreach collection="list" item="item" separator=",">
(
......@@ -214,7 +216,8 @@
#{item.modifyTime},
#{item.periodId},
#{item.wellheadId},
#{item.wellNumber}
#{item.wellNumber},
#{item.startSeq}
)
</foreach>
</insert>
......
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