Commit d48500b6 authored by tianchao's avatar tianchao
parents 1705fea5 ecb09eed
package pps.core.common.constant;
import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil;
/**
* 业务操作常量
*
......@@ -28,6 +31,31 @@ public class BusinessConstant {
*/
public static final String PARENT_OU_ID = "00000000-0000-0000-0000-000000000000";
/**
* 时间格式
*/
public static final String TIME_FORMAT = "HH:mm:ss";
/**
* 分钟格式
*/
public static final String MINUTES_FORMAT = "HH:mm";
/**
* 初始化秒
*/
public static final String INITIALIZATION_SECOND = ":00";
/**
* 一天结束时间
*/
public static final String END_OF_DAY_TIME = "23:59";
/**
* 日期标志
*/
public static final DateTime DATE_FLAG = DateUtil.parse("1970-01-02 00:00:00", "yyyy-mm-dd HH:mm:ss");
/*------------------------------字典------------------------------*/
/**
......
package pps.core.common.utils;
import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUnit;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.lang.UUID;
import org.apache.commons.lang3.StringUtils;
import pps.core.common.constant.BusinessConstant;
import pps.core.common.entity.BaseModel;
import pps.core.common.session.PpsUserSession;
import java.util.Date;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;
/**
* 封装工具类
......@@ -14,6 +22,34 @@ import java.util.Date;
*/
public class BaseUtils {
/**
* 按每500个一组分割
*/
public static final Integer BATCH_SIZE = 500;
/**
* 计算批次数
*/
public static Integer countStep(Integer totalSize) {
return (totalSize + BATCH_SIZE - 1) / BATCH_SIZE;
}
/**
* 分批处理
*
* @param list 列表
* @return {@link List}<{@link List}<{@link E}>>
*/
public static <E> List<List<E>> getSubList(List<E> list) {
return Stream.iterate(0, n -> n + 1)
.limit(countStep(list.size()))
.parallel()
.map(a -> list.stream().skip(a * BaseUtils.BATCH_SIZE)
.limit(BATCH_SIZE).parallel()
.collect(Collectors.toList()))
.collect(Collectors.toList());
}
/**
* 设置实体默认值
*
......@@ -34,4 +70,74 @@ public class BaseUtils {
model.setModifyByName(userName);
model.setModifyTime(now);
}
/**
* 设置实体默认值(定时任务)
*
* @param model 模型
*/
public static void setBaseModelDefaultForJob(BaseModel model) {
Date now = new Date();
model.setId(BaseUtils.getUUID());
model.setCreateById("Task");
model.setCreateByName("Task");
model.setCreateTime(now);
model.setModifyById("Task");
model.setModifyByName("Task");
model.setModifyTime(now);
}
/**
* 获取uuid
*
* @return {@link String}
*/
public static String getUUID() {
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.beginOfMonth(date), "yyyy-MM-dd"))
.append('-')
.append(DateUtil.format(DateUtil.endOfMonth(date), "yyyy-MM-dd"));
return stringBuilder.toString();
}
/**
* 获取时差分钟
*
* @param optimizeTime 优化后时间
* @param originalTime 原始时间
* @return int
*/
public static int getTimeDifferenceMinute(DateTime optimizeTime, DateTime originalTime) {
int between = (int) optimizeTime.between(originalTime, DateUnit.MINUTE);
if (optimizeTime.compareTo(originalTime) < 0) {
between = ~between + 1;
}
return between;
}
/**
* 获取结束时间字符串
*
* @param endTimeOptimize 结束时间优化
* @return {@link String}
*/
public static String getEndTimeString(DateTime endTimeOptimize) {
String endTimeString;
if (endTimeOptimize.compareTo(BusinessConstant.DATE_FLAG) > 0) {
endTimeString = BusinessConstant.END_OF_DAY_TIME;
} else {
endTimeString = endTimeOptimize.toString(BusinessConstant.MINUTES_FORMAT);
}
return endTimeString;
}
}
\ No newline at end of file
......@@ -66,9 +66,7 @@ public class BasePowerLineService {
@XApiPost
@XText("输电线路配置--新增")
public XServiceResult createBasePowerLine(XContext context, CreateBasePowerLineInput input) {
PpsUserSession session = new PpsUserSession();
session.setId("123");
session.setUserName("ceshi");
PpsUserSession session = context.getSession(PpsUserSession.class);
return XTransactionHelper.begin(context, () -> {
BasePowerLineMapper mapper = context.getBean(BasePowerLineMapper.class);
BasePowerLineEnt entity = XCopyUtils.copyNewObject(input, BasePowerLineEnt.class);
......@@ -455,7 +453,7 @@ public class BasePowerLineService {
wellhead.setLineId(lineId);
wellhead.setOuId(ouId);
BaseUtils.setBaseModelDefault(wellhead, session);
wellhead.setId(UUID.randomUUID().toString());
wellhead.setId(BaseUtils.getUUID());
wellheads.add(wellhead);
}
wellheadMapper.batchInsertList(wellheads);
......
package pps.core.base.service;
import cn.hutool.core.collection.CollUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import pps.cloud.base.service.IBasePriceStrategyCloudService;
import pps.cloud.base.service.data.base_price_strategy_detail.GetBasePriceStrategyDetailInput;
......@@ -13,6 +14,7 @@ import xstartup.base.XContext;
import xstartup.base.util.XCopyUtils;
import xstartup.data.XListResult;
import java.util.ArrayList;
import java.util.List;
/**
......@@ -42,6 +44,12 @@ public class BasePriceStrategyCloudServiceImpl implements IBasePriceStrategyClou
.apply("strategy_id = ( SELECT strategy_id FROM base_power_line WHERE id = {0} ) ", input.getLineId())
.orderByAsc(BasePriceStrategyDetailEnt::getStartTime)
);
return XListResult.success(XCopyUtils.copyNewList(detailList, GetBasePriceStrategyDetailOutput.class));
List<GetBasePriceStrategyDetailOutput> outputs;
if (CollUtil.isEmpty(detailList)) {
outputs = new ArrayList<>(0);
} else {
outputs = XCopyUtils.copyNewList(detailList, GetBasePriceStrategyDetailOutput.class);
}
return XListResult.success(outputs);
}
}
}
\ No newline at end of file
......@@ -352,7 +352,7 @@ public class BasePriceStrategyService {
for (BasePriceStrategyMonthView monthView : monthList) {
monthView.setStrategyId(strategyId);
BaseUtils.setBaseModelDefault(monthView, session);
monthView.setId(UUID.randomUUID().toString());
monthView.setId(BaseUtils.getUUID());
monthViewList.add(monthView);
details = monthView.getDetails();
if (CollUtil.isNotEmpty(details)) {
......@@ -360,7 +360,7 @@ public class BasePriceStrategyService {
d.setStrategyId(strategyId);
d.setStrategyMonth(monthView.getStrategyMonth());
BaseUtils.setBaseModelDefault(d, session);
d.setId(UUID.randomUUID().toString());
d.setId(BaseUtils.getUUID());
detailViewList.add(d);
});
}
......
package pps.core.task.job;
import pps.cloud.space.service.ISpaceOptimizeLongCloudService;
import pps.core.task.constant.CronConstant;
import xstartup.annotation.XService;
import xstartup.annotation.XText;
import xstartup.base.XContext;
import xstartup.data.XServiceResult;
import xstartup.service.job.XJob;
import xstartup.service.job.annotation.XCronTrigger;
/**
* 长期间开优化定时任务
......@@ -23,8 +25,7 @@ public class SpaceOptimizeLongJob implements XJob {
* @param xContext x上下文
* @return {@link XServiceResult}
*/
// @XCronTrigger(value = XCronTrigger.PRE_10S)
// @XCronTrigger(value = CronConstant.FIRST_DAY_OF_THE_MONTH)
@XCronTrigger(value = CronConstant.FIRST_DAY_OF_THE_MONTH)
@Override
public XServiceResult execute(XContext xContext) {
ISpaceOptimizeLongCloudService service = xContext.getBean(ISpaceOptimizeLongCloudService.class);
......
package pps.core.task.job;
import pps.core.task.constant.CronConstant;
import xstartup.annotation.XService;
import xstartup.annotation.XText;
import xstartup.base.XContext;
import xstartup.data.XServiceResult;
import xstartup.service.job.XJob;
import xstartup.service.job.annotation.XCronTrigger;
/**
* 中短期间开优化定时任务
*
* @author ZWT
* @date 2023/09/18 13:58
*/
@XText("中短期间开优化定时任务")
@XService
public class SpaceOptimizeMidJob implements XJob {
/**
* 每周一执行
*
* @param xContext x上下文
* @return {@link XServiceResult}
*/
@XCronTrigger(value = CronConstant.EVERY_MONDAY)
@Override
public XServiceResult execute(XContext xContext) {
return XServiceResult.OK;
}
}
......@@ -2,7 +2,10 @@ package pps.core.space.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import pps.core.common.entity.BaseModel;
import xstartup.annotation.XText;
......@@ -15,6 +18,9 @@ import java.io.Serializable;
* @date 2023/09/05
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
@TableName("space_optimize_long_duration")
public class SpaceOptimizeLongDurationEnt extends BaseModel implements Serializable {
......
package pps.core.space.mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;
import pps.core.space.entity.SpaceOptimizeLongDurationView;
......@@ -16,4 +17,12 @@ public interface SpaceOptimizeLongDurationViewMapper {
SpaceOptimizeLongDurationView selectOne(SpaceOptimizeLongDurationView record);
List<SpaceOptimizeLongDurationView> selectList(SpaceOptimizeLongDurationView record);
/**
* 批量新增
*
* @param list 列表
* @return int
*/
int batchInsertList(@Param(value = "list") List<SpaceOptimizeLongDurationView> list);
}
package pps.core.space.mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;
import pps.core.space.entity.SpaceOptimizeLongPeriodView;
......@@ -22,4 +23,12 @@ public interface SpaceOptimizeLongPeriodViewMapper {
* @return {@link List}<{@link SpaceOptimizeLongPeriodView}>
*/
List<SpaceOptimizeLongPeriodView> selectList(SpaceOptimizeLongPeriodView record);
/**
* 批量新增
*
* @param list 列表
* @return int
*/
int batchInsertList(@Param(value = "list") List<SpaceOptimizeLongPeriodView> list);
}
package pps.core.space.mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;
import pps.core.space.entity.SpaceOptimizeLongWellheadView;
......@@ -16,4 +17,12 @@ public interface SpaceOptimizeLongWellheadViewMapper {
SpaceOptimizeLongWellheadView selectOne(SpaceOptimizeLongWellheadView record);
List<SpaceOptimizeLongWellheadView> selectList(SpaceOptimizeLongWellheadView record);
/**
* 批量新增
*
* @param list 列表
* @return int
*/
int batchInsertList(@Param(value = "list") List<SpaceOptimizeLongWellheadView> list);
}
......@@ -402,7 +402,7 @@ public class SpaceInstitutionDetailService {
for (SpaceInstitutionWellheadView wellhead : (List<SpaceInstitutionWellheadView>) XCopyUtils.copyNewList(wellheadList, SpaceInstitutionWellheadView.class)) {
wellhead.setInstitutionId(institutionId);
BaseUtils.setBaseModelDefault(wellhead, session);
wellhead.setId(UUID.randomUUID().toString());
wellhead.setId(BaseUtils.getUUID());
wellheadViewList.add(wellhead);
durationList = wellhead.getDurationList();
if (CollUtil.isNotEmpty(durationList)) {
......@@ -411,7 +411,7 @@ public class SpaceInstitutionDetailService {
d.setConfigId(wellhead.getId());
d.setInstitutionId(institutionId);
BaseUtils.setBaseModelDefault(d, session);
d.setId(UUID.randomUUID().toString());
d.setId(BaseUtils.getUUID());
durationViewList.add(d);
});
}
......
......@@ -52,4 +52,49 @@
where
id=#{id}
</select>
<insert id="batchInsertList" parameterType="list">
INSERT INTO space_optimize_long_duration (
id,
create_by_id,
create_by_name,
create_time,
modify_by_id,
modify_by_name,
modify_time,
record_id,
long_period_id,
wellhead_id,
is_optimize,
generation_type_key,
open_well_time,
close_well_time
)
VALUES
<foreach collection="list" item="item" separator=",">
(
#{item.id},
#{item.createById},
#{item.createByName},
#{item.createTime},
#{item.modifyById},
#{item.modifyByName},
#{item.modifyTime},
#{item.recordId},
#{item.longPeriodId},
#{item.wellheadId},
#{item.isOptimize},
<choose>
<when test="item.generationTypeKey != null and item.generationTypeKey != ''">
#{item.generationTypeKey},
</when>
<otherwise>
NULL,
</otherwise>
</choose>
#{item.openWellTime},
#{item.closeWellTime}
)
</foreach>
</insert>
</mapper>
\ No newline at end of file
......@@ -65,4 +65,27 @@
AND p.line_id = #{lineId}
ORDER BY p.optimize_deadline DESC
</select>
<insert id="batchInsertList" parameterType="list">
INSERT INTO space_optimize_long_period ( id, create_by_id, create_by_name, create_time,
modify_by_id, modify_by_name, modify_time, line_id, institution_id, execution_cycle, optimize_state,
optimize_deadline )
VALUES
<foreach collection="list" item="item" separator=",">
(
#{item.id},
#{item.createById},
#{item.createByName},
#{item.createTime},
#{item.modifyById},
#{item.modifyByName},
#{item.modifyTime},
#{item.lineId},
#{item.institutionId},
#{item.executionCycle},
#{item.optimizeState},
#{item.optimizeDeadline}
)
</foreach>
</insert>
</mapper>
\ No newline at end of file
......@@ -44,4 +44,24 @@
where
id=#{id}
</select>
<insert id="batchInsertList" 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 )
VALUES
<foreach collection="list" item="item" separator=",">
(
#{item.id},
#{item.createById},
#{item.createByName},
#{item.createTime},
#{item.modifyById},
#{item.modifyByName},
#{item.modifyTime},
#{item.longPeriodId},
#{item.wellheadId},
#{item.wellNumber}
)
</foreach>
</insert>
</mapper>
\ No newline at end of file
......@@ -41,10 +41,8 @@ public class PlantPredictedPowerCloudServiceImpl implements IPlantPredictedPower
PlantPredictedPowerDataMapper mapper = context.getBean(PlantPredictedPowerDataMapper.class);
List<PlantPredictedPowerDataEnt> list = mapper.selectList(
new QueryWrapper<PlantPredictedPowerDataEnt>()
.select("data_date",
"year_time",
.select("year_time",
"month_time",
"day_time",
"hour_time",
"min_time",
"AVG( power ) AS power")
......@@ -53,10 +51,8 @@ public class PlantPredictedPowerCloudServiceImpl implements IPlantPredictedPower
.in(CollUtil.isNotEmpty(plantIds), PlantPredictedPowerDataEnt::getPlantId, plantIds)
.eq(StringUtils.isNotBlank(yearTime), PlantPredictedPowerDataEnt::getYearTime, yearTime)
.eq(StringUtils.isNotBlank(monthTime), PlantPredictedPowerDataEnt::getMonthTime, monthTime)
.groupBy(PlantPredictedPowerDataEnt::getDataDate,
PlantPredictedPowerDataEnt::getYearTime,
.groupBy(PlantPredictedPowerDataEnt::getYearTime,
PlantPredictedPowerDataEnt::getMonthTime,
PlantPredictedPowerDataEnt::getDayTime,
PlantPredictedPowerDataEnt::getHourTime,
PlantPredictedPowerDataEnt::getMinTime)
);
......
package app;
import pps.core.task.job.SpaceOptimizeLongJob;
import pps.core.task.job.SpaceOptimizeMidJob;
import pps.core.task.job.TestJob;
import pps.core.task.job.WeatherJob;
import xstartup.base.XStartup;
......@@ -34,6 +35,7 @@ public class DeployPpsAllApplication {
startup.enable(XJobFeature.class).config(new XJobServiceConf(TestJob.class));
startup.enable(XJobFeature.class).config(new XJobServiceConf(WeatherJob.class));
startup.enable(XJobFeature.class).config(new XJobServiceConf(SpaceOptimizeLongJob.class));
startup.enable(XJobFeature.class).config(new XJobServiceConf(SpaceOptimizeMidJob.class));
//startup.enable(XCloudHuaweiCseFeature.class);
startup.run(args);
}
......
x.app.env=${env}
x.app.buildtime=${maven.build.timestamp}
#�Զ�������
#\uFFFD\u0536\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD
pps.core.system.login-config.expiresIn=@pps.core.system.login-config.expiresIn@
pps.core.system.login-config.rsaPrivateKey=@pps.core.system.login-config.rsaPrivateKey@
pps.core.system.login-config.userRsaPrivateKey=@pps.core.system.login-config.userRsaPrivateKey@
......@@ -43,10 +43,10 @@ pps.core.common.base-config.predictedUrl=@pps.core.common.base-config.predictedU
#x.job.service=pps.core.task.job.TaskPlanTransferJob,pps.core.task.job.TaskPlanImsJob,pps.core.task.job.TaskPlanAckImsJob
#session����
#session\uFFFD\uFFFD\uFFFD\uFFFD
x.session.cache.key-prefix=pps
#��־��������
#\uFFFD\uFFFD\u05BE\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD
x.log.level=@x.log.level@
x.log.directory=@x.log.directory@
......@@ -55,6 +55,7 @@ x.server.host=127.0.0.1
x.job.service=pps.core.task.job.TestJob,\
pps.core.task.job.SpaceOptimizeLongJob,\
pps.core.task.job.SpaceOptimizeMidJob,\
pps.core.task.job.WeatherJob
# redis
......
......@@ -32,6 +32,7 @@ public class DeployPpsTaskApplication {
startup.enable(XJobFeature.class).config(new XJobServiceConf(TestJob.class));
startup.enable(XJobFeature.class).config(new XJobServiceConf(WeatherJob.class));
startup.enable(XJobFeature.class).config(new XJobServiceConf(SpaceOptimizeLongJob.class));
startup.enable(XJobFeature.class).config(new XJobServiceConf(SpaceOptimizeMidJob.class));
startup.enable(XRpcFeature.class);
startup.enable(XCloudHuaweiCseFeature.class)
......
......@@ -9,6 +9,7 @@ pps.core.common.mq-config.ackImsMq=@pps.core.common.mq-config.ackImsMq@
x.job.service=pps.core.task.job.TestJob,\
pps.core.task.job.SpaceOptimizeLongJob,\
pps.core.task.job.SpaceOptimizeMidJob,\
pps.core.task.job.WeatherJob
#\uFFFD\uFFFD\u05BE\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD
......
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