Commit 7e690066 authored by ZWT's avatar ZWT

得到的

parent 01bce0a4
......@@ -301,4 +301,20 @@ public class BaseUtils {
public static String randomUUIDString() {
return UUID.randomUUID(true).toString(true);
}
/**
* 字符串转日期时间
*
* @param dateStr 日期str
* @return {@link DateTime }
*/
public static DateTime strToDateTime(String dateStr) {
//转换开始时间和结束时间(开始时间不能为24:00)
if (CharSequenceUtil.equals(dateStr, BusinessConstant.END_OF_DAY_TIME)) {
return BusinessConstant.DATE_FLAG;
} else {
return DateUtil.parse(dateStr + BusinessConstant.INITIALIZATION_SECOND, BusinessConstant.TIME_FORMAT);
}
}
}
\ No newline at end of file
package pps.core.base.service;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.text.CharSequenceUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import pps.cloud.base.service.IBasePriceStrategyCloudService;
......@@ -12,6 +10,7 @@ import pps.core.base.entity.BasePriceStrategyDetailEnt;
import pps.core.base.mapper.BasePriceStrategyDetailMapper;
import pps.core.common.constant.BusinessConstant;
import pps.core.common.entity.BaseModel;
import pps.core.common.utils.BaseUtils;
import xstartup.annotation.XService;
import xstartup.base.XContext;
import xstartup.data.XListResult;
......@@ -64,27 +63,12 @@ public class BasePriceStrategyCloudServiceImpl implements IBasePriceStrategyClou
output.setPeriodTypeKey(ent.getPeriodTypeKey());
output.setStartTime(ent.getStartTime());
output.setEndTime(ent.getEndTime());
output.setOpenTime(this.strToDateTime(ent.getStartTime()));
output.setCloseTime(this.strToDateTime(ent.getEndTime()));
output.setOpenTime(BaseUtils.strToDateTime(ent.getStartTime()));
output.setCloseTime(BaseUtils.strToDateTime(ent.getEndTime()));
output.setElectrovalence(ent.getElectrovalence());
outputs.add(output);
}
}
return XListResult.success(outputs);
}
/**
* 字符串转日期时间
*
* @param dateStr 日期str
* @return {@link DateTime }
*/
private DateTime strToDateTime(String dateStr) {
//转换开始时间和结束时间(开始时间不能为24:00)
if (CharSequenceUtil.equals(dateStr, BusinessConstant.END_OF_DAY_TIME)) {
return BusinessConstant.DATE_FLAG;
} else {
return DateUtil.parse(dateStr + BusinessConstant.INITIALIZATION_SECOND, BusinessConstant.TIME_FORMAT);
}
}
}
\ No newline at end of file
......@@ -2634,12 +2634,7 @@ public class SpaceOptimizeBaseService {
private Map<String, List<SpaceInstitutionDurationEnt>> getDurationMap(XContext context, String detailId) {
SpaceInstitutionDurationMapper durationMapper = context.getBean(SpaceInstitutionDurationMapper.class);
//通过间开ID和井口ID查所有井口时段配置
List<SpaceInstitutionDurationEnt> durationList = durationMapper.selectList(new QueryWrapper<SpaceInstitutionDurationEnt>()
.select("*",
"STR_TO_DATE( CONCAT( open_well_time, ':00' ), '%H:%i:%s' ) AS openTime",
"STR_TO_DATE( CONCAT( close_well_time, ':00' ), '%H:%i:%s' ) AS closeTime"
)
.lambda()
List<SpaceInstitutionDurationEnt> durationList = durationMapper.selectList(new LambdaQueryWrapper<SpaceInstitutionDurationEnt>()
.eq(BaseModel::getIsDeleted, BusinessConstant.ONE)
.eq(SpaceInstitutionDurationEnt::getInstitutionId, detailId)
.orderByAsc(SpaceInstitutionDurationEnt::getOpenWellTime)
......@@ -2647,6 +2642,11 @@ public class SpaceOptimizeBaseService {
if (CollUtil.isEmpty(durationList)) {
//没有设置时间段,无法优化
return Collections.emptyMap();
} else {
for (SpaceInstitutionDurationEnt ent : durationList) {
ent.setOpenTime(BaseUtils.strToDateTime(ent.getOpenWellTime()));
ent.setCloseTime(BaseUtils.strToDateTime(ent.getCloseWellTime()));
}
}
return durationList.stream()
.collect(
......
......@@ -256,7 +256,7 @@
</resultMap>
<select id="selectWellheadsByInstitutionIds" parameterType="pps.core.space.entity.SpaceInstitutionWellheadView"
resultMap="ExtResultMap">
resultMap="ExtResultMap" databaseId="MySQL">
SELECT
W.INSTITUTION_ID,
W.WELLHEAD_ID,
......@@ -287,6 +287,38 @@
</if>
</select>
<select id="selectWellheadsByInstitutionIds" parameterType="pps.core.space.entity.SpaceInstitutionWellheadView"
resultMap="ExtResultMap" databaseId="Oracle">
SELECT
W.INSTITUTION_ID,
W.WELLHEAD_ID,
W.WELL_NUMBER,
W.RUN_TYPE_KEY,
NVL( W.INTERVAL_TYPE_KEY, '999' ) AS INTERVAL_TYPE_KEY,
W.INTERVAL_DESCRIBE,
NVL( W.START_SEQ, 0 ) AS START_SEQ,
W.OPEN_WELL_DAY,
W.CLOSE_WELL_DAY,
W.RUN_DURATION,
W.MAX_OPEN,
W.MIN_OPEN,
W.MAX_CLOSE,
W.MIN_CLOSE,
B.SERVICE_RATING
FROM
SPACE_INSTITUTION_WELLHEAD W
JOIN BASE_WELLHEAD B ON W.WELLHEAD_ID = B.ID
WHERE
W.IS_DELETED = 1
AND B.IS_DELETED = 1
<if test="list != null and list.size()>0">
AND W.INSTITUTION_ID IN
<foreach collection="list" open="(" close=")" separator="," item="item">
#{item}
</foreach>
</if>
</select>
<select id="selectInstitutionWellheadList" parameterType="pps.core.space.entity.SpaceInstitutionWellheadView"
resultMap="BaseResultMap" databaseId="MySQL">
SELECT W.WELLHEAD_ID,
......
......@@ -108,7 +108,7 @@
ID=#{id}
</select>
<insert id="batchInsert" parameterType="list">
<insert id="batchInsert" parameterType="list" databaseId="MySQL">
INSERT INTO SPACE_OPTIMIZE_EFFECT ( ID ,
IS_DELETED,
CREATE_BY_ID,
......@@ -199,4 +199,97 @@
)
</foreach>
</insert>
<insert id="batchInsert" parameterType="list" databaseId="Oracle">
INSERT ALL
<foreach collection="list" item="item">
INTO SPACE_OPTIMIZE_EFFECT ( ID ,
IS_DELETED,
CREATE_BY_ID,
CREATE_BY_NAME,
CREATE_TIME,
MODIFY_BY_ID,
MODIFY_BY_NAME,
MODIFY_TIME,
PERIOD_ID,
WELLHEAD_ID,
WELL_NUMBER,
OPTIMIZE_DATE,
OPTIMAL_RESULT,
TOTAL_DURATION,
GREEN_POWER_DURATION,
LOW_POWER_DURATION,
MID_POWER_DURATION,
HIGH_POWER_DURATION,
PEAK_POWER_DURATION,
GREEN_POWER_RATE,
GREEN_POWER_COST,
LOW_POWER_COST,
MID_POWER_COST,
HIGH_POWER_COST,
PEAK_POWER_COST,
POWER_COST,
OPTIMAL_TOTAL_DURATION,
OPTIMAL_GREEN_POWER_DURATION,
OPTIMAL_LOW_POWER_DURATION,
OPTIMAL_MID_POWER_DURATION,
OPTIMAL_HIGH_POWER_DURATION,
OPTIMAL_PEAK_POWER_DURATION,
OPTIMAL_GREEN_POWER_RATE,
OPTIMAL_GREEN_POWER_COST,
OPTIMAL_LOW_POWER_COST,
OPTIMAL_MID_POWER_COST,
OPTIMAL_HIGH_POWER_COST,
OPTIMAL_PEAK_POWER_COST,
OPTIMAL_POWER_COST,
GREEN_POWER_UPGRADE,
COST_DOWN,
INSTITUTION_RESULT)
VALUES (
#{item.id},
#{item.isDeleted},
#{item.createById},
#{item.createByName},
#{item.createTime},
#{item.modifyById},
#{item.modifyByName},
#{item.modifyTime},
#{item.periodId},
#{item.wellheadId},
#{item.wellNumber},
#{item.optimizeDate},
#{item.optimalResult},
#{item.totalDuration},
#{item.greenPowerDuration},
#{item.lowPowerDuration},
#{item.midPowerDuration},
#{item.highPowerDuration},
#{item.peakPowerDuration},
#{item.greenPowerRate},
#{item.greenPowerCost},
#{item.lowPowerCost},
#{item.midPowerCost},
#{item.highPowerCost},
#{item.peakPowerCost},
#{item.powerCost},
#{item.optimalTotalDuration},
#{item.optimalGreenPowerDuration},
#{item.optimalLowPowerDuration},
#{item.optimalMidPowerDuration},
#{item.optimalHighPowerDuration},
#{item.optimalPeakPowerDuration},
#{item.optimalGreenPowerRate},
#{item.optimalGreenPowerCost},
#{item.optimalLowPowerCost},
#{item.optimalMidPowerCost},
#{item.optimalHighPowerCost},
#{item.optimalPeakPowerCost},
#{item.optimalPowerCost},
#{item.greenPowerUpgrade},
#{item.costDown},
#{item.institutionResult}
)
</foreach>
SELECT * FROM DUAL
</insert>
</mapper>
\ No newline at end of file
......@@ -301,7 +301,7 @@
<!--*********************************************************************************-->
<select id="selectMidPowerHalfHourList" resultMap="BaseResultMap">
<select id="selectMidPowerHalfHourList" resultMap="BaseResultMap" databaseId="MySQL">
SELECT
IFNULL( AVG( A.PREDICT_POWER ), 0 ) AS POWER,
A.CREATE_TIME AS CREATE_TIME
......@@ -345,7 +345,51 @@
A.CREATE_TIME
</select>
<select id="selectShortPowerHalfHourList" resultMap="BaseResultMap">
<select id="selectMidPowerHalfHourList" resultMap="BaseResultMap" databaseId="Oracle">
SELECT
NVL( AVG( A.PREDICT_POWER ), 0 ) AS POWER,
A.CREATE_TIME AS CREATE_TIME
FROM
(
SELECT
PREDICT_POWER,
'1970-01-01 ' || TO_CHAR (
<choose>
<when test="formatType == 0">
TO_DATE( DATA_DATE , 'YYYY-MM-DD HH24:MI:SS')
</when>
<otherwise>
CASE
MINUTE ( DATA_DATE )
WHEN 15 THEN
DATE_SUB( DATA_DATE, INTERVAL 15 MINUTE )
WHEN 45 THEN
DATE_SUB( DATA_DATE, INTERVAL 15 MINUTE ) ELSE DATA_DATE
END
</otherwise>
</choose>
, 'HH24:MI:SS' ) AS CREATE_TIME
FROM
PLANT_PREDICTED_POWER_MID_TERM
WHERE
PLANT_ID IN
<foreach collection="plantIds" item="item" open="(" separator="," close=")">
#{item}
</foreach>
<if test="startTime != null and endTime != null">
AND
DATA_DATE BETWEEN
#{startTime} AND
#{endTime}
</if>
) A
GROUP BY
A.CREATE_TIME
ORDER BY
A.CREATE_TIME
</select>
<select id="selectShortPowerHalfHourList" resultMap="BaseResultMap" databaseId="MySQL">
SELECT
IFNULL( AVG( A.PREDICT_POWER ), 0 ) AS POWER,
A.CREATE_TIME AS CREATE_TIME
......@@ -388,4 +432,48 @@
ORDER BY
A.CREATE_TIME
</select>
<select id="selectShortPowerHalfHourList" resultMap="BaseResultMap" databaseId="Oracle">
SELECT
NVL( AVG( A.PREDICT_POWER ), 0 ) AS POWER,
A.CREATE_TIME AS CREATE_TIME
FROM
(
SELECT
PREDICT_POWER,
'1970-01-01 ' || TO_CHAR (
<choose>
<when test="formatType == 0">
TO_DATE( DATA_DATE , 'YYYY-MM-DD HH24:MI:SS')
</when>
<otherwise>
CASE
MINUTE ( DATA_DATE )
WHEN 15 THEN
DATE_SUB( DATA_DATE, INTERVAL 15 MINUTE )
WHEN 45 THEN
DATE_SUB( DATA_DATE, INTERVAL 15 MINUTE ) ELSE DATA_DATE
END
</otherwise>
</choose>
, 'HH24:MI:SS' ) AS CREATE_TIME
FROM
PLANT_PREDICTED_POWER_SHORT_TERM
WHERE
PLANT_ID IN
<foreach collection="plantIds" item="item" open="(" separator="," close=")">
#{item}
</foreach>
<if test="startTime != null and endTime != null">
AND
DATA_DATE BETWEEN
#{startTime} AND
#{endTime}
</if>
) A
GROUP BY
A.CREATE_TIME
ORDER BY
A.CREATE_TIME
</select>
</mapper>
\ No newline at end of file
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment