Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
G
gf_back
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
tianchao
gf_back
Commits
d48500b6
Commit
d48500b6
authored
Sep 18, 2023
by
tianchao
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'master' of
https://gitlab.sunboxauto.com/tianchao/gf_back
parents
1705fea5
ecb09eed
Changes
21
Hide whitespace changes
Inline
Side-by-side
Showing
21 changed files
with
756 additions
and
40 deletions
+756
-40
C00-common/pps-common/src/main/java/pps/core/common/constant/BusinessConstant.java
.../main/java/pps/core/common/constant/BusinessConstant.java
+28
-0
C00-common/pps-common/src/main/java/pps/core/common/utils/BaseUtils.java
...common/src/main/java/pps/core/common/utils/BaseUtils.java
+106
-0
C09-base/pps-core-base/src/main/java/pps/core/base/service/BasePowerLineService.java
...main/java/pps/core/base/service/BasePowerLineService.java
+2
-4
C09-base/pps-core-base/src/main/java/pps/core/base/service/BasePriceStrategyCloudServiceImpl.java
.../core/base/service/BasePriceStrategyCloudServiceImpl.java
+10
-2
C09-base/pps-core-base/src/main/java/pps/core/base/service/BasePriceStrategyService.java
.../java/pps/core/base/service/BasePriceStrategyService.java
+2
-2
C10-task/pps-core-task/src/main/java/pps/core/task/job/SpaceOptimizeLongJob.java
...src/main/java/pps/core/task/job/SpaceOptimizeLongJob.java
+3
-2
C10-task/pps-core-task/src/main/java/pps/core/task/job/SpaceOptimizeMidJob.java
.../src/main/java/pps/core/task/job/SpaceOptimizeMidJob.java
+32
-0
C11-space/pps-core-space/src/main/java/pps/core/space/entity/SpaceOptimizeLongDurationEnt.java
...a/pps/core/space/entity/SpaceOptimizeLongDurationEnt.java
+6
-0
C11-space/pps-core-space/src/main/java/pps/core/space/mapper/SpaceOptimizeLongDurationViewMapper.java
...ore/space/mapper/SpaceOptimizeLongDurationViewMapper.java
+9
-0
C11-space/pps-core-space/src/main/java/pps/core/space/mapper/SpaceOptimizeLongPeriodViewMapper.java
.../core/space/mapper/SpaceOptimizeLongPeriodViewMapper.java
+9
-0
C11-space/pps-core-space/src/main/java/pps/core/space/mapper/SpaceOptimizeLongWellheadViewMapper.java
...ore/space/mapper/SpaceOptimizeLongWellheadViewMapper.java
+9
-0
C11-space/pps-core-space/src/main/java/pps/core/space/service/SpaceInstitutionDetailService.java
...pps/core/space/service/SpaceInstitutionDetailService.java
+2
-2
C11-space/pps-core-space/src/main/java/pps/core/space/service/SpaceOptimizeLongCloudServiceImpl.java
...core/space/service/SpaceOptimizeLongCloudServiceImpl.java
+440
-19
C11-space/pps-core-space/src/main/resources/mybatis/mapper/pps/core/space/SpaceOptimizeLongDurationViewMapper.xml
...er/pps/core/space/SpaceOptimizeLongDurationViewMapper.xml
+45
-0
C11-space/pps-core-space/src/main/resources/mybatis/mapper/pps/core/space/SpaceOptimizeLongPeriodViewMapper.xml
...pper/pps/core/space/SpaceOptimizeLongPeriodViewMapper.xml
+23
-0
C11-space/pps-core-space/src/main/resources/mybatis/mapper/pps/core/space/SpaceOptimizeLongWellheadViewMapper.xml
...er/pps/core/space/SpaceOptimizeLongWellheadViewMapper.xml
+20
-0
C12-prediction/pps-core-prediction/src/main/java/pps/core/prediction/service/PlantPredictedPowerCloudServiceImpl.java
...ediction/service/PlantPredictedPowerCloudServiceImpl.java
+2
-6
D03-deploy/deploy-pps-all/src/main/java/app/DeployPpsAllApplication.java
...oy-pps-all/src/main/java/app/DeployPpsAllApplication.java
+2
-0
D03-deploy/deploy-pps-all/src/main/resources/deploy-pps-all.app.properties
...-pps-all/src/main/resources/deploy-pps-all.app.properties
+4
-3
D03-deploy/deploy-pps-task/src/main/java/app/DeployPpsTaskApplication.java
...-pps-task/src/main/java/app/DeployPpsTaskApplication.java
+1
-0
D03-deploy/deploy-pps-task/src/main/resources/deploy-pps-task.app.properties
...ps-task/src/main/resources/deploy-pps-task.app.properties
+1
-0
No files found.
C00-common/pps-common/src/main/java/pps/core/common/constant/BusinessConstant.java
View file @
d48500b6
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"
);
/*------------------------------字典------------------------------*/
/**
...
...
C00-common/pps-common/src/main/java/pps/core/common/utils/BaseUtils.java
View file @
d48500b6
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
C09-base/pps-core-base/src/main/java/pps/core/base/service/BasePowerLineService.java
View file @
d48500b6
...
...
@@ -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
);
...
...
C09-base/pps-core-base/src/main/java/pps/core/base/service/BasePriceStrategyCloudServiceImpl.java
View file @
d48500b6
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
C09-base/pps-core-base/src/main/java/pps/core/base/service/BasePriceStrategyService.java
View file @
d48500b6
...
...
@@ -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
);
});
}
...
...
C10-task/pps-core-task/src/main/java/pps/core/task/job/SpaceOptimizeLongJob.java
View file @
d48500b6
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
);
...
...
C10-task/pps-core-task/src/main/java/pps/core/task/job/SpaceOptimizeMidJob.java
0 → 100644
View file @
d48500b6
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
;
}
}
C11-space/pps-core-space/src/main/java/pps/core/space/entity/SpaceOptimizeLongDurationEnt.java
View file @
d48500b6
...
...
@@ -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
{
...
...
C11-space/pps-core-space/src/main/java/pps/core/space/mapper/SpaceOptimizeLongDurationViewMapper.java
View file @
d48500b6
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
);
}
C11-space/pps-core-space/src/main/java/pps/core/space/mapper/SpaceOptimizeLongPeriodViewMapper.java
View file @
d48500b6
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
);
}
C11-space/pps-core-space/src/main/java/pps/core/space/mapper/SpaceOptimizeLongWellheadViewMapper.java
View file @
d48500b6
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
);
}
C11-space/pps-core-space/src/main/java/pps/core/space/service/SpaceInstitutionDetailService.java
View file @
d48500b6
...
...
@@ -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
);
});
}
...
...
C11-space/pps-core-space/src/main/java/pps/core/space/service/SpaceOptimizeLongCloudServiceImpl.java
View file @
d48500b6
package
pps.core.space.service
;
import
cn.hutool.core.collection.CollUtil
;
import
cn.hutool.core.date.DateField
;
import
cn.hutool.core.date.DateTime
;
import
cn.hutool.core.date.DateUnit
;
import
cn.hutool.core.date.DateUtil
;
import
com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper
;
import
org.apache.commons.lang3.StringUtils
;
...
...
@@ -9,6 +11,8 @@ import pps.cloud.base.service.IBasePowerLineCloudService;
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_price_strategy_detail.GetBasePriceStrategyDetailInput
;
import
pps.cloud.base.service.data.base_price_strategy_detail.GetBasePriceStrategyDetailOutput
;
import
pps.cloud.base.service.data.base_wellhead.DynamicQueryBaseWellheadInput
;
import
pps.cloud.base.service.data.base_wellhead.DynamicQueryBaseWellheadOutput
;
import
pps.cloud.prediction.service.IPlantPredictedPowerCloudService
;
...
...
@@ -17,21 +21,19 @@ import pps.cloud.prediction.service.data.plant_predicted_power_data.DynamicQuery
import
pps.cloud.space.service.ISpaceOptimizeLongCloudService
;
import
pps.core.common.constant.BusinessConstant
;
import
pps.core.common.entity.BaseModel
;
import
pps.core.
space.entity.SpaceInstitutionDetailEnt
;
import
pps.core.space.entity.
SpaceInstitutionWellheadView
;
import
pps.core.
common.utils.BaseUtils
;
import
pps.core.space.entity.
*
;
import
pps.core.space.enums.BusinessError
;
import
pps.core.space.mapper.
SpaceInstitutionDetailMapper
;
import
pps.core.space.
mapper.SpaceInstitutionWellheadViewMapper
;
import
pps.core.space.mapper.
*
;
import
pps.core.space.
utils.ServiceUtil
;
import
xstartup.annotation.XService
;
import
xstartup.base.XContext
;
import
xstartup.data.XListResult
;
import
xstartup.data.XServiceResult
;
import
xstartup.helper.XTransactionHelper
;
import
java.math.BigDecimal
;
import
java.util.HashSet
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.Set
;
import
java.util.*
;
import
java.util.stream.Collectors
;
/**
...
...
@@ -85,15 +87,27 @@ public class SpaceOptimizeLongCloudServiceImpl implements ISpaceOptimizeLongClou
//取当前时间
DateTime
date
=
DateUtil
.
date
();
int
year
=
date
.
year
();
int
monthNum
=
date
.
month
();
//月份要加一
int
monthNum
=
date
.
month
()
+
1
;
String
month
;
if
(
monthNum
<
BusinessConstant
.
TEN
)
{
month
=
"0"
+
monthNum
;
}
else
{
month
=
String
.
valueOf
(
monthNum
);
}
SpaceInstitutionDurationMapper
durationMapper
=
context
.
getBean
(
SpaceInstitutionDurationMapper
.
class
);
List
<
SpaceOptimizeLongPeriodView
>
longPeriodList
=
new
ArrayList
<>(
32
);
List
<
SpaceOptimizeLongWellheadView
>
longWellheadList
=
new
ArrayList
<>(
64
);
List
<
SpaceOptimizeLongDurationView
>
longDurationList
=
new
ArrayList
<>(
128
);
List
<
SpaceOptimizeLongDurationView
>
unOptimizeDurationList
=
new
ArrayList
<>(
128
);
String
executionCycleForMonth
=
BaseUtils
.
getExecutionCycleForMonth
(
date
);
DateTime
optimizeDeadline
=
DateUtil
.
endOfMonth
(
date
);
//优化
for
(
SpaceInstitutionDetailEnt
detail
:
detailEntList
)
{
String
detailId
=
detail
.
getId
();
String
lineId
=
detail
.
getLineId
();
//创建记录
String
longPeriodId
=
this
.
createOptimizeLongPeriod
(
longPeriodList
,
detailId
,
lineId
,
executionCycleForMonth
,
optimizeDeadline
);
switch
(
detail
.
getGridTypeKey
())
{
//并网型优化
case
"1"
:
...
...
@@ -102,7 +116,7 @@ public class SpaceOptimizeLongCloudServiceImpl implements ISpaceOptimizeLongClou
DynamicQueryPlantPredictedPowerInput
.
builder
()
.
plantIds
(
plantList
.
stream
()
.
filter
(
p
->
StringUtils
.
equals
(
detail
.
getLineId
()
,
p
.
getLineId
()))
.
filter
(
p
->
StringUtils
.
equals
(
lineId
,
p
.
getLineId
()))
.
map
(
DynamicQueryBasePowerLinePlantOutput:
:
getPlantId
)
.
collect
(
Collectors
.
toList
())
)
...
...
@@ -117,18 +131,42 @@ public class SpaceOptimizeLongCloudServiceImpl implements ISpaceOptimizeLongClou
.
orElse
(
BigDecimal
.
ZERO
);
//取当前制度下井口的总功率
BigDecimal
wellheadTotalPower
=
spaceWellheadList
.
stream
()
.
filter
(
w
->
StringUtils
.
equals
(
detail
.
getId
()
,
w
.
getInstitutionId
()))
.
filter
(
w
->
StringUtils
.
equals
(
detail
Id
,
w
.
getInstitutionId
()))
.
map
(
SpaceInstitutionWellheadView:
:
getServiceRating
)
.
reduce
(
BigDecimal
.
ZERO
,
BigDecimal:
:
add
);
//根据类型过滤井口:大间开,连抽井不优化
List
<
SpaceInstitutionWellheadView
>
wellheadViewList
=
spaceWellheadList
.
stream
()
.
filter
(
w
->
StringUtils
.
equals
(
detailId
,
w
.
getInstitutionId
())
&&
StringUtils
.
equals
(
"INTERVAL"
,
w
.
getRunTypeKey
())
&&
StringUtils
.
equals
(
"0"
,
w
.
getIntervalTypeKey
()))
.
sorted
(
Comparator
.
comparing
(
SpaceInstitutionWellheadView:
:
getStartSeq
))
.
collect
(
Collectors
.
toList
());
if
(
CollUtil
.
isEmpty
(
wellheadViewList
))
{
continue
;
}
//通过间开ID和井口ID查所有井口时段配置
List
<
SpaceInstitutionDurationEnt
>
durationList
=
durationMapper
.
selectList
(
new
LambdaQueryWrapper
<
SpaceInstitutionDurationEnt
>()
.
eq
(
BaseModel:
:
getIsDeleted
,
BusinessConstant
.
ONE
)
.
eq
(
SpaceInstitutionDurationEnt:
:
getInstitutionId
,
detailId
)
.
orderByAsc
(
SpaceInstitutionDurationEnt:
:
getOpenWellTime
)
);
if
(
CollUtil
.
isEmpty
(
durationList
))
{
//没有设置时间段,无法优化
continue
;
}
Map
<
String
,
List
<
SpaceInstitutionDurationEnt
>>
durationMap
=
durationList
.
stream
()
.
collect
(
Collectors
.
groupingBy
(
SpaceInstitutionDurationEnt:
:
getWellheadId
));
int
compare
=
powerMax
.
compareTo
(
wellheadTotalPower
);
//光伏出力峰值大于等于井口总功率:绿电消纳优先策略
if
(
compare
>=
BusinessConstant
.
ZERO
)
{
//光伏出力峰值大于等于井口总功率:绿电消纳优先策略
//---------------------------------绿电消纳策略---------------------------------
this
.
greenElectricityConsumptionStrategy
(
longWellheadList
,
unOptimizeDurationList
,
longDurationList
,
wellheadViewList
,
avgPowerList
,
durationMap
,
detail
,
longPeriodId
);
}
else
{
//遍历井口,按发电功率大于等于光伏出力峰值条件分组
Map
<
Boolean
,
List
<
SpaceInstitutionWellheadView
>>
collect
=
spaceWellheadList
.
stream
()
.
filter
(
w
->
StringUtils
.
equals
(
detail
.
getId
()
,
w
.
getInstitutionId
())
StringUtils
.
equals
(
detail
Id
,
w
.
getInstitutionId
())
)
.
collect
(
Collectors
.
partitioningBy
(
w
->
powerMax
.
compareTo
(
w
.
getServiceRating
())
>=
BusinessConstant
.
ZERO
));
...
...
@@ -137,13 +175,17 @@ public class SpaceOptimizeLongCloudServiceImpl implements ISpaceOptimizeLongClou
int
lowWellheadListSize
=
lowWellheadList
.
size
();
//光伏出力峰值<任何一口井的运行功率:消峰平谷策略
if
(
size
==
lowWellheadListSize
)
{
//---------------------------------消峰平谷策略---------------------------------
this
.
peakEliminationAndValleyLevelingStrategy
(
context
,
longWellheadList
,
unOptimizeDurationList
,
longDurationList
,
wellheadViewList
,
durationMap
,
detail
,
lineId
,
monthNum
,
longPeriodId
);
}
//光伏出力峰值>=线路哪部分井口运行功率:满足的部分井口采用绿电消纳优先,不满足的井采用消峰平谷
else
{
List
<
SpaceInstitutionWellheadView
>
highWellheadList
=
collect
.
get
(
true
);
this
.
greenElectricityConsumptionStrategy
(
longWellheadList
,
unOptimizeDurationList
,
longDurationList
,
highWellheadList
,
avgPowerList
,
durationMap
,
detail
,
longPeriodId
);
this
.
peakEliminationAndValleyLevelingStrategy
(
context
,
longWellheadList
,
unOptimizeDurationList
,
longDurationList
,
lowWellheadList
,
durationMap
,
detail
,
lineId
,
monthNum
,
longPeriodId
);
}
}
break
;
...
...
@@ -154,11 +196,390 @@ public class SpaceOptimizeLongCloudServiceImpl implements ISpaceOptimizeLongClou
//电网类型不存在
}
}
return
XServiceResult
.
OK
;
//开启事务
return
XTransactionHelper
.
begin
(
context
,
()
->
{
int
size
;
if
(
CollUtil
.
isNotEmpty
(
longPeriodList
))
{
SpaceOptimizeLongPeriodViewMapper
longPeriodViewMapper
=
context
.
getBean
(
SpaceOptimizeLongPeriodViewMapper
.
class
);
size
=
longPeriodList
.
size
();
if
(
size
>
BaseUtils
.
BATCH_SIZE
)
{
List
<
List
<
SpaceOptimizeLongPeriodView
>>
subList
=
BaseUtils
.
getSubList
(
longPeriodList
);
subList
.
forEach
(
b
->
longPeriodViewMapper
.
batchInsertList
(
b
));
}
else
{
longPeriodViewMapper
.
batchInsertList
(
longPeriodList
);
}
}
if
(
CollUtil
.
isNotEmpty
(
longWellheadList
))
{
SpaceOptimizeLongWellheadViewMapper
longWellheadViewMapper
=
context
.
getBean
(
SpaceOptimizeLongWellheadViewMapper
.
class
);
size
=
longWellheadList
.
size
();
if
(
size
>
BaseUtils
.
BATCH_SIZE
)
{
List
<
List
<
SpaceOptimizeLongWellheadView
>>
subList
=
BaseUtils
.
getSubList
(
longWellheadList
);
subList
.
forEach
(
b
->
longWellheadViewMapper
.
batchInsertList
(
b
));
}
else
{
longWellheadViewMapper
.
batchInsertList
(
longWellheadList
);
}
}
if
(
CollUtil
.
isNotEmpty
(
unOptimizeDurationList
))
{
SpaceOptimizeLongDurationViewMapper
longDurationViewMapper
=
context
.
getBean
(
SpaceOptimizeLongDurationViewMapper
.
class
);
size
=
unOptimizeDurationList
.
size
();
if
(
size
>
BaseUtils
.
BATCH_SIZE
)
{
List
<
List
<
SpaceOptimizeLongDurationView
>>
subList
=
BaseUtils
.
getSubList
(
unOptimizeDurationList
);
subList
.
forEach
(
b
->
longDurationViewMapper
.
batchInsertList
(
b
));
}
else
{
longDurationViewMapper
.
batchInsertList
(
unOptimizeDurationList
);
}
}
if
(
CollUtil
.
isNotEmpty
(
longDurationList
))
{
SpaceOptimizeLongDurationViewMapper
longDurationViewMapper
=
context
.
getBean
(
SpaceOptimizeLongDurationViewMapper
.
class
);
size
=
longDurationList
.
size
();
if
(
size
>
BaseUtils
.
BATCH_SIZE
)
{
List
<
List
<
SpaceOptimizeLongDurationView
>>
subList
=
BaseUtils
.
getSubList
(
longDurationList
);
subList
.
forEach
(
b
->
longDurationViewMapper
.
batchInsertList
(
b
));
}
else
{
longDurationViewMapper
.
batchInsertList
(
longDurationList
);
}
}
return
XServiceResult
.
OK
;
});
}
/*-----------------------------------private-----------------------------------*/
/**
* 消峰平谷策略
*
* @param context 上下文
* @param longWellheadList 长井口列表
* @param unOptimizeDurationList 取消优化工期列表
* @param longDurationList 长期清单
* @param wellheadViewList 井口视图列表
* @param durationMap 持续时间图
* @param detail 细节
* @param lineId 线路id
* @param monthNum 月份
* @param longPeriodId 长周期id
*/
private
void
peakEliminationAndValleyLevelingStrategy
(
XContext
context
,
List
<
SpaceOptimizeLongWellheadView
>
longWellheadList
,
List
<
SpaceOptimizeLongDurationView
>
unOptimizeDurationList
,
List
<
SpaceOptimizeLongDurationView
>
longDurationList
,
List
<
SpaceInstitutionWellheadView
>
wellheadViewList
,
Map
<
String
,
List
<
SpaceInstitutionDurationEnt
>>
durationMap
,
SpaceInstitutionDetailEnt
detail
,
String
lineId
,
int
monthNum
,
String
longPeriodId
)
{
//通过线路ID和月份获取市电峰谷策略明细配置
List
<
GetBasePriceStrategyDetailOutput
>
strategyDetailList
=
ServiceUtil
.
getStrategyDetailList
(
context
,
GetBasePriceStrategyDetailInput
.
builder
()
.
lineId
(
lineId
)
.
strategyMonth
(
String
.
valueOf
(
monthNum
))
.
build
()
);
if
(
CollUtil
.
isEmpty
(
strategyDetailList
))
{
//没有配置,不优化
return
;
}
//获取第一段谷电阶段的开始时间为第一口井的开井时间
Optional
<
GetBasePriceStrategyDetailOutput
>
low
=
strategyDetailList
.
stream
()
.
filter
(
s
->
!
StringUtils
.
isAnyBlank
(
s
.
getEndTime
(),
s
.
getStartTime
())
&&
StringUtils
.
equals
(
"LOW"
,
s
.
getPeriodTypeKey
()))
.
findFirst
();
if
(!
low
.
isPresent
())
{
//没有谷电,不优化
return
;
}
GetBasePriceStrategyDetailOutput
strategyDetailOutput
=
low
.
get
();
//第一口井启动时间
DateTime
firstStartTime
=
DateUtil
.
parse
(
strategyDetailOutput
.
getStartTime
()
+
BusinessConstant
.
INITIALIZATION_SECOND
,
BusinessConstant
.
TIME_FORMAT
);
DateTime
firstEndTime
=
DateUtil
.
parse
(
strategyDetailOutput
.
getEndTime
()
+
BusinessConstant
.
INITIALIZATION_SECOND
,
BusinessConstant
.
TIME_FORMAT
);
//判断是否第一口井
boolean
isFirstWellhead
;
//时间差
int
between
=
0
;
//启动间隔累积
int
startInterval
=
0
;
for
(
int
w
=
0
,
wellheadSize
=
wellheadViewList
.
size
();
w
<
wellheadSize
;
w
++)
{
SpaceInstitutionWellheadView
wellhead
=
wellheadViewList
.
get
(
w
);
String
wellheadId
=
wellhead
.
getWellheadId
();
String
recordId
=
this
.
createOptimizeLongWellhead
(
longWellheadList
,
longPeriodId
,
wellheadId
,
wellhead
.
getWellNumber
());
List
<
SpaceInstitutionDurationEnt
>
durationConfigList
=
durationMap
.
get
(
wellhead
);
if
(
CollUtil
.
isEmpty
(
durationConfigList
))
{
//没有设置时间段,无法优化
continue
;
}
//保存原始记录
for
(
SpaceInstitutionDurationEnt
durationEnt
:
durationConfigList
)
{
this
.
createUnOptimizeLongDuration
(
unOptimizeDurationList
,
durationEnt
,
longPeriodId
,
recordId
,
wellheadId
);
}
if
(
w
==
0
)
{
//第一个井口
isFirstWellhead
=
true
;
}
else
{
//计算启动间隔
startInterval
=
startInterval
+
detail
.
getStartInterval
();
isFirstWellhead
=
false
;
}
for
(
int
d
=
0
,
durationSize
=
durationConfigList
.
size
();
d
<
durationSize
;
d
++)
{
SpaceInstitutionDurationEnt
duration
=
durationConfigList
.
get
(
d
);
String
openWellTime
=
duration
.
getOpenWellTime
();
DateTime
startTime
=
DateUtil
.
parse
(
openWellTime
+
BusinessConstant
.
INITIALIZATION_SECOND
,
BusinessConstant
.
TIME_FORMAT
);
DateTime
endTime
=
DateUtil
.
parse
(
duration
.
getCloseWellTime
()
+
BusinessConstant
.
INITIALIZATION_SECOND
,
BusinessConstant
.
TIME_FORMAT
);
//第一次启动
if
(
d
==
0
)
{
//第一口井的启动时间
if
(
isFirstWellhead
)
{
//计算优化后的时间差优化后的第一口井开井时间-优化前第一次开井时间
int
startDuration
=
(
int
)
startTime
.
between
(
endTime
,
DateUnit
.
MINUTE
);
//第一次关井时间按照启动时长顺延
DateTime
endTimeOptimize
=
startTime
.
offset
(
DateField
.
MINUTE
,
startDuration
);
this
.
createOptimizeLongDuration
(
longDurationList
,
longPeriodId
,
recordId
,
wellheadId
,
null
,
strategyDetailOutput
.
getStartTime
(),
endTimeOptimize
.
toString
(
BusinessConstant
.
MINUTES_FORMAT
)
);
//取时间间隔(分钟)
between
=
BaseUtils
.
getTimeDifferenceMinute
(
firstEndTime
,
endTime
);
}
//其它井口的第一次启动时间
else
{
//其它井启动时间:第一口井启动时间+启动间隔
DateTime
startTimeOffset
=
firstStartTime
.
offset
(
DateField
.
MINUTE
,
startInterval
);
DateTime
endTimeOffset
=
firstEndTime
.
offset
(
DateField
.
MINUTE
,
startInterval
);
//取时间间隔(分钟)
between
=
BaseUtils
.
getTimeDifferenceMinute
(
firstEndTime
,
endTime
);
this
.
createOptimizeLongDuration
(
longDurationList
,
longPeriodId
,
recordId
,
wellheadId
,
null
,
startTimeOffset
.
toString
(
BusinessConstant
.
MINUTES_FORMAT
),
endTimeOffset
.
toString
(
BusinessConstant
.
MINUTES_FORMAT
)
);
}
}
else
{
//计算偏移
DateTime
offset
=
startTime
.
offset
(
DateField
.
MINUTE
,
between
);
if
(
offset
.
compareTo
(
BusinessConstant
.
DATE_FLAG
)
>
0
)
{
//如果时间超过当天,舍弃
continue
;
}
this
.
createOptimizeLongDuration
(
longDurationList
,
longPeriodId
,
recordId
,
wellheadId
,
null
,
offset
.
toString
(
BusinessConstant
.
MINUTES_FORMAT
),
BaseUtils
.
getEndTimeString
(
DateUtil
.
parse
(
duration
.
getCloseWellTime
()
+
BusinessConstant
.
INITIALIZATION_SECOND
,
BusinessConstant
.
TIME_FORMAT
)
.
offset
(
DateField
.
MINUTE
,
between
)
)
);
}
}
}
}
/**
* 绿电消纳策略
*
* @param longWellheadList 长井口列表
* @param unOptimizeDurationList 取消优化工期列表
* @param longDurationList 长期清单
* @param wellheadViewList 井口视图列表
* @param avgPowerList 平均功率列表
* @param durationMap 持续时间图
* @param detail 细节
* @param longPeriodId 长周期id
*/
private
void
greenElectricityConsumptionStrategy
(
List
<
SpaceOptimizeLongWellheadView
>
longWellheadList
,
List
<
SpaceOptimizeLongDurationView
>
unOptimizeDurationList
,
List
<
SpaceOptimizeLongDurationView
>
longDurationList
,
List
<
SpaceInstitutionWellheadView
>
wellheadViewList
,
List
<
DynamicQueryPlantPredictedPowerOutput
>
avgPowerList
,
Map
<
String
,
List
<
SpaceInstitutionDurationEnt
>>
durationMap
,
SpaceInstitutionDetailEnt
detail
,
String
longPeriodId
)
{
//时间差
int
between
=
0
;
//启动间隔累积
int
startInterval
=
0
;
//判断是否第一口井
boolean
isFirstWellhead
;
//第一口井启动时间
DateTime
firstStartTime
=
null
;
//井口累积运行总功率
BigDecimal
totalOperatingPower
=
BigDecimal
.
ZERO
;
for
(
int
w
=
0
,
wellheadSize
=
wellheadViewList
.
size
();
w
<
wellheadSize
;
w
++)
{
SpaceInstitutionWellheadView
wellhead
=
wellheadViewList
.
get
(
w
);
String
wellheadId
=
wellhead
.
getWellheadId
();
String
recordId
=
this
.
createOptimizeLongWellhead
(
longWellheadList
,
longPeriodId
,
wellheadId
,
wellhead
.
getWellNumber
());
//取当前井口最大发电量
BigDecimal
serviceRating
=
wellhead
.
getServiceRating
();
List
<
SpaceInstitutionDurationEnt
>
durationConfigList
=
durationMap
.
get
(
wellhead
);
if
(
CollUtil
.
isEmpty
(
durationConfigList
))
{
//没有设置时间段,无法优化
continue
;
}
//保存原始记录
for
(
SpaceInstitutionDurationEnt
durationEnt
:
durationConfigList
)
{
this
.
createUnOptimizeLongDuration
(
unOptimizeDurationList
,
durationEnt
,
longPeriodId
,
recordId
,
wellheadId
);
}
if
(
w
==
0
)
{
//第一个井口
isFirstWellhead
=
true
;
totalOperatingPower
.
add
(
serviceRating
);
}
else
{
//累加
totalOperatingPower
=
totalOperatingPower
.
add
(
serviceRating
);
startInterval
=
startInterval
+
detail
.
getStartInterval
();
isFirstWellhead
=
false
;
}
for
(
int
d
=
0
,
durationSize
=
durationConfigList
.
size
();
d
<
durationSize
;
d
++)
{
SpaceInstitutionDurationEnt
duration
=
durationConfigList
.
get
(
d
);
String
openWellTime
=
duration
.
getOpenWellTime
();
DateTime
startTime
=
DateUtil
.
parse
(
openWellTime
+
BusinessConstant
.
INITIALIZATION_SECOND
,
BusinessConstant
.
TIME_FORMAT
);
DateTime
endTime
=
DateUtil
.
parse
(
duration
.
getCloseWellTime
()
+
BusinessConstant
.
INITIALIZATION_SECOND
,
BusinessConstant
.
TIME_FORMAT
);
//第一次启动
if
(
d
==
0
)
{
//第一口井的启动时间
if
(
isFirstWellhead
)
{
firstStartTime
=
startTime
;
//计算开井时间
int
startIndex
=
0
;
for
(
int
a
=
0
,
avgPowerSize
=
avgPowerList
.
size
();
a
<
avgPowerSize
;
a
++)
{
DynamicQueryPlantPredictedPowerOutput
predictedPower
=
avgPowerList
.
get
(
a
);
//当日时间段平均光伏出力>=第一口井运行负荷时,该时间为第一口井运行时间
if
(
predictedPower
.
getPower
().
compareTo
(
serviceRating
)
>=
BusinessConstant
.
ZERO
)
{
startIndex
=
a
;
break
;
}
}
DynamicQueryPlantPredictedPowerOutput
start
=
avgPowerList
.
get
(
startIndex
);
String
startTimeString
=
start
.
getHourTime
()
+
start
.
getMinTime
();
//计算第一次关井时间,按照间开时间段顺延
int
startDuration
=
(
int
)
startTime
.
between
(
endTime
,
DateUnit
.
MINUTE
);
DateTime
endTimeOptimize
=
startTime
.
offset
(
DateField
.
MINUTE
,
startDuration
);
this
.
createOptimizeLongDuration
(
longDurationList
,
longPeriodId
,
recordId
,
wellheadId
,
null
,
startTimeString
,
endTimeOptimize
.
toString
(
BusinessConstant
.
MINUTES_FORMAT
)
);
//计算时间偏移
DateTime
startTimeOptimize
=
DateUtil
.
parse
(
startTimeString
,
BusinessConstant
.
TIME_FORMAT
);
//取时间间隔(分钟)
between
=
BaseUtils
.
getTimeDifferenceMinute
(
startTimeOptimize
,
startTime
);
}
//其它井口的第一次启动时间
else
{
DateTime
startTimeOffset
=
firstStartTime
.
offset
(
DateField
.
MINUTE
,
startInterval
);
int
startIndex
=
-
1
;
BigDecimal
add
=
serviceRating
.
add
(
totalOperatingPower
);
for
(
int
a
=
0
,
avgPowerSize
=
avgPowerList
.
size
();
a
<
avgPowerSize
;
a
++)
{
DynamicQueryPlantPredictedPowerOutput
predictedPower
=
avgPowerList
.
get
(
a
);
if
(
DateUtil
.
parse
(
predictedPower
.
getHourTime
()
+
predictedPower
.
getMinTime
(),
BusinessConstant
.
TIME_FORMAT
)
.
compareTo
(
startTimeOffset
)
>=
0
)
{
//判断第一口井启动时间+启动间隔时日平均光伏出力-前两口井的运行功率是否为正数
if
(
predictedPower
.
getPower
().
compareTo
(
add
)
>=
0
)
{
//确定第二口井第一次开井时间为第一口井启动时间+启动间隔
startIndex
=
a
;
break
;
}
}
}
if
(
startIndex
>
-
1
)
{
DynamicQueryPlantPredictedPowerOutput
start
=
avgPowerList
.
get
(
startIndex
);
DateTime
startTimeOptimize
=
DateUtil
.
parse
(
start
.
getHourTime
()
+
start
.
getMinTime
(),
BusinessConstant
.
TIME_FORMAT
);
//计算未优化启动间隔
int
openDuration
=
(
int
)
startTime
.
between
(
endTime
,
DateUnit
.
MINUTE
);
DateTime
endTimeOptimize
=
startTimeOptimize
.
offset
(
DateField
.
MINUTE
,
openDuration
);
this
.
createOptimizeLongDuration
(
longDurationList
,
longPeriodId
,
recordId
,
wellheadId
,
null
,
openWellTime
,
BaseUtils
.
getEndTimeString
(
endTimeOptimize
)
);
//取时间间隔(分钟)
between
=
BaseUtils
.
getTimeDifferenceMinute
(
endTimeOptimize
,
endTime
);
}
else
{
//无法优化
}
}
}
else
{
DateTime
offset
=
startTime
.
offset
(
DateField
.
MINUTE
,
between
);
if
(
offset
.
compareTo
(
BusinessConstant
.
DATE_FLAG
)
>
0
)
{
//如果时间超过当天,舍弃
continue
;
}
//计算偏移
this
.
createOptimizeLongDuration
(
longDurationList
,
longPeriodId
,
recordId
,
wellheadId
,
null
,
offset
.
toString
(
BusinessConstant
.
MINUTES_FORMAT
),
BaseUtils
.
getEndTimeString
(
DateUtil
.
parse
(
duration
.
getCloseWellTime
()
+
BusinessConstant
.
INITIALIZATION_SECOND
,
BusinessConstant
.
TIME_FORMAT
)
.
offset
(
DateField
.
MINUTE
,
between
))
);
}
}
}
}
/**
* 创建长期优化信息
*
* @param longPeriodList 长期清单
* @param detailId 详细信息id
* @param lineId 线路id
* @param executionCycleForMonth 月执行周期
* @param optimizeDeadline 优化截止日期
* @return {@link String}
*/
private
String
createOptimizeLongPeriod
(
List
<
SpaceOptimizeLongPeriodView
>
longPeriodList
,
String
detailId
,
String
lineId
,
String
executionCycleForMonth
,
Date
optimizeDeadline
)
{
SpaceOptimizeLongPeriodView
longPeriod
=
new
SpaceOptimizeLongPeriodView
();
BaseUtils
.
setBaseModelDefaultForJob
(
longPeriod
);
longPeriod
.
setInstitutionId
(
detailId
);
longPeriod
.
setLineId
(
lineId
);
longPeriod
.
setExecutionCycle
(
executionCycleForMonth
);
longPeriod
.
setOptimizeDeadline
(
optimizeDeadline
);
longPeriodList
.
add
(
longPeriod
);
return
longPeriod
.
getId
();
}
/**
* 创建长期优化井口信息
*
* @param longWellheadList 长井口列表
* @param longPeriodId 长周期id
* @param wellheadId 井口id
* @param wellNumber 井号
* @return {@link String}
*/
private
String
createOptimizeLongWellhead
(
List
<
SpaceOptimizeLongWellheadView
>
longWellheadList
,
String
longPeriodId
,
String
wellheadId
,
String
wellNumber
)
{
SpaceOptimizeLongWellheadView
wellheadView
=
new
SpaceOptimizeLongWellheadView
();
BaseUtils
.
setBaseModelDefaultForJob
(
wellheadView
);
wellheadView
.
setLongPeriodId
(
longPeriodId
);
wellheadView
.
setWellheadId
(
wellheadId
);
wellheadView
.
setWellNumber
(
wellNumber
);
longWellheadList
.
add
(
wellheadView
);
return
wellheadView
.
getId
();
}
/**
* 创建长期优化井口区间配置信息
*
* @param longDurationList 长期清单
* @param longPeriodId 长周期id
* @param recordId 记录id
* @param wellheadId 井口id
* @param generationTypeKey 生成类型密钥
* @param openWellTime 开井时间
* @param endTimeString 结束时间字符串
*/
private
void
createOptimizeLongDuration
(
List
<
SpaceOptimizeLongDurationView
>
longDurationList
,
String
longPeriodId
,
String
recordId
,
String
wellheadId
,
String
generationTypeKey
,
String
openWellTime
,
String
endTimeString
)
{
SpaceOptimizeLongDurationView
durationView
=
new
SpaceOptimizeLongDurationView
();
BaseUtils
.
setBaseModelDefaultForJob
(
durationView
);
durationView
.
setRecordId
(
recordId
);
durationView
.
setLongPeriodId
(
longPeriodId
);
durationView
.
setWellheadId
(
wellheadId
);
durationView
.
setGenerationTypeKey
(
generationTypeKey
);
durationView
.
setIsOptimize
(
BusinessConstant
.
ZERO
);
durationView
.
setOpenWellTime
(
openWellTime
);
durationView
.
setCloseWellTime
(
endTimeString
);
longDurationList
.
add
(
durationView
);
}
/**
* 创建原始间开区间
*
* @param unOptimizeDurationList 取消优化工期列表
* @param durationEnt 持续时间ent
* @param longPeriodId 长周期id
* @param recordId 记录id
* @param wellheadId 井口id
*/
private
void
createUnOptimizeLongDuration
(
List
<
SpaceOptimizeLongDurationView
>
unOptimizeDurationList
,
SpaceInstitutionDurationEnt
durationEnt
,
String
longPeriodId
,
String
recordId
,
String
wellheadId
)
{
SpaceOptimizeLongDurationView
durationViewUnOptimize
=
new
SpaceOptimizeLongDurationView
();
BaseUtils
.
setBaseModelDefaultForJob
(
durationViewUnOptimize
);
durationViewUnOptimize
.
setRecordId
(
recordId
);
durationViewUnOptimize
.
setLongPeriodId
(
longPeriodId
);
durationViewUnOptimize
.
setWellheadId
(
wellheadId
);
durationViewUnOptimize
.
setIsOptimize
(
BusinessConstant
.
ONE
);
durationViewUnOptimize
.
setOpenWellTime
(
durationEnt
.
getOpenWellTime
());
durationViewUnOptimize
.
setCloseWellTime
(
durationEnt
.
getCloseWellTime
());
unOptimizeDurationList
.
add
(
durationViewUnOptimize
);
}
/**
* 条件获取获取光伏预测各时段平均值列表
*
...
...
@@ -221,4 +642,4 @@ public class SpaceOptimizeLongCloudServiceImpl implements ISpaceOptimizeLongClou
);
});
}
}
}
\ No newline at end of file
C11-space/pps-core-space/src/main/resources/mybatis/mapper/pps/core/space/SpaceOptimizeLongDurationViewMapper.xml
View file @
d48500b6
...
...
@@ -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
C11-space/pps-core-space/src/main/resources/mybatis/mapper/pps/core/space/SpaceOptimizeLongPeriodViewMapper.xml
View file @
d48500b6
...
...
@@ -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
C11-space/pps-core-space/src/main/resources/mybatis/mapper/pps/core/space/SpaceOptimizeLongWellheadViewMapper.xml
View file @
d48500b6
...
...
@@ -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
C12-prediction/pps-core-prediction/src/main/java/pps/core/prediction/service/PlantPredictedPowerCloudServiceImpl.java
View file @
d48500b6
...
...
@@ -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
)
);
...
...
D03-deploy/deploy-pps-all/src/main/java/app/DeployPpsAllApplication.java
View file @
d48500b6
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
);
}
...
...
D03-deploy/deploy-pps-all/src/main/resources/deploy-pps-all.app.properties
View file @
d48500b6
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
...
...
D03-deploy/deploy-pps-task/src/main/java/app/DeployPpsTaskApplication.java
View file @
d48500b6
...
...
@@ -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
)
...
...
D03-deploy/deploy-pps-task/src/main/resources/deploy-pps-task.app.properties
View file @
d48500b6
...
...
@@ -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
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment